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:
authorJoshua Leung <aligorith@gmail.com>2012-11-09 10:36:11 +0400
committerJoshua Leung <aligorith@gmail.com>2012-11-09 10:36:11 +0400
commit9b91da0d0dea01ef74b317bdaeaf20d19cf7cfd0 (patch)
treebb17304f56d120c9fb4f07cb4eed06f85d10770e /source/blender
parent1369e29db01ccbaa5a11add9e888972fde9af7ae (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')
-rw-r--r--source/blender/blenkernel/BKE_blender.h2
-rw-r--r--source/blender/editors/animation/anim_draw.c2
-rw-r--r--source/blender/editors/include/UI_resources.h6
-rw-r--r--source/blender/editors/interface/resources.c43
-rw-r--r--source/blender/editors/space_graph/space_graph.c6
-rw-r--r--source/blender/editors/space_view3d/view3d_draw.c16
-rw-r--r--source/blender/editors/transform/transform_manipulator.c10
-rw-r--r--source/blender/makesdna/DNA_userdef_types.h3
-rw-r--r--source/blender/makesrna/intern/rna_userdef.c19
9 files changed, 72 insertions, 35 deletions
diff --git a/source/blender/blenkernel/BKE_blender.h b/source/blender/blenkernel/BKE_blender.h
index e7033d8648d..3c210877de7 100644
--- a/source/blender/blenkernel/BKE_blender.h
+++ b/source/blender/blenkernel/BKE_blender.h
@@ -42,7 +42,7 @@ extern "C" {
* and keep comment above the defines.
* Use STRINGIFY() rather than defining with quotes */
#define BLENDER_VERSION 264
-#define BLENDER_SUBVERSION 8
+#define BLENDER_SUBVERSION 9
/* 262 was the last editmesh release but it has compatibility code for bmesh data */
#define BLENDER_MINVERSION 262
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");
diff --git a/source/blender/makesdna/DNA_userdef_types.h b/source/blender/makesdna/DNA_userdef_types.h
index 2256968da56..caa7c880aee 100644
--- a/source/blender/makesdna/DNA_userdef_types.h
+++ b/source/blender/makesdna/DNA_userdef_types.h
@@ -162,7 +162,8 @@ typedef struct ThemeUI {
char iconfile[256]; // FILE_MAXFILE length
float icon_alpha;
- float pad;
+ /* Axis Colors */
+ char xaxis[4], yaxis[4], zaxis[4];
} ThemeUI;
/* try to put them all in one, if needed a special struct can be created as well
diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c
index fe179d8486d..11e04cdd281 100644
--- a/source/blender/makesrna/intern/rna_userdef.c
+++ b/source/blender/makesrna/intern/rna_userdef.c
@@ -770,6 +770,25 @@ static void rna_def_userdef_theme_ui(BlenderRNA *brna)
prop = RNA_def_property(srna, "icon_alpha", PROP_FLOAT, PROP_FACTOR);
RNA_def_property_ui_text(prop, "Icon Alpha", "Transparency of icons in the interface, to reduce contrast");
RNA_def_property_update(prop, 0, "rna_userdef_update");
+
+ /* axis */
+ prop = RNA_def_property(srna, "axis_x", PROP_FLOAT, PROP_COLOR_GAMMA);
+ RNA_def_property_float_sdna(prop, NULL, "xaxis");
+ RNA_def_property_array(prop, 3);
+ RNA_def_property_ui_text(prop, "X Axis", "");
+ RNA_def_property_update(prop, 0, "rna_userdef_update");
+
+ prop = RNA_def_property(srna, "axis_y", PROP_FLOAT, PROP_COLOR_GAMMA);
+ RNA_def_property_float_sdna(prop, NULL, "yaxis");
+ RNA_def_property_array(prop, 3);
+ RNA_def_property_ui_text(prop, "Y Axis", "");
+ RNA_def_property_update(prop, 0, "rna_userdef_update");
+
+ prop = RNA_def_property(srna, "axis_z", PROP_FLOAT, PROP_COLOR_GAMMA);
+ RNA_def_property_float_sdna(prop, NULL, "zaxis");
+ RNA_def_property_array(prop, 3);
+ RNA_def_property_ui_text(prop, "Z Axis", "");
+ RNA_def_property_update(prop, 0, "rna_userdef_update");
}
static void rna_def_userdef_theme_space_generic(BlenderRNA *brna)