Make options for background gradient more organized.
authorAntony Riakiotakis <kalast@gmail.com>
Mon, 7 Jan 2013 15:42:42 +0000 (15:42 +0000)
committerAntony Riakiotakis <kalast@gmail.com>
Mon, 7 Jan 2013 15:42:42 +0000 (15:42 +0000)
This was difficult to do because we group theme colours and display them
together in user preferences. To make the background options more
presentable and keep them grouped and separate, I needed to group the
two gradient colours somehow. I added a separate ThemeSpaceGradient RNA
struct as opposed to ThemeSpaceGeneric. This struct is the same as
ThemeSpaceGeneric but it lacks the window background option (which does
nothing now) and includes the UiGradient struct which now has both
gradient colours. I modified the clear functions to use a new high
colour from the gradient. Now all options appear grouped and any other
editor that may use a gradient for the window background may do so.

Also corrected incorrect MAIN_VERSION_ATLEAST macro, it would not detect
versions correctly

source/blender/blenkernel/BKE_blender.h
source/blender/blenkernel/BKE_main.h
source/blender/editors/include/UI_resources.h
source/blender/editors/interface/resources.c
source/blender/editors/space_view3d/view3d_draw.c
source/blender/makesdna/DNA_userdef_types.h
source/blender/makesrna/RNA_access.h
source/blender/makesrna/intern/rna_userdef.c

index 10528f1b27084b3139482c91d64c2c4f5a76156d..dc3f8dfb9644e1fd442593ef1f6e7d51eb57ab9d 100644 (file)
@@ -42,7 +42,7 @@ extern "C" {
  * and keep comment above the defines.
  * Use STRINGIFY() rather than defining with quotes */
 #define BLENDER_VERSION         265
-#define BLENDER_SUBVERSION      5
+#define BLENDER_SUBVERSION      6
 
 /* 262 was the last editmesh release but it has compatibility code for bmesh data */
 #define BLENDER_MINVERSION      262
index da0cba422c3e3ff7491bdba9a320b5d1b5f079d4..1b7b29432e22a105eddd39f06f09eac83f3fcbd3 100644 (file)
@@ -93,7 +93,7 @@ typedef struct Main {
 } Main;
 
 #define MAIN_VERSION_ATLEAST(main, ver, subver) \
-       ((main)->versionfile >= (ver) || (main->versionfile == (ver) && (main)->subversionfile >= (subver)))
+       ((main)->versionfile > (ver) || (main->versionfile == (ver) && (main)->subversionfile >= (subver)))
 
 #ifdef __cplusplus
 }
index 0ddb8830c2aabaa8b0ab771c21c73a731c4f73fa..7e7be17d7c6b95703aab8df64b79bae04173430f 100644 (file)
@@ -225,7 +225,8 @@ enum {
        TH_AXIS_Y,
        TH_AXIS_Z,
 
-       TH_BACK_GRAD,
+       TH_LOW_GRAD,
+       TH_HIGH_GRAD,
        TH_SHOW_BACK_GRAD
 };
 /* XXX WARNING: previous is saved in file, so do not change order! */
index 088715218efc6127faaac31f78933efd1cc30f39..0627fad7227fe9b00f84ae1f8d6f1c35131af414 100644 (file)
@@ -170,9 +170,12 @@ const unsigned char *UI_ThemeGetColorPtr(bTheme *btheme, int spacetype, int colo
                                        else
                                                cp = ts->button;
                                        break;
-                               case TH_BACK_GRAD:
+                               case TH_LOW_GRAD:
                                        cp = ts->gradients.gradient;
                                        break;
+                               case TH_HIGH_GRAD:
+                                       cp = ts->gradients.high_gradient;
+                                       break;
                                case TH_SHOW_BACK_GRAD:
                                        cp = &setting;
                                        setting = ts->gradients.show_grad;
@@ -780,6 +783,7 @@ void ui_theme_init_default(void)
 
        rgba_char_args_set(btheme->tv3d.skin_root, 180, 77, 77, 255);
        rgba_char_args_set(btheme->tv3d.gradients.gradient, 0, 0, 0, 0);
+       rgba_char_args_set(btheme->tv3d.gradients.high_gradient, 0.225, 0.225, 0.225, 1.0);
        btheme->tv3d.gradients.show_grad = FALSE;
 
        /* space buttons */
@@ -2100,7 +2104,7 @@ void init_userdef_do_versions(void)
                }
        }
 
-       if (!MAIN_VERSION_ATLEAST(bmain, 266, 4)) {
+       if (!MAIN_VERSION_ATLEAST(bmain, 265, 4)) {
                bTheme *btheme;
                for (btheme = U.themes.first; btheme; btheme = btheme->next) {
                        rgba_char_args_set(btheme->text.syntaxd,    50, 0, 140, 255);   /* Decorator/Preprocessor Dir.  Blue-purple */
@@ -2109,6 +2113,13 @@ void init_userdef_do_versions(void)
                }
        }
 
+       if (!MAIN_VERSION_ATLEAST(bmain, 265, 6)) {
+               bTheme *btheme;
+               for (btheme = U.themes.first; btheme; btheme = btheme->next) {
+                       copy_v4_v4_char(btheme->tv3d.gradients.high_gradient, btheme->tv3d.back);
+               }
+       }
+
        if (U.pixelsize == 0.0f)
                U.pixelsize = 1.0f;
        
index 34a9529d77747326baa692c158f07cf4a90dfa3b..740bf797a6bcb012e4569f8700ae30b89b67bd5e 100644 (file)
@@ -3108,10 +3108,10 @@ static void view3d_main_area_clear(Scene *scene, View3D *v3d, ARegion *ar)
 
                        glShadeModel(GL_SMOOTH);
                        glBegin(GL_QUADS);
-                       UI_ThemeColor(TH_BACK_GRAD);
+                       UI_ThemeColor(TH_LOW_GRAD);
                        glVertex2f(-1.0, -1.0);
                        glVertex2f(1.0, -1.0);
-                       UI_ThemeColor(TH_BACK);
+                       UI_ThemeColor(TH_HIGH_GRAD);
                        glVertex2f(1.0, 1.0);
                        glVertex2f(-1.0, 1.0);
                        glEnd();
@@ -3124,7 +3124,7 @@ static void view3d_main_area_clear(Scene *scene, View3D *v3d, ARegion *ar)
                        glPopMatrix();
                }
                else {
-                       UI_ThemeClearColor(TH_BACK);
+                       UI_ThemeClearColor(TH_HIGH_GRAD);
                        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
                }
        }
index d6da03040cc322c4ae6e919247a41b2e835abac4..3027a3abd7d817413a5e41f3ce7505e922b432bc 100644 (file)
@@ -151,7 +151,7 @@ typedef struct uiPanelColors {
 
 typedef struct uiGradientColors {
        char gradient[4];
-       char pad[4];
+       char high_gradient[4];
        int show_grad;
        int pad2;
 } uiGradientColors;
index e2f72ca339de54da8bb954fc850091e8708d4eb2..29adb8ff5999b90290e8e051a79fe5c7971daf65 100644 (file)
@@ -571,6 +571,7 @@ extern StructRNA RNA_ThemeOutliner;
 extern StructRNA RNA_ThemeProperties;
 extern StructRNA RNA_ThemeSequenceEditor;
 extern StructRNA RNA_ThemeSpaceGeneric;
+extern StructRNA RNA_ThemeSpaceGradient;
 extern StructRNA RNA_ThemeSpaceListGeneric;
 extern StructRNA RNA_ThemeStyle;
 extern StructRNA RNA_ThemeTextEditor;
index 83162bec7f42d03ec108e20745a739ea8158755f..07390958bd98d7f65dffcc981c45585b9885bfe3 100644 (file)
@@ -345,6 +345,11 @@ static PointerRNA rna_Theme_space_generic_get(PointerRNA *ptr)
        return rna_pointer_inherit_refine(ptr, &RNA_ThemeSpaceGeneric, ptr->data);
 }
 
+static PointerRNA rna_Theme_space_gradient_get(PointerRNA *ptr)
+{
+       return rna_pointer_inherit_refine(ptr, &RNA_ThemeSpaceGradient, ptr->data);
+}
+
 static PointerRNA rna_Theme_space_list_generic_get(PointerRNA *ptr)
 {
        return rna_pointer_inherit_refine(ptr, &RNA_ThemeSpaceListGeneric, ptr->data);
@@ -766,16 +771,22 @@ static void rna_def_userdef_theme_ui_gradient(BlenderRNA *brna)
        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");
+       RNA_def_struct_ui_text(srna, "Theme Background Color", "Theme settings for background colors and gradient");
 
        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");
+
+       prop = RNA_def_property(srna, "gradient", PROP_FLOAT, PROP_COLOR_GAMMA);
+       RNA_def_property_array(prop, 3);
+       RNA_def_property_ui_text(prop, "Gradient Low", "");
+       RNA_def_property_update(prop, 0, "rna_userdef_update");
+
+       prop = RNA_def_property(srna, "high_gradient", PROP_FLOAT, PROP_COLOR_GAMMA);
+       RNA_def_property_array(prop, 3);
+       RNA_def_property_ui_text(prop, "Gradient High/Off", "");
+       RNA_def_property_update(prop, 0, "rna_userdef_update");
 }
 
 static void rna_def_userdef_theme_ui(BlenderRNA *brna)
@@ -997,6 +1008,83 @@ static void rna_def_userdef_theme_space_generic(BlenderRNA *brna)
 /*     } */
 }
 
+static void rna_def_userdef_theme_space_gradient(BlenderRNA *brna)
+{
+       StructRNA *srna;
+       PropertyRNA *prop;
+
+       srna = RNA_def_struct(brna, "ThemeSpaceGradient", NULL);
+       RNA_def_struct_sdna(srna, "ThemeSpace");
+       RNA_def_struct_ui_text(srna, "Theme Space Settings", "");
+
+       /* window */
+       prop = RNA_def_property(srna, "title", PROP_FLOAT, PROP_COLOR_GAMMA);
+       RNA_def_property_array(prop, 3);
+       RNA_def_property_ui_text(prop, "Title", "");
+       RNA_def_property_update(prop, 0, "rna_userdef_update");
+
+       prop = RNA_def_property(srna, "text", PROP_FLOAT, PROP_COLOR_GAMMA);
+       RNA_def_property_array(prop, 3);
+       RNA_def_property_ui_text(prop, "Text", "");
+       RNA_def_property_update(prop, 0, "rna_userdef_update");
+
+       prop = RNA_def_property(srna, "text_hi", PROP_FLOAT, PROP_COLOR_GAMMA);
+       RNA_def_property_array(prop, 3);
+       RNA_def_property_ui_text(prop, "Text Highlight", "");
+       RNA_def_property_update(prop, 0, "rna_userdef_update");
+
+       /* header */
+       prop = RNA_def_property(srna, "header", PROP_FLOAT, PROP_COLOR_GAMMA);
+       RNA_def_property_array(prop, 3);
+       RNA_def_property_ui_text(prop, "Header", "");
+       RNA_def_property_update(prop, 0, "rna_userdef_update");
+
+       prop = RNA_def_property(srna, "header_text", PROP_FLOAT, PROP_COLOR_GAMMA);
+       RNA_def_property_array(prop, 3);
+       RNA_def_property_ui_text(prop, "Header Text", "");
+       RNA_def_property_update(prop, 0, "rna_userdef_update");
+
+       prop = RNA_def_property(srna, "header_text_hi", PROP_FLOAT, PROP_COLOR_GAMMA);
+       RNA_def_property_array(prop, 3);
+       RNA_def_property_ui_text(prop, "Header Text Highlight", "");
+       RNA_def_property_update(prop, 0, "rna_userdef_update");
+
+       /* panel settings */
+       prop = RNA_def_property(srna, "panelcolors", PROP_POINTER, PROP_NONE);
+       RNA_def_property_flag(prop, PROP_NEVER_NULL);
+       RNA_def_property_ui_text(prop, "Panel Colors", "");
+       RNA_def_property_update(prop, 0, "rna_userdef_update");
+
+       /* gradient/background settings */
+       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 Colors", "");
+       RNA_def_property_update(prop, 0, "rna_userdef_update");
+
+       /* buttons */
+/*     if (! ELEM(spacetype, SPACE_BUTS, SPACE_OUTLINER)) { */
+       prop = RNA_def_property(srna, "button", PROP_FLOAT, PROP_COLOR_GAMMA);
+       RNA_def_property_array(prop, 4);
+       RNA_def_property_ui_text(prop, "Region Background", "");
+       RNA_def_property_update(prop, 0, "rna_userdef_update");
+
+       prop = RNA_def_property(srna, "button_title", PROP_FLOAT, PROP_COLOR_GAMMA);
+       RNA_def_property_array(prop, 3);
+       RNA_def_property_ui_text(prop, "Region Text Titles", "");
+       RNA_def_property_update(prop, 0, "rna_userdef_update");
+
+       prop = RNA_def_property(srna, "button_text", PROP_FLOAT, PROP_COLOR_GAMMA);
+       RNA_def_property_array(prop, 3);
+       RNA_def_property_ui_text(prop, "Region Text", "");
+       RNA_def_property_update(prop, 0, "rna_userdef_update");
+
+       prop = RNA_def_property(srna, "button_text_hi", PROP_FLOAT, PROP_COLOR_GAMMA);
+       RNA_def_property_array(prop, 3);
+       RNA_def_property_ui_text(prop, "Region Text Highlight", "");
+       RNA_def_property_update(prop, 0, "rna_userdef_update");
+/*     } */
+}
+
 /* list / channels */
 static void rna_def_userdef_theme_space_list_generic(BlenderRNA *brna)
 {
@@ -1039,6 +1127,17 @@ static void rna_def_userdef_theme_spaces_main(StructRNA *srna)
        RNA_def_property_ui_text(prop, "Theme Space", "Settings for space");
 }
 
+static void rna_def_userdef_theme_spaces_gradient(StructRNA *srna)
+{
+       PropertyRNA *prop;
+
+       prop = RNA_def_property(srna, "space", PROP_POINTER, PROP_NONE);
+       RNA_def_property_flag(prop, PROP_NEVER_NULL);
+       RNA_def_property_struct_type(prop, "ThemeSpaceGradient");
+       RNA_def_property_pointer_funcs(prop, "rna_Theme_space_gradient_get", NULL, NULL, NULL);
+       RNA_def_property_ui_text(prop, "Theme Space", "Settings for space");
+}
+
 static void rna_def_userdef_theme_spaces_list_main(StructRNA *srna)
 {
        PropertyRNA *prop;
@@ -1243,7 +1342,7 @@ static void rna_def_userdef_theme_space_view3d(BlenderRNA *brna)
        RNA_def_struct_clear_flag(srna, STRUCT_UNDO);
        RNA_def_struct_ui_text(srna, "Theme 3D View", "Theme settings for the 3D View");
 
-       rna_def_userdef_theme_spaces_main(srna);
+       rna_def_userdef_theme_spaces_gradient(srna);
 
        prop = RNA_def_property(srna, "grid", PROP_FLOAT, PROP_COLOR_GAMMA);
        RNA_def_property_array(prop, 3);
@@ -1381,11 +1480,6 @@ 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");
 }
 
 
@@ -2562,6 +2656,7 @@ static void rna_def_userdef_dothemes(BlenderRNA *brna)
        rna_def_userdef_theme_ui(brna);
 
        rna_def_userdef_theme_space_generic(brna);
+       rna_def_userdef_theme_space_gradient(brna);
        rna_def_userdef_theme_space_list_generic(brna);
        
        rna_def_userdef_theme_space_view3d(brna);