diff options
author | Joshua Leung <aligorith@gmail.com> | 2012-11-09 10:36:11 +0400 |
---|---|---|
committer | Joshua Leung <aligorith@gmail.com> | 2012-11-09 10:36:11 +0400 |
commit | 9b91da0d0dea01ef74b317bdaeaf20d19cf7cfd0 (patch) | |
tree | bb17304f56d120c9fb4f07cb4eed06f85d10770e /source/blender/editors | |
parent | 1369e29db01ccbaa5a11add9e888972fde9af7ae (diff) |
Axis Colours are now Themeable
This commit allows you to set the RGB <-> XYZ axis colours used for things like
the mini axis indicator, grid axis indicators, manipulators, transform
constraint indicators, F-Curves (when using XYZ to RGB colouring option), and
perhaps something else I've missed. Previously, these places all used hardcoded
defines (220 * i/j/k), but the readability of these colours was often quite
poor, especially when used with certain themes.
The settings for these colours can be found under the "User Interface" section
of the themes (i.e. same set of colours is used across editors). I could have
made these per editor, but since it's unlikely that these will need to be too
different across editors in practice (+ being easier to version patch), they are
stored under the UI section.
Diffstat (limited to 'source/blender/editors')
-rw-r--r-- | source/blender/editors/animation/anim_draw.c | 2 | ||||
-rw-r--r-- | source/blender/editors/include/UI_resources.h | 6 | ||||
-rw-r--r-- | source/blender/editors/interface/resources.c | 43 | ||||
-rw-r--r-- | source/blender/editors/space_graph/space_graph.c | 6 | ||||
-rw-r--r-- | source/blender/editors/space_view3d/view3d_draw.c | 16 | ||||
-rw-r--r-- | source/blender/editors/transform/transform_manipulator.c | 10 |
6 files changed, 50 insertions, 33 deletions
diff --git a/source/blender/editors/animation/anim_draw.c b/source/blender/editors/animation/anim_draw.c index 01c0a95e200..0f0584ad8fe 100644 --- a/source/blender/editors/animation/anim_draw.c +++ b/source/blender/editors/animation/anim_draw.c @@ -381,7 +381,7 @@ float ANIM_unit_mapping_get_factor(Scene *scene, ID *id, FCurve *fcu, short rest return RAD2DEGF(1.0f); /* radians to degrees */ } } - + /* TODO: other rotation types here as necessary */ } } diff --git a/source/blender/editors/include/UI_resources.h b/source/blender/editors/include/UI_resources.h index e879a01dbfb..f4e921e2fa4 100644 --- a/source/blender/editors/include/UI_resources.h +++ b/source/blender/editors/include/UI_resources.h @@ -215,7 +215,11 @@ enum { TH_NLA_META, TH_NLA_META_SEL, TH_NLA_SOUND, - TH_NLA_SOUND_SEL + TH_NLA_SOUND_SEL, + + TH_AXIS_X, /* X/Y/Z Axis */ + TH_AXIS_Y, + TH_AXIS_Z }; /* XXX WARNING: previous is saved in file, so do not change order! */ diff --git a/source/blender/editors/interface/resources.c b/source/blender/editors/interface/resources.c index e03a2887866..fa5d5806bb8 100644 --- a/source/blender/editors/interface/resources.c +++ b/source/blender/editors/interface/resources.c @@ -236,7 +236,7 @@ const unsigned char *UI_ThemeGetColorPtr(bTheme *btheme, int spacetype, int colo cp = ts->shade2; break; case TH_HILITE: cp = ts->hilite; break; - + case TH_GRID: cp = ts->grid; break; case TH_WIRE: @@ -510,6 +510,13 @@ const unsigned char *UI_ThemeGetColorPtr(bTheme *btheme, int spacetype, int colo case TH_NLA_SOUND_SEL: cp = ts->nla_sound_sel; break; + + case TH_AXIS_X: + cp = btheme->tui.xaxis; break; + case TH_AXIS_Y: + cp = btheme->tui.yaxis; break; + case TH_AXIS_Z: + cp = btheme->tui.zaxis; break; } } } @@ -655,9 +662,14 @@ void ui_theme_init_default(void) /* UI buttons */ ui_widget_color_init(&btheme->tui); + btheme->tui.iconfile[0] = 0; btheme->tui.panel.show_header = FALSE; rgba_char_args_set(btheme->tui.panel.header, 0, 0, 0, 25); + + rgba_char_args_set(btheme->tui.xaxis, 220, 0, 0, 255); + rgba_char_args_set(btheme->tui.yaxis, 0, 220, 0, 255); + rgba_char_args_set(btheme->tui.zaxis, 0, 0, 220, 255); /* Bone Color Sets */ ui_theme_init_boneColorSets(btheme); @@ -1072,7 +1084,6 @@ float UI_GetThemeValuef(int colorid) cp = UI_ThemeGetColorPtr(theme_active, theme_spacetype, colorid); return ((float)cp[0]); - } /* get individual values, not scaled */ @@ -1082,7 +1093,6 @@ int UI_GetThemeValue(int colorid) cp = UI_ThemeGetColorPtr(theme_active, theme_spacetype, colorid); return ((int) cp[0]); - } @@ -1244,21 +1254,20 @@ void UI_ThemeClearColor(int colorid) void UI_make_axis_color(const unsigned char src_col[3], unsigned char dst_col[3], const char axis) { + unsigned char col[3]; + switch (axis) { case 'X': - dst_col[0] = src_col[0] > 219 ? 255 : src_col[0] + 36; - dst_col[1] = src_col[1] < 26 ? 0 : src_col[1] - 26; - dst_col[2] = src_col[2] < 26 ? 0 : src_col[2] - 26; + UI_GetThemeColor3ubv(TH_AXIS_X, col); + UI_GetColorPtrBlendShade3ubv(src_col, col, dst_col, 0.5f, -10); break; case 'Y': - dst_col[0] = src_col[0] < 46 ? 0 : src_col[0] - 36; - dst_col[1] = src_col[1] > 189 ? 255 : src_col[1] + 66; - dst_col[2] = src_col[2] < 46 ? 0 : src_col[2] - 36; + UI_GetThemeColor3ubv(TH_AXIS_Y, col); + UI_GetColorPtrBlendShade3ubv(src_col, col, dst_col, 0.5f, -10); break; case 'Z': - dst_col[0] = src_col[0] < 26 ? 0 : src_col[0] - 26; - dst_col[1] = src_col[1] < 26 ? 0 : src_col[1] - 26; - dst_col[2] = src_col[2] > 209 ? 255 : src_col[2] + 46; + UI_GetThemeColor3ubv(TH_AXIS_Z, col); + UI_GetColorPtrBlendShade3ubv(src_col, col, dst_col, 0.5f, -10); break; default: BLI_assert(!"invalid axis arg"); @@ -1946,6 +1955,16 @@ void init_userdef_do_versions(void) rgba_char_args_set(btheme->tv3d.skin_root, 180, 77, 77, 255); } } + + if (bmain->versionfile < 264 || (bmain->versionfile == 264 && bmain->subversionfile < 9)) { + bTheme *btheme; + + for (btheme = U.themes.first; btheme; btheme = btheme->next) { + rgba_char_args_set(btheme->tui.xaxis, 220, 0, 0, 255); + rgba_char_args_set(btheme->tui.yaxis, 0, 220, 0, 255); + rgba_char_args_set(btheme->tui.zaxis, 0, 0, 220, 255); + } + } /* GL Texture Garbage Collection (variable abused above!) */ if (U.textimeout == 0) { diff --git a/source/blender/editors/space_graph/space_graph.c b/source/blender/editors/space_graph/space_graph.c index f41169b6c39..fa7c6bd472a 100644 --- a/source/blender/editors/space_graph/space_graph.c +++ b/source/blender/editors/space_graph/space_graph.c @@ -563,13 +563,13 @@ static void graph_refresh(const bContext *C, ScrArea *sa) switch (fcu->array_index) { case 0: - col[0] = 1.0f; col[1] = 0.0f; col[2] = 0.0f; + UI_GetThemeColor3fv(TH_AXIS_X, col); break; case 1: - col[0] = 0.0f; col[1] = 1.0f; col[2] = 0.0f; + UI_GetThemeColor3fv(TH_AXIS_Y, col); break; case 2: - col[0] = 0.0f; col[1] = 0.0f; col[2] = 1.0f; + UI_GetThemeColor3fv(TH_AXIS_Z, col); break; default: /* 'unknown' color - bluish so as to not conflict with handles */ diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c index 4d4fad47698..60cf9a3c4c4 100644 --- a/source/blender/editors/space_view3d/view3d_draw.c +++ b/source/blender/editors/space_view3d/view3d_draw.c @@ -545,12 +545,8 @@ static void drawfloor(Scene *scene, View3D *v3d, const char **grid_unit) } } } - - - - - if (v3d->zbuf && scene->obedit) glDepthMask(1); + if (v3d->zbuf && scene->obedit) glDepthMask(1); } static void drawcursor(Scene *scene, ARegion *ar, View3D *v3d) @@ -600,8 +596,8 @@ static void draw_view_axis(RegionView3D *rv3d) mul_qt_v3(rv3d->viewquat, vec); dx = vec[0] * k; dy = vec[1] * k; - - glColor4ub(220, 0, 0, bright); + + UI_ThemeColorShadeAlpha(TH_AXIS_X, 0, bright); glBegin(GL_LINES); glVertex2f(start, start + ydisp); glVertex2f(start + dx, start + dy + ydisp); @@ -620,8 +616,8 @@ static void draw_view_axis(RegionView3D *rv3d) mul_qt_v3(rv3d->viewquat, vec); dx = vec[0] * k; dy = vec[1] * k; - - glColor4ub(0, 220, 0, bright); + + UI_ThemeColorShadeAlpha(TH_AXIS_Y, 0, bright); glBegin(GL_LINES); glVertex2f(start, start + ydisp); glVertex2f(start + dx, start + dy + ydisp); @@ -640,7 +636,7 @@ static void draw_view_axis(RegionView3D *rv3d) dx = vec[0] * k; dy = vec[1] * k; - glColor4ub(30, 30, 220, bright); + UI_ThemeColorShadeAlpha(TH_AXIS_Z, 0, bright); glBegin(GL_LINES); glVertex2f(start, start + ydisp); glVertex2f(start + dx, start + dy + ydisp); diff --git a/source/blender/editors/transform/transform_manipulator.c b/source/blender/editors/transform/transform_manipulator.c index 0780b8f90b5..a3f45acc02e 100644 --- a/source/blender/editors/transform/transform_manipulator.c +++ b/source/blender/editors/transform/transform_manipulator.c @@ -744,7 +744,7 @@ static char axisBlendAngle(float angle) return (char)(255.0f * (angle - 5) / 15.0f); } -/* three colors can be set; +/* three colors can be set: * gray for ghosting * moving: in transform theme color * else the red/green/blue @@ -776,15 +776,13 @@ static void manipulator_setcolor(View3D *v3d, char axis, int colcode, unsigned c } break; case 'X': - col[0] = 220; + UI_GetThemeColor3ubv(TH_AXIS_X, col); break; case 'Y': - col[1] = 220; + UI_GetThemeColor3ubv(TH_AXIS_Y, col); break; case 'Z': - col[0] = 30; - col[1] = 30; - col[2] = 220; + UI_GetThemeColor3ubv(TH_AXIS_Z, col); break; default: BLI_assert(!"invalid axis arg"); |