Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntony Riakiotakis <kalast@gmail.com>2014-04-07 20:32:09 +0400
committerAntony Riakiotakis <kalast@gmail.com>2014-04-07 20:35:29 +0400
commit708b8d871642d2e624bd5f43bec89e57d7151059 (patch)
treec3bcc589366ca6b8fbdbc7242241c6fff1aaeaeb /source/blender
parent6eb20ca048e65871f12e8111512b69bacc599488 (diff)
Color pickers:
* Code Cleanup * Fix some more color correction cases that were left unattended. (NDOF, resetting the operation in circle pickers)
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/editors/interface/interface_handlers.c61
1 files changed, 23 insertions, 38 deletions
diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c
index c69472b74b0..398d901c950 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];