[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [58767] branches/soc-2013-paint: UI for color ramps that will be used as gradient source for colors

Antony Riakiotakis kalast at gmail.com
Wed Jul 31 15:58:56 CEST 2013


Revision: 58767
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=58767
Author:   psy-fi
Date:     2013-07-31 13:58:55 +0000 (Wed, 31 Jul 2013)
Log Message:
-----------
UI for color ramps that will be used as gradient source for colors
during stroking and gradient filling. Still not functional.

Modified Paths:
--------------
    branches/soc-2013-paint/release/scripts/startup/bl_ui/space_image.py
    branches/soc-2013-paint/release/scripts/startup/bl_ui/space_view3d_toolbar.py
    branches/soc-2013-paint/source/blender/blenkernel/intern/brush.c
    branches/soc-2013-paint/source/blender/blenloader/intern/readfile.c
    branches/soc-2013-paint/source/blender/blenloader/intern/writefile.c
    branches/soc-2013-paint/source/blender/makesdna/DNA_brush_types.h
    branches/soc-2013-paint/source/blender/makesrna/intern/rna_brush.c

Modified: branches/soc-2013-paint/release/scripts/startup/bl_ui/space_image.py
===================================================================
--- branches/soc-2013-paint/release/scripts/startup/bl_ui/space_image.py	2013-07-31 13:56:46 UTC (rev 58766)
+++ branches/soc-2013-paint/release/scripts/startup/bl_ui/space_image.py	2013-07-31 13:58:55 UTC (rev 58767)
@@ -712,6 +712,10 @@
                 col = layout.column(align=True)
                 col.prop(brush, "color", text="")
                 col.prop(brush, "secondary_color", text="")
+                col.prop(brush, "use_gradient")
+                if brush.use_gradient:
+                    col.prop(brush, "gradient_source")
+                    layout.template_color_ramp(brush, "gradient", expand=True)
                 col = layout.column()
                 col.template_ID(toolsettings, "palette", new="palette.new")
                 if toolsettings.palette:

Modified: branches/soc-2013-paint/release/scripts/startup/bl_ui/space_view3d_toolbar.py
===================================================================
--- branches/soc-2013-paint/release/scripts/startup/bl_ui/space_view3d_toolbar.py	2013-07-31 13:56:46 UTC (rev 58766)
+++ branches/soc-2013-paint/release/scripts/startup/bl_ui/space_view3d_toolbar.py	2013-07-31 13:58:55 UTC (rev 58767)
@@ -689,6 +689,10 @@
                 col = layout.column(align=True)
                 col.prop(brush, "color", text="")
                 col.prop(brush, "secondary_color", text="")
+                col.prop(brush, "use_gradient")
+                if brush.use_gradient:
+                    col.prop(brush, "gradient_source")
+                    layout.template_color_ramp(brush, "gradient", expand=True)
                 col = layout.column()
                 col.template_ID(settings, "palette", new="palette.new")
                 if settings.palette:

Modified: branches/soc-2013-paint/source/blender/blenkernel/intern/brush.c
===================================================================
--- branches/soc-2013-paint/source/blender/blenkernel/intern/brush.c	2013-07-31 13:56:46 UTC (rev 58766)
+++ branches/soc-2013-paint/source/blender/blenkernel/intern/brush.c	2013-07-31 13:58:55 UTC (rev 58767)
@@ -198,6 +198,9 @@
 	BKE_previewimg_free(&(brush->preview));
 
 	curvemapping_free(brush->curve);
+
+	if (brush->gradient)
+		MEM_freeN(brush->gradient);
 }
 
 static void extern_local_brush(Brush *brush)

Modified: branches/soc-2013-paint/source/blender/blenloader/intern/readfile.c
===================================================================
--- branches/soc-2013-paint/source/blender/blenloader/intern/readfile.c	2013-07-31 13:56:46 UTC (rev 58766)
+++ branches/soc-2013-paint/source/blender/blenloader/intern/readfile.c	2013-07-31 13:58:55 UTC (rev 58767)
@@ -1830,6 +1830,8 @@
 
 	/* fallof curve */
 	brush->curve = newdataadr(fd, brush->curve);
+	brush->gradient = newdataadr(fd, brush->gradient);
+
 	if (brush->curve)
 		direct_link_curvemapping(fd, brush->curve);
 	else

Modified: branches/soc-2013-paint/source/blender/blenloader/intern/writefile.c
===================================================================
--- branches/soc-2013-paint/source/blender/blenloader/intern/writefile.c	2013-07-31 13:56:46 UTC (rev 58766)
+++ branches/soc-2013-paint/source/blender/blenloader/intern/writefile.c	2013-07-31 13:58:55 UTC (rev 58767)
@@ -2851,6 +2851,8 @@
 			
 			if (brush->curve)
 				write_curvemapping(wd, brush->curve);
+			if (brush->curve)
+				writestruct(wd, DATA, "ColorBand", 1, brush->gradient);
 		}
 	}
 }

Modified: branches/soc-2013-paint/source/blender/makesdna/DNA_brush_types.h
===================================================================
--- branches/soc-2013-paint/source/blender/makesdna/DNA_brush_types.h	2013-07-31 13:56:46 UTC (rev 58766)
+++ branches/soc-2013-paint/source/blender/makesdna/DNA_brush_types.h	2013-07-31 13:58:55 UTC (rev 58767)
@@ -62,6 +62,7 @@
 
 	struct ImBuf *icon_imbuf;
 	PreviewImage *preview;
+	struct ColorBand *gradient;	/* color gradient */
 	char icon_filepath[1024]; /* 1024 = FILE_MAX */
 
 	float normal_weight;
@@ -90,7 +91,7 @@
 	float plane_offset;     /* offset for plane brushes (clay, flatten, fill, scrape) */
 
 	float gravity_factor;   /* gravity factor for sculpting */
-	int pad;
+	int gradient_source;    /* source for color gradient application */
 
 	char sculpt_tool;       /* active sculpt tool */
 	char vertexpaint_tool;  /* active vertex/weight paint blend mode (poorly named) */
@@ -141,6 +142,12 @@
 	int pad;
 } Palette;
 
+/* Brush.gradient_source */
+typedef enum BrushGradientSource {
+	BRUSH_GRADIENT_PRESSURE = 0, /* gradient from pressure */
+	BRUSH_GRADIENT_SPACING = 1 /* gradient from spacing */
+} BrushGradientSource;
+
 /* Brush.flag */
 typedef enum BrushFlags {
 	BRUSH_AIRBRUSH = (1 << 0),
@@ -163,7 +170,7 @@
 	BRUSH_SPACE_ATTEN = (1 << 18),
 	BRUSH_ADAPTIVE_SPACE = (1 << 19),
 	BRUSH_LOCK_SIZE = (1 << 20),
-//	BRUSH_TEXTURE_OVERLAY = (1 << 21), /* obsolete, use overlay_flags |= BRUSH_OVERLAY_PRIMARY instead */
+	BRUSH_USE_GRADIENT = (1 << 21),
 	BRUSH_EDGE_TO_EDGE = (1 << 22),
 	BRUSH_DRAG_DOT = (1 << 23),
 	BRUSH_INVERSE_SMOOTH_PRESSURE = (1 << 24),

Modified: branches/soc-2013-paint/source/blender/makesrna/intern/rna_brush.c
===================================================================
--- branches/soc-2013-paint/source/blender/makesrna/intern/rna_brush.c	2013-07-31 13:56:46 UTC (rev 58766)
+++ branches/soc-2013-paint/source/blender/makesrna/intern/rna_brush.c	2013-07-31 13:58:55 UTC (rev 58767)
@@ -401,6 +401,17 @@
 	brush->size = value;
 }
 
+static void rna_Brush_use_gradient_set(PointerRNA *ptr, int value)
+{
+	Brush *br = (Brush *)ptr->data;
+
+	if (value) br->flag |= BRUSH_USE_GRADIENT;
+	else br->flag &= ~BRUSH_USE_GRADIENT;
+
+	if ((br->flag & BRUSH_USE_GRADIENT) && br->gradient == NULL)
+		br->gradient = add_colorband(false);
+}
+
 static void rna_Brush_set_unprojected_radius(PointerRNA *ptr, float value)
 {
 	Brush *brush = ptr->data;
@@ -724,6 +735,12 @@
 		{0, NULL, 0, NULL, NULL}
 	};
 
+	static EnumPropertyItem brush_gradient_items[] = {
+		{BRUSH_GRADIENT_PRESSURE, "PRESSURE", 0, "Pressure", ""},
+		{BRUSH_GRADIENT_SPACING, "SPACING", 0, "Spacing", ""},
+		{0, NULL, 0, NULL, NULL}
+	};
+
 	static EnumPropertyItem brush_mask_pressure_items[] = {
 		{0, "NONE", 0, "Off", ""},
 		{BRUSH_MASK_PRESSURE_RAMP, "RAMP", ICON_STYLUS_PRESSURE, "Ramp", ""},
@@ -996,7 +1013,13 @@
 	RNA_def_property_ui_icon(prop, ICON_STYLUS_PRESSURE, 0);
 	RNA_def_property_ui_text(prop, "Size Pressure", "Enable tablet pressure sensitivity for size");
 	RNA_def_property_update(prop, 0, "rna_Brush_update");
-	
+
+	prop = RNA_def_property(srna, "use_gradient", PROP_BOOLEAN, PROP_NONE);
+	RNA_def_property_boolean_sdna(prop, NULL, "flag", BRUSH_USE_GRADIENT);
+	RNA_def_property_boolean_funcs(prop, NULL, "rna_Brush_use_gradient_set");
+	RNA_def_property_ui_text(prop, "Use Gradient", "Use Gradient by utilizing a sampling method");
+	RNA_def_property_update(prop, 0, "rna_Brush_update");
+
 	prop = RNA_def_property(srna, "use_pressure_jitter", PROP_BOOLEAN, PROP_NONE);
 	RNA_def_property_boolean_sdna(prop, NULL, "flag", BRUSH_JITTER_PRESSURE);
 	RNA_def_property_ui_icon(prop, ICON_STYLUS_PRESSURE, 0);
@@ -1117,6 +1140,18 @@
 	RNA_def_property_ui_text(prop, "Curve", "Editable falloff curve");
 	RNA_def_property_update(prop, 0, "rna_Brush_update");
 
+	prop = RNA_def_property(srna, "gradient", PROP_POINTER, PROP_NEVER_NULL);
+	RNA_def_property_pointer_sdna(prop, NULL, "gradient");
+	RNA_def_property_struct_type(prop, "ColorRamp");
+	RNA_def_property_ui_text(prop, "Gradient", "");
+	RNA_def_property_update(prop, 0, "rna_Brush_update");
+
+	/* gradient source */
+	prop = RNA_def_property(srna, "gradient_source", PROP_ENUM, PROP_NONE);
+	RNA_def_property_enum_items(prop, brush_gradient_items);
+	RNA_def_property_ui_text(prop, "Gradient Source", "");
+	RNA_def_property_update(prop, 0, "rna_Brush_update");
+
 	/* overlay flags */
 	prop = RNA_def_property(srna, "use_primary_overlay", PROP_BOOLEAN, PROP_NONE);
 	RNA_def_property_boolean_sdna(prop, NULL, "overlay_flags", BRUSH_OVERLAY_PRIMARY);




More information about the Bf-blender-cvs mailing list