diff options
author | Campbell Barton <ideasman42@gmail.com> | 2010-12-12 04:36:10 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2010-12-12 04:36:10 +0300 |
commit | 4f343642b14f67b595720542deac89eaf18852fb (patch) | |
tree | e055b9b8426edf00438f540ff1a2d2e4928b0987 /source/blender | |
parent | 1ad15c37aa60ec223f072cdca2209e1017c3d8ef (diff) |
isect_seg_seg_v2_point was modifying the value of line vectors passed.
this could be confusing later on, now swap the pointers rather then changing their values.
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/blenlib/BLI_math_geom.h | 6 | ||||
-rw-r--r-- | source/blender/blenlib/intern/math_geom.c | 12 | ||||
-rw-r--r-- | source/blender/editors/sculpt_paint/paint_image.c | 26 |
3 files changed, 21 insertions, 23 deletions
diff --git a/source/blender/blenlib/BLI_math_geom.h b/source/blender/blenlib/BLI_math_geom.h index 7dae49f067d..3c2c6312f4d 100644 --- a/source/blender/blenlib/BLI_math_geom.h +++ b/source/blender/blenlib/BLI_math_geom.h @@ -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 diff --git a/source/blender/blenlib/intern/math_geom.c b/source/blender/blenlib/intern/math_geom.c index ac62eb71e97..673d8113f32 100644 --- a/source/blender/blenlib/intern/math_geom.c +++ b/source/blender/blenlib/intern/math_geom.c @@ -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); diff --git a/source/blender/editors/sculpt_paint/paint_image.c b/source/blender/editors/sculpt_paint/paint_image.c index 3c116d3b763..84816cebc46 100644 --- a/source/blender/editors/sculpt_paint/paint_image.c +++ b/source/blender/editors/sculpt_paint/paint_image.c @@ -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 |