add is_quad_convex_v2(), SET_UINT_IN_POINTER, GET_UINT_FROM_POINTER macros & some...
authorCampbell Barton <ideasman42@gmail.com>
Sat, 14 Jul 2012 00:33:58 +0000 (00:33 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Sat, 14 Jul 2012 00:33:58 +0000 (00:33 +0000)
source/blender/blenlib/BLI_math_geom.h
source/blender/blenlib/BLI_utildefines.h
source/blender/blenlib/intern/math_geom.c
source/blender/blenlib/intern/rct.c
source/blender/editors/sculpt_paint/paint_image.c

index 50345237a9fa2dd930e92b703a6737ab12c5faf9..6810067b35b00cafac90659da1899549fb2917cf 100644 (file)
@@ -55,6 +55,7 @@ float area_quad_v3(const float a[3], const float b[3], const float c[3], const f
 float area_poly_v3(int nr, float verts[][3], const float normal[3]);
 
 int is_quad_convex_v3(const float v1[3], const float v2[3], const float v3[3], const float v4[3]);
+int is_quad_convex_v2(const float v1[2], const float v2[2], const float v3[2], const float v4[2]);
 
 /********************************* Distance **********************************/
 
index f761f2edcba4422aba1b9a58ea9338c985183cfa..536236c07accc7d0bedda39729cb2632ee53e6ca 100644 (file)
 #define SET_INT_IN_POINTER(i)    ((void *)(intptr_t)(i))
 #define GET_INT_FROM_POINTER(i)  ((int)(intptr_t)(i))
 
+#define SET_UINT_IN_POINTER(i)    ((void *)(uintptr_t)(i))
+#define GET_UINT_FROM_POINTER(i)  ((unsigned int)(uintptr_t)(i))
+
+
 /* Macro to convert a value to string in the preprocessor
  * STRINGIFY_ARG: gives the argument as a string
  * STRINGIFY_APPEND: appends any argument 'b' onto the string argument 'a',
index f9acb6ae1dd9965bb7353af93cd38198d729ee72..097b14754be689a9c0f13fa4fea5a671bc90e8d7 100644 (file)
@@ -3278,3 +3278,10 @@ int is_quad_convex_v3(const float v1[3], const float v2[3], const float v3[3], c
        /* linetests, the 2 diagonals have to instersect to be convex */
        return (isect_line_line_v2(vec[0], vec[2], vec[1], vec[3]) > 0) ? TRUE : FALSE;
 }
+
+int is_quad_convex_v2(const float v1[2], const float v2[2], const float v3[2], const float v4[2])
+{
+       /* linetests, the 2 diagonals have to instersect to be convex */
+       return (isect_line_line_v2(v1, v3, v2, v4) > 0) ? TRUE : FALSE;
+}
+
index c1ef3e27291f361310a94e654ac5a4fbde0e24bb..bdca1bb51bd7080a3dff126724d285f36ca53a6d 100644 (file)
 #include "DNA_vec_types.h"
 #include "BLI_rect.h"
 
+/**
+ * Determine if a rect is empty. An empty
+ * rect is one with a zero (or negative)
+ * width or height.
+ *
+ * \return True if \a rect is empty.
+ */
 int BLI_rcti_is_empty(const rcti *rect)
 {
        return ((rect->xmax <= rect->xmin) || (rect->ymax <= rect->ymin));
index 5e46a28a3b75ed9ec72707d9d323d54ae99ca845..9746ba6dfa15ef8faeab7974df782887886c60a5 100644 (file)
@@ -560,14 +560,14 @@ static int project_bucket_offset(const ProjPaintState *ps, const float projCoSS[
         * ps->bucketRect[x + (y*ps->buckets_y)] */
        
        /* please explain?
-        * projCoSS[0] - ps->screenMin[0]       : zero origin
-        * ... / ps->screen_width                               : range from 0.0 to 1.0
-        * ... * ps->buckets_x          : use as a bucket index
+        * projCoSS[0] - ps->screenMin[0]   : zero origin
+        * ... / ps->screen_width           : range from 0.0 to 1.0
+        * ... * ps->buckets_x              : use as a bucket index
         *
         * Second multiplication does similar but for vertical offset
         */
-       return (   (int)(((projCoSS[0] - ps->screenMin[0]) / ps->screen_width)  * ps->buckets_x)) +
-              (   (   (int)(((projCoSS[1] - ps->screenMin[1])  / ps->screen_height) * ps->buckets_y)) * ps->buckets_x);
+       return ( (int)(((projCoSS[0] - ps->screenMin[0]) / ps->screen_width)  * ps->buckets_x)) +
+              (((int)(((projCoSS[1] - ps->screenMin[1]) / ps->screen_height) * ps->buckets_y)) * ps->buckets_x);
 }
 
 static int project_bucket_offset_safe(const ProjPaintState *ps, const float projCoSS[2])