diff options
author | Jacques Lucke <jacques@blender.org> | 2020-06-16 17:59:52 +0300 |
---|---|---|
committer | Jacques Lucke <jacques@blender.org> | 2020-06-16 17:59:52 +0300 |
commit | d3de5d7ca5608c53418ce4284cefe7e7d66a6b33 (patch) | |
tree | f60179f320cb8e1529e822c1de61b1c1602bcee7 | |
parent | 4365de38700ccc05f98f601efdde0963de4645c1 (diff) |
Refactor: Move curvemapping .blend read/write to blenkernel
This is necessary so that it can be accessed from `blendWrite`
and `blendRead` callbacks from modifiers.
-rw-r--r-- | source/blender/blenkernel/BKE_colortools.h | 7 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/colortools.c | 28 | ||||
-rw-r--r-- | source/blender/blenloader/intern/readfile.c | 11 | ||||
-rw-r--r-- | source/blender/blenloader/intern/writefile.c | 9 |
4 files changed, 39 insertions, 16 deletions
diff --git a/source/blender/blenkernel/BKE_colortools.h b/source/blender/blenkernel/BKE_colortools.h index 94b8d59b3db..0623e0e5395 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 BlendWriter; +struct BlendDataReader; void BKE_curvemapping_set_defaults( struct CurveMapping *cumap, int tot, float minx, float miny, float maxx, float maxy); @@ -100,6 +102,11 @@ void BKE_curvemapping_table_RGBA(const struct CurveMapping *cumap, float **array /* non-const, these modify the curve */ void BKE_curvemapping_premultiply(struct CurveMapping *cumap, int restore); +void BKE_curvemapping_blend_write(struct BlendWriter *writer, const struct CurveMapping *cumap); +void BKE_curvemapping_curves_blend_write(struct BlendWriter *writer, + const struct CurveMapping *cumap); +void BKE_curvemapping_blend_read(struct BlendDataReader *reader, struct CurveMapping *cumap); + void BKE_histogram_update_sample_line(struct Histogram *hist, struct ImBuf *ibuf, const struct ColorManagedViewSettings *view_settings, diff --git a/source/blender/blenkernel/intern/colortools.c b/source/blender/blenkernel/intern/colortools.c index 3da384a2745..4f4eb8f9f9d 100644 --- a/source/blender/blenkernel/intern/colortools.c +++ b/source/blender/blenkernel/intern/colortools.c @@ -44,6 +44,8 @@ #include "IMB_colormanagement.h" #include "IMB_imbuf_types.h" +#include "BLO_read_write.h" + /* ********************************* color curve ********************* */ /* ***************** operations on full struct ************* */ @@ -1238,6 +1240,32 @@ void BKE_curvemapping_table_RGBA(const CurveMapping *cumap, float **array, int * } } +void BKE_curvemapping_blend_write(BlendWriter *writer, const CurveMapping *cumap) +{ + BLO_write_struct(writer, CurveMapping, cumap); + BKE_curvemapping_curves_blend_write(writer, cumap); +} + +void BKE_curvemapping_curves_blend_write(BlendWriter *writer, const CurveMapping *cumap) +{ + for (int a = 0; a < CM_TOT; a++) { + BLO_write_struct_array(writer, CurveMapPoint, cumap->cm[a].totpoint, cumap->cm[a].curve); + } +} + +/* cumap itself has been read already. */ +void BKE_curvemapping_blend_read(BlendDataReader *reader, CurveMapping *cumap) +{ + /* flag seems to be able to hang? Maybe old files... not bad to clear anyway */ + cumap->flag &= ~CUMA_PREMULLED; + + for (int a = 0; a < CM_TOT; a++) { + BLO_read_data_address(reader, &cumap->cm[a].curve); + cumap->cm[a].table = NULL; + cumap->cm[a].premultable = NULL; + } +} + /* ***************** Histogram **************** */ #define INV_255 (1.f / 255.f) diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index f3b92b1f6a4..2e7532c5b46 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -2887,16 +2887,7 @@ static void direct_link_id_common( /* cuma itself has been read! */ static void direct_link_curvemapping(BlendDataReader *reader, 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++) { - BLO_read_data_address(reader, &cumap->cm[a].curve); - cumap->cm[a].table = NULL; - cumap->cm[a].premultable = NULL; - } + BKE_curvemapping_blend_read(reader, cumap); } /** \} */ diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c index 2cc6cecd815..909a12a48aa 100644 --- a/source/blender/blenloader/intern/writefile.c +++ b/source/blender/blenloader/intern/writefile.c @@ -155,6 +155,7 @@ #include "BKE_blender_version.h" #include "BKE_bpath.h" #include "BKE_collection.h" +#include "BKE_colortools.h" #include "BKE_constraint.h" #include "BKE_curve.h" #include "BKE_fcurve.h" @@ -969,16 +970,12 @@ static void write_animdata(BlendWriter *writer, AnimData *adt) static void write_curvemapping_curves(BlendWriter *writer, CurveMapping *cumap) { - for (int a = 0; a < CM_TOT; a++) { - BLO_write_struct_array(writer, CurveMapPoint, cumap->cm[a].totpoint, cumap->cm[a].curve); - } + BKE_curvemapping_curves_blend_write(writer, cumap); } static void write_curvemapping(BlendWriter *writer, CurveMapping *cumap) { - BLO_write_struct(writer, CurveMapping, cumap); - - write_curvemapping_curves(writer, cumap); + BKE_curvemapping_blend_write(writer, cumap); } static void write_CurveProfile(BlendWriter *writer, CurveProfile *profile) |