Eyecandy feature: background gradient for 3D viewport. Enable in user preferences under themes->3D view->Theme Gradient Color. This is only used when use render only is not ticked and for now it may interfere with grid lines. Will investigate how to adjust contrast.

Tidying up of options after advisory session on irc: Move all RNA code
in Themes.

Changes after merging trunk's commit that renders sky
This commit is contained in:
Antony Riakiotakis 2013-01-06 16:45:10 +00:00
parent bb2fd5da01
commit d72a90349a
6 changed files with 82 additions and 7 deletions

@ -223,7 +223,10 @@ enum {
TH_AXIS_X, /* X/Y/Z Axis */
TH_AXIS_Y,
TH_AXIS_Z
TH_AXIS_Z,
TH_BACK_GRAD,
TH_SHOW_BACK_GRAD
};
/* XXX WARNING: previous is saved in file, so do not change order! */

@ -170,6 +170,13 @@ const unsigned char *UI_ThemeGetColorPtr(bTheme *btheme, int spacetype, int colo
else
cp = ts->button;
break;
case TH_BACK_GRAD:
cp = ts->gradients.gradient;
break;
case TH_SHOW_BACK_GRAD:
cp = &setting;
setting = ts->gradients.show_grad;
break;
case TH_TEXT:
if (theme_regionid == RGN_TYPE_WINDOW)
cp = ts->text;

@ -3094,9 +3094,38 @@ static void view3d_main_area_draw_objects(const bContext *C, ARegion *ar, const
}
}
else {
if (UI_GetThemeValue(TH_SHOW_BACK_GRAD)) {
/* only clear depth buffer here */
glClear(GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
glShadeModel(GL_SMOOTH);
glBegin(GL_QUADS);
UI_ThemeColor(TH_BACK_GRAD);
glVertex2f(-1.0, -1.0);
glVertex2f(1.0, -1.0);
UI_ThemeColor(TH_BACK);
glVertex2f(1.0, 1.0);
glVertex2f(-1.0, 1.0);
glEnd();
glShadeModel(GL_FLAT);
glMatrixMode(GL_PROJECTION);
glPopMatrix();
glMatrixMode(GL_MODELVIEW);
glPopMatrix();
} else {
UI_ThemeClearColor(TH_BACK);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
}
}
ED_region_draw_cb_draw(C, ar, REGION_DRAW_PRE_VIEW);

@ -149,6 +149,13 @@ typedef struct uiPanelColors {
int pad;
} uiPanelColors;
typedef struct uiGradientColors {
char gradient[4];
char pad[4];
int show_grad;
int pad2;
} uiGradientColors;
typedef struct ThemeUI {
/* Interface Elements (buttons, menus, icons) */
uiWidgetColors wcol_regular, wcol_tool, wcol_text;
@ -211,6 +218,8 @@ typedef struct ThemeSpace {
/* note, cannot use name 'panel' because of DNA mapping old files */
uiPanelColors panelcolors;
uiGradientColors gradients;
char shade1[4];
char shade2[4];
@ -437,6 +446,7 @@ typedef struct UserDef {
int ndof_flag; /* flags for 3D mouse */
short ogl_multisamples; /* amount of samples for OpenGL FSA, if zero no FSA */
short pad4;
float glalphaclip;

@ -758,6 +758,26 @@ static void rna_def_userdef_theme_ui_panel(BlenderRNA *brna)
RNA_def_property_update(prop, 0, "rna_userdef_update");
}
static void rna_def_userdef_theme_ui_gradient(BlenderRNA *brna)
{
StructRNA *srna;
PropertyRNA *prop;
srna = RNA_def_struct(brna, "ThemeGradientColors", NULL);
RNA_def_struct_sdna(srna, "uiGradientColors");
RNA_def_struct_clear_flag(srna, STRUCT_UNDO);
RNA_def_struct_ui_text(srna, "Theme Gradient Color", "Theme settings for gradient colors");
prop = RNA_def_property(srna, "gradient", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_ui_text(prop, "Gradient Color", "");
RNA_def_property_update(prop, 0, "rna_userdef_update");
prop = RNA_def_property(srna, "show_grad", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_ui_text(prop, "Use Gradient",
"Do a gradient for the background of the viewport working area");
RNA_def_property_update(prop, 0, "rna_userdef_update");
}
static void rna_def_userdef_theme_ui(BlenderRNA *brna)
{
StructRNA *srna;
@ -766,6 +786,7 @@ static void rna_def_userdef_theme_ui(BlenderRNA *brna)
rna_def_userdef_theme_ui_wcol(brna);
rna_def_userdef_theme_ui_wcol_state(brna);
rna_def_userdef_theme_ui_panel(brna);
rna_def_userdef_theme_ui_gradient(brna);
srna = RNA_def_struct(brna, "ThemeUserInterface", NULL);
RNA_def_struct_sdna(srna, "ThemeUI");
@ -1360,6 +1381,11 @@ static void rna_def_userdef_theme_space_view3d(BlenderRNA *brna)
RNA_def_property_array(prop, 3);
RNA_def_property_ui_text(prop, "Skin Root", "");
RNA_def_property_update(prop, 0, "rna_userdef_update");
prop = RNA_def_property(srna, "gradients", PROP_POINTER, PROP_NONE);
RNA_def_property_flag(prop, PROP_NEVER_NULL);
RNA_def_property_ui_text(prop, "Gradient", "");
RNA_def_property_update(prop, 0, "rna_userdef_update");
}