From da7fcd3e528bfef30472ef557980bef098c46fcb Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Fri, 6 Mar 2020 16:08:24 +0100 Subject: Cleanup: MetaBall: Move to IDTypeInfo and remove unused BKE API. --- source/blender/blenkernel/BKE_idtype.h | 2 +- source/blender/blenkernel/BKE_mball.h | 8 -- source/blender/blenkernel/intern/idtype.c | 2 +- source/blender/blenkernel/intern/lib_id.c | 8 +- source/blender/blenkernel/intern/lib_id_delete.c | 2 +- source/blender/blenkernel/intern/mball.c | 96 +++++++++++++----------- 6 files changed, 59 insertions(+), 59 deletions(-) (limited to 'source/blender/blenkernel') diff --git a/source/blender/blenkernel/BKE_idtype.h b/source/blender/blenkernel/BKE_idtype.h index b84543c190c..5dbbaa6b6dd 100644 --- a/source/blender/blenkernel/BKE_idtype.h +++ b/source/blender/blenkernel/BKE_idtype.h @@ -129,7 +129,7 @@ extern IDTypeInfo IDType_ID_LI; extern IDTypeInfo IDType_ID_OB; extern IDTypeInfo IDType_ID_ME; extern IDTypeInfo IDType_ID_CU; -// extern IDTypeInfo IDType_ID_MB; +extern IDTypeInfo IDType_ID_MB; // extern IDTypeInfo IDType_ID_MA; // extern IDTypeInfo IDType_ID_TE; // extern IDTypeInfo IDType_ID_IM; diff --git a/source/blender/blenkernel/BKE_mball.h b/source/blender/blenkernel/BKE_mball.h index 799ede4af9f..5f51f528d14 100644 --- a/source/blender/blenkernel/BKE_mball.h +++ b/source/blender/blenkernel/BKE_mball.h @@ -36,17 +36,9 @@ struct MetaElem; struct Object; struct Scene; -void BKE_mball_free(struct MetaBall *mb); -void BKE_mball_init(struct MetaBall *mb); struct MetaBall *BKE_mball_add(struct Main *bmain, const char *name); -void BKE_mball_copy_data(struct Main *bmain, - struct MetaBall *mb_dst, - const struct MetaBall *mb_src, - const int flag); struct MetaBall *BKE_mball_copy(struct Main *bmain, const struct MetaBall *mb); -void BKE_mball_make_local(struct Main *bmain, struct MetaBall *mb, const int flags); - bool BKE_mball_is_any_selected(const struct MetaBall *mb); bool BKE_mball_is_any_selected_multi(struct Base **bases, int bases_len); bool BKE_mball_is_any_unselected(const struct MetaBall *mb); diff --git a/source/blender/blenkernel/intern/idtype.c b/source/blender/blenkernel/intern/idtype.c index 49fc8ea55aa..f095d6d696a 100644 --- a/source/blender/blenkernel/intern/idtype.c +++ b/source/blender/blenkernel/intern/idtype.c @@ -56,7 +56,7 @@ static void id_type_init(void) INIT_TYPE(ID_OB); INIT_TYPE(ID_ME); INIT_TYPE(ID_CU); - // INIT_TYPE(ID_MB); + INIT_TYPE(ID_MB); // INIT_TYPE(ID_MA); // INIT_TYPE(ID_TE); // INIT_TYPE(ID_IM); diff --git a/source/blender/blenkernel/intern/lib_id.c b/source/blender/blenkernel/intern/lib_id.c index 9902987bd8e..5015c501312 100644 --- a/source/blender/blenkernel/intern/lib_id.c +++ b/source/blender/blenkernel/intern/lib_id.c @@ -479,9 +479,7 @@ bool BKE_lib_id_make_local(Main *bmain, ID *id, const bool test, const int flags BLI_assert(0); return true; case ID_MB: - if (!test) { - BKE_mball_make_local(bmain, (MetaBall *)id, flags); - } + BLI_assert(0); return true; case ID_MA: if (!test) { @@ -720,7 +718,7 @@ bool BKE_id_copy_ex(Main *bmain, const ID *id, ID **r_newid, const int flag) BLI_assert(0); break; case ID_MB: - BKE_mball_copy_data(bmain, (MetaBall *)*r_newid, (MetaBall *)id, flag); + BLI_assert(0); break; case ID_MA: BKE_material_copy_data(bmain, (Material *)*r_newid, (Material *)id, flag); @@ -1341,7 +1339,7 @@ void BKE_libblock_init_empty(ID *id) BLI_assert(0); break; case ID_MB: - BKE_mball_init((MetaBall *)id); + BLI_assert(0); break; case ID_MA: BKE_material_init((Material *)id); diff --git a/source/blender/blenkernel/intern/lib_id_delete.c b/source/blender/blenkernel/intern/lib_id_delete.c index e097ccf1ce6..286b04c5a98 100644 --- a/source/blender/blenkernel/intern/lib_id_delete.c +++ b/source/blender/blenkernel/intern/lib_id_delete.c @@ -152,7 +152,7 @@ void BKE_libblock_free_datablock(ID *id, const int UNUSED(flag)) BLI_assert(0); break; case ID_MB: - BKE_mball_free((MetaBall *)id); + BLI_assert(0); break; case ID_MA: BKE_material_free((Material *)id); diff --git a/source/blender/blenkernel/intern/mball.c b/source/blender/blenkernel/intern/mball.c index 15a3229aaa7..3154e4c8af9 100644 --- a/source/blender/blenkernel/intern/mball.c +++ b/source/blender/blenkernel/intern/mball.c @@ -46,10 +46,13 @@ #include "BLI_string_utils.h" #include "BLI_utildefines.h" +#include "BLT_translation.h" + #include "BKE_main.h" #include "BKE_animsys.h" #include "BKE_curve.h" +#include "BKE_idtype.h" #include "BKE_scene.h" #include "BKE_lib_id.h" #include "BKE_displist.h" @@ -59,65 +62,77 @@ #include "DEG_depsgraph.h" -/* Functions */ +static void metaball_init_data(ID *id) +{ + MetaBall *metaball = (MetaBall *)id; + + BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(metaball, id)); -/** Free (or release) any data used by this mball (does not free the mball itself). */ -void BKE_mball_free(MetaBall *mb) + MEMCPY_STRUCT_AFTER(metaball, DNA_struct_default_get(MetaBall), id); +} + +static void metaball_copy_data(Main *UNUSED(bmain), + ID *id_dst, + const ID *id_src, + const int UNUSED(flag)) { - BKE_animdata_free((ID *)mb, false); + MetaBall *metaball_dst = (MetaBall *)id_dst; + const MetaBall *metaball_src = (const MetaBall *)id_src; - BKE_mball_batch_cache_free(mb); + BLI_duplicatelist(&metaball_dst->elems, &metaball_src->elems); - MEM_SAFE_FREE(mb->mat); + metaball_dst->mat = MEM_dupallocN(metaball_src->mat); - BLI_freelistN(&mb->elems); - if (mb->disp.first) { - BKE_displist_free(&mb->disp); - } + metaball_dst->editelems = NULL; + metaball_dst->lastelem = NULL; + metaball_dst->batch_cache = NULL; } -void BKE_mball_init(MetaBall *mb) +static void metaball_free_data(ID *id) { - BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(mb, id)); + MetaBall *metaball = (MetaBall *)id; - MEMCPY_STRUCT_AFTER(mb, DNA_struct_default_get(MetaBall), id); + BKE_animdata_free((ID *)metaball, false); + + BKE_mball_batch_cache_free(metaball); + + MEM_SAFE_FREE(metaball->mat); + + BLI_freelistN(&metaball->elems); + if (metaball->disp.first) { + BKE_displist_free(&metaball->disp); + } } +IDTypeInfo IDType_ID_MB = { + .id_code = ID_MB, + .id_filter = FILTER_ID_MB, + .main_listbase_index = INDEX_ID_MB, + .struct_size = sizeof(MetaBall), + .name = "Metaball", + .name_plural = "metaballs", + .translation_context = BLT_I18NCONTEXT_ID_METABALL, + .flags = 0, + + .init_data = metaball_init_data, + .copy_data = metaball_copy_data, + .free_data = metaball_free_data, + .make_local = NULL, +}; + +/* Functions */ + MetaBall *BKE_mball_add(Main *bmain, const char *name) { MetaBall *mb; mb = BKE_libblock_alloc(bmain, ID_MB, name, 0); - BKE_mball_init(mb); + metaball_init_data(&mb->id); return mb; } -/** - * Only copy internal data of MetaBall ID from source - * to already allocated/initialized destination. - * You probably never want to use that directly, - * use #BKE_id_copy or #BKE_id_copy_ex for typical needs. - * - * WARNING! This function will not handle ID user count! - * - * \param flag: Copying options (see BKE_lib_id.h's LIB_ID_COPY_... flags for more). - */ -void BKE_mball_copy_data(Main *UNUSED(bmain), - MetaBall *mb_dst, - const MetaBall *mb_src, - const int UNUSED(flag)) -{ - BLI_duplicatelist(&mb_dst->elems, &mb_src->elems); - - mb_dst->mat = MEM_dupallocN(mb_src->mat); - - mb_dst->editelems = NULL; - mb_dst->lastelem = NULL; - mb_dst->batch_cache = NULL; -} - MetaBall *BKE_mball_copy(Main *bmain, const MetaBall *mb) { MetaBall *mb_copy; @@ -125,11 +140,6 @@ MetaBall *BKE_mball_copy(Main *bmain, const MetaBall *mb) return mb_copy; } -void BKE_mball_make_local(Main *bmain, MetaBall *mb, const int flags) -{ - BKE_lib_id_make_local_generic(bmain, &mb->id, flags); -} - /* most simple meta-element adding function * don't do context manipulation here (rna uses) */ MetaElem *BKE_mball_element_add(MetaBall *mb, const int type) -- cgit v1.2.3