[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