[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