[Bf-blender-cvs] [0316676e715] blenloader-decentralization: rebase blenloader api on latest master
Jacques Lucke
noreply at git.blender.org
Thu Apr 30 17:55:36 CEST 2020
Commit: 0316676e71580927eb9d4aa11bda7d6a119cb36f
Author: Jacques Lucke
Date: Thu Apr 30 17:54:49 2020 +0200
Branches: blenloader-decentralization
https://developer.blender.org/rB0316676e71580927eb9d4aa11bda7d6a119cb36f
rebase blenloader api on latest master
===================================================================
M source/blender/blenkernel/BKE_animsys.h
M source/blender/blenkernel/BKE_colortools.h
M source/blender/blenkernel/BKE_curveprofile.h
M source/blender/blenkernel/BKE_fcurve.h
M source/blender/blenkernel/BKE_idprop.h
M source/blender/blenkernel/BKE_idtype.h
M source/blender/blenkernel/BKE_lib_id.h
M source/blender/blenkernel/BKE_modifier.h
M source/blender/blenkernel/BKE_nla.h
M source/blender/blenkernel/BKE_pointcache.h
M source/blender/blenkernel/intern/action.c
M source/blender/blenkernel/intern/anim_sys.c
M source/blender/blenkernel/intern/armature.c
M source/blender/blenkernel/intern/brush.c
M source/blender/blenkernel/intern/cachefile.c
M source/blender/blenkernel/intern/camera.c
M source/blender/blenkernel/intern/collection.c
M source/blender/blenkernel/intern/colortools.c
M source/blender/blenkernel/intern/curve.c
M source/blender/blenkernel/intern/curveprofile.c
M source/blender/blenkernel/intern/fcurve.c
M source/blender/blenkernel/intern/fmodifier.c
M source/blender/blenkernel/intern/font.c
M source/blender/blenkernel/intern/gpencil.c
M source/blender/blenkernel/intern/hair.c
M source/blender/blenkernel/intern/idprop.c
M source/blender/blenkernel/intern/image.c
M source/blender/blenkernel/intern/ipo.c
M source/blender/blenkernel/intern/key.c
M source/blender/blenkernel/intern/lattice.c
M source/blender/blenkernel/intern/lib_id.c
M source/blender/blenkernel/intern/library.c
M source/blender/blenkernel/intern/light.c
M source/blender/blenkernel/intern/lightprobe.c
M source/blender/blenkernel/intern/linestyle.c
M source/blender/blenkernel/intern/mask.c
M source/blender/blenkernel/intern/material.c
M source/blender/blenkernel/intern/mball.c
M source/blender/blenkernel/intern/mesh.c
M source/blender/blenkernel/intern/movieclip.c
M source/blender/blenkernel/intern/nla.c
M source/blender/blenkernel/intern/node.c
M source/blender/blenkernel/intern/object.c
M source/blender/blenkernel/intern/paint.c
M source/blender/blenkernel/intern/particle.c
M source/blender/blenkernel/intern/pointcache.c
M source/blender/blenkernel/intern/pointcloud.c
M source/blender/blenkernel/intern/scene.c
M source/blender/blenkernel/intern/screen.c
M source/blender/blenkernel/intern/sound.c
M source/blender/blenkernel/intern/speaker.c
M source/blender/blenkernel/intern/text.c
M source/blender/blenkernel/intern/texture.c
M source/blender/blenkernel/intern/volume.cc
M source/blender/blenkernel/intern/workspace.c
M source/blender/blenkernel/intern/world.c
A source/blender/blenloader/BLO_read_write.h
M source/blender/blenloader/CMakeLists.txt
M source/blender/blenloader/intern/readfile.c
M source/blender/blenloader/intern/writefile.c
M source/blender/modifiers/CMakeLists.txt
M source/blender/modifiers/intern/MOD_armature.c
M source/blender/modifiers/intern/MOD_array.c
M source/blender/modifiers/intern/MOD_bevel.c
M source/blender/modifiers/intern/MOD_boolean.c
M source/blender/modifiers/intern/MOD_build.c
M source/blender/modifiers/intern/MOD_cast.c
M source/blender/modifiers/intern/MOD_cloth.c
M source/blender/modifiers/intern/MOD_collision.c
M source/blender/modifiers/intern/MOD_correctivesmooth.c
M source/blender/modifiers/intern/MOD_curve.c
M source/blender/modifiers/intern/MOD_datatransfer.c
M source/blender/modifiers/intern/MOD_decimate.c
M source/blender/modifiers/intern/MOD_displace.c
M source/blender/modifiers/intern/MOD_dynamicpaint.c
M source/blender/modifiers/intern/MOD_edgesplit.c
M source/blender/modifiers/intern/MOD_explode.c
M source/blender/modifiers/intern/MOD_fluid.c
M source/blender/modifiers/intern/MOD_hook.c
M source/blender/modifiers/intern/MOD_laplaciandeform.c
M source/blender/modifiers/intern/MOD_laplaciansmooth.c
M source/blender/modifiers/intern/MOD_lattice.c
M source/blender/modifiers/intern/MOD_mask.cc
M source/blender/modifiers/intern/MOD_meshcache.c
M source/blender/modifiers/intern/MOD_meshdeform.c
M source/blender/modifiers/intern/MOD_meshsequencecache.c
M source/blender/modifiers/intern/MOD_mirror.c
M source/blender/modifiers/intern/MOD_multires.c
M source/blender/modifiers/intern/MOD_none.c
M source/blender/modifiers/intern/MOD_normal_edit.c
M source/blender/modifiers/intern/MOD_ocean.c
M source/blender/modifiers/intern/MOD_particleinstance.c
M source/blender/modifiers/intern/MOD_particlesystem.c
M source/blender/modifiers/intern/MOD_remesh.c
M source/blender/modifiers/intern/MOD_screw.c
M source/blender/modifiers/intern/MOD_shapekey.c
M source/blender/modifiers/intern/MOD_shrinkwrap.c
M source/blender/modifiers/intern/MOD_simpledeform.c
M source/blender/modifiers/intern/MOD_skin.c
M source/blender/modifiers/intern/MOD_smooth.c
M source/blender/modifiers/intern/MOD_softbody.c
M source/blender/modifiers/intern/MOD_solidify.c
M source/blender/modifiers/intern/MOD_subsurf.c
M source/blender/modifiers/intern/MOD_surface.c
M source/blender/modifiers/intern/MOD_surfacedeform.c
M source/blender/modifiers/intern/MOD_triangulate.c
M source/blender/modifiers/intern/MOD_uvproject.c
M source/blender/modifiers/intern/MOD_uvwarp.c
M source/blender/modifiers/intern/MOD_warp.c
M source/blender/modifiers/intern/MOD_wave.c
M source/blender/modifiers/intern/MOD_weighted_normal.c
M source/blender/modifiers/intern/MOD_weightvgedit.c
M source/blender/modifiers/intern/MOD_weightvgmix.c
M source/blender/modifiers/intern/MOD_weightvgproximity.c
M source/blender/modifiers/intern/MOD_weld.c
M source/blender/modifiers/intern/MOD_wireframe.c
M source/blender/windowmanager/intern/wm.c
===================================================================
diff --git a/source/blender/blenkernel/BKE_animsys.h b/source/blender/blenkernel/BKE_animsys.h
index 4076bca3b19..055212f7c5a 100644
--- a/source/blender/blenkernel/BKE_animsys.h
+++ b/source/blender/blenkernel/BKE_animsys.h
@@ -34,6 +34,10 @@ struct AnimData;
struct Depsgraph;
struct FCurve;
struct ID;
+struct BlendWriter;
+struct BlendDataReader;
+struct BlendLibReader;
+struct BlendExpander;
struct KS_Path;
struct KeyingSet;
struct ListBase;
@@ -254,6 +258,13 @@ void BKE_animsys_update_driver_array(struct ID *id);
/* ************************************* */
+void BKE_animsys_blend_write(struct BlendWriter *writer, struct AnimData *adt);
+void BKE_animsys_blend_read_data(struct BlendDataReader *reader, struct AnimData *adt);
+void BKE_animsys_blend_read_lib(struct BlendLibReader *reader,
+ struct AnimData *adt,
+ struct ID *id);
+void BKE_animsys_blend_expand(struct BlendExpander *expander, struct AnimData *adt);
+
#ifdef __cplusplus
}
#endif
diff --git a/source/blender/blenkernel/BKE_colortools.h b/source/blender/blenkernel/BKE_colortools.h
index 94b8d59b3db..4073d99bfdf 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);
@@ -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_blend_write(struct BlendWriter *writer, struct CurveMapping *cumap);
+void BKE_curvemapping_blend_write_content(struct BlendWriter *writer, struct CurveMapping *cumap);
+void BKE_curvemapping_blend_read_data(struct BlendDataReader *reader, struct CurveMapping *cumap);
enum {
CURVEMAP_SLOPE_NEGATIVE = 0,
diff --git a/source/blender/blenkernel/BKE_curveprofile.h b/source/blender/blenkernel/BKE_curveprofile.h
index ecbaa365bac..536ac380241 100644
--- a/source/blender/blenkernel/BKE_curveprofile.h
+++ b/source/blender/blenkernel/BKE_curveprofile.h
@@ -30,6 +30,8 @@ extern "C" {
struct CurveProfile;
struct CurveProfilePoint;
+struct BlendWriter;
+struct BlendDataReader;
void BKE_curveprofile_set_defaults(struct CurveProfile *profile);
@@ -78,6 +80,10 @@ void BKE_curveprofile_evaluate_length_portion(const struct CurveProfile *profile
float *x_out,
float *y_out);
+void BKE_curveprofile_blend_write(struct BlendWriter *writer, const struct CurveProfile *profile);
+void BKE_curveprofile_blend_read_data(struct BlendDataReader *reader,
+ struct CurveProfile *profile);
+
#ifdef __cplusplus
}
#endif
diff --git a/source/blender/blenkernel/BKE_fcurve.h b/source/blender/blenkernel/BKE_fcurve.h
index d389b557503..bbeae8aac57 100644
--- a/source/blender/blenkernel/BKE_fcurve.h
+++ b/source/blender/blenkernel/BKE_fcurve.h
@@ -36,6 +36,10 @@ struct FCurve;
struct FModifier;
struct AnimData;
+struct BlendExpander;
+struct BlendDataReader;
+struct BlendLibReader;
+struct BlendWriter;
struct BezTriple;
struct PathResolvedRNA;
struct PointerRNA;
@@ -372,6 +376,22 @@ float fcurve_samplingcb_evalcurve(struct FCurve *fcu, void *data, float evaltime
void fcurve_store_samples(
struct FCurve *fcu, void *data, int start, int end, FcuSampleFunc sample_cb);
+void BKE_fcurve_blend_write(struct BlendWriter *writer, struct ListBase *fcurves);
+void BKE_fcurve_blend_read_data(struct BlendDataReader *reader, struct ListBase *list);
+void BKE_fcurve_blend_read_lib(struct BlendLibReader *reader,
+ struct ListBase *list,
+ struct ID *id);
+void BKE_fcurve_blend_expand(struct BlendExpander *expander, struct ListBase *list);
+
+void BKE_fcurve_modifiers_blend_write(struct BlendWriter *writer, struct ListBase *fmodifiers);
+void BKE_fcurve_modifiers_blend_read_data(struct BlendDataReader *reader,
+ struct ListBase *list,
+ struct FCurve *fcurve);
+void BKE_fcurve_modifiers_blend_read_lib(struct BlendLibReader *reader,
+ struct ListBase *list,
+ struct ID *id);
+void BKE_fcurve_modifiers_blend_expand(struct BlendExpander *expander, struct ListBase *list);
+
#ifdef __cplusplus
}
#endif
diff --git a/source/blender/blenkernel/BKE_idprop.h b/source/blender/blenkernel/BKE_idprop.h
index 1272127daa0..fcdb5f5dcb3 100644
--- a/source/blender/blenkernel/BKE_idprop.h
+++ b/source/blender/blenkernel/BKE_idprop.h
@@ -31,6 +31,10 @@ extern "C" {
struct ID;
struct IDProperty;
+struct BlendDataReader;
+struct BlendLibReader;
+struct BlendWriter;
+struct BlendExpander;
typedef union IDPropertyTemplate {
int i;
@@ -197,6 +201,16 @@ void IDP_repr_fn(const IDProperty *prop,
void *user_data);
void IDP_print(const struct IDProperty *prop);
+void IDP_BlendReadData(struct BlendDataReader *reader, struct IDProperty *prop);
+void IDP_BlendReadLib(struct BlendLibReader *reader, struct IDProperty *prop);
+void IDP_BlendExpand(struct BlendExpander *expander, struct IDProperty *prop);
+
+void IDP_Group_BlendReadData(struct BlendDataReader *reader,
+ struct IDProperty **prop,
+ const char *caller_func_id);
+
+void IDP_BlendWrite(struct BlendWriter *writer, const struct IDProperty *prop);
+
#ifdef __cplusplus
}
#endif
diff --git a/source/blender/blenkernel/BKE_idtype.h b/source/blender/blenkernel/BKE_idtype.h
index 6dc504c2007..4e530f9d7c4 100644
--- a/source/blender/blenkernel/BKE_idtype.h
+++ b/source/blender/blenkernel/BKE_idtype.h
@@ -34,6 +34,10 @@ extern "C" {
struct ID;
struct Main;
+struct BlendWriter;
+struct BlendDataReader;
+struct BlendLibReader;
+struct BlendExpander;
/** IDTypeInfo.flags. */
enum {
@@ -60,6 +64,13 @@ typedef void (*IDTypeFreeDataFunction)(struct ID *id);
/** \param flag: See BKE_lib_id.h's LIB_ID_MAKELOCAL_... flags. */
typedef void (*IDTypeMakeLocalFunction)(struct Main *bmain, struct ID *id, const int flags);
+typedef void (*IDTypeBlendWriteFunction)(struct BlendWriter *writer,
+ struct ID *id,
+ const void *id_address);
+typedef void (*IDTypeBlendReadDataFunction)(struct BlendDataReader *reader, struct ID *);
+typedef void (*IDTypeBlendReadLibFunction)(struct BlendLibReader *reader, struct ID *);
+typedef void (*IDTypeBlendExpandFunction)(struct BlendExpander *expander, struct ID *);
+
typedef struct IDTypeInfo {
/* ********** General IDType data. ********** */
@@ -121,6 +132,28 @@ typedef struct IDTypeInfo {
* `BKE_lib_id_make_local_generic()` is enough.
*/
IDTypeMakeLocalFunction make_local;
+
+ /* ********** Blend file io callbacks ********** */
+
+ /**
+ * Write all structs that should be saved in a .blend file.
+ */
+ IDTypeBlendWriteFunction blend_write;
+
+ /**
+ * Update pointers for all structs directly owned by this data block.
+ */
+ IDTypeBlendReadDataFunction blend_read_data;
+
+ /**
+ * Update pointers to other id data blocks.
+ */
+ IDTypeBlendReadLibFunction blend_read_lib;
+
+ /**
+ * Specify which other id data blocks should be loaded when the current one is loaded.
+ */
+ IDTypeBlendExpandFunction blend_expand;
} IDTypeInfo;
/* ********** Declaration of each IDTypeInfo. ********** */
diff --git a/source/blender/blenkernel/BKE_lib_id.h b/source/blender/blenkernel/BKE_lib_id.h
index 0c91ba6231b..41e8a3851ed 100644
--- a/source/blender/blenkernel/BKE_lib_id.h
+++ b/source/blender/blenkernel/BKE_lib_id.h
@@ -270,6 +270,10 @@ bool BKE_id_is_in_global_main(struct ID *id);
void BKE_id_ordered_list(struct ListBase *ordered_lb, const struct ListBase *lb);
void BKE_id_reorder(const struct ListBase *lb, struct ID *id, struct ID *relative, bool after);
+/* Should probably be in another file. */
+struct BlendWriter;
+void BKE_iddata_blend_write(struct BlendWriter *writer, struct ID *id);
+
#define IS_TAGGED(_id) ((_id) && (((ID *)_id)->tag & LIB_TAG_DOIT))
#ifdef __cplusplus
diff --git a/source/blender/blenkernel/BKE_modifier.h b/source/blender/blenkernel/BKE_modifier.h
index 3a3be7e82c2..3f7a972d361 100644
--- a/source/blender/blenkernel/BKE_modifier.h
+++ b/source/blender/blenkernel/BKE_modifier.h
@@ -40,6 +40,8 @@ struct ModifierData;
struct Object;
struct Scene;
struct bArmature;
+struct BlendWriter;
+struct BlendDataReader;
typedef enum {
/* Should not be used, only for None modifier type */
@@ -348,6 +350,21 @@ typedef struct ModifierTypeInfo {
* more like "ensure the data is freed".
*/
void (*freeRuntimeData)(void *runtime_data);
+
+ /* Is called when the modifier is written to a file. The modifier data struct itself is written
+ * already.
+ *
+ * This method should write any additional arrays and referenced structs that should be
+ * stored in the file.
+ */
+ void (*blendWrite)(struct BlendWriter *writer, const struct ModifierData *md);
+
+ /* Is called when the modifier is read from a file.
+ *
+ * It can be used to update pointers to arrays and other structs. Furthermore, fields that have
+ * not been written (e.g. runtime data) can be reset.
+ */
+ void (*blendReadData)(struct BlendDataReader *reader, struct ModifierData *md);
} ModifierTypeInfo;
/* Initialize modifier's global data (type info and some common global storages). */
diff --git a/source/blender/blenkernel/BKE_nla.h b/source/blender/blenkernel/BKE_nla.h
index e5a77bce0e6..da8783ecb4b 100644
--- a/source/blender/blenkernel/BKE_nla.h
+++ b/source/blender/blenkernel/BKE_nla.h
@@ -35,6 +35,10 @@ struct NlaTrack;
struct Scene;
struct Speaker;
struct bAction;
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list