Commit: 7163e8c190040e9b2b6518d4457c37fd13c07bda
Author: Joshua Leung
Date:   Mon Oct 30 16:20:01 2017 +1300
Branches: greasepencil-object
https://developer.blender.org/rB7163e8c190040e9b2b6518d4457c37fd13c07bda

ModifierTypeInfo - Add 3 dedicated callbacks to support GP modifier evaluation 
and operations

* deformStrokes - Handles the "stroke" modifiers currently evaluated in
                  BKE_gpencil_stroke_modifiers() - e.g. Thickness, Noise

* generateStrokes - Handles the "geometry" modifiers currently evaluated
                    in BKE_gpencil_geometry_modifiers() - e.g. Array

* bakeModifierGP - Dedicated callback for hosting the code currently
                   wrongly-placed in applyModifier. This gets called
                   when pressing the "Apply" button on a GP modifier.

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

M       source/blender/blenkernel/BKE_modifier.h
M       source/blender/modifiers/intern/MOD_armature.c
M       source/blender/modifiers/intern/MOD_array.c
M       source/blender/modifiers/intern/MOD_bevel.c
M       source/blender/modifiers/intern/MOD_boolean.c
M       source/blender/modifiers/intern/MOD_build.c
M       source/blender/modifiers/intern/MOD_cast.c
M       source/blender/modifiers/intern/MOD_cloth.c
M       source/blender/modifiers/intern/MOD_collision.c
M       source/blender/modifiers/intern/MOD_correctivesmooth.c
M       source/blender/modifiers/intern/MOD_curve.c
M       source/blender/modifiers/intern/MOD_datatransfer.c
M       source/blender/modifiers/intern/MOD_decimate.c
M       source/blender/modifiers/intern/MOD_displace.c
M       source/blender/modifiers/intern/MOD_dynamicpaint.c
M       source/blender/modifiers/intern/MOD_edgesplit.c
M       source/blender/modifiers/intern/MOD_explode.c
M       source/blender/modifiers/intern/MOD_fluidsim.c
M       source/blender/modifiers/intern/MOD_gpencilarray.c
M       source/blender/modifiers/intern/MOD_gpencilblur.c
M       source/blender/modifiers/intern/MOD_gpencilcolor.c
M       source/blender/modifiers/intern/MOD_gpencildupli.c
M       source/blender/modifiers/intern/MOD_gpencillattice.c
M       source/blender/modifiers/intern/MOD_gpencilnoise.c
M       source/blender/modifiers/intern/MOD_gpencilopacity.c
M       source/blender/modifiers/intern/MOD_gpencilpixel.c
M       source/blender/modifiers/intern/MOD_gpencilsimplify.c
M       source/blender/modifiers/intern/MOD_gpencilsubdiv.c
M       source/blender/modifiers/intern/MOD_gpencilswirl.c
M       source/blender/modifiers/intern/MOD_gpencilthick.c
M       source/blender/modifiers/intern/MOD_gpenciltint.c
M       source/blender/modifiers/intern/MOD_gpencilwave.c
M       source/blender/modifiers/intern/MOD_hook.c
M       source/blender/modifiers/intern/MOD_laplaciandeform.c
M       source/blender/modifiers/intern/MOD_laplaciansmooth.c
M       source/blender/modifiers/intern/MOD_lattice.c
M       source/blender/modifiers/intern/MOD_mask.c
M       source/blender/modifiers/intern/MOD_meshcache.c
M       source/blender/modifiers/intern/MOD_meshdeform.c
M       source/blender/modifiers/intern/MOD_meshsequencecache.c
M       source/blender/modifiers/intern/MOD_mirror.c
M       source/blender/modifiers/intern/MOD_multires.c
M       source/blender/modifiers/intern/MOD_none.c
M       source/blender/modifiers/intern/MOD_normal_edit.c
M       source/blender/modifiers/intern/MOD_ocean.c
M       source/blender/modifiers/intern/MOD_particleinstance.c
M       source/blender/modifiers/intern/MOD_particlesystem.c
M       source/blender/modifiers/intern/MOD_remesh.c
M       source/blender/modifiers/intern/MOD_screw.c
M       source/blender/modifiers/intern/MOD_shapekey.c
M       source/blender/modifiers/intern/MOD_shrinkwrap.c
M       source/blender/modifiers/intern/MOD_simpledeform.c
M       source/blender/modifiers/intern/MOD_skin.c
M       source/blender/modifiers/intern/MOD_smoke.c
M       source/blender/modifiers/intern/MOD_smooth.c
M       source/blender/modifiers/intern/MOD_softbody.c
M       source/blender/modifiers/intern/MOD_solidify.c
M       source/blender/modifiers/intern/MOD_subsurf.c
M       source/blender/modifiers/intern/MOD_surface.c
M       source/blender/modifiers/intern/MOD_surfacedeform.c
M       source/blender/modifiers/intern/MOD_triangulate.c
M       source/blender/modifiers/intern/MOD_uvproject.c
M       source/blender/modifiers/intern/MOD_uvwarp.c
M       source/blender/modifiers/intern/MOD_warp.c
M       source/blender/modifiers/intern/MOD_wave.c
M       source/blender/modifiers/intern/MOD_weightvgedit.c
M       source/blender/modifiers/intern/MOD_weightvgmix.c
M       source/blender/modifiers/intern/MOD_weightvgproximity.c
M       source/blender/modifiers/intern/MOD_wireframe.c

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

diff --git a/source/blender/blenkernel/BKE_modifier.h 
b/source/blender/blenkernel/BKE_modifier.h
index 9500090c460..b29af94c5a3 100644
--- a/source/blender/blenkernel/BKE_modifier.h
+++ b/source/blender/blenkernel/BKE_modifier.h
@@ -37,6 +37,7 @@ struct DerivedMesh;
 struct DagForest;
 struct DagNode;
 struct EvaluationContext;
+struct bContext;
 struct Object;
 struct Scene;
 struct SceneLayer;
@@ -46,6 +47,8 @@ struct Main;
 struct ModifierData;
 struct BMEditMesh;
 struct DepsNodeHandle;
+struct bGPDlayer;
+struct bGPDframe;
 
 typedef enum {
        /* Should not be used, only for None modifier type */
@@ -225,6 +228,46 @@ typedef struct ModifierTypeInfo {
                                               struct DerivedMesh *derivedData, 
ModifierApplyFlag flag);
 
 
+       /******************* GP modifier functions *********************/
+
+       /* Callback for GP "stroke" modifiers that operate on the
+        * geometry of the provided strokes (e.g. Thickness, Noise, etc.)
+        * without adding/removing any points.
+        *
+        * The gpl parameter contains the GP layer that the strokes come from.
+        * While access is provided to this data, you should not directly access
+        * the gpl->frames data from the modifier. Instead, use the gpf 
parameter
+        * instead.
+        *
+        * The gpf parameter contains the GP frame/strokes to operate on. This 
is
+        * usually a copy of the original (unmodified and saved to files) 
stroke data.
+        * Modifiers should perform their operations on the strokes referenced 
from here
+        * only.
+        */
+       void (*deformStrokes)(struct ModifierData *md, const struct 
EvaluationContext *eval_ctx,
+                             struct Object *ob, struct bGPDlayer *gpl, struct 
bGPDframe *gpf);
+
+       /* Callback for GP "geometry" modifiers that create extra geometry
+        * in the frame (e.g. Array)
+        *
+        * All parameters function in the same ways as in the deformStrokes() 
callback.
+        *
+        * The modifier_index parameter indicates where the modifier is
+        * in the modifier stack in relation to other modifiers.
+        */
+       void (*generateStrokes)(struct ModifierData *md, const struct 
EvaluationContext *eval_ctx,
+                               struct Object *ob, struct bGPDlayer *gpl, 
struct bGPDframe *gpf,
+                               int modifier_index);
+
+       /* Bake-down GP modifier's effects into the GP datablock.
+        *
+        * This gets called when the user clicks the "Apply" button in the UI.
+        * As such, this callback needs to go through all layers/frames in the
+        * datablock, mutating the geometry and/or creating new 
datablocks/objects
+        */
+       void (*bakeModifierGP)(struct bContext *C, const struct 
EvaluationContext *eval_ctx,
+                           struct ModifierData *md, struct Object *ob);
+
        /********************* Optional functions *********************/
 
        /* Initialize new instance data for this modifier type, this function
diff --git a/source/blender/modifiers/intern/MOD_armature.c 
b/source/blender/modifiers/intern/MOD_armature.c
index 60c7998853e..cb5295082b5 100644
--- a/source/blender/modifiers/intern/MOD_armature.c
+++ b/source/blender/modifiers/intern/MOD_armature.c
@@ -199,6 +199,9 @@ ModifierTypeInfo modifierType_Armature = {
        /* deformMatricesEM */  deformMatricesEM,
        /* applyModifier */     NULL,
        /* applyModifierEM */   NULL,
+       /* deformStrokes */     NULL,
+       /* generateStrokes */   NULL,
+       /* bakeModifierGP */    NULL,
        /* initData */          initData,
        /* requiredDataMask */  requiredDataMask,
        /* freeData */          NULL,
diff --git a/source/blender/modifiers/intern/MOD_array.c 
b/source/blender/modifiers/intern/MOD_array.c
index 66ff1fe0a85..a99170c5a31 100644
--- a/source/blender/modifiers/intern/MOD_array.c
+++ b/source/blender/modifiers/intern/MOD_array.c
@@ -752,6 +752,9 @@ ModifierTypeInfo modifierType_Array = {
        /* deformMatricesEM */  NULL,
        /* applyModifier */     applyModifier,
        /* applyModifierEM */   NULL,
+       /* deformStrokes */     NULL,
+       /* generateStrokes */   NULL,
+       /* bakeModifierGP */    NULL,
        /* initData */          initData,
        /* requiredDataMask */  NULL,
        /* freeData */          NULL,
diff --git a/source/blender/modifiers/intern/MOD_bevel.c 
b/source/blender/modifiers/intern/MOD_bevel.c
index 35b8a3fd9cb..9140b0278e1 100644
--- a/source/blender/modifiers/intern/MOD_bevel.c
+++ b/source/blender/modifiers/intern/MOD_bevel.c
@@ -201,6 +201,9 @@ ModifierTypeInfo modifierType_Bevel = {
        /* deformMatricesEM */  NULL,
        /* applyModifier */     applyModifier,
        /* applyModifierEM */   NULL,
+       /* deformStrokes */     NULL,
+       /* generateStrokes */   NULL,
+       /* bakeModifierGP */    NULL,
        /* initData */          initData,
        /* requiredDataMask */  requiredDataMask,
        /* freeData */          NULL,
diff --git a/source/blender/modifiers/intern/MOD_boolean.c 
b/source/blender/modifiers/intern/MOD_boolean.c
index 5811017f745..4ab2ebaf977 100644
--- a/source/blender/modifiers/intern/MOD_boolean.c
+++ b/source/blender/modifiers/intern/MOD_boolean.c
@@ -461,6 +461,9 @@ ModifierTypeInfo modifierType_Boolean = {
        /* deformMatricesEM */  NULL,
        /* applyModifier */     applyModifier,
        /* applyModifierEM */   NULL,
+       /* deformStrokes */     NULL,
+       /* generateStrokes */   NULL,
+       /* bakeModifierGP */    NULL,
        /* initData */          initData,
        /* requiredDataMask */  requiredDataMask,
        /* freeData */          NULL,
diff --git a/source/blender/modifiers/intern/MOD_build.c 
b/source/blender/modifiers/intern/MOD_build.c
index 0a0ad11fe16..6c55df947ce 100644
--- a/source/blender/modifiers/intern/MOD_build.c
+++ b/source/blender/modifiers/intern/MOD_build.c
@@ -320,6 +320,9 @@ ModifierTypeInfo modifierType_Build = {
        /* deformMatricesEM */  NULL,
        /* applyModifier */     applyModifier,
        /* applyModifierEM */   NULL,
+       /* deformStrokes */     NULL,
+       /* generateStrokes */   NULL,
+       /* bakeModifierGP */    NULL,
        /* initData */          initData,
        /* requiredDataMask */  NULL,
        /* freeData */          NULL,
diff --git a/source/blender/modifiers/intern/MOD_cast.c 
b/source/blender/modifiers/intern/MOD_cast.c
index 93a5b9607bf..90fac97528f 100644
--- a/source/blender/modifiers/intern/MOD_cast.c
+++ b/source/blender/modifiers/intern/MOD_cast.c
@@ -491,6 +491,9 @@ ModifierTypeInfo modifierType_Cast = {
        /* deformMatricesEM */  NULL,
        /* applyModifier */     NULL,
        /* applyModifierEM */   NULL,
+       /* deformStrokes */     NULL,
+       /* generateStrokes */   NULL,
+       /* bakeModifierGP */    NULL,
        /* initData */          initData,
        /* requiredDataMask */  requiredDataMask,
        /* freeData */          NULL,
diff --git a/source/blender/modifiers/intern/MOD_cloth.c 
b/source/blender/modifiers/intern/MOD_cloth.c
index b234cc63228..2e3d6c58062 100644
--- a/source/blender/modifiers/intern/MOD_cloth.c
+++ b/source/blender/modifiers/intern/MOD_cloth.c
@@ -235,6 +235,9 @@ ModifierTypeInfo modifierType_Cloth = {
        /* deformMatricesEM */  NULL,
        /* applyModifier */     NULL,
        /* applyModifierEM */   NULL,
+       /* deformStrokes */     NULL,
+       /* generateStrokes */   NULL,
+       /* bakeModifierGP */    NULL,
        /* initData */          initData,
        /* requiredDataMask */  requiredDataMask,
        /* freeData */          freeData,
diff --git a/source/blender/modifiers/intern/MOD_collision.c 
b/source/blender/modifiers/intern/MOD_collision.c
index b9a2310366a..27a4d6fb363 100644
--- a/source/blender/modifiers/intern/MOD_collision.c
+++ b/source/blender/modifiers/intern/MOD_collision.c
@@ -260,6 +260,9 @@ ModifierTypeInfo modifierType_Collision = {
        /* deformMatricesEM */  NULL,
        /* applyModifier */     NULL,
        /* applyModifierEM */   NULL,
+       /* deformStrokes */     NULL,
+       /* generateStrokes */   NULL,
+       /* bakeModifierGP */    NULL,
        /* initData */          initData,
        /* requiredDataMask */  NULL,
        /* freeData */          freeData,
diff --git a/source/blender/modifiers/intern/MOD_correctivesmooth.c 
b/source/blender/modifiers/intern/MOD_correctivesmooth.c
index 716b918d0f0..4f0af89bc0e 100644
--- a/source/blender/modifiers/intern/MOD_correctivesmooth.c
+++ b/source/blender/modifiers/intern/MOD_correctivesmooth.c
@@ -755,6 +755,9 @@ ModifierTypeInfo modifierType_CorrectiveSmooth = {
        /* deformMatricesEM */  NULL,
        /* applyModifier */     NULL,
        /* applyModifierEM */   NULL,
+       /* deformStrokes */     NULL,
+       /* generateStrokes */   NULL,
+       /* bakeModifierGP */    NULL,
        /* initData */          initData,
        /* requiredDataMask */  requiredDataMask,
        /* freeData */          freeData,
diff --git a/source/blender/modifiers/intern/MOD_curve.c 
b/source/blender/modifiers/intern/MOD_curve.c
index 198f08334f0..f009a5ffbb0 100644
--- a/source/blender/modifiers/intern/MOD_curve.c
+++ b/source/blender/modifiers/intern/MOD_curve.c
@@ -159,6 +159,9 @@ ModifierTypeInfo modifierType_Curve = {
        /* deformMatricesEM */  NULL,
        /* applyModifier */     NULL,
        /* applyModifierEM */   NULL,
+       /* deformStrokes */     NULL,
+       /* generateStrokes */   NULL,
+       /* bakeModifierGP */    NULL,
        /* initData */          initData,
        /* requiredDataMask */  requiredDataMask,
        /* freeData */          NULL,
diff --git a/source/blender/modifiers/intern/MOD_datatransfer.c 
b/source/blender/modifiers/intern/MOD_datatransfer.c
index e7069937868..a2e65b885d0 100644
--- a/source/blender/modifiers/intern/MOD_datatransfer.c
+++ b/source/blender/modifiers/intern/MOD_datatransfer.c
@@ -232,6 +232,9 @@ ModifierTypeInfo modifierType_DataTransfer = {
        /* deformMatricesEM */  NULL,
        /* applyModifier */     applyModifier,
        /* applyModifierEM */   NULL,
+       /* deformStrokes */     NULL,
+       /* generateStrokes */   NULL,
+       /* bakeModifierGP */    NULL,
        /* initData */          initData,
        /* requiredDataMask */  requiredDataMask,
        /* freeData */          NULL,
diff --git a/source/blender/modifiers/intern/MOD_decimate.c 
b/source/blender/modifiers/intern/MOD_decimate.c
index 078a3085fc7..5793352d9de 100644
--- a/source/blender/modifiers/intern/MOD_decimate.c
+++ b/source/blender/modifiers/intern/MOD_decimate.c
@@ -223,6 +223,9 @@ ModifierTypeInfo modifierType_Decimate = {
        /* deformMatricesEM */  NULL,
        /* applyModifier */     applyModifier,
        /* applyModifierEM */   NULL,
+       /* deformStrokes */     NULL,
+       /* generateStrokes */   NULL,
+       /* bakeModifierGP */    NULL,
        /* initData */          initData,
        /* requiredDataMask *

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to