[Bf-blender-cvs] [fcfdfc180a4] greasepencil-object: GPencil: Add mask options for Vertex Paint
Antonio Vazquez
noreply at git.blender.org
Thu Nov 7 22:58:22 CET 2019
Commit: fcfdfc180a44093224f55684bce19045d14fee27
Author: Antonio Vazquez
Date: Thu Nov 7 22:24:26 2019 +0100
Branches: greasepencil-object
https://developer.blender.org/rBfcfdfc180a44093224f55684bce19045d14fee27
GPencil: Add mask options for Vertex Paint
Still not working, only defined the UI elements.
===================================================================
M release/scripts/startup/bl_ui/space_toolsystem_toolbar.py
M release/scripts/startup/bl_ui/space_view3d.py
M source/blender/makesdna/DNA_scene_types.h
M source/blender/makesrna/intern/rna_scene.c
===================================================================
diff --git a/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py b/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py
index cf8031dd644..ba077e3e590 100644
--- a/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py
+++ b/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py
@@ -1606,6 +1606,17 @@ class _defs_gpencil_weight:
class _defs_gpencil_vertex:
+
+ @staticmethod
+ def poll_select_mask(context):
+ if context is None:
+ return True
+ ob = context.active_object
+ ts = context.scene.tool_settings
+ return ob and ob.type == 'GPENCIL' and (ts.use_gpencil_vertex_select_mask_point or
+ ts.use_gpencil_vertex_select_mask_stroke or
+ ts.use_gpencil_vertex_select_mask_segment)
+
@staticmethod
def generate_from_brushes(context):
return generate_from_enum_ex(
@@ -2137,6 +2148,12 @@ class VIEW3D_PT_tools_active(ToolSelectPanelHelper, Panel):
],
'VERTEX_GPENCIL': [
_defs_gpencil_vertex.generate_from_brushes,
+ None,
+ lambda context: (
+ VIEW3D_PT_tools_active._tools_gpencil_select
+ if _defs_gpencil_vertex.poll_select_mask(context)
+ else ()
+ ),
],
}
diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py
index 4e78eb2dd2a..f83618996b5 100644
--- a/release/scripts/startup/bl_ui/space_view3d.py
+++ b/release/scripts/startup/bl_ui/space_view3d.py
@@ -655,6 +655,13 @@ class VIEW3D_HT_header(Header):
row.prop(tool_settings, "use_gpencil_select_mask_stroke", text="")
row.prop(tool_settings, "use_gpencil_select_mask_segment", text="")
+ # Select mode for Vertex Paint
+ if gpd.is_stroke_vertex_mode:
+ row = layout.row(align=True)
+ row.prop(tool_settings, "use_gpencil_vertex_select_mask_point", text="")
+ row.prop(tool_settings, "use_gpencil_vertex_select_mask_stroke", text="")
+ row.prop(tool_settings, "use_gpencil_vertex_select_mask_segment", text="")
+
if gpd.use_stroke_edit_mode or gpd.is_stroke_sculpt_mode or gpd.is_stroke_weight_mode:
row = layout.row(align=True)
row.prop(gpd, "use_multiedit", text="", icon='GP_MULTIFRAME_EDITING')
diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h
index c7ce72382be..a948f3c4b46 100644
--- a/source/blender/makesdna/DNA_scene_types.h
+++ b/source/blender/makesdna/DNA_scene_types.h
@@ -1168,6 +1168,16 @@ typedef enum eGP_Sculpt_SelectMaskFlag {
GP_SCULPT_MASK_SELECTMODE_SEGMENT = (1 << 2),
} eGP_Sculpt_SelectMaskFlag;
+/* GP_Sculpt_Settings.gpencil_selectmode_vertex */
+typedef enum eGP_vertex_SelectMaskFlag {
+ /* only affect selected points */
+ GP_VERTEX_MASK_SELECTMODE_POINT = (1 << 0),
+ /* only affect selected strokes */
+ GP_VERTEX_MASK_SELECTMODE_STROKE = (1 << 1),
+ /* only affect selected segmenst */
+ GP_VERTEX_MASK_SELECTMODE_SEGMENT = (1 << 2),
+} eGP_Vertex_SelectMaskFlag;
+
/* Settings for GP Interpolation Operators */
typedef struct GP_Interpolate_Settings {
/** #eGP_Interpolate_SettingsFlag. */
@@ -1515,8 +1525,11 @@ typedef struct ToolSettings {
/** Subset selection filter in wpaint. */
char vgroupsubset;
+ /** Stroke selection mode for Vertex Paint. */
+ char gpencil_selectmode_vertex;
+
/* UV painting */
- char _pad2[3];
+ char _pad2[2];
char uv_sculpt_settings;
char uv_relax_method;
/* XXX: these sculpt_paint_* fields are deprecated, use the
diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c
index 2e4fb3611fa..753eb91a116 100644
--- a/source/blender/makesrna/intern/rna_scene.c
+++ b/source/blender/makesrna/intern/rna_scene.c
@@ -3170,6 +3170,32 @@ static void rna_def_tool_settings(BlenderRNA *brna)
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, "rna_Gpencil_mask_segment_update");
+ /* Grease Pencil - Select mode Vertex Paint */
+ prop = RNA_def_property(srna, "use_gpencil_vertex_select_mask_point", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(
+ prop, NULL, "gpencil_selectmode_vertex", GP_VERTEX_MASK_SELECTMODE_POINT);
+ RNA_def_property_ui_text(prop, "Selection Mask", "Only paint selected stroke points");
+ RNA_def_property_ui_icon(prop, ICON_GP_SELECT_POINTS, 0);
+ RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
+ RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, "rna_Gpencil_mask_point_update");
+
+ prop = RNA_def_property(srna, "use_gpencil_vertex_select_mask_stroke", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(
+ prop, NULL, "gpencil_selectmode_vertex", GP_VERTEX_MASK_SELECTMODE_STROKE);
+ RNA_def_property_ui_text(prop, "Selection Mask", "Only paint selected stroke");
+ RNA_def_property_ui_icon(prop, ICON_GP_SELECT_STROKES, 0);
+ RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
+ RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, "rna_Gpencil_mask_stroke_update");
+
+ prop = RNA_def_property(srna, "use_gpencil_vertex_select_mask_segment", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(
+ prop, NULL, "gpencil_selectmode_vertex", GP_VERTEX_MASK_SELECTMODE_SEGMENT);
+ RNA_def_property_ui_text(
+ prop, "Selection Mask", "Only paint selected stroke points between other strokes");
+ RNA_def_property_ui_icon(prop, ICON_GP_SELECT_BETWEEN_STROKES, 0);
+ RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
+ RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, "rna_Gpencil_mask_segment_update");
+
/* Annotations - 2D Views Stroke Placement */
prop = RNA_def_property(srna, "annotation_stroke_placement_view2d", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_bitflag_sdna(prop, NULL, "gpencil_v2d_align");
More information about the Bf-blender-cvs
mailing list