[Bf-blender-cvs] [708b8d8] master: Color pickers:
Antony Riakiotakis
noreply at git.blender.org
Mon Apr 7 18:39:55 CEST 2014
Commit: 708b8d871642d2e624bd5f43bec89e57d7151059
Author: Antony Riakiotakis
Date: Mon Apr 7 19:32:09 2014 +0300
https://developer.blender.org/rB708b8d871642d2e624bd5f43bec89e57d7151059
Color pickers:
* Code Cleanup
* Fix some more color correction cases that were left unattended. (NDOF,
resetting the operation in circle pickers)
===================================================================
M source/blender/editors/interface/interface_handlers.c
===================================================================
diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c
index c69472b..398d901 100644
--- a/source/blender/editors/interface/interface_handlers.c
+++ b/source/blender/editors/interface/interface_handlers.c
@@ -4275,6 +4275,14 @@ static void ui_rgb_to_color_picker_HSVCUBE_compat_v(uiBut *but, const float rgb[
rgb_to_hsv_compat_v(rgb, hsv);
}
+static void ui_rgb_to_color_picker_HSVCUBE_v(uiBut *but, const float rgb[3], float hsv[3])
+{
+ if (but->a1 == UI_GRAD_L_ALT)
+ rgb_to_hsl_v(rgb, hsv);
+ else
+ rgb_to_hsv_v(rgb, hsv);
+}
+
static void ui_color_picker_to_rgb_HSVCUBE_v(uiBut *but, const float hsv[3], float rgb[3])
{
if (but->a1 == UI_GRAD_L_ALT)
@@ -4509,7 +4517,7 @@ static int ui_do_but_HSVCUBE(bContext *C, uiBlock *block, uiBut *but, uiHandleBu
}
/* XXX hardcoded keymap check.... */
else if (event->type == BACKSPACEKEY && event->val == KM_PRESS) {
- if (but->a1 == UI_GRAD_V_ALT) {
+ if (ELEM(but->a1, UI_GRAD_V_ALT, UI_GRAD_L_ALT)) {
int len;
/* reset only value */
@@ -4521,47 +4529,20 @@ static int ui_do_but_HSVCUBE(bContext *C, uiBlock *block, uiBut *but, uiHandleBu
float *hsv = ui_block_hsv_get(but->block);
RNA_property_float_get_default_array(&but->rnapoin, but->rnaprop, def);
- rgb_to_hsv_v(def, def_hsv);
-
+ ui_rgb_to_color_picker_HSVCUBE_v(but, def, def_hsv);
+
ui_get_but_vectorf(but, rgb);
- rgb_to_hsv_compat_v(rgb, hsv);
+ ui_rgb_to_color_picker_HSVCUBE_compat_v(but, rgb, hsv);
def_hsv[0] = hsv[0];
def_hsv[1] = hsv[1];
- hsv_to_rgb_v(def_hsv, rgb);
+ ui_color_picker_to_rgb_HSVCUBE_v(but, def_hsv, rgb);
ui_set_but_vectorf(but, rgb);
- RNA_property_update(C, &but->rnapoin, but->rnaprop);
- }
- return WM_UI_HANDLER_BREAK;
- }
- else if (but->a1 == UI_GRAD_L_ALT) {
- int len;
-
- /* reset only value */
-
- len = RNA_property_array_length(&but->rnapoin, but->rnaprop);
- if (ELEM(len, 3, 4)) {
- float rgb[3], def_hsl[3];
- float def[4];
- float *hsl = ui_block_hsv_get(but->block);
-
- RNA_property_float_get_default_array(&but->rnapoin, but->rnaprop, def);
- rgb_to_hsl_v(def, def_hsl);
-
- ui_get_but_vectorf(but, rgb);
- rgb_to_hsl_compat_v(rgb, hsl);
-
- def_hsl[0] = hsl[0];
- def_hsl[1] = hsl[1];
-
- hsl_to_rgb_v(def_hsl, rgb);
- ui_set_but_vectorf(but, rgb);
-
RNA_property_update(C, &but->rnapoin, but->rnaprop);
+ return WM_UI_HANDLER_BREAK;
}
- return WM_UI_HANDLER_BREAK;
}
}
}
@@ -4599,7 +4580,7 @@ static bool ui_numedit_but_HSVCIRCLE(uiBut *but, uiHandleButtonData *data,
bool changed = true;
float mx_fl, my_fl;
float rgb[3];
- float hsv[3];
+ float *hsv = ui_block_hsv_get(but->block);
bool use_display_colorspace = ui_color_picker_use_display_colorspace(but);
ui_mouse_scale_warp(data, mx, my, &mx_fl, &my_fl, shift);
@@ -4626,8 +4607,6 @@ static bool ui_numedit_but_HSVCIRCLE(uiBut *but, uiHandleButtonData *data,
if (use_display_colorspace)
ui_block_to_display_space_v3(but->block, rgb);
- copy_v3_v3(hsv, ui_block_hsv_get(but->block));
-
ui_rgb_to_color_picker_compat_v(rgb, hsv);
/* exception, when using color wheel in 'locked' value state:
@@ -4694,11 +4673,14 @@ static void ui_ndofedit_but_HSVCIRCLE(uiBut *but, uiHandleButtonData *data,
const enum eSnapType snap, const bool shift)
{
float *hsv = ui_block_hsv_get(but->block);
+ bool use_display_colorspace = ui_color_picker_use_display_colorspace(but);
float rgb[3];
float phi, r /*, sqr */ /* UNUSED */, v[2];
float sensitivity = (shift ? 0.06f : 0.3f) * ndof->dt;
ui_get_but_vectorf(but, rgb);
+ if (use_display_colorspace)
+ ui_block_to_display_space_v3(but->block, rgb);
ui_rgb_to_color_picker_compat_v(rgb, hsv);
/* Convert current color on hue/sat disc to circular coordinates phi, r */
@@ -4749,6 +4731,9 @@ static void ui_ndofedit_but_HSVCIRCLE(uiBut *but, uiHandleButtonData *data,
normalize_v3(data->vec);
mul_v3_fl(data->vec, but->a2);
}
+
+ if (use_display_colorspace)
+ ui_block_to_scene_linear_v3(but->block, data->vec);
ui_set_but_vectorf(but, data->vec);
}
@@ -4801,10 +4786,10 @@ static int ui_do_but_HSVCIRCLE(bContext *C, uiBlock *block, uiBut *but, uiHandle
def = MEM_callocN(sizeof(float) * len, "reset_defaults - float");
RNA_property_float_get_default_array(&but->rnapoin, but->rnaprop, def);
- rgb_to_hsv_v(def, def_hsv);
+ ui_color_picker_to_rgb_v(def, def_hsv);
ui_get_but_vectorf(but, rgb);
- rgb_to_hsv_compat_v(rgb, hsv);
+ ui_rgb_to_color_picker_compat_v(rgb, hsv);
def_hsv[0] = hsv[0];
def_hsv[2] = hsv[2];
More information about the Bf-blender-cvs
mailing list