[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [51048] trunk/blender/source/blender/ editors: make ED_view3d_project_int equivalent to ED_view3d_project_short functions .

Campbell Barton ideasman42 at gmail.com
Thu Oct 4 19:52:13 CEST 2012


Revision: 51048
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=51048
Author:   campbellbarton
Date:     2012-10-04 17:52:12 +0000 (Thu, 04 Oct 2012)
Log Message:
-----------
make ED_view3d_project_int equivalent to ED_view3d_project_short functions.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/gpencil/gpencil_paint.c
    trunk/blender/source/blender/editors/include/ED_view3d.h
    trunk/blender/source/blender/editors/physics/particle_edit.c
    trunk/blender/source/blender/editors/space_view3d/view3d_draw.c
    trunk/blender/source/blender/editors/space_view3d/view3d_edit.c
    trunk/blender/source/blender/editors/space_view3d/view3d_select.c
    trunk/blender/source/blender/editors/space_view3d/view3d_view.c
    trunk/blender/source/blender/editors/transform/transform.c
    trunk/blender/source/blender/editors/transform/transform_snap.c

Modified: trunk/blender/source/blender/editors/gpencil/gpencil_paint.c
===================================================================
--- trunk/blender/source/blender/editors/gpencil/gpencil_paint.c	2012-10-04 16:46:15 UTC (rev 51047)
+++ trunk/blender/source/blender/editors/gpencil/gpencil_paint.c	2012-10-04 17:52:12 UTC (rev 51048)
@@ -278,11 +278,15 @@
 			gp_get_3d_reference(p, rvec);
 			
 			/* method taken from editview.c - mouse_cursor() */
-			ED_view3d_project_int_noclip(p->ar, rvec, mval_prj);
-			
-			VECSUB2D(mval_f, mval_prj, mval);
-			ED_view3d_win_to_delta(p->ar, mval_f, dvec);
-			sub_v3_v3v3(out, rvec, dvec);
+			/* TODO, use ED_view3d_project_float_global */
+			if (ED_view3d_project_int_global(p->ar, rvec, mval_prj, V3D_PROJ_TEST_NOP) == V3D_PROJ_RET_SUCCESS) {
+				VECSUB2D(mval_f, mval_prj, mval);
+				ED_view3d_win_to_delta(p->ar, mval_f, dvec);
+				sub_v3_v3v3(out, rvec, dvec);
+			}
+			else {
+				zero_v3(out);
+			}
 		}
 	}
 	
@@ -808,9 +812,14 @@
 	else if (gps->totpoints == 1) {
 		/* get coordinates */
 		if (gps->flag & GP_STROKE_3DSPACE) {
-			ED_view3d_project_int(p->ar, &gps->points->x, xyval);
-			x0 = xyval[0];
-			y0 = xyval[1];
+			if (ED_view3d_project_int_global(p->ar, &gps->points->x, xyval, V3D_PROJ_TEST_NOP) == V3D_PROJ_RET_SUCCESS) {
+				x0 = xyval[0];
+				y0 = xyval[1];
+			}
+			else {
+				x0 = V2D_IS_CLIPPED;
+				y0 = V2D_IS_CLIPPED;
+			}
 		}
 		else if (gps->flag & GP_STROKE_2DSPACE) {			
 			UI_view2d_view_to_region(p->v2d, gps->points->x, gps->points->y, &x0, &y0);
@@ -847,13 +856,22 @@
 			
 			/* get coordinates */
 			if (gps->flag & GP_STROKE_3DSPACE) {
-				ED_view3d_project_int(p->ar, &pt1->x, xyval);
-				x0 = xyval[0];
-				y0 = xyval[1];
-				
-				ED_view3d_project_int(p->ar, &pt2->x, xyval);
-				x1 = xyval[0];
-				y1 = xyval[1];
+				if (ED_view3d_project_int_global(p->ar, &pt1->x, xyval, V3D_PROJ_TEST_NOP) == V3D_PROJ_RET_SUCCESS) {
+					x0 = xyval[0];
+					y0 = xyval[1];
+				}
+				else {
+					x0 = V2D_IS_CLIPPED;
+					y0 = V2D_IS_CLIPPED;
+				}
+				if (ED_view3d_project_int_global(p->ar, &pt2->x, xyval, V3D_PROJ_TEST_NOP) == V3D_PROJ_RET_SUCCESS) {
+					x1 = xyval[0];
+					y1 = xyval[1];
+				}
+				else {
+					x1 = V2D_IS_CLIPPED;
+					y1 = V2D_IS_CLIPPED;
+				}
 			}
 			else if (gps->flag & GP_STROKE_2DSPACE) {
 				UI_view2d_view_to_region(p->v2d, pt1->x, pt1->y, &x0, &y0);

Modified: trunk/blender/source/blender/editors/include/ED_view3d.h
===================================================================
--- trunk/blender/source/blender/editors/include/ED_view3d.h	2012-10-04 16:46:15 UTC (rev 51047)
+++ trunk/blender/source/blender/editors/include/ED_view3d.h	2012-10-04 17:52:12 UTC (rev 51048)
@@ -132,14 +132,18 @@
 } eV3DProjTest;
 
 
+/* *** short *** */
 eV3DProjStatus ED_view3d_project_short_ex(struct ARegion *ar, float perspmat[4][4], const int is_local,
                                           const float co[3], short r_co[2], eV3DProjTest flag);
 eV3DProjStatus ED_view3d_project_short_global(struct ARegion *ar, const float co[3], short r_co[2], eV3DProjTest flag);
 eV3DProjStatus ED_view3d_project_short_object(struct ARegion *ar, const float co[3], short r_co[2], eV3DProjTest flag);
-void _ED_view3d_project_short(struct ARegion *ar, const float co[3], short r_co[2]); // V3D_PROJ_TEST_CLIP_BB | V3D_PROJ_TEST_CLIP_WIN
-void _ED_view3d_project_short_noclip(struct ARegion *ar, const float vec[3], short r_co[2]); //
-void ED_view3d_project_int(struct ARegion *ar, const float co[3], int r_co[2]);
-void ED_view3d_project_int_noclip(struct ARegion *ar, const float co[3], int r_co[2]);
+
+/* *** int *** */
+eV3DProjStatus ED_view3d_project_int_ex(struct ARegion *ar, float perspmat[4][4], const int is_local,
+                                        const float co[3], int r_co[2], eV3DProjTest flag);
+eV3DProjStatus ED_view3d_project_int_global(struct ARegion *ar, const float co[3], int r_co[2], eV3DProjTest flag);
+eV3DProjStatus ED_view3d_project_int_object(struct ARegion *ar, const float co[3], int r_co[2], eV3DProjTest flag);
+
 void ED_view3d_project_float(struct ARegion *ar, const float co[3], float r_co[2]);
 void ED_view3d_project_float_noclip(struct ARegion *ar, const float co[3], float r_co[2]);
 void ED_view3d_project_float_v2_m4(const struct ARegion *a, const float co[3], float r_co[2], float mat[4][4]);

Modified: trunk/blender/source/blender/editors/physics/particle_edit.c
===================================================================
--- trunk/blender/source/blender/editors/physics/particle_edit.c	2012-10-04 16:46:15 UTC (rev 51047)
+++ trunk/blender/source/blender/editors/physics/particle_edit.c	2012-10-04 17:52:12 UTC (rev 51048)
@@ -398,6 +398,8 @@
 
 /*************************** selection utilities *******************************/
 
+/* TODO, many of the callers to this function already have a 2d projection that
+ * could be passed as an arg, save calling ED_view3d_project_short_global again. */
 static int key_test_depth(PEData *data, const float co[3])
 {
 	View3D *v3d= data->vc.v3d;
@@ -448,11 +450,11 @@
 	float dx, dy, dist;
 	int sco[2];
 
-	ED_view3d_project_int(data->vc.ar, co, sco);
-	
-	if (sco[0] == IS_CLIPPED)
+	/* TODO, should this check V3D_PROJ_TEST_CLIP_BB too? */
+	if (ED_view3d_project_int_global(data->vc.ar, co, sco, V3D_PROJ_TEST_CLIP_WIN) != V3D_PROJ_RET_SUCCESS) {
 		return 0;
-	
+	}
+
 	dx= data->mval[0] - sco[0];
 	dy= data->mval[1] - sco[1];
 	dist= sqrt(dx*dx + dy*dy);
@@ -474,10 +476,9 @@
 {
 	int sco[2];
 
-	ED_view3d_project_int(data->vc.ar, co, sco);
-
-	if (sco[0] == IS_CLIPPED)
+	if (ED_view3d_project_int_global(data->vc.ar, co, sco, V3D_PROJ_TEST_CLIP_WIN) != V3D_PROJ_RET_SUCCESS) {
 		return 0;
+	}
 
 	if (sco[0] > data->rect->xmin && sco[0] < data->rect->xmax &&
 	    sco[1] > data->rect->ymin && sco[1] < data->rect->ymax)
@@ -1667,8 +1668,8 @@
 			LOOP_KEYS {
 				copy_v3_v3(co, key->co);
 				mul_m4_v3(mat, co);
-				ED_view3d_project_int(ar, co, vertco);
-				if (BLI_lasso_is_point_inside(mcords, moves, vertco[0], vertco[1], IS_CLIPPED) &&
+				if ((ED_view3d_project_int_global(ar, co, vertco, V3D_PROJ_TEST_CLIP_WIN) == V3D_PROJ_RET_SUCCESS) &&
+				    BLI_lasso_is_point_inside(mcords, moves, vertco[0], vertco[1], IS_CLIPPED) &&
 				    key_test_depth(&data, co))
 				{
 					if (select && !(key->flag & PEK_SELECT)) {
@@ -1687,8 +1688,8 @@
 
 			copy_v3_v3(co, key->co);
 			mul_m4_v3(mat, co);
-			ED_view3d_project_int(ar, co, vertco);
-			if (BLI_lasso_is_point_inside(mcords, moves, vertco[0], vertco[1], IS_CLIPPED) &&
+			if ((ED_view3d_project_int_global(ar, co, vertco, V3D_PROJ_TEST_CLIP_WIN) == V3D_PROJ_RET_SUCCESS) &&
+			    BLI_lasso_is_point_inside(mcords, moves, vertco[0], vertco[1], IS_CLIPPED) &&
 			    key_test_depth(&data, co))
 			{
 				if (select && !(key->flag & PEK_SELECT)) {
@@ -2799,11 +2800,13 @@
 	if (edit->points[pa_index].flag & PEP_HIDE)
 		return;
 
+	if (ED_view3d_project_int_global(ar, key->co, vertco, V3D_PROJ_TEST_NOP) != V3D_PROJ_RET_SUCCESS)
+		return;
+
 	rad2= data->rad * data->rad;
 
 	cut=0;
 
-	ED_view3d_project_int_noclip(ar, key->co, vertco);
 	x0= (float)vertco[0];
 	x1= (float)vertco[1];
 
@@ -2821,9 +2824,10 @@
 	else {
 		/* calculate path time closest to root that was inside the circle */
 		for (k=1, key++; k<=keys; k++, key++) {
-			ED_view3d_project_int_noclip(ar, key->co, vertco);
 
-			if (key_test_depth(data, key->co) == 0) {
+			if ((ED_view3d_project_int_global(ar, key->co, vertco, V3D_PROJ_TEST_NOP) != V3D_PROJ_RET_SUCCESS) ||
+			    key_test_depth(data, key->co) == 0)
+			{
 				x0= (float)vertco[0];
 				x1= (float)vertco[1];
 

Modified: trunk/blender/source/blender/editors/space_view3d/view3d_draw.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_draw.c	2012-10-04 16:46:15 UTC (rev 51047)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_draw.c	2012-10-04 17:52:12 UTC (rev 51048)
@@ -553,32 +553,23 @@
 
 static void drawcursor(Scene *scene, ARegion *ar, View3D *v3d)
 {
-	int mx, my, co[2];
-	int flag;
-	
+	int co[2];
+
 	/* we don't want the clipping for cursor */
-	flag = v3d->flag;
-	v3d->flag = 0;
-	ED_view3d_project_int(ar, give_cursor(scene, v3d), co);
-	v3d->flag = flag;
-	
-	mx = co[0];
-	my = co[1];
-	
-	if (mx != IS_CLIPPED) {
+	if (ED_view3d_project_int_global(ar, give_cursor(scene, v3d), co, V3D_PROJ_TEST_NOP) == V3D_PROJ_RET_SUCCESS) {
 		setlinestyle(0); 
 		cpack(0xFF);
-		circ((float)mx, (float)my, 10.0);
+		circ((float)co[0], (float)co[1], 10.0);
 		setlinestyle(4); 
 		cpack(0xFFFFFF);
-		circ((float)mx, (float)my, 10.0);
+		circ((float)co[0], (float)co[1], 10.0);
 		setlinestyle(0);
 		cpack(0x0);
 		
-		sdrawline(mx - 20, my, mx - 5, my);
-		sdrawline(mx + 5, my, mx + 20, my);
-		sdrawline(mx, my - 20, mx, my - 5);
-		sdrawline(mx, my + 5, mx, my + 20);
+		sdrawline(co[0] - 20, co[1], co[0] - 5, co[1]);
+		sdrawline(co[0] + 5, co[1], co[0] + 20, co[1]);
+		sdrawline(co[0], co[1] - 20, co[0], co[1] - 5);
+		sdrawline(co[0], co[1] + 5, co[0], co[1] + 20);
 	}
 }
 

Modified: trunk/blender/source/blender/editors/space_view3d/view3d_edit.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_edit.c	2012-10-04 16:46:15 UTC (rev 51047)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_edit.c	2012-10-04 17:52:12 UTC (rev 51048)
@@ -3524,12 +3524,14 @@
 	int mval[2];
 //	short ctrl= 0; // XXX
 	int flip;
+	eV3DProjStatus ret;
 	fp = give_cursor(scene, v3d);
 
 //	if (obedit && ctrl) lr_click= 1;
 	copy_v3_v3(oldcurs, fp);
 
-	ED_view3d_project_int_noclip(ar, fp, mval);
+	mval[0] = IS_CLIPPED;
+	ret = ED_view3d_project_int_global(ar, fp, mval, V3D_PROJ_TEST_NOP);
 	flip = initgrabz(rv3d, fp[0], fp[1], fp[2]);
 	
 	/* reset the depth based on the view offset */
@@ -3537,7 +3539,8 @@
 		negate_v3_v3(fp, rv3d->ofs);
 
 		/* re initialize */
-		ED_view3d_project_int_noclip(ar, fp, mval);
+		mval[0] = IS_CLIPPED;
+		ED_view3d_project_int_global(ar, fp, mval, V3D_PROJ_TEST_NOP);
 		flip = initgrabz(rv3d, fp[0], fp[1], fp[2]);
 		(void)flip;
 	}

Modified: trunk/blender/source/blender/editors/space_view3d/view3d_select.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_select.c	2012-10-04 16:46:15 UTC (rev 51047)

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list