Cleanup: VFont: Move to IDTypeInfo and remove unused BKE API
authorDalai Felinto <dalai@blender.org>
Fri, 6 Mar 2020 19:00:42 +0000 (20:00 +0100)
committerDalai Felinto <dalai@blender.org>
Fri, 6 Mar 2020 19:07:02 +0000 (20:07 +0100)
This was particularly strange because we had a _free_data() function.
But still the one I replaced was of course the _free() one.

And we should rename the _free_data_ function later to avoid confusions.

source/blender/blenkernel/BKE_font.h
source/blender/blenkernel/BKE_idtype.h
source/blender/blenkernel/intern/font.c
source/blender/blenkernel/intern/idtype.c
source/blender/blenkernel/intern/lib_id.c
source/blender/blenkernel/intern/lib_id_delete.c

index 31938c485293f1e3e5be56d8348c184cf058e62b..35f7d8b7d535deb93e1ef135fa286b3f064a8cbb 100644 (file)
@@ -71,19 +71,11 @@ bool BKE_vfont_is_builtin(struct VFont *vfont);
 void BKE_vfont_builtin_register(void *mem, int size);
 
 void BKE_vfont_free_data(struct VFont *vfont);
-void BKE_vfont_free(struct VFont *sc);
-void BKE_vfont_init(struct VFont *vfont);
-void BKE_vfont_copy_data(struct Main *bmain,
-                         struct VFont *vfont_dst,
-                         const struct VFont *vfont_src,
-                         const int flag);
 struct VFont *BKE_vfont_builtin_get(void);
 struct VFont *BKE_vfont_load(struct Main *bmain, const char *filepath);
 struct VFont *BKE_vfont_load_exists_ex(struct Main *bmain, const char *filepath, bool *r_exists);
 struct VFont *BKE_vfont_load_exists(struct Main *bmain, const char *filepath);
 
-void BKE_vfont_make_local(struct Main *bmain, struct VFont *vfont, const int flags);
-
 bool BKE_vfont_to_curve_ex(struct Object *ob,
                            struct Curve *cu,
                            int mode,
index 7289ceb95df37834522f1aa5343263e6d71704f8..77e9580a9fdb7919cc4bc02eed4ad4b46b0cec18 100644 (file)
@@ -140,7 +140,7 @@ extern IDTypeInfo IDType_ID_CA;
 extern IDTypeInfo IDType_ID_KE;
 extern IDTypeInfo IDType_ID_WO;
 extern IDTypeInfo IDType_ID_SCR;
-// extern IDTypeInfo IDType_ID_VF;
+extern IDTypeInfo IDType_ID_VF;
 extern IDTypeInfo IDType_ID_TXT;
 // extern IDTypeInfo IDType_ID_SPK;
 // extern IDTypeInfo IDType_ID_SO;
index 44c59bcb00c44fcc83fd38ba6bd0823bbc7de6a3..ec6a265ed96f2f9cfe509328228f3b1313d3a378 100644 (file)
@@ -41,6 +41,8 @@
 #include "BLI_threads.h"
 #include "BLI_vfontdata.h"
 
+#include "BLT_translation.h"
+
 #include "DNA_packedFile_types.h"
 #include "DNA_curve_types.h"
 #include "DNA_vfont_types.h"
@@ -50,6 +52,7 @@
 #include "BKE_lib_id.h"
 #include "BKE_font.h"
 #include "BKE_global.h"
+#include "BKE_idtype.h"
 #include "BKE_main.h"
 #include "BKE_anim.h"
 #include "BKE_curve.h"
 static CLG_LogRef LOG = {"bke.data_transfer"};
 static ThreadRWMutex vfont_rwlock = BLI_RWLOCK_INITIALIZER;
 
+/**************************** Prototypes **************************/
+
+static PackedFile *get_builtin_packedfile(void);
+
+/****************************** VFont Datablock ************************/
+
+static void vfont_init_data(ID *id)
+{
+  VFont *vfont = (VFont *)id;
+  PackedFile *pf = get_builtin_packedfile();
+
+  if (pf) {
+    VFontData *vfd;
+
+    vfd = BLI_vfontdata_from_freetypefont(pf);
+    if (vfd) {
+      vfont->data = vfd;
+
+      BLI_strncpy(vfont->name, FO_BUILTIN_NAME, sizeof(vfont->name));
+    }
+
+    /* Free the packed file */
+    BKE_packedfile_free(pf);
+  }
+}
+
+static void vfont_copy_data(Main *UNUSED(bmain),
+                            ID *id_dst,
+                            const ID *UNUSED(id_src),
+                            const int flag)
+{
+  VFont *vfont_dst = (VFont *)id_dst;
+
+  /* We never handle usercount here for own data. */
+  const int flag_subdata = flag | LIB_ID_CREATE_NO_USER_REFCOUNT;
+
+  /* Just to be sure, should not have any value actually after reading time. */
+  vfont_dst->temp_pf = NULL;
+
+  if (vfont_dst->packedfile) {
+    vfont_dst->packedfile = BKE_packedfile_duplicate(vfont_dst->packedfile);
+  }
+
+  if (vfont_dst->data) {
+    vfont_dst->data = BLI_vfontdata_copy(vfont_dst->data, flag_subdata);
+  }
+}
+
+/** Free (or release) any data used by this font (does not free the font itself). */
+static void vfont_free_data(ID *id)
+{
+  VFont *vfont = (VFont *)id;
+  BKE_vfont_free_data(vfont);
+
+  if (vfont->packedfile) {
+    BKE_packedfile_free(vfont->packedfile);
+    vfont->packedfile = NULL;
+  }
+}
+
+IDTypeInfo IDType_ID_VF = {
+    .id_code = ID_VF,
+    .id_filter = FILTER_ID_VF,
+    .main_listbase_index = INDEX_ID_VF,
+    .struct_size = sizeof(VFont),
+    .name = "Font",
+    .name_plural = "fonts",
+    .translation_context = BLT_I18NCONTEXT_ID_VFONT,
+    .flags = 0,
+
+    .init_data = vfont_init_data,
+    .copy_data = vfont_copy_data,
+    .free_data = vfont_free_data,
+    .make_local = NULL,
+};
+
+/***************************** VFont *******************************/
+
 /* The vfont code */
 void BKE_vfont_free_data(struct VFont *vfont)
 {
@@ -90,37 +171,6 @@ void BKE_vfont_free_data(struct VFont *vfont)
   }
 }
 
-/** Free (or release) any data used by this font (does not free the font itself). */
-void BKE_vfont_free(struct VFont *vf)
-{
-  BKE_vfont_free_data(vf);
-
-  if (vf->packedfile) {
-    BKE_packedfile_free(vf->packedfile);
-    vf->packedfile = NULL;
-  }
-}
-
-void BKE_vfont_copy_data(Main *UNUSED(bmain),
-                         VFont *vfont_dst,
-                         const VFont *UNUSED(vfont_src),
-                         const int flag)
-{
-  /* We never handle usercount here for own data. */
-  const int flag_subdata = flag | LIB_ID_CREATE_NO_USER_REFCOUNT;
-
-  /* Just to be sure, should not have any value actually after reading time. */
-  vfont_dst->temp_pf = NULL;
-
-  if (vfont_dst->packedfile) {
-    vfont_dst->packedfile = BKE_packedfile_duplicate(vfont_dst->packedfile);
-  }
-
-  if (vfont_dst->data) {
-    vfont_dst->data = BLI_vfontdata_copy(vfont_dst->data, flag_subdata);
-  }
-}
-
 static void *builtin_font_data = NULL;
 static int builtin_font_size = 0;
 
@@ -218,26 +268,6 @@ static VFontData *vfont_get_data(VFont *vfont)
   return vfont->data;
 }
 
-/* Bad naming actually in this case... */
-void BKE_vfont_init(VFont *vfont)
-{
-  PackedFile *pf = get_builtin_packedfile();
-
-  if (pf) {
-    VFontData *vfd;
-
-    vfd = BLI_vfontdata_from_freetypefont(pf);
-    if (vfd) {
-      vfont->data = vfd;
-
-      BLI_strncpy(vfont->name, FO_BUILTIN_NAME, sizeof(vfont->name));
-    }
-
-    /* Free the packed file */
-    BKE_packedfile_free(pf);
-  }
-}
-
 VFont *BKE_vfont_load(Main *bmain, const char *filepath)
 {
   char filename[FILE_MAXFILE];
@@ -325,11 +355,6 @@ VFont *BKE_vfont_load_exists(struct Main *bmain, const char *filepath)
   return BKE_vfont_load_exists_ex(bmain, filepath, NULL);
 }
 
-void BKE_vfont_make_local(Main *bmain, VFont *vfont, const int flags)
-{
-  BKE_lib_id_make_local_generic(bmain, &vfont->id, flags);
-}
-
 static VFont *which_vfont(Curve *cu, CharInfo *info)
 {
   switch (info->flag & (CU_CHINFO_BOLD | CU_CHINFO_ITALIC)) {
index 3ff8a1bebd526ff0021faf2ffa27962763e9dcdd..222c201a50e7bdc7d9a5984771a5504466354f77 100644 (file)
@@ -67,7 +67,7 @@ static void id_type_init(void)
   INIT_TYPE(ID_KE);
   INIT_TYPE(ID_WO);
   INIT_TYPE(ID_SCR);
-  // INIT_TYPE(ID_VF);
+   INIT_TYPE(ID_VF);
   INIT_TYPE(ID_TXT);
   // INIT_TYPE(ID_SPK);
   // INIT_TYPE(ID_SO);
index b74bb134dd3ea446ba717df3d5869623d8be185c..4843bd1bb2b948a399690700994b13cd80326252 100644 (file)
@@ -511,9 +511,7 @@ bool BKE_lib_id_make_local(Main *bmain, ID *id, const bool test, const int flags
       BLI_assert(0);
       return true;
     case ID_VF:
-      if (!test) {
-        BKE_vfont_make_local(bmain, (VFont *)id, flags);
-      }
+      BLI_assert(0);
       return true;
     case ID_TXT:
       BLI_assert(0);
@@ -784,7 +782,7 @@ bool BKE_id_copy_ex(Main *bmain, const ID *id, ID **r_newid, const int flag)
         BKE_sound_copy_data(bmain, (bSound *)*r_newid, (bSound *)id, flag);
         break;
       case ID_VF:
-        BKE_vfont_copy_data(bmain, (VFont *)*r_newid, (VFont *)id, flag);
+        BLI_assert(0);
         break;
       case ID_LI:
       case ID_SCR:
@@ -1358,7 +1356,7 @@ void BKE_libblock_init_empty(ID *id)
       /* Nothing to do. */
       break;
     case ID_VF:
-      BKE_vfont_init((VFont *)id);
+      BLI_assert(0);
       break;
     case ID_TXT:
       BLI_assert(0);
index 634e7c59c08a7fa6adfa18e68769d55192d46bc3..77323891b45abe3543fa7f9f6617909c5a1724d7 100644 (file)
@@ -184,7 +184,7 @@ void BKE_libblock_free_datablock(ID *id, const int UNUSED(flag))
       BLI_assert(0);
       break;
     case ID_VF:
-      BKE_vfont_free((VFont *)id);
+      BLI_assert(0);
       break;
     case ID_TXT:
       BLI_assert(0);