diff options
Diffstat (limited to 'source/blender/gpencil_modifiers/intern/MOD_gpencilsubdiv.c')
-rw-r--r-- | source/blender/gpencil_modifiers/intern/MOD_gpencilsubdiv.c | 123 |
1 files changed, 65 insertions, 58 deletions
diff --git a/source/blender/gpencil_modifiers/intern/MOD_gpencilsubdiv.c b/source/blender/gpencil_modifiers/intern/MOD_gpencilsubdiv.c index b328289af91..a30ad2b898a 100644 --- a/source/blender/gpencil_modifiers/intern/MOD_gpencilsubdiv.c +++ b/source/blender/gpencil_modifiers/intern/MOD_gpencilsubdiv.c @@ -43,80 +43,87 @@ static void initData(GpencilModifierData *md) { - SubdivGpencilModifierData *gpmd = (SubdivGpencilModifierData *)md; - gpmd->pass_index = 0; - gpmd->level = 1; - gpmd->layername[0] = '\0'; + SubdivGpencilModifierData *gpmd = (SubdivGpencilModifierData *)md; + gpmd->pass_index = 0; + gpmd->level = 1; + gpmd->layername[0] = '\0'; } static void copyData(const GpencilModifierData *md, GpencilModifierData *target) { - BKE_gpencil_modifier_copyData_generic(md, target); + BKE_gpencil_modifier_copyData_generic(md, target); } /* subdivide stroke to get more control points */ -static void deformStroke( - GpencilModifierData *md, Depsgraph *UNUSED(depsgraph), - Object *ob, bGPDlayer *gpl, bGPDstroke *gps) +static void deformStroke(GpencilModifierData *md, + Depsgraph *UNUSED(depsgraph), + Object *ob, + bGPDlayer *gpl, + bGPDstroke *gps) { - SubdivGpencilModifierData *mmd = (SubdivGpencilModifierData *)md; - - if (!is_stroke_affected_by_modifier( - ob, - mmd->layername, mmd->pass_index, mmd->layer_pass, 3, gpl, gps, - mmd->flag & GP_SUBDIV_INVERT_LAYER, mmd->flag & GP_SUBDIV_INVERT_PASS, - mmd->flag & GP_SUBDIV_INVERT_LAYERPASS)) - { - return; - } - - BKE_gpencil_subdivide(gps, mmd->level, mmd->flag); + SubdivGpencilModifierData *mmd = (SubdivGpencilModifierData *)md; + + if (!is_stroke_affected_by_modifier(ob, + mmd->layername, + mmd->pass_index, + mmd->layer_pass, + 3, + gpl, + gps, + mmd->flag & GP_SUBDIV_INVERT_LAYER, + mmd->flag & GP_SUBDIV_INVERT_PASS, + mmd->flag & GP_SUBDIV_INVERT_LAYERPASS)) { + return; + } + + BKE_gpencil_subdivide(gps, mmd->level, mmd->flag); } -static void bakeModifier( - struct Main *UNUSED(bmain), Depsgraph *depsgraph, - GpencilModifierData *md, Object *ob) +static void bakeModifier(struct Main *UNUSED(bmain), + Depsgraph *depsgraph, + GpencilModifierData *md, + Object *ob) { - bGPdata *gpd = ob->data; - - for (bGPDlayer *gpl = gpd->layers.first; gpl; gpl = gpl->next) { - for (bGPDframe *gpf = gpl->frames.first; gpf; gpf = gpf->next) { - for (bGPDstroke *gps = gpf->strokes.first; gps; gps = gps->next) { - deformStroke(md, depsgraph, ob, gpl, gps); - } - } - } + bGPdata *gpd = ob->data; + + for (bGPDlayer *gpl = gpd->layers.first; gpl; gpl = gpl->next) { + for (bGPDframe *gpf = gpl->frames.first; gpf; gpf = gpf->next) { + for (bGPDstroke *gps = gpf->strokes.first; gps; gps = gps->next) { + deformStroke(md, depsgraph, ob, gpl, gps); + } + } + } } static int getDuplicationFactor(GpencilModifierData *md) { - SubdivGpencilModifierData *mmd = (SubdivGpencilModifierData *)md; - int t = (mmd->level + 1) * (mmd->level + 1); - CLAMP_MIN(t, 2); - return t; + SubdivGpencilModifierData *mmd = (SubdivGpencilModifierData *)md; + int t = (mmd->level + 1) * (mmd->level + 1); + CLAMP_MIN(t, 2); + return t; } GpencilModifierTypeInfo modifierType_Gpencil_Subdiv = { - /* name */ "Subdivision", - /* structName */ "SubdivGpencilModifierData", - /* structSize */ sizeof(SubdivGpencilModifierData), - /* type */ eGpencilModifierTypeType_Gpencil, - /* flags */ eGpencilModifierTypeFlag_SupportsEditmode, - - /* copyData */ copyData, - - /* deformStroke */ deformStroke, - /* generateStrokes */ NULL, - /* bakeModifier */ bakeModifier, - /* remapTime */ NULL, - - /* initData */ initData, - /* freeData */ NULL, - /* isDisabled */ NULL, - /* updateDepsgraph */ NULL, - /* dependsOnTime */ NULL, - /* foreachObjectLink */ NULL, - /* foreachIDLink */ NULL, - /* foreachTexLink */ NULL, - /* getDuplicationFactor */ getDuplicationFactor, + /* name */ "Subdivision", + /* structName */ "SubdivGpencilModifierData", + /* structSize */ sizeof(SubdivGpencilModifierData), + /* type */ eGpencilModifierTypeType_Gpencil, + /* flags */ eGpencilModifierTypeFlag_SupportsEditmode, + + /* copyData */ copyData, + + /* deformStroke */ deformStroke, + /* generateStrokes */ NULL, + /* bakeModifier */ bakeModifier, + /* remapTime */ NULL, + + /* initData */ initData, + /* freeData */ NULL, + /* isDisabled */ NULL, + /* updateDepsgraph */ NULL, + /* dependsOnTime */ NULL, + /* foreachObjectLink */ NULL, + /* foreachIDLink */ NULL, + /* foreachTexLink */ NULL, + /* getDuplicationFactor */ getDuplicationFactor, }; |