[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [29992] trunk/blender: option for color wheel widget to make it easier to select values closer to white , enable for color balance.

Campbell Barton ideasman42 at gmail.com
Mon Jul 5 17:52:25 CEST 2010


Revision: 29992
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=29992
Author:   campbellbarton
Date:     2010-07-05 17:52:25 +0200 (Mon, 05 Jul 2010)

Log Message:
-----------
option for color wheel widget to make it easier to select values closer to white, enable for color balance.

Modified Paths:
--------------
    trunk/blender/release/scripts/ui/space_sequencer.py
    trunk/blender/source/blender/editors/include/UI_interface.h
    trunk/blender/source/blender/editors/interface/interface_handlers.c
    trunk/blender/source/blender/editors/interface/interface_templates.c
    trunk/blender/source/blender/editors/interface/interface_widgets.c
    trunk/blender/source/blender/editors/space_node/drawnode.c
    trunk/blender/source/blender/makesrna/intern/rna_ui_api.c

Modified: trunk/blender/release/scripts/ui/space_sequencer.py
===================================================================
--- trunk/blender/release/scripts/ui/space_sequencer.py	2010-07-05 14:53:11 UTC (rev 29991)
+++ trunk/blender/release/scripts/ui/space_sequencer.py	2010-07-05 15:52:25 UTC (rev 29992)
@@ -749,15 +749,15 @@
             row = layout.row()
             row.active = strip.use_color_balance
             col = row.column()
-            col.template_color_wheel(strip.color_balance, "lift", value_slider=False)
+            col.template_color_wheel(strip.color_balance, "lift", value_slider=False, cubic=True)
             col.row().prop(strip.color_balance, "lift")
             col.prop(strip.color_balance, "inverse_lift", text="Inverse")
             col = row.column()
-            col.template_color_wheel(strip.color_balance, "gamma", value_slider=False, lock_luminosity=True)
+            col.template_color_wheel(strip.color_balance, "gamma", value_slider=False, lock_luminosity=True, cubic=True)
             col.row().prop(strip.color_balance, "gamma")
             col.prop(strip.color_balance, "inverse_gamma", text="Inverse")
             col = row.column()
-            col.template_color_wheel(strip.color_balance, "gain", value_slider=False, lock_luminosity=True)
+            col.template_color_wheel(strip.color_balance, "gain", value_slider=False, lock_luminosity=True, cubic=True)
             col.row().prop(strip.color_balance, "gain")
             col.prop(strip.color_balance, "inverse_gain", text="Inverse")
 

Modified: trunk/blender/source/blender/editors/include/UI_interface.h
===================================================================
--- trunk/blender/source/blender/editors/include/UI_interface.h	2010-07-05 14:53:11 UTC (rev 29991)
+++ trunk/blender/source/blender/editors/include/UI_interface.h	2010-07-05 15:52:25 UTC (rev 29992)
@@ -153,6 +153,7 @@
 #define UI_BUT_NO_TOOLTIP	(1<<27)
 
 #define UI_BUT_VEC_SIZE_LOCK (1<<28) /* used to flag if color hsv-circle should keep luminance */
+#define UI_BUT_COLOR_CUBIC	(1<<29) /* cubic saturation for the color wheel */
 
 #define UI_PANEL_WIDTH			340
 #define UI_COMPACT_PANEL_WIDTH	160
@@ -685,7 +686,7 @@
 void uiTemplateWaveform(uiLayout *layout, struct PointerRNA *ptr, char *propname, int expand);
 void uiTemplateVectorscope(uiLayout *layout, struct PointerRNA *ptr, char *propname, int expand);
 void uiTemplateCurveMapping(uiLayout *layout, struct PointerRNA *ptr, char *propname, int type, int levels, int brush);
-void uiTemplateColorWheel(uiLayout *layout, struct PointerRNA *ptr, char *propname, int value_slider, int lock, int lock_luminosity);
+void uiTemplateColorWheel(uiLayout *layout, struct PointerRNA *ptr, char *propname, int value_slider, int lock, int lock_luminosity, int cubic);
 void uiTemplateTriColorSet(uiLayout *layout, struct PointerRNA *ptr, char *propname);
 void uiTemplateLayers(uiLayout *layout, struct PointerRNA *ptr, char *propname,
 			  PointerRNA *used_ptr, char *used_propname, int active_layer);

Modified: trunk/blender/source/blender/editors/interface/interface_handlers.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_handlers.c	2010-07-05 14:53:11 UTC (rev 29991)
+++ trunk/blender/source/blender/editors/interface/interface_handlers.c	2010-07-05 15:52:25 UTC (rev 29992)
@@ -3073,7 +3073,10 @@
 	}
 
 	ui_hsvcircle_vals_from_pos(hsv, hsv+1, &rect, (float)mx, (float)my);
-	
+
+	if(but->flag & UI_BUT_COLOR_CUBIC)
+		hsv[1]= 1.0f - sqrt3f(1.0f - hsv[1]);
+
 	hsv_to_rgb(hsv[0], hsv[1], hsv[2], rgb, rgb+1, rgb+2);
 
 	if((but->flag & UI_BUT_VEC_SIZE_LOCK) && (rgb[0] || rgb[1] || rgb[2])) {

Modified: trunk/blender/source/blender/editors/interface/interface_templates.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_templates.c	2010-07-05 14:53:11 UTC (rev 29991)
+++ trunk/blender/source/blender/editors/interface/interface_templates.c	2010-07-05 15:52:25 UTC (rev 29992)
@@ -1953,7 +1953,7 @@
 
 #define WHEEL_SIZE	100
 
-void uiTemplateColorWheel(uiLayout *layout, PointerRNA *ptr, char *propname, int value_slider, int lock, int lock_luminosity)
+void uiTemplateColorWheel(uiLayout *layout, PointerRNA *ptr, char *propname, int value_slider, int lock, int lock_luminosity, int cubic)
 {
 	PropertyRNA *prop= RNA_struct_find_property(ptr, propname);
 	uiBlock *block= uiLayoutGetBlock(layout);
@@ -1984,6 +1984,9 @@
 		but->a2= len_v3(color);
 	}
 
+	if(cubic)
+		but->flag |= UI_BUT_COLOR_CUBIC;
+
 	uiItemS(row);
 	
 	if (value_slider)

Modified: trunk/blender/source/blender/editors/interface/interface_widgets.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_widgets.c	2010-07-05 14:53:11 UTC (rev 29991)
+++ trunk/blender/source/blender/editors/interface/interface_widgets.c	2010-07-05 15:52:25 UTC (rev 29992)
@@ -1675,6 +1675,7 @@
 		
 		ui_hsvcircle_vals_from_pos(hsv, hsv+1, rect, centx + co*radius, centy + si*radius);
 		CLAMP(hsv[2], 0.0f, 1.0f); /* for display only */
+
 		hsv_to_rgb(hsv[0], hsv[1], hsv[2], col, col+1, col+2);
 		glColor3fv(col);
 		glVertex2f( centx + co*radius, centy + si*radius);
@@ -1696,7 +1697,12 @@
 
 	/* cursor */
 	ang= 2.0f*M_PI*hsvo[0] + 0.5f*M_PI;
-	radius= hsvo[1]*radius;
+
+	if(but->flag & UI_BUT_COLOR_CUBIC)
+		radius= (1.0f - pow(1.0f - hsvo[1], 3.0f)) *radius;
+	else
+		radius= hsvo[1] * radius;
+
 	ui_hsv_cursor(centx + cos(-ang)*radius, centy + sin(-ang)*radius);
 	
 }

Modified: trunk/blender/source/blender/editors/space_node/drawnode.c
===================================================================
--- trunk/blender/source/blender/editors/space_node/drawnode.c	2010-07-05 14:53:11 UTC (rev 29991)
+++ trunk/blender/source/blender/editors/space_node/drawnode.c	2010-07-05 15:52:25 UTC (rev 29992)
@@ -107,7 +107,7 @@
 	RNA_property_collection_lookup_int(ptr, prop, 0, &sockptr);
 	
 	col = uiLayoutColumn(layout, 0);
-	uiTemplateColorWheel(col, &sockptr, "default_value", 1, 0, 0);
+	uiTemplateColorWheel(col, &sockptr, "default_value", 1, 0, 0, 0);
 	uiItemR(col, &sockptr, "default_value", 0, "", 0);
 }
 
@@ -947,17 +947,17 @@
 	
 		split = uiLayoutSplit(layout, 0, 0);
 		col = uiLayoutColumn(split, 0);
-		uiTemplateColorWheel(col, ptr, "lift", 1, 1, 0);
+		uiTemplateColorWheel(col, ptr, "lift", 1, 1, 0, 1);
 		row = uiLayoutRow(col, 0);
 		uiItemR(row, ptr, "lift", 0, NULL, 0);
 		
 		col = uiLayoutColumn(split, 0);
-		uiTemplateColorWheel(col, ptr, "gamma", 1, 1, 1);
+		uiTemplateColorWheel(col, ptr, "gamma", 1, 1, 1, 1);
 		row = uiLayoutRow(col, 0);
 		uiItemR(row, ptr, "gamma", 0, NULL, 0);
 		
 		col = uiLayoutColumn(split, 0);
-		uiTemplateColorWheel(col, ptr, "gain", 1, 1, 1);
+		uiTemplateColorWheel(col, ptr, "gain", 1, 1, 1, 1);
 		row = uiLayoutRow(col, 0);
 		uiItemR(row, ptr, "gain", 0, NULL, 0);
 
@@ -965,17 +965,17 @@
 		
 		split = uiLayoutSplit(layout, 0, 0);
 		col = uiLayoutColumn(split, 0);
-		uiTemplateColorWheel(col, ptr, "offset", 1, 1, 0);
+		uiTemplateColorWheel(col, ptr, "offset", 1, 1, 0, 1);
 		row = uiLayoutRow(col, 0);
 		uiItemR(row, ptr, "offset", 0, NULL, 0);
 		
 		col = uiLayoutColumn(split, 0);
-		uiTemplateColorWheel(col, ptr, "power", 1, 1, 0);
+		uiTemplateColorWheel(col, ptr, "power", 1, 1, 0, 1);
 		row = uiLayoutRow(col, 0);
 		uiItemR(row, ptr, "power", 0, NULL, 0);
 		
 		col = uiLayoutColumn(split, 0);
-		uiTemplateColorWheel(col, ptr, "slope", 1, 1, 0);
+		uiTemplateColorWheel(col, ptr, "slope", 1, 1, 0, 1);
 		row = uiLayoutRow(col, 0);
 		uiItemR(row, ptr, "slope", 0, NULL, 0);
 	}

Modified: trunk/blender/source/blender/makesrna/intern/rna_ui_api.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_ui_api.c	2010-07-05 14:53:11 UTC (rev 29991)
+++ trunk/blender/source/blender/makesrna/intern/rna_ui_api.c	2010-07-05 15:52:25 UTC (rev 29992)
@@ -361,6 +361,7 @@
 	RNA_def_boolean(func, "value_slider", 0, "", "Display the value slider to the right of the color wheel");
 	RNA_def_boolean(func, "lock", 0, "", "Lock the color wheel display to value 1.0 regardless of actual color");
 	RNA_def_boolean(func, "lock_luminosity", 0, "", "Keep the color at its original vector length");
+	RNA_def_boolean(func, "cubic", 1, "", "Cubic saturation for picking values close to white");
 	
 	func= RNA_def_function(srna, "template_triColorSet", "uiTemplateTriColorSet");
 	api_ui_item_rna_common(func);





More information about the Bf-blender-cvs mailing list