[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