[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