cleanup: evas_macros.h - less comparison between signed and unsigned errors
authorbarbieri <barbieri@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sat, 18 Sep 2010 23:06:22 +0000 (23:06 +0000)
committerbarbieri <barbieri@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sat, 18 Sep 2010 23:06:22 +0000 (23:06 +0000)
update macro to do fine with unsigned integers (avoids width and
height getting below 0) and force casts.

git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/evas@52425 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/include/evas_macros.h

index ba1ab6e..58edaa5 100644 (file)
@@ -24,7 +24,7 @@
     (((x) & 0xff00 ) >> 8))
 
 #define SPANS_COMMON(x1, w1, x2, w2) \
-(!((((x2) + (w2)) <= (x1)) || ((x2) >= ((x1) + (w1)))))
+(!(( (int)((x2) + (w2)) <= (int)(x1)) || (int)((x2) >= (int)((x1) + (w1)))))
 
 #define RECTS_INTERSECT(x, y, w, h, xx, yy, ww, hh) \
 ((SPANS_COMMON((x), (w), (xx), (ww))) && (SPANS_COMMON((y), (h), (yy), (hh))))
 { \
    if (RECTS_INTERSECT(_x, _y, _w, _h, _cx, _cy, _cw, _ch)) \
      { \
-       if (_x < (_cx)) \
+       if ((int)_x < (int)(_cx))               \
          { \
-            _w += _x - (_cx); \
+             if ((int)_w +  (_x - (int)(_cx)) < 0) _w = 0;       \
+             else     _w += (_x - (int)(_cx)); \
             _x = (_cx); \
-            if (_w < 0) _w = 0; \
          } \
-       if ((_x + _w) > ((_cx) + (_cw))) \
+       if ((int)(_x + _w) > (int)((_cx) + (_cw)))      \
          _w = (_cx) + (_cw) - _x; \
-       if (_y < (_cy)) \
+       if ((int)_y < (int)(_cy))  \
          { \
-            _h += _y - (_cy); \
+             if ((int)_h +  (_y - (int)(_cy)) < 0) _h = 0; \
+             else     _h += (_y - (int)(_cy)); \
             _y = (_cy); \
-            if (_h < 0) _h = 0; \
          } \
-       if ((_y + _h) > ((_cy) + (_ch))) \
+       if ((int)(_y + _h) > (int)((_cy) + (_ch)))      \
          _h = (_cy) + (_ch) - _y; \
      } \
    else \