[Bf-blender-cvs] [dfbc51f] blender2.8: cleanup: ortho grid drawing

Mike Erwin noreply at git.blender.org
Sun Aug 14 00:16:43 CEST 2016


Commit: dfbc51f764a8f7e51b9982253685142b8624e8f8
Author: Mike Erwin
Date:   Fri Aug 12 03:23:12 2016 -0400
Branches: blender2.8
https://developer.blender.org/rBdfbc51f764a8f7e51b9982253685142b8624e8f8

cleanup: ortho grid drawing

Getting this ready for Gawain treatment.

Removed setlinestyle(0) -- solid lines are the default,  hope this isn't
really needed.

Eliminated redundant math.

Arithmetic is still double precision, passed to OpenGL as single
precision. Even though it said GL_DOUBLE before, values were converted
to GL_FLOAT internally.

Use C99-isms for declaring variables close to where they're used.

Minor whitespace tweaks.

===================================================================

M	source/blender/editors/space_view3d/view3d_draw.c

===================================================================

diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c
index 4278077..e61d634 100644
--- a/source/blender/editors/space_view3d/view3d_draw.c
+++ b/source/blender/editors/space_view3d/view3d_draw.c
@@ -217,21 +217,18 @@ bool ED_view3d_clipping_test(const RegionView3D *rv3d, const float co[3], const
 /* ********* end custom clipping *********** */
 
 
-static void drawgrid_draw(ARegion *ar, double wx, double wy, double x, double y, double dx)
+static void drawgrid_draw(ARegion *ar, double x, double y, double dx)
 {	
-	double verts[2][2];
-
-	x += (wx);
-	y += (wy);
+	float verts[2][2];
 
 	/* set fixed 'Y' */
 	verts[0][1] = 0.0f;
-	verts[1][1] = (double)ar->winy;
+	verts[1][1] = (float)ar->winy;
 
 	/* iter over 'X' */
 	verts[0][0] = verts[1][0] = x - dx * floor(x / dx);
 	glEnableClientState(GL_VERTEX_ARRAY);
-	glVertexPointer(2, GL_DOUBLE, 0, verts);
+	glVertexPointer(2, GL_FLOAT, 0, verts);
 
 	while (verts[0][0] < ar->winx) {
 		glDrawArrays(GL_LINES, 0, 2);
@@ -240,7 +237,7 @@ static void drawgrid_draw(ARegion *ar, double wx, double wy, double x, double y,
 
 	/* set fixed 'X' */
 	verts[0][0] = 0.0f;
-	verts[1][0] = (double)ar->winx;
+	verts[1][0] = (float)ar->winx;
 
 	/* iter over 'Y' */
 	verts[0][1] = verts[1][1] = y - dx * floor(y / dx);
@@ -252,62 +249,57 @@ static void drawgrid_draw(ARegion *ar, double wx, double wy, double x, double y,
 	glDisableClientState(GL_VERTEX_ARRAY);
 }
 
-#define GRID_MIN_PX_D   6.0
+#define GRID_MIN_PX_D 6.0
 #define GRID_MIN_PX_F 6.0f
 
 static void drawgrid(UnitSettings *unit, ARegion *ar, View3D *v3d, const char **grid_unit)
 {
 	/* extern short bgpicmode; */
 	RegionView3D *rv3d = ar->regiondata;
-	double wx, wy, x, y, fw, fx, fy, dx;
-	double vec4[4];
-	unsigned char col[3], col2[3];
 
-	fx = rv3d->persmat[3][0];
-	fy = rv3d->persmat[3][1];
-	fw = rv3d->persmat[3][3];
+	double fx = rv3d->persmat[3][0];
+	double fy = rv3d->persmat[3][1];
+	double fw = rv3d->persmat[3][3];
 
-	wx = (ar->winx / 2.0); /* because of rounding errors, grid at wrong location */
-	wy = (ar->winy / 2.0);
+	const double wx = 0.5 * ar->winx;  /* because of rounding errors, grid at wrong location */
+	const double wy = 0.5 * ar->winy;
 
-	x = (wx) * fx / fw;
-	y = (wy) * fy / fw;
+	double x = wx * fx / fw;
+	double y = wy * fy / fw;
 
-	vec4[0] = vec4[1] = v3d->grid;
-
-	vec4[2] = 0.0;
-	vec4[3] = 1.0;
+	double vec4[4] = { v3d->grid, v3d->grid, 0.0, 1.0 };
 	mul_m4_v4d(rv3d->persmat, vec4);
 	fx = vec4[0];
 	fy = vec4[1];
 	fw = vec4[3];
 
-	dx = fabs(x - (wx) * fx / fw);
-	if (dx == 0) dx = fabs(y - (wy) * fy / fw);
-	
+	double dx = fabs(x - wx * fx / fw);
+	if (dx == 0) dx = fabs(y - wy * fy / fw);
+
+	x += wx;
+	y += wy;
+
 	glLineWidth(1.0f);
 
-	glDepthMask(GL_FALSE);     /* disable write in zbuffer */
+	glDepthMask(GL_FALSE);  /* disable write in zbuffer */
 
 	/* check zoom out */
 	UI_ThemeColor(TH_GRID);
-	
+
 	if (unit->system) {
 		/* Use GRID_MIN_PX * 2 for units because very very small grid
 		 * items are less useful when dealing with units */
 		const void *usys;
-		int len, i;
-		double dx_scalar;
-		float blend_fac;
+		int len;
 
 		bUnit_GetSystem(unit->system, B_UNIT_LENGTH, &usys, &len);
 
 		if (usys) {
-			i = len;
+			int i = len;
 			while (i--) {
 				double scalar = bUnit_GetScaler(usys, i);
 
-				dx_scalar = dx * scalar / (double)unit->scale_length;
+				double dx_scalar = dx * scalar / (double)unit->scale_length;
 				if (dx_scalar < (GRID_MIN_PX_D * 2.0))
 					continue;
 
@@ -316,16 +308,15 @@ static void drawgrid(UnitSettings *unit, ARegion *ar, View3D *v3d, const char **
 					*grid_unit = bUnit_GetNameDisplay(usys, i);
 					rv3d->gridview = (float)((scalar * (double)v3d->grid) / (double)unit->scale_length);
 				}
-				blend_fac = 1.0f - ((GRID_MIN_PX_F * 2.0f) / (float)dx_scalar);
+				float blend_fac = 1.0f - ((GRID_MIN_PX_F * 2.0f) / (float)dx_scalar);
 
 				/* tweak to have the fade a bit nicer */
 				blend_fac = (blend_fac * blend_fac) * 2.0f;
 				CLAMP(blend_fac, 0.3f, 1.0f);
 
-
 				UI_ThemeColorBlend(TH_HIGH_GRAD, TH_GRID, blend_fac);
 
-				drawgrid_draw(ar, wx, wy, x, y, dx_scalar);
+				drawgrid_draw(ar, x, y, dx_scalar);
 			}
 		}
 	}
@@ -349,23 +340,23 @@ static void drawgrid(UnitSettings *unit, ARegion *ar, View3D *v3d, const char **
 					}
 					else {
 						UI_ThemeColor(TH_GRID);
-						drawgrid_draw(ar, wx, wy, x, y, dx);
+						drawgrid_draw(ar, x, y, dx);
 					}
 				}
 				else {  /* start blending out */
 					UI_ThemeColorBlend(TH_HIGH_GRAD, TH_GRID, dx / (GRID_MIN_PX_D * 6.0));
-					drawgrid_draw(ar, wx, wy, x, y, dx);
+					drawgrid_draw(ar, x, y, dx);
 
 					UI_ThemeColor(TH_GRID);
-					drawgrid_draw(ar, wx, wy, x, y, sublines * dx);
+					drawgrid_draw(ar, x, y, sublines * dx);
 				}
 			}
 			else {  /* start blending out (GRID_MIN_PX < dx < (GRID_MIN_PX * 10)) */
 				UI_ThemeColorBlend(TH_HIGH_GRAD, TH_GRID, dx / (GRID_MIN_PX_D * 6.0));
-				drawgrid_draw(ar, wx, wy, x, y, dx);
+				drawgrid_draw(ar, x, y, dx);
 
 				UI_ThemeColor(TH_GRID);
-				drawgrid_draw(ar, wx, wy, x, y, sublines * dx);
+				drawgrid_draw(ar, x, y, sublines * dx);
 			}
 		}
 		else {
@@ -377,46 +368,43 @@ static void drawgrid(UnitSettings *unit, ARegion *ar, View3D *v3d, const char **
 					dx /= sublines;
 					if (dx > (GRID_MIN_PX_D * 10.0)) {
 						UI_ThemeColor(TH_GRID);
-						drawgrid_draw(ar, wx, wy, x, y, dx);
+						drawgrid_draw(ar, x, y, dx);
 					}
 					else {
 						UI_ThemeColorBlend(TH_HIGH_GRAD, TH_GRID, dx / (GRID_MIN_PX_D * 6.0));
-						drawgrid_draw(ar, wx, wy, x, y, dx);
+						drawgrid_draw(ar, x, y, dx);
 						UI_ThemeColor(TH_GRID);
-						drawgrid_draw(ar, wx, wy, x, y, dx * sublines);
+						drawgrid_draw(ar, x, y, dx * sublines);
 					}
 				}
 				else {
 					UI_ThemeColorBlend(TH_HIGH_GRAD, TH_GRID, dx / (GRID_MIN_PX_D * 6.0));
-					drawgrid_draw(ar, wx, wy, x, y, dx);
+					drawgrid_draw(ar, x, y, dx);
 					UI_ThemeColor(TH_GRID);
-					drawgrid_draw(ar, wx, wy, x, y, dx * sublines);
+					drawgrid_draw(ar, x, y, dx * sublines);
 				}
 			}
 			else {
 				UI_ThemeColorBlend(TH_HIGH_GRAD, TH_GRID, dx / (GRID_MIN_PX_D * 6.0));
-				drawgrid_draw(ar, wx, wy, x, y, dx);
+				drawgrid_draw(ar, x, y, dx);
 				UI_ThemeColor(TH_GRID);
-				drawgrid_draw(ar, wx, wy, x, y, dx * sublines);
+				drawgrid_draw(ar, x, y, dx * sublines);
 			}
 		}
 	}
 
+	/* center cross */
+	unsigned char col[3], col2[3];
 
-	x += (wx);
-	y += (wy);
 	UI_GetThemeColor3ubv(TH_GRID, col);
 
-	setlinestyle(0);
-	
-	/* center cross */
 	/* horizontal line */
 	if (ELEM(rv3d->view, RV3D_VIEW_RIGHT, RV3D_VIEW_LEFT))
 		UI_make_axis_color(col, col2, 'Y');
 	else UI_make_axis_color(col, col2, 'X');
 	glColor3ubv(col2);
 	
-	fdrawline(0.0,  y,  (float)ar->winx,  y); 
+	fdrawline(0.0, y, (float)ar->winx, y); 
 	
 	/* vertical line */
 	if (ELEM(rv3d->view, RV3D_VIEW_TOP, RV3D_VIEW_BOTTOM))




More information about the Bf-blender-cvs mailing list