[Bf-blender-cvs] [0067b49bbf5] tracking_tools: Masking: Add masking tools to image editor
Sebastian Koenig
noreply at git.blender.org
Wed Sep 29 15:01:15 CEST 2021
Commit: 0067b49bbf5f02630f014debb904853282f76262
Author: Sebastian Koenig
Date: Wed Sep 29 14:55:28 2021 +0200
Branches: tracking_tools
https://developer.blender.org/rB0067b49bbf5f02630f014debb904853282f76262
Masking: Add masking tools to image editor
Clip and Image editor are using the same masking tools when in MASKEDIT
mode. To make that work in the keymap I have set the space_type to
'EMPTY', similar to the annotation tools. This seems to work well,
though I am not sure it is the right approach.
===================================================================
M release/scripts/presets/keyconfig/keymap_data/blender_default.py
M release/scripts/startup/bl_operators/mask.py
M release/scripts/startup/bl_ui/space_image.py
M release/scripts/startup/bl_ui/space_toolsystem_toolbar.py
M source/blender/windowmanager/intern/wm_toolsystem.c
===================================================================
diff --git a/release/scripts/presets/keyconfig/keymap_data/blender_default.py b/release/scripts/presets/keyconfig/keymap_data/blender_default.py
index 06815035790..4cc13f8c652 100644
--- a/release/scripts/presets/keyconfig/keymap_data/blender_default.py
+++ b/release/scripts/presets/keyconfig/keymap_data/blender_default.py
@@ -6122,7 +6122,7 @@ def km_generic_tool_annotate_eraser(params):
def km_generic_tool_mask_select(params):
return (
"Mask Editing: Tweak",
- {"space_type": 'CLIP_EDITOR', "region_type": 'WINDOW'},
+ {"space_type": 'EMPTY', "region_type": 'WINDOW'},
{"items": [
("mask.select", {"type": params.select_mouse, "value": 'PRESS'},
{"properties": [("extend", False), ("deselect_all", not params.legacy)]}),
@@ -6133,7 +6133,7 @@ def km_generic_tool_mask_select(params):
def km_generic_tool_mask_select_box(params):
return (
"Mask Editing: Select Box",
- {"space_type": 'CLIP_EDITOR', "region_type": 'WINDOW'},
+ {"space_type": 'EMPTY', "region_type": 'WINDOW'},
{"items": _template_items_tool_select_actions_simple(
"mask.select_box", type=params.tool_tweak, value='ANY',
)},
@@ -6143,7 +6143,7 @@ def km_generic_tool_mask_select_box(params):
def km_generic_tool_mask_select_lasso(params):
return (
"Mask Editing: Select Lasso",
- {"space_type": 'CLIP_EDITOR', "region_type": 'WINDOW'},
+ {"space_type": 'EMPTY', "region_type": 'WINDOW'},
{"items": _template_items_tool_select_actions_simple(
"mask.select_lasso", type=params.tool_mouse, value='PRESS',
)},
@@ -6153,7 +6153,7 @@ def km_generic_tool_mask_select_lasso(params):
def km_generic_tool_mask_select_circle(params):
return (
"Mask Editing: Select Circle",
- {"space_type": 'CLIP_EDITOR', "region_type": 'WINDOW'},
+ {"space_type": 'EMPTY', "region_type": 'WINDOW'},
{"items": _template_items_tool_select_actions_simple(
"mask.select_circle", type=params.tool_mouse, value='PRESS',
properties=[("wait_for_input", False)],
@@ -6164,7 +6164,7 @@ def km_generic_tool_mask_select_circle(params):
def km_generic_tool_mask_add_vertex(params):
return (
"Mask Editing: Add Vertex and Slide",
- {"space_type": 'CLIP_EDITOR', "region_type": 'WINDOW'},
+ {"space_type": 'EMPTY', "region_type": 'WINDOW'},
{"items": [
("mask.draw_mask", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None),
("mask.add_feather_vertex_slide", {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True}, None),
@@ -6172,20 +6172,11 @@ def km_generic_tool_mask_add_vertex(params):
)
-def km_generic_tool_mask_delete_vertex(params):
- return (
- "Mask Editing: Delete",
- {"space_type": 'CLIP_EDITOR', "region_type": 'WINDOW'},
- {"items": [
- ("mask.delete", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None),
- ]},
- )
-
def km_generic_tool_mask_add_feather_vertex(params):
return (
"Mask Editing: Add Feather Vertex and Slide",
- {"space_type": 'CLIP_EDITOR', "region_type": 'WINDOW'},
+ {"space_type": 'EMPTY', "region_type": 'WINDOW'},
{"items": [
("mask.slide_point", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None),
("mask.draw_mask", {"type": 'LEFTMOUSE', "value": 'PRESS', "alt": True}, None),
diff --git a/release/scripts/startup/bl_operators/mask.py b/release/scripts/startup/bl_operators/mask.py
index 251ef356ba5..1f4317b9e9e 100644
--- a/release/scripts/startup/bl_operators/mask.py
+++ b/release/scripts/startup/bl_operators/mask.py
@@ -29,8 +29,11 @@ class MASK_OT_draw_mask(Operator):
@classmethod
def poll(cls, context):
- clip = context.space_data.clip
- return clip
+ if context.space_data.type == 'CLIP_EDITOR':
+ clip = context.space_data.clip
+ return clip
+ else:
+ return True
type: EnumProperty(
name="Type",
diff --git a/release/scripts/startup/bl_ui/space_image.py b/release/scripts/startup/bl_ui/space_image.py
index 797d0c62b72..5ddeb5e937c 100644
--- a/release/scripts/startup/bl_ui/space_image.py
+++ b/release/scripts/startup/bl_ui/space_image.py
@@ -713,6 +713,16 @@ class IMAGE_HT_header(Header):
if show_uvedit or show_maskedit:
layout.prop(sima, "pivot_point", icon_only=True)
+ if show_maskedit:
+ # Proportional Editing
+ tool_settings = context.tool_settings
+ row = layout.row(align=True)
+ row = layout.row(align=True)
+ row.prop(tool_settings, "use_proportional_edit_mask", text="", icon_only=True)
+ sub = row.row(align=True)
+ sub.active = tool_settings.use_proportional_edit_mask
+ sub.prop(tool_settings, "proportional_edit_falloff", text="", icon_only=True)
+
if show_uvedit:
tool_settings = context.tool_settings
@@ -748,6 +758,7 @@ class IMAGE_HT_header(Header):
panel="IMAGE_PT_proportional_edit",
)
+
def draw(self, context):
layout = self.layout
@@ -789,15 +800,18 @@ class IMAGE_HT_header(Header):
layout.template_ID(sima, "image", new="image.new", open="image.open")
- if show_maskedit:
- row = layout.row()
- row.template_ID(sima, "mask", new="mask.new")
if not show_render:
layout.prop(sima, "use_image_pin", text="", emboss=False)
layout.separator_spacer()
+ # Masking
+ if show_maskedit:
+ row = layout.row()
+ row.template_ID(sima, "mask", new="mask.new")
+ row.popover(panel='IMAGE_PT_mask_display')
+
# Overlay toggle & popover
row = layout.row(align=True)
row.prop(overlay, "show_overlays", icon='OVERLAY', text="")
diff --git a/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py b/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py
index 20910e60e39..63f28aa1327 100644
--- a/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py
+++ b/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py
@@ -2559,23 +2559,14 @@ class _defs_mask_tools:
def add_feather_vertex_slide():
def draw_settings(_context, layout, tool):
row = layout.row()
- row.label(text="Feather Vertex")
+ row.label(text="Slide / Feather")
return dict(
idname="builtin.add_feather_vertex_slide",
- label="Add a Feather Vertex",
+ label="Slide Mask / Add a Feather Vertex",
icon="ops.curve.radius",
widget=None,
keymap="Mask Editing: Add Feather Vertex and Slide"
)
- @ToolDef.from_fn
- def delete_vertex():
- return dict(
- idname="builtin.delete",
- label="Delete a Feather Vertex",
- icon="ops.curve.vertex_random",
- widget=None,
- keymap="Mask Editing: Delete"
- )
class _defs_node_select:
@@ -2845,12 +2836,11 @@ class IMAGE_PT_tools_active(ToolSelectPanelHelper, Panel):
),
],
'MASK': [
- # _defs_mask_tools.add_vertex_slide,
- # _defs_mask_tools.add_feather_vertex_slide,
- # _defs_mask_tools.delete_vertex,
- # None,
- # *_tools_select_mask,
- # None,
+ _defs_mask_tools.add_vertex_slide,
+ _defs_mask_tools.add_feather_vertex_slide,
+ None,
+ *_tools_select_mask,
+ None,
*_tools_annotate,
],
'PAINT': [
@@ -2932,7 +2922,6 @@ class CLIP_PT_tools_active(ToolSelectPanelHelper, Panel):
'MASK': [
_defs_mask_tools.add_vertex_slide,
_defs_mask_tools.add_feather_vertex_slide,
- _defs_mask_tools.delete_vertex,
None,
*_tools_mask_select,
None,
diff --git a/source/blender/windowmanager/intern/wm_toolsystem.c b/source/blender/windowmanager/intern/wm_toolsystem.c
index 886cb869f7b..ab1eeb47720 100644
--- a/source/blender/windowmanager/intern/wm_toolsystem.c
+++ b/source/blender/windowmanager/intern/wm_toolsystem.c
@@ -712,6 +712,8 @@ static const char *toolsystem_default_tool(const bToolKey *tkey)
switch (tkey->mode) {
case SI_MODE_PAINT:
return "builtin_brush.Draw";
+ case SI_MODE_MASK:
+ return "builtin.draw_mask";
}
break;
case SPACE_NODE: {
More information about the Bf-blender-cvs
mailing list