[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [49722] branches/soc-2012-bratwurst/source /blender/editors: Functions to allow overriding of the color of a button.

Jorge Rodriguez bs.vino at gmail.com
Thu Aug 9 05:59:32 CEST 2012


Revision: 49722
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=49722
Author:   vino
Date:     2012-08-09 03:59:28 +0000 (Thu, 09 Aug 2012)
Log Message:
-----------
Functions to allow overriding of the color of a button. Use these functions to make the white and black color picker buttons white and black.

Modified Paths:
--------------
    branches/soc-2012-bratwurst/source/blender/editors/include/UI_interface.h
    branches/soc-2012-bratwurst/source/blender/editors/interface/interface.c
    branches/soc-2012-bratwurst/source/blender/editors/interface/interface_intern.h
    branches/soc-2012-bratwurst/source/blender/editors/interface/interface_regions.c
    branches/soc-2012-bratwurst/source/blender/editors/interface/interface_widgets.c

Modified: branches/soc-2012-bratwurst/source/blender/editors/include/UI_interface.h
===================================================================
--- branches/soc-2012-bratwurst/source/blender/editors/include/UI_interface.h	2012-08-09 03:24:58 UTC (rev 49721)
+++ branches/soc-2012-bratwurst/source/blender/editors/include/UI_interface.h	2012-08-09 03:59:28 UTC (rev 49722)
@@ -626,6 +626,8 @@
 
 void    uiBlockSetDrawExtraFunc(uiBlock *block, void (*func)(const struct bContext *C, void *, void *, void *, struct rcti *rect), void *arg1, void *arg2);
 
+void    uiButSetColorOverride(uiBut *but, int r, int g, int b);
+
 void uiButSetFocusOnEnter(struct wmWindow *win, uiBut *but);
 
 /* Autocomplete

Modified: branches/soc-2012-bratwurst/source/blender/editors/interface/interface.c
===================================================================
--- branches/soc-2012-bratwurst/source/blender/editors/interface/interface.c	2012-08-09 03:24:58 UTC (rev 49721)
+++ branches/soc-2012-bratwurst/source/blender/editors/interface/interface.c	2012-08-09 03:59:28 UTC (rev 49722)
@@ -2031,6 +2031,9 @@
 		IMB_freeImBuf((struct ImBuf *)but->poin);
 	}
 
+	if (but->color_override)
+		MEM_freeN(but->color_override);
+
 	MEM_freeN(but);
 }
 
@@ -3533,6 +3536,14 @@
 	but->autofunc_arg = arg;
 }
 
+void uiButSetColorOverride(uiBut *but, int r, int g, int b)
+{
+	but->color_override = MEM_callocN(sizeof(uiWidgetColors), "button color override");
+	but->color_override->inner[0] = r;
+	but->color_override->inner[1] = g;
+	but->color_override->inner[2] = b;
+}
+
 uiBut *uiDefIDPoinBut(uiBlock *block, uiIDPoinFuncFP func, short blocktype, int retval, const char *str, int x1, int y1, short x2, short y2, void *idpp, const char *tip)
 {
 	uiBut *but = ui_def_but(block, IDPOIN, retval, str, x1, y1, x2, y2, NULL, 0.0, 0.0, 0.0, 0.0, tip);

Modified: branches/soc-2012-bratwurst/source/blender/editors/interface/interface_intern.h
===================================================================
--- branches/soc-2012-bratwurst/source/blender/editors/interface/interface_intern.h	2012-08-09 03:24:58 UTC (rev 49721)
+++ branches/soc-2012-bratwurst/source/blender/editors/interface/interface_intern.h	2012-08-09 03:59:28 UTC (rev 49722)
@@ -157,7 +157,9 @@
 	char *str;
 	char strdata[UI_MAX_NAME_STR];
 	char drawstr[UI_MAX_DRAW_STR];
-	
+
+	uiWidgetColors* color_override;
+
 	float x1, y1, x2, y2;
 
 	char *poin;

Modified: branches/soc-2012-bratwurst/source/blender/editors/interface/interface_regions.c
===================================================================
--- branches/soc-2012-bratwurst/source/blender/editors/interface/interface_regions.c	2012-08-09 03:24:58 UTC (rev 49721)
+++ branches/soc-2012-bratwurst/source/blender/editors/interface/interface_regions.c	2012-08-09 03:59:28 UTC (rev 49722)
@@ -2264,10 +2264,12 @@
 	bt = uiDefIconButO(block, BUT, "UI_OT_eyedropper", WM_OP_INVOKE_DEFAULT, ICON_EYEDROPPER, butwidth + 10, -60, UI_UNIT_X, UI_UNIT_Y, NULL);
 	uiButSetFunc(bt, close_popup_cb, bt, NULL);
 
-	bt = uiDefButR_prop(block, BUT, 0, "W", butwidth + 10, -80, UI_UNIT_X, UI_UNIT_Y, ptr, prop, 0, 0.0, 0.0, 0, 0, TIP_("Set to white"));
+	bt = uiDefButR_prop(block, BUT, 0, "", butwidth + 10, -80, UI_UNIT_X, UI_UNIT_Y, ptr, prop, 0, 0.0, 0.0, 0, 0, TIP_("Set to white"));
 	uiButSetFunc(bt, do_white_cb, bt, NULL);
-	bt = uiDefButR_prop(block, BUT, 0, "B", butwidth + 10, -100, UI_UNIT_X, UI_UNIT_Y, ptr, prop, 0, 0.0, 0.0, 0, 0, TIP_("Set to black"));
+	uiButSetColorOverride(bt, 255, 255, 255);
+	bt = uiDefButR_prop(block, BUT, 0, "", butwidth + 10, -100, UI_UNIT_X, UI_UNIT_Y, ptr, prop, 0, 0.0, 0.0, 0, 0, TIP_("Set to black"));
 	uiButSetFunc(bt, do_black_cb, bt, NULL);
+	uiButSetColorOverride(bt, 0, 0, 0);
 	
 	/* RGB values */
 	uiBlockBeginAlign(block);

Modified: branches/soc-2012-bratwurst/source/blender/editors/interface/interface_widgets.c
===================================================================
--- branches/soc-2012-bratwurst/source/blender/editors/interface/interface_widgets.c	2012-08-09 03:24:58 UTC (rev 49721)
+++ branches/soc-2012-bratwurst/source/blender/editors/interface/interface_widgets.c	2012-08-09 03:59:28 UTC (rev 49722)
@@ -3242,6 +3242,14 @@
 		if (but->editstr) state |= UI_TEXTINPUT;
 		
 		wt->state(wt, state);
+
+		if (but->color_override)
+		{
+			wt->wcol.inner[0] = but->color_override->inner[0];
+			wt->wcol.inner[1] = but->color_override->inner[1];
+			wt->wcol.inner[2] = but->color_override->inner[2];
+		}
+
 		if (wt->custom)
 			wt->custom(but, &wt->wcol, rect, state, roundboxalign);
 		else if (wt->draw)




More information about the Bf-blender-cvs mailing list