[Bf-blender-cvs] [8e4cc07547a] master: Refactor: move PaintCurve/Palette .blend I/O to IDTypeInfo callbacks

Jacques Lucke noreply at git.blender.org
Thu Sep 10 15:40:48 CEST 2020


Commit: 8e4cc07547a7d3d5474de31ae27ac9d62bf35e9f
Author: Jacques Lucke
Date:   Thu Sep 10 15:40:08 2020 +0200
Branches: master
https://developer.blender.org/rB8e4cc07547a7d3d5474de31ae27ac9d62bf35e9f

Refactor: move PaintCurve/Palette .blend I/O to IDTypeInfo callbacks

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

M	source/blender/blenkernel/intern/paint.c
M	source/blender/blenloader/intern/readfile.c
M	source/blender/blenloader/intern/writefile.c

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

diff --git a/source/blender/blenkernel/intern/paint.c b/source/blender/blenkernel/intern/paint.c
index 278c6c0ee53..545d1bdee13 100644
--- a/source/blender/blenkernel/intern/paint.c
+++ b/source/blender/blenkernel/intern/paint.c
@@ -72,6 +72,8 @@
 
 #include "RNA_enum_types.h"
 
+#include "BLO_read_write.h"
+
 #include "bmesh.h"
 
 static void palette_init_data(ID *id)
@@ -102,6 +104,26 @@ static void palette_free_data(ID *id)
   BLI_freelistN(&palette->colors);
 }
 
+static void palette_blend_write(BlendWriter *writer, ID *id, const void *id_address)
+{
+  Palette *palette = (Palette *)id;
+  if (palette->id.us > 0 || BLO_write_is_undo(writer)) {
+    PaletteColor *color;
+    BLO_write_id_struct(writer, Palette, id_address, &palette->id);
+    BKE_id_blend_write(writer, &palette->id);
+
+    for (color = palette->colors.first; color; color = color->next) {
+      BLO_write_struct(writer, PaletteColor, color);
+    }
+  }
+}
+
+static void palette_blend_read_data(BlendDataReader *reader, ID *id)
+{
+  Palette *palette = (Palette *)id;
+  BLO_read_list(reader, &palette->colors);
+}
+
 IDTypeInfo IDType_ID_PAL = {
     .id_code = ID_PAL,
     .id_filter = FILTER_ID_PAL,
@@ -119,8 +141,8 @@ IDTypeInfo IDType_ID_PAL = {
     .foreach_id = NULL,
     .foreach_cache = NULL,
 
-    .blend_write = NULL,
-    .blend_read_data = NULL,
+    .blend_write = palette_blend_write,
+    .blend_read_data = palette_blend_read_data,
     .blend_read_lib = NULL,
     .blend_read_expand = NULL,
 };
@@ -146,6 +168,23 @@ static void paint_curve_free_data(ID *id)
   paint_curve->tot_points = 0;
 }
 
+static void paint_curve_blend_write(BlendWriter *writer, ID *id, const void *id_address)
+{
+  PaintCurve *pc = (PaintCurve *)id;
+  if (pc->id.us > 0 || BLO_write_is_undo(writer)) {
+    BLO_write_id_struct(writer, PaintCurve, id_address, &pc->id);
+    BKE_id_blend_write(writer, &pc->id);
+
+    BLO_write_struct_array(writer, PaintCurvePoint, pc->tot_points, pc->points);
+  }
+}
+
+static void paint_curve_blend_read_data(BlendDataReader *reader, ID *id)
+{
+  PaintCurve *pc = (PaintCurve *)id;
+  BLO_read_data_address(reader, &pc->points);
+}
+
 IDTypeInfo IDType_ID_PC = {
     .id_code = ID_PC,
     .id_filter = FILTER_ID_PC,
@@ -163,8 +202,8 @@ IDTypeInfo IDType_ID_PC = {
     .foreach_id = NULL,
     .foreach_cache = NULL,
 
-    .blend_write = NULL,
-    .blend_read_data = NULL,
+    .blend_write = paint_curve_blend_write,
+    .blend_read_data = paint_curve_blend_read_data,
     .blend_read_lib = NULL,
     .blend_read_expand = NULL,
 };
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index 1c638079230..139f049533f 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -2579,32 +2579,6 @@ static void direct_link_brush(BlendDataReader *reader, Brush *brush)
 
 /** \} */
 
-/* -------------------------------------------------------------------- */
-/** \name Read ID: Palette
- * \{ */
-
-static void lib_link_palette(BlendLibReader *UNUSED(reader), Palette *UNUSED(palette))
-{
-}
-
-static void direct_link_palette(BlendDataReader *reader, Palette *palette)
-{
-
-  /* palette itself has been read */
-  BLO_read_list(reader, &palette->colors);
-}
-
-static void lib_link_paint_curve(BlendLibReader *UNUSED(reader), PaintCurve *UNUSED(pc))
-{
-}
-
-static void direct_link_paint_curve(BlendDataReader *reader, PaintCurve *pc)
-{
-  BLO_read_data_address(reader, &pc->points);
-}
-
-/** \} */
-
 /* -------------------------------------------------------------------- */
 /** \name Read Animation (legacy for version patching)
  * \{ */
@@ -7335,12 +7309,6 @@ static bool direct_link_id(FileData *fd, Main *main, const int tag, ID *id, ID *
     case ID_MSK:
       direct_link_mask(&reader, (Mask *)id);
       break;
-    case ID_PAL:
-      direct_link_palette(&reader, (Palette *)id);
-      break;
-    case ID_PC:
-      direct_link_paint_curve(&reader, (PaintCurve *)id);
-      break;
     case ID_CF:
       direct_link_cachefile(&reader, (CacheFile *)id);
       break;
@@ -7367,6 +7335,8 @@ static bool direct_link_id(FileData *fd, Main *main, const int tag, ID *id, ID *
     case ID_TXT:
     case ID_VF:
     case ID_MC:
+    case ID_PAL:
+    case ID_PC:
       /* Do nothing. Handled by IDTypeInfo callback. */
       break;
   }
@@ -8005,9 +7975,6 @@ static void lib_link_all(FileData *fd, Main *bmain)
       case ID_PA:
         lib_link_particlesettings(&reader, (ParticleSettings *)id);
         break;
-      case ID_PC:
-        lib_link_paint_curve(&reader, (PaintCurve *)id);
-        break;
       case ID_BR:
         lib_link_brush(&reader, (Brush *)id);
         break;
@@ -8056,9 +8023,6 @@ static void lib_link_all(FileData *fd, Main *bmain)
       case ID_GD:
         lib_link_gpencil(&reader, (bGPdata *)id);
         break;
-      case ID_PAL:
-        lib_link_palette(&reader, (Palette *)id);
-        break;
       case ID_KE:
         lib_link_key(&reader, (Key *)id);
         break;
@@ -8080,6 +8044,8 @@ static void lib_link_all(FileData *fd, Main *bmain)
       case ID_TXT:
       case ID_VF:
       case ID_MC:
+      case ID_PAL:
+      case ID_PC:
         /* Do nothing. Handled by IDTypeInfo callback. */
         break;
     }
diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c
index 82cf8887396..95e86efdc39 100644
--- a/source/blender/blenloader/intern/writefile.c
+++ b/source/blender/blenloader/intern/writefile.c
@@ -2483,29 +2483,6 @@ static void write_brush(BlendWriter *writer, Brush *brush, const void *id_addres
   }
 }
 
-static void write_palette(BlendWriter *writer, Palette *palette, const void *id_address)
-{
-  if (palette->id.us > 0 || BLO_write_is_undo(writer)) {
-    PaletteColor *color;
-    BLO_write_id_struct(writer, Palette, id_address, &palette->id);
-    BKE_id_blend_write(writer, &palette->id);
-
-    for (color = palette->colors.first; color; color = color->next) {
-      BLO_write_struct(writer, PaletteColor, color);
-    }
-  }
-}
-
-static void write_paintcurve(BlendWriter *writer, PaintCurve *pc, const void *id_address)
-{
-  if (pc->id.us > 0 || BLO_write_is_undo(writer)) {
-    BLO_write_id_struct(writer, PaintCurve, id_address, &pc->id);
-    BKE_id_blend_write(writer, &pc->id);
-
-    BLO_write_struct_array(writer, PaintCurvePoint, pc->tot_points, pc->points);
-  }
-}
-
 static void write_mask(BlendWriter *writer, Mask *mask, const void *id_address)
 {
   if (mask->id.us > 0 || BLO_write_is_undo(writer)) {
@@ -3040,12 +3017,6 @@ static bool write_file_handle(Main *mainvar,
           case ID_BR:
             write_brush(&writer, (Brush *)id_buffer, id);
             break;
-          case ID_PAL:
-            write_palette(&writer, (Palette *)id_buffer, id);
-            break;
-          case ID_PC:
-            write_paintcurve(&writer, (PaintCurve *)id_buffer, id);
-            break;
           case ID_GD:
             write_gpencil(&writer, (bGPdata *)id_buffer, id);
             break;
@@ -3072,6 +3043,8 @@ static bool write_file_handle(Main *mainvar,
           case ID_TXT:
           case ID_VF:
           case ID_MC:
+          case ID_PC:
+          case ID_PAL:
             /* Do nothing, handled in IDTypeInfo callback. */
             break;
           case ID_LI:



More information about the Bf-blender-cvs mailing list