[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