[Bf-blender-cvs] [a1bb3f420d6] temp-gpencil-fading-modifier: GPencil: Fading control UI updates.

YimingWu noreply at git.blender.org
Thu Oct 29 05:12:17 CET 2020


Commit: a1bb3f420d6eb70483b6cbc22869595f154bb080
Author: YimingWu
Date:   Thu Oct 29 00:38:59 2020 +0800
Branches: temp-gpencil-fading-modifier
https://developer.blender.org/rBa1bb3f420d6eb70483b6cbc22869595f154bb080

GPencil: Fading control UI updates.

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

M	source/blender/gpencil_modifiers/intern/MOD_gpencil_ui_common.c
M	source/blender/gpencil_modifiers/intern/MOD_gpencil_ui_common.h
M	source/blender/gpencil_modifiers/intern/MOD_gpencilopacity.c
M	source/blender/gpencil_modifiers/intern/MOD_gpencilthick.c
M	source/blender/makesdna/DNA_gpencil_modifier_defaults.h

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

diff --git a/source/blender/gpencil_modifiers/intern/MOD_gpencil_ui_common.c b/source/blender/gpencil_modifiers/intern/MOD_gpencil_ui_common.c
index 1985ec5caf5..9a5e95f7c89 100644
--- a/source/blender/gpencil_modifiers/intern/MOD_gpencil_ui_common.c
+++ b/source/blender/gpencil_modifiers/intern/MOD_gpencil_ui_common.c
@@ -206,6 +206,23 @@ void gpencil_modifier_curve_panel_draw(const bContext *UNUSED(C), Panel *panel)
   uiTemplateCurveMapping(layout, ptr, "curve", 0, false, false, false, false);
 }
 
+void gpencil_modifier_fading_draw(const bContext *UNUSED(C), Panel *panel)
+{
+  PointerRNA *ptr = gpencil_modifier_panel_get_property_pointers(panel, NULL);
+
+  uiLayout *layout = panel->layout;
+  uiLayoutSetPropSep(layout, true);
+
+  bool fading_enabled = RNA_boolean_get(ptr, "use_fading");
+  if (fading_enabled) {
+    uiItemR(layout, ptr, "object", 0, NULL, ICON_CUBE);
+    uiLayout *sub = uiLayoutColumn(layout, true);
+    uiItemR(sub, ptr, "fading_start", 0, NULL, ICON_NONE);
+    uiItemR(sub, ptr, "fading_end", 0, IFACE_("End"), ICON_NONE);
+    uiItemR(layout, ptr, "fading_end_factor", 0, NULL, ICON_NONE);
+  }
+}
+
 /**
  * Draw modifier error message.
  */
diff --git a/source/blender/gpencil_modifiers/intern/MOD_gpencil_ui_common.h b/source/blender/gpencil_modifiers/intern/MOD_gpencil_ui_common.h
index d20557109b1..72cd26f4b6e 100644
--- a/source/blender/gpencil_modifiers/intern/MOD_gpencil_ui_common.h
+++ b/source/blender/gpencil_modifiers/intern/MOD_gpencil_ui_common.h
@@ -37,6 +37,8 @@ void gpencil_modifier_masking_panel_draw(Panel *panel, bool use_material, bool u
 void gpencil_modifier_curve_header_draw(const bContext *UNUSED(C), Panel *panel);
 void gpencil_modifier_curve_panel_draw(const bContext *UNUSED(C), Panel *panel);
 
+void gpencil_modifier_fading_draw(const bContext *UNUSED(C), Panel *panel);
+
 void gpencil_modifier_panel_end(struct uiLayout *layout, PointerRNA *ptr);
 
 struct PointerRNA *gpencil_modifier_panel_get_property_pointers(struct Panel *panel,
diff --git a/source/blender/gpencil_modifiers/intern/MOD_gpencilopacity.c b/source/blender/gpencil_modifiers/intern/MOD_gpencilopacity.c
index 7f832cd8c4b..97b28ec220d 100644
--- a/source/blender/gpencil_modifiers/intern/MOD_gpencilopacity.c
+++ b/source/blender/gpencil_modifiers/intern/MOD_gpencilopacity.c
@@ -50,6 +50,8 @@
 #include "BKE_screen.h"
 
 #include "DEG_depsgraph.h"
+#include "DEG_depsgraph_build.h"
+#include "DEG_depsgraph_query.h"
 
 #include "UI_interface.h"
 #include "UI_resources.h"
@@ -247,6 +249,15 @@ static void foreachIDLink(GpencilModifierData *md, Object *ob, IDWalkFunc walk,
   walk(userData, ob, (ID **)&mmd->object, IDWALK_CB_USER);
 }
 
+static void updateDepsgraph(GpencilModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
+{
+  OpacityGpencilModifierData *mmd = (OpacityGpencilModifierData *)md;
+  if (mmd->object != NULL) {
+    DEG_add_object_relation(ctx->node, mmd->object, DEG_OB_COMP_TRANSFORM, "Opacity Modifier");
+  }
+  DEG_add_object_relation(ctx->node, ctx->object, DEG_OB_COMP_TRANSFORM, "Opacity Modifier");
+}
+
 static void panel_draw(const bContext *UNUSED(C), Panel *panel)
 {
   uiLayout *layout = panel->layout;
@@ -269,17 +280,21 @@ static void panel_draw(const bContext *UNUSED(C), Panel *panel)
     uiItemR(layout, ptr, "factor", 0, text, ICON_NONE);
   }
 
-  bool fading_enabled = RNA_boolean_get(ptr, "use_fading");
+  gpencil_modifier_panel_end(layout, ptr);
+}
+
+static void fading_header_draw(const bContext *UNUSED(C), Panel *panel)
+{
+  uiLayout *layout = panel->layout;
+
+  PointerRNA *ptr = gpencil_modifier_panel_get_property_pointers(panel, NULL);
+
   uiItemR(layout, ptr, "use_fading", 0, NULL, ICON_NONE);
-  if (fading_enabled) {
-    uiItemR(layout, ptr, "object", 0, NULL, ICON_CUBE);
-    uiLayout *sub = uiLayoutColumn(layout, true);
-    uiItemR(sub, ptr, "fading_start", 0, NULL, ICON_NONE);
-    uiItemR(sub, ptr, "fading_end", 0, NULL, ICON_NONE);
-    uiItemR(layout, ptr, "fading_end_factor", 0, NULL, ICON_NONE);
-  }
+}
 
-  gpencil_modifier_panel_end(layout, ptr);
+static void fading_panel_draw(const bContext *C, Panel *panel)
+{
+  gpencil_modifier_fading_draw(C, panel);
 }
 
 static void mask_panel_draw(const bContext *UNUSED(C), Panel *panel)
@@ -320,6 +335,8 @@ static void panelRegister(ARegionType *region_type)
 {
   PanelType *panel_type = gpencil_modifier_panel_register(
       region_type, eGpencilModifierType_Opacity, panel_draw);
+  PanelType *fading_panel_type = gpencil_modifier_subpanel_register(
+      region_type, "fading", "", fading_header_draw, fading_panel_draw, panel_type);
   PanelType *mask_panel_type = gpencil_modifier_subpanel_register(
       region_type, "mask", "Influence", NULL, mask_panel_draw, panel_type);
   gpencil_modifier_subpanel_register(
@@ -343,7 +360,7 @@ GpencilModifierTypeInfo modifierType_Gpencil_Opacity = {
     /* initData */ initData,
     /* freeData */ freeData,
     /* isDisabled */ NULL,
-    /* updateDepsgraph */ NULL,
+    /* updateDepsgraph */ updateDepsgraph,
     /* dependsOnTime */ NULL,
     /* foreachIDLink */ foreachIDLink,
     /* foreachTexLink */ NULL,
diff --git a/source/blender/gpencil_modifiers/intern/MOD_gpencilthick.c b/source/blender/gpencil_modifiers/intern/MOD_gpencilthick.c
index f571d5423f4..40e392d8aa4 100644
--- a/source/blender/gpencil_modifiers/intern/MOD_gpencilthick.c
+++ b/source/blender/gpencil_modifiers/intern/MOD_gpencilthick.c
@@ -47,6 +47,8 @@
 #include "BKE_screen.h"
 
 #include "DEG_depsgraph.h"
+#include "DEG_depsgraph_build.h"
+#include "DEG_depsgraph_query.h"
 
 #include "UI_interface.h"
 #include "UI_resources.h"
@@ -204,6 +206,15 @@ static void foreachIDLink(GpencilModifierData *md, Object *ob, IDWalkFunc walk,
   walk(userData, ob, (ID **)&mmd->object, IDWALK_CB_USER);
 }
 
+static void updateDepsgraph(GpencilModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
+{
+  ThickGpencilModifierData *mmd = (ThickGpencilModifierData *)md;
+  if (mmd->object != NULL) {
+    DEG_add_object_relation(ctx->node, mmd->object, DEG_OB_COMP_TRANSFORM, "Thickness Modifier");
+  }
+  DEG_add_object_relation(ctx->node, ctx->object, DEG_OB_COMP_TRANSFORM, "Thickness Modifier");
+}
+
 static void panel_draw(const bContext *UNUSED(C), Panel *panel)
 {
   uiLayout *layout = panel->layout;
@@ -221,18 +232,23 @@ static void panel_draw(const bContext *UNUSED(C), Panel *panel)
     uiItemR(layout, ptr, "thickness_factor", 0, NULL, ICON_NONE);
   }
 
-  bool fading_enabled = RNA_boolean_get(ptr, "use_fading");
-  uiItemR(layout, ptr, "use_fading", 0, NULL, ICON_NONE);
-  if (fading_enabled) {
-    uiItemR(layout, ptr, "object", 0, NULL, ICON_CUBE);
-    uiLayout *sub = uiLayoutColumn(layout, true);
-    uiItemR(sub, ptr, "fading_start", 0, NULL, ICON_NONE);
-    uiItemR(sub, ptr, "fading_end", 0, NULL, ICON_NONE);
-    uiItemR(layout, ptr, "fading_end_factor", 0, NULL, ICON_NONE);
-  }
   gpencil_modifier_panel_end(layout, ptr);
 }
 
+static void fading_header_draw(const bContext *UNUSED(C), Panel *panel)
+{
+  uiLayout *layout = panel->layout;
+
+  PointerRNA *ptr = gpencil_modifier_panel_get_property_pointers(panel, NULL);
+
+  uiItemR(layout, ptr, "use_fading", 0, NULL, ICON_NONE);
+}
+
+static void fading_panel_draw(const bContext *C, Panel *panel)
+{
+  gpencil_modifier_fading_draw(C, panel);
+}
+
 static void mask_panel_draw(const bContext *UNUSED(C), Panel *panel)
 {
   gpencil_modifier_masking_panel_draw(panel, true, true);
@@ -242,6 +258,8 @@ static void panelRegister(ARegionType *region_type)
 {
   PanelType *panel_type = gpencil_modifier_panel_register(
       region_type, eGpencilModifierType_Thick, panel_draw);
+  PanelType *fading_panel_type = gpencil_modifier_subpanel_register(
+      region_type, "fading", "", fading_header_draw, fading_panel_draw, panel_type);
   PanelType *mask_panel_type = gpencil_modifier_subpanel_register(
       region_type, "mask", "Influence", NULL, mask_panel_draw, panel_type);
   gpencil_modifier_subpanel_register(region_type,
diff --git a/source/blender/makesdna/DNA_gpencil_modifier_defaults.h b/source/blender/makesdna/DNA_gpencil_modifier_defaults.h
index 44239221df4..d34dbcc68cc 100644
--- a/source/blender/makesdna/DNA_gpencil_modifier_defaults.h
+++ b/source/blender/makesdna/DNA_gpencil_modifier_defaults.h
@@ -184,6 +184,8 @@
     .layer_pass = 0, \
     .hardeness = 1.0f, \
     .curve_intensity = NULL, \
+    .fading_end = 10.0f, \
+    .fading_end_factor = 0.2f, \
   }
 
 #define _DNA_DEFAULT_SimplifyGpencilModifierData \
@@ -251,6 +253,8 @@
     .thickness_fac = 1.0f, \
     .thickness = 30, \
     .layer_pass = 0, \
+    .fading_end = 10.0f, \
+    .fading_end_factor = 0.2f, \
   }
 
 #define _DNA_DEFAULT_TimeGpencilModifierData \



More information about the Bf-blender-cvs mailing list