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
path: root/source
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2014-02-12 10:22:41 +0400
committerCampbell Barton <ideasman42@gmail.com>2014-02-12 14:05:24 +0400
commitbc41d255cbe88875b1e5a6f32a135ba4dd89d3f7 (patch)
treef60f527d5a213b9088f21a0319f7df4688df6f2d /source
parente2089e1406b50446c0c0accde28650e048b09c54 (diff)
NDOF: minor color picker improvements
- swap Z/Y axis so Z changes hue and X/Y change location. this way you can use ndof like a joystick and Z rotation like a dial for the hue. - change sensitivity when shift is held to be 1/5th
Diffstat (limited to 'source')
-rw-r--r--source/blender/editors/interface/interface_handlers.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c
index 4665752b7b3..c3d83438968 100644
--- a/source/blender/editors/interface/interface_handlers.c
+++ b/source/blender/editors/interface/interface_handlers.c
@@ -4626,7 +4626,7 @@ static void ui_ndofedit_but_HSVCIRCLE(uiBut *but, uiHandleButtonData *data,
float *hsv = ui_block_hsv_get(but->block);
float rgb[3];
float phi, r /*, sqr */ /* UNUSED */, v[2];
- float sensitivity = (shift ? 0.15f : 0.3f) * ndof->dt;
+ float sensitivity = (shift ? 0.06f : 0.3f) * ndof->dt;
ui_get_but_vectorf(but, rgb);
rgb_to_hsv_compat_v(rgb, hsv);
@@ -4641,20 +4641,18 @@ static void ui_ndofedit_but_HSVCIRCLE(uiBut *but, uiHandleButtonData *data,
v[1] = r * sinf(phi);
/* Use ndof device y and x rotation to move the vector in 2d space */
- v[0] += ndof->ry * sensitivity;
+ v[0] += ndof->rz * sensitivity;
v[1] += ndof->rx * sensitivity;
/* convert back to polar coords on circle */
phi = atan2f(v[0], v[1]) / (2.0f * (float)M_PI) + 0.5f;
/* use ndof z rotation to additionally rotate hue */
- phi -= ndof->rz * sensitivity * 0.5f;
-
+ phi += ndof->ry * sensitivity * 0.5f;
r = len_v2(v);
- CLAMP(r, 0.0f, 1.0f);
-
+
/* convert back to hsv values, in range [0,1] */
- hsv[0] = fmodf(phi, 1.0f);
+ hsv[0] = phi;
hsv[1] = r;
/* exception, when using color wheel in 'locked' value state:
@@ -4667,6 +4665,8 @@ static void ui_ndofedit_but_HSVCIRCLE(uiBut *but, uiHandleButtonData *data,
ui_color_snap_hue(snap, &hsv[0]);
}
+ hsv_clamp_v(hsv, FLT_MAX);
+
hsv_to_rgb_v(hsv, data->vec);
if ((but->flag & UI_BUT_VEC_SIZE_LOCK) && (data->vec[0] || data->vec[1] || data->vec[2])) {