[Bf-blender-cvs] [d2fc12d] temp-ui-widget-refactor: Add widget type for separator line

Julian Eisel noreply at git.blender.org
Mon Jul 20 12:52:58 CEST 2015


Commit: d2fc12d73e358577af999ad62146a56774befeee
Author: Julian Eisel
Date:   Mon Jul 20 12:50:57 2015 +0200
Branches: temp-ui-widget-refactor
https://developer.blender.org/rBd2fc12d73e358577af999ad62146a56774befeee

Add widget type for separator line

===================================================================

M	source/blender/editors/interface/interface_widgets.c
M	source/blender/editors/interface/widgets/widgets.c
M	source/blender/editors/interface/widgets/widgets.h
M	source/blender/editors/interface/widgets/widgets_draw/drawstyle_classic.c

===================================================================

diff --git a/source/blender/editors/interface/interface_widgets.c b/source/blender/editors/interface/interface_widgets.c
index 7872e44..1f2e235 100644
--- a/source/blender/editors/interface/interface_widgets.c
+++ b/source/blender/editors/interface/interface_widgets.c
@@ -806,23 +806,6 @@ void ui_hsvcube_pos_from_vals(uiBut *but, const rcti *rect, float *hsv, float *x
 }
 
 
-/* ************ separator, for menus etc ***************** */
-static void ui_draw_separator(const rcti *rect,  uiWidgetColors *wcol)
-{
-	int y = rect->ymin + BLI_rcti_size_y(rect) / 2 - 1;
-	unsigned char col[4];
-	
-	col[0] = wcol->text[0];
-	col[1] = wcol->text[1];
-	col[2] = wcol->text[2];
-	col[3] = 30;
-	
-	glEnable(GL_BLEND);
-	glColor4ubv(col);
-	sdrawline(rect->xmin, y, rect->xmax, y);
-	glDisable(GL_BLEND);
-}
-
 /* ************ button callbacks, draw ***************** */
 
 bool ui_link_bezier_points(const rcti *rect, float coord_array[][2], int resol)
@@ -992,7 +975,7 @@ void ui_draw_but(const bContext *C, ARegion *ar, uiStyle *style, uiBut *but, rct
 				wt = WidgetTypeInit(UI_WTYPE_MENU_LABEL);
 				break;
 			case UI_BTYPE_SEPR_LINE:
-				ui_draw_separator(rect, &tui->wcol_menu_item);
+				wt = WidgetTypeInit(UI_WTYPE_SEPARATOR);
 				break;
 			default:
 				wt = WidgetTypeInit(UI_WTYPE_MENU_ITEM);
diff --git a/source/blender/editors/interface/widgets/widgets.c b/source/blender/editors/interface/widgets/widgets.c
index 6d7f649..30ed9ba 100644
--- a/source/blender/editors/interface/widgets/widgets.c
+++ b/source/blender/editors/interface/widgets/widgets.c
@@ -217,6 +217,11 @@ uiWidgetType *WidgetTypeInit(const uiWidgetTypeEnum type)
 			wt.draw_type = draw_style->scroll_inner;
 			break;
 
+		case UI_WTYPE_SEPARATOR:
+			wt.wcol_theme = &btheme->tui.wcol_menu_item;
+			wt.draw_type = draw_style->separator;
+			break;
+
 		case UI_WTYPE_SLIDER:
 			wt.wcol_theme = &btheme->tui.wcol_numslider;
 			wt.draw_type = draw_style->slider;
diff --git a/source/blender/editors/interface/widgets/widgets.h b/source/blender/editors/interface/widgets/widgets.h
index bea38b7..b0beafe 100644
--- a/source/blender/editors/interface/widgets/widgets.h
+++ b/source/blender/editors/interface/widgets/widgets.h
@@ -88,6 +88,7 @@ typedef enum {
 	UI_WTYPE_LISTITEM,
 	UI_WTYPE_PROGRESSBAR,
 	UI_WTYPE_LINK,
+	UI_WTYPE_SEPARATOR,
 } uiWidgetTypeEnum;
 
 /** uiWidgetType: for time being only for visual appearance,
@@ -148,6 +149,7 @@ typedef struct uiWidgetDrawStyle {
 	                 *rgb_picker,
 	                 *scroll_back,
 	                 *scroll_inner,
+	                 *separator,
 	                 *slider,
 	                 *swatch,
 	                 *toggle,
diff --git a/source/blender/editors/interface/widgets/widgets_draw/drawstyle_classic.c b/source/blender/editors/interface/widgets/widgets_draw/drawstyle_classic.c
index c273c7b..3699a71 100644
--- a/source/blender/editors/interface/widgets/widgets_draw/drawstyle_classic.c
+++ b/source/blender/editors/interface/widgets/widgets_draw/drawstyle_classic.c
@@ -826,7 +826,23 @@ static void widget_scroll_inner(uiWidgetColors *wcol, rcti *rect, int state, int
 	if (state & UI_SCROLL_NO_OUTLINE) {
 		SWAP(bool, outline, wtb.draw_outline);
 	}
+}
+
+/* separator, for menus etc */
+static void widget_separator(uiWidgetColors *wcol, rcti *rect, int UNUSED(state), int UNUSED(roundboxalign))
+{
+	int y = rect->ymin + BLI_rcti_size_y(rect) / 2 - 1;
+	unsigned char col[4];
 
+	col[0] = wcol->text[0];
+	col[1] = wcol->text[1];
+	col[2] = wcol->text[2];
+	col[3] = 30;
+
+	glEnable(GL_BLEND);
+	glColor4ubv(col);
+	sdrawline(rect->xmin, y, rect->xmax, y);
+	glDisable(GL_BLEND);
 }
 
 static void widget_numslider(uiBut *but, uiWidgetColors *wcol, rcti *rect, int state, int roundboxalign)
@@ -1445,6 +1461,13 @@ uiWidgetDrawType drawtype_classic_scroll_inner = {
 	/* text */   NULL,
 };
 
+uiWidgetDrawType drawtype_classic_separator = {
+	/* state */  widget_state_nothing,
+	/* draw */   widget_separator,
+	/* custom */ NULL,
+	/* text */   NULL,
+};
+
 uiWidgetDrawType drawtype_classic_numslider = {
 	/* state */  widget_state_numslider,
 	/* draw */   NULL,
@@ -1515,6 +1538,7 @@ uiWidgetDrawStyle WidgetStyle_Classic = {
 	/* rgb_picker */        NULL, /* not used (yet?) */
 	/* scroll_back */       &drawtype_classic_scroll_back,
 	/* scroll_inner */      &drawtype_classic_scroll_inner,
+	/* separator */         &drawtype_classic_separator,
 	/* slider */            &drawtype_classic_numslider,
 	/* swatch */            &drawtype_classic_swatch,
 	/* toggle */            &drawtype_classic_toggle,




More information about the Bf-blender-cvs mailing list