[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [58345] branches/soc-2013-paint/source/ blender/editors/interface/interface_handlers.c: Allow copying of non gamma-corrected colors.

Antony Riakiotakis kalast at gmail.com
Wed Jul 17 17:44:22 CEST 2013


Revision: 58345
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=58345
Author:   psy-fi
Date:     2013-07-17 15:44:22 +0000 (Wed, 17 Jul 2013)
Log Message:
-----------
Allow copying of non gamma-corrected colors.

Modified Paths:
--------------
    branches/soc-2013-paint/source/blender/editors/interface/interface_handlers.c

Modified: branches/soc-2013-paint/source/blender/editors/interface/interface_handlers.c
===================================================================
--- branches/soc-2013-paint/source/blender/editors/interface/interface_handlers.c	2013-07-17 15:34:03 UTC (rev 58344)
+++ branches/soc-2013-paint/source/blender/editors/interface/interface_handlers.c	2013-07-17 15:44:22 UTC (rev 58345)
@@ -675,6 +675,7 @@
 
 typedef struct uiDragColorHandle {
 	float color[3];
+	bool gamma_corrected;
 } uiDragColorHandle;
 
 typedef struct uiDragToggleHandle {
@@ -812,10 +813,19 @@
 				uiBut *but = ui_but_find_mouse_over(ar, event->x, event->y);
 
 				if (but && but->rnaprop && RNA_property_subtype(but->rnaprop) == PROP_COLOR_GAMMA) {
+					if (!drag_info->gamma_corrected)
+						linearrgb_to_srgb_v3_v3(drag_info->color, drag_info->color);
 					RNA_property_float_set_array(&but->rnapoin, but->rnaprop, drag_info->color);
 					RNA_property_update(C, &but->rnapoin, but->rnaprop);
 				}
 
+				if (but && but->rnaprop && RNA_property_subtype(but->rnaprop) == PROP_COLOR) {
+					if (drag_info->gamma_corrected)
+						srgb_to_linearrgb_v3_v3(drag_info->color, drag_info->color);
+					RNA_property_float_set_array(&but->rnapoin, but->rnaprop, drag_info->color);
+					RNA_property_update(C, &but->rnapoin, but->rnaprop);
+				}
+
 				WM_event_remove_ui_handler(&win->modalhandlers,
 				                           ui_handler_region_drag_color,
 				                           ui_handler_region_drag_color_remove,
@@ -954,12 +964,17 @@
 			/* TODO support more button pointer types */
 			if (but->rnaprop && RNA_property_subtype(but->rnaprop) == PROP_COLOR_GAMMA) {
 				RNA_property_float_get_array(&but->rnapoin, but->rnaprop, drag_info->color);
+				drag_info->gamma_corrected = true;
 				valid = true;
-			} else if (but->pointype == UI_BUT_POIN_FLOAT) {
+			} else if (but->rnaprop && RNA_property_subtype(but->rnaprop) == PROP_COLOR) {
+				RNA_property_float_get_array(&but->rnapoin, but->rnaprop, drag_info->color);
+				drag_info->gamma_corrected = false;
+				valid = true;
+			}else if (but->pointype == UI_BUT_POIN_FLOAT) {
 				copy_v3_v3(drag_info->color, (float *)but->poin);
 				valid = true;
 			} else if (but->pointype == UI_BUT_POIN_CHAR) {
-				rgba_uchar_to_float(drag_info->color, but->poin);
+				rgba_uchar_to_float(drag_info->color, (unsigned char *)but->poin);
 				valid = true;
 			}
 




More information about the Bf-blender-cvs mailing list