[Bf-blender-cvs] [fad223212f2] greasepencil-object: Separate help modes for filling

Antonio Vazquez noreply at git.blender.org
Thu Jan 11 17:19:32 CET 2018


Commit: fad223212f267490441c3b8321501f1f1dd75c49
Author: Antonio Vazquez
Date:   Thu Jan 11 17:19:23 2018 +0100
Branches: greasepencil-object
https://developer.blender.org/rBfad223212f267490441c3b8321501f1f1dd75c49

Separate help modes for filling

Now the selector for help lines is separated. Before, some modes where not available because there was some UI options conflict.

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

M	release/scripts/startup/bl_ui/properties_grease_pencil_common.py
M	source/blender/editors/gpencil/gpencil_fill.c
M	source/blender/editors/include/ED_gpencil.h
M	source/blender/makesdna/DNA_gpencil_types.h
M	source/blender/makesrna/intern/rna_scene.c

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

diff --git a/release/scripts/startup/bl_ui/properties_grease_pencil_common.py b/release/scripts/startup/bl_ui/properties_grease_pencil_common.py
index 09b37e833e2..62bada1a3ef 100644
--- a/release/scripts/startup/bl_ui/properties_grease_pencil_common.py
+++ b/release/scripts/startup/bl_ui/properties_grease_pencil_common.py
@@ -389,14 +389,15 @@ class GreasePencilBrushPanel:
                 row.prop(brush, "fill_simplyfy_lvl", text="Simplify")
 
                 row = layout.row(align=True)
+                row.prop(brush, "fill_show_boundary", text="Mode")
+
+                row = layout.row(align=True)
+                row.enabled = brush.fill_show_boundary != "NONE" and brush.fill_show_boundary != "STROKE"
                 row.prop(brush, "fill_hide", text="Hide Transparent Lines")
                 row = layout.row(align=True)
                 row.enabled = brush.fill_hide
                 row.prop(brush, "fill_threshold", text="Threshold")
 
-                row = layout.row(align=True)
-                row.prop(brush, "fill_show_boundary", text="Show Boundary Lines")
-
                 row = layout.row(align=True)
                 row.prop(brush, "fill_allow_stroke_only", text="Allow Colors without fill")
 
diff --git a/source/blender/editors/gpencil/gpencil_fill.c b/source/blender/editors/gpencil/gpencil_fill.c
index 9efa37b606c..aba9f3293e7 100644
--- a/source/blender/editors/gpencil/gpencil_fill.c
+++ b/source/blender/editors/gpencil/gpencil_fill.c
@@ -192,10 +192,18 @@ static void gp_draw_datablock(tGPDfill *tgpf, float ink[4])
 			tgpw.onion = true;
 			tgpw.custonion = true;
 
-			ED_gp_draw_fill(&tgpw);
+			/* normal strokes */
+			if ((tgpf->fill_draw_mode == GP_FILL_DMODE_NONE) || 
+				(tgpf->fill_draw_mode == GP_FILL_DMODE_STROKE) ||
+				(tgpf->fill_draw_mode == GP_FILL_DMODE_BOTH)) 
+			{
+				ED_gp_draw_fill(&tgpw);
+			}
 
 			/* 3D Lines with basic shapes and invisible lines */
-			if (tgpf->flag & GP_BRUSH_FILL_SHOW_BOUNDARY) {
+			if ((tgpf->fill_draw_mode == GP_FILL_DMODE_CONTROL) || 
+				(tgpf->fill_draw_mode == GP_FILL_DMODE_BOTH)) 
+			{
 				gp_draw_basic_stroke(gps, tgpw.diff_mat, gps->flag & GP_STROKE_CYCLIC, ink,
 					tgpf->flag, tgpf->fill_threshold);
 			}
@@ -868,6 +876,7 @@ static tGPDfill *gp_session_init_fill(bContext *C, wmOperator *op)
 	tgpf->fill_leak = brush->fill_leak;
 	tgpf->fill_threshold = brush->fill_threshold;
 	tgpf->fill_simplylvl = brush->fill_simplylvl;
+	tgpf->fill_draw_mode = brush->fill_draw_mode;
 
 	/* init undo */
 	gpencil_undo_init(tgpf->gpd);
@@ -979,7 +988,7 @@ static int gpencil_fill_invoke(bContext *C, wmOperator *op, const wmEvent *event
 	}
 
 	/* Enable custom drawing handlers */
-	if (tgpf->flag & GP_BRUSH_FILL_SHOW_BOUNDARY) {
+	if (tgpf->fill_draw_mode != GP_FILL_DMODE_NONE) {
 		tgpf->draw_handle_3d = ED_region_draw_cb_activate(tgpf->ar->type, gpencil_fill_draw_3d, tgpf, REGION_DRAW_POST_VIEW);
 	}
 
@@ -1013,7 +1022,7 @@ static int gpencil_fill_modal(bContext *C, wmOperator *op, const wmEvent *event)
 		case LEFTMOUSE:
 			tgpf->on_back = RNA_boolean_get(op->ptr, "on_back");
 			/* first time the event is not enabled to show help lines */
-			if ((tgpf->oldkey != -1) || ((tgpf->flag & GP_BRUSH_FILL_SHOW_BOUNDARY) == 0)) {
+			if ((tgpf->oldkey != -1) || ((tgpf->fill_draw_mode != GP_FILL_DMODE_NONE) == 0)) {
 				ARegion *ar = BKE_area_find_region_xy(CTX_wm_area(C), RGN_TYPE_ANY, event->x, event->y);
 				if (ar) {
 					rcti region_rect;
diff --git a/source/blender/editors/include/ED_gpencil.h b/source/blender/editors/include/ED_gpencil.h
index f884b77ddba..7791b68a420 100644
--- a/source/blender/editors/include/ED_gpencil.h
+++ b/source/blender/editors/include/ED_gpencil.h
@@ -184,6 +184,7 @@ typedef struct tGPDfill {
 	short fill_leak;                    /* number of pixel to consider the leak is too small (x 2) */
 	float fill_threshold;               /* factor for transparency */
 	int fill_simplylvl;                 /* number of simplify steps */
+	int fill_draw_mode;                 /* boundary limits drawing mode */
 
 	struct Image *ima;					/* temp image */
 	struct BLI_Stack *stack;			/* temp points data */
diff --git a/source/blender/makesdna/DNA_gpencil_types.h b/source/blender/makesdna/DNA_gpencil_types.h
index 3baab8411eb..26d73b202c9 100644
--- a/source/blender/makesdna/DNA_gpencil_types.h
+++ b/source/blender/makesdna/DNA_gpencil_types.h
@@ -127,7 +127,7 @@ typedef struct bGPDbrush {
 	short fill_leak;          /* number of pixel to consider the leak is too small (x 2) */
 	float fill_threshold;     /* factor for transparency */
 	int   fill_simplylvl;     /* number of simplify steps */
-	char pad[4];
+	int   fill_draw_mode;     /* type of control lines drawing mode */
 } bGPDbrush;
 
 /* bGPDbrush->flag */
@@ -150,10 +150,8 @@ typedef enum eGPDbrush_Flag {
 	GP_BRUSH_FILL_ONLY = (1 << 7),
 	/* fill hide transparent */
 	GP_BRUSH_FILL_HIDE = (1 << 8),
-	/* fill show boundary lines */
-	GP_BRUSH_FILL_SHOW_BOUNDARY = (1 << 9),
 	/* allow colors without fill factor defined */
-	GP_BRUSH_FILL_ALLOW_STROKEONLY = (1 << 10),
+	GP_BRUSH_FILL_ALLOW_STROKEONLY = (1 << 9),
 } eGPDbrush_Flag;
 
 /* ***************************************** */
@@ -518,6 +516,13 @@ typedef enum eGP_OnionModes {
 	GP_ONION_MODE_SELECTED = 2,
 } eGP_OnionModes;
 
+/* gpd->fill draw modes */
+typedef enum eGP_FillDrawModes {
+	GP_FILL_DMODE_NONE = 0,
+	GP_FILL_DMODE_STROKE = 1,
+	GP_FILL_DMODE_CONTROL = 2,
+	GP_FILL_DMODE_BOTH = 3,
+} eGP_FillDrawModes;
 
 /* xray modes (Depth Ordering) */
 typedef enum eGP_DepthOrdering {
diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c
index 5c44a82db73..c5bdf32eb17 100644
--- a/source/blender/makesrna/intern/rna_scene.c
+++ b/source/blender/makesrna/intern/rna_scene.c
@@ -444,6 +444,14 @@ EnumPropertyItem rna_enum_gpencil_drawing_brushes_items[] = {
 	{ 0, NULL, 0, NULL, NULL }
 };
 
+static EnumPropertyItem rna_enum_gpencil_fill_draw_modes_items[] = {
+{ GP_FILL_DMODE_NONE, "NONE", 0, "None", "Use strokes as fill boundary limits but do not display help lines" },
+{ GP_FILL_DMODE_STROKE, "STROKE", 0, "Strokes", "Use visible strokes as fill boundary limits and display help lines" },
+{ GP_FILL_DMODE_CONTROL, "CONTROL", 0, "Control", "Use internal control lines as fill boundary limits and display help lines" },
+{ GP_FILL_DMODE_BOTH, "BOTH", 0, "Both", "Use visible strokes and control lines as fill boundary limits and display help lines" },
+{ 0, NULL, 0, NULL, NULL }
+};
+
 #ifdef RNA_RUNTIME
 
 #include "DNA_anim_types.h"
@@ -2370,10 +2378,11 @@ static void rna_def_gpencil_brush(BlenderRNA *brna)
 	RNA_def_property_boolean_default(prop, true);
 	RNA_def_property_ui_text(prop, "Fill Only", "The brush is only for filling strokes");
 
-	prop = RNA_def_property(srna, "fill_show_boundary", PROP_BOOLEAN, PROP_NONE);
-	RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_BRUSH_FILL_SHOW_BOUNDARY);
-	RNA_def_property_boolean_default(prop, true);
-	RNA_def_property_ui_text(prop, "Show Boundary Lines", "Show help lines to visualize stroke boundaries");
+	prop = RNA_def_property(srna, "fill_show_boundary", PROP_ENUM, PROP_NONE);
+	RNA_def_property_enum_sdna(prop, NULL, "fill_draw_mode");
+	RNA_def_property_enum_items(prop, rna_enum_gpencil_fill_draw_modes_items);
+	RNA_def_property_ui_text(prop, "Mode", "Mode to draw boundary limits and display help lines");
+	RNA_def_property_update(prop, NC_GPENCIL | ND_DATA, "rna_GPencil_update");
 
 	prop = RNA_def_property(srna, "fill_hide", PROP_BOOLEAN, PROP_NONE);
 	RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_BRUSH_FILL_HIDE);



More information about the Bf-blender-cvs mailing list