[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [32881] trunk/blender/source/blender/ editors: centralize function for calculating pixel size.

Campbell Barton ideasman42 at gmail.com
Fri Nov 5 06:26:35 CET 2010


Revision: 32881
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=32881
Author:   campbellbarton
Date:     2010-11-05 06:26:34 +0100 (Fri, 05 Nov 2010)

Log Message:
-----------
centralize function for calculating pixel size. (no functional changes)

Modified Paths:
--------------
    trunk/blender/source/blender/editors/include/ED_view3d.h
    trunk/blender/source/blender/editors/space_view3d/drawobject.c
    trunk/blender/source/blender/editors/space_view3d/view3d_view.c
    trunk/blender/source/blender/editors/transform/transform.h
    trunk/blender/source/blender/editors/transform/transform_generics.c
    trunk/blender/source/blender/editors/transform/transform_manipulator.c
    trunk/blender/source/blender/editors/transform/transform_snap.c

Modified: trunk/blender/source/blender/editors/include/ED_view3d.h
===================================================================
--- trunk/blender/source/blender/editors/include/ED_view3d.h	2010-11-05 04:18:53 UTC (rev 32880)
+++ trunk/blender/source/blender/editors/include/ED_view3d.h	2010-11-05 05:26:34 UTC (rev 32881)
@@ -118,6 +118,7 @@
 void ED_view3d_local_clipping(struct RegionView3D *rv3d, float mat[][4]);
 int view3d_test_clipping(struct RegionView3D *rv3d, float *vec, int local);
 void view3d_align_axis_to_vector(struct View3D *v3d, struct RegionView3D *rv3d, int axisidx, float vec[3]);
+float view3d_pixel_size(struct RegionView3D *rv3d, const float co[3]);
 
 void drawcircball(int mode, float *cent, float rad, float tmat[][4]);
 
@@ -164,7 +165,6 @@
 struct ImBuf *ED_view3d_draw_offscreen_imbuf(struct Scene *scene, struct View3D *v3d, struct ARegion *ar, int sizex, int sizey, unsigned int flag);
 struct ImBuf *ED_view3d_draw_offscreen_imbuf_simple(Scene *scene, int width, int height, unsigned int flag, int drawtype);
 
-void view3d_clipping_local(struct RegionView3D *rv3d, float mat[][4]);
 
 Base *ED_view3d_give_base_under_cursor(struct bContext *C, short *mval);
 void ED_view3d_quadview_update(struct ScrArea *sa, struct ARegion *ar);

Modified: trunk/blender/source/blender/editors/space_view3d/drawobject.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/drawobject.c	2010-11-05 04:18:53 UTC (rev 32880)
+++ trunk/blender/source/blender/editors/space_view3d/drawobject.c	2010-11-05 05:26:34 UTC (rev 32881)
@@ -528,15 +528,8 @@
 /* circle for object centers, special_color is for library or ob users */
 static void drawcentercircle(View3D *v3d, RegionView3D *rv3d, float *co, int selstate, int special_color)
 {
-	float size= rv3d->pixsize*((float)U.obcenter_dia*0.5f);
-	float vec[3];
-	
-	vec[0]= rv3d->persmat[0][3];
-	vec[1]= rv3d->persmat[1][3];
-	vec[2]= rv3d->persmat[2][3];
+	const float size= view3d_pixel_size(rv3d, co) * (float)U.obcenter_dia * 0.5f;
 
-	size *= dot_v3v3(vec, co) + rv3d->persmat[3][3];
-
 	/* using gldepthfunc guarantees that it does write z values, but not checks for it, so centers remain visible independt order of drawing */
 	if(v3d->zbuf)  glDepthFunc(GL_ALWAYS);
 	glEnable(GL_BLEND);
@@ -906,9 +899,10 @@
 static void drawlamp(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base *base, int dt, int flag)
 {
 	Object *ob= base->object;
+	const float pixsize= view3d_pixel_size(rv3d, ob->obmat[3]);
 	Lamp *la= ob->data;
 	float vec[3], lvec[3], vvec[3], circrad, x,y,z;
-	float pixsize, lampsize;
+	float lampsize;
 	float imat[4][4], curcol[4];
 	char col[4];
 	int drawcone= (dt>OB_WIRE && !(G.f & G_PICKSEL) && la->type == LA_SPOT && (la->mode & LA_SHOW_CONE));
@@ -924,8 +918,6 @@
 	glLoadMatrixf(rv3d->viewmat);
 
 	/* lets calculate the scale: */
-	pixsize= rv3d->persmat[0][3]*ob->obmat[3][0]+ rv3d->persmat[1][3]*ob->obmat[3][1]+ rv3d->persmat[2][3]*ob->obmat[3][2]+ rv3d->persmat[3][3];
-	pixsize*= rv3d->pixsize;
 	lampsize= pixsize*((float)U.obcenter_dia*0.5f);
 
 	/* and view aligned matrix: */
@@ -3552,12 +3544,7 @@
 		case PART_DRAW_CROSS:
 		case PART_DRAW_AXIS:
 			/* lets calculate the scale: */
-			pixsize= rv3d->persmat[0][3]*ob->obmat[3][0]+ rv3d->persmat[1][3]*ob->obmat[3][1]+ rv3d->persmat[2][3]*ob->obmat[3][2]+ rv3d->persmat[3][3];
-			pixsize*= rv3d->pixsize;
-			if(part->draw_size==0.0)
-				pixsize*=2.0;
-			else
-				pixsize*=part->draw_size;
+			pixsize= view3d_pixel_size(rv3d, ob->obmat[3]);
 
 			if(draw_as==PART_DRAW_AXIS)
 				create_cdata = 1;

Modified: trunk/blender/source/blender/editors/space_view3d/view3d_view.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_view.c	2010-11-05 04:18:53 UTC (rev 32880)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_view.c	2010-11-05 05:26:34 UTC (rev 32881)
@@ -1873,3 +1873,12 @@
 {
 	return (rv3d->persp == RV3D_ORTHO || (v3d->camera && ((Camera *)v3d->camera->data)->type == CAM_ORTHO));
 }
+
+float view3d_pixel_size(struct RegionView3D *rv3d, const float co[3])
+{
+	return  (rv3d->persmat[3][3] + (
+				rv3d->persmat[0][3]*co[0] +
+				rv3d->persmat[1][3]*co[1] +
+				rv3d->persmat[2][3]*co[2])
+			) * rv3d->pixsize;
+}

Modified: trunk/blender/source/blender/editors/transform/transform.h
===================================================================
--- trunk/blender/source/blender/editors/transform/transform.h	2010-11-05 04:18:53 UTC (rev 32880)
+++ trunk/blender/source/blender/editors/transform/transform.h	2010-11-05 05:26:34 UTC (rev 32881)
@@ -557,7 +557,6 @@
 /*********************** exported from transform_manipulator.c ********** */
 int gimbal_axis(struct Object *ob, float gmat[][3]); /* return 0 when no gimbal for selection */
 int calc_manipulator_stats(const struct bContext *C);
-float get_drawsize(struct ARegion *ar, float *co);
 
 /*********************** TransData Creation and General Handling *********** */
 void createTransData(struct bContext *C, TransInfo *t);

Modified: trunk/blender/source/blender/editors/transform/transform_generics.c
===================================================================
--- trunk/blender/source/blender/editors/transform/transform_generics.c	2010-11-05 04:18:53 UTC (rev 32880)
+++ trunk/blender/source/blender/editors/transform/transform_generics.c	2010-11-05 05:26:34 UTC (rev 32881)
@@ -1568,17 +1568,3 @@
 		strcpy(t->proptext, "");
 	}
 }
-
-float get_drawsize(ARegion *ar, float *co)
-{
-	RegionView3D *rv3d= ar->regiondata;
-	float size= rv3d->pixsize * 5;
-	float vec[3];
-
-	vec[0]= rv3d->persmat[0][3];
-	vec[1]= rv3d->persmat[1][3];
-	vec[2]= rv3d->persmat[2][3];
-
-	size *= dot_v3v3(vec, co) + rv3d->persmat[3][3];
-	return size;
-}

Modified: trunk/blender/source/blender/editors/transform/transform_manipulator.c
===================================================================
--- trunk/blender/source/blender/editors/transform/transform_manipulator.c	2010-11-05 04:18:53 UTC (rev 32880)
+++ trunk/blender/source/blender/editors/transform/transform_manipulator.c	2010-11-05 05:26:34 UTC (rev 32881)
@@ -1401,17 +1401,6 @@
 
 /* ********************************************* */
 
-static float get_manipulator_drawsize(ARegion *ar)
-{
-	RegionView3D *rv3d= ar->regiondata;
-	float size = get_drawsize(ar, rv3d->twmat[3]);
-
-	size*= (float)U.tw_size;
-
-	return size;
-}
-
-
 /* main call, does calc centers & orientation too */
 /* uses global G.moving */
 static int drawflags= 0xFFFF;		// only for the calls below, belongs in scene...?
@@ -1459,7 +1448,7 @@
 			break;
 		}
 
-		mul_mat3_m4_fl(rv3d->twmat, get_manipulator_drawsize(ar));
+		mul_mat3_m4_fl(rv3d->twmat, view3d_pixel_size(rv3d, rv3d->twmat[3]) * U.tw_size * 5.0f);
 	}
 
 	test_manipulator_axis(C);

Modified: trunk/blender/source/blender/editors/transform/transform_snap.c
===================================================================
--- trunk/blender/source/blender/editors/transform/transform_snap.c	2010-11-05 04:18:53 UTC (rev 32880)
+++ trunk/blender/source/blender/editors/transform/transform_snap.c	2010-11-05 05:26:34 UTC (rev 32881)
@@ -146,16 +146,16 @@
 			
 			glDisable(GL_DEPTH_TEST);
 	
-			size = 0.5f * UI_GetThemeValuef(TH_VERTEX_SIZE);
+			size = 2.5f * UI_GetThemeValuef(TH_VERTEX_SIZE);
 
 			invert_m4_m4(imat, rv3d->viewmat);
 
 			for (p = t->tsnap.points.first; p; p = p->next) {
-				drawcircball(GL_LINE_LOOP, p->co, size * get_drawsize(t->ar, p->co), imat);
+				drawcircball(GL_LINE_LOOP, p->co, view3d_pixel_size(rv3d, p->co) * size, imat);
 			}
 
 			if (t->tsnap.status & POINT_INIT) {
-				drawcircball(GL_LINE_LOOP, t->tsnap.snapPoint, size * get_drawsize(t->ar, t->tsnap.snapPoint), imat);
+				drawcircball(GL_LINE_LOOP, t->tsnap.snapPoint, view3d_pixel_size(rv3d, t->tsnap.snapPoint) * size, imat);
 			}
 			
 			/* draw normal if needed */





More information about the Bf-blender-cvs mailing list