[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [28034] trunk/blender/source/blender/ editors: Fix [#21516] UI artifacts in array modifier

Matt Ebb matt at mke3.net
Tue Apr 6 09:02:16 CEST 2010


Revision: 28034
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=28034
Author:   broken
Date:     2010-04-06 09:02:16 +0200 (Tue, 06 Apr 2010)

Log Message:
-----------
Fix [#21516] UI artifacts in array modifier

Modify the glClearColor used to draw disabled buttons, when creating a ROUNDBOX
ui element. Made a convenience function and rippled it though, too.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/include/UI_resources.h
    trunk/blender/source/blender/editors/interface/interface.c
    trunk/blender/source/blender/editors/interface/interface_widgets.c
    trunk/blender/source/blender/editors/interface/resources.c
    trunk/blender/source/blender/editors/screen/area.c
    trunk/blender/source/blender/editors/space_action/space_action.c
    trunk/blender/source/blender/editors/space_buttons/space_buttons.c
    trunk/blender/source/blender/editors/space_console/space_console.c
    trunk/blender/source/blender/editors/space_info/space_info.c
    trunk/blender/source/blender/editors/space_logic/space_logic.c
    trunk/blender/source/blender/editors/space_nla/space_nla.c
    trunk/blender/source/blender/editors/space_node/node_draw.c
    trunk/blender/source/blender/editors/space_outliner/space_outliner.c
    trunk/blender/source/blender/editors/space_script/space_script.c
    trunk/blender/source/blender/editors/space_sound/space_sound.c
    trunk/blender/source/blender/editors/space_text/space_text.c
    trunk/blender/source/blender/editors/space_time/space_time.c
    trunk/blender/source/blender/editors/space_view3d/view3d_draw.c

Modified: trunk/blender/source/blender/editors/include/UI_resources.h
===================================================================
--- trunk/blender/source/blender/editors/include/UI_resources.h	2010-04-06 05:52:52 UTC (rev 28033)
+++ trunk/blender/source/blender/editors/include/UI_resources.h	2010-04-06 07:02:16 UTC (rev 28034)
@@ -279,6 +279,9 @@
 // get a 3 byte color, blended and shaded between two other char color pointers
 void	UI_GetColorPtrBlendShade3ubv(char *cp1, char *cp2, char *col, float fac, int offset);
 
+// clear the openGL ClearColor using the input colorid
+void	UI_ThemeClearColor(int colorid);
+
 // internal (blender) usage only, for init and set active
 void 	UI_SetTheme(int spacetype, int regionid);
 

Modified: trunk/blender/source/blender/editors/interface/interface.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface.c	2010-04-06 05:52:52 UTC (rev 28033)
+++ trunk/blender/source/blender/editors/interface/interface.c	2010-04-06 07:02:16 UTC (rev 28034)
@@ -749,6 +749,8 @@
 	
 	wmOrtho2(-0.01f, ar->winx-0.01f, -0.01f, ar->winy-0.01f);
 	
+	UI_ThemeClearColor(TH_BACK);
+	
 	/* back */
 	if(block->flag & UI_BLOCK_LOOP)
 		ui_draw_menu_back(&style, block, &rect);

Modified: trunk/blender/source/blender/editors/interface/interface_widgets.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_widgets.c	2010-04-06 05:52:52 UTC (rev 28033)
+++ trunk/blender/source/blender/editors/interface/interface_widgets.c	2010-04-06 07:02:16 UTC (rev 28034)
@@ -2318,6 +2318,22 @@
 
 }
 
+static void widget_box(uiBut *but, uiWidgetColors *wcol, rcti *rect, int state, int roundboxalign)
+{
+	uiWidgetBase wtb;
+	
+	widget_init(&wtb);
+	
+	/* half rounded */
+	round_box_edges(&wtb, roundboxalign, rect, 4.0f);
+	
+	widgetbase_draw(&wtb, wcol);
+	
+	/* store the box bg as gl clearcolor, to retrieve later when drawing semi-transparent rects
+	 * over the top to indicate disabled buttons */
+	glClearColor(wcol->inner[0]/255.0, wcol->inner[1]/255.0, wcol->inner[2]/255.0, 1.0);
+}
+
 static void widget_but(uiWidgetColors *wcol, rcti *rect, int state, int roundboxalign)
 {
 	uiWidgetBase wtb;
@@ -2384,10 +2400,11 @@
 	/* can't use theme TH_BACK or TH_PANEL... undefined */
 	glGetFloatv(GL_COLOR_CLEAR_VALUE, col);
 	glColor4f(col[0], col[1], col[2], 0.5f);
+
 	/* need -1 and +1 to make it work right for aligned buttons,
 	 * but problem may be somewhere else? */
-	glRectf(rect->xmin-1, rect->ymin, rect->xmax, rect->ymax+1);
-
+	glRectf(rect->xmin-1, rect->ymin-1, rect->xmax, rect->ymax+1);
+	
 	glDisable(GL_BLEND);
 }
 
@@ -2504,6 +2521,7 @@
 			break;
 			
 		case UI_WTYPE_BOX:
+			wt.custom= widget_box;
 			wt.wcol_theme= &btheme->tui.wcol_box;
 			break;
 			

Modified: trunk/blender/source/blender/editors/interface/resources.c
===================================================================
--- trunk/blender/source/blender/editors/interface/resources.c	2010-04-06 05:52:52 UTC (rev 28033)
+++ trunk/blender/source/blender/editors/interface/resources.c	2010-04-06 07:02:16 UTC (rev 28034)
@@ -944,6 +944,14 @@
 	col[2] = b;
 }
 
+void UI_ThemeClearColor(int colorid)
+{
+	float col[3];
+	
+	UI_GetThemeColor3fv(colorid, col);
+	glClearColor(col[0], col[1], col[2], 0.0);
+}
+
 void UI_make_axis_color(char *src_col, char *dst_col, char axis)
 {
 	switch(axis)

Modified: trunk/blender/source/blender/editors/screen/area.c
===================================================================
--- trunk/blender/source/blender/editors/screen/area.c	2010-04-06 05:52:52 UTC (rev 28033)
+++ trunk/blender/source/blender/editors/screen/area.c	2010-04-06 07:02:16 UTC (rev 28034)
@@ -340,9 +340,7 @@
 	
 	/* optional header info instead? */
 	if(ar->headerstr) {
-		float col[3];
-		UI_GetThemeColor3fv(TH_HEADER, col);
-		glClearColor(col[0], col[1], col[2], 0.0);
+		UI_ThemeClearColor(TH_HEADER);
 		glClear(GL_COLOR_BUFFER_BIT);
 		
 		UI_ThemeColor(TH_TEXT);
@@ -1228,7 +1226,6 @@
 	Panel *panel;
 	View2D *v2d= &ar->v2d;
 	View2DScrollers *scrollers;
-	float col[3];
 	int xco, yco, x, y, miny=0, w, em, header, triangle, open, newcontext= 0;
 
 	if(contextnr >= 0)
@@ -1334,14 +1331,9 @@
 	}
 
 	/* clear */
-	if (ar->type->regionid == RGN_TYPE_PREVIEW)
-		UI_GetThemeColor3fv(TH_PREVIEW_BACK, col);
-	else
-		UI_GetThemeColor3fv(TH_BACK, col);
-	
-	glClearColor(col[0], col[1], col[2], 0.0);
+	UI_ThemeClearColor((ar->type->regionid == RGN_TYPE_PREVIEW)?TH_PREVIEW_BACK:TH_BACK);
 	glClear(GL_COLOR_BUFFER_BIT);
-
+	
 	/* before setting the view */
 	if(vertical) {
 		/* only allow scrolling in vertical direction */
@@ -1418,16 +1410,10 @@
 	uiLayout *layout;
 	HeaderType *ht;
 	Header header = {0};
-	float col[3];
 	int maxco, xco, yco;
 
-	/* clear */
-	if(ED_screen_area_active(C))
-		UI_GetThemeColor3fv(TH_HEADER, col);
-	else
-		UI_GetThemeColor3fv(TH_HEADERDESEL, col);
-	
-	glClearColor(col[0], col[1], col[2], 0.0);
+	/* clear */	
+	UI_ThemeClearColor((ED_screen_area_active(C))?TH_HEADER:TH_HEADERDESEL);
 	glClear(GL_COLOR_BUFFER_BIT);
 	
 	/* set view2d view matrix for scrolling (without scrollers) */

Modified: trunk/blender/source/blender/editors/space_action/space_action.c
===================================================================
--- trunk/blender/source/blender/editors/space_action/space_action.c	2010-04-06 05:52:52 UTC (rev 28033)
+++ trunk/blender/source/blender/editors/space_action/space_action.c	2010-04-06 07:02:16 UTC (rev 28034)
@@ -165,12 +165,10 @@
 	View2D *v2d= &ar->v2d;
 	View2DGrid *grid;
 	View2DScrollers *scrollers;
-	float col[3];
 	short unit=0, flag=0;
 	
 	/* clear and setup matrix */
-	UI_GetThemeColor3fv(TH_BACK, col);
-	glClearColor(col[0], col[1], col[2], 0.0);
+	UI_ThemeClearColor(TH_BACK);
 	glClear(GL_COLOR_BUFFER_BIT);
 	
 	UI_view2d_view_ortho(C, v2d);
@@ -227,11 +225,9 @@
 	bAnimContext ac;
 	View2D *v2d= &ar->v2d;
 	View2DScrollers *scrollers;
-	float col[3];
 	
 	/* clear and setup matrix */
-	UI_GetThemeColor3fv(TH_BACK, col);
-	glClearColor(col[0], col[1], col[2], 0.0);
+	UI_ThemeClearColor(TH_BACK);
 	glClear(GL_COLOR_BUFFER_BIT);
 	
 	UI_view2d_view_ortho(C, v2d);

Modified: trunk/blender/source/blender/editors/space_buttons/space_buttons.c
===================================================================
--- trunk/blender/source/blender/editors/space_buttons/space_buttons.c	2010-04-06 05:52:52 UTC (rev 28033)
+++ trunk/blender/source/blender/editors/space_buttons/space_buttons.c	2010-04-06 07:02:16 UTC (rev 28034)
@@ -208,15 +208,9 @@
 	ED_region_header(C, ar);
 #else
 
-	float col[3];
-	
+
 	/* clear */
-	if(ED_screen_area_active(C))
-		UI_GetThemeColor3fv(TH_HEADER, col);
-	else
-		UI_GetThemeColor3fv(TH_HEADERDESEL, col);
-	
-	glClearColor(col[0], col[1], col[2], 0.0);
+	UI_ThemeClearColor(ED_screen_area_active(C)?TH_HEADER:TH_HEADERDESEL);
 	glClear(GL_COLOR_BUFFER_BIT);
 	
 	/* set view2d view matrix for scrolling (without scrollers) */

Modified: trunk/blender/source/blender/editors/space_console/space_console.c
===================================================================
--- trunk/blender/source/blender/editors/space_console/space_console.c	2010-04-06 05:52:52 UTC (rev 28033)
+++ trunk/blender/source/blender/editors/space_console/space_console.c	2010-04-06 07:02:16 UTC (rev 28034)
@@ -156,14 +156,12 @@
 	SpaceConsole *sc= CTX_wm_space_console(C);
 	View2D *v2d= &ar->v2d;
 	View2DScrollers *scrollers;
-	float col[3];
 	
 	if((sc->type==CONSOLE_TYPE_PYTHON) && (sc->scrollback.first==NULL))
 		WM_operator_name_call((bContext *)C, "CONSOLE_OT_banner", WM_OP_EXEC_DEFAULT, NULL);
 
 	/* clear and setup matrix */
-	UI_GetThemeColor3fv(TH_BACK, col);
-	glClearColor(col[0], col[1], col[2], 1.0);
+	UI_ThemeClearColor(TH_BACK);
 	glClear(GL_COLOR_BUFFER_BIT);
 
 	console_update_rect(C, ar);

Modified: trunk/blender/source/blender/editors/space_info/space_info.c
===================================================================
--- trunk/blender/source/blender/editors/space_info/space_info.c	2010-04-06 05:52:52 UTC (rev 28033)
+++ trunk/blender/source/blender/editors/space_info/space_info.c	2010-04-06 07:02:16 UTC (rev 28034)
@@ -111,11 +111,9 @@
 
 static void info_main_area_draw(const bContext *C, ARegion *ar)
 {
-	float col[3];
 	
 	/* clear and setup matrix */
-	UI_GetThemeColor3fv(TH_BACK, col);
-	glClearColor(col[0], col[1], col[2], 0.0);
+	UI_ThemeClearColor(TH_BACK);
 	glClear(GL_COLOR_BUFFER_BIT);
 }
 

Modified: trunk/blender/source/blender/editors/space_logic/space_logic.c
===================================================================
--- trunk/blender/source/blender/editors/space_logic/space_logic.c	2010-04-06 05:52:52 UTC (rev 28033)
+++ trunk/blender/source/blender/editors/space_logic/space_logic.c	2010-04-06 07:02:16 UTC (rev 28034)
@@ -244,11 +244,9 @@
 //	SpaceLogic *slogic= CTX_wm_space_logic(C);
 	View2D *v2d= &ar->v2d;
 	View2DScrollers *scrollers;
-	float col[3];
 	
 	/* clear and setup matrix */
-	UI_GetThemeColor3fv(TH_BACK, col);
-	glClearColor(col[0], col[1], col[2], 0.0);
+	UI_ThemeClearColor(TH_BACK);
 	glClear(GL_COLOR_BUFFER_BIT);
 	
 	UI_view2d_view_ortho(C, v2d);
@@ -294,15 +292,8 @@
 
 static void logic_header_area_draw(const bContext *C, ARegion *ar)
 {
-	float col[3];
-	
 	/* clear */
-	if(ED_screen_area_active(C))
-		UI_GetThemeColor3fv(TH_HEADER, col);
-	else
-		UI_GetThemeColor3fv(TH_HEADERDESEL, col);
-	
-	glClearColor(col[0], col[1], col[2], 0.0);
+	UI_ThemeClearColor(ED_screen_area_active(C)?TH_HEADER:TH_HEADERDESEL);
 	glClear(GL_COLOR_BUFFER_BIT);
 	
 	/* set view2d view matrix for scrolling (without scrollers) */

Modified: trunk/blender/source/blender/editors/space_nla/space_nla.c
===================================================================
--- trunk/blender/source/blender/editors/space_nla/space_nla.c	2010-04-06 05:52:52 UTC (rev 28033)
+++ trunk/blender/source/blender/editors/space_nla/space_nla.c	2010-04-06 07:02:16 UTC (rev 28034)
@@ -227,11 +227,9 @@
 	bAnimContext ac;
 	View2D *v2d= &ar->v2d;
 	View2DScrollers *scrollers;
-	float col[3];
 	
 	/* clear and setup matrix */
-	UI_GetThemeColor3fv(TH_BACK, col);
-	glClearColor(col[0], col[1], col[2], 0.0);
+	UI_ThemeClearColor(TH_BACK);
 	glClear(GL_COLOR_BUFFER_BIT);
 	
 	UI_view2d_view_ortho(C, v2d);
@@ -273,12 +271,10 @@
 	View2D *v2d= &ar->v2d;
 	View2DGrid *grid;
 	View2DScrollers *scrollers;
-	float col[3];
 	short unit=0, flag=0;
 	

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list