[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