[Bf-blender-cvs] [3f908c45da4] temp-lineart-contained: LineArt: Use separate sub panel for line types.

YimingWu noreply at git.blender.org
Tue Jun 15 15:07:21 CEST 2021


Commit: 3f908c45da468091603ea9afade7642714e82db2
Author: YimingWu
Date:   Tue Jun 15 21:07:07 2021 +0800
Branches: temp-lineart-contained
https://developer.blender.org/rB3f908c45da468091603ea9afade7642714e82db2

LineArt: Use separate sub panel for line types.

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

M	source/blender/gpencil_modifiers/intern/MOD_gpencillineart.c

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

diff --git a/source/blender/gpencil_modifiers/intern/MOD_gpencillineart.c b/source/blender/gpencil_modifiers/intern/MOD_gpencillineart.c
index 5d30c09d967..db75f9a7bda 100644
--- a/source/blender/gpencil_modifiers/intern/MOD_gpencillineart.c
+++ b/source/blender/gpencil_modifiers/intern/MOD_gpencillineart.c
@@ -315,8 +315,45 @@ static void panel_draw(const bContext *UNUSED(C), Panel *panel)
   else {
     /* Source is Scene. */
   }
+  uiItemPointerR(layout, ptr, "target_layer", &obj_data_ptr, "layers", NULL, ICON_GREASEPENCIL);
 
-  uiLayout *col = uiLayoutColumnWithHeading(layout, true, IFACE_("Edge Types"));
+  /* Material has to be used by grease pencil object already, it was possible to assign materials
+   * without this requirement in earlier versions of blender. */
+  bool material_valid = false;
+  PointerRNA material_ptr = RNA_pointer_get(ptr, "target_material");
+  if (!RNA_pointer_is_null(&material_ptr)) {
+    Material *current_material = material_ptr.data;
+    Object *ob = ob_ptr.data;
+    material_valid = BKE_gpencil_object_material_index_get(ob, current_material) != -1;
+  }
+  uiLayout *row = uiLayoutRow(layout, true);
+  uiLayoutSetRedAlert(row, !material_valid);
+  uiItemPointerR(row,
+                 ptr,
+                 "target_material",
+                 &obj_data_ptr,
+                 "materials",
+                 NULL,
+                 material_valid ? ICON_SHADING_TEXTURE : ICON_ERROR);
+
+  gpencil_modifier_panel_end(layout, ptr);
+}
+
+static void line_types_panel_draw(const bContext *UNUSED(C), Panel *panel)
+{
+  uiLayout *layout = panel->layout;
+  PointerRNA ob_ptr;
+  PointerRNA *ptr = gpencil_modifier_panel_get_property_pointers(panel, &ob_ptr);
+
+  const bool is_baked = RNA_boolean_get(ptr, "is_baked");
+  const bool use_cache = RNA_boolean_get(ptr, "use_cached_result");
+  const bool is_first = BKE_gpencil_is_first_lineart_in_stack(ob_ptr.data, ptr->data);
+
+  uiLayoutSetEnabled(layout, !is_baked);
+
+  uiLayoutSetPropSep(layout, true);
+
+  uiLayout *col = uiLayoutColumn(layout, false);
 
   uiItemR(col, ptr, "use_contour", 0, IFACE_("Contour"), ICON_NONE);
   uiItemR(col, ptr, "use_floating", 0, IFACE_("Floating"), ICON_NONE);
@@ -345,29 +382,6 @@ static void panel_draw(const bContext *UNUSED(C), Panel *panel)
   else {
     uiItemR(entry, ptr, "light_contour_object", 0, "", ICON_NONE);
   }
-
-  uiItemPointerR(layout, ptr, "target_layer", &obj_data_ptr, "layers", NULL, ICON_GREASEPENCIL);
-
-  /* Material has to be used by grease pencil object already, it was possible to assign materials
-   * without this requirement in earlier versions of blender. */
-  bool material_valid = false;
-  PointerRNA material_ptr = RNA_pointer_get(ptr, "target_material");
-  if (!RNA_pointer_is_null(&material_ptr)) {
-    Material *current_material = material_ptr.data;
-    Object *ob = ob_ptr.data;
-    material_valid = BKE_gpencil_object_material_index_get(ob, current_material) != -1;
-  }
-  uiLayout *row = uiLayoutRow(layout, true);
-  uiLayoutSetRedAlert(row, !material_valid);
-  uiItemPointerR(row,
-                 ptr,
-                 "target_material",
-                 &obj_data_ptr,
-                 "materials",
-                 NULL,
-                 material_valid ? ICON_SHADING_TEXTURE : ICON_ERROR);
-
-  gpencil_modifier_panel_end(layout, ptr);
 }
 
 static void options_panel_draw(const bContext *UNUSED(C), Panel *panel)
@@ -701,6 +715,8 @@ static void panelRegister(ARegionType *region_type)
   PanelType *panel_type = gpencil_modifier_panel_register(
       region_type, eGpencilModifierType_Lineart, panel_draw);
 
+  gpencil_modifier_subpanel_register(
+      region_type, "line_types", "Line Types", NULL, line_types_panel_draw, panel_type);
   gpencil_modifier_subpanel_register(
       region_type, "options", "Options", NULL, options_panel_draw, panel_type);
   gpencil_modifier_subpanel_register(



More information about the Bf-blender-cvs mailing list