more mini optimizations - don't call UI_ThemeColor 4 times per curve handle, instead get all colors at the start and index them when drawing curves in editmode.

also remove redundant NULL check.
This commit is contained in:
Campbell Barton 2011-09-17 07:14:39 +00:00
parent 5114320dc5
commit f2748bfdc3
3 changed files with 20 additions and 12 deletions

@ -277,8 +277,7 @@ void BKE_area_region_free(SpaceType *st, ARegion *ar)
ar->v2d.tab_offset= NULL; ar->v2d.tab_offset= NULL;
} }
if(ar) BLI_freelistN(&ar->panels);
BLI_freelistN(&ar->panels);
} }
/* not area itself */ /* not area itself */

@ -717,7 +717,7 @@ static int project_paint_PickColor(const ProjPaintState *ps, float pt[2], float
* 1 : occluded * 1 : occluded
2 : occluded with w[3] weights set (need to know in some cases) */ 2 : occluded with w[3] weights set (need to know in some cases) */
static int project_paint_occlude_ptv(float pt[3], float v1[3], float v2[3], float v3[3], float w[3], int is_ortho) static int project_paint_occlude_ptv(float pt[3], float v1[4], float v2[4], float v3[4], float w[3], int is_ortho)
{ {
/* if all are behind us, return false */ /* if all are behind us, return false */
if(v1[2] > pt[2] && v2[2] > pt[2] && v3[2] > pt[2]) if(v1[2] > pt[2] && v2[2] > pt[2] && v3[2] > pt[2])

@ -4538,7 +4538,6 @@ static void tekenhandlesN(Nurb *nu, short sel, short hide_handles)
{ {
BezTriple *bezt; BezTriple *bezt;
float *fp; float *fp;
int basecol;
int a; int a;
if(nu->hide || hide_handles) return; if(nu->hide || hide_handles) return;
@ -4546,8 +4545,15 @@ static void tekenhandlesN(Nurb *nu, short sel, short hide_handles)
glBegin(GL_LINES); glBegin(GL_LINES);
if(nu->type == CU_BEZIER) { if(nu->type == CU_BEZIER) {
if(sel) basecol= TH_HANDLE_SEL_FREE;
else basecol= TH_HANDLE_FREE; #define TH_HANDLE_COL_TOT ((TH_HANDLE_SEL_FREE - TH_HANDLE_FREE) + 1)
/* use MIN2 when indexing to ensure newer files dont read outside the array */
unsigned char handle_cols[TH_HANDLE_COL_TOT][3];
const int basecol= sel ? TH_HANDLE_SEL_FREE : TH_HANDLE_FREE;
for (a=0; a < TH_HANDLE_COL_TOT; a++) {
UI_GetThemeColor3ubv(basecol + a, handle_cols[a]);
}
bezt= nu->bezt; bezt= nu->bezt;
a= nu->pntsu; a= nu->pntsu;
@ -4556,31 +4562,34 @@ static void tekenhandlesN(Nurb *nu, short sel, short hide_handles)
if( (bezt->f2 & SELECT)==sel) { if( (bezt->f2 & SELECT)==sel) {
fp= bezt->vec[0]; fp= bezt->vec[0];
UI_ThemeColor(basecol + bezt->h1); glColor3ubv(handle_cols[MIN2(bezt->h1, TH_HANDLE_COL_TOT-1)]);
glVertex3fv(fp); glVertex3fv(fp);
glVertex3fv(fp+3); glVertex3fv(fp+3);
UI_ThemeColor(basecol + bezt->h2); glColor3ubv(handle_cols[MIN2(bezt->h2, TH_HANDLE_COL_TOT-1)]);
glVertex3fv(fp+3); glVertex3fv(fp+3);
glVertex3fv(fp+6); glVertex3fv(fp+6);
} }
else if( (bezt->f1 & SELECT)==sel) { else if( (bezt->f1 & SELECT)==sel) {
fp= bezt->vec[0]; fp= bezt->vec[0];
UI_ThemeColor(basecol + bezt->h1); glColor3ubv(handle_cols[MIN2(bezt->h1, TH_HANDLE_COL_TOT-1)]);
glVertex3fv(fp); glVertex3fv(fp);
glVertex3fv(fp+3); glVertex3fv(fp+3);
} }
else if( (bezt->f3 & SELECT)==sel) { else if( (bezt->f3 & SELECT)==sel) {
fp= bezt->vec[1]; fp= bezt->vec[1];
UI_ThemeColor(basecol + bezt->h2); glColor3ubv(handle_cols[MIN2(bezt->h2, TH_HANDLE_COL_TOT-1)]);
glVertex3fv(fp); glVertex3fv(fp);
glVertex3fv(fp+3); glVertex3fv(fp+3);
} }
} }
bezt++; bezt++;
} }
#undef TH_HANDLE_COL_TOT
} }
glEnd(); glEnd();
} }