Commit: b74e90656ebc9a35d0d1bc6aff03cb0274cd5c30
Author: Antonio Vazquez
Date:   Thu Mar 8 19:50:24 2018 +0100
Branches: greasepencil-object
https://developer.blender.org/rBb74e90656ebc9a35d0d1bc6aff03cb0274cd5c30

Reorganize Brush parameters panel

As we have a lot of options, the panel required a reorganization and clarify 
what parameters affect after the stroke is created.

Also added options to enable/disable effects like smooth without changing the 
values.

===================================================================

M       release/scripts/startup/bl_ui/space_view3d_toolbar.py
M       source/blender/editors/gpencil/gpencil_paint.c
M       source/blender/makesdna/DNA_gpencil_types.h
M       source/blender/makesrna/intern/rna_scene.c

===================================================================

diff --git a/release/scripts/startup/bl_ui/space_view3d_toolbar.py 
b/release/scripts/startup/bl_ui/space_view3d_toolbar.py
index bcc9641f553..0a12a967ed0 100644
--- a/release/scripts/startup/bl_ui/space_view3d_toolbar.py
+++ b/release/scripts/startup/bl_ui/space_view3d_toolbar.py
@@ -2155,47 +2155,55 @@ class VIEW3D_PT_tools_grease_pencil_brush_option(Panel):
         layout = self.layout
         brush = context.active_gpencil_brush
         if brush is not None:
-            # XXX: Is this post-drawing, or while drawing?
             col = layout.column(align=True)
-            col.label(text="Stroke Quality:")
-            col.prop(brush, "pen_smooth_factor")
-            col.prop(brush, "pen_smooth_steps")
-
-            col = layout.column(align=True)
-            col.label(text="Thickness:")
-            col.prop(brush, "pen_thick_smooth_factor")
-            col.prop(brush, "pen_thick_smooth_steps")
-
+            row = col.row()
+            row.prop(brush, "input_samples")
+            row.prop(brush, "active_smooth_factor")
             col.separator()
-            row = col.row(align=False)
-            row.prop(brush, "pen_subdivision_steps")
-            row.prop(brush, "random_subdiv", text="Randomness", slider=True)
-
-            col = layout.column(align=True)
-            col.label(text="Settings:")
-            col.prop(brush, "random_press", slider=True)
-
-            row = layout.row(align=True)
-            row.prop(brush, "jitter", slider=True)
-            row.prop(brush, "use_jitter_pressure", text="", 
icon='STYLUS_PRESSURE')
-            row = layout.row(align=True) # FIXME: When not aligned, they're 
too small, but looks ugly when aligned
-            row.prop(brush, "angle", slider=True)
-            row.prop(brush, "angle_factor", text="Factor", slider=True)
 
             if brush.type == 'DRAW':
-                row.separator()
-                col = layout.column(align=True)
                 col.prop(brush, "use_stabilizer", text="Stabilizer")
                 if brush.use_stabilizer:
+                    col.separator()
                     col.prop(brush, "lazy_radius", text="Distance")
                     col.prop(brush, "lazy_factor", slider=True)
+                    col.separator()
 
-            row = layout.row(align=True)
-            row.prop(brush, "uv_random", slider=True)
+            col.prop(brush, "enable_random", text="Random Settings")
+            if brush.enable_random is True:
+                col.separator()
+                col.prop(brush, "uv_random", slider=True)
 
-            row = layout.row()
-            row.prop(brush, "input_samples")
-            row.prop(brush, "active_smooth_factor")
+                col.separator()
+                col.label(text="Settings:")
+                col.prop(brush, "random_press", slider=True)
+
+                row = col.row(align=True)
+                row.prop(brush, "jitter", slider=True)
+                row.prop(brush, "use_jitter_pressure", text="", 
icon='STYLUS_PRESSURE')
+
+                row = col.row(align=True)
+                row.prop(brush, "angle", slider=True)
+                row.prop(brush, "angle_factor", text="Factor", slider=True)
+                col.separator()
+
+            col.prop(brush, "enable_smooth", text="Post-processing Smooth")
+            if brush.enable_smooth is True:
+                col.label(text="Stroke Quality:")
+                col.prop(brush, "pen_smooth_factor")
+                col.prop(brush, "pen_smooth_steps")
+
+                col = layout.column(align=True)
+                col.label(text="Thickness:")
+                col.prop(brush, "pen_thick_smooth_factor")
+                col.prop(brush, "pen_thick_smooth_steps")
+                col.separator()
+
+            col.prop(brush, "enable_subdiv", text="Post-processing Subdivide")
+            if brush.enable_subdiv is True:
+                col.separator()
+                col.prop(brush, "pen_subdivision_steps")
+                col.prop(brush, "random_subdiv", text="Randomness", 
slider=True)
 
 
 # Grease Pencil drawing brushes mode
diff --git a/source/blender/editors/gpencil/gpencil_paint.c 
b/source/blender/editors/gpencil/gpencil_paint.c
index 0a4659e9e94..0c942beaff0 100644
--- a/source/blender/editors/gpencil/gpencil_paint.c
+++ b/source/blender/editors/gpencil/gpencil_paint.c
@@ -616,7 +616,7 @@ static short gp_stroke_addpoint(
                }
 
                /* Apply jitter to position */
-               if (brush->draw_jitter > 0.0f) {
+               if ((brush->flag_group & GP_BRUSH_GROUP_RANDOM) && 
(brush->draw_jitter > 0.0f)) {
                        int r_mval[2];
                        gp_brush_jitter(gpd, brush, pt, mval, r_mval);
                        copy_v2_v2_int(&pt->x, r_mval);
@@ -625,7 +625,10 @@ static short gp_stroke_addpoint(
                        copy_v2_v2_int(&pt->x, mval);
                }
                /* apply randomness to pressure */
-               if ((brush->draw_random_press > 0.0f) && (brush->flag & 
GP_BRUSH_USE_RANDOM_PRESSURE)) {
+               if ((brush->flag_group & GP_BRUSH_GROUP_RANDOM) && 
+                       (brush->draw_random_press > 0.0f) && 
+                       (brush->flag & GP_BRUSH_USE_RANDOM_PRESSURE)) 
+               {
                        float curvef = 
curvemapping_evaluateF(brush->cur_sensitivity, 0, pressure);
                        float tmp_pressure = curvef * brush->draw_sensitivity;
                        if (BLI_frand() > 0.5f) {
@@ -638,7 +641,7 @@ static short gp_stroke_addpoint(
                }
 
                /* apply randomness to uv texture rotation */
-               if (brush->uv_random > 0.0f) {
+               if ((brush->flag_group & GP_BRUSH_GROUP_RANDOM) && 
(brush->uv_random > 0.0f)) {
                        if (BLI_frand() > 0.5f) {
                                pt->uv_rot = (BLI_frand() * M_PI * -1) * 
brush->uv_random;
                        }
@@ -652,7 +655,7 @@ static short gp_stroke_addpoint(
                }
 
                /* apply angle of stroke to brush size */
-               if (brush->draw_angle_factor > 0.0f) {
+               if ((brush->flag_group & GP_BRUSH_GROUP_RANDOM) && 
(brush->draw_angle_factor > 0.0f)) {
                        gp_brush_angle(gpd, brush, pt, mval);
                }
 
@@ -669,7 +672,10 @@ static short gp_stroke_addpoint(
                CLAMP(pt->strength, GPENCIL_STRENGTH_MIN, 1.0f);
 
                /* apply randomness to color strength */
-               if ((brush->draw_random_press > 0.0f) && (brush->flag & 
GP_BRUSH_USE_RANDOM_STRENGTH)) {
+               if ((brush->flag_group & GP_BRUSH_GROUP_RANDOM) && 
+                       (brush->draw_random_press > 0.0f) && 
+                       (brush->flag & GP_BRUSH_USE_RANDOM_STRENGTH)) 
+               {
                        if (BLI_frand() > 0.5f) {
                                pt->strength -= pt->strength * 
brush->draw_random_press * BLI_frand();
                        }
@@ -1090,11 +1096,11 @@ static void gp_stroke_newfrombuffer(tGPsdata *p)
                }
 
                /* subdivide and smooth the stroke */
-               if (sublevel > 0) {
+               if ((brush->flag_group & GP_BRUSH_GROUP_SUBDIVIDE) && (sublevel 
> 0)) {
                        gp_subdivide_stroke(gps, sublevel);
                }
                /* apply randomness to stroke */
-               if (brush->draw_random_sub > 0.0f) {
+               if ((brush->flag_group & GP_BRUSH_GROUP_RANDOM) && 
(brush->draw_random_sub > 0.0f)) {
                        gp_randomize_stroke(gps, brush);
                }
 
@@ -1102,7 +1108,7 @@ static void gp_stroke_newfrombuffer(tGPsdata *p)
                 * for each iteration, the factor is reduced to get a better 
smoothing without changing too much
                 * the original stroke
                 */
-               if (brush->draw_smoothfac > 0.0f) {
+               if ((brush->flag_group & GP_BRUSH_GROUP_SMOOTH) && 
(brush->draw_smoothfac > 0.0f)) {
                        float reduce = 0.0f;
                        for (int r = 0; r < brush->draw_smoothlvl; r++) {
                                for (i = 0; i < gps->totpoints; i++) {
diff --git a/source/blender/makesdna/DNA_gpencil_types.h 
b/source/blender/makesdna/DNA_gpencil_types.h
index 85de40167fe..b889fc3b692 100644
--- a/source/blender/makesdna/DNA_gpencil_types.h
+++ b/source/blender/makesdna/DNA_gpencil_types.h
@@ -142,6 +142,9 @@ typedef struct bGPDbrush {
        int   type;               /* type of brush (draw, fill, erase, etc..) */
        int   eraser_mode;        /* soft, hard or stroke */
        float active_smooth;      /* smooth while drawing factor */
+
+       int   flag_group;         /* falg to enable/disable groups of options */
+       char pad[4];
 } bGPDbrush;
 
 /* bGPDbrush->flag */
@@ -174,6 +177,16 @@ typedef enum eGPDbrush_Flag {
        GP_BRUSH_DEFAULT_ERASER = (1 << 13),
 } eGPDbrush_Flag;
 
+/* bGPDbrush->flag_group */
+typedef enum eGPDbrush_FlagGroup {
+       /* smooth group */
+       GP_BRUSH_GROUP_SMOOTH = (1 << 0),
+       /* subdivide group */
+       GP_BRUSH_GROUP_SUBDIVIDE = (1 << 1),
+       /* Random settings group */
+       GP_BRUSH_GROUP_RANDOM = (1 << 2),
+} eGPDbrush_FlagGroup;
+
 /* ***************************************** */
 /* GP Palettes (Deprecated - 2.78 - 2.79 only) */
 
diff --git a/source/blender/makesrna/intern/rna_scene.c 
b/source/blender/makesrna/intern/rna_scene.c
index 48f15b493b4..0fb6c46582a 100644
--- a/source/blender/makesrna/intern/rna_scene.c
+++ b/source/blender/makesrna/intern/rna_scene.c
@@ -2530,6 +2530,18 @@ static void rna_def_gpencil_brush(BlenderRNA *brna)
        RNA_def_property_ui_icon(prop, ICON_UNPINNED, 1);
        RNA_def_property_ui_text(prop, "Default Eraser", "Use this brush when 
enable eraser with fast switch key");
        RNA_def_property_update(prop, NC_GPENCIL | ND_DATA, 
"rna_GPencil_brush_default_eraser");
+
+       prop = RNA_def_property(srna, "enable_smooth", PROP_BOOLEAN, PROP_NONE);
+       RNA_def_property_boolean_sdna(prop, NULL, "flag_group", 
GP_BRUSH_GROUP_SMOOTH);
+       RNA_def_property_ui_text(prop, "Smooth", "Enable post smooth processing 
for new strokes");
+
+       prop = RNA_def_property(srna, "enable_subdiv", PROP_BOOLEAN, PROP_NONE);
+       RNA_def_property_boolean_sdna(prop, NULL, "flag_group", 
GP_BRUSH_GROUP_SUBDIVIDE);
+       RNA_def_property_ui_text(prop, "Subdivide", "Enable post subdivide 
processing for new strokes");
+
+       prop = RNA_def_property(srna, "enable_random", PROP_BOOLEAN, PROP_NONE);
+       RNA_def_property_boolean_sdna(prop, NULL, "flag_group", 
GP_BRUSH_GROUP_RANDOM);
+       RNA_def_property_ui_text(prop, "Random Settings", "Enable random 
settings for brush");
 }
 
 /* Grease Pencil Drawing Brushes API */

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to