Cleanup: trailing space for blenkernel
authorCampbell Barton <ideasman42@gmail.com>
Sun, 17 Jun 2018 15:05:51 +0000 (17:05 +0200)
committerCampbell Barton <ideasman42@gmail.com>
Sun, 17 Jun 2018 15:05:51 +0000 (17:05 +0200)
115 files changed:
source/blender/blenkernel/BKE_DerivedMesh.h
source/blender/blenkernel/BKE_action.h
source/blender/blenkernel/BKE_animsys.h
source/blender/blenkernel/BKE_armature.h
source/blender/blenkernel/BKE_cloth.h
source/blender/blenkernel/BKE_constraint.h
source/blender/blenkernel/BKE_context.h
source/blender/blenkernel/BKE_customdata.h
source/blender/blenkernel/BKE_depsgraph.h
source/blender/blenkernel/BKE_displist.h
source/blender/blenkernel/BKE_dynamicpaint.h
source/blender/blenkernel/BKE_editmesh.h
source/blender/blenkernel/BKE_effect.h
source/blender/blenkernel/BKE_fcurve.h
source/blender/blenkernel/BKE_font.h
source/blender/blenkernel/BKE_global.h
source/blender/blenkernel/BKE_gpencil.h
source/blender/blenkernel/BKE_idprop.h
source/blender/blenkernel/BKE_image.h
source/blender/blenkernel/BKE_material.h
source/blender/blenkernel/BKE_modifier.h
source/blender/blenkernel/BKE_node.h
source/blender/blenkernel/BKE_ocean.h
source/blender/blenkernel/BKE_paint.h
source/blender/blenkernel/BKE_particle.h
source/blender/blenkernel/BKE_property.h
source/blender/blenkernel/BKE_report.h
source/blender/blenkernel/BKE_rigidbody.h
source/blender/blenkernel/BKE_sequencer.h
source/blender/blenkernel/BKE_writeavi.h
source/blender/blenkernel/BKE_writeframeserver.h
source/blender/blenkernel/intern/CCGSubSurf.c
source/blender/blenkernel/intern/DerivedMesh.c
source/blender/blenkernel/intern/action.c
source/blender/blenkernel/intern/anim.c
source/blender/blenkernel/intern/anim_sys.c
source/blender/blenkernel/intern/appdir.c
source/blender/blenkernel/intern/armature.c
source/blender/blenkernel/intern/armature_update.c
source/blender/blenkernel/intern/blender.c
source/blender/blenkernel/intern/bmfont.c
source/blender/blenkernel/intern/boids.c
source/blender/blenkernel/intern/brush.c
source/blender/blenkernel/intern/bullet.c
source/blender/blenkernel/intern/bvhutils.c
source/blender/blenkernel/intern/camera.c
source/blender/blenkernel/intern/cdderivedmesh.c
source/blender/blenkernel/intern/cloth.c
source/blender/blenkernel/intern/collision.c
source/blender/blenkernel/intern/colortools.c
source/blender/blenkernel/intern/constraint.c
source/blender/blenkernel/intern/context.c
source/blender/blenkernel/intern/curve.c
source/blender/blenkernel/intern/customdata.c
source/blender/blenkernel/intern/customdata_file.c
source/blender/blenkernel/intern/depsgraph.c
source/blender/blenkernel/intern/editderivedmesh.c
source/blender/blenkernel/intern/editmesh_bvh.c
source/blender/blenkernel/intern/effect.c
source/blender/blenkernel/intern/fcurve.c
source/blender/blenkernel/intern/fmodifier.c
source/blender/blenkernel/intern/font.c
source/blender/blenkernel/intern/gpencil.c
source/blender/blenkernel/intern/group.c
source/blender/blenkernel/intern/icons.c
source/blender/blenkernel/intern/idcode.c
source/blender/blenkernel/intern/idprop.c
source/blender/blenkernel/intern/ipo.c
source/blender/blenkernel/intern/key.c
source/blender/blenkernel/intern/lamp.c
source/blender/blenkernel/intern/lattice.c
source/blender/blenkernel/intern/library.c
source/blender/blenkernel/intern/library_remap.c
source/blender/blenkernel/intern/material.c
source/blender/blenkernel/intern/mball.c
source/blender/blenkernel/intern/mesh.c
source/blender/blenkernel/intern/mesh_evaluate.c
source/blender/blenkernel/intern/modifier.c
source/blender/blenkernel/intern/multires.c
source/blender/blenkernel/intern/nla.c
source/blender/blenkernel/intern/node.c
source/blender/blenkernel/intern/object.c
source/blender/blenkernel/intern/object_deform.c
source/blender/blenkernel/intern/object_dupli.c
source/blender/blenkernel/intern/ocean.c
source/blender/blenkernel/intern/packedFile.c
source/blender/blenkernel/intern/paint.c
source/blender/blenkernel/intern/particle.c
source/blender/blenkernel/intern/particle_distribute.c
source/blender/blenkernel/intern/particle_system.c
source/blender/blenkernel/intern/pbvh.c
source/blender/blenkernel/intern/pointcache.c
source/blender/blenkernel/intern/property.c
source/blender/blenkernel/intern/report.c
source/blender/blenkernel/intern/rigidbody.c
source/blender/blenkernel/intern/sca.c
source/blender/blenkernel/intern/scene.c
source/blender/blenkernel/intern/screen.c
source/blender/blenkernel/intern/seqeffects.c
source/blender/blenkernel/intern/sequencer.c
source/blender/blenkernel/intern/shrinkwrap.c
source/blender/blenkernel/intern/sketch.c
source/blender/blenkernel/intern/smoke.c
source/blender/blenkernel/intern/softbody.c
source/blender/blenkernel/intern/sound.c
source/blender/blenkernel/intern/subsurf_ccg.c
source/blender/blenkernel/intern/suggestions.c
source/blender/blenkernel/intern/text.c
source/blender/blenkernel/intern/texture.c
source/blender/blenkernel/intern/tracking_solver.c
source/blender/blenkernel/intern/world.c
source/blender/blenkernel/intern/writeavi.c
source/blender/blenkernel/intern/writeffmpeg.c
source/blender/blenkernel/intern/writeframeserver.c
source/blender/blenkernel/nla_private.h

index 7b3df57..89f3431 100644 (file)
@@ -301,12 +301,12 @@ struct DerivedMesh {
        CustomData *(*getTessFaceDataLayout)(DerivedMesh * dm);
        CustomData *(*getLoopDataLayout)(DerivedMesh * dm);
        CustomData *(*getPolyDataLayout)(DerivedMesh * dm);
-       
+
        /** Copies all customdata for an element source into dst at index dest */
        void (*copyFromVertCData)(DerivedMesh *dm, int source, CustomData *dst, int dest);
        void (*copyFromEdgeCData)(DerivedMesh *dm, int source, CustomData *dst, int dest);
        void (*copyFromFaceCData)(DerivedMesh *dm, int source, CustomData *dst, int dest);
-       
+
        /** Optional grid access for subsurf */
        int (*getNumGrids)(DerivedMesh *dm);
        int (*getGridSize)(DerivedMesh *dm);
@@ -315,7 +315,7 @@ struct DerivedMesh {
        void (*getGridKey)(DerivedMesh *dm, struct CCGKey *key);
        DMFlagMat *(*getGridFlagMats)(DerivedMesh * dm);
        unsigned int **(*getGridHidden)(DerivedMesh * dm);
-       
+
 
        /** Iterate over each mapped vertex in the derived mesh, calling the
         * given function with the original vert and the mapped vert's new
@@ -397,7 +397,7 @@ struct DerivedMesh {
         * Also called for *final* editmode DerivedMeshes
         */
        void (*drawEdges)(DerivedMesh *dm, bool drawLooseEdges, bool drawAllEdges);
-       
+
        /** Draw all loose edges (edges w/ no adjoining faces) */
        void (*drawLooseEdges)(DerivedMesh *dm);
 
@@ -478,7 +478,7 @@ struct DerivedMesh {
         *
         * NOTE: This routine is optional!
         */
-       void (*drawMappedEdgesInterp)(DerivedMesh *dm, 
+       void (*drawMappedEdgesInterp)(DerivedMesh *dm,
                                      DMSetDrawOptions setDrawOptions,
                                      DMSetDrawInterpOptions setDrawInterpOptions,
                                      void *userData);
index 1fda7f0..90a3e4e 100644 (file)
@@ -69,7 +69,7 @@ void BKE_action_make_local(struct Main *bmain, struct bAction *act, const bool l
 
 /* Action API ----------------- */
 
-/* types of transforms applied to the given item 
+/* types of transforms applied to the given item
  *  - these are the return falgs for action_get_item_transforms()
  */
 typedef enum eAction_TransformFlags {
@@ -79,21 +79,21 @@ typedef enum eAction_TransformFlags {
        ACT_TRANS_ROT   = (1 << 1),
        /* scaling */
        ACT_TRANS_SCALE = (1 << 2),
-       
+
        /* bbone shape - for all the parameters, provided one is set */
        ACT_TRANS_BBONE = (1 << 3),
-       
+
        /* strictly not a transform, but custom properties are also
         * quite often used in modern rigs
         */
        ACT_TRANS_PROP  = (1 << 4),
-       
+
        /* all flags */
        ACT_TRANS_ONLY  = (ACT_TRANS_LOC | ACT_TRANS_ROT | ACT_TRANS_SCALE),
        ACT_TRANS_ALL   = (ACT_TRANS_ONLY | ACT_TRANS_PROP)
 } eAction_TransformFlags;
 
-/* Return flags indicating which transforms the given object/posechannel has 
+/* Return flags indicating which transforms the given object/posechannel has
  *     - if 'curves' is provided, a list of links to these curves are also returned
  *       whose nodes WILL NEED FREEING
  */
@@ -132,7 +132,7 @@ struct bActionGroup *BKE_action_group_find_name(struct bAction *act, const char
 /* Clear all 'temp' flags on all groups */
 void action_groups_clear_tempflags(struct bAction *act);
 
-/* Pose API ----------------- */       
+/* Pose API ----------------- */
 
 void                 BKE_pose_channel_free(struct bPoseChannel *pchan);
 void                 BKE_pose_channel_free_ex(struct bPoseChannel *pchan, bool do_id_user);
@@ -188,7 +188,7 @@ bool BKE_pose_channel_in_IK_chain(struct Object *ob, struct bPoseChannel *pchan)
 // XXX to be deprecated for a more general solution in animsys...
 void framechange_poses_clear_unkeyed(struct Main *bmain);
 
-/* Bone Groups API --------------------- */    
+/* Bone Groups API --------------------- */
 
 /* Adds a new bone-group */
 struct bActionGroup *BKE_pose_add_group(struct bPose *pose, const char *name);
@@ -198,7 +198,7 @@ void BKE_pose_remove_group(struct bPose *pose, struct bActionGroup *grp, const i
 /* Remove the matching bone-group from its index */
 void BKE_pose_remove_group_index(struct bPose *pose, const int index);
 
-/* Assorted Evaluation ----------------- */    
+/* Assorted Evaluation ----------------- */
 
 /* Used for the Action Constraint */
 void what_does_obaction(struct Object *ob, struct Object *workob, struct bPose *pose, struct bAction *act, char groupname[], float cframe);
index b25f57b..5cce1e0 100644 (file)
@@ -80,10 +80,10 @@ void BKE_animdata_copy_id_action(struct Main *bmain, struct ID *id, const bool s
 typedef enum eAnimData_MergeCopy_Modes {
        /* Keep destination action */
        ADT_MERGECOPY_KEEP_DST = 0,
-       
+
        /* Use src action (make a new copy) */
        ADT_MERGECOPY_SRC_COPY = 1,
-       
+
        /* Use src action (but just reference the existing version) */
        ADT_MERGECOPY_SRC_REF  = 2
 } eAnimData_MergeCopy_Modes;
index f6de39c..0ccb418 100644 (file)
@@ -53,10 +53,10 @@ typedef struct PoseTarget {
 
 typedef struct PoseTree {
        struct PoseTree *next, *prev;
-       
+
        int type;                       /* type of IK that this serves (CONSTRAINT_TYPE_KINEMATIC or ..._SPLINEIK) */
        int totchannel;                 /* number of pose channels */
-       
+
        struct ListBase targets;        /* list of targets of the tree */
        struct bPoseChannel **pchan;    /* array of pose channels */
        int     *parent;                /* and their parents */
index 6c517bd..c0d396f 100644 (file)
@@ -67,7 +67,7 @@ typedef struct ClothHairData {
 
 typedef struct ClothSolverResult {
        int status;
-       
+
        int max_iterations, min_iterations;
        float avg_iterations;
        float max_error, min_error, avg_error;
@@ -138,7 +138,7 @@ typedef struct ClothSpring {
        int     flags;          /* defined in BKE_cloth.h, e.g. deactivated due to tearing */
        float   stiffness;      /* stiffness factor from the vertex groups */
        float editrestlen;
-       
+
        /* angular bending spring target and derivatives */
        float target[3];
 }
@@ -203,7 +203,7 @@ struct CollPair;
 typedef struct ColliderContacts {
        struct Object *ob;
        struct CollisionModifierData *collmd;
-       
+
        struct CollPair *collisions;
        int totcollisions;
 } ColliderContacts;
index 4e0eb5c..d22a3be 100644 (file)
@@ -51,10 +51,10 @@ typedef struct bConstraintOb {
        struct Scene *scene;        /* for system time, part of deglobalization, code nicer later with local time (ton) */
        struct Object *ob;          /* if pchan, then armature that it comes from, otherwise constraint owner */
        struct bPoseChannel *pchan; /* pose channel that owns the constraints being evaluated */
-       
+
        float matrix[4][4];         /* matrix where constraints are accumulated + solved */
        float startmat[4][4];       /* original matrix (before constraint solving) */
-       
+
        short type;                 /* type of owner  */
        short rotOrder;             /* rotation order for constraint owner (as defined in eEulerRotationOrders in BLI_math.h) */
 } bConstraintOb;
@@ -83,7 +83,7 @@ typedef struct bConstraintTypeInfo {
        short size;             /* size in bytes of the struct */
        char name[32];          /* name of constraint in interface */
        char structName[32];    /* name of struct for SDNA */
-       
+
        /* data management function pointers - special handling */
        /* free any data that is allocated separately (optional) */
        void (*free_data)(struct bConstraint *con);
@@ -93,13 +93,13 @@ typedef struct bConstraintTypeInfo {
        void (*copy_data)(struct bConstraint *con, struct bConstraint *src);
        /* set settings for data that will be used for bConstraint.data (memory already allocated using MEM_callocN) */
        void (*new_data)(void *cdata);
-       
+
        /* target handling function pointers */
        /* for multi-target constraints: return that list; otherwise make a temporary list (returns number of targets) */
        int (*get_constraint_targets)(struct bConstraint *con, struct ListBase *list);
        /* for single-target constraints only: flush data back to source data, and the free memory used */
        void (*flush_constraint_targets)(struct bConstraint *con, struct ListBase *list, bool no_copy);
-       
+
        /* evaluation */
        /* set the ct->matrix for the given constraint target (at the given ctime) */
        void (*get_target_matrix)(struct bConstraint *con, struct bConstraintOb *cob, struct bConstraintTarget *ct, float ctime);
index 6de3232..717e8c8 100644 (file)
@@ -304,6 +304,6 @@ int CTX_data_editable_gpencil_strokes(const bContext *C, ListBase *list);
 #ifdef __cplusplus
 }
 #endif
-       
+
 #endif
 
index 2cdda34..e178e12 100644 (file)
@@ -221,8 +221,8 @@ void CustomData_copy_data_named(const struct CustomData *source,
                           struct CustomData *dest, int source_index,
                           int dest_index, int count);
 void CustomData_copy_elements(int type, void *src_data_ofs, void *dst_data_ofs, int count);
-void CustomData_bmesh_copy_data(const struct CustomData *source, 
-                                struct CustomData *dest, void *src_block, 
+void CustomData_bmesh_copy_data(const struct CustomData *source,
+                                struct CustomData *dest, void *src_block,
                                 void **dest_block);
 
 /* frees data in a CustomData object
@@ -348,9 +348,9 @@ void CustomData_bmesh_free_block_data(struct CustomData *data, void *block);
 
 /* copy custom data to/from layers as in mesh/derivedmesh, to editmesh
  * blocks of data. the CustomData's must not be compatible */
-void CustomData_to_bmesh_block(const struct CustomData *source, 
+void CustomData_to_bmesh_block(const struct CustomData *source,
                                struct CustomData *dest, int src_index, void **dest_block, bool use_default_init);
-void CustomData_from_bmesh_block(const struct CustomData *source, 
+void CustomData_from_bmesh_block(const struct CustomData *source,
                                  struct CustomData *dest, void *src_block, int dest_index);
 
 void CustomData_file_write_prepare(
index 0b81cfd..4af4f69 100644 (file)
@@ -177,5 +177,5 @@ bool DAG_is_acyclic(struct Scene *scene);
 #ifdef __cplusplus
 }
 #endif
-               
+
 #endif
index f5c6fb3..a9cfa7b 100644 (file)
@@ -1,4 +1,4 @@
-/* 
+/*
  * ***** BEGIN GPL LICENSE BLOCK *****
  *
  * This program is free software; you can redistribute it and/or
index cc1ff1a..937ed08 100644 (file)
@@ -54,7 +54,7 @@ typedef struct PaintPoint {
 } PaintPoint;
 
 /* heigh field waves   */
-typedef struct PaintWavePoint {                
+typedef struct PaintWavePoint {
 
        float height;
        float velocity;
index 55a9db9..92e311b 100644 (file)
@@ -56,7 +56,7 @@ typedef struct BMEditMesh {
        /*this is for undoing failed operations*/
        struct BMEditMesh *emcopy;
        int emcopyusers;
-       
+
        /* we store tessellations as triplets of three loops,
         * which each define a triangle.*/
        struct BMLoop *(*looptris)[3];
index aa45132..0a5e480 100644 (file)
@@ -97,7 +97,7 @@ typedef struct EffectorCache {
        struct Object *ob;
        struct ParticleSystem *psys;
        struct SurfaceModifierData *surmd;
-       
+
        struct PartDeflect *pd;
 
        /* precalculated for guides */
@@ -167,10 +167,10 @@ unsigned int BKE_sim_debug_data_hash_combine(unsigned int kx, unsigned int ky);
 typedef struct SimDebugElement {
        unsigned int category_hash;
        unsigned int hash;
-       
+
        int type;
        float color[3];
-       
+
        float v1[3], v2[3];
        char str[64];
 } SimDebugElement;
index 09f5ecc..1dfcfd5 100644 (file)
@@ -66,7 +66,7 @@ void bezt_add_to_cfra_elem(ListBase *lb, struct BezTriple *bezt);
 
 /* ************** F-Curve Drivers ***************** */
 
-/* With these iterators for convenience, the variables "tarIndex" and "dtar" can be 
+/* With these iterators for convenience, the variables "tarIndex" and "dtar" can be
  * accessed directly from the code using them, but it is not recommended that their
  * values be changed to point at other slots...
  */
@@ -77,14 +77,14 @@ void bezt_add_to_cfra_elem(ListBase *lb, struct BezTriple *bezt);
                DriverTarget *dtar = &dvar->targets[0]; \
                int tarIndex = 0; \
                for (; tarIndex < MAX_DRIVER_TARGETS; tarIndex++, dtar++)
-                
+
 /* convenience looper over USED driver targets only */
 #define DRIVER_TARGETS_USED_LOOPER(dvar) \
        { \
                DriverTarget *dtar = &dvar->targets[0]; \
                int tarIndex = 0; \
                for (; tarIndex < dvar->num_targets; tarIndex++, dtar++)
-               
+
 /* tidy up for driver targets loopers */
 #define DRIVER_TARGETS_LOOPER_END \
 }
@@ -133,7 +133,7 @@ typedef struct FModifierTypeInfo {
        short requires;         /* eFMI_Requirement_Flags */
        char  name[64];          /* name of modifier in interface */
        char  structName[64];    /* name of struct for SDNA */
-       
+
        /* data management function pointers - special handling */
        /* free any data that is allocated separately (optional) */
        void (*free_data)(struct FModifier *fcm);
@@ -143,7 +143,7 @@ typedef struct FModifierTypeInfo {
        void (*new_data)(void *mdata);
        /* verifies that the modifier settings are valid */
        void (*verify_data)(struct FModifier *fcm);
-       
+
        /* evaluation */
        /* evaluate time that the modifier requires the F-Curve to be evaluated at */
        float (*evaluate_modifier_time)(struct FCurve *fcu, struct FModifier *fcm, float cvalue, float evaltime);
@@ -229,7 +229,7 @@ struct FCurve *iter_step_fcurve(struct FCurve *fcu_iter, const char rna_path[]);
 /* high level function to get an fcurve from C without having the rna */
 struct FCurve *id_data_find_fcurve(ID *id, void *data, struct StructRNA *type, const char *prop_name, int index, bool *r_driven);
 
-/* Get list of LinkData's containing pointers to the F-Curves which control the types of data indicated 
+/* Get list of LinkData's containing pointers to the F-Curves which control the types of data indicated
  *     e.g.  numMatches = list_find_data_fcurves(matches, &act->curves, "pose.bones[", "MyFancyBone");
  */
 int list_find_data_fcurves(ListBase *dst, ListBase *src, const char *dataPrefix, const char *dataName);
@@ -290,7 +290,7 @@ float calculate_fcurve(struct PathResolvedRNA *anim_rna, struct FCurve *fcu, flo
 
 /* -------- Defines --------  */
 
-/* Basic signature for F-Curve sample-creation function 
+/* Basic signature for F-Curve sample-creation function
  *     - fcu: the F-Curve being operated on
  *     - data: pointer to some specific data that may be used by one of the callbacks
  */
@@ -303,7 +303,7 @@ float fcurve_samplingcb_evalcurve(struct FCurve *fcu, void *data, float evaltime
 
 /* -------- Main Methods --------  */
 
-/* Main API function for creating a set of sampled curve data, given some callback function 
+/* Main API function for creating a set of sampled curve data, given some callback function
  * used to retrieve the values to store.
  */
 void fcurve_store_samples(struct FCurve *fcu, void *data, int start, int end, FcuSampleFunc sample_cb);
index bb1f97e..d13cd4a 100644 (file)
@@ -58,7 +58,7 @@ typedef struct EditFontSelBox {
 typedef struct EditFont {
        wchar_t *textbuf;
        struct CharInfo *textbufinfo;
-       
+
        /* array of rectangles & rotation */
        float textcurs[4][2];
        EditFontSelBox *selboxes;
@@ -68,7 +68,7 @@ typedef struct EditFont {
         * a copy of these is kept in Curve, but use these in editmode */
        int len, pos;
        int selstart, selend;
-       
+
 } EditFont;
 
 
@@ -76,7 +76,7 @@ bool BKE_vfont_is_builtin(struct VFont *vfont);
 void BKE_vfont_builtin_register(void *mem, int size);
 
 void BKE_vfont_free_data(struct VFont *vfont);
-void BKE_vfont_free(struct VFont *sc); 
+void BKE_vfont_free(struct VFont *sc);
 void BKE_vfont_init(struct VFont *vfont);
 void BKE_vfont_copy_data(struct Main *bmain, struct VFont *vfont_dst, const struct VFont *vfont_src, const int flag);
 struct VFont *BKE_vfont_builtin_get(void);
index db816cb..34eff9d 100644 (file)
@@ -50,7 +50,7 @@ typedef struct Global {
 
        /* active pointers */
        struct Main *main;
-       
+
        /* strings: lastsaved */
        char ima[1024], lib[1024]; /* 1024 = FILE_MAX */
 
@@ -229,5 +229,5 @@ extern Global G;
 #ifdef __cplusplus
 }
 #endif
-       
+
 #endif
index c7ea734..3a951b7 100644 (file)
@@ -88,7 +88,7 @@ bool gpencil_layer_is_editable(const struct bGPDlayer *gpl);
 typedef enum eGP_GetFrame_Mode {
        /* Use the preceeding gp-frame (i.e. don't add anything) */
        GP_GETFRAME_USE_PREV  = 0,
-       
+
        /* Add a new empty/blank frame */
        GP_GETFRAME_ADD_NEW   = 1,
        /* Make a copy of the active frame */
index 8a2cdd7..48a0046 100644 (file)
@@ -19,7 +19,7 @@
  *
  * ***** END GPL LICENSE BLOCK *****
  */
+
 #ifndef __BKE_IDPROP_H__
 #define __BKE_IDPROP_H__
 
index fc018db..9be75ac 100644 (file)
@@ -216,7 +216,7 @@ void BKE_image_verify_viewer_views(const struct RenderData *rd, struct Image *im
 void BKE_image_user_frame_calc(struct ImageUser *iuser, int cfra, int fieldnr);
 void BKE_image_user_check_frame_calc(struct ImageUser *iuser, int cfra, int fieldnr);
 int  BKE_image_user_frame_get(const struct ImageUser *iuser, int cfra, int fieldnr, bool *r_is_in_range);
-void BKE_image_user_file_path(struct ImageUser *iuser, struct Image *ima, char *path); 
+void BKE_image_user_file_path(struct ImageUser *iuser, struct Image *ima, char *path);
 void BKE_image_update_frame(const struct Main *bmain, int cfra);
 
 /* sets index offset for multilayer files */
index 431d1df..e2f5fb2 100644 (file)
@@ -115,7 +115,7 @@ void free_matcopybuf(void);
 void copy_matcopybuf(struct Main *bmain, struct Material *ma);
 void paste_matcopybuf(struct Main *bmain, struct Material *ma);
 
-/* handle backward compatibility for tface/materials called from doversion */  
+/* handle backward compatibility for tface/materials called from doversion */
 int do_version_tface(struct Main *main);
 
 #ifdef __cplusplus
index e9ce919..e414df1 100644 (file)
@@ -197,7 +197,7 @@ typedef struct ModifierTypeInfo {
         *
         * The derivedData argument should always be non-NULL; the modifier
         * should read the object data from the derived object instead of the
-        * actual object data. 
+        * actual object data.
         *
         * The useRenderParams argument indicates if the modifier is being
         * applied in the service of the renderer which may alter quality
@@ -217,7 +217,7 @@ typedef struct ModifierTypeInfo {
 
        /* Like applyModifier but called during editmode (for supporting
         * modifiers).
-        * 
+        *
         * The derived object that is returned must support the operations that
         * are expected from editmode objects. The same qualifications regarding
         * derivedData apply as for applyModifier.
@@ -232,7 +232,7 @@ typedef struct ModifierTypeInfo {
 
        /* Initialize new instance data for this modifier type, this function
         * should set modifier variables to their default values.
-        * 
+        *
         * This function is optional.
         */
        void (*initData)(struct ModifierData *md);
@@ -273,7 +273,7 @@ typedef struct ModifierTypeInfo {
        bool (*isDisabled)(struct ModifierData *md, int userRenderParams);
 
        /* Add the appropriate relations to the DEP graph depending on the
-        * modifier data. 
+        * modifier data.
         *
         * This function is optional.
         */
@@ -299,7 +299,7 @@ typedef struct ModifierTypeInfo {
        /* True when a deform modifier uses normals, the requiredDataMask
         * cant be used here because that refers to a normal layer where as
         * in this case we need to know if the deform modifier uses normals.
-        * 
+        *
         * this is needed because applying 2 deform modifiers will give the
         * second modifier bogus normals.
         * */
index 5439b16..a845938 100644 (file)
@@ -99,7 +99,7 @@ typedef struct bNodeSocketTemplate {
        float min, max;
        int subtype;  /* would use PropertySubType but this is a bad level include to use RNA */
        int flag;
-       
+
        /* after this line is used internal only */
        struct bNodeSocket *sock;               /* used to hold verified socket */
        char identifier[64];                    /* generated from name */
@@ -110,21 +110,21 @@ typedef struct bNodeSocketTemplate {
  */
 typedef struct bNodeSocketType {
        char idname[64];                                /* identifier name */
-       
+
        void (*draw)(struct bContext *C, struct uiLayout *layout, struct PointerRNA *ptr, struct PointerRNA *node_ptr, const char *text);
        void (*draw_color)(struct bContext *C, struct PointerRNA *ptr, struct PointerRNA *node_ptr, float *r_color);
-       
+
        void (*interface_draw)(struct bContext *C, struct uiLayout *layout, struct PointerRNA *ptr);
        void (*interface_draw_color)(struct bContext *C, struct PointerRNA *ptr, float *r_color);
        void (*interface_register_properties)(struct bNodeTree *ntree, struct bNodeSocket *stemp, struct StructRNA *data_srna);
        void (*interface_init_socket)(struct bNodeTree *ntree, struct bNodeSocket *stemp, struct bNode *node, struct bNodeSocket *sock, const char *data_path);
        void (*interface_verify_socket)(struct bNodeTree *ntree, struct bNodeSocket *stemp, struct bNode *node, struct bNodeSocket *sock, const char *data_path);
        void (*interface_from_socket)(struct bNodeTree *ntree, struct bNodeSocket *stemp, struct bNode *node, struct bNodeSocket *sock);
-       
+
        /* RNA integration */
        ExtensionRNA ext_socket;
        ExtensionRNA ext_interface;
-       
+
        /* for standard socket types in C */
        int type, subtype;
 } bNodeSocketType;
@@ -141,23 +141,23 @@ typedef int (*NodeGPUExecFunction)(struct GPUMaterial *mat, struct bNode *node,
 typedef struct bNodeType {
        void *next, *prev;
        short needs_free;               /* set for allocated types that need to be freed */
-       
+
        char idname[64];                                /* identifier name */
        int type;
 
        char ui_name[64];       /* MAX_NAME */
        char ui_description[256];
        int ui_icon;
-       
+
        float width, minwidth, maxwidth;
        float height, minheight, maxheight;
        short nclass, flag, compatibility;
-       
+
        /* templates for static sockets */
        bNodeSocketTemplate *inputs, *outputs;
-       
+
        char storagename[64];                   /* struct name for DNA */
-       
+
        /* Main draw function for the node */
        void (*draw_nodetype)(const struct bContext *C, struct ARegion *ar, struct SpaceNode *snode,
                         struct bNodeTree *ntree, struct bNode *node, bNodeInstanceKey key);
@@ -183,41 +183,41 @@ typedef struct bNodeType {
        int (*select_area_func)(struct bNode *node, int x, int y);
        /// Optional tweak area polling (for grabbing).
        int (*tweak_area_func)(struct bNode *node, int x, int y);
-       
+
        /// Called when the node is updated in the editor.
        void (*updatefunc)(struct bNodeTree *ntree, struct bNode *node);
        /// Check and update if internal ID data has changed.
        void (*verifyfunc)(struct bNodeTree *ntree, struct bNode *node, struct ID *id);
-       
+
        /// Initialize a new node instance of this type after creation.
        void (*initfunc)(struct bNodeTree *ntree, struct bNode *node);
        /// Free the node instance.
        void (*freefunc)(struct bNode *node);
        /// Make a copy of the node instance.
        void (*copyfunc)(struct bNodeTree *dest_ntree, struct bNode *dest_node, struct bNode *src_node);
-       
+
        /* Registerable API callback versions, called in addition to C callbacks */
        void (*initfunc_api)(const struct bContext *C, struct PointerRNA *ptr);
        void (*freefunc_api)(struct PointerRNA *ptr);
        void (*copyfunc_api)(struct PointerRNA *ptr, struct bNode *src_node);
-       
+
        /* can this node type be added to a node tree */
        int (*poll)(struct bNodeType *ntype, struct bNodeTree *nodetree);
        /* can this node be added to a node tree */
        int (*poll_instance)(struct bNode *node, struct bNodeTree *nodetree);
-       
+
        /* optional handling of link insertion */
        void (*insert_link)(struct bNodeTree *ntree, struct bNode *node, struct bNodeLink *link);
        /* Update the internal links list, for muting and disconnect operators. */
        void (*update_internal_links)(struct bNodeTree *, struct bNode *node);
-       
+
        /* **** execution callbacks **** */
        NodeInitExecFunction initexecfunc;
        NodeFreeExecFunction freeexecfunc;
        NodeExecFunction execfunc;
        /* gpu */
        NodeGPUExecFunction gpufunc;
-       
+
        /* RNA integration */
        ExtensionRNA ext;
 } bNodeType;
@@ -277,7 +277,7 @@ typedef struct bNodeTreeType {
        char ui_name[64];
        char ui_description[256];
        int ui_icon;
-       
+
        /* callbacks */
        void (*free_cache)(struct bNodeTree *ntree);
        void (*free_node_cache)(struct bNodeTree *ntree, struct bNode *node);
@@ -295,11 +295,11 @@ typedef struct bNodeTreeType {
 
        /* Tree update. Overrides nodetype->updatetreefunc! */
        void (*update)(struct bNodeTree *ntree);
-       
+
        int (*validate_link)(struct bNodeTree *ntree, struct bNodeLink *link);
 
        void (*node_add_init)(struct bNodeTree *ntree, struct bNode *bnode);
-       
+
        /* RNA integration */
        ExtensionRNA ext;
 } bNodeTreeType;
index 7a4c7d6..3ea104e 100644 (file)
@@ -1,4 +1,4 @@
-/* 
+/*
  * ***** BEGIN GPL LICENSE BLOCK *****
  *
  * This program is free software; you can redistribute it and/or
@@ -35,7 +35,7 @@ typedef struct OceanResult {
        float disp[3];
        float normal[3];
        float foam;
-       
+
        /* raw eigenvalues/vectors */
        float Jminus;
        float Jplus;
@@ -47,25 +47,25 @@ typedef struct OceanCache {
        struct ImBuf **ibufs_disp;
        struct ImBuf **ibufs_foam;
        struct ImBuf **ibufs_norm;
-       
+
        const char *bakepath;
        const char *relbase;
-       
+
        /* precalculated for time range */
        float *time;
-       
+
        /* constant for time range */
        float wave_scale;
        float chop_amount;
        float foam_coverage;
        float foam_fade;
-       
+
        int start;
        int end;
        int duration;
        int resolution_x;
        int resolution_y;
-       
+
        int baked;
 } OceanCache;
 
@@ -93,7 +93,7 @@ struct OceanCache *BKE_ocean_init_cache(
         int start, int end, float wave_scale,
         float chop_amount, float foam_coverage, float foam_fade, int resolution);
 void BKE_ocean_simulate_cache(struct OceanCache *och, int frame);
-       
+
 void BKE_ocean_bake(struct Ocean *o, struct OceanCache *och, void (*update_cb)(void *, float progress, int *cancel), void *update_cb_data);
 void BKE_ocean_cache_eval_uv(struct OceanCache *och, struct OceanResult *ocr, int f, float u, float v);
 void BKE_ocean_cache_eval_ij(struct OceanCache *och, struct OceanResult *ocr, int f, int i, int j);
index 253a615..abb9000 100644 (file)
@@ -181,7 +181,7 @@ typedef struct SculptSession {
        int totvert, totpoly;
        struct KeyBlock *kb;
        float *vmask;
-       
+
        /* Mesh connectivity */
        const struct MeshElemMap *pmap;
 
@@ -206,7 +206,7 @@ typedef struct SculptSession {
 
        /* Partial redraw */
        bool partial_redraw;
-       
+
        /* Used to cache the render of the active texture */
        unsigned int texcache_side, *texcache, texcache_actual;
        struct ImagePool *tex_pool;
index cba92ea..ddbf402 100644 (file)
@@ -60,7 +60,7 @@ struct LinkNode;
 struct KDTree;
 struct RNG;
 struct BVHTreeRay;
-struct BVHTreeRayHit; 
+struct BVHTreeRayHit;
 struct EdgeHash;
 
 #define PARTICLE_COLLISION_MAX_COLLISIONS 10
@@ -192,7 +192,7 @@ typedef struct ParticleCollisionElement {
 
        /* values interpolated from original data*/
        float x0[3], x1[3], x2[3], p[3];
-       
+
        /* results for found intersection point */
        float nor[3], vel[3], uv[2];
 
index c787e8e..d917a6b 100644 (file)
@@ -49,5 +49,5 @@ void              BKE_bproperty_set(struct bProperty *prop, const char *str);
 void              BKE_bproperty_add(struct bProperty *prop, const char *str);
 /* should really be called '_get_valstr()' or '_as_string()' */
 void              BKE_bproperty_set_valstr(struct bProperty *prop, char str[MAX_PROPSTRING]);
-       
+
 #endif
index 70feff1..2a79c7f 100644 (file)
@@ -74,6 +74,6 @@ bool BKE_report_write_file(const char *filepath, ReportList *reports, const char
 #ifdef __cplusplus
 }
 #endif
-       
+
 #endif
 
index 3c7274c..470aae4 100644 (file)
@@ -29,7 +29,7 @@
  *  \ingroup blenkernel
  *  \brief API for Blender-side Rigid Body stuff
  */
+
 
 #ifndef __BKE_RIGIDBODY_H__
 #define __BKE_RIGIDBODY_H__
index e00e240..8574e81 100644 (file)
@@ -135,38 +135,38 @@ struct SeqEffectHandle {
        /* constructors & destructor */
        /* init is _only_ called on first creation */
        void (*init)(struct Sequence *seq);
-       
-       /* number of input strips needed 
+
+       /* number of input strips needed
         * (called directly after construction) */
        int (*num_inputs)(void);
-       
+
        /* load is called first time after readblenfile in
         * get_sequence_effect automatically */
        void (*load)(struct Sequence *seq);
-       
+
        /* duplicate */
        void (*copy)(struct Sequence *dst, struct Sequence *src);
-       
+
        /* destruct */
        void (*free)(struct Sequence *seq);
-       
+
        /* returns: -1: no input needed,
         * 0: no early out,
         * 1: out = ibuf1,
         * 2: out = ibuf2 */
-       int (*early_out)(struct Sequence *seq, float facf0, float facf1); 
-       
+       int (*early_out)(struct Sequence *seq, float facf0, float facf1);
+
        /* stores the y-range of the effect IPO */
        void (*store_icu_yrange)(struct Sequence *seq, short adrcode, float *ymin, float *ymax);
-       
+
        /* stores the default facf0 and facf1 if no IPO is present */
        void (*get_default_fac)(struct Sequence *seq, float cfra, float *facf0, float *facf1);
-       
+
        /* execute the effect
         * sequence effects are only required to either support
         * float-rects or byte-rects
         * (mixed cases are handled one layer up...) */
-       
+
        struct ImBuf * (*execute)(const SeqRenderData *context, struct Sequence *seq, float cfra, float facf0, float facf1,
                                  struct ImBuf *ibuf1, struct ImBuf *ibuf2, struct ImBuf *ibuf3);
 
@@ -273,7 +273,7 @@ void BKE_sequencer_cache_cleanup(void);
 /* returned ImBuf is properly refed and has to be freed */
 struct ImBuf *BKE_sequencer_cache_get(const SeqRenderData *context, struct Sequence *seq, float cfra, eSeqStripElemIBuf type);
 
-/* passed ImBuf is properly refed, so ownership is *not* 
+/* passed ImBuf is properly refed, so ownership is *not*
  * transferred to the cache.
  * you can pass the same ImBuf multiple times to the cache without problems.
  */
index ca295c5..3bd0689 100644 (file)
@@ -38,7 +38,7 @@ extern "C" {
 
 /* generic blender movie support, could move to own module */
 
-struct RenderData;     
+struct RenderData;
 struct ReportList;
 struct Scene;
 
index 0837e9b..120ac53 100644 (file)
@@ -36,7 +36,7 @@
 extern "C" {
 #endif
 
-struct RenderData;     
+struct RenderData;
 struct ReportList;
 struct Scene;
 
index 792e919..c6224da 100644 (file)
@@ -277,7 +277,7 @@ CCGSubSurf *ccgSubSurf_new(CCGMeshIFC *ifc, int subdivLevels, CCGAllocatorIFC *a
                ss->fMap = ccg_ehash_new(0, &ss->allocatorIFC, ss->allocator);
 
                ss->meshIFC = *ifc;
-               
+
                ss->subdivLevels = subdivLevels;
                ss->numGrids = 0;
                ss->allowEdgeCreation = 0;
@@ -489,8 +489,8 @@ CCGError ccgSubSurf_initFullSync(CCGSubSurf *ss)
 
        ss->currentAge++;
 
-       ss->oldVMap = ss->vMap; 
-       ss->oldEMap = ss->eMap; 
+       ss->oldVMap = ss->vMap;
+       ss->oldEMap = ss->eMap;
        ss->oldFMap = ss->fMap;
 
        ss->vMap = ccg_ehash_new(0, &ss->allocatorIFC, ss->allocator);
@@ -592,7 +592,7 @@ CCGError ccgSubSurf_syncVert(CCGSubSurf *ss, CCGVertHDL vHDL, const void *vertDa
        void **prevp;
        CCGVert *v = NULL;
        short seamflag = (seam) ? Vert_eSeam : 0;
-       
+
        if (ss->syncState == eSyncState_Partial) {
                v = ccg_ehash_lookupWithPrev(ss->vMap, vHDL, &prevp);
                if (!v) {
@@ -937,7 +937,7 @@ void ccgSubSurf__effectedFaceNeighbours(CCGSubSurf *ss, CCGFace **faces, int num
                        for (j = 0; j < v->numFaces; j++)
                                if (!(v->faces[j]->flags & Face_eEffected))
                                        break;
-                       
+
                        if (j == v->numFaces) {
                                arrayV[numV++] = v;
                                v->flags |= Vert_eEffected;
@@ -952,7 +952,7 @@ void ccgSubSurf__effectedFaceNeighbours(CCGSubSurf *ss, CCGFace **faces, int num
                        for (j = 0; j < e->numFaces; j++)
                                if (!(e->faces[j]->flags & Face_eEffected))
                                        break;
-                       
+
                        if (j == e->numFaces) {
                                e->flags |= Edge_eEffected;
                                arrayE[numE++] = e;
@@ -1550,11 +1550,11 @@ int ccgSubSurf_getNumFinalFaces(const CCGSubSurf *ss)
 void CCG_key(CCGKey *key, const CCGSubSurf *ss, int level)
 {
        key->level = level;
-       
+
        key->elem_size = ss->meshIFC.vertDataSize;
        key->has_normals = ss->calcVertNormals;
        key->num_layers = ss->meshIFC.numLayers;
-       
+
        /* if normals are present, always the last three floats of an
         * element */
        if (key->has_normals)
index 15469e3..9c0fc79 100644 (file)
@@ -137,7 +137,7 @@ static MFace *dm_getTessFaceArray(DerivedMesh *dm)
 
        if (!mface) {
                int numTessFaces = dm->getNumTessFaces(dm);
-               
+
                if (!numTessFaces) {
                        /* Do not add layer if there's no elements in it, this leads to issues later when
                         * this layer is needed with non-zero size, but currently CD stuff does not check
@@ -145,7 +145,7 @@ static MFace *dm_getTessFaceArray(DerivedMesh *dm)
                         * added (sergey) */
                        return NULL;
                }
-               
+
                mface = CustomData_add_layer(&dm->faceData, CD_MFACE, CD_CALLOC, NULL, numTessFaces);
                CustomData_set_layer_flag(&dm->faceData, CD_MFACE, CD_FLAG_TEMPORARY);
                dm->copyTessFaceArray(dm, mface);
@@ -347,7 +347,7 @@ void DM_init(
        dm->numPolyData = numPolys;
 
        DM_init_funcs(dm);
-       
+
        dm->needsFree = 1;
        dm->auto_bump_scale = -1.0f;
        dm->dirty = 0;
@@ -758,7 +758,7 @@ void DM_to_mesh(DerivedMesh *dm, Mesh *me, Object *ob, CustomDataMask mask, bool
        if (CustomData_has_layer(&dm->vertData, CD_SHAPEKEY)) {
                KeyBlock *kb;
                int uid;
-               
+
                if (ob) {
                        kb = BLI_findlink(&me->key->block, ob->shapenr - 1);
                        if (kb) {
@@ -784,7 +784,7 @@ void DM_to_mesh(DerivedMesh *dm, Mesh *me, Object *ob, CustomDataMask mask, bool
        if (ob) {
                BKE_mesh_texspace_copy_from_object(&tmp, ob);
        }
-       
+
        /* not all DerivedMeshes store their verts/edges/faces in CustomData, so
         * we set them here in case they are missing */
        if (!CustomData_has_layer(&tmp.vdata, CD_MVERT)) {
@@ -864,18 +864,18 @@ void DM_to_meshkey(DerivedMesh *dm, Mesh *me, KeyBlock *kb)
        int a, totvert = dm->getNumVerts(dm);
        float *fp;
        MVert *mvert;
-       
+
        if (totvert == 0 || me->totvert == 0 || me->totvert != totvert) {
                return;
        }
-       
+
        if (kb->data) MEM_freeN(kb->data);
        kb->data = MEM_malloc_arrayN(me->key->elemsize, me->totvert, "kb->data");
        kb->totelem = totvert;
-       
+
        fp = kb->data;
        mvert = dm->getVertDataArray(dm, CD_MVERT);
-       
+
        for (a = 0; a < kb->totelem; a++, fp += 3, mvert++) {
                copy_v3_v3(fp, mvert->co);
        }
@@ -1135,10 +1135,10 @@ void DM_interp_poly_data(
 DerivedMesh *mesh_create_derived(Mesh *me, float (*vertCos)[3])
 {
        DerivedMesh *dm = CDDM_from_mesh(me);
-       
+
        if (!dm)
                return NULL;
-       
+
        if (vertCos) {
                CDDM_apply_vert_coords(dm, vertCos);
        }
@@ -1156,7 +1156,7 @@ DerivedMesh *mesh_create_derived_for_modifier(
        KeyBlock *kb;
 
        md->scene = scene;
-       
+
        if (!(md->mode & eModifierMode_Realtime)) {
                return NULL;
        }
@@ -1164,11 +1164,11 @@ DerivedMesh *mesh_create_derived_for_modifier(
        if (mti->isDisabled && mti->isDisabled(md, 0)) {
                return NULL;
        }
-       
+
        if (build_shapekey_layers && me->key && (kb = BLI_findlink(&me->key->block, ob->shapenr - 1))) {
                BKE_keyblock_convert_to_mesh(kb, me);
        }
-       
+
        if (mti->type == eModifierTypeType_OnlyDeform) {
                int numVerts;
                float (*deformedVerts)[3] = BKE_mesh_vertexCos_get(me, &numVerts);
@@ -1178,7 +1178,7 @@ DerivedMesh *mesh_create_derived_for_modifier(
 
                if (build_shapekey_layers)
                        add_shapekey_layers(dm, me, ob);
-               
+
                MEM_freeN(deformedVerts);
        }
        else {
@@ -1186,7 +1186,7 @@ DerivedMesh *mesh_create_derived_for_modifier(
 
                if (build_shapekey_layers)
                        add_shapekey_layers(tdm, me, ob);
-               
+
                dm = modwrap_applyModifier(md, ob, tdm, 0);
                ASSERT_IS_VALID_DM(dm);
 
@@ -1205,13 +1205,13 @@ static float (*get_editbmesh_orco_verts(BMEditMesh *em))[3]
 
        /* these may not really be the orco's, but it's only for preview.
         * could be solver better once, but isn't simple */
-       
+
        orco = MEM_malloc_arrayN(em->bm->totvert, sizeof(float) * 3, "BMEditMesh Orco");
 
        BM_ITER_MESH_INDEX (eve, &iter, em->bm, BM_VERTS_OF_MESH, i) {
                copy_v3_v3(orco[i], eve->co);
        }
-       
+
        return orco;
 }
 
@@ -1401,7 +1401,7 @@ static void calc_weightpaint_vert_color(
         const int draw_flag)
 {
        float input = 0.0f;
-       
+
        bool show_alert_color = false;
 
        if ((defbase_sel_tot > 1) && (draw_flag & CALC_WP_MULTIPAINT)) {
@@ -1633,35 +1633,35 @@ static void shapekey_layers_to_keyblocks(DerivedMesh *dm, Mesh *me, int actshape
 {
        KeyBlock *kb;
        int i, j, tot;
-       
+
        if (!me->key)
                return;
-       
+
        tot = CustomData_number_of_layers(&dm->vertData, CD_SHAPEKEY);
        for (i = 0; i < tot; i++) {
                CustomDataLayer *layer = &dm->vertData.layers[CustomData_get_layer_index_n(&dm->vertData, CD_SHAPEKEY, i)];
                float (*cos)[3], (*kbcos)[3];
-               
+
                for (kb = me->key->block.first; kb; kb = kb->next) {
                        if (kb->uid == layer->uid)
                                break;
                }
-               
+
                if (!kb) {
                        kb = BKE_keyblock_add(me->key, layer->name);
                        kb->uid = layer->uid;
                }
-               
+
                if (kb->data)
                        MEM_freeN(kb->data);
-               
+
                cos = CustomData_get_layer_n(&dm->vertData, CD_SHAPEKEY, i);
                kb->totelem = dm->numVertData;
 
                kb->data = kbcos = MEM_malloc_arrayN(kb->totelem, 3 * sizeof(float), "kbcos DerivedMesh.c");
                if (kb->uid == actshape_uid) {
                        MVert *mvert = dm->getVertArray(dm);
-                       
+
                        for (j = 0; j < dm->numVertData; j++, kbcos++, mvert++) {
                                copy_v3_v3(*kbcos, mvert->co);
                        }
@@ -1672,12 +1672,12 @@ static void shapekey_layers_to_keyblocks(DerivedMesh *dm, Mesh *me, int actshape
                        }
                }
        }
-       
+
        for (kb = me->key->block.first; kb; kb = kb->next) {
                if (kb->totelem != dm->numVertData) {
                        if (kb->data)
                                MEM_freeN(kb->data);
-                       
+
                        kb->totelem = dm->numVertData;
                        kb->data = MEM_calloc_arrayN(kb->totelem, 3 * sizeof(float), "kb->data derivedmesh.c");
                        fprintf(stderr, "%s: lost a shapekey layer: '%s'! (bmesh internal error)\n", __func__, kb->name);
@@ -1844,13 +1844,13 @@ static void mesh_calc_modifiers(
        if (useDeform) {
                if (inputVertexCos)
                        deformedVerts = inputVertexCos;
-               
+
                /* Apply all leading deforming modifiers */
                for (; md; md = md->next, curr = curr->next) {
                        const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
 
                        md->scene = scene;
-                       
+
                        if (!modifier_isEnabled(scene, md, required_mode)) {
                                continue;
                        }
@@ -1868,7 +1868,7 @@ static void mesh_calc_modifiers(
                        else {
                                break;
                        }
-                       
+
                        /* grab modifiers until index i */
                        if ((index != -1) && (BLI_findindex(&ob->modifiers, md) >= index))
                                break;
@@ -1883,7 +1883,7 @@ static void mesh_calc_modifiers(
 
                        if (build_shapekey_layers)
                                add_shapekey_layers(dm, me, ob);
-                       
+
                        if (deformedVerts) {
                                CDDM_apply_vert_coords(*r_deform, deformedVerts);
                        }
@@ -1899,7 +1899,7 @@ static void mesh_calc_modifiers(
 
 
        /* Now apply all remaining modifiers. If useDeform is off then skip
-        * OnlyDeform ones. 
+        * OnlyDeform ones.
         */
        dm = NULL;
        orcodm = NULL;
@@ -2059,14 +2059,14 @@ static void mesh_calc_modifiers(
                                }
                        }
 
-                       
+
                        /* set the DerivedMesh to only copy needed data */
                        mask = curr->mask;
                        /* needMapping check here fixes bug [#28112], otherwise it's
                         * possible that it won't be copied */
                        mask |= append_mask;
                        DM_set_only_copy(dm, mask | (need_mapping ? CD_MASK_ORIGINDEX : 0));
-                       
+
                        /* add cloth rest shape key if needed */
                        if (mask & CD_MASK_CLOTH_ORCO)
                                add_orco_dm(ob, NULL, dm, clothorcodm, CD_CLOTH_ORCO);
@@ -2191,11 +2191,11 @@ static void mesh_calc_modifiers(
        }
        else {
                finaldm = CDDM_from_mesh(me);
-               
+
                if (build_shapekey_layers) {
                        add_shapekey_layers(finaldm, me, ob);
                }
-               
+
                if (deformedVerts) {
                        CDDM_apply_vert_coords(finaldm, deformedVerts);
                }
@@ -2302,7 +2302,7 @@ bool editbmesh_modifier_is_enabled(Scene *scene, ModifierData *md, DerivedMesh *
                modifier_setError(md, "Modifier requires original data, bad stack position");
                return false;
        }
-       
+
        return true;
 }
 
@@ -2359,7 +2359,7 @@ static void editbmesh_calc_modifiers(
                const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
 
                md->scene = scene;
-               
+
                if (!editbmesh_modifier_is_enabled(scene, md, dm)) {
                        continue;
                }
@@ -2794,7 +2794,7 @@ DerivedMesh *mesh_get_derived_deform(Scene *scene, Object *ob, CustomDataMask da
 DerivedMesh *mesh_create_derived_render(Scene *scene, Object *ob, CustomDataMask dataMask)
 {
        DerivedMesh *final;
-       
+
        mesh_calc_modifiers(
                scene, ob, NULL, true, 1, false, dataMask, -1, false, false, false,
                NULL, &final);
@@ -2839,7 +2839,7 @@ DerivedMesh *mesh_create_derived_no_deform(
         CustomDataMask dataMask)
 {
        DerivedMesh *final;
-       
+
        mesh_calc_modifiers(
                scene, ob, vertCos, false, 0, false, dataMask, -1, false, false, false,
                NULL, &final);
@@ -2852,7 +2852,7 @@ DerivedMesh *mesh_create_derived_no_virtual(
         CustomDataMask dataMask)
 {
        DerivedMesh *final;
-       
+
        mesh_calc_modifiers(
                scene, ob, vertCos, false, -1, false, dataMask, -1, false, false, false,
                NULL, &final);
@@ -2865,7 +2865,7 @@ DerivedMesh *mesh_create_derived_physics(
         CustomDataMask dataMask)
 {
        DerivedMesh *final;
-       
+
        mesh_calc_modifiers(
                scene, ob, vertCos, false, -1, true, dataMask, -1, false, false, false,
                NULL, &final);
@@ -2991,13 +2991,13 @@ DMCoNo *mesh_get_mapped_verts_nors(Scene *scene, Object *ob)
        Mesh *me = ob->data;
        DerivedMesh *dm;
        DMCoNo *vertexcosnos;
-       
+
        /* lets prevent crashing... */
        if (ob->type != OB_MESH || me->totvert == 0)
                return NULL;
-       
+
        dm = mesh_get_derived_final(scene, ob, CD_MASK_BAREMESH | CD_MASK_ORIGINDEX);
-       
+
        if (dm->foreachMappedVert) {
                vertexcosnos = MEM_calloc_arrayN(me->totvert, sizeof(DMCoNo), "vertexcosnos map");
                dm->foreachMappedVert(dm, make_vertexcosnos__mapFunc, vertexcosnos);
@@ -3010,7 +3010,7 @@ DMCoNo *mesh_get_mapped_verts_nors(Scene *scene, Object *ob)
                        dm->getVertNo(dm, a, v_co_no->no);
                }
        }
-       
+
        dm->release(dm);
        return vertexcosnos;
 }
@@ -3703,7 +3703,7 @@ void DM_vertex_attributes_from_gpu(DerivedMesh *dm, GPUVertexAttribs *gattribs,
 
        vdata = &dm->vertData;
        ldata = dm->getLoopDataLayout(dm);
-       
+
        /* calc auto bump scale if necessary */
        if (dm->auto_bump_scale <= 0.0f)
                DM_calc_auto_bump_scale(dm);
index fa36da8..eb7fefd 100644 (file)
@@ -32,7 +32,7 @@
 #include <string.h>
 #include <math.h>
 #include <stdlib.h>
-#include <stddef.h>    
+#include <stddef.h>
 
 #include "MEM_guardedalloc.h"
 
 bAction *BKE_action_add(Main *bmain, const char name[])
 {
        bAction *act;
-       
+
        act = BKE_libblock_alloc(bmain, ID_AC, name, 0);
-       
+
        return act;
-}      
+}
 
 /* .................................. */
 
@@ -105,15 +105,15 @@ void BKE_action_make_local(Main *bmain, bAction *act, const bool lib_local)
 
 /** Free (or release) any data used by this action (does not free the action itself). */
 void BKE_action_free(bAction *act)
-{      
+{
        /* No animdata here. */
 
        /* Free F-Curves */
        free_fcurves(&act->curves);
-       
+
        /* Free groups */
        BLI_freelistN(&act->groups);
-               
+
        /* Free pose-references (aka local markers) */
        BLI_freelistN(&act->markers);
 }
@@ -178,14 +178,14 @@ bAction *BKE_action_copy(Main *bmain, const bAction *act_src)
 bActionGroup *get_active_actiongroup(bAction *act)
 {
        bActionGroup *agrp = NULL;
-       
+
        if (act && act->groups.first) {
                for (agrp = act->groups.first; agrp; agrp = agrp->next) {
                        if (agrp->flag & AGRP_ACTIVE)
                                break;
                }
        }
-       
+
        return agrp;
 }
 
@@ -193,11 +193,11 @@ bActionGroup *get_active_actiongroup(bAction *act)
 void set_active_action_group(bAction *act, bActionGroup *agrp, short select)
 {
        bActionGroup *grp;
-       
+
        /* sanity checks */
        if (act == NULL)
                return;
-       
+
        /* Deactive all others */
        for (grp = act->groups.first; grp; grp = grp->next) {
                if ((grp == agrp) && (select))
@@ -216,7 +216,7 @@ void action_group_colors_sync(bActionGroup *grp, const bActionGroup *ref_grp)
                        /* copy theme colors on-to group's custom color in case user tries to edit color */
                        bTheme *btheme = U.themes.first;
                        ThemeWireColor *col_set = &btheme->tarm[(grp->customCol - 1)];
-                       
+
                        memcpy(&grp->cs, col_set, sizeof(ThemeWireColor));
                }
                else {
@@ -242,69 +242,69 @@ void action_group_colors_sync(bActionGroup *grp, const bActionGroup *ref_grp)
 bActionGroup *action_groups_add_new(bAction *act, const char name[])
 {
        bActionGroup *agrp;
-       
+
        /* sanity check: must have action and name */
        if (ELEM(NULL, act, name))
                return NULL;
-       
+
        /* allocate a new one */
        agrp = MEM_callocN(sizeof(bActionGroup), "bActionGroup");
-       
+
        /* make it selected, with default name */
        agrp->flag = AGRP_SELECTED;
        BLI_strncpy(agrp->name, name[0] ? name : DATA_("Group"), sizeof(agrp->name));
-       
+
        /* add to action, and validate */
        BLI_addtail(&act->groups, agrp);
        BLI_uniquename(&act->groups, agrp, DATA_("Group"), '.', offsetof(bActionGroup, name), sizeof(agrp->name));
-       
+
        /* return the new group */
        return agrp;
 }
 
-/* Add given channel into (active) group 
+/* Add given channel into (active) group
  *     - assumes that channel is not linked to anything anymore
  *     - always adds at the end of the group
  */
 void action_groups_add_channel(bAction *act, bActionGroup *agrp, FCurve *fcurve)
-{      
+{
        /* sanity checks */
        if (ELEM(NULL, act, agrp, fcurve))
                return;
-       
+
        /* if no channels anywhere, just add to two lists at the same time */
        if (BLI_listbase_is_empty(&act->curves)) {
                fcurve->next = fcurve->prev = NULL;
-               
+
                agrp->channels.first = agrp->channels.last = fcurve;
                act->curves.first = act->curves.last = fcurve;
        }
-       
-       /* if the group already has channels, the F-Curve can simply be added to the list 
+
+       /* if the group already has channels, the F-Curve can simply be added to the list
         * (i.e. as the last channel in the group)
         */
        else if (agrp->channels.first) {
-               /* if the group's last F-Curve is the action's last F-Curve too, 
+               /* if the group's last F-Curve is the action's last F-Curve too,
                 * then set the F-Curve as the last for the action first so that
                 * the lists will be in sync after linking
                 */
                if (agrp->channels.last == act->curves.last)
                        act->curves.last = fcurve;
-                       
+
                /* link in the given F-Curve after the last F-Curve in the group,
                 * which means that it should be able to fit in with the rest of the
                 * list seamlessly
                 */
                BLI_insertlinkafter(&agrp->channels, agrp->channels.last, fcurve);
        }
-       
+
        /* otherwise, need to find the nearest F-Curve in group before/after current to link with */
        else {
                bActionGroup *grp;
-               
+
                /* firstly, link this F-Curve to the group */
                agrp->channels.first = agrp->channels.last = fcurve;
-               
+
                /* step through the groups preceding this one, finding the F-Curve there to attach this one after */
                for (grp = agrp->prev; grp; grp = grp->prev) {
                        /* if this group has F-Curves, we want weave the given one in right after the last channel there,
@@ -318,18 +318,18 @@ void action_groups_add_channel(bAction *act, bActionGroup *agrp, FCurve *fcurve)
                                break;
                        }
                }
-               
+
                /* if grp is NULL, that means we fell through, and this F-Curve should be added as the new first
-                * since group is (effectively) the first group. Thus, the existing first F-Curve becomes the 
+                * since group is (effectively) the first group. Thus, the existing first F-Curve becomes the
                 * second in the chain, etc. etc.
                 */
                if (grp == NULL)
                        BLI_insertlinkbefore(&act->curves, act->curves.first, fcurve);
        }
-       
+
        /* set the F-Curve's new group */
        fcurve->grp = agrp;
-}      
+}
 
 /* Remove the given channel from all groups */
 void action_groups_remove_channel(bAction *act, FCurve *fcu)
@@ -337,11 +337,11 @@ void action_groups_remove_channel(bAction *act, FCurve *fcu)
        /* sanity checks */
        if (ELEM(NULL, act, fcu))
                return;
-       
+
        /* check if any group used this directly */
        if (fcu->grp) {
                bActionGroup *agrp = fcu->grp;
-               
+
                if (agrp->channels.first == agrp->channels.last) {
                        if (agrp->channels.first == fcu) {
                                BLI_listbase_clear(&agrp->channels);
@@ -359,10 +359,10 @@ void action_groups_remove_channel(bAction *act, FCurve *fcu)
                        else
                                agrp->channels.last = NULL;
                }
-               
+
                fcu->grp = NULL;
        }
-       
+
        /* now just remove from list */
        BLI_remlink(&act->curves, fcu);
 }
@@ -373,7 +373,7 @@ bActionGroup *BKE_action_group_find_name(bAction *act, const char name[])
        /* sanity checks */
        if (ELEM(NULL, act, act->groups.first, name) || (name[0] == 0))
                return NULL;
-               
+
        /* do string comparisons */
        return BLI_findstring(&act->groups, name, offsetof(bActionGroup, name));
 }
@@ -382,11 +382,11 @@ bActionGroup *BKE_action_group_find_name(bAction *act, const char name[])
 void action_groups_clear_tempflags(bAction *act)
 {
        bActionGroup *agrp;
-       
+
        /* sanity checks */
        if (ELEM(NULL, act, act->groups.first))
                return;
-               
+
        /* flag clearing loop */
        for (agrp = act->groups.first; agrp; agrp = agrp->next)
                agrp->flag &= ~AGRP_TEMP;
@@ -402,10 +402,10 @@ bPoseChannel *BKE_pose_channel_find_name(const bPose *pose, const char *name)
 {
        if (ELEM(NULL, pose, name) || (name[0] == '\0'))
                return NULL;
-       
+
        if (pose->chanhash)
                return BLI_ghash_lookup(pose->chanhash, (const void *)name);
-       
+
        return BLI_findstring(&((const bPose *)pose)->chanbase, name, offsetof(bPoseChannel, name));
 }
 
@@ -420,10 +420,10 @@ bPoseChannel *BKE_pose_channel_find_name(const bPose *pose, const char *name)
 bPoseChannel *BKE_pose_channel_verify(bPose *pose, const char *name)
 {
        bPoseChannel *chan;
-       
+
        if (pose == NULL)
                return NULL;
-       
+
        /* See if this channel exists */
        chan = BLI_findstring(&pose->chanbase, name, offsetof(bPoseChannel, name));
        if (chan) {
@@ -432,7 +432,7 @@ bPoseChannel *BKE_pose_channel_verify(bPose *pose, const char *name)
 
        /* If not, create it and add it */
        chan = MEM_callocN(sizeof(bPoseChannel), "verifyPoseChannel");
-       
+
        BLI_strncpy(chan->name, name, sizeof(chan->name));
 
        chan->custom_scale = 1.0f;
@@ -441,20 +441,20 @@ bPoseChannel *BKE_pose_channel_verify(bPose *pose, const char *name)
        unit_qt(chan->quat);
        unit_axis_angle(chan->rotAxis, &chan->rotAngle);
        chan->size[0] = chan->size[1] = chan->size[2] = 1.0f;
-       
+
        chan->scaleIn = chan->scaleOut = 1.0f;
-       
+
        chan->limitmin[0] = chan->limitmin[1] = chan->limitmin[2] = -M_PI;
        chan->limitmax[0] = chan->limitmax[1] = chan->limitmax[2] = M_PI;
        chan->stiffness[0] = chan->stiffness[1] = chan->stiffness[2] = 0.0f;
        chan->ikrotweight = chan->iklinweight = 0.0f;
        unit_m4(chan->constinv);
-       
+
        chan->protectflag = OB_LOCK_ROT4D;  /* lock by components by default */
-       
+
        BLI_addtail(&pose->chanbase, chan);
        BKE_pose_channels_hash_free(pose);
-       
+
        return chan;
 }
 
@@ -494,7 +494,7 @@ bPoseChannel *BKE_pose_channel_active(Object *ob)
                if ((pchan->bone) && (pchan->bone == arm->act_bone) && (pchan->bone->layer & arm->layer))
                        return pchan;
        }
-       
+
        return NULL;
 }
 
@@ -543,11 +543,11 @@ void BKE_pose_copy_data_ex(bPose **dst, const bPose *src, const int flag, const
                *dst = NULL;
                return;
        }
-       
+
        outPose = MEM_callocN(sizeof(bPose), "pose");
-       
+
        BLI_duplicatelist(&outPose->chanbase, &src->chanbase);
-       
+
        /* Rebuild ghash here too, so that name lookups below won't be too bad...
         * BUT this will have the penalty that the ghash will be built twice
         * if BKE_pose_rebuild() gets called after this...
@@ -556,12 +556,12 @@ void BKE_pose_copy_data_ex(bPose **dst, const bPose *src, const int flag, const
                outPose->chanhash = NULL;
                BKE_pose_channels_hash_make(outPose);
        }
-       
+
        outPose->iksolver = src->iksolver;
        outPose->ikdata = NULL;
        outPose->ikparam = MEM_dupallocN(src->ikparam);
        outPose->avs = src->avs;
-       
+
        for (pchan = outPose->chanbase.first; pchan; pchan = pchan->next) {
                if ((flag & LIB_ID_CREATE_NO_USER_REFCOUNT) == 0) {
                        id_us_plus((ID *)pchan->custom);
@@ -583,7 +583,7 @@ void BKE_pose_copy_data_ex(bPose **dst, const bPose *src, const int flag, const
                        pchan->constraints = listb;
                        pchan->mpath = NULL; /* motion paths should not get copied yet... */
                }
-               
+
                if (pchan->prop) {
                        pchan->prop = IDP_CopyProperty_ex(pchan->prop, flag);
                }
@@ -593,7 +593,7 @@ void BKE_pose_copy_data_ex(bPose **dst, const bPose *src, const int flag, const
        if (copy_constraints) {
                BLI_duplicatelist(&outPose->agroups, &src->agroups);
        }
-       
+
        *dst = outPose;
 }
 
@@ -641,7 +641,7 @@ static bool pose_channel_in_IK_chain(Object *ob, bPoseChannel *pchan, int level)
 {
        bConstraint *con;
        Bone *bone;
-       
+
        /* No need to check if constraint is active (has influence),
         * since all constraints with CONSTRAINT_IK_AUTO are active */
        for (con = pchan->constraints.first; con; con = con->next) {
@@ -670,18 +670,18 @@ bool BKE_pose_channel_in_IK_chain(Object *ob, bPoseChannel *pchan)
  * Removes the hash for quick lookup of channels, must
  * be done when adding/removing channels.
  */
-void BKE_pose_channels_hash_make(bPose *pose) 
+void BKE_pose_channels_hash_make(bPose *pose)
 {
        if (!pose->chanhash) {
                bPoseChannel *pchan;
-               
+
                pose->chanhash = BLI_ghash_str_new("make_pose_chan gh");
                for (pchan = pose->chanbase.first; pchan; pchan = pchan->next)
                        BLI_ghash_insert(pose->chanhash, pchan->name, pchan);
        }
 }
 
-void BKE_pose_channels_hash_free(bPose *pose) 
+void BKE_pose_channels_hash_free(bPose *pose)
 {
        if (pose->chanhash) {
                BLI_ghash_free(pose->chanhash, NULL, NULL);
@@ -737,7 +737,7 @@ void BKE_pose_channels_remove(
                                                        cti->flush_constraint_targets(con, &targets, 0);
                                        }
                                }
-                               
+
                                if (pchan->bbone_prev) {
                                        if (filter_fn(pchan->bbone_prev->name, user_data))
                                                pchan->bbone_prev = NULL;
@@ -746,7 +746,7 @@ void BKE_pose_channels_remove(
                                        if (filter_fn(pchan->bbone_next->name, user_data))
                                                pchan->bbone_next = NULL;
                                }
-                               
+
                                if (pchan->custom_tx) {
                                        if (filter_fn(pchan->custom_tx->name, user_data))
                                                pchan->custom_tx = NULL;
@@ -775,7 +775,7 @@ void BKE_pose_channel_free_ex(bPoseChannel *pchan, bool do_id_user)
        }
 
        BKE_constraints_free_ex(&pchan->constraints, do_id_user);
-       
+
        if (pchan->prop) {
                IDP_FreeProperty(pchan->prop);
                MEM_freeN(pchan->prop);
@@ -794,11 +794,11 @@ void BKE_pose_channel_free(bPoseChannel *pchan)
 void BKE_pose_channels_free_ex(bPose *pose, bool do_id_user)
 {
        bPoseChannel *pchan;
-       
+
        if (pose->chanbase.first) {
                for (pchan = pose->chanbase.first; pchan; pchan = pchan->next)
                        BKE_pose_channel_free_ex(pchan, do_id_user);
-               
+
                BLI_freelistN(&pose->chanbase);
        }
 
@@ -852,7 +852,7 @@ void BKE_pose_free(bPose *pose)
 static void copy_pose_channel_data(bPoseChannel *pchan, const bPoseChannel *chan)
 {
        bConstraint *pcon, *con;
-       
+
        copy_v3_v3(pchan->loc, chan->loc);
        copy_v3_v3(pchan->size, chan->size);
        copy_v3_v3(pchan->eul, chan->eul);
@@ -863,7 +863,7 @@ static void copy_pose_channel_data(bPoseChannel *pchan, const bPoseChannel *chan
        copy_m4_m4(pchan->chan_mat, (float(*)[4])chan->chan_mat);
        copy_m4_m4(pchan->pose_mat, (float(*)[4])chan->pose_mat);
        pchan->flag = chan->flag;
-       
+
        pchan->roll1 = chan->roll1;
        pchan->roll2 = chan->roll2;
        pchan->curveInX = chan->curveInX;
@@ -874,7 +874,7 @@ static void copy_pose_channel_data(bPoseChannel *pchan, const bPoseChannel *chan
        pchan->ease2 = chan->ease2;
        pchan->scaleIn = chan->scaleIn;
        pchan->scaleOut = chan->scaleOut;
-       
+
        con = chan->constraints.first;
        for (pcon = pchan->constraints.first; pcon && con; pcon = pcon->next, con = con->next) {
                pcon->enforce = con->enforce;
@@ -908,7 +908,7 @@ void BKE_pose_channel_copy_data(bPoseChannel *pchan, const bPoseChannel *pchan_f
        pchan->ikstretch = pchan_from->ikstretch;
        pchan->ikrotweight = pchan_from->ikrotweight;
        pchan->iklinweight = pchan_from->iklinweight;
-       
+
        /* bbone settings (typically not animated) */
        pchan->bboneflag = pchan_from->bboneflag;
        pchan->bbone_next = pchan_from->bbone_next;
@@ -946,31 +946,31 @@ void BKE_pose_update_constraint_flags(bPose *pose)
 {
        bPoseChannel *pchan, *parchan;
        bConstraint *con;
-       
+
        /* clear */
        for (pchan = pose->chanbase.first; pchan; pchan = pchan->next) {
                pchan->constflag = 0;
        }
        pose->flag &= ~POSE_CONSTRAINTS_TIMEDEPEND;
-       
+
        /* detect */
        for (pchan = pose->chanbase.first; pchan; pchan = pchan->next) {
                for (con = pchan->constraints.first; con; con = con->next) {
                        if (con->type == CONSTRAINT_TYPE_KINEMATIC) {
                                bKinematicConstraint *data = (bKinematicConstraint *)con->data;
-                               
+
                                pchan->constflag |= PCHAN_HAS_IK;
-                               
+
                                if (data->tar == NULL || (data->tar->type == OB_ARMATURE && data->subtarget[0] == 0))
                                        pchan->constflag |= PCHAN_HAS_TARGET;
-                               
+
                                /* negative rootbone = recalc rootbone index. used in do_versions */
                                if (data->rootbone < 0) {
                                        data->rootbone = 0;
-                                       
+
                                        if (data->flag & CONSTRAINT_IK_TIP) parchan = pchan;
                                        else parchan = pchan->parent;
-                                       
+
                                        while (parchan) {
                                                data->rootbone++;
                                                if ((parchan->bone->flag & BONE_CONNECTED) == 0)
@@ -981,10 +981,10 @@ void BKE_pose_update_constraint_flags(bPose *pose)
                        }
                        else if (con->type == CONSTRAINT_TYPE_FOLLOWPATH) {
                                bFollowPathConstraint *data = (bFollowPathConstraint *)con->data;
-                               
+
                                /* for drawing constraint colors when color set allows this */
                                pchan->constflag |= PCHAN_HAS_CONST;
-                               
+
                                /* if we have a valid target, make sure that this will get updated on frame-change
                                 * (needed for when there is no anim-data for this pose)
                                 */
@@ -993,7 +993,7 @@ void BKE_pose_update_constraint_flags(bPose *pose)
                        }
                        else if (con->type == CONSTRAINT_TYPE_SPLINEIK)
                                pchan->constflag |= PCHAN_HAS_SPLINEIK;
-                       else 
+                       else
                                pchan->constflag |= PCHAN_HAS_CONST;
                }
        }
@@ -1005,7 +1005,7 @@ void BKE_pose_tag_update_constraint_flags(bPose *pose)
        pose->flag |= POSE_CONSTRAINTS_NEED_UPDATE_FLAGS;
 }
 
-/* Clears all BONE_UNKEYED flags for every pose channel in every pose 
+/* Clears all BONE_UNKEYED flags for every pose channel in every pose
  * This should only be called on frame changing, when it is acceptable to
  * do this. Otherwise, these flags should not get cleared as poses may get lost.
  */
@@ -1014,14 +1014,14 @@ void framechange_poses_clear_unkeyed(Main *bmain)
        Object *ob;
        bPose *pose;
        bPoseChannel *pchan;
-       
+
        /* This needs to be done for each object that has a pose */
        /* TODO: proxies may/may not be correctly handled here... (this needs checking) */
        for (ob = bmain->object.first; ob; ob = ob->id.next) {
                /* we only need to do this on objects with a pose */
                if ((pose = ob->pose)) {
                        for (pchan = pose->chanbase.first; pchan; pchan = pchan->next) {
-                               if (pchan->bone) 
+                               if (pchan->bone)
                                        pchan->bone->flag &= ~BONE_UNKEYED;
                        }
                }
@@ -1034,18 +1034,18 @@ void framechange_poses_clear_unkeyed(Main *bmain)
 bActionGroup *BKE_pose_add_group(bPose *pose, const char *name)
 {
        bActionGroup *grp;
-       
+
        if (!name) {
                name = DATA_("Group");
        }
-       
+
        grp = MEM_callocN(sizeof(bActionGroup), "PoseGroup");
        BLI_strncpy(grp->name, name, sizeof(grp->name));
        BLI_addtail(&pose->agroups, grp);
        BLI_uniquename(&pose->agroups, grp, name, '.', offsetof(bActionGroup, name), sizeof(grp->name));
-       
+
        pose->active_group = BLI_listbase_count(&pose->agroups);
-       
+
        return grp;
 }
 
@@ -1055,13 +1055,13 @@ void BKE_pose_remove_group(bPose *pose, bActionGroup *grp, const int index)
 {
        bPoseChannel *pchan;
        int idx = index;
-       
+
        if (idx < 1) {
                idx = BLI_findindex(&pose->agroups, grp) + 1;
        }
-       
+
        BLI_assert(idx > 0);
-       
+
        /* adjust group references (the trouble of using indices!):
         *  - firstly, make sure nothing references it
         *  - also, make sure that those after this item get corrected
@@ -1091,7 +1091,7 @@ void BKE_pose_remove_group(bPose *pose, bActionGroup *grp, const int index)
 void BKE_pose_remove_group_index(bPose *pose, const int index)
 {
        bActionGroup *grp = NULL;
-       
+
        /* get group to remove */
        grp = BLI_findlink(&pose->agroups, index - 1);
        if (grp) {
@@ -1105,7 +1105,7 @@ void BKE_pose_remove_group_index(bPose *pose, const int index)
 bool action_has_motion(const bAction *act)
 {
        FCurve *fcu;
-       
+
        /* return on the first F-Curve that has some keyframes/samples defined */
        if (act) {
                for (fcu = act->curves.first; fcu; fcu = fcu->next) {
@@ -1113,7 +1113,7 @@ bool action_has_motion(const bAction *act)
                                return true;
                }
        }
-       
+
        /* nothing found */
        return false;
 }
@@ -1130,7 +1130,7 @@ void calc_action_range(const bAction *act, float *start, float *end, short incl_
                        /* if curve has keyframes, consider them first */
                        if (fcu->totvert) {
                                float nmin, nmax;
-                               
+
                                /* get extents for this curve
                                 * - no "selected only", since this is often used in the backend
                                 * - no "minimum length" (we will apply this later), otherwise
@@ -1138,26 +1138,26 @@ void calc_action_range(const bAction *act, float *start, float *end, short incl_
                                 *   a phantom frame (T50354)
                                 */
                                calc_fcurve_range(fcu, &nmin, &nmax, false, false);
-                               
+
                                /* compare to the running tally */
                                min = min_ff(min, nmin);
                                max = max_ff(max, nmax);
-                               
+
                                foundvert = 1;
                        }
-                       
+
                        /* if incl_modifiers is enabled, need to consider modifiers too
                         *      - only really care about the last modifier
                         */
                        if ((incl_modifiers) && (fcu->modifiers.last)) {
                                FModifier *fcm = fcu->modifiers.last;
-                               
+
                                /* only use the maximum sensible limits of the modifiers if they are more extreme */
                                switch (fcm->type) {
                                        case FMODIFIER_TYPE_LIMITS: /* Limits F-Modifier */
                                        {
                                                FMod_Limits *fmd = (FMod_Limits *)fcm->data;
-                                               
+
                                                if (fmd->flag & FCM_LIMIT_XMIN) {
                                                        min = min_ff(min, fmd->rect.xmin);
                                                }
@@ -1169,7 +1169,7 @@ void calc_action_range(const bAction *act, float *start, float *end, short incl_
                                        case FMODIFIER_TYPE_CYCLES: /* Cycles F-Modifier */
                                        {
                                                FMod_Cycles *fmd = (FMod_Cycles *)fcm->data;
-                                               
+
                                                if (fmd->before_mode != FCM_EXTRAPOLATE_NONE)
                                                        min = MINAFRAMEF;
                                                if (fmd->after_mode != FCM_EXTRAPOLATE_NONE)
@@ -1177,22 +1177,22 @@ void calc_action_range(const bAction *act, float *start, float *end, short incl_
                                                break;
                                        }
                                        /* TODO: function modifier may need some special limits */
-                                               
+
                                        default: /* all other standard modifiers are on the infinite range... */
                                                min = MINAFRAMEF;
                                                max = MAXFRAMEF;
                                                break;
                                }
-                               
+
                                foundmod = 1;
                        }
                }
        }
-       
+
        if (foundvert || foundmod) {
                /* ensure that action is at least 1 frame long (for NLA strips to have a valid length) */
                if (min == max) max += 1.0f;
-               
+
                *start = min;
                *end = max;
        }
@@ -1202,7 +1202,7 @@ void calc_action_range(const bAction *act, float *start, float *end, short incl_
        }
 }
 
-/* Return flags indicating which transforms the given object/posechannel has 
+/* Return flags indicating which transforms the given object/posechannel has
  *     - if 'curves' is provided, a list of links to these curves are also returned
  */
 short action_get_item_transforms(bAction *act, Object *ob, bPoseChannel *pchan, ListBase *curves)
@@ -1211,7 +1211,7 @@ short action_get_item_transforms(bAction *act, Object *ob, bPoseChannel *pchan,
        FCurve *fcu;
        char *basePath = NULL;
        short flags = 0;
-       
+
        /* build PointerRNA from provided data to obtain the paths to use */
        if (pchan)
                RNA_pointer_create((ID *)ob, &RNA_PoseBone, pchan, &ptr);
@@ -1219,37 +1219,37 @@ short action_get_item_transforms(bAction *act, Object *ob, bPoseChannel *pchan,
                RNA_id_pointer_create((ID *)ob, &ptr);
        else
                return 0;
-               
+
        /* get the basic path to the properties of interest */
        basePath = RNA_path_from_ID_to_struct(&ptr);
        if (basePath == NULL)
                return 0;
-               
-       /* search F-Curves for the given properties 
+
+       /* search F-Curves for the given properties
         *      - we cannot use the groups, since they may not be grouped in that way...
         */
        for (fcu = act->curves.first; fcu; fcu = fcu->next) {
                const char *bPtr = NULL, *pPtr = NULL;
-               
+
                /* if enough flags have been found, we can stop checking unless we're also getting the curves */
                if ((flags == ACT_TRANS_ALL) && (curves == NULL))
                        break;
-                       
+
                /* just in case... */
                if (fcu->rna_path == NULL)
                        continue;
-               
+
                /* step 1: check for matching base path */
                bPtr = strstr(fcu->rna_path, basePath);
-               
+
                if (bPtr) {
-                       /* we must add len(basePath) bytes to the match so that we are at the end of the 
+                       /* we must add len(basePath) bytes to the match so that we are at the end of the
                         * base path so that we don't get false positives with these strings in the names
                         */
                        bPtr += strlen(basePath);
-                       
-                       /* step 2: check for some property with transforms 
-                        *      - to speed things up, only check for the ones not yet found 
+
+                       /* step 2: check for some property with transforms
+                        *      - to speed things up, only check for the ones not yet found
                         *    unless we're getting the curves too
                         *      - if we're getting the curves, the BLI_genericNodeN() creates a LinkData
                         *        node wrapping the F-Curve, which then gets added to the list
@@ -1259,53 +1259,53 @@ short action_get_item_transforms(bAction *act, Object *ob, bPoseChannel *pchan,
                                pPtr = strstr(bPtr, "location");
                                if (pPtr) {
                                        flags |= ACT_TRANS_LOC;
-                                       
-                                       if (curves) 
+
+                                       if (curves)
                                                BLI_addtail(curves, BLI_genericNodeN(fcu));
                                        continue;
                                }
                        }
-                       
+
                        if ((curves) || (flags & ACT_TRANS_SCALE) == 0) {
                                pPtr = strstr(bPtr, "scale");
                                if (pPtr) {
                                        flags |= ACT_TRANS_SCALE;
-                                       
-                                       if (curves) 
+
+                                       if (curves)
                                                BLI_addtail(curves, BLI_genericNodeN(fcu));
                                        continue;
                                }
                        }
-                       
+
                        if ((curves) || (flags & ACT_TRANS_ROT) == 0) {
                                pPtr = strstr(bPtr, "rotation");
                                if (pPtr) {
                                        flags |= ACT_TRANS_ROT;
-                                       
-                                       if (curves) 
+
+                                       if (curves)
                                                BLI_addtail(curves, BLI_genericNodeN(fcu));
                                        continue;
                                }
                        }
-                       
+
                        if ((curves) || (flags & ACT_TRANS_BBONE) == 0) {
                                /* bbone shape properties */
                                pPtr = strstr(bPtr, "bbone_");
                                if (pPtr) {
                                        flags |= ACT_TRANS_BBONE;
-                                       
+
                                        if (curves)
                                                BLI_addtail(curves, BLI_genericNodeN(fcu));
                                        continue;
                                }
                        }
-                       
+
                        if ((curves) || (flags & ACT_TRANS_PROP) == 0) {
                                /* custom properties only */
                                pPtr = strstr(bPtr, "[\""); /* extra '"' comment here to keep my texteditor functionlist working :) */
                                if (pPtr) {
                                        flags |= ACT_TRANS_PROP;
-                                       
+
                                        if (curves)
                                                BLI_addtail(curves, BLI_genericNodeN(fcu));
                                        continue;
@@ -1313,10 +1313,10 @@ short action_get_item_transforms(bAction *act, Object *ob, bPoseChannel *pchan,
                        }
                }
        }
-       
+
        /* free basePath */
        MEM_freeN(basePath);
-       
+
        /* return flags found */
        return flags;
 }
@@ -1346,26 +1346,26 @@ void extract_pose_from_pose(bPose *pose, const bPose *src)
 void BKE_pose_rest(bPose *pose)
 {
        bPoseChannel *pchan;
-       
+
        if (!pose)
                return;
-       
+
        memset(pose->stride_offset, 0, sizeof(pose->stride_offset));
        memset(pose->cyclic_offset, 0, sizeof(pose->cyclic_offset));
-       
+
        for (pchan = pose->chanbase.first; pchan; pchan = pchan->next) {
                zero_v3(pchan->loc);
                zero_v3(pchan->eul);
                unit_qt(pchan->quat);
                unit_axis_angle(pchan->rotAxis, &pchan->rotAngle);
                pchan->size[0] = pchan->size[1] = pchan->size[2] = 1.0f;
-               
+
                pchan->roll1 = pchan->roll2 = 0.0f;
                pchan->curveInX = pchan->curveInY = 0.0f;
                pchan->curveOutX = pchan->curveOutY = 0.0f;
                pchan->ease1 = pchan->ease2 = 0.0f;
                pchan->scaleIn = pchan->scaleOut = 1.0f;
-               
+
                pchan->flag &= ~(POSE_LOC | POSE_ROT | POSE_SIZE | POSE_BBONE_SHAPE);
        }
 }
@@ -1374,7 +1374,7 @@ void BKE_pose_rest(bPose *pose)
 bool BKE_pose_copy_result(bPose *to, bPose *from)
 {
        bPoseChannel *pchanto, *pchanfrom;
-       
+
        if (to == NULL || from == NULL) {
                printf("Pose copy error, pose to:%p from:%p\n", (void *)to, (void *)from); /* debug temp */
                return false;
@@ -1391,16 +1391,16 @@ bool BKE_pose_copy_result(bPose *to, bPose *from)
                if (pchanto) {
                        copy_m4_m4(pchanto->pose_mat, pchanfrom->pose_mat);
                        copy_m4_m4(pchanto->chan_mat, pchanfrom->chan_mat);
-                       
+
                        /* used for local constraints */
                        copy_v3_v3(pchanto->loc, pchanfrom->loc);
                        copy_qt_qt(pchanto->quat, pchanfrom->quat);
                        copy_v3_v3(pchanto->eul, pchanfrom->eul);
                        copy_v3_v3(pchanto->size, pchanfrom->size);
-                       
+
                        copy_v3_v3(pchanto->pose_head, pchanfrom->pose_head);
                        copy_v3_v3(pchanto->pose_tail, pchanfrom->pose_tail);
-                       
+
                        pchanto->roll1 = pchanfrom->roll1;
                        pchanto->roll2 = pchanfrom->roll2;
                        pchanto->curveInX = pchanfrom->curveInX;
@@ -1411,7 +1411,7 @@ bool BKE_pose_copy_result(bPose *to, bPose *from)
                        pchanto->ease2 = pchanfrom->ease2;
                        pchanto->scaleIn = pchanfrom->scaleIn;
                        pchanto->scaleOut = pchanfrom->scaleOut;
-                       
+
                        pchanto->rotmode = pchanfrom->rotmode;
                        pchanto->flag = pchanfrom->flag;
                        pchanto->protectflag = pchanfrom->protectflag;
@@ -1431,27 +1431,27 @@ void BKE_pose_tag_recalc(Main *bmain, bPose *pose)
        DAG_relations_tag_update(bmain);
 }
 
-/* For the calculation of the effects of an Action at the given frame on an object 
+/* For the calculation of the effects of an Action at the given frame on an object
  * This is currently only used for the Action Constraint
  */
 void what_does_obaction(Object *ob, Object *workob, bPose *pose, bAction *act, char groupname[], float cframe)
 {
        bActionGroup *agrp = BKE_action_group_find_name(act, groupname);
-       
+
        /* clear workob */
        BKE_object_workob_clear(workob);
-       
+
        /* init workob */
        copy_m4_m4(workob->obmat, ob->obmat);
        copy_m4_m4(workob->parentinv, ob->parentinv);
        copy_m4_m4(workob->constinv, ob->constinv);
        workob->parent = ob->parent;
-       
+
        workob->rotmode = ob->rotmode;
-       
+
        workob->trackflag = ob->trackflag;
        workob->upflag = ob->upflag;
-       
+
        workob->partype = ob->partype;
        workob->par1 = ob->par1;
        workob->par2 = ob->par2;
@@ -1459,7 +1459,7 @@ void what_does_obaction(Object *ob, Object *workob, bPose *pose, bAction *act, c
 
        workob->constraints.first = ob->constraints.first;
        workob->constraints.last = ob->constraints.last;
-       
+
        workob->pose = pose; /* need to set pose too, since this is used for both types of Action Constraint */
        if (pose) {
                /* This function is most likely to be used with a temporary pose with a single bone in there.
@@ -1476,27 +1476,27 @@ void what_does_obaction(Object *ob, Object *workob, bPose *pose, bAction *act, c
 
        BLI_strncpy(workob->parsubstr, ob->parsubstr, sizeof(workob->parsubstr));
        BLI_strncpy(workob->id.name, "OB<ConstrWorkOb>", sizeof(workob->id.name)); /* we don't use real object name, otherwise RNA screws with the real thing */
-       
+
        /* if we're given a group to use, it's likely to be more efficient (though a bit more dangerous) */
        if (agrp) {
                /* specifically evaluate this group only */
                PointerRNA id_ptr;
-               
+
                /* get RNA-pointer for the workob's ID */
                RNA_id_pointer_create(&workob->id, &id_ptr);
-               
+
                /* execute action for this group only */
                animsys_evaluate_action_group(&id_ptr, act, agrp, NULL, cframe);
        }
        else {
                AnimData adt = {NULL};
-               
+
                /* init animdata, and attach to workob */
                workob->adt = &adt;
-               
+
                adt.recalc = ADT_RECALC_ANIM;
                adt.action = act;
-               
+
                /* execute effects of Action on to workob (or it's PoseChannels) */
                BKE_animsys_evaluate_animdata(NULL, &workob->id, &adt, cframe, ADT_RECALC_ANIM);
        }
index 84a8a5d..b3c6fb4 100644 (file)
@@ -92,22 +92,22 @@ void animviz_settings_init(bAnimVizSettings *avs)
 /* ------------------- */
 
 /* Free the given motion path's cache */
-void animviz_free_motionpath_cache(bMotionPath *mpath) 
+void animviz_free_motionpath_cache(bMotionPath *mpath)
 {
        /* sanity check */
-       if (mpath == NULL) 
+       if (mpath == NULL)
                return;
-               
+
        /* free the path if necessary */
        if (mpath->points)
                MEM_freeN(mpath->points);
-       
+
        /* reset the relevant parameters */
        mpath->points = NULL;
        mpath->length = 0;
 }
 
-/* Free the given motion path instance and its data 
+/* Free the given motion path instance and its data
  * NOTE: this frees the motion path given!
  */
 void animviz_free_motionpath(bMotionPath *mpath)
@@ -115,10 +115,10 @@ void animviz_free_motionpath(bMotionPath *mpath)
        /* sanity check */
        if (mpath == NULL)
                return;
-       
+
        /* free the cache first */
        animviz_free_motionpath_cache(mpath);
-       
+
        /* now the instance itself */
        MEM_freeN(mpath);
 }
@@ -137,11 +137,11 @@ bMotionPath *animviz_verify_motionpaths(ReportList *reports, Scene *scene, Objec
 {
        bAnimVizSettings *avs;
        bMotionPath *mpath, **dst;
-       
+
        /* sanity checks */
        if (ELEM(NULL, scene, ob))
                return NULL;
-               
+
        /* get destination data */
        if (pchan) {
                /* paths for posechannel - assume that posechannel belongs to the object */
@@ -169,9 +169,9 @@ bMotionPath *animviz_verify_motionpaths(ReportList *reports, Scene *scene, Objec
         */
        if (*dst != NULL) {
                int expected_length = avs->path_ef - avs->path_sf;
-               
+
                mpath = *dst;
-               
+
                /* path is "valid" if length is valid, but must also be of the same length as is being requested */
                if ((mpath->start_frame != mpath->end_frame) && (mpath->length > 0)) {
                        /* outer check ensures that we have some curve data for this path */
@@ -190,13 +190,13 @@ bMotionPath *animviz_verify_motionpaths(ReportList *reports, Scene *scene, Objec
                mpath = MEM_callocN(sizeof(bMotionPath), "bMotionPath");
                *dst = mpath;
        }
-       
+
        /* set settings from the viz settings */
        mpath->start_frame = avs->path_sf;
        mpath->end_frame = avs->path_ef;
-       
+
        mpath->length = mpath->end_frame - mpath->start_frame;
-       
+
        if (avs->path_bakeflag & MOTIONPATH_BAKE_HEADS)
                mpath->flag |= MOTIONPATH_FLAG_BHEAD;
        else
@@ -212,10 +212,10 @@ bMotionPath *animviz_verify_motionpaths(ReportList *reports, Scene *scene, Objec
 
        /* allocate a cache */
        mpath->points = MEM_callocN(sizeof(bMotionPathVert) * mpath->length, "bMotionPathVerts");
-       
+
        /* tag viz settings as currently having some path(s) which use it */
        avs->path_bakeflag |= MOTIONPATH_BAKE_HAS_PATHS;
-       
+
        /* return it */
        return mpath;
 }
@@ -225,9 +225,9 @@ bMotionPath *animviz_verify_motionpaths(ReportList *reports, Scene *scene, Objec
 /* Motion path needing to be baked (mpt) */
 typedef struct MPathTarget {
        struct MPathTarget *next, *prev;
-       
+
        bMotionPath *mpath;         /* motion path in question */
-       
+
        Object *ob;                 /* source object */
        bPoseChannel *pchan;        /* source posechannel (if applicable) */
 } MPathTarget;
@@ -241,28 +241,28 @@ typedef struct MPathTarget {
 void animviz_get_object_motionpaths(Object *ob, ListBase *targets)
 {
        MPathTarget *mpt;
-       
+
        /* object itself first */
        if ((ob->avs.recalc & ANIMVIZ_RECALC_PATHS) && (ob->mpath)) {
                /* new target for object */
                mpt = MEM_callocN(sizeof(MPathTarget), "MPathTarget Ob");
                BLI_addtail(targets, mpt);
-               
+
                mpt->mpath = ob->mpath;
                mpt->ob = ob;
        }
-       
+
        /* bones */
        if ((ob->pose) && (ob->pose->avs.recalc & ANIMVIZ_RECALC_PATHS)) {
                bArmature *arm = ob->data;
                bPoseChannel *pchan;
-               
+
                for (pchan = ob->pose->chanbase.first; pchan; pchan = pchan->next) {
                        if ((pchan->bone) && (arm->layer & pchan->bone->layer) && (pchan->mpath)) {
                                /* new target for bone */
                                mpt = MEM_callocN(sizeof(MPathTarget), "MPathTarget PoseBone");
                                BLI_addtail(targets, mpt);
-                               
+
                                mpt->mpath = pchan->mpath;
                                mpt->ob = ob;
                                mpt->pchan = pchan;
@@ -285,28 +285,28 @@ static void motionpaths_calc_optimise_depsgraph(Main *bmain, Scene *scene, ListB
 {
        Base *base, *baseNext;
        MPathTarget *mpt;
-       
+
        /* make sure our temp-tag isn't already in use */
        for (base = scene->base.first; base; base = base->next)
                base->object->flag &= ~BA_TEMP_TAG;
-       
+
        /* for each target, dump its object to the start of the list if it wasn't moved already */
        for (mpt = targets->first; mpt; mpt = mpt->next) {
                for (base = scene->base.first; base; base = baseNext) {
                        baseNext = base->next;
-                       
+
                        if ((base->object == mpt->ob) && !(mpt->ob->flag & BA_TEMP_TAG)) {
                                BLI_remlink(&scene->base, base);
                                BLI_addhead(&scene->base, base);
-                               
+
                                mpt->ob->flag |= BA_TEMP_TAG;
-                               
+
                                /* we really don't need to continue anymore once this happens, but this line might really 'break' */
                                break;
                        }
                }
        }
-       
+
        /* "brew me a list that's sorted a bit faster now depsy" */
        DAG_scene_relations_rebuild(bmain, scene);
 }
@@ -322,11 +322,11 @@ static void motionpaths_calc_update_scene(Main *bmain, Scene *scene)
        }
        else { /* otherwise we can optimize by restricting updates */
                Base *base, *last = NULL;
-               
+
                /* only stuff that moves or needs display still */
                DAG_scene_update_flags(bmain, scene, scene->lay, true, false);
-               
-               /* find the last object with the tag 
+
+               /* find the last object with the tag
                 * - all those afterwards are assumed to not be relevant for our calculations
                 */
                /* optimize further by moving out... */
@@ -334,14 +334,14 @@ static void motionpaths_calc_update_scene(Main *bmain, Scene *scene)
                        if (base->object->flag & BA_TEMP_TAG)
                                last = base;
                }
-               
+
                /* perform updates for tagged objects */
                /* XXX: this will break if rigs depend on scene or other data that
                 * is animated but not attached to/updatable from objects */
                for (base = scene->base.first; base; base = base->next) {
                        /* update this object */
                        BKE_object_handle_update(bmain, bmain->eval_ctx, scene, base->object);
-                       
+
                        /* if this is the last one we need to update, let's stop to save some time */
                        if (base == last)
                                break;
@@ -363,21 +363,21 @@ static void motionpaths_calc_update_scene(Main *bmain, Scene *scene)
 static void motionpaths_calc_bake_targets(Scene *scene, ListBase *targets)
 {
        MPathTarget *mpt;
-       
+
        /* for each target, check if it can be baked on the current frame */
        for (mpt = targets->first; mpt; mpt = mpt->next) {
                bMotionPath *mpath = mpt->mpath;
                bMotionPathVert *mpv;
-               
-               /* current frame must be within the range the cache works for 
+
+               /* current frame must be within the range the cache works for
                 *      - is inclusive of the first frame, but not the last otherwise we get buffer overruns
                 */
                if ((CFRA < mpath->start_frame) || (CFRA >= mpath->end_frame))
                        continue;
-               
+
                /* get the relevant cache vert to write to */
                mpv = mpath->points + (CFRA - mpath->start_frame);
-               
+
                /* pose-channel or object path baking? */
                if (mpt->pchan) {
                        /* heads or tails */
@@ -387,7 +387,7 @@ static void motionpaths_calc_bake_targets(Scene *scene, ListBase *targets)
                        else {
                                copy_v3_v3(mpv->co, mpt->pchan->pose_tail);
                        }
-                       
+
                        /* result must be in worldspace */
                        mul_m4_v3(mpt->ob->obmat, mpv->co);
                }
@@ -398,7 +398,7 @@ static void motionpaths_calc_bake_targets(Scene *scene, ListBase *targets)
        }
 }
 
-/* Perform baking of the given object's and/or its bones' transforms to motion paths 
+/* Perform baking of the given object's and/or its bones' transforms to motion paths
  *     - scene: current scene
  *     - ob: object whose flagged motionpaths should get calculated
  *     - recalc: whether we need to
@@ -409,15 +409,15 @@ void animviz_calc_motionpaths(Main *bmain, Scene *scene, ListBase *targets)
        MPathTarget *mpt;
        int sfra, efra;
        int cfra;
-       
+
        /* sanity check */
        if (ELEM(NULL, targets, targets->first))
                return;
-       
+
        /* set frame values */
        cfra = CFRA;
        sfra = efra = cfra;
-       
+
        /* TODO: this method could be improved...
         * 1) max range for standard baking
         * 2) minimum range for recalc baking (i.e. between keyframes, but how?) */
@@ -427,34 +427,34 @@ void animviz_calc_motionpaths(Main *bmain, Scene *scene, ListBase *targets)
                efra = MAX2(efra, mpt->mpath->end_frame);
        }
        if (efra <= sfra) return;
-       
+
        /* optimize the depsgraph for faster updates */
        /* TODO: whether this is used should depend on some setting for the level of optimizations used */
        motionpaths_calc_optimise_depsgraph(bmain, scene, targets);
-       
+
        /* calculate path over requested range */
        for (CFRA = sfra; CFRA <= efra; CFRA++) {
                /* update relevant data for new frame */
                motionpaths_calc_update_scene(bmain, scene);
-               
+
                /* perform baking for targets */
                motionpaths_calc_bake_targets(scene, targets);
        }
-       
+
        /* reset original environment */
        CFRA = cfra;
        motionpaths_calc_update_scene(bmain, scene);
-       
+
        /* clear recalc flags from targets */
        for (mpt = targets->first; mpt; mpt = mpt->next) {
                bAnimVizSettings *avs;
-               
+
                /* get pointer to animviz settings for each target */
                if (mpt->pchan)
                        avs = &mpt->ob->pose->avs;
                else
                        avs = &mpt->ob->avs;
-               
+
                /* clear the flag requesting recalculation of targets */
                avs->recalc &= ~ANIMVIZ_RECALC_PATHS;
        }
@@ -463,7 +463,7 @@ void animviz_calc_motionpaths(Main *bmain, Scene *scene, ListBase *targets)
 /* ******************************************************************** */
 /* Curve Paths - for curve deforms and/or curve following */
 
-/* free curve path data 
+/* free curve path data
  * NOTE: frees the path itself!
  * NOTE: this is increasingly inaccurate with non-uniform BevPoint subdivisions [#24633]
  */
@@ -473,7 +473,7 @@ void free_path(Path *path)
        MEM_freeN(path);
 }
 
-/* calculate a curve-deform path for a curve 
+/* calculate a curve-deform path for a curve
  *  - only called from displist.c -> do_makeDispListCurveTypes
  */
 void calc_curvepath(Object *ob, ListBase *nurbs)
@@ -486,17 +486,17 @@ void calc_curvepath(Object *ob, ListBase *nurbs)
        float *fp, *dist, *maxdist, xyz[3];
        float fac, d = 0, fac1, fac2;
        int a, tot, cycl = 0;
-       
+
        /* in a path vertices are with equal differences: path->len = number of verts */
        /* NOW WITH BEVELCURVE!!! */
-       
+
        if (ob == NULL || ob->type != OB_CURVE) {
                return;
        }
 
        if (ob->curve_cache->path) free_path(ob->curve_cache->path);
        ob->curve_cache->path = NULL;
-       
+
        /* weak! can only use first curve */
        bl = ob->curve_cache->bev.first;
        if (bl == NULL || !bl->nr) {
@@ -506,18 +506,18 @@ void calc_curvepath(Object *ob, ListBase *nurbs)
        nu = nurbs->first;
 
        ob->curve_cache->path = path = MEM_callocN(sizeof(Path), "calc_curvepath");
-       
+
        /* if POLY: last vertice != first vertice */
        cycl = (bl->poly != -1);
-       
+
        tot = cycl ? bl->nr : bl->nr - 1;
-       
+
        path->len = tot + 1;
        /* exception: vector handle paths and polygon paths should be subdivided at least a factor resolu */
        if (path->len < nu->resolu * SEGMENTSU(nu)) {
                path->len = nu->resolu * SEGMENTSU(nu);
        }
-       
+
        dist = (float *)MEM_mallocN(sizeof(float) * (tot + 1), "calcpathdist");
 
        /* all lengths in *dist */
@@ -530,13 +530,13 @@ void calc_curvepath(Object *ob, ListBase *nurbs)
                        sub_v3_v3v3(xyz, bevpfirst->vec, bevp->vec);
                else
                        sub_v3_v3v3(xyz, (bevp + 1)->vec, bevp->vec);
-               
+
                *fp = *(fp - 1) + len_v3(xyz);
                bevp++;
        }
-       
+
        path->totdist = *fp;
-       
+
        /* the path verts  in path->data */
        /* now also with TILT value */
        pp = path->data = (PathPoint *)MEM_callocN(sizeof(PathPoint) * path->len, "pathdata");
@@ -551,11 +551,11 @@ void calc_curvepath(Object *ob, ListBase *nurbs)
        maxdist = dist + tot;
        fac = 1.0f / ((float)path->len - 1.0f);
        fac = fac * path->totdist;
-       
+
        for (a = 0; a < path->len; a++) {
-               
+
                d = ((float)a) * fac;
-               
+
                /* we're looking for location (distance) 'd' in the array */
                if (LIKELY(tot > 0)) {
                        while ((fp < maxdist) && (d >= *fp)) {
@@ -581,10 +581,10 @@ void calc_curvepath(Object *ob, ListBase *nurbs)
                pp->weight = fac1 * bevp->weight + fac2 * bevpn->weight;
                interp_qt_qtqt(pp->quat, bevp->quat, bevpn->quat, fac2);
                normalize_qt(pp->quat);
-               
+
                pp++;
        }
-       
+
        MEM_freeN(dist);
 }
 
@@ -628,7 +628,7 @@ int where_on_path(Object *ob, float ctime, float vec[4], float dir[3], float qua
        }
        path = ob->curve_cache->path;
        pp = path->data;
-       
+
        /* test for cyclic */
        bl = ob->curve_cache->bev.first;
        if (!bl) return 0;
@@ -639,7 +639,7 @@ int where_on_path(Object *ob, float ctime, float vec[4], float dir[3], float qua
        BLI_assert(cycl || ctime >= 0.0f);
 
        ctime *= (path->len - 1);
-       
+
        s1 = (int)floor(ctime);
        fac = (float)(s1 + 1) - ctime;
 
index 96914c8..05cb10a 100644 (file)
@@ -104,7 +104,7 @@ bool id_type_can_have_animdata(const short id_type)
                case ID_GD:
                case ID_CF:
                        return true;
-               
+
                /* no AnimData */
                default:
                        return false;
@@ -120,13 +120,13 @@ bool id_can_have_animdata(const ID *id)
        return id_type_can_have_animdata(GS(id->name));
 }
 
-/* Get AnimData from the given ID-block. In order for this to work, we assume that 
+/* Get AnimData from the given ID-block. In order for this to work, we assume that
  * the AnimData pointer is stored immediately after the given ID-block in the struct,
  * as per IdAdtTemplate.
  */
 AnimData *BKE_animdata_from_id(ID *id)
 {
-       /* only some ID-blocks have this info for now, so we cast the 
+       /* only some ID-blocks have this info for now, so we cast the
         * types that do to be of type IdAdtTemplate, and extract the
         * AnimData that way
         */
@@ -138,33 +138,33 @@ AnimData *BKE_animdata_from_id(ID *id)
                return NULL;
 }
 
-/* Add AnimData to the given ID-block. In order for this to work, we assume that 
+/* Add AnimData to the given ID-block. In order for this to work, we assume that
  * the AnimData pointer is stored immediately after the given ID-block in the struct,
  * as per IdAdtTemplate. Also note that
  */
 AnimData *BKE_animdata_add_id(ID *id)
 {
-       /* Only some ID-blocks have this info for now, so we cast the 
+       /* Only some ID-blocks have this info for now, so we cast the
         * types that do to be of type IdAdtTemplate, and add the AnimData
         * to it using the template
         */
        if (id_can_have_animdata(id)) {
                IdAdtTemplate *iat = (IdAdtTemplate *)id;
-               
+
                /* check if there's already AnimData, in which case, don't add */
                if (iat->adt == NULL) {
                        AnimData *adt;
-                       
+
                        /* add animdata */
                        adt = iat->adt = MEM_callocN(sizeof(AnimData), "AnimData");
-                       
+
                        /* set default settings */
                        adt->act_influence = 1.0f;
                }
-               
+
                return iat->adt;
        }
-       else 
+       else
                return NULL;
 }
 
@@ -175,14 +175,14 @@ bool BKE_animdata_set_action(ReportList *reports, ID *id, bAction *act)
 {
        AnimData *adt = BKE_animdata_from_id(id);
        bool ok = false;
-       
+
        /* animdata validity check */
        if (adt == NULL) {
                BKE_report(reports, RPT_WARNING, "No AnimData to set action on");
                return ok;
        }
-       
-       /* active action is only editable when it is not a tweaking strip 
+
+       /* active action is only editable when it is not a tweaking strip
         * see rna_AnimData_action_editable() in rna_animation.c
         */
        if ((adt->flag & ADT_NLA_EDIT_ON) || (adt->actstrip) || (adt->tmpact)) {
@@ -190,11 +190,11 @@ bool BKE_animdata_set_action(ReportList *reports, ID *id, bAction *act)
                BKE_report(reports, RPT_ERROR, "Cannot change action, as it is still being edited in NLA");
                return ok;
        }
-       
+
        /* manage usercount for current action */
        if (adt->action)
                id_us_min((ID *)adt->action);
-       
+
        /* assume that AnimData's action can in fact be edited... */
        if (act) {
                /* action must have same type as owner */
@@ -217,7 +217,7 @@ bool BKE_animdata_set_action(ReportList *reports, ID *id, bAction *act)
                adt->action = NULL;
                ok = true;
        }
-       
+
        return ok;
 }
 
@@ -226,13 +226,13 @@ bool BKE_animdata_set_action(ReportList *reports, ID *id, bAction *act)
 /* Free AnimData used by the nominated ID-block, and clear ID-block's AnimData pointer */
 void BKE_animdata_free(ID *id, const bool do_id_user)
 {
-       /* Only some ID-blocks have this info for now, so we cast the 
+       /* Only some ID-blocks have this info for now, so we cast the
         * types that do to be of type IdAdtTemplate
         */
        if (id_can_have_animdata(id)) {
                IdAdtTemplate *iat = (IdAdtTemplate *)id;
                AnimData *adt = iat->adt;
-               
+
                /* check if there's any AnimData to start with */
                if (adt) {
                        if (do_id_user) {
@@ -243,16 +243,16 @@ void BKE_animdata_free(ID *id, const bool do_id_user)
                                if (adt->tmpact)
                                        id_us_min(&adt->tmpact->id);
                        }
-                               
+
                        /* free nla data */
                        BKE_nla_tracks_free(&adt->nla_tracks);
-                       
+
                        /* free drivers - stored as a list of F-Curves */
                        free_fcurves(&adt->drivers);
-                       
+
                        /* free overrides */
                        /* TODO... */
-                       
+
                        /* free animdata now */
                        MEM_freeN(adt);
                        iat->adt = NULL;
@@ -266,12 +266,12 @@ void BKE_animdata_free(ID *id, const bool do_id_user)
 AnimData *BKE_animdata_copy(Main *bmain, AnimData *adt, const bool do_action)
 {
        AnimData *dadt;
-       
+
        /* sanity check before duplicating struct */
        if (adt == NULL)
                return NULL;
        dadt = MEM_dupallocN(adt);
-       
+
        /* make a copy of action - at worst, user has to delete copies... */
        if (do_action) {
                BLI_assert(bmain != NULL);
@@ -285,13 +285,13 @@ AnimData *BKE_animdata_copy(Main *bmain, AnimData *adt, const bool do_action)
 
        /* duplicate NLA data */
        BKE_nla_tracks_copy(bmain, &dadt->nla_tracks, &adt->nla_tracks);
-       
+
        /* duplicate drivers (F-Curves) */
        copy_fcurves(&dadt->drivers, &adt->drivers);
-       
+
        /* don't copy overrides */
        BLI_listbase_clear(&dadt->overrides);
-       
+
        /* return */
        return dadt;
 }
@@ -338,17 +338,17 @@ void BKE_animdata_merge_copy(
 {
        AnimData *src = BKE_animdata_from_id(src_id);
        AnimData *dst = BKE_animdata_from_id(dst_id);
-       
+
        /* sanity checks */
        if (ELEM(NULL, dst, src))
                return;
-               
+
        // TODO: we must unset all "tweakmode" flags
        if ((src->flag & ADT_NLA_EDIT_ON) || (dst->flag & ADT_NLA_EDIT_ON)) {
                printf("ERROR: Merging AnimData blocks while editing NLA is dangerous as it may cause data corruption\n");
                return;
        }
-       
+
        /* handle actions... */
        if (action_mode == ADT_MERGECOPY_SRC_COPY) {
                /* make a copy of the actions */
@@ -359,35 +359,35 @@ void BKE_animdata_merge_copy(
                /* make a reference to it */
                dst->action = src->action;
                id_us_plus((ID *)dst->action);
-               
+
                dst->tmpact = src->tmpact;
                id_us_plus((ID *)dst->tmpact);
        }
-       
+
        /* duplicate NLA data */
        if (src->nla_tracks.first) {
                ListBase tracks = {NULL, NULL};
-               
+
                BKE_nla_tracks_copy(bmain, &tracks, &src->nla_tracks);
                BLI_movelisttolist(&dst->nla_tracks, &tracks);
        }
-       
+
        /* duplicate drivers (F-Curves) */
        if (src->drivers.first) {
                ListBase drivers = {NULL, NULL};
-               
+
                copy_fcurves(&drivers, &src->drivers);
-               
+
                /* Fix up all driver targets using the old target id
                 * - This assumes that the src ID is being merged into the dst ID
                 */
                if (fix_drivers) {
                        FCurve *fcu;
-                       
+
                        for (fcu = drivers.first; fcu; fcu = fcu->next) {
                                ChannelDriver *driver = fcu->driver;
                                DriverVar *dvar;
-                               
+
                                for (dvar = driver->variables.first; dvar; dvar = dvar->next) {
                                        DRIVER_TARGETS_USED_LOOPER(dvar)
                                        {
@@ -399,7 +399,7 @@ void BKE_animdata_merge_copy(
                                }
                        }
                }
-               
+
                BLI_movelisttolist(&dst->drivers, &drivers);
        }
 }
@@ -419,7 +419,7 @@ static bool animpath_matches_basepath(const char path[], const char basepath[])
        return (path && basepath) && STRPREFIX(path, basepath);
 }
 
-/* Move F-Curves in src action to dst action, setting up all the necessary groups 
+/* Move F-Curves in src action to dst action, setting up all the necessary groups
  * for this to happen, but only if the F-Curves being moved have the appropriate
  * "base path".
  *     - This is used when data moves from one datablock to another, causing the
@@ -428,7 +428,7 @@ static bool animpath_matches_basepath(const char path[], const char basepath[])
 void action_move_fcurves_by_basepath(bAction *srcAct, bAction *dstAct, const char basepath[])
 {
        FCurve *fcu, *fcn = NULL;
-       
+
        /* sanity checks */
        if (ELEM(NULL, srcAct, dstAct, basepath)) {
                if (G.debug & G_DEBUG) {
@@ -437,56 +437,56 @@ void action_move_fcurves_by_basepath(bAction *srcAct, bAction *dstAct, const cha
                }
                return;
        }
-               
-       /* clear 'temp' flags on all groups in src, as we'll be needing them later 
+
+       /* clear 'temp' flags on all groups in src, as we'll be needing them later
         * to identify groups that we've managed to empty out here
         */
        action_groups_clear_tempflags(srcAct);
-       
+
        /* iterate over all src F-Curves, moving over the ones that need to be moved */
        for (fcu = srcAct->curves.first; fcu; fcu = fcn) {
                /* store next pointer in case we move stuff */
                fcn = fcu->next;
-               
+
                /* should F-Curve be moved over?
                 *      - we only need the start of the path to match basepath
                 */
                if (animpath_matches_basepath(fcu->rna_path, basepath)) {
                        bActionGroup *agrp = NULL;
-                       
+
                        /* if grouped... */
                        if (fcu->grp) {
                                /* make sure there will be a matching group on the other side for the migrants */
                                agrp = BKE_action_group_find_name(dstAct, fcu->grp->name);
-                               
+
                                if (agrp == NULL) {
                                        /* add a new one with a similar name (usually will be the same though) */
                                        agrp = action_groups_add_new(dstAct, fcu->grp->name);
                                }
-                               
+
                                /* old groups should be tagged with 'temp' flags so they can be removed later
                                 * if we remove everything from them
                                 */
                                fcu->grp->flag |= AGRP_TEMP;
                        }
-                       
+
                        /* perform the migration now */
                        action_groups_remove_channel(srcAct, fcu);
-                       
+
                        if (agrp)
                                action_groups_add_channel(dstAct, agrp, fcu);
                        else
                                BLI_addtail(&dstAct->curves, fcu);
                }
        }
-       
+
        /* cleanup groups (if present) */
        if (srcAct->groups.first) {
                bActionGroup *agrp, *grp = NULL;
-               
+
                for (agrp = srcAct->groups.first; agrp; agrp = grp) {
                        grp = agrp->next;
-                       
+
                        /* only tagged groups need to be considered - clearing these tags or removing them */
                        if (agrp->flag & AGRP_TEMP) {
                                /* if group is empty and tagged, then we can remove as this operation
@@ -510,24 +510,24 @@ void BKE_animdata_separate_by_basepath(
 {
        AnimData *srcAdt = NULL, *dstAdt = NULL;
        LinkData *ld;
-       
+
        /* sanity checks */
        if (ELEM(NULL, srcID, dstID)) {
                if (G.debug & G_DEBUG)
                        printf("ERROR: no source or destination ID to separate AnimData with\n");
                return;
        }
-       
+
        /* get animdata from src, and create for destination (if needed) */
        srcAdt = BKE_animdata_from_id(srcID);
        dstAdt = BKE_animdata_add_id(dstID);
-       
+
        if (ELEM(NULL, srcAdt, dstAdt)) {
                if (G.debug & G_DEBUG)
                        printf("ERROR: no AnimData for this pair of ID's\n");
                return;
        }
-       
+
        /* active action */
        if (srcAdt->action) {
                /* set up an action if necessary, and name it in a similar way so that it can be easily found again */
@@ -537,38 +537,38 @@ void BKE_animdata_separate_by_basepath(
                else if (dstAdt->action == srcAdt->action) {
                        printf("Argh! Source and Destination share animation! ('%s' and '%s' both use '%s') Making new empty action\n",
                               srcID->name, dstID->name, srcAdt->action->id.name);
-                       
+
                        /* TODO: review this... */
                        id_us_min(&dstAdt->action->id);
                        dstAdt->action = BKE_action_add(bmain, dstAdt->action->id.name + 2);
                }
-                       
+
                /* loop over base paths, trying to fix for each one... */
                for (ld = basepaths->first; ld; ld = ld->next) {
                        const char *basepath = (const char *)ld->data;
                        action_move_fcurves_by_basepath(srcAdt->action, dstAdt->action, basepath);
                }
        }
-       
+
        /* drivers */
        if (srcAdt->drivers.first) {
                FCurve *fcu, *fcn = NULL;
-               
+
                /* check each driver against all the base paths to see if any should go */
                for (fcu = srcAdt->drivers.first; fcu; fcu = fcn) {
                        fcn = fcu->next;
-                       
+
                        /* try each basepath in turn, but stop on the first one which works */
                        for (ld = basepaths->first; ld; ld = ld->next) {
                                const char *basepath = (const char *)ld->data;
-                               
+
                                if (animpath_matches_basepath(fcu->rna_path, basepath)) {
                                        /* just need to change lists */
                                        BLI_remlink(&srcAdt->drivers, fcu);
                                        BLI_addtail(&dstAdt->drivers, fcu);
-                                       
+
                                        /* TODO: add depsgraph flushing calls? */
-                                       
+
                                        /* can stop now, as moved already */
                                        break;
                                }
@@ -654,15 +654,15 @@ static bool check_rna_path_is_valid(ID *owner_id, const char *path)
 {
        PointerRNA id_ptr, ptr;
        PropertyRNA *prop = NULL;
-       
+
        /* make initial RNA pointer to start resolving from */
        RNA_id_pointer_create(owner_id, &id_ptr);
-       
+
        /* try to resolve */
-       return RNA_path_resolve_property(&id_ptr, path, &ptr, &prop); 
+       return RNA_path_resolve_property(&id_ptr, path, &ptr, &prop);
 }
 
-/* Check if some given RNA Path needs fixing - free the given path and set a new one as appropriate 
+/* Check if some given RNA Path needs fixing - free the given path and set a new one as appropriate
  * NOTE: we assume that oldName and newName have [" "] padding around them
  */
 static char *rna_path_rename_fix(ID *owner_id, const char *prefix, const char *oldName, const char *newName, char *oldpath, bool verify_paths)
@@ -671,7 +671,7 @@ static char *rna_path_rename_fix(ID *owner_id, const char *prefix, const char *o
        char *oldNamePtr = strstr(oldpath, oldName);
        int prefixLen = strlen(prefix);
        int oldNameLen = strlen(oldName);
-       
+
        /* only start fixing the path if the prefix and oldName feature in the path,
         * and prefix occurs immediately before oldName
         */
@@ -686,20 +686,20 @@ static char *rna_path_rename_fix(ID *owner_id, const char *prefix, const char *o
                        if (prefixPtr > oldpath) {
                                BLI_dynstr_nappend(ds, oldpath, prefixPtr - oldpath);
                        }
-                       
+
                        /* add the prefix */
                        BLI_dynstr_append(ds, prefix);
-                       
+
                        /* add the new name (complete with brackets) */
                        BLI_dynstr_append(ds, newName);
-                       
+
                        /* add the postfix */
                        BLI_dynstr_append(ds, postfixPtr);
-                       
+
                        /* create new path, and cleanup old data */
                        newPath = BLI_dynstr_get_cstring(ds);
                        BLI_dynstr_free(ds);
-                       
+
                        /* check if the new path will solve our problems */
                        /* TODO: will need to check whether this step really helps in practice */
                        if (!verify_paths || check_rna_path_is_valid(owner_id, newPath)) {
@@ -713,31 +713,31 @@ static char *rna_path_rename_fix(ID *owner_id, const char *prefix, const char *o
                        }
                }
        }
-       
+
        /* the old path doesn't need to be changed */
        return oldpath;
 }
 
 /* Check RNA-Paths for a list of F-Curves */
-static void fcurves_path_rename_fix(ID *owner_id, const char *prefix, const char *oldName, const char *newName, 
+static void fcurves_path_rename_fix(ID *owner_id, const char *prefix, const char *oldName, const char *newName,
                                     const char *oldKey, const char *newKey, ListBase *curves, bool verify_paths)
 {
        FCurve *fcu;
-       
+
        /* we need to check every curve... */
        for (fcu = curves->first; fcu; fcu = fcu->next) {
                if (fcu->rna_path) {
                        const char *old_path = fcu->rna_path;
-                       
+
                        /* firstly, handle the F-Curve's own path */
                        fcu->rna_path = rna_path_rename_fix(owner_id, prefix, oldKey, newKey, fcu->rna_path, verify_paths);
-                       
+
                        /* if path changed and the F-Curve is grouped, check if its group also needs renaming
                         * (i.e. F-Curve is first of a bone's F-Curves; hence renaming this should also trigger rename)
                         */
                        if (fcu->rna_path != old_path) {
                                bActionGroup *agrp = fcu->grp;
-                               
+
                                if ((agrp) && STREQ(oldName, agrp->name)) {
                                        BLI_strncpy(agrp->name, newName, sizeof(agrp->name));
                                }
@@ -751,27 +751,27 @@ static void drivers_path_rename_fix(ID *owner_id, ID *ref_id, const char *prefix
                                     const char *oldKey, const char *newKey, ListBase *curves, bool verify_paths)
 {
        FCurve *fcu;
-       
+
        /* we need to check every curve - drivers are F-Curves too! */
        for (fcu = curves->first; fcu; fcu = fcu->next) {
                /* firstly, handle the F-Curve's own path */
                if (fcu->rna_path)
                        fcu->rna_path = rna_path_rename_fix(owner_id, prefix, oldKey, newKey, fcu->rna_path, verify_paths);
-               
+
                /* driver? */
                if (fcu->driver) {
                        ChannelDriver *driver = fcu->driver;
                        DriverVar *dvar;
-                       
+
                        /* driver variables */
                        for (dvar = driver->variables.first; dvar; dvar = dvar->next) {
                                /* only change the used targets, since the others will need fixing manually anyway */
-                               DRIVER_TARGETS_USED_LOOPER(dvar) 
+                               DRIVER_TARGETS_USED_LOOPER(dvar)
                                {
                                        /* rename RNA path */
                                        if (dtar->rna_path && dtar->id)
                                                dtar->rna_path = rna_path_rename_fix(dtar->id, prefix, oldKey, newKey, dtar->rna_path, verify_paths);
-                                       
+
                                        /* also fix the bone-name (if applicable) */
                                        if (strstr(prefix, "bones")) {
                                                if ( ((dtar->id) && (GS(dtar->id->name) == ID_OB) && (!ref_id || ((Object *)(dtar->id))->data == ref_id)) &&
@@ -788,18 +788,18 @@ static void drivers_path_rename_fix(ID *owner_id, ID *ref_id, const char *prefix
 }
 
 /* Fix all RNA-Paths for Actions linked to NLA Strips */
-static void nlastrips_path_rename_fix(ID *owner_id, const char *prefix, const char *oldName, const char *newName, 
+static void nlastrips_path_rename_fix(ID *owner_id, const char *prefix, const char *oldName, const char *newName,
                                       const char *oldKey, const char *newKey, ListBase *strips, bool verify_paths)
 {
        NlaStrip *strip;
-       
+
        /* recursively check strips, fixing only actions... */
        for (strip = strips->first; strip; strip = strip->next) {
                /* fix strip's action */
                if (strip->act)
                        fcurves_path_rename_fix(owner_id, prefix, oldName, newName, oldKey, newKey, &strip->act->curves, verify_paths);
                /* ignore own F-Curves, since those are local...  */
-               
+
                /* check sub-strips (if metas) */
                nlastrips_path_rename_fix(owner_id, prefix, oldName, newName, oldKey, newKey, &strip->strips, verify_paths);
        }
@@ -820,13 +820,13 @@ char *BKE_animsys_fix_rna_path_rename(ID *owner_id, char *old_path, const char *
 {
        char *oldN, *newN;
        char *result;
-       
+
        /* if no action, no need to proceed */
        if (ELEM(NULL, owner_id, old_path)) {
                if (G.debug & G_DEBUG) printf("%s: early abort\n", __func__);
                return old_path;
        }
-       
+
        /* Name sanitation logic - copied from BKE_animdata_fix_paths_rename() */
        if ((oldName != NULL) && (newName != NULL)) {
                /* pad the names with [" "] so that only exact matches are made */
@@ -844,21 +844,21 @@ char *BKE_animsys_fix_rna_path_rename(ID *owner_id, char *old_path, const char *
                oldN = BLI_sprintfN("[%d]", oldSubscript);
                newN = BLI_sprintfN("[%d]", newSubscript);
        }
-       
+
        /* fix given path */
        if (G.debug & G_DEBUG) printf("%s | %s  | oldpath = %p ", oldN, newN, old_path);
        result = rna_path_rename_fix(owner_id, prefix, oldN, newN, old_path, verify_paths);
        if (G.debug & G_DEBUG) printf("path rename result = %p\n", result);
-       
+
        /* free the temp names */
        MEM_freeN(oldN);
        MEM_freeN(newN);
-       
+
        /* return the resulting path - may be the same path again if nothing changed */
        return result;
 }
 
-/* Fix all RNA_Paths in the given Action, relative to the given ID block 
+/* Fix all RNA_Paths in the given Action, relative to the given ID block
  *
  * This is just an external wrapper for the F-Curve fixing function,
  * with input validity checks on top of the basic method.
@@ -870,11 +870,11 @@ void BKE_action_fix_paths_rename(ID *owner_id, bAction *act, const char *prefix,
                                  const char *newName, int oldSubscript, int newSubscript, bool verify_paths)
 {
        char *oldN, *newN;
-       
+
        /* if no action, no need to proceed */
        if (ELEM(NULL, owner_id, act))
                return;
-       
+
        /* Name sanitation logic - copied from BKE_animdata_fix_paths_rename() */
        if ((oldName != NULL) && (newName != NULL)) {
                /* pad the names with [" "] so that only exact matches are made */
@@ -892,10 +892,10 @@ void BKE_action_fix_paths_rename(ID *owner_id, bAction *act, const char *prefix,
                oldN = BLI_sprintfN("[%d]", oldSubscript);
                newN = BLI_sprintfN("[%d]", newSubscript);
        }
-       
+
        /* fix paths in action */
        fcurves_path_rename_fix(owner_id, prefix, oldName, newName, oldN, newN, &act->curves, verify_paths);
-       
+
        /* free the temp names */
        MEM_freeN(oldN);
        MEM_freeN(newN);
@@ -910,11 +910,11 @@ void BKE_animdata_fix_paths_rename(ID *owner_id, AnimData *adt, ID *ref_id, cons
 {
        NlaTrack *nlt;
        char *oldN, *newN;
-       
+
        /* if no AnimData, no need to proceed */
        if (ELEM(NULL, owner_id, adt))
                return;
-       
+
        /* Name sanitation logic - shared with BKE_action_fix_paths_rename() */
        if ((oldName != NULL) && (newName != NULL)) {
                /* pad the names with [" "] so that only exact matches are made */
@@ -932,16 +932,16 @@ void BKE_animdata_fix_paths_rename(ID *owner_id, AnimData *adt, ID *ref_id, cons
                oldN = BLI_sprintfN("[%d]", oldSubscript);
                newN = BLI_sprintfN("[%d]", newSubscript);
        }
-       
+
        /* Active action and temp action */
        if (adt->action)
                fcurves_path_rename_fix(owner_id, prefix, oldName, newName, oldN, newN, &adt->action->curves, verify_paths);
        if (adt->tmpact)
                fcurves_path_rename_fix(owner_id, prefix, oldName, newName, oldN, newN, &adt->tmpact->curves, verify_paths);
-               
+
        /* Drivers - Drivers are really F-Curves */
        drivers_path_rename_fix(owner_id, ref_id, prefix, oldName, newName, oldN, newN, &adt->drivers, verify_paths);
-       
+
        /* NLA Data - Animation Data for Strips */
        for (nlt = adt->nla_tracks.first; nlt; nlt = nlt->next)
                nlastrips_path_rename_fix(owner_id, prefix, oldName, newName, oldN, newN, &nlt->strips, verify_paths);
@@ -1031,7 +1031,7 @@ typedef struct AllFCurvesCbWrapper {
 static void fcurves_apply_cb(ID *id, ListBase *fcurves, ID_FCurve_Edit_Callback func, void *user_data)
 {
        FCurve *fcu;
-       
+
        for (fcu = fcurves->first; fcu; fcu = fcu->next) {
                func(id, fcu, user_data);
        }
@@ -1041,13 +1041,13 @@ static void fcurves_apply_cb(ID *id, ListBase *fcurves, ID_FCurve_Edit_Callback
 static void nlastrips_apply_all_curves_cb(ID *id, ListBase *strips, AllFCurvesCbWrapper *wrapper)
 {
        NlaStrip *strip;
-       
+
        for (strip = strips->first; strip; strip = strip->next) {
                /* fix strip's action */
                if (strip->act) {
                        fcurves_apply_cb(id, &strip->act->curves, wrapper->func, wrapper->user_data);
                }
-               
+
                /* check sub-strips (if metas) */
                nlastrips_apply_all_curves_cb(id, &strip->strips, wrapper);
        }
@@ -1058,18 +1058,18 @@ static void adt_apply_all_fcurves_cb(ID *id, AnimData *adt, void *wrapper_data)
 {
        AllFCurvesCbWrapper *wrapper = wrapper_data;
        NlaTrack *nlt;
-       
+
        if (adt->action) {
                fcurves_apply_cb(id, &adt->action->curves, wrapper->func, wrapper->user_data);
        }
-       
+
        if (adt->tmpact) {
                fcurves_apply_cb(id, &adt->tmpact->curves, wrapper->func, wrapper->user_data);
        }
-       
+
        /* free drivers - stored as a list of F-Curves */
        fcurves_apply_cb(id, &adt->drivers, wrapper->func, wrapper->user_data);
-       
+
        /* NLA Data - Animation Data for Strips */
        for (nlt = adt->nla_tracks.first; nlt; nlt = nlt->next) {
                nlastrips_apply_all_curves_cb(id, &nlt->strips, wrapper);
@@ -1081,7 +1081,7 @@ void BKE_fcurves_main_cb(Main *bmain, ID_FCurve_Edit_Callback func, void *user_d
 {
        /* Wrap F-Curve operation stuff to pass to the general AnimData-level func */
        AllFCurvesCbWrapper wrapper = {func, user_data};
-       
+
        /* Use the AnimData-based function so that we don't have to reimplement all that stuff */
        BKE_animdata_main_cb(bmain, adt_apply_all_fcurves_cb, &wrapper);
 }
@@ -1100,7 +1100,7 @@ void BKE_animdata_main_cb(Main *bmain, ID_AnimData_Edit_Callback func, void *use
                AnimData *adt = BKE_animdata_from_id(id); \
                if (adt) func(id, adt, user_data); \
        } (void)0
-       
+
        /* "embedded" nodetree cases (i.e. scene/material/texture->nodetree) */
 #define ANIMDATA_NODETREE_IDS_CB(first, NtId_Type) \
        for (id = first; id; id = id->next) { \
@@ -1112,40 +1112,40 @@ void BKE_animdata_main_cb(Main *bmain, ID_AnimData_Edit_Callback func, void *use
                } \
                if (adt) func(id, adt, user_data); \
        } (void)0
-       
+
        /* nodes */
        ANIMDATA_IDS_CB(bmain->nodetree.first);
-       
+
        /* textures */
        ANIMDATA_NODETREE_IDS_CB(bmain->tex.first, Tex);
-       
+
        /* lamps */
        ANIMDATA_NODETREE_IDS_CB(bmain->lamp.first, Lamp);
-       
+
        /* materials */
        ANIMDATA_NODETREE_IDS_CB(bmain->mat.first, Material);
-       
+
        /* cameras */
        ANIMDATA_IDS_CB(bmain->camera.first);
-       
+
        /* shapekeys */
        ANIMDATA_IDS_CB(bmain->key.first);
-       
+
        /* metaballs */
        ANIMDATA_IDS_CB(bmain->mball.first);
-       
+
        /* curves */
        ANIMDATA_IDS_CB(bmain->curve.first);
-       
+
        /* armatures */
        ANIMDATA_IDS_CB(bmain->armature.first);
-       
+
        /* lattices */
        ANIMDATA_IDS_CB(bmain->latt.first);
-       
+
        /* meshes */
        ANIMDATA_IDS_CB(bmain->mesh.first);
-       
+
        /* particles */
        ANIMDATA_IDS_CB(bmain->particle.first);
 
@@ -1160,7 +1160,7 @@ void BKE_animdata_main_cb(Main *bmain, ID_AnimData_Edit_Callback func, void *use
 
        /* masks */
        ANIMDATA_IDS_CB(bmain->mask.first);
-       
+
        /* worlds */
        ANIMDATA_NODETREE_IDS_CB(bmain->world.first, World);
 
@@ -1169,7 +1169,7 @@ void BKE_animdata_main_cb(Main *bmain, ID_AnimData_Edit_Callback func, void *use
 
        /* line styles */
        ANIMDATA_IDS_CB(bmain->linestyle.first);
-       
+
        /* grease pencil */
        ANIMDATA_IDS_CB(bmain->gpencil.first);
 
@@ -1186,9 +1186,9 @@ void BKE_animdata_fix_paths_rename_all(ID *ref_id, const char *prefix, const cha
 {
        Main *bmain = G.main;  /* XXX UGLY! */
        ID *id;
-       
-       /* macro for less typing 
-        *      - whether animdata exists is checked for by the main renaming callback, though taking 
+
+       /* macro for less typing
+        *      - whether animdata exists is checked for by the main renaming callback, though taking
         *        this outside of the function may make things slightly faster?
         */
 #define RENAMEFIX_ANIM_IDS(first) \
@@ -1196,7 +1196,7 @@ void BKE_animdata_fix_paths_rename_all(ID *ref_id, const char *prefix, const cha
                AnimData *adt = BKE_animdata_from_id(id); \
                BKE_animdata_fix_paths_rename(id, adt, ref_id, prefix, oldName, newName, 0, 0, 1); \
        } (void)0
-       
+
        /* another version of this macro for nodetrees */
 #define RENAMEFIX_ANIM_NODETREE_IDS(first, NtId_Type) \
        for (id = first; id; id = id->next) { \
@@ -1208,40 +1208,40 @@ void BKE_animdata_fix_paths_rename_all(ID *ref_id, const char *prefix, const cha
                } \
                BKE_animdata_fix_paths_rename(id, adt, ref_id, prefix, oldName, newName, 0, 0, 1); \
        } (void)0
-       
+
        /* nodes */
        RENAMEFIX_ANIM_IDS(bmain->nodetree.first);
-       
+
        /* textures */
        RENAMEFIX_ANIM_NODETREE_IDS(bmain->tex.first, Tex);
-       
+
        /* lamps */
        RENAMEFIX_ANIM_NODETREE_IDS(bmain->lamp.first, Lamp);
-       
+
        /* materials */
        RENAMEFIX_ANIM_NODETREE_IDS(bmain->mat.first, Material);
-       
+
        /* cameras */
        RENAMEFIX_ANIM_IDS(bmain->camera.first);
-       
+
        /* shapekeys */
        RENAMEFIX_ANIM_IDS(bmain->key.first);
-       
+
        /* metaballs */
        RENAMEFIX_ANIM_IDS(bmain->mball.first);
-       
+
        /* curves */
        RENAMEFIX_ANIM_IDS(bmain->curve.first);
-       
+
        /* armatures */
        RENAMEFIX_ANIM_IDS(bmain->armature.first);
-       
+
        /* lattices */
        RENAMEFIX_ANIM_IDS(bmain->latt.first);
-       
+
        /* meshes */
        RENAMEFIX_ANIM_IDS(bmain->mesh.first);
-       
+
        /* particles */
        RENAMEFIX_ANIM_IDS(bmain->particle.first);
 
@@ -1256,24 +1256,24 @@ void BKE_animdata_fix_paths_rename_all(ID *ref_id, const char *prefix, const cha
 
        /* masks */
        RENAMEFIX_ANIM_IDS(bmain->mask.first);
-       
+
        /* worlds */
        RENAMEFIX_ANIM_NODETREE_IDS(bmain->world.first, World);
-       
+
        /* linestyles */
        RENAMEFIX_ANIM_IDS(bmain->linestyle.first);
-       
+
        /* grease pencil */
        RENAMEFIX_ANIM_IDS(bmain->gpencil.first);
 
        /* cache files */
        RENAMEFIX_ANIM_IDS(bmain->cachefiles.first);
-       
+
        /* scenes */
        RENAMEFIX_ANIM_NODETREE_IDS(bmain->scene.first, Scene);
 }
 
-/* *********************************** */ 
+/* *********************************** */
 /* KeyingSet API */
 
 /* Finding Tools --------------------------- */
@@ -1283,50 +1283,50 @@ void BKE_animdata_fix_paths_rename_all(ID *ref_id, const char *prefix, const cha
 KS_Path *BKE_keyingset_find_path(KeyingSet *ks, ID *id, const char group_name[], const char rna_path[], int array_index, int UNUSED(group_mode))
 {
        KS_Path *ksp;
-       
+
        /* sanity checks */
        if (ELEM(NULL, ks, rna_path, id))
                return NULL;
-       
-       /* loop over paths in the current KeyingSet, finding the first one where all settings match 
+
+       /* loop over paths in the current KeyingSet, finding the first one where all settings match
         * (i.e. the first one where none of the checks fail and equal 0)
         */
        for (ksp = ks->paths.first; ksp; ksp = ksp->next) {
                short eq_id = 1, eq_path = 1, eq_index = 1, eq_group = 1;
-               
+
                /* id */
                if (id != ksp->id)
                        eq_id = 0;
-               
+
                /* path */
                if ((ksp->rna_path == NULL) || !STREQ(rna_path, ksp->rna_path))
                        eq_path = 0;
-                       
+
                /* index - need to compare whole-array setting too... */
                if (ksp->array_index != array_index)
                        eq_index = 0;
-                       
+
                /* group */
                if (group_name) {
                        /* FIXME: these checks need to be coded... for now, it's not too important though */
                }
-                       
+
                /* if all aspects are ok, return */
                if (eq_id && eq_path && eq_index && eq_group)
                        return ksp;
        }
-       
+
        /* none found */
        return NULL;
 }
+
 /* Defining Tools --------------------------- */
 
 /* Used to create a new 'custom' KeyingSet for the user, that will be automatically added to the stack */
 KeyingSet *BKE_keyingset_add(ListBase *list, const char idname[], const char name[], short flag, short keyingflag)
 {
        KeyingSet *ks;
-       
+
        /* allocate new KeyingSet */
        ks = MEM_callocN(sizeof(KeyingSet), "KeyingSet");
 
@@ -1336,16 +1336,16 @@ KeyingSet *BKE_keyingset_add(ListBase *list, const char idname[], const char nam
        ks->flag = flag;
        ks->keyingflag = keyingflag;
        ks->keyingoverride = keyingflag; /* NOTE: assume that if one is set one way, the other should be too, so that it'll work */
-       
+
        /* add KeyingSet to list */
        BLI_addtail(list, ks);
-       
+
        /* Make sure KeyingSet has a unique idname */
        BLI_uniquename(list, ks, DATA_("KeyingSet"), '.', offsetof(KeyingSet, idname), sizeof(ks->idname));
-       
+
        /* Make sure KeyingSet has a unique label (this helps with identification) */
        BLI_uniquename(list, ks, DATA_("Keying Set"), '.', offsetof(KeyingSet, name), sizeof(ks->name));
-       
+
        /* return new KeyingSet for further editing */
        return ks;
 }
@@ -1356,55 +1356,55 @@ KeyingSet *BKE_keyingset_add(ListBase *list, const char idname[], const char nam
 KS_Path *BKE_keyingset_add_path(KeyingSet *ks, ID *id, const char group_name[], const char rna_path[], int array_index, short flag, short groupmode)
 {
        KS_Path *ksp;
-       
+
        /* sanity checks */
        if (ELEM(NULL, ks, rna_path)) {
                printf("ERROR: no Keying Set and/or RNA Path to add path with\n");
                return NULL;
        }
-       
+
        /* ID is required for all types of KeyingSets */
        if (id == NULL) {
                printf("ERROR: No ID provided for Keying Set Path\n");
                return NULL;
        }
-       
+
        /* don't add if there is already a matching KS_Path in the KeyingSet */
        if (BKE_keyingset_find_path(ks, id, group_name, rna_path, array_index, groupmode)) {
                if (G.debug & G_DEBUG)
                        printf("ERROR: destination already exists in Keying Set\n");
                return NULL;
        }
-       
+
        /* allocate a new KeyingSet Path */
        ksp = MEM_callocN(sizeof(KS_Path), "KeyingSet Path");
-       
+
        /* just store absolute info */
        ksp->id = id;
        if (group_name)
                BLI_strncpy(ksp->group, group_name, sizeof(ksp->group));
        else
                ksp->group[0] = '\0';
-       
+
        /* store additional info for relative paths (just in case user makes the set relative) */
        if (id)
                ksp->idtype = GS(id->name);
-       
+
        /* just copy path info */
        /* TODO: should array index be checked too? */
        ksp->rna_path = BLI_strdup(rna_path);
        ksp->array_index = array_index;
-       
+
        /* store flags */
        ksp->flag = flag;
        ksp->groupmode = groupmode;
-       
+
        /* add KeyingSet path to KeyingSet */
        BLI_addtail(&ks->paths, ksp);
-       
+
        /* return this path */
        return ksp;
-}      
+}
 
 /* Free the given Keying Set path */
 void BKE_keyingset_free_path(KeyingSet *ks, KS_Path *ksp)
@@ -1426,12 +1426,12 @@ void BKE_keyingsets_copy(ListBase *newlist, const ListBase *list)
 {
        KeyingSet *ksn;
        KS_Path *kspn;
-       
+
        BLI_duplicatelist(newlist, list);
 
        for (ksn = newlist->first; ksn; ksn = ksn->next) {
                BLI_duplicatelist(&ksn->paths, &ksn->paths);
-               
+
                for (kspn = ksn->paths.first; kspn; kspn = kspn->next)
                        kspn->rna_path = MEM_dupallocN(kspn->rna_path);
        }
@@ -1443,11 +1443,11 @@ void BKE_keyingsets_copy(ListBase *newlist, const ListBase *list)
 void BKE_keyingset_free(KeyingSet *ks)
 {
        KS_Path *ksp, *kspn;
-       
+
        /* sanity check */
        if (ks == NULL)
                return;
-       
+
        /* free each path as we go to avoid looping twice */
        for (ksp = ks->paths.first; ksp; ksp = kspn) {
                kspn = ksp->next;
@@ -1459,12 +1459,12 @@ void BKE_keyingset_free(KeyingSet *ks)
 void BKE_keyingsets_free(ListBase *list)
 {
        KeyingSet *ks, *ksn;
-       
+
        /* sanity check */
        if (list == NULL)
                return;
-       
-       /* loop over KeyingSets freeing them 
+
+       /* loop over KeyingSets freeing them
         *  - BKE_keyingset_free() doesn't free the set itself, but it frees its sub-data
         */
        for (ks = list->first; ks; ks = ksn) {
@@ -1477,7 +1477,7 @@ void BKE_keyingsets_free(ListBase *list)
 /* ***************************************** */
 /* Evaluation Data-Setting Backend */
 
-/* Retrieve string to act as RNA-path, adjusted using mapping-table if provided 
+/* Retrieve string to act as RNA-path, adjusted using mapping-table if provided
  * It returns whether the string needs to be freed (i.e. if it was a temp remapped one)
  * // FIXME: maybe it would be faster if we didn't have to alloc/free strings like this all the time, but for now it's safer
  *
@@ -1564,7 +1564,7 @@ static bool animsys_write_rna_setting(PathResolvedRNA *anim_rna, const float val
        PropertyRNA *prop = anim_rna->prop;
        PointerRNA *ptr = &anim_rna->ptr;
        int array_index = anim_rna->prop_index;
-       
+
        /* caller must ensure this is animatable */
        BLI_assert(RNA_property_animateable(ptr, prop) || ptr->id.data == NULL);
 
@@ -1697,13 +1697,13 @@ bool BKE_animsys_execute_fcurve(PointerRNA *ptr, AnimMapper *remap, FCurve *fcu,
        return ok;
 }
 
-/* Evaluate all the F-Curves in the given list 
+/* Evaluate all the F-Curves in the given list
  * This performs a set of standard checks. If extra checks are required, separate code should be used
  */
 static void animsys_evaluate_fcurves(PointerRNA *ptr, ListBase *list, AnimMapper *remap, float ctime)
 {
        FCurve *fcu;
-       
+
        /* calculate then execute each curve */
        for (fcu = list->first; fcu; fcu = fcu->next) {
                /* check if this F-Curve doesn't belong to a muted group */
@@ -1727,14 +1727,14 @@ static void animsys_evaluate_fcurves(PointerRNA *ptr, ListBase *list, AnimMapper
 static void animsys_evaluate_drivers(PointerRNA *ptr, AnimData *adt, float ctime)
 {
        FCurve *fcu;
-       
+
        /* drivers are stored as F-Curves, but we cannot use the standard code, as we need to check if
         * the depsgraph requested that this driver be evaluated...
         */
        for (fcu = adt->drivers.first; fcu; fcu = fcu->next) {
                ChannelDriver *driver = fcu->driver;
                bool ok = false;
-               
+
                /* check if this driver's curve should be skipped */
                if ((fcu->flag & (FCURVE_MUTED | FCURVE_DISABLED)) == 0) {
                        /* check if driver itself is tagged for recalculation */
@@ -1749,13 +1749,13 @@ static void animsys_evaluate_drivers(PointerRNA *ptr, AnimData *adt, float ctime
                                        const float curval = calculate_fcurve(&anim_rna, fcu, ctime);
                                        ok = animsys_write_rna_setting(&anim_rna, curval);
                                }
-                               
+
                                /* clear recalc flag */
                                driver->flag &= ~DRIVER_FLAG_RECALC;
-                               
+
                                /* set error-flag if evaluation failed */
                                if (ok == 0)
-                                       driver->flag |= DRIVER_FLAG_INVALID; 
+                                       driver->flag |= DRIVER_FLAG_INVALID;
                        }
                }
        }
@@ -1771,13 +1771,13 @@ static void animsys_evaluate_drivers(PointerRNA *ptr, AnimData *adt, float ctime
 static void action_idcode_patch_check(ID *id, bAction *act)
 {
        int idcode = 0;
-       
+
        /* just in case */
        if (ELEM(NULL, id, act))
                return;
        else
                idcode = GS(id->name);
-       
+
        /* the actual checks... hopefully not too much of a performance hit in the long run... */
        if (act->idroot == 0) {
                /* use the current root if not set already (i.e. newly created actions and actions from 2.50-2.57 builds)
@@ -1801,17 +1801,17 @@ static void action_idcode_patch_check(ID *id, bAction *act)
 void animsys_evaluate_action_group(PointerRNA *ptr, bAction *act, bActionGroup *agrp, AnimMapper *remap, float ctime)
 {
        FCurve *fcu;
-       
+
        /* check if mapper is appropriate for use here (we set to NULL if it's inappropriate) */
        if (ELEM(NULL, act, agrp)) return;
        if ((remap) && (remap->target != act)) remap = NULL;
-       
+
        action_idcode_patch_check(ptr->id.data, act);
-       
+
        /* if group is muted, don't evaluated any of the F-Curve */
        if (agrp->flag & AGRP_MUTED)
                return;
-       
+
        /* calculate then execute each curve */
        for (fcu = agrp->channels.first; (fcu) && (fcu->grp == agrp); fcu = fcu->next) {
                /* check if this curve should be skipped */
@@ -1831,9 +1831,9 @@ void animsys_evaluate_action(PointerRNA *ptr, bAction *act, AnimMapper *remap, f
        /* check if mapper is appropriate for use here (we set to NULL if it's inappropriate) */
        if (act == NULL) return;
        if ((remap) && (remap->target != act)) remap = NULL;
-       
+
        action_idcode_patch_check(ptr->id.data, act);
-       
+
        /* calculate then execute each curve */
        animsys_evaluate_fcurves(ptr, &act->curves, remap, ctime);
 }
@@ -1847,7 +1847,7 @@ static float nlastrip_get_influence(NlaStrip *strip, float cframe)
        /* sanity checks - normalize the blendin/out values? */
        strip->blendin = fabsf(strip->blendin);
        strip->blendout = fabsf(strip->blendout);
-       
+
        /* result depends on where frame is in respect to blendin/out values */
        if (IS_EQF(strip->blendin, 0.0f) == false && (cframe <= (strip->start + strip->blendin))) {
                /* there is some blend-in */
@@ -1869,14 +1869,14 @@ static void nlastrip_evaluate_controls(NlaStrip *strip, float ctime)
        /* now strip's evaluate F-Curves for these settings (if applicable) */
        if (strip->fcurves.first) {
                PointerRNA strip_ptr;
-               
+
                /* create RNA-pointer needed to set values */
                RNA_pointer_create(NULL, &RNA_NlaStrip, strip, &strip_ptr);
-               
+
                /* execute these settings as per normal */
                animsys_evaluate_fcurves(&strip_ptr, &strip->fcurves, NULL, ctime);
        }
-       
+
        /* analytically generate values for influence and time (if applicable)
         *  - we do this after the F-Curves have been evaluated to override the effects of those
         *    in case the override has been turned off.
@@ -1901,7 +1901,7 @@ NlaEvalStrip *nlastrips_ctime_get_strip(ListBase *list, ListBase *strips, short
        NlaStrip *strip, *estrip = NULL;
        NlaEvalStrip *nes;
        short side = 0;
-       
+
        /* loop over strips, checking if they fall within the range */
        for (strip = strips->first; strip; strip = strip->next) {
                /* check if current time occurs within this strip  */
@@ -1911,53 +1911,53 @@ NlaEvalStrip *nlastrips_ctime_get_strip(ListBase *list, ListBase *strips, short
                        side = NES_TIME_WITHIN;
                        break;
                }
-               
+
                /* if time occurred before current strip... */
                if (ctime < strip->start) {
                        if (strip == strips->first) {
                                /* before first strip - only try to use it if it extends backwards in time too */
                                if (strip->extendmode == NLASTRIP_EXTEND_HOLD)
                                        estrip = strip;
-                                       
+
                                /* side is 'before' regardless of whether there's a useful strip */
                                side = NES_TIME_BEFORE;
                        }
                        else {
-                               /* before next strip - previous strip has ended, but next hasn't begun, 
+                               /* before next strip - previous strip has ended, but next hasn't begun,
                                 * so blending mode depends on whether strip is being held or not...
                                 *  - only occurs when no transition strip added, otherwise the transition would have
                                 *    been picked up above...
                                 */
                                strip = strip->prev;
-                               
+
                                if (strip->extendmode != NLASTRIP_EXTEND_NOTHING)
                                        estrip = strip;
                                side = NES_TIME_AFTER;
                        }
                        break;
                }
-               
+
                /* if time occurred after current strip... */
                if (ctime > strip->end) {
                        /* only if this is the last strip should we do anything, and only if that is being held */
                        if (strip == strips->last) {
                                if (strip->extendmode != NLASTRIP_EXTEND_NOTHING)
                                        estrip = strip;
-                                       
+
                                side = NES_TIME_AFTER;
                                break;
                        }
-                       
+
                        /* otherwise, skip... as the 'before' case will catch it more elegantly! */
                }
        }
-       
+
        /* check if a valid strip was found
         *      - must not be muted (i.e. will have contribution
         */
-       if ((estrip == NULL) || (estrip->flag & NLASTRIP_FLAG_MUTED)) 
+       if ((estrip == NULL) || (estrip->flag & NLASTRIP_FLAG_MUTED))
                return NULL;
-               
+
        /* if ctime was not within the boundaries of the strip, clamp! */
        switch (side) {
                case NES_TIME_BEFORE: /* extend first frame only */
@@ -1967,8 +1967,8 @@ NlaEvalStrip *nlastrips_ctime_get_strip(ListBase *list, ListBase *strips, short
                        ctime = estrip->end;
                        break;
        }
-       
-       /* evaluate strip's evaluation controls  
+
+       /* evaluate strip's evaluation controls
         *  - skip if no influence (i.e. same effect as muting the strip)
         *      - negative influence is not supported yet... how would that be defined?
         */
@@ -1976,12 +1976,12 @@ NlaEvalStrip *nlastrips_ctime_get_strip(ListBase *list, ListBase *strips, short
        nlastrip_evaluate_controls(estrip, ctime);
        if (estrip->influence <= 0.0f)
                return NULL;
-               
+
        /* check if strip has valid data to evaluate,
         * and/or perform any additional type-specific actions
         */
        switch (estrip->type) {
-               case NLASTRIP_TYPE_CLIP: 
+               case NLASTRIP_TYPE_CLIP:
                        /* clip must have some action to evaluate */
                        if (estrip->act == NULL)
                                return NULL;
@@ -1990,51 +1990,51 @@ NlaEvalStrip *nlastrips_ctime_get_strip(ListBase *list, ListBase *strips, short
                        /* there must be strips to transition from and to (i.e. prev and next required) */
                        if (ELEM(NULL, estrip->prev, estrip->next))
                                return NULL;
-                               
+
                        /* evaluate controls for the relevant extents of the bordering strips... */
                        nlastrip_evaluate_controls(estrip->prev, estrip->start);
                        nlastrip_evaluate_controls(estrip->next, estrip->end);
                        break;
        }
-       
+
        /* add to list of strips we need to evaluate */
        nes = MEM_callocN(sizeof(NlaEvalStrip), "NlaEvalStrip");
-       
+
        nes->strip = estrip;
        nes->strip_mode = side;
        nes->track_index = index;
        nes->strip_time = estrip->strip_time;
-       
+
        if (list)
                BLI_addtail(list, nes);
-       
+
        return nes;
 }
 
 /* ---------------------- */
 
-/* find an NlaEvalChannel that matches the given criteria 
+/* find an NlaEvalChannel that matches the given criteria
  *     - ptr and prop are the RNA data to find a match for
  */
 static NlaEvalChannel *nlaevalchan_find_match(ListBase *channels, PointerRNA *ptr, PropertyRNA *prop, int array_index)
 {
        NlaEvalChannel *nec;
-       
+
        /* sanity check */
        if (channels == NULL)
                return NULL;
-       
+
        /* loop through existing channels, checking for a channel which affects the same property */
        for (nec = channels->first; nec; nec = nec->next) {
                /* - comparing the PointerRNA's is done by comparing the pointers
                 *   to the actual struct the property resides in, since that all the
-                *   other data stored in PointerRNA cannot allow us to definitively 
-                *      identify the data 
+                *   other data stored in PointerRNA cannot allow us to definitively
+                *      identify the data
                 */
                if ((nec->ptr.data == ptr->data) && (nec->prop == prop) && (nec->index == array_index))
                        return nec;
        }
-       
+
        /* not found */
        return NULL;
 }
@@ -2045,9 +2045,9 @@ static void nlaevalchan_value_init(NlaEvalChannel *nec)
        PointerRNA *ptr = &nec->ptr;
        PropertyRNA *prop = nec->prop;
        int index = nec->index;
-       
-       /* NOTE: while this doesn't work for all RNA properties as default values aren't in fact 
-        * set properly for most of them, at least the common ones (which also happen to get used 
+
+       /* NOTE: while this doesn't work for all RNA properties as default values aren't in fact
+        * set properly for most of them, at least the common ones (which also happen to get used
         * in NLA strips a lot, e.g. scale) are set correctly.
         */
        switch (RNA_property_type(prop)) {
@@ -2086,15 +2086,15 @@ static NlaEvalChannel *nlaevalchan_verify(PointerRNA *ptr, ListBase *channels, N
        PointerRNA new_ptr;
        char *path = NULL;
        /* short free_path = 0; */
-       
+
        /* sanity checks */
        if (channels == NULL)
                return NULL;
-       
+
        /* get RNA pointer+property info from F-Curve for more convenient handling */
        /* get path, remapped as appropriate to work in its new environment */
        /* free_path = */ /* UNUSED */ animsys_remap_path(strip->remap, fcu->rna_path, &path);
-       
+
        /* a valid property must be available, and it must be animatable */
        if (RNA_path_resolve_property(ptr, path, &new_ptr, &prop) == false) {
                if (G.debug & G_DEBUG) printf("NLA Strip Eval: Cannot resolve path\n");
@@ -2105,27 +2105,27 @@ static NlaEvalChannel *nlaevalchan_verify(PointerRNA *ptr, ListBase *channels, N
                if (G.debug & G_DEBUG) printf("NLA Strip Eval: Property not animatable\n");
                return NULL;
        }
-       
+
        /* try to find a match */
        nec = nlaevalchan_find_match(channels, &new_ptr, prop, fcu->array_index);
-       
+
        /* allocate a new struct for this if none found */
        if (nec == NULL) {
                nec = MEM_callocN(sizeof(NlaEvalChannel), "NlaEvalChannel");
                BLI_addtail(channels, nec);
-               
+
                /* store property links for writing to the property later */
                nec->ptr = new_ptr;
                nec->prop = prop;
                nec->index = fcu->array_index;
-               
+
                /* initialise value using default value of property [#35856] */
                nlaevalchan_value_init(nec);
                *newChan = true;
        }
        else
                *newChan = false;
-       
+
        /* we can now return */
        return nec;
 }
@@ -2136,7 +2136,7 @@ static void nlaevalchan_accumulate(NlaEvalChannel *nec, NlaEvalStrip *nes, float
        NlaStrip *strip = nes->strip;
        short blendmode = strip->blendmode;
        float inf = strip->influence;
-       
+
        /* for replace blend mode, and if this is the first strip,
         * just replace the value regardless of the influence */
        if (newChan && blendmode == NLASTRIP_MODE_REPLACE) {
@@ -2147,36 +2147,36 @@ static void nlaevalchan_accumulate(NlaEvalChannel *nec, NlaEvalStrip *nes, float
        /* if this is being performed as part of transition evaluation, incorporate
         * an additional weighting factor for the influence
         */
-       if (nes->strip_mode == NES_TIME_TRANSITION_END) 
+       if (nes->strip_mode == NES_TIME_TRANSITION_END)
                inf *= nes->strip_time;
-       
+
        /* optimisation: no need to try applying if there is no influence */
        if (IS_EQF(inf, 0.0f)) return;
-       
+
        /* perform blending */
        switch (blendmode) {
                case NLASTRIP_MODE_ADD:
                        /* simply add the scaled value on to the stack */
                        nec->value += (value * inf);
                        break;
-                       
+
                case NLASTRIP_MODE_SUBTRACT:
                        /* simply subtract the scaled value from the stack */
                        nec->value -= (value * inf);
                        break;
-                       
+
                case NLASTRIP_MODE_MULTIPLY:
                        /* multiply the scaled value with the stack */
-                       /* Formula Used: 
-                        *     result = fac * (a * b) + (1 - fac) * a 
+                       /* Formula Used:
+                        *     result = fac * (a * b) + (1 - fac) * a
                         */
                        nec->value = inf * (nec->value * value)  +   (1 - inf) * nec->value;
                        break;
-               
+
                case NLASTRIP_MODE_REPLACE:
                default: /* TODO: do we really want to blend by default? it seems more uses might prefer add... */
-                       /* do linear interpolation 
-                        *      - the influence of the accumulated data (elsewhere, that is called dstweight) 
+                       /* do linear interpolation
+                        *      - the influence of the accumulated data (elsewhere, that is called dstweight)
                         *        is 1 - influence, since the strip's influence is srcweight
                         */
                        nec->value = nec->value * (1.0f - inf)   +   (value * inf);
@@ -2188,19 +2188,19 @@ static void nlaevalchan_accumulate(NlaEvalChannel *nec, NlaEvalStrip *nes, float
 static void nlaevalchan_buffers_accumulate(ListBase *channels, ListBase *tmp_buffer, NlaEvalStrip *nes)
 {
        NlaEvalChannel *nec, *necn, *necd;
-       
+
        /* optimize - abort if no channels */
        if (BLI_listbase_is_empty(tmp_buffer))
                return;
-       
+
        /* accumulate results in tmp_channels buffer to the accumulation buffer */
        for (nec = tmp_buffer->first; nec; nec = necn) {
                /* get pointer to next channel in case we remove the current channel from the temp-buffer */
                necn = nec->next;
-               
+
                /* try to find an existing matching channel for this setting in the accumulation buffer */
                necd = nlaevalchan_find_match(channels, &nec->ptr, nec->prop, nec->index);
-               
+
                /* if there was a matching channel already in the buffer, accumulate to it,
                 * otherwise, add the current channel to the buffer for efficiency
                 */
@@ -2211,7 +2211,7 @@ static void nlaevalchan_buffers_accumulate(ListBase *channels, ListBase *tmp_buf
                        BLI_addtail(channels, nec);
                }
        }
-       
+
        /* free temp-channels that haven't been assimilated into the buffer */
        BLI_freelistN(tmp_buffer);
 }
@@ -2223,7 +2223,7 @@ static void nlaevalchan_buffers_accumulate(ListBase *channels, ListBase *tmp_buf
 static void nlaeval_fmodifiers_join_stacks(ListBase *result, ListBase *list1, ListBase *list2)
 {
        FModifier *fcm1, *fcm2;
-       
+
        /* if list1 is invalid...  */
        if (ELEM(NULL, list1, list1->first)) {
                if (list2 && list2->first) {
@@ -2237,15 +2237,15 @@ static void nlaeval_fmodifiers_join_stacks(ListBase *result, ListBase *list1, Li
                result->last = list1->last;
        }
        else {
-               /* list1 should be added first, and list2 second, with the endpoints of these being the endpoints for result 
+               /* list1 should be added first, and list2 second, with the endpoints of these being the endpoints for result
                 *  - the original lists must be left unchanged though, as we need that fact for restoring
                 */
                result->first = list1->first;
                result->last = list2->last;
-               
+
                fcm1 = list1->last;
                fcm2 = list2->first;
-               
+
                fcm1->next = fcm2;
                fcm2->prev = fcm1;
        }
@@ -2255,17 +2255,17 @@ static void nlaeval_fmodifiers_join_stacks(ListBase *result, ListBase *list1, Li
 static void nlaeval_fmodifiers_split_stacks(ListBase *list1, ListBase *list2)
 {
        FModifier *fcm1, *fcm2;
-       
+
        /* if list1/2 is invalid... just skip */
        if (ELEM(NULL, list1, list2))
                return;
        if (ELEM(NULL, list1->first, list2->first))
                return;
-               
+
        /* get endpoints */
        fcm1 = list1->last;
        fcm2 = list2->first;
-       
+
        /* clear their links */
        fcm1->next = NULL;
        fcm2->prev = NULL;
@@ -2281,48 +2281,48 @@ static void nlastrip_evaluate_actionclip(PointerRNA *ptr, ListBase *channels, Li
        NlaStrip *strip = nes->strip;
        FCurve *fcu;
        float evaltime;
-       
+
        /* sanity checks for action */
        if (strip == NULL)
                return;
-               
+
        if (strip->act == NULL) {
                printf("NLA-Strip Eval Error: Strip '%s' has no Action\n", strip->name);
                return;
        }
-       
+
        action_idcode_patch_check(ptr->id.data, strip->act);
-       
+
        /* join this strip's modifiers to the parent's modifiers (own modifiers first) */
        nlaeval_fmodifiers_join_stacks(&tmp_modifiers, &strip->modifiers, modifiers);
-       
+
        /* evaluate strip's modifiers which modify time to evaluate the base curves at */
        storage = evaluate_fmodifiers_storage_new(&tmp_modifiers);
        evaltime = evaluate_time_fmodifiers(storage, &tmp_modifiers, NULL, 0.0f, strip->strip_time);
-       
+
        /* evaluate all the F-Curves in the action, saving the relevant pointers to data that will need to be used */
        for (fcu = strip->act->curves.first; fcu; fcu = fcu->next) {
                NlaEvalChannel *nec;
                float value = 0.0f;
                bool newChan;
-               
+
                /* check if this curve should be skipped */
                if (fcu->flag & (FCURVE_MUTED | FCURVE_DISABLED))
                        continue;
                if ((fcu->grp) && (fcu->grp->flag & AGRP_MUTED))
                        continue;
-                       
-               /* evaluate the F-Curve's value for the time given in the strip 
-                * NOTE: we use the modified time here, since strip's F-Curve Modifiers are applied on top of this 
+
+               /* evaluate the F-Curve's value for the time given in the strip
+                * NOTE: we use the modified time here, since strip's F-Curve Modifiers are applied on top of this
                 */
                value = evaluate_fcurve(fcu, evaltime);
-               
-               /* apply strip's F-Curve Modifiers on this value 
+
+               /* apply strip's F-Curve Modifiers on this value
                 * NOTE: we apply the strip's original evaluation time not the modified one (as per standard F-Curve eval)
                 */
                evaluate_value_fmodifiers(storage, &tmp_modifiers, fcu, &value, strip->strip_time);
-               
-               
+
+
                /* get an NLA evaluation channel to work with, and accumulate the evaluated value with the value(s)
                 * stored in this channel if it has been used already
                 */
@@ -2345,11 +2345,11 @@ static void nlastrip_evaluate_transition(PointerRNA *ptr, ListBase *channels, Li
        ListBase tmp_modifiers = {NULL, NULL};
        NlaEvalStrip tmp_nes;
        NlaStrip *s1, *s2;
-       
+
        /* join this strip's modifiers to the parent's modifiers (own modifiers first) */
        nlaeval_fmodifiers_join_stacks(&tmp_modifiers, &nes->strip->modifiers, modifiers);
-       
-       /* get the two strips to operate on 
+
+       /* get the two strips to operate on
         *      - we use the endpoints of the strips directly flanking our strip
         *        using these as the endpoints of the transition (destination and source)
         *      - these should have already been determined to be valid...
@@ -2364,8 +2364,8 @@ static void nlastrip_evaluate_transition(PointerRNA *ptr, ListBase *channels, Li
                s1 = nes->strip->prev;
                s2 = nes->strip->next;
        }
-       
-       /* prepare template for 'evaluation strip' 
+
+       /* prepare template for 'evaluation strip'
         *      - based on the transition strip's evaluation strip data
         *      - strip_mode is NES_TIME_TRANSITION_* based on which endpoint
         *      - strip_time is the 'normalized' (i.e. in-strip) time for evaluation,
@@ -2373,23 +2373,23 @@ static void nlastrip_evaluate_transition(PointerRNA *ptr, ListBase *channels, Li
         *        which allows us to appear to be 'interpolating' between the two extremes
         */
        tmp_nes = *nes;
-       
+
        /* evaluate these strips into a temp-buffer (tmp_channels) */
        /* FIXME: modifier evaluation here needs some work... */
        /* first strip */
        tmp_nes.strip_mode = NES_TIME_TRANSITION_START;
        tmp_nes.strip = s1;
        nlastrip_evaluate(ptr, &tmp_channels, &tmp_modifiers, &tmp_nes);
-       
+
        /* second strip */
        tmp_nes.strip_mode = NES_TIME_TRANSITION_END;
        tmp_nes.strip = s2;
        nlastrip_evaluate(ptr, &tmp_channels, &tmp_modifiers, &tmp_nes);
-       
-       
+
+
        /* accumulate temp-buffer and full-buffer, using the 'real' strip */
        nlaevalchan_buffers_accumulate(channels, &tmp_channels, nes);
-       
+
        /* unlink this strip's modifiers from the parent's modifiers again */
        nlaeval_fmodifiers_split_stacks(&nes->strip->modifiers, modifiers);
 }
@@ -2401,32 +2401,32 @@ static void nlastrip_evaluate_meta(PointerRNA *ptr, ListBase *channels, ListBase
        NlaStrip *strip = nes->strip;
        NlaEvalStrip *tmp_nes;
        float evaltime;
-       
+
        /* meta-strip was calculated normally to have some time to be evaluated at
         * and here we 'look inside' the meta strip, treating it as a decorated window to
-        * it's child strips, which get evaluated as if they were some tracks on a strip 
+        * it's child strips, which get evaluated as if they were some tracks on a strip
         * (but with some extra modifiers to apply).
         *
         * NOTE: keep this in sync with animsys_evaluate_nla()
         */
-       
+
        /* join this strip's modifiers to the parent's modifiers (own modifiers first) */
-       nlaeval_fmodifiers_join_stacks(&tmp_modifiers, &strip->modifiers, modifiers); 
-       
+       nlaeval_fmodifiers_join_stacks(&tmp_modifiers, &strip->modifiers, modifiers);
+
        /* find the child-strip to evaluate */
        evaltime = (nes->strip_time * (strip->end - strip->start)) + strip->start;
        tmp_nes = nlastrips_ctime_get_strip(NULL, &strip->strips, -1, evaltime);
-       
-       /* directly evaluate child strip into accumulation buffer... 
+
+       /* directly evaluate child strip into accumulation buffer...
         * - there's no need to use a temporary buffer (as it causes issues [T40082])
         */
        if (tmp_nes) {
                nlastrip_evaluate(ptr, channels, &tmp_modifiers, tmp_nes);
-               
+
                /* free temp eval-strip */
                MEM_freeN(tmp_nes);
        }
-       
+
        /* unlink this strip's modifiers from the parent's modifiers again */
        nlaeval_fmodifiers_split_stacks(&strip->modifiers, modifiers);
 }
@@ -2435,7 +2435,7 @@ static void nlastrip_evaluate_meta(PointerRNA *ptr, ListBase *channels, ListBase
 void nlastrip_evaluate(PointerRNA *ptr, ListBase *channels, ListBase *modifiers, NlaEvalStrip *nes)
 {
        NlaStrip *strip = nes->strip;
-       
+
        /* to prevent potential infinite recursion problems (i.e. transition strip, beside meta strip containing a transition
         * several levels deep inside it), we tag the current strip as being evaluated, and clear this when we leave
         */
@@ -2443,7 +2443,7 @@ void nlastrip_evaluate(PointerRNA *ptr, ListBase *channels, ListBase *modifiers,
        if (strip->flag & NLASTRIP_FLAG_EDIT_TOUCHED)
                return;
        strip->flag |= NLASTRIP_FLAG_EDIT_TOUCHED;
-       
+
        /* actions to take depend on the type of strip */
        switch (strip->type) {
                case NLASTRIP_TYPE_CLIP: /* action-clip */
@@ -2455,11 +2455,11 @@ void nlastrip_evaluate(PointerRNA *ptr, ListBase *channels, ListBase *modifiers,
                case NLASTRIP_TYPE_META: /* meta */
                        nlastrip_evaluate_meta(ptr, channels, modifiers, nes);
                        break;
-                       
+
                default: /* do nothing */
                        break;
        }
-       
+
        /* clear temp recursion safe-check */
        strip->flag &= ~NLASTRIP_FLAG_EDIT_TOUCHED;
 }
@@ -2468,18 +2468,18 @@ void nlastrip_evaluate(PointerRNA *ptr, ListBase *channels, ListBase *modifiers,
 void nladata_flush_channels(ListBase *channels)
 {
        NlaEvalChannel *nec;
-       
+
        /* sanity checks */
        if (channels == NULL)
                return;
-       
+
        /* for each channel with accumulated values, write its value on the property it affects */
        for (nec = channels->first; nec; nec = nec->next) {
                PointerRNA *ptr = &nec->ptr;
                PropertyRNA *prop = nec->prop;
                int array_index = nec->index;
                float value = nec->value;
-               
+
                /* write values - see animsys_write_rna_setting() to sync the code */
                switch (RNA_property_type(prop)) {
                        case PROP_BOOLEAN:
@@ -2524,19 +2524,19 @@ static void animsys_evaluate_nla(ListBase *echannels, PointerRNA *ptr, AnimData
        NlaTrack *nlt;
        short track_index = 0;
        bool has_strips = false;
-       
+
        ListBase estrips = {NULL, NULL};
        NlaEvalStrip *nes;
-       
+
        NlaStrip dummy_strip = {NULL}; /* dummy strip for active action */
-       
-       
+
+
        /* 1. get the stack of strips to evaluate at current time (influence calculated here) */
        for (nlt = adt->nla_tracks.first; nlt; nlt = nlt->next, track_index++) {
                /* stop here if tweaking is on and this strip is the tweaking track (it will be the first one that's 'disabled')... */
                if ((adt->flag & ADT_NLA_EDIT_ON) && (nlt->flag & NLATRACK_DISABLED))
                        break;
-                       
+
                /* solo and muting are mutually exclusive... */
                if (adt->flag & ADT_NLA_SOLO_TRACK) {
                        /* skip if there is a solo track, but this isn't it */
@@ -2546,24 +2546,24 @@ static void animsys_evaluate_nla(ListBase *echannels, PointerRNA *ptr, AnimData
                }
                else {
                        /* no solo tracks - skip track if muted */
-                       if (nlt->flag & NLATRACK_MUTED) 
+                       if (nlt->flag & NLATRACK_MUTED)
                                continue;
                }
-               
-               /* if this track has strips (but maybe they won't be suitable), set has_strips 
+
+               /* if this track has strips (but maybe they won't be suitable), set has_strips
                 *      - used for mainly for still allowing normal action evaluation...
                 */
                if (nlt->strips.first)
                        has_strips = true;
-                       
+
                /* otherwise, get strip to evaluate for this channel */
                nes = nlastrips_ctime_get_strip(&estrips, &nlt->strips, track_index, ctime);
                if (nes) nes->track = nlt;
        }
-       
+
        /* add 'active' Action (may be tweaking track) as last strip to evaluate in NLA stack
         *      - only do this if we're not exclusively evaluating the 'solo' NLA-track
-        *      - however, if the 'solo' track houses the current 'tweaking' strip, 
+        *      - however, if the 'solo' track houses the current 'tweaking' strip,
         *        then we should allow this to play, otherwise nothing happens
         */
        if ((adt->action) && ((adt->flag & ADT_NLA_SOLO_TRACK) == 0 || (adt->flag & ADT_NLA_EDIT_ON))) {
@@ -2571,9 +2571,9 @@ static void animsys_evaluate_nla(ListBase *echannels, PointerRNA *ptr, AnimData
                if ((has_strips) || (adt->actstrip)) {
                        /* make dummy NLA strip, and add that to the stack */
                        ListBase dummy_trackslist;
-                       
+
                        dummy_trackslist.first = dummy_trackslist.last = &dummy_strip;
-                       
+
                        if ((nlt) && !(adt->flag & ADT_NLA_EDIT_NOMAP)) {
                                /* edit active action in-place according to its active strip, so copy the data  */
                                memcpy(&dummy_strip, adt->actstrip, sizeof(NlaStrip));
@@ -2583,20 +2583,20 @@ static void animsys_evaluate_nla(ListBase *echannels, PointerRNA *ptr, AnimData
                                /* set settings of dummy NLA strip from AnimData settings */
                                dummy_strip.act = adt->action;
                                dummy_strip.remap = adt->remap;
-                               
+
                                /* action range is calculated taking F-Modifiers into account (which making new strips doesn't do due to the troublesome nature of that) */
                                calc_action_range(dummy_strip.act, &dummy_strip.actstart, &dummy_strip.actend, 1);
                                dummy_strip.start = dummy_strip.actstart;
                                dummy_strip.end = (IS_EQF(dummy_strip.actstart, dummy_strip.actend)) ?  (dummy_strip.actstart + 1.0f) : (dummy_strip.actend);
-                               
+
                                dummy_strip.blendmode = adt->act_blendmode;
                                dummy_strip.extendmode = adt->act_extendmode;
                                dummy_strip.influence = adt->act_influence;
-                               
+
                                /* NOTE: must set this, or else the default setting overrides, and this setting doesn't work */
                                dummy_strip.flag |= NLASTRIP_FLAG_USR_INFLUENCE;
                        }
-                       
+
                        /* add this to our list of evaluation strips */
                        nlastrips_ctime_get_strip(&estrips, &dummy_trackslist, -1, ctime);
                }
@@ -2604,22 +2604,22 @@ static void animsys_evaluate_nla(ListBase *echannels, PointerRNA *ptr, AnimData
                        /* special case - evaluate as if there isn't any NLA data */
                        /* TODO: this is really just a stop-gap measure... */
                        if (G.debug & G_DEBUG) printf("NLA Eval: Stopgap for active action on NLA Stack - no strips case\n");
-                       
+
                        animsys_evaluate_action(ptr, adt->action, adt->remap, ctime);
                        BLI_freelistN(&estrips);
                        return;
                }
        }
-       
+
        /* only continue if there are strips to evaluate */
        if (BLI_listbase_is_empty(&estrips))
                return;
-       
-       
+
+
        /* 2. for each strip, evaluate then accumulate on top of existing channels, but don't set values yet */
        for (nes = estrips.first; nes; nes = nes->next)
                nlastrip_evaluate(ptr, echannels, NULL, nes);
-               
+
        /* 3. free temporary evaluation data that's not used elsewhere */
        BLI_freelistN(&estrips);
 
@@ -2635,7 +2635,7 @@ static void animsys_evaluate_nla(ListBase *echannels, PointerRNA *ptr, AnimData
        }
 }
 
-/* NLA Evaluation function (mostly for use through do_animdata) 
+/* NLA Evaluation function (mostly for use through do_animdata)
  *     - All channels that will be affected are not cleared anymore. Instead, we just evaluate into
  *             some temp channels, where values can be accumulated in one go.
  */
@@ -2648,15 +2648,15 @@ static void animsys_calculate_nla(PointerRNA *ptr, AnimData *adt, float ctime)
 
        /* evaluate the NLA stack, obtaining a set of values to flush */
        animsys_evaluate_nla(&echannels, ptr, adt, ctime);
-       
+
        /* flush effects of accumulating channels in NLA to the actual data they affect */
        nladata_flush_channels(&echannels);
-       
+
        /* free temp data */
        BLI_freelistN(&echannels);
 }
 
-/* ***************************************** */ 
+/* ***************************************** */
 /* Overrides System - Public API */
 
 /* Clear all overrides */
@@ -2676,7 +2676,7 @@ AnimOverride *BKE_animsys_validate_override(PointerRNA *UNUSED(ptr), char *UNUSE
 static void animsys_evaluate_overrides(PointerRNA *ptr, AnimData *adt)
 {
        AnimOverride *aor;
-       
+
        /* for each override, simply execute... */
        for (aor = adt->overrides.first; aor; aor = aor->next) {
                PathResolvedRNA anim_rna;
@@ -2720,7 +2720,7 @@ static void animsys_evaluate_overrides(PointerRNA *ptr, AnimData *adt)
  *    However, the code for this is relatively harmless, so is left in the code for now.
  */
 
-/* Evaluation loop for evaluation animation data 
+/* Evaluation loop for evaluation animation data
  *
  * This assumes that the animation-data provided belongs to the ID block in question,
  * and that the flags for which parts of the anim-data settings need to be recalculated
@@ -2729,14 +2729,14 @@ static void animsys_evaluate_overrides(PointerRNA *ptr, AnimData *adt)
 void BKE_animsys_evaluate_animdata(Scene *scene, ID *id, AnimData *adt, float ctime, short recalc)
 {
        PointerRNA id_ptr;
-       
+
        /* sanity checks */
        if (ELEM(NULL, id, adt))
                return;
-       
+
        /* get pointer to ID-block for RNA to use */
        RNA_id_pointer_create(id, &id_ptr);
-       
+
        /* recalculate keyframe data:
         *      - NLA before Active Action, as Active Action behaves as 'tweaking track'
         *        that overrides 'rough' work in NLA
@@ -2745,7 +2745,7 @@ void BKE_animsys_evaluate_animdata(Scene *scene, ID *id, AnimData *adt, float ct
        if ((recalc & ADT_RECALC_ANIM) || (adt->recalc & ADT_RECALC_ANIM)) {
                /* evaluate NLA data */
                if ((adt->nla_tracks.first) && !(adt->flag & ADT_NLA_EVAL_OFF)) {
-                       /* evaluate NLA-stack 
+                       /* evaluate NLA-stack
                         *      - active action is evaluated as part of the NLA stack as the last item
                         */
                        animsys_calculate_nla(&id_ptr, adt, ctime);
@@ -2753,13 +2753,13 @@ void BKE_animsys_evaluate_animdata(Scene *scene, ID *id, AnimData *adt, float ct
                /* evaluate Active Action only */
                else if (adt->action)
                        animsys_evaluate_action(&id_ptr, adt->action, adt->remap, ctime);
-               
+
                /* reset tag */
                adt->recalc &= ~ADT_RECALC_ANIM;
        }
-       
-       /* recalculate drivers 
-        *      - Drivers need to be evaluated afterwards, as they can either override 
+
+       /* recalculate drivers
+        *      - Drivers need to be evaluated afterwards, as they can either override
         *        or be layered on top of existing animation data.
         *      - Drivers should be in the appropriate order to be evaluated without problems...
         */
@@ -2769,22 +2769,22 @@ void BKE_animsys_evaluate_animdata(Scene *scene, ID *id, AnimData *adt, float ct
        {
                animsys_evaluate_drivers(&id_ptr, adt, ctime);
        }
-       
-       /* always execute 'overrides' 
+
+       /* always execute 'overrides'
         *      - Overrides allow editing, by overwriting the value(s) set from animation-data, with the
-        *        value last set by the user (and not keyframed yet). 
+        *        value last set by the user (and not keyframed yet).
         *      - Overrides are cleared upon frame change and/or keyframing
         *      - It is best that we execute this every time, so that no errors are likely to occur.
         */
        animsys_evaluate_overrides(&id_ptr, adt);
-       
+
        /* execute and clear all cached property update functions */
        if (scene) {
                Main *bmain = G.main; // xxx - to get passed in!
                RNA_property_update_cache_flush(bmain, scene);
                RNA_property_update_cache_free();
        }
-       
+
        /* clear recalc flag now */
        adt->recalc = 0;
 }
@@ -2802,10 +2802,10 @@ void BKE_animsys_evaluate_all_animation(Main *main, Scene *scene, float ctime)
 
        if (G.debug & G_DEBUG)
                printf("Evaluate all animation - %f\n", ctime);
-       
-       /* macros for less typing 
+
+       /* macros for less typing
         *      - only evaluate animation data for id if it has users (and not just fake ones)
-        *      - whether animdata exists is checked for by the evaluation function, though taking 
+        *      - whether animdata exists is checked for by the evaluation function, though taking
         *        this outside of the function may make things slightly faster?
         */
 #define EVAL_ANIM_IDS(first, aflag) \
@@ -2816,8 +2816,8 @@ void BKE_animsys_evaluate_all_animation(Main *main, Scene *scene, float ctime)
                } \
        } (void)0
 
-       /* another macro for the "embedded" nodetree cases 
-        *      - this is like EVAL_ANIM_IDS, but this handles the case "embedded nodetrees" 
+       /* another macro for the "embedded" nodetree cases
+        *      - this is like EVAL_ANIM_IDS, but this handles the case "embedded nodetrees"
         *        (i.e. scene/material/texture->nodetree) which we need a special exception
         *    for, otherwise they'd get skipped
         *      - ntp = "node tree parent" = datablock where node tree stuff resides
@@ -2834,10 +2834,10 @@ void BKE_animsys_evaluate_all_animation(Main *main, Scene *scene, float ctime)
                        BKE_animsys_evaluate_animdata(scene, id, adt, ctime, aflag); \
                } \
        } (void)0
-       
-       /* optimization: 
-        * when there are no actions, don't go over database and loop over heaps of datablocks, 
-        * which should ultimately be empty, since it is not possible for now to have any animation 
+
+       /* optimization:
+        * when there are no actions, don't go over database and loop over heaps of datablocks,
+        * which should ultimately be empty, since it is not possible for now to have any animation
         * without some actions, and drivers wouldn't get affected by any state changes
         *
         * however, if there are some curves, we will need to make sure that their 'ctime' property gets
@@ -2846,46 +2846,46 @@ void BKE_animsys_evaluate_all_animation(Main *main, Scene *scene, float ctime)
        if (BLI_listbase_is_empty(&main->action) && BLI_listbase_is_empty(&main->curve)) {
                if (G.debug & G_DEBUG)
                        printf("\tNo Actions, so no animation needs to be evaluated...\n");
-                       
+
                return;
        }
-       
+
        /* nodes */
        EVAL_ANIM_IDS(main->nodetree.first, ADT_RECALC_ANIM);
-       
+
        /* textures */
        EVAL_ANIM_NODETREE_IDS(main->tex.first, Tex, ADT_RECALC_ANIM);
-       
+
        /* lamps */
        EVAL_ANIM_NODETREE_IDS(main->lamp.first, Lamp, ADT_RECALC_ANIM);
-       
+
        /* materials */
        EVAL_ANIM_NODETREE_IDS(main->mat.first, Material, ADT_RECALC_ANIM);
-       
+
        /* cameras */
        EVAL_ANIM_IDS(main->camera.first, ADT_RECALC_ANIM);
-       
+
        /* shapekeys */
        EVAL_ANIM_IDS(main->key.first, ADT_RECALC_ANIM);
-       
+
        /* metaballs */
        EVAL_ANIM_IDS(main->mball.first, ADT_RECALC_ANIM);
-       
+
        /* curves */
        EVAL_ANIM_IDS(main->curve.first, ADT_RECALC_ANIM);
-       
+
        /* armatures */
        EVAL_ANIM_IDS(main->armature.first, ADT_RECALC_ANIM);
-       
+
        /* lattices */
        EVAL_ANIM_IDS(main->latt.first, ADT_RECALC_ANIM);
-       
+
        /* meshes */
        EVAL_ANIM_IDS(main->mesh.first, ADT_RECALC_ANIM);
-       
+
        /* particles */
        EVAL_ANIM_IDS(main->particle.first, ADT_RECALC_ANIM);
-       
+
        /* speakers */
        EVAL_ANIM_IDS(main->speaker.first, ADT_RECALC_ANIM);
 
@@ -2894,31 +2894,31 @@ void BKE_animsys_evaluate_all_animation(Main *main, Scene *scene, float ctime)
 
        /* linestyles */
        EVAL_ANIM_IDS(main->linestyle.first, ADT_RECALC_ANIM);
-       
+
        /* grease pencil */
        EVAL_ANIM_IDS(main->gpencil.first, ADT_RECALC_ANIM);
 
        /* cache files */
        EVAL_ANIM_IDS(main->cachefiles.first, ADT_RECALC_ANIM);
-       
+
        /* objects */
        /* ADT_RECALC_ANIM doesn't need to be supplied here, since object AnimData gets
         * this tagged by Depsgraph on framechange. This optimization means that objects
         * linked from other (not-visible) scenes will not need their data calculated.
         */
-       EVAL_ANIM_IDS(main->object.first, 0); 
+       EVAL_ANIM_IDS(main->object.first, 0);
 
        /* masks */
        EVAL_ANIM_IDS(main->mask.first, ADT_RECALC_ANIM);
-       
+
        /* worlds */
        EVAL_ANIM_NODETREE_IDS(main->world.first, World, ADT_RECALC_ANIM);
-       
+
        /* scenes */
        EVAL_ANIM_NODETREE_IDS(main->scene.first, Scene, ADT_RECALC_ANIM);
 }
 
-/* ***************************************** */ 
+/* ***************************************** */
 
 /* ************** */
 /* Evaluation API */
index 01a5cc2..317994d 100644 (file)
@@ -83,18 +83,18 @@ const char *BKE_appdir_folder_default(void)
        if (uput_getenv("HOME", documentfolder, MAXPATHLEN)) {
                if (BLI_is_dir(documentfolder)) return documentfolder;
        }
-                               
+
        /* add user profile support for WIN 2K / NT.
         * This is %APPDATA%, which translates to either
         * %USERPROFILE%\Application Data or since Vista
         * to %USERPROFILE%\AppData\Roaming
         */
        hResult = SHGetFolderPath(NULL, CSIDL_PERSONAL, NULL, SHGFP_TYPE_CURRENT, documentfolder);
-               
+
        if (hResult == S_OK) {
                if (BLI_is_dir(documentfolder)) return documentfolder;
        }
-               
+
        return NULL;
 #endif /* WIN32 */
 }
@@ -120,7 +120,7 @@ static bool test_path(
         const char *path_base, const char *path_sep, const char *folder_name)
 {
        char tmppath[FILE_MAX];
-       
+
        if (path_sep) {
                BLI_join_dirfile(tmppath, sizeof(tmppath), path_base, path_sep);
        }
@@ -161,7 +161,7 @@ static bool test_env_path(char *path, const char *envvar)
 {
        const char *env = envvar ? getenv(envvar) : NULL;
        if (!env) return false;
-       
+
        if (BLI_is_dir(env)) {
                BLI_strncpy(path, env, FILE_MAX);
 #ifdef PATH_DEBUG
@@ -193,7 +193,7 @@ static bool get_path_local(
         const char *folder_name, const char *subfolder_name, const int ver)
 {
        char relfolder[FILE_MAX];
-       
+
 #ifdef PATH_DEBUG
        printf("%s...\n", __func__);
 #endif
@@ -276,11 +276,11 @@ static bool get_path_user(
 
        if (!user_path[0])
                return false;
-       
+
 #ifdef PATH_DEBUG
        printf("%s: %s\n", __func__, user_path);
 #endif
-       
+
        if (subfolder_name) {
                return test_path(targetpath, targetpath_len, user_path, folder_name, subfolder_name);
        }
@@ -334,14 +334,14 @@ static bool get_path_system(
        system_base_path = (const char *)GHOST_getSystemDir(ver, blender_version_decimal(ver));
        if (system_base_path)
                BLI_strncpy(system_path, system_base_path, FILE_MAX);
-       
+
        if (!system_path[0])
                return false;
-       
+
 #ifdef PATH_DEBUG
        printf("%s: %s\n", __func__, system_path);
 #endif
-       
+
        if (subfolder_name) {
                /* try $BLENDERPATH/folder_name/subfolder_name */
                return test_path(targetpath, targetpath_len, system_path, folder_name, subfolder_name);
@@ -371,16 +371,16 @@ const char *BKE_appdir_folder_id_ex(
                        if (get_path_local(path, path_len, "datafiles", subfolder, ver)) break;
                        if (get_path_system(path, path_len, "datafiles", subfolder, "BLENDER_SYSTEM_DATAFILES", ver)) break;
                        return NULL;
-                       
+
                case BLENDER_USER_DATAFILES:
                        if (get_path_user(path, path_len, "datafiles", subfolder, "BLENDER_USER_DATAFILES", ver)) break;
                        return NULL;
-                       
+
                case BLENDER_SYSTEM_DATAFILES:
                        if (get_path_local(path, path_len, "datafiles", subfolder, ver)) break;
                        if (get_path_system(path, path_len, "datafiles", subfolder, "BLENDER_SYSTEM_DATAFILES", ver)) break;
                        return NULL;
-                       
+
                case BLENDER_USER_AUTOSAVE:
                        if (get_path_user(path, path_len, "autosave", subfolder, "BLENDER_USER_DATAFILES", ver)) break;
                        return NULL;
@@ -388,16 +388,16 @@ const char *BKE_appdir_folder_id_ex(
                case BLENDER_USER_CONFIG:
                        if (get_path_user(path, path_len, "config", subfolder, "BLENDER_USER_CONFIG", ver)) break;
                        return NULL;
-                       
+
                case BLENDER_USER_SCRIPTS:
                        if (get_path_user(path, path_len, "scripts", subfolder, "BLENDER_USER_SCRIPTS", ver)) break;
                        return NULL;
-                       
+
                case BLENDER_SYSTEM_SCRIPTS:
                        if (get_path_local(path, path_len, "scripts", subfolder, ver)) break;
                        if (get_path_system(path, path_len, "scripts", subfolder, "BLENDER_SYSTEM_SCRIPTS", ver)) break;
                        return NULL;
-                       
+
                case BLENDER_SYSTEM_PYTHON:
                        if (get_path_local(path, path_len, "python", subfolder, ver)) break;
                        if (get_path_system(path, path_len, "python", subfolder, "BLENDER_SYSTEM_PYTHON", ver)) break;
@@ -407,7 +407,7 @@ const char *BKE_appdir_folder_id_ex(
                        BLI_assert(0);
                        break;
        }
-       
+
        return path;
 }
 
@@ -460,14 +460,14 @@ const char *BKE_appdir_folder_id_create(const int folder_id, const char *subfold
        /* only for user folders */
        if (!ELEM(folder_id, BLENDER_USER_DATAFILES, BLENDER_USER_CONFIG, BLENDER_USER_SCRIPTS, BLENDER_USER_AUTOSAVE))
                return NULL;
-       
+
        path = BKE_appdir_folder_id(folder_id, subfolder);
-       
+
        if (!path) {
                path = BKE_appdir_folder_id_user_notest(folder_id, subfolder);
                if (path) BLI_dir_create_recursive(path);
        }
-       
+
        return path;
 }
 
@@ -739,8 +739,8 @@ static void where_is_temp(char *fullname, char *basename, const size_t maxlen, c
        if (userdir && BLI_is_dir(userdir)) {
                BLI_strncpy(fullname, userdir, maxlen);
        }
-       
-       
+
+
 #ifdef WIN32
        if (fullname[0] == '\0') {
                const char *tmp = getenv("TEMP"); /* Windows */
@@ -756,7 +756,7 @@ static void where_is_temp(char *fullname, char *basename, const size_t maxlen, c
                        BLI_strncpy(fullname, tmp, maxlen);
                }
        }
-       
+
        if (fullname[0] == '\0') {
                const char *tmp = getenv("TMPDIR");
                if (tmp && BLI_is_dir(tmp)) {
@@ -764,7 +764,7 @@ static void where_is_temp(char *fullname, char *basename, const size_t maxlen, c
                }
        }
 #endif
-       
+
        if (fullname[0] == '\0') {
                BLI_strncpy(fullname, "/tmp/", maxlen);
        }
index 70a3772..b7a811b 100644 (file)
@@ -641,17 +641,17 @@ void b_bone_spline_setup(bPoseChannel *pchan, int rest, Mat4 result_array[MAX_BB
                /* add extra rolls */
                roll1 += bone->roll1 + (!rest ? pchan->roll1 : 0.0f);
                roll2 += bone->roll2 + (!rest ? pchan->roll2 : 0.0f);
-               
+
                if (bone->flag & BONE_ADD_PARENT_END_ROLL) {
                        if (prev) {
                                if (prev->bone)
                                        roll1 += prev->bone->roll2;
-                               
+
                                if (!rest)
                                        roll1 += prev->roll2;
                        }
                }
-               
+
                /* extra curve x / y */
                /* NOTE: Scale correction factors here are to compensate for some random floating-point glitches
                 *       when scaling up the bone or it's parent by a factor of approximately 8.15/6, which results
@@ -659,14 +659,14 @@ void b_bone_spline_setup(bPoseChannel *pchan, int rest, Mat4 result_array[MAX_BB
                 */
                const float xscale_correction = (do_scale) ? scale[0] : 1.0f;
                const float yscale_correction = (do_scale) ? scale[2] : 1.0f;
-               
+
                h1[0] += (bone->curveInX + (!rest ? pchan->curveInX : 0.0f)) * xscale_correction;
                h1[2] += (bone->curveInY + (!rest ? pchan->curveInY : 0.0f)) * yscale_correction;
-               
+
                h2[0] += (bone->curveOutX + (!rest ? pchan->curveOutX : 0.0f)) * xscale_correction;
                h2[2] += (bone->curveOutY + (!rest ? pchan->curveOutY : 0.0f)) * yscale_correction;
        }
-       
+
        /* make curve */
        if (bone->segments > MAX_BBONE_SUBDIV)
                bone->segments = MAX_BBONE_SUBDIV;
@@ -682,39 +682,39 @@ void b_bone_spline_setup(bPoseChannel *pchan, int rest, Mat4 result_array[MAX_BB
        for (a = 0, fp = data[0]; a < bone->segments; a++, fp += 4) {
                sub_v3_v3v3(h1, fp + 4, fp);
                vec_roll_to_mat3(h1, fp[3], mat3); /* fp[3] is roll */
-               
+
                copy_m4_m3(result_array[a].mat, mat3);
                copy_v3_v3(result_array[a].mat[3], fp);
-               
+
                if (do_scale) {
                        /* correct for scaling when this matrix is used in scaled space */
                        mul_m4_series(result_array[a].mat, iscalemat, result_array[a].mat, scalemat);
                }
-               
+
                /* BBone scale... */
                {
                        const int num_segments = bone->segments;
-                       
+
                        const float scaleIn = bone->scaleIn * (!rest ? pchan->scaleIn : 1.0f);
                        const float scaleFactorIn  = 1.0f + (scaleIn  - 1.0f) * ((float)(num_segments - a) / (float)num_segments);
-                       
+
                        const float scaleOut = bone->scaleOut * (!rest ? pchan->scaleOut : 1.0f);
                        const float scaleFactorOut = 1.0f + (scaleOut - 1.0f) * ((float)(a + 1)            / (float)num_segments);
-                       
+
                        const float scalefac = scaleFactorIn * scaleFactorOut;
                        float bscalemat[4][4], bscale[3];
-                       
+
                        bscale[0] = scalefac;
                        bscale[1] = 1.0f;
                        bscale[2] = scalefac;
-                       
+
                        size_to_mat4(bscalemat, bscale);
-                       
+
                        /* Note: don't multiply by inverse scale mat here, as it causes problems with scaling shearing and breaking segment chains */
                        /*mul_m4_series(result_array[a].mat, ibscalemat, result_array[a].mat, bscalemat);*/
                        mul_m4_series(result_array[a].mat, result_array[a].mat, bscalemat);
                }
-               
+
        }
 }
 
@@ -773,10 +773,10 @@ static void b_bone_deform(bPoseChanDeform *pdef_info, Bone *bone, float co[3], D
        float (*mat)[4] = b_bone[0].mat;
        float segment, y;
        int a;
-       
+
        /* need to transform co back to bonespace, only need y */
        y = mat[0][1] * co[0] + mat[1][1] * co[1] + mat[2][1] * co[2] + mat[3][1];
-       
+
        /* now calculate which of the b_bones are deforming this */
        segment = bone->length / ((float)bone->segments);
        a = (int)(y / segment);
@@ -1818,7 +1818,7 @@ static void pose_proxy_synchronize(Object *ob, Object *from, int layer_protected
 
        for (pchan = pose->chanbase.first; pchan; pchan = pchan->next) {
                pchanp = BKE_pose_channel_find_name(frompose, pchan->name);
-               
+
                if (UNLIKELY(pchanp == NULL)) {
                        /* happens for proxies that become invalid because of a missing link
                         * for regular cases it shouldn't happen at all */
@@ -1826,7 +1826,7 @@ static void pose_proxy_synchronize(Object *ob, Object *from, int layer_protected
                else if (pchan->bone->layer & layer_protected) {
                        ListBase proxylocal_constraints = {NULL, NULL};
                        bPoseChannel pchanw;
-                       
+
                        /* copy posechannel to temp, but restore important pointers */
                        pchanw = *pchanp;
                        pchanw.bone = pchan->bone;
@@ -1842,13 +1842,13 @@ static void pose_proxy_synchronize(Object *ob, Object *from, int layer_protected
                        /* this is freed so copy a copy, else undo crashes */
                        if (pchanw.prop) {
                                pchanw.prop = IDP_CopyProperty(pchanw.prop);
-                               
+
                                /* use the values from the existing props */
                                if (pchan->prop) {
                                        IDP_SyncGroupValues(pchanw.prop, pchan->prop);
                                }
                        }
-                       
+
                        /* constraints - proxy constraints are flushed... local ones are added after
                         *     1. extract constraints not from proxy (CONSTRAINT_PROXY_LOCAL) from pchan's constraints
                         *     2. copy proxy-pchan's constraints on-to new
@@ -1860,29 +1860,29 @@ static void pose_proxy_synchronize(Object *ob, Object *from, int layer_protected
                        BKE_constraints_proxylocal_extract(&proxylocal_constraints, &pchan->constraints);
                        BKE_constraints_copy(&pchanw.constraints, &pchanp->constraints, false);
                        BLI_movelisttolist(&pchanw.constraints, &proxylocal_constraints);
-                       
+
                        /* constraints - set target ob pointer to own object */
                        for (con = pchanw.constraints.first; con; con = con->next) {
                                const bConstraintTypeInfo *cti = BKE_constraint_typeinfo_get(con);
                                ListBase targets = {NULL, NULL};
                                bConstraintTarget *ct;
-                               
+
                                if (cti && cti->get_constraint_targets) {
                                        cti->get_constraint_targets(con, &targets);
-                                       
+
                                        for (ct = targets.first; ct; ct = ct->next) {
                                                if (ct->tar == from)
                                                        ct->tar = ob;
                                        }
-                                       
+
                                        if (cti->flush_constraint_targets)
                                                cti->flush_constraint_targets(con, &targets, 0);
                                }
                        }
-                       
+
                        /* free stuff from current channel */
                        BKE_pose_channel_free(pchan);
-                       
+
                        /* copy data in temp back over to the cleaned-out (but still allocated) original channel */
                        *pchan = pchanw;
                        if (pchan->custom) {
index ee63e61..cb4237f 100644 (file)
@@ -116,7 +116,7 @@ static void splineik_init_tree_from_pchan(Scene *scene, Object *UNUSED(ob), bPos
                /* only happens on reload file, but violates depsgraph still... fix! */
                if (ELEM(NULL,  ikData->tar->curve_cache, ikData->tar->curve_cache->path, ikData->tar->curve_cache->path->data)) {
                        BKE_displist_make_curveTypes(scene, ikData->tar, 0);
-                       
+
                        /* path building may fail in EditMode after removing verts [#33268]*/
                        if (ELEM(NULL, ikData->tar->curve_cache->path, ikData->tar->curve_cache->path->data)) {
                                /* BLI_assert(cu->path != NULL); */
@@ -422,21 +422,21 @@ static void splineik_evaluate_bone(tSplineIK_Tree *tree, Scene *scene, Object *o
                        {
                                /* improved volume preservation based on the Stretch To constraint */
                                float final_scale;
-                               
+
                                /* as the basis for volume preservation, we use the inverse scale factor... */
                                if (fabsf(scaleFac) != 0.0f) {
                                        /* NOTE: The method here is taken wholesale from the Stretch To constraint */
                                        float bulge = powf(1.0f / fabsf(scaleFac), ikData->bulge);
-                                       
+
                                        if (bulge > 1.0f) {
                                                if (ikData->flag & CONSTRAINT_SPLINEIK_USE_BULGE_MAX) {
                                                        float bulge_max = max_ff(ikData->bulge_max, 1.0f);
                                                        float hard = min_ff(bulge, bulge_max);
-                                                       
+
                                                        float range = bulge_max - 1.0f;
                                                        float scale = (range > 0.0f) ? 1.0f / range : 0.0f;
                                                        float soft = 1.0f + range * atanf((bulge - 1.0f) * scale) / (float)M_PI_2;
-                                                       
+
                                                        bulge = interpf(soft, hard, ikData->bulge_smooth);
                                                }
                                        }
@@ -444,15 +444,15 @@ static void splineik_evaluate_bone(tSplineIK_Tree *tree, Scene *scene, Object *o
                                                if (ikData->flag & CONSTRAINT_SPLINEIK_USE_BULGE_MIN) {
                                                        float bulge_min = CLAMPIS(ikData->bulge_min, 0.0f, 1.0f);
                                                        float hard = max_ff(bulge, bulge_min);
-                                                       
+
                                                        float range = 1.0f - bulge_min;
                                                        float scale = (range > 0.0f) ? 1.0f / range : 0.0f;
                                                        float soft = 1.0f - range * atanf((1.0f - bulge) * scale) / (float)M_PI_2;
-                                                       
+
                                                        bulge = interpf(soft, hard, ikData->bulge_smooth);
                                                }
                                        }
-                                       
+
                                        /* compute scale factor for xz axes from this value */
                                        final_scale = sqrtf(bulge);
                                }
@@ -460,7 +460,7 @@ static void splineik_evaluate_bone(tSplineIK_Tree *tree, Scene *scene, Object *o
                                        /* no scaling, so scale factor is simple */
                                        final_scale = 1.0f;
                                }
-                               
+
                                /* apply the scaling (assuming normalised scale) */
                                mul_v3_fl(poseMat[0], final_scale);
                                mul_v3_fl(poseMat[2], final_scale);
index 68bca5d..ba20dba 100644 (file)
@@ -88,20 +88,20 @@ void BKE_blender_free(void)
        }
 
        BKE_spacetypes_free();      /* after free main, it uses space callbacks */
-       
+
        IMB_exit();
        BKE_cachefiles_exit();
        BKE_images_exit();
        DAG_exit();
 
        BKE_brush_system_exit();
-       RE_texture_rng_exit();  
+       RE_texture_rng_exit();
 
        BLI_callback_global_finalize();
 
        BKE_sequencer_cache_destruct();
        IMB_moviecache_destruct();
-       
+
        free_nodesystem();
 }
 
@@ -120,7 +120,7 @@ void BKE_blender_version_string(char *version_str, size_t maxncpy, short version
 void BKE_blender_globals_init(void)
 {
        memset(&G, 0, sizeof(Global));
-       
+
        U.savetime = 1;
 
        G_MAIN = BKE_main_new();
@@ -321,7 +321,7 @@ int BKE_blender_test_break(void)
                if (blender_test_break_cb)
                        blender_test_break_cb();
        }
-       
+
        return (G.is_break == true);
 }
 
index 8018629..c99894b 100644 (file)
@@ -71,7 +71,7 @@ void calcAlpha(ImBuf *ibuf)
 {
        int i;
        char *rect;
-       
+
        if (ibuf) {
                rect = (char *) ibuf->rect;
                for (i = ibuf->x * ibuf->y; i > 0; i--) {
@@ -86,21 +86,21 @@ void readBitmapFontVersion0(ImBuf *ibuf, unsigned char *rect, int step)
        int glyphcount, bytes, i, index, linelength, ysize;
        unsigned char *buffer;
        bmFont * bmfont;
-       
+
        linelength = ibuf->x * step;
-       
+
        glyphcount = (rect[6 * step] << 8) | rect[7 * step];
        bytes = ((glyphcount - 1) * sizeof(bmGlyph)) + sizeof(bmFont);
-       
+
        ysize = (bytes + (ibuf->x - 1)) / ibuf->x;
-       
+
        if (ysize < ibuf->y) {
                /* we're first going to copy all data into a linear buffer.
                 * step can be 4 or 1 bytes, and the data is not sequential because
                 * the bitmap was flipped vertically. */
-               
+
                buffer = MEM_mallocN(bytes, "readBitmapFontVersion0:buffer");
-               
+
                index = 0;
                for (i = 0; i < bytes; i++) {
                        buffer[i] = rect[index];
@@ -111,12 +111,12 @@ void readBitmapFontVersion0(ImBuf *ibuf, unsigned char *rect, int step)
                                index -= linelength;
                        }
                }
-               
+
                /* we're now going to endian convert the data */
-               
+
                bmfont = MEM_mallocN(bytes, "readBitmapFontVersion0:bmfont");
                index = 0;
-               
+
                /* first read the header */
                bmfont->magic[0]    = buffer[index++];
                bmfont->magic[1]    = buffer[index++];
@@ -126,7 +126,7 @@ void readBitmapFontVersion0(ImBuf *ibuf, unsigned char *rect, int step)
                bmfont->glyphcount  = (buffer[index] << 8) | buffer[index + 1]; index += 2;
                bmfont->xsize       = (buffer[index] << 8) | buffer[index + 1]; index += 2;
                bmfont->ysize       = (buffer[index] << 8) | buffer[index + 1]; index += 2;
-               
+
                for (i = 0; i < bmfont->glyphcount; i++) {
                        bmfont->glyphs[i].unicode  = (buffer[index] << 8) | buffer[index + 1]; index += 2;
                        bmfont->glyphs[i].locx     = (buffer[index] << 8) | buffer[index + 1]; index += 2;
@@ -141,9 +141,9 @@ void readBitmapFontVersion0(ImBuf *ibuf, unsigned char *rect, int step)
                                printfGlyph(&bmfont->glyphs[i]);
                        }
                }
-               
+
                MEM_freeN(buffer);
-               
+
                if (G.debug & G_DEBUG) {
                        printf("Oldy = %d Newy = %d\n", ibuf->y, ibuf->y - ysize);
                        printf("glyphcount = %d\n", glyphcount);
@@ -173,7 +173,7 @@ void detectBitmapFont(ImBuf *ibuf)
        unsigned char *rect;
        unsigned short version;
        int i;
-       
+
        if (ibuf != NULL && ibuf->rect != NULL) {
                        /* bitmap must have an x size that is a power of two */
                if (is_power_of_two(ibuf->x)) {
@@ -215,7 +215,7 @@ void detectBitmapFont(ImBuf *ibuf)
 int locateGlyph(bmFont *bmfont, unsigned short unicode)
 {
        int min, max, current = 0;
-       
+
        if (bmfont) {
                min = 0;
                max = bmfont->glyphcount;
@@ -242,7 +242,7 @@ int locateGlyph(bmFont *bmfont, unsigned short unicode)
                        }
                }
        }
-       
+
        return(current);
 }
 
@@ -256,19 +256,19 @@ void matrixGlyph(
 {
        int index;
        bmFont *bmfont;
-       
+
        *centerx = *centery = 0.0;
        *sizex = *sizey = 1.0;
        *transx = *transy = 0.0;
        *movex = *movey = 0.0;
        *advance = 1.0;
-               
+
        if (ibuf) {
                bmfont = ibuf->userdata;
                if (bmfont && (ibuf->userflags & IB_BITMAPFONT)) {
                        index = locateGlyph(bmfont, unicode);
                        if (index) {
-                                                               
+
                                *sizex = (bmfont->glyphs[index].sizex) / (float) (bmfont->glyphs[0].sizex);
                                *sizey = (bmfont->glyphs[index].sizey) / (float) (bmfont->glyphs[0].sizey);
 
@@ -279,10 +279,10 @@ void matrixGlyph(
                                *centery = (ibuf->y - bmfont->glyphs[0].locy) / (float) ibuf->y;
 
                                /* 2.0 units is the default size of an object */
-                               
+
                                *movey = 1.0f - *sizey + 2.0f * (bmfont->glyphs[index].ofsy - bmfont->glyphs[0].ofsy) / (float) bmfont->glyphs[0].sizey;
                                *movex = *sizex - 1.0f + 2.0f * (bmfont->glyphs[index].ofsx - bmfont->glyphs[0].ofsx) / (float) bmfont->glyphs[0].sizex;
-                               
+
                                *advance = 2.0f * bmfont->glyphs[index].advance / (float) bmfont->glyphs[0].advance;
 
                                // printfGlyph(&bmfont->glyphs[index]);
index 024c0ae..39f8d77 100644 (file)
@@ -276,7 +276,7 @@ static int rule_avoid_collision(BoidRule *rule, BoidBrainData *bbd, BoidValues *
                        sub_v3_v3v3(loc, co1, co2);
 
                        sub_v3_v3v3(vec, vel1, vel2);
-                       
+
                        inp = dot_v3v3(vec, vec);
 
                        /* velocities not parallel */
@@ -286,7 +286,7 @@ static int rule_avoid_collision(BoidRule *rule, BoidBrainData *bbd, BoidValues *
                                if (t > 0.0f && t < t_min) {
                                        madd_v3_v3fl(co1, vel1, t);
                                        madd_v3_v3fl(co2, vel2, t);
-                                       
+
                                        sub_v3_v3v3(vec, co2, co1);
 
                                        len = normalize_v3(vec);
@@ -326,7 +326,7 @@ static int rule_avoid_collision(BoidRule *rule, BoidBrainData *bbd, BoidValues *
                                sub_v3_v3v3(loc, co1, co2);
 
                                sub_v3_v3v3(vec, vel1, vel2);
-                               
+
                                inp = dot_v3v3(vec, vec);
 
                                /* velocities not parallel */
@@ -336,7 +336,7 @@ static int rule_avoid_collision(BoidRule *rule, BoidBrainData *bbd, BoidValues *
                                        if (t > 0.0f && t < t_min) {
                                                madd_v3_v3fl(co1, vel1, t);
                                                madd_v3_v3fl(co2, vel2, t);
-                                               
+
                                                sub_v3_v3v3(vec, co2, co1);
 
                                                len = normalize_v3(vec);
@@ -394,7 +394,7 @@ static int rule_separate(BoidRule *UNUSED(rule), BoidBrainData *bbd, BoidValues
                        neighbors = BLI_kdtree_range_search(
                                epsys->tree, pa->prev_state.co,
                                &ptn, 2.0f * val->personal_space * pa->size);
-                       
+
                        if (neighbors > 0 && ptn[0].dist < len) {
                                sub_v3_v3v3(vec, pa->prev_state.co, ptn[0].co);
                                mul_v3_fl(vec, (2.0f * val->personal_space * pa->size - ptn[0].dist) / ptn[1].dist);
@@ -496,13 +496,13 @@ static int rule_follow_leader(BoidRule *rule, BoidBrainData *bbd, BoidValues *va
                        sub_v3_v3v3(vec, flbr->loc, flbr->oloc);
                        mul_v3_fl(vec, 1.0f/bbd->timestep);
                }
-               
+
                /* fac is seconds behind leader */
                madd_v3_v3fl(loc, vec, -flbr->distance);
 
                sub_v3_v3v3(bbd->wanted_co, loc, pa->prev_state.co);
                bbd->wanted_speed = len_v3(bbd->wanted_co);
-                       
+
                ret = 1;
        }
        else if (p % n) {
@@ -559,13 +559,13 @@ static int rule_follow_leader(BoidRule *rule, BoidBrainData *bbd, BoidValues *va
                        copy_v3_v3(vec, bbd->sim->psys->particles[p - p%n].prev_state.vel);
                        copy_v3_v3(loc, bbd->sim->psys->particles[p - p%n].prev_state.co);
                }
-               
+
                /* fac is seconds behind leader */
                madd_v3_v3fl(loc, vec, -flbr->distance);
 
                sub_v3_v3v3(bbd->wanted_co, loc, pa->prev_state.co);
                bbd->wanted_speed = len_v3(bbd->wanted_co);
-               
+
                ret = 1;
        }
 
@@ -611,7 +611,7 @@ static int rule_average_speed(BoidRule *rule, BoidBrainData *bbd, BoidValues *va
                        bbd->wanted_co[1] = 2.0f*(0.5f - BLI_rng_get_float(bbd->rng));
                        bbd->wanted_co[2] = 2.0f*(0.5f - BLI_rng_get_float(bbd->rng));
                }
-               
+
                /* leveling */
                if (asbr->level > 0.0f && psys_uses_gravity(bbd->sim)) {
                        project_v3_v3v3(vec, bbd->wanted_co, bbd->sim->scene->physics_settings.gravity);
@@ -621,7 +621,7 @@ static int rule_average_speed(BoidRule *rule, BoidBrainData *bbd, BoidValues *va
 
        }
        bbd->wanted_speed = asbr->speed * val->max_speed;
-       
+
        return 1;
 }
 static int rule_fight(BoidRule *rule, BoidBrainData *bbd, BoidValues *val, ParticleData *pa)
@@ -661,7 +661,7 @@ static int rule_fight(BoidRule *rule, BoidBrainData *bbd, BoidValues *val, Parti
                        neighbors = BLI_kdtree_range_search(
                                epsys->tree, pa->prev_state.co,
                                &am