avoid calling glGetFloatv() twice when UI_RB_ALPHA is enabled with uiRoundBox()
authorCampbell Barton <ideasman42@gmail.com>
Thu, 7 Mar 2013 06:46:50 +0000 (06:46 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Thu, 7 Mar 2013 06:46:50 +0000 (06:46 +0000)
source/blender/editors/interface/interface_draw.c
source/blender/editors/interface/interface_intern.h
source/blender/editors/interface/interface_widgets.c

index c0aa195..5525333 100644 (file)
@@ -381,16 +381,7 @@ void uiRoundRect(float minx, float miny, float maxx, float maxy, float rad)
 /* (old, used in outliner) plain antialiased filled box */
 void uiRoundBox(float minx, float miny, float maxx, float maxy, float rad)
 {
-       float color[4];
-       
-       if (roundboxtype & UI_RB_ALPHA) {
-               glGetFloatv(GL_CURRENT_COLOR, color);
-               color[3] = 0.5;
-               glColor4fv(color);
-               glEnable(GL_BLEND);
-       }
-       
-       ui_draw_anti_roundbox(GL_POLYGON, minx, miny, maxx, maxy, rad);
+       ui_draw_anti_roundbox(GL_POLYGON, minx, miny, maxx, maxy, rad, roundboxtype & UI_RB_ALPHA);
 }
 
 
index 702bdca..6065fcf 100644 (file)
@@ -522,7 +522,7 @@ extern void ui_button_text_password_hide(char password_str[UI_MAX_DRAW_STR], uiB
 
 /* interface_widgets.c */
 void ui_draw_anti_tria(float x1, float y1, float x2, float y2, float x3, float y3);
-void ui_draw_anti_roundbox(int mode, float minx, float miny, float maxx, float maxy, float rad);
+void ui_draw_anti_roundbox(int mode, float minx, float miny, float maxx, float maxy, float rad, bool use_alpha);
 void ui_draw_menu_back(struct uiStyle *style, uiBlock *block, rcti *rect);
 uiWidgetColors *ui_tooltip_get_theme(void);
 void ui_draw_tooltip_background(uiStyle *UNUSED(style), uiBlock * block, rcti * rect);
index dd7b1d0..4abd622 100644 (file)
@@ -218,13 +218,16 @@ void ui_draw_anti_tria(float x1, float y1, float x2, float y2, float x3, float y
        glDisable(GL_BLEND);
 }
 
-void ui_draw_anti_roundbox(int mode, float minx, float miny, float maxx, float maxy, float rad)
+void ui_draw_anti_roundbox(int mode, float minx, float miny, float maxx, float maxy, float rad, bool use_alpha)
 {
        float color[4];
        int j;
        
        glEnable(GL_BLEND);
        glGetFloatv(GL_CURRENT_COLOR, color);
+       if (use_alpha) {
+               color[3] = 0.5f;
+       }
        color[3] *= 0.125f;
        glColor4fv(color);