[Bf-blender-cvs] [853da3babc0] greasepencil-object: New functions for ID Linking

Antonio Vazquez noreply at git.blender.org
Thu Jun 21 10:07:19 CEST 2018


Commit: 853da3babc05b4294f603021e74263b99d4fe970
Author: Antonio Vazquez
Date:   Thu Jun 21 10:03:33 2018 +0200
Branches: greasepencil-object
https://developer.blender.org/rB853da3babc05b4294f603021e74263b99d4fe970

New functions for ID Linking

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

M	source/blender/blenkernel/BKE_gpencil_modifier.h
M	source/blender/blenkernel/intern/gpencil_modifier.c

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

diff --git a/source/blender/blenkernel/BKE_gpencil_modifier.h b/source/blender/blenkernel/BKE_gpencil_modifier.h
index 0013b35901a..c1071b34619 100644
--- a/source/blender/blenkernel/BKE_gpencil_modifier.h
+++ b/source/blender/blenkernel/BKE_gpencil_modifier.h
@@ -237,6 +237,8 @@ struct GpencilModifierData *BKE_gpencil_modifiers_findByName(struct Object *ob,
 void BKE_gpencil_modifier_copyData_generic(const struct GpencilModifierData *md_src, struct GpencilModifierData *md_dst);
 void BKE_gpencil_modifier_copyData(struct GpencilModifierData *md, struct GpencilModifierData *target);
 void BKE_gpencil_modifier_copyData_ex(struct GpencilModifierData *md, struct GpencilModifierData *target, const int flag);
+void BKE_gpencil_modifiers_foreachIDLink(struct Object *ob, GreasePencilIDWalkFunc walk, void *userData);
+void BKE_gpencil_modifiers_foreachTexLink(struct Object *ob, GreasePencilTexWalkFunc walk, void *userData);
 
 bool BKE_gpencil_has_geometry_modifiers(struct Object *ob);
 
diff --git a/source/blender/blenkernel/intern/gpencil_modifier.c b/source/blender/blenkernel/intern/gpencil_modifier.c
index a0ad7067ccf..00e6d0784b3 100644
--- a/source/blender/blenkernel/intern/gpencil_modifier.c
+++ b/source/blender/blenkernel/intern/gpencil_modifier.c
@@ -597,6 +597,34 @@ GpencilModifierData *BKE_gpencil_modifiers_findByType(Object *ob, GpencilModifie
 	return md;
 }
 
+void BKE_gpencil_modifiers_foreachIDLink(Object *ob, GreasePencilIDWalkFunc walk, void *userData)
+{
+	GpencilModifierData *md = ob->greasepencil_modifiers.first;
+
+	for (; md; md = md->next) {
+		const GpencilModifierTypeInfo *mti = BKE_gpencil_modifierType_getInfo(md->type);
+
+		if (mti->foreachIDLink) mti->foreachIDLink(md, ob, walk, userData);
+		else if (mti->foreachObjectLink) {
+			/* each Object can masquerade as an ID, so this should be OK */
+			GreasePencilObjectWalkFunc fp = (GreasePencilObjectWalkFunc)walk;
+			mti->foreachObjectLink(md, ob, fp, userData);
+		}
+	}
+}
+
+void BKE_gpencil_modifiers_foreachTexLink(Object *ob, GreasePencilTexWalkFunc walk, void *userData)
+{
+	GpencilModifierData *md = ob->greasepencil_modifiers.first;
+
+	for (; md; md = md->next) {
+		const GpencilModifierTypeInfo *mti = BKE_gpencil_modifierType_getInfo(md->type);
+
+		if (mti->foreachTexLink)
+			mti->foreachTexLink(md, ob, walk, userData);
+	}
+}
+
 GpencilModifierData *BKE_gpencil_modifiers_findByName(Object *ob, const char *name)
 {
 	return BLI_findstring(&(ob->greasepencil_modifiers), name, offsetof(GpencilModifierData, name));



More information about the Bf-blender-cvs mailing list