[Bf-blender-cvs] [672372583ea] blenloader-api: move curvemapping file handling to blenkernel

Jacques Lucke noreply at git.blender.org
Sat Mar 7 16:24:16 CET 2020


Commit: 672372583ea6db297bd121e03d1ef9e4c595c4fa
Author: Jacques Lucke
Date:   Sat Mar 7 12:52:00 2020 +0100
Branches: blenloader-api
https://developer.blender.org/rB672372583ea6db297bd121e03d1ef9e4c595c4fa

move curvemapping file handling to blenkernel

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

M	source/blender/blenkernel/BKE_colortools.h
M	source/blender/blenkernel/intern/colortools.c
M	source/blender/blenloader/intern/readfile.c
M	source/blender/blenloader/intern/writefile.c

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

diff --git a/source/blender/blenkernel/BKE_colortools.h b/source/blender/blenkernel/BKE_colortools.h
index 94b8d59b3db..5152612040e 100644
--- a/source/blender/blenkernel/BKE_colortools.h
+++ b/source/blender/blenkernel/BKE_colortools.h
@@ -37,6 +37,8 @@ struct Histogram;
 struct ImBuf;
 struct Scopes;
 struct rctf;
+struct BloWriter;
+struct BloReader;
 
 void BKE_curvemapping_set_defaults(
     struct CurveMapping *cumap, int tot, float minx, float miny, float maxx, float maxy);
@@ -51,6 +53,9 @@ void BKE_curvemapping_set_black_white_ex(const float black[3],
 void BKE_curvemapping_set_black_white(struct CurveMapping *cumap,
                                       const float black[3],
                                       const float white[3]);
+void BKE_curvemapping_write_file(struct BloWriter *writer, struct CurveMapping *cumap);
+void BKE_curvemapping_curves_write_file(struct BloWriter *writer, struct CurveMapping *cumap);
+void BKE_curvemapping_read_file(struct BloReader *reader, struct CurveMapping *cumap);
 
 enum {
   CURVEMAP_SLOPE_NEGATIVE = 0,
diff --git a/source/blender/blenkernel/intern/colortools.c b/source/blender/blenkernel/intern/colortools.c
index e2080f04d3a..2f9d46ba3a5 100644
--- a/source/blender/blenkernel/intern/colortools.c
+++ b/source/blender/blenkernel/intern/colortools.c
@@ -44,6 +44,9 @@
 #include "IMB_colormanagement.h"
 #include "IMB_imbuf_types.h"
 
+#include "BLO_writefile.h"
+#include "BLO_readfile.h"
+
 /* ********************************* color curve ********************* */
 
 /* ***************** operations on full struct ************* */
@@ -178,6 +181,30 @@ void BKE_curvemapping_set_black_white(CurveMapping *cumap,
   cumap->changed_timestamp++;
 }
 
+void BKE_curvemapping_write_file(BloWriter *writer, CurveMapping *cumap)
+{
+  BLO_write_struct(writer, CurveMapping, cumap);
+  BKE_curvemapping_curves_write_file(writer, cumap);
+}
+
+void BKE_curvemapping_curves_write_file(BloWriter *writer, CurveMapping *cumap)
+{
+  for (int i = 0; i < CM_TOT; i++) {
+    BLO_write_struct_array(writer, CurveMapPoint, cumap->cm[i].curve, cumap->cm[i].totpoint);
+  }
+}
+
+void BKE_curvemapping_read_file(struct BloReader *reader, struct CurveMapping *cumap)
+{
+  cumap->flag &= ~CUMA_PREMULLED;
+
+  for (int i = 0; i < CM_TOT; i++) {
+    cumap->cm[i].curve = BLO_read_new_address(reader, cumap->cm[i].curve);
+    cumap->cm[i].table = NULL;
+    cumap->cm[i].premultable = NULL;
+  }
+}
+
 /* ***************** operations on single curve ************* */
 /* ********** NOTE: requires BKE_curvemapping_changed() call after ******** */
 
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index 231e0d19cf1..45095322bc5 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -2723,27 +2723,6 @@ static void direct_link_id(FileData *fd, ID *id)
 
 /** \} */
 
-/* -------------------------------------------------------------------- */
-/** \name Read CurveMapping
- * \{ */
-
-/* cuma itself has been read! */
-static void direct_link_curvemapping(FileData *fd, CurveMapping *cumap)
-{
-  int a;
-
-  /* flag seems to be able to hang? Maybe old files... not bad to clear anyway */
-  cumap->flag &= ~CUMA_PREMULLED;
-
-  for (a = 0; a < CM_TOT; a++) {
-    cumap->cm[a].curve = newdataadr(fd, cumap->cm[a].curve);
-    cumap->cm[a].table = NULL;
-    cumap->cm[a].premultable = NULL;
-  }
-}
-
-/** \} */
-
 /* -------------------------------------------------------------------- */
 /** \name Read CurveProfile
  * \{ */
@@ -2797,7 +2776,7 @@ static void direct_link_brush(FileData *fd, Brush *brush)
   brush->gradient = newdataadr(fd, brush->gradient);
 
   if (brush->curve) {
-    direct_link_curvemapping(fd, brush->curve);
+    BKE_curvemapping_read_file(wrap_reader(fd), brush->curve);
   }
   else {
     BKE_brush_curve_preset(brush, CURVE_PRESET_SHARP);
@@ -2813,15 +2792,15 @@ static void direct_link_brush(FileData *fd, Brush *brush)
     brush->gpencil_settings->curve_jitter = newdataadr(fd, brush->gpencil_settings->curve_jitter);
 
     if (brush->gpencil_settings->curve_sensitivity) {
-      direct_link_curvemapping(fd, brush->gpencil_settings->curve_sensitivity);
+      BKE_curvemapping_read_file(wrap_reader(fd), brush->gpencil_settings->curve_sensitivity);
     }
 
     if (brush->gpencil_settings->curve_strength) {
-      direct_link_curvemapping(fd, brush->gpencil_settings->curve_strength);
+      BKE_curvemapping_read_file(wrap_reader(fd), brush->gpencil_settings->curve_strength);
     }
 
     if (brush->gpencil_settings->curve_jitter) {
-      direct_link_curvemapping(fd, brush->gpencil_settings->curve_jitter);
+      BKE_curvemapping_read_file(wrap_reader(fd), brush->gpencil_settings->curve_jitter);
     }
   }
 
@@ -3531,7 +3510,7 @@ static void direct_link_nodetree(FileData *fd, bNodeTree *ntree)
         case CMP_NODE_HUECORRECT:
         case TEX_NODE_CURVE_RGB:
         case TEX_NODE_CURVE_TIME: {
-          direct_link_curvemapping(fd, node->storage);
+          BKE_curvemapping_read_file(wrap_reader(fd), node->storage);
           break;
         }
         case SH_NODE_SCRIPT: {
@@ -3920,7 +3899,7 @@ static void direct_link_light(FileData *fd, Light *la)
 
   la->curfalloff = newdataadr(fd, la->curfalloff);
   if (la->curfalloff) {
-    direct_link_curvemapping(fd, la->curfalloff);
+    BKE_curvemapping_read_file(wrap_reader(fd), la->curfalloff);
   }
 
   la->preview = direct_link_preview_image(fd, la->preview);
@@ -4528,15 +4507,15 @@ static void direct_link_particlesettings(FileData *fd, ParticleSettings *part)
 
   part->clumpcurve = newdataadr(fd, part->clumpcurve);
   if (part->clumpcurve) {
-    direct_link_curvemapping(fd, part->clumpcurve);
+    BKE_curvemapping_read_file(wrap_reader(fd), part->clumpcurve);
   }
   part->roughcurve = newdataadr(fd, part->roughcurve);
   if (part->roughcurve) {
-    direct_link_curvemapping(fd, part->roughcurve);
+    BKE_curvemapping_read_file(wrap_reader(fd), part->roughcurve);
   }
   part->twistcurve = newdataadr(fd, part->twistcurve);
   if (part->twistcurve) {
-    direct_link_curvemapping(fd, part->twistcurve);
+    BKE_curvemapping_read_file(wrap_reader(fd), part->twistcurve);
   }
 
   part->effector_weights = newdataadr(fd, part->effector_weights);
@@ -5587,7 +5566,7 @@ static void direct_link_modifiers(FileData *fd, ListBase *lb, Object *ob)
 
       hmd->curfalloff = newdataadr(fd, hmd->curfalloff);
       if (hmd->curfalloff) {
-        direct_link_curvemapping(fd, hmd->curfalloff);
+        BKE_curvemapping_read_file(wrap_reader(fd), hmd->curfalloff);
       }
     }
     else if (md->type == eModifierType_ParticleSystem) {
@@ -5645,7 +5624,7 @@ static void direct_link_modifiers(FileData *fd, ListBase *lb, Object *ob)
 
       tmd->curfalloff = newdataadr(fd, tmd->curfalloff);
       if (tmd->curfalloff) {
-        direct_link_curvemapping(fd, tmd->curfalloff);
+        BKE_curvemapping_read_file(wrap_reader(fd), tmd->curfalloff);
       }
     }
     else if (md->type == eModifierType_WeightVGEdit) {
@@ -5653,7 +5632,7 @@ static void direct_link_modifiers(FileData *fd, ListBase *lb, Object *ob)
 
       wmd->cmap_curve = newdataadr(fd, wmd->cmap_curve);
       if (wmd->cmap_curve) {
-        direct_link_curvemapping(fd, wmd->cmap_curve);
+        BKE_curvemapping_read_file(wrap_reader(fd), wmd->cmap_curve);
       }
     }
     else if (md->type == eModifierType_LaplacianDeform) {
@@ -5754,7 +5733,7 @@ static void direct_link_gpencil_modifiers(FileData *fd, ListBase *lb)
 
       hmd->curfalloff = newdataadr(fd, hmd->curfalloff);
       if (hmd->curfalloff) {
-        direct_link_curvemapping(fd, hmd->curfalloff);
+        BKE_curvemapping_read_file(wrap_reader(fd), hmd->curfalloff);
       }
     }
     else if (md->type == eGpencilModifierType_Thick) {
@@ -5762,7 +5741,7 @@ static void direct_link_gpencil_modifiers(FileData *fd, ListBase *lb)
 
       gpmd->curve_thickness = newdataadr(fd, gpmd->curve_thickness);
       if (gpmd->curve_thickness) {
-        direct_link_curvemapping(fd, gpmd->curve_thickness);
+        BKE_curvemapping_read_file(wrap_reader(fd), gpmd->curve_thickness);
         /* initialize the curve. Maybe this could be moved to modififer logic */
         BKE_curvemapping_initialize(gpmd->curve_thickness);
       }
@@ -6001,7 +5980,7 @@ static void direct_link_view_settings(FileData *fd, ColorManagedViewSettings *vi
   view_settings->curve_mapping = newdataadr(fd, view_settings->curve_mapping);
 
   if (view_settings->curve_mapping) {
-    direct_link_curvemapping(fd, view_settings->curve_mapping);
+    BKE_curvemapping_read_file(wrap_reader(fd), view_settings->curve_mapping);
   }
 }
 
@@ -6524,7 +6503,7 @@ static void direct_link_paint(FileData *fd, const Scene *scene, Paint *p)
 
   p->cavity_curve = newdataadr(fd, p->cavity_curve);
   if (p->cavity_curve) {
-    direct_link_curvemapping(fd, p->cavity_curve);
+    BKE_curvemapping_read_file(wrap_reader(fd), p->cavity_curve);
   }
   else {
     BKE_paint_cavity_curve_preset(p, CURVE_PRESET_LINE);
@@ -6566,12 +6545,12 @@ static void direct_link_sequence_modifiers(FileData *fd, ListBase *lb)
     if (smd->type == seqModifierType_Curves) {
       CurvesModifierData *cmd = (CurvesModifierData *)smd;
 
-      direct_link_curvemapping(fd, &cmd->curve_mapping);
+      BKE_curvemapping_read_file(wrap_reader(fd), &cmd->curve_mapping);
     }
     else if (smd->type == seqModifierType_HueCorrect) {
       HueCorrectModifierData *hcmd = (HueCorrectModifierData *)smd;
 
-      direct_link_curvemapping(fd, &hcmd->curve_mapping);
+      BKE_curvemapping_read_file(wrap_reader(fd), &hcmd->curve_mapping);
     }
   }
 }
@@ -6633,19 +6612,19 @@ static void direct_link_scene(FileData *fd, Scene *sce)
     sce->toolsettings->gp_interpolate.custom_ipo = newdataadr(
         fd, sce->toolsettings->gp_interpolate.custom_ipo);
     if (sce->toolsettings->gp_interpolate.custom_ipo) {
-      direct_link_curvemapping(fd, sce->toolsettings->gp_interpolate.custom_ipo);
+      BKE_curvemapping_read_file(wrap_reader(fd), sce->toolsettings->gp_interpolate.custom_ipo);
     }
     /* relink grease pencil multiframe fal

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list