diff options
author | Jacques Lucke <jacques@blender.org> | 2020-11-06 19:22:20 +0300 |
---|---|---|
committer | Jacques Lucke <jacques@blender.org> | 2020-11-06 19:22:20 +0300 |
commit | 57414e6d1de53c1c0c32304252a2e790d2fc4786 (patch) | |
tree | d770988ea3339adfccde7b8da21effb7790a40f5 /source/blender/blenloader/intern | |
parent | 019407810b9eeebce0e7fdaf5fa89906a40841ed (diff) |
Refactor: move gpencil modifier .blend I/O to blenkernel
Ref T76372.
Diffstat (limited to 'source/blender/blenloader/intern')
-rw-r--r-- | source/blender/blenloader/intern/readfile.c | 95 | ||||
-rw-r--r-- | source/blender/blenloader/intern/writefile.c | 67 |
2 files changed, 3 insertions, 159 deletions
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index fa1e832c9f8..2b93f5222db 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -2745,18 +2745,6 @@ void blo_do_versions_key_uidgen(Key *key) /** \name Read ID: Object * \{ */ -static void lib_link_gpencil_modifiers(BlendLibReader *reader, Object *ob) -{ - BKE_gpencil_modifiers_foreach_ID_link(ob, BKE_object_modifiers_lib_link_common, reader); - - /* If linking from a library, clear 'local' library override flag. */ - if (ob->id.lib != NULL) { - LISTBASE_FOREACH (GpencilModifierData *, mod, &ob->greasepencil_modifiers) { - mod->flag &= ~eGpencilModifierFlag_OverrideLibrary_Local; - } - } -} - static void lib_link_object(BlendLibReader *reader, Object *ob) { bool warn = false; @@ -2911,7 +2899,7 @@ static void lib_link_object(BlendLibReader *reader, Object *ob) BKE_particle_system_blend_read_lib(reader, ob, &ob->id, &ob->particlesystem); BKE_modifier_blend_read_lib(reader, ob); - lib_link_gpencil_modifiers(reader, ob); + BKE_gpencil_modifier_blend_read_lib(reader, ob); BKE_shaderfx_blend_read_lib(reader, ob); if (ob->rigidbody_constraint) { @@ -2988,85 +2976,6 @@ static void direct_link_pose(BlendDataReader *reader, bPose *pose) } } -static void direct_link_gpencil_modifiers(BlendDataReader *reader, ListBase *lb) -{ - BLO_read_list(reader, lb); - - LISTBASE_FOREACH (GpencilModifierData *, md, lb) { - md->error = NULL; - - /* if modifiers disappear, or for upward compatibility */ - if (NULL == BKE_gpencil_modifier_get_info(md->type)) { - md->type = eModifierType_None; - } - - if (md->type == eGpencilModifierType_Lattice) { - LatticeGpencilModifierData *gpmd = (LatticeGpencilModifierData *)md; - gpmd->cache_data = NULL; - } - else if (md->type == eGpencilModifierType_Hook) { - HookGpencilModifierData *hmd = (HookGpencilModifierData *)md; - - BLO_read_data_address(reader, &hmd->curfalloff); - if (hmd->curfalloff) { - BKE_curvemapping_blend_read(reader, hmd->curfalloff); - } - } - else if (md->type == eGpencilModifierType_Noise) { - NoiseGpencilModifierData *gpmd = (NoiseGpencilModifierData *)md; - - BLO_read_data_address(reader, &gpmd->curve_intensity); - if (gpmd->curve_intensity) { - BKE_curvemapping_blend_read(reader, gpmd->curve_intensity); - /* initialize the curve. Maybe this could be moved to modififer logic */ - BKE_curvemapping_init(gpmd->curve_intensity); - } - } - else if (md->type == eGpencilModifierType_Thick) { - ThickGpencilModifierData *gpmd = (ThickGpencilModifierData *)md; - - BLO_read_data_address(reader, &gpmd->curve_thickness); - if (gpmd->curve_thickness) { - BKE_curvemapping_blend_read(reader, gpmd->curve_thickness); - BKE_curvemapping_init(gpmd->curve_thickness); - } - } - else if (md->type == eGpencilModifierType_Tint) { - TintGpencilModifierData *gpmd = (TintGpencilModifierData *)md; - BLO_read_data_address(reader, &gpmd->colorband); - BLO_read_data_address(reader, &gpmd->curve_intensity); - if (gpmd->curve_intensity) { - BKE_curvemapping_blend_read(reader, gpmd->curve_intensity); - BKE_curvemapping_init(gpmd->curve_intensity); - } - } - else if (md->type == eGpencilModifierType_Smooth) { - SmoothGpencilModifierData *gpmd = (SmoothGpencilModifierData *)md; - BLO_read_data_address(reader, &gpmd->curve_intensity); - if (gpmd->curve_intensity) { - BKE_curvemapping_blend_read(reader, gpmd->curve_intensity); - BKE_curvemapping_init(gpmd->curve_intensity); - } - } - else if (md->type == eGpencilModifierType_Color) { - ColorGpencilModifierData *gpmd = (ColorGpencilModifierData *)md; - BLO_read_data_address(reader, &gpmd->curve_intensity); - if (gpmd->curve_intensity) { - BKE_curvemapping_blend_read(reader, gpmd->curve_intensity); - BKE_curvemapping_init(gpmd->curve_intensity); - } - } - else if (md->type == eGpencilModifierType_Opacity) { - OpacityGpencilModifierData *gpmd = (OpacityGpencilModifierData *)md; - BLO_read_data_address(reader, &gpmd->curve_intensity); - if (gpmd->curve_intensity) { - BKE_curvemapping_blend_read(reader, gpmd->curve_intensity); - BKE_curvemapping_init(gpmd->curve_intensity); - } - } - } -} - static void direct_link_object(BlendDataReader *reader, Object *ob) { PartEff *paf; @@ -3111,7 +3020,7 @@ static void direct_link_object(BlendDataReader *reader, Object *ob) /* do it here, below old data gets converted */ BKE_modifier_blend_read_data(reader, &ob->modifiers, ob); - direct_link_gpencil_modifiers(reader, &ob->greasepencil_modifiers); + BKE_gpencil_modifier_blend_read_data(reader, &ob->greasepencil_modifiers); BKE_shaderfx_blend_read_data(reader, &ob->shader_fx); BLO_read_list(reader, &ob->effect); diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c index b46880e0373..ea3c81ba121 100644 --- a/source/blender/blenloader/intern/writefile.c +++ b/source/blender/blenloader/intern/writefile.c @@ -942,71 +942,6 @@ static void write_fmaps(BlendWriter *writer, ListBase *fbase) } } -static void write_gpencil_modifiers(BlendWriter *writer, ListBase *modbase) -{ - if (modbase == NULL) { - return; - } - - LISTBASE_FOREACH (GpencilModifierData *, md, modbase) { - const GpencilModifierTypeInfo *mti = BKE_gpencil_modifier_get_info(md->type); - if (mti == NULL) { - return; - } - - BLO_write_struct_by_name(writer, mti->struct_name, md); - - if (md->type == eGpencilModifierType_Thick) { - ThickGpencilModifierData *gpmd = (ThickGpencilModifierData *)md; - - if (gpmd->curve_thickness) { - BKE_curvemapping_blend_write(writer, gpmd->curve_thickness); - } - } - else if (md->type == eGpencilModifierType_Noise) { - NoiseGpencilModifierData *gpmd = (NoiseGpencilModifierData *)md; - - if (gpmd->curve_intensity) { - BKE_curvemapping_blend_write(writer, gpmd->curve_intensity); - } - } - else if (md->type == eGpencilModifierType_Hook) { - HookGpencilModifierData *gpmd = (HookGpencilModifierData *)md; - - if (gpmd->curfalloff) { - BKE_curvemapping_blend_write(writer, gpmd->curfalloff); - } - } - else if (md->type == eGpencilModifierType_Tint) { - TintGpencilModifierData *gpmd = (TintGpencilModifierData *)md; - if (gpmd->colorband) { - BLO_write_struct(writer, ColorBand, gpmd->colorband); - } - if (gpmd->curve_intensity) { - BKE_curvemapping_blend_write(writer, gpmd->curve_intensity); - } - } - else if (md->type == eGpencilModifierType_Smooth) { - SmoothGpencilModifierData *gpmd = (SmoothGpencilModifierData *)md; - if (gpmd->curve_intensity) { - BKE_curvemapping_blend_write(writer, gpmd->curve_intensity); - } - } - else if (md->type == eGpencilModifierType_Color) { - ColorGpencilModifierData *gpmd = (ColorGpencilModifierData *)md; - if (gpmd->curve_intensity) { - BKE_curvemapping_blend_write(writer, gpmd->curve_intensity); - } - } - else if (md->type == eGpencilModifierType_Opacity) { - OpacityGpencilModifierData *gpmd = (OpacityGpencilModifierData *)md; - if (gpmd->curve_intensity) { - BKE_curvemapping_blend_write(writer, gpmd->curve_intensity); - } - } - } -} - static void write_object(BlendWriter *writer, Object *ob, const void *id_address) { const bool is_undo = BLO_write_is_undo(writer); @@ -1072,7 +1007,7 @@ static void write_object(BlendWriter *writer, Object *ob, const void *id_address BKE_particle_system_blend_write(writer, &ob->particlesystem); BKE_modifier_blend_write(writer, &ob->modifiers); - write_gpencil_modifiers(writer, &ob->greasepencil_modifiers); + BKE_gpencil_modifier_blend_write(writer, &ob->greasepencil_modifiers); BKE_shaderfx_blend_write(writer, &ob->shader_fx); BLO_write_struct_list(writer, LinkData, &ob->pc_ids); |