isect_seg_seg_v2_point was modifying the value of line vectors passed.
authorCampbell Barton <ideasman42@gmail.com>
Sun, 12 Dec 2010 01:36:10 +0000 (01:36 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Sun, 12 Dec 2010 01:36:10 +0000 (01:36 +0000)
this could be confusing later on, now swap the pointers rather then changing their values.

source/blender/blenlib/BLI_math_geom.h
source/blender/blenlib/intern/math_geom.c
source/blender/editors/sculpt_paint/paint_image.c

index 7dae49f067dbadd1699287c041dcedcb00f53d6b..3c2c6312f4d15c765e612d22d6573b936dd501b6 100644 (file)
@@ -71,9 +71,9 @@ void closest_to_line_segment_v3(float r[3], float p[3], float l1[3], float l2[3]
 #define ISECT_LINE_LINE_EXACT           1
 #define ISECT_LINE_LINE_CROSS           2
 
-int isect_line_line_v2(float a1[2], float a2[2], float b1[2], float b2[2]);
-int isect_line_line_v2_short(short a1[2], short a2[2], short b1[2], short b2[2]);
-int isect_seg_seg_v2_point(float v1[2], float v2[2], float v3[2], float v4[2], float vi[2]);
+int isect_line_line_v2(const float a1[2], const float a2[2], const float b1[2], const float b2[2]);
+int isect_line_line_v2_short(const short a1[2], const short a2[2], const short b1[2], const short b2[2]);
+int isect_seg_seg_v2_point(const float *v1, const float *v2, const float *v3, const float *v4, float vi[2]);
 
 /* Returns the number of point of interests
  * 0 - lines are colinear
index ac62eb71e97fbfc00b09fcb488d7f1cdd61e6638..673d8113f32beb85bc9b520f3c26bb72fc0de995 100644 (file)
@@ -233,7 +233,7 @@ float dist_to_line_segment_v3(float *v1, float *v2, float *v3)
 /******************************* Intersection ********************************/
 
 /* intersect Line-Line, shorts */
-int isect_line_line_v2_short(short *v1, short *v2, short *v3, short *v4)
+int isect_line_line_v2_short(const short *v1, const short *v2, const short *v3, const short *v4)
 {
        /* return:
        -1: colliniar
@@ -258,7 +258,7 @@ int isect_line_line_v2_short(short *v1, short *v2, short *v3, short *v4)
 }
 
 /* intersect Line-Line, floats */
-int isect_line_line_v2(float *v1, float *v2, float *v3, float *v4)
+int isect_line_line_v2(const float *v1, const float *v2, const float *v3, const float *v4)
 {
        /* return:
        -1: colliniar
@@ -285,7 +285,7 @@ int isect_line_line_v2(float *v1, float *v2, float *v3, float *v4)
 /* get intersection point of two 2D segments and return intersection type:
     -1: colliniar
      1: intersection */
-int isect_seg_seg_v2_point(float v1[2], float v2[2], float v3[2], float v4[2], float vi[2])
+int isect_seg_seg_v2_point(const float *v1, const float *v2, const float *v3, const float *v4, float vi[2])
 {
        float a1, a2, b1, b2, c1, c2, d;
        float u, v;
@@ -309,10 +309,8 @@ int isect_seg_seg_v2_point(float v1[2], float v2[2], float v3[2], float v4[2], f
                        if(len_v2v2(v1, v2)==0.0f) {
                                if(len_v2v2(v3, v4)>eps) {
                                        /* use non-point segment as basis */
-                                       SWAP(float, v1[0], v3[0]);
-                                       SWAP(float, v1[1], v3[1]);
-                                       SWAP(float, v2[0], v4[0]);
-                                       SWAP(float, v2[1], v4[1]);
+                                       SWAP(const float *, v1, v3);
+                                       SWAP(const float *, v2, v4);
                                } else { /* both of segments are points */
                                        if(equals_v2v2(v1, v3)) { /* points are equal */
                                                copy_v2_v2(vi, v1);
index 3c116d3b76303d2c3ecaedea29049cee9179b87d..84816cebc463faf0c861c27bc5f4b469ba2c5aa4 100644 (file)
@@ -163,17 +163,17 @@ typedef struct ImagePaintRegion {
 #define PROJ_DEBUG_WINCLIP 1
 
 /* projectFaceSeamFlags options */
-//#define PROJ_FACE_IGNORE     1<<0    /* When the face is hidden, backfacing or occluded */
-//#define PROJ_FACE_INIT       1<<1    /* When we have initialized the faces data */
-#define PROJ_FACE_SEAM1        1<<0    /* If this face has a seam on any of its edges */
-#define PROJ_FACE_SEAM2        1<<1
-#define PROJ_FACE_SEAM3        1<<2
-#define PROJ_FACE_SEAM4        1<<3
-
-#define PROJ_FACE_NOSEAM1      1<<4
-#define PROJ_FACE_NOSEAM2      1<<5
-#define PROJ_FACE_NOSEAM3      1<<6
-#define PROJ_FACE_NOSEAM4      1<<7
+//#define PROJ_FACE_IGNORE     (1<<0)  /* When the face is hidden, backfacing or occluded */
+//#define PROJ_FACE_INIT       (1<<1)  /* When we have initialized the faces data */
+#define PROJ_FACE_SEAM1        (1<<0)  /* If this face has a seam on any of its edges */
+#define PROJ_FACE_SEAM2        (1<<1)
+#define PROJ_FACE_SEAM3        (1<<2)
+#define PROJ_FACE_SEAM4        (1<<3)
+
+#define PROJ_FACE_NOSEAM1      (1<<4)
+#define PROJ_FACE_NOSEAM2      (1<<5)
+#define PROJ_FACE_NOSEAM3      (1<<6)
+#define PROJ_FACE_NOSEAM4      (1<<7)
 
 #define PROJ_SRC_VIEW          1
 #define PROJ_SRC_IMAGE_CAM     2
@@ -189,8 +189,8 @@ typedef struct ImagePaintRegion {
 #define PROJ_FACE_SCALE_SEAM   0.99f
 
 #define PROJ_BUCKET_NULL               0
-#define PROJ_BUCKET_INIT               1<<0
-// #define PROJ_BUCKET_CLONE_INIT      1<<1
+#define PROJ_BUCKET_INIT               (1<<0)
+// #define PROJ_BUCKET_CLONE_INIT      (1<<1)
 
 /* used for testing doubles, if a point is on a line etc */
 #define PROJ_GEOM_TOLERANCE 0.00075f