fix rectangle intersection bug for empty rectangles

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@35754 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Richard Frith-MacDonald 2012-10-28 06:46:05 +00:00
parent ac061d5976
commit 45dc918955
2 changed files with 32 additions and 15 deletions

View file

@ -445,15 +445,19 @@ GS_GEOM_SCOPE BOOL
NSMouseInRect(NSPoint aPoint, NSRect aRect, BOOL flipped)
{
if (flipped)
return ((aPoint.x >= NSMinX(aRect))
&& (aPoint.y >= NSMinY(aRect))
&& (aPoint.x < NSMaxX(aRect))
&& (aPoint.y < NSMaxY(aRect))) ? YES : NO;
{
return ((aPoint.x >= NSMinX(aRect))
&& (aPoint.y >= NSMinY(aRect))
&& (aPoint.x < NSMaxX(aRect))
&& (aPoint.y < NSMaxY(aRect))) ? YES : NO;
}
else
return ((aPoint.x >= NSMinX(aRect))
&& (aPoint.y > NSMinY(aRect))
&& (aPoint.x < NSMaxX(aRect))
&& (aPoint.y <= NSMaxY(aRect))) ? YES : NO;
{
return ((aPoint.x >= NSMinX(aRect))
&& (aPoint.y > NSMinY(aRect))
&& (aPoint.x < NSMaxX(aRect))
&& (aPoint.y <= NSMaxY(aRect))) ? YES : NO;
}
}
GS_GEOM_SCOPE BOOL
@ -478,10 +482,10 @@ GS_GEOM_SCOPE BOOL
NSContainsRect(NSRect aRect, NSRect bRect)
{
return (!NSIsEmptyRect(bRect)
&& (NSMinX(aRect) <= NSMinX(bRect))
&& (NSMinY(aRect) <= NSMinY(bRect))
&& (NSMaxX(aRect) >= NSMaxX(bRect))
&& (NSMaxY(aRect) >= NSMaxY(bRect))) ? YES : NO;
&& (NSMinX(aRect) <= NSMinX(bRect))
&& (NSMinY(aRect) <= NSMinY(bRect))
&& (NSMaxX(aRect) >= NSMaxX(bRect))
&& (NSMaxY(aRect) >= NSMaxY(bRect))) ? YES : NO;
}
#if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST)
@ -495,9 +499,11 @@ NSIntersectsRect(NSRect aRect, NSRect bRect)
{
/* Note that intersecting at a line or a point doesn't count */
return (NSMaxX(aRect) <= NSMinX(bRect)
|| NSMaxX(bRect) <= NSMinX(aRect)
|| NSMaxY(aRect) <= NSMinY(bRect)
|| NSMaxY(bRect) <= NSMinY(aRect)) ? NO : YES;
|| NSMaxX(bRect) <= NSMinX(aRect)
|| NSMaxY(aRect) <= NSMinY(bRect)
|| NSMaxY(bRect) <= NSMinY(aRect)
|| NSIsEmptyRect(aRect)
|| NSIsEmptyRect(bRect)) ? NO : YES;
}
#endif