Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2019-04-17 07:17:24 +0300
committerCampbell Barton <ideasman42@gmail.com>2019-04-17 07:21:24 +0300
commite12c08e8d170b7ca40f204a5b0423c23a9fbc2c1 (patch)
tree8cf3453d12edb177a218ef8009357518ec6cab6a /source/blender/editors/transform/transform.h
parentb3dabc200a4b0399ec6b81f2ff2730d07b44fcaa (diff)
ClangFormat: apply to source, most of intern
Apply clang format as proposed in T53211. For details on usage and instructions for migrating branches without conflicts, see: https://wiki.blender.org/wiki/Tools/ClangFormat
Diffstat (limited to 'source/blender/editors/transform/transform.h')
-rw-r--r--source/blender/editors/transform/transform.h1398
1 files changed, 718 insertions, 680 deletions
diff --git a/source/blender/editors/transform/transform.h b/source/blender/editors/transform/transform.h
index 835346d9eee..6451d82e45c 100644
--- a/source/blender/editors/transform/transform.h
+++ b/source/blender/editors/transform/transform.h
@@ -21,7 +21,6 @@
* \ingroup edtransform
*/
-
#ifndef __TRANSFORM_H__
#define __TRANSFORM_H__
@@ -66,158 +65,170 @@ struct wmTimer;
/* transinfo->redraw */
typedef enum {
- TREDRAW_NOTHING = 0,
- TREDRAW_HARD = 1,
- TREDRAW_SOFT = 2,
+ TREDRAW_NOTHING = 0,
+ TREDRAW_HARD = 1,
+ TREDRAW_SOFT = 2,
} eRedrawFlag;
typedef struct TransSnapPoint {
- struct TransSnapPoint *next, *prev;
- float co[3];
+ struct TransSnapPoint *next, *prev;
+ float co[3];
} TransSnapPoint;
typedef struct TransSnap {
- short mode;
- short target;
- short modePoint;
- short modeSelect;
- bool align;
- bool project;
- bool snap_self;
- bool peel;
- bool snap_spatial_grid;
- short status;
- /** snapping from this point (in global-space). */
- float snapPoint[3];
- /** to this point (in global-space). */
- float snapTarget[3];
- float snapNormal[3];
- char snapNodeBorder;
- ListBase points;
- TransSnapPoint *selectedPoint;
- double last;
- void (*applySnap)(struct TransInfo *, float *);
- void (*calcSnap)(struct TransInfo *, float *);
- void (*targetSnap)(struct TransInfo *);
- /**
- * Get the transform distance between two points (used by Closest snap)
- *
- * \note Return value can be anything,
- * where the smallest absolute value defines whats closest.
- */
- float (*distance)(struct TransInfo *t, const float p1[3], const float p2[3]);
-
- /**
- * Re-usable snap context data.
- */
- struct SnapObjectContext *object_context;
+ short mode;
+ short target;
+ short modePoint;
+ short modeSelect;
+ bool align;
+ bool project;
+ bool snap_self;
+ bool peel;
+ bool snap_spatial_grid;
+ short status;
+ /** snapping from this point (in global-space). */
+ float snapPoint[3];
+ /** to this point (in global-space). */
+ float snapTarget[3];
+ float snapNormal[3];
+ char snapNodeBorder;
+ ListBase points;
+ TransSnapPoint *selectedPoint;
+ double last;
+ void (*applySnap)(struct TransInfo *, float *);
+ void (*calcSnap)(struct TransInfo *, float *);
+ void (*targetSnap)(struct TransInfo *);
+ /**
+ * Get the transform distance between two points (used by Closest snap)
+ *
+ * \note Return value can be anything,
+ * where the smallest absolute value defines whats closest.
+ */
+ float (*distance)(struct TransInfo *t, const float p1[3], const float p2[3]);
+
+ /**
+ * Re-usable snap context data.
+ */
+ struct SnapObjectContext *object_context;
} TransSnap;
typedef struct TransCon {
- short orientation;
- /** Description of the constraint for header_print. */
- char text[50];
- /** Matrix of the constraint space. */
- float mtx[3][3];
- /** Inverse matrix of the constraint space. */
- float imtx[3][3];
- /** Projection constraint matrix (same as #imtx with some axis == 0). */
- float pmtx[3][3];
- /** Initial mouse value for visual calculation
- * the one in #TransInfo is not guarantee to stay the same (Rotates change it). */
- int imval[2];
- /** Mode flags of the constraint. */
- int mode;
- void (*drawExtra)(struct TransInfo *t);
-
- /* Note: if 'tc' is NULL, 'td' must also be NULL.
- * For constraints that needs to draw differently from the other
- * uses this instead of the generic draw function. */
-
- /** Apply function pointer for linear vectorial transformation
- * The last three parameters are pointers to the in/out/printable vectors. */
- void (*applyVec)(struct TransInfo *t, struct TransDataContainer *tc, struct TransData *td, const float in[3], float out[3], float pvec[3]);
- /** Apply function pointer for size transformation. */
- void (*applySize)(struct TransInfo *t, struct TransDataContainer *tc, struct TransData *td, float smat[3][3]);
- /** Apply function pointer for rotation transformation */
- void (*applyRot)(struct TransInfo *t, struct TransDataContainer *tc, struct TransData *td, float vec[3], float *angle);
+ short orientation;
+ /** Description of the constraint for header_print. */
+ char text[50];
+ /** Matrix of the constraint space. */
+ float mtx[3][3];
+ /** Inverse matrix of the constraint space. */
+ float imtx[3][3];
+ /** Projection constraint matrix (same as #imtx with some axis == 0). */
+ float pmtx[3][3];
+ /** Initial mouse value for visual calculation
+ * the one in #TransInfo is not guarantee to stay the same (Rotates change it). */
+ int imval[2];
+ /** Mode flags of the constraint. */
+ int mode;
+ void (*drawExtra)(struct TransInfo *t);
+
+ /* Note: if 'tc' is NULL, 'td' must also be NULL.
+ * For constraints that needs to draw differently from the other
+ * uses this instead of the generic draw function. */
+
+ /** Apply function pointer for linear vectorial transformation
+ * The last three parameters are pointers to the in/out/printable vectors. */
+ void (*applyVec)(struct TransInfo *t,
+ struct TransDataContainer *tc,
+ struct TransData *td,
+ const float in[3],
+ float out[3],
+ float pvec[3]);
+ /** Apply function pointer for size transformation. */
+ void (*applySize)(struct TransInfo *t,
+ struct TransDataContainer *tc,
+ struct TransData *td,
+ float smat[3][3]);
+ /** Apply function pointer for rotation transformation */
+ void (*applyRot)(struct TransInfo *t,
+ struct TransDataContainer *tc,
+ struct TransData *td,
+ float vec[3],
+ float *angle);
} TransCon;
typedef struct TransDataExtension {
- /** Initial object drot. */
- float drot[3];
- // /* Initial object drotAngle, TODO: not yet implemented */
- // float drotAngle;
- // /* Initial object drotAxis, TODO: not yet implemented */
- // float drotAxis[3];
- /** Initial object delta quat. */
- float dquat[4];
- /** Initial object delta scale. */
- float dscale[3];
- /** Rotation of the data to transform. */
- float *rot;
- /** Initial rotation. */
- float irot[3];
- /** Rotation quaternion of the data to transform. */
- float *quat;
- /** Initial rotation quaternion. */
- float iquat[4];
- /** Rotation angle of the data to transform. */
- float *rotAngle;
- /** Initial rotation angle. */
- float irotAngle;
- /** Rotation axis of the data to transform. */
- float *rotAxis;
- /** Initial rotation axis. */
- float irotAxis[4];
- /** Size of the data to transform. */
- float *size;
- /** Initial size. */
- float isize[3];
- /** Object matrix. */
- float obmat[4][4];
- /** Use instead of #TransData.smtx,
- * It is the same but without the #Bone.bone_mat, see #TD_PBONE_LOCAL_MTX_C. */
- float l_smtx[3][3];
- /** The rotscale matrix of pose bone, to allow using snap-align in translation mode,
- * when td->mtx is the loc pose bone matrix (and hence can't be used to apply
- * rotation in some cases, namely when a bone is in "NoLocal" or "Hinge" mode)... */
- float r_mtx[3][3];
- /** Inverse of previous one. */
- float r_smtx[3][3];
- /** Rotation mode, as defined in #eRotationModes (DNA_action_types.h). */
- int rotOrder;
- /** Original object transformation used for rigid bodies. */
- float oloc[3], orot[3], oquat[4], orotAxis[3], orotAngle;
+ /** Initial object drot. */
+ float drot[3];
+ // /* Initial object drotAngle, TODO: not yet implemented */
+ // float drotAngle;
+ // /* Initial object drotAxis, TODO: not yet implemented */
+ // float drotAxis[3];
+ /** Initial object delta quat. */
+ float dquat[4];
+ /** Initial object delta scale. */
+ float dscale[3];
+ /** Rotation of the data to transform. */
+ float *rot;
+ /** Initial rotation. */
+ float irot[3];
+ /** Rotation quaternion of the data to transform. */
+ float *quat;
+ /** Initial rotation quaternion. */
+ float iquat[4];
+ /** Rotation angle of the data to transform. */
+ float *rotAngle;
+ /** Initial rotation angle. */
+ float irotAngle;
+ /** Rotation axis of the data to transform. */
+ float *rotAxis;
+ /** Initial rotation axis. */
+ float irotAxis[4];
+ /** Size of the data to transform. */
+ float *size;
+ /** Initial size. */
+ float isize[3];
+ /** Object matrix. */
+ float obmat[4][4];
+ /** Use instead of #TransData.smtx,
+ * It is the same but without the #Bone.bone_mat, see #TD_PBONE_LOCAL_MTX_C. */
+ float l_smtx[3][3];
+ /** The rotscale matrix of pose bone, to allow using snap-align in translation mode,
+ * when td->mtx is the loc pose bone matrix (and hence can't be used to apply
+ * rotation in some cases, namely when a bone is in "NoLocal" or "Hinge" mode)... */
+ float r_mtx[3][3];
+ /** Inverse of previous one. */
+ float r_smtx[3][3];
+ /** Rotation mode, as defined in #eRotationModes (DNA_action_types.h). */
+ int rotOrder;
+ /** Original object transformation used for rigid bodies. */
+ float oloc[3], orot[3], oquat[4], orotAxis[3], orotAngle;
} TransDataExtension;
typedef struct TransData2D {
- /** Location of data used to transform (x,y,0). */
- float loc[3];
- /** Pointer to real 2d location of data. */
- float *loc2d;
-
- /** Pointer to handle locations, if handles aren't being moved independently. */
- float *h1, *h2;
- float ih1[2], ih2[2];
+ /** Location of data used to transform (x,y,0). */
+ float loc[3];
+ /** Pointer to real 2d location of data. */
+ float *loc2d;
+
+ /** Pointer to handle locations, if handles aren't being moved independently. */
+ float *h1, *h2;
+ float ih1[2], ih2[2];
} TransData2D;
/** Used to store 2 handles for each #TransData in case the other handle wasn't selected. */
typedef struct TransDataCurveHandleFlags {
- char ih1, ih2;
- char *h1, *h2;
+ char ih1, ih2;
+ char *h1, *h2;
} TransDataCurveHandleFlags;
/** Used for sequencer transform. */
typedef struct TransDataSeq {
- struct Sequence *seq;
- /** A copy of #Sequence.flag that may be modified for nested strips. */
- int flag;
- /** Use this so we can have transform data at the strips start,
- * but apply correctly to the start frame. */
- int start_offset;
- /** one of #SELECT, #SEQ_LEFTSEL and #SEQ_RIGHTSEL. */
- short sel_flag;
+ struct Sequence *seq;
+ /** A copy of #Sequence.flag that may be modified for nested strips. */
+ int flag;
+ /** Use this so we can have transform data at the strips start,
+ * but apply correctly to the start frame. */
+ int start_offset;
+ /** one of #SELECT, #SEQ_LEFTSEL and #SEQ_RIGHTSEL. */
+ short sel_flag;
} TransDataSeq;
@@ -225,35 +236,35 @@ typedef struct TransDataSeq {
* Sequencer transform customdata (stored in #TransCustomDataContainer).
*/
typedef struct TransSeq {
- TransDataSeq *tdseq;
- int min;
- int max;
- bool snap_left;
+ TransDataSeq *tdseq;
+ int min;
+ int max;
+ bool snap_left;
} TransSeq;
/** Used for NLA transform (stored in #TransData.extra pointer). */
typedef struct TransDataNla {
- /** ID-block NLA-data is attached to. */
- ID *id;
-
- /** Original NLA-Track that the strip belongs to. */
- struct NlaTrack *oldTrack;
- /** Current NLA-Track that the strip belongs to. */
- struct NlaTrack *nlt;
-
- /** NLA-strip this data represents. */
- struct NlaStrip *strip;
-
- /* dummy values for transform to write in - must have 3 elements... */
- /** start handle. */
- float h1[3];
- /** end handle. */
- float h2[3];
-
- /** index of track that strip is currently in. */
- int trackIndex;
- /** handle-index: 0 for dummy entry, -1 for start, 1 for end, 2 for both ends. */
- int handle;
+ /** ID-block NLA-data is attached to. */
+ ID *id;
+
+ /** Original NLA-Track that the strip belongs to. */
+ struct NlaTrack *oldTrack;
+ /** Current NLA-Track that the strip belongs to. */
+ struct NlaTrack *nlt;
+
+ /** NLA-strip this data represents. */
+ struct NlaStrip *strip;
+
+ /* dummy values for transform to write in - must have 3 elements... */
+ /** start handle. */
+ float h1[3];
+ /** end handle. */
+ float h2[3];
+
+ /** index of track that strip is currently in. */
+ int trackIndex;
+ /** handle-index: 0 for dummy entry, -1 for start, 1 for end, 2 for both ends. */
+ int handle;
} TransDataNla;
struct GHash;
@@ -261,197 +272,197 @@ struct LinkNode;
/* header of TransDataEdgeSlideVert, TransDataEdgeSlideEdge */
typedef struct TransDataGenericSlideVert {
- struct BMVert *v;
- struct LinkNode **cd_loop_groups;
- float co_orig_3d[3];
+ struct BMVert *v;
+ struct LinkNode **cd_loop_groups;
+ float co_orig_3d[3];
} TransDataGenericSlideVert;
typedef struct TransDataEdgeSlideVert {
- /** #TransDataGenericSlideVert (header) */
- struct BMVert *v;
- struct LinkNode **cd_loop_groups;
- float v_co_orig[3];
- /* end generic */
+ /** #TransDataGenericSlideVert (header) */
+ struct BMVert *v;
+ struct LinkNode **cd_loop_groups;
+ float v_co_orig[3];
+ /* end generic */
- float edge_len;
+ float edge_len;
- struct BMVert *v_side[2];
+ struct BMVert *v_side[2];
- /* add origvert.co to get the original locations */
- float dir_side[2][3];
+ /* add origvert.co to get the original locations */
+ float dir_side[2][3];
- int loop_nr;
+ int loop_nr;
} TransDataEdgeSlideVert;
-
/* store original data so we can correct UV's and similar when sliding */
typedef struct SlideOrigData {
- /** Set when #origfaces is initialized. */
- bool use_origfaces;
- int cd_loop_mdisp_offset;
-
- /** map {BMVert: TransDataGenericSlideVert} */
- struct GHash *origverts;
- struct GHash *origfaces;
- struct BMesh *bm_origfaces;
-
- struct MemArena *arena;
- /** Number of math BMLoop layers. */
- int layer_math_map_num;
- /** Array size of 'layer_math_map_num'
- * maps TransDataVertSlideVert.cd_group index to absolute CustomData layer index */
- int *layer_math_map;
-
- /** Array of slide vert data especially for mirror verts. */
- TransDataGenericSlideVert *sv_mirror;
- int totsv_mirror;
+ /** Set when #origfaces is initialized. */
+ bool use_origfaces;
+ int cd_loop_mdisp_offset;
+
+ /** map {BMVert: TransDataGenericSlideVert} */
+ struct GHash *origverts;
+ struct GHash *origfaces;
+ struct BMesh *bm_origfaces;
+
+ struct MemArena *arena;
+ /** Number of math BMLoop layers. */
+ int layer_math_map_num;
+ /** Array size of 'layer_math_map_num'
+ * maps TransDataVertSlideVert.cd_group index to absolute CustomData layer index */
+ int *layer_math_map;
+
+ /** Array of slide vert data especially for mirror verts. */
+ TransDataGenericSlideVert *sv_mirror;
+ int totsv_mirror;
} SlideOrigData;
typedef struct EdgeSlideData {
- TransDataEdgeSlideVert *sv;
- int totsv;
+ TransDataEdgeSlideVert *sv;
+ int totsv;
- int mval_start[2], mval_end[2];
- struct BMEditMesh *em;
+ int mval_start[2], mval_end[2];
+ struct BMEditMesh *em;
- SlideOrigData orig_data;
+ SlideOrigData orig_data;
+ int curr_sv_index;
- int curr_sv_index;
-
- /** when un-clamped - use this index: #TransDataEdgeSlideVert.dir_side */
- int curr_side_unclamp;
+ /** when un-clamped - use this index: #TransDataEdgeSlideVert.dir_side */
+ int curr_side_unclamp;
} EdgeSlideData;
typedef struct EdgeSlideParams {
- float perc;
+ float perc;
- bool use_even;
- bool flipped;
+ bool use_even;
+ bool flipped;
} EdgeSlideParams;
typedef struct TransDataVertSlideVert {
- /** #TransDataGenericSlideVert (header) */
- struct BMVert *v;
- struct LinkNode **cd_loop_groups;
- float co_orig_3d[3];
- /* end generic */
-
- float (*co_link_orig_3d)[3];
- int co_link_tot;
- int co_link_curr;
+ /** #TransDataGenericSlideVert (header) */
+ struct BMVert *v;
+ struct LinkNode **cd_loop_groups;
+ float co_orig_3d[3];
+ /* end generic */
+
+ float (*co_link_orig_3d)[3];
+ int co_link_tot;
+ int co_link_curr;
} TransDataVertSlideVert;
typedef struct VertSlideData {
- TransDataVertSlideVert *sv;
- int totsv;
+ TransDataVertSlideVert *sv;
+ int totsv;
- struct BMEditMesh *em;
+ struct BMEditMesh *em;
- SlideOrigData orig_data;
+ SlideOrigData orig_data;
- int curr_sv_index;
+ int curr_sv_index;
- /* result of ED_view3d_ob_project_mat_get */
- float proj_mat[4][4];
+ /* result of ED_view3d_ob_project_mat_get */
+ float proj_mat[4][4];
} VertSlideData;
typedef struct VertSlideParams {
- float perc;
+ float perc;
- bool use_even;
- bool flipped;
+ bool use_even;
+ bool flipped;
} VertSlideParams;
typedef struct BoneInitData {
- struct EditBone *bone;
- float tail[3];
- float rad_tail;
- float roll;
- float head[3];
- float dist;
- float xwidth;
- float zwidth;
+ struct EditBone *bone;
+ float tail[3];
+ float rad_tail;
+ float roll;
+ float head[3];
+ float dist;
+ float xwidth;
+ float zwidth;
} BoneInitData;
typedef struct TransData {
- /** Distance needed to affect element (for Proportionnal Editing). */
- float dist;
- /** Distance to the nearest element (for Proportionnal Editing). */
- float rdist;
- /** Factor of the transformation (for Proportionnal Editing). */
- float factor;
- /** Location of the data to transform. */
- float *loc;
- /** Initial location. */
- float iloc[3];
- /** Value pointer for special transforms. */
- float *val;
- /** Old value. */
- float ival;
- /** Individual data center. */
- float center[3];
- /** Transformation matrix from data space to global space. */
- float mtx[3][3];
- /** Transformation matrix from global space to data space. */
- float smtx[3][3];
- /** Axis orientation matrix of the data. */
- float axismtx[3][3];
- struct Object *ob;
- /** For objects/bones, the first constraint in its constraint stack. */
- struct bConstraint *con;
- /** For objects, poses. 1 single malloc per TransInfo! */
- TransDataExtension *ext;
- /** for curves, stores handle flags for modification/cancel. */
- TransDataCurveHandleFlags *hdata;
- /**
- * Extra data (mirrored element pointer, in editmode mesh to BMVert)
- * (editbone for roll fixing) (...).
- */
- void *extra;
- /** Various flags. */
- int flag;
- /** If set, copy of Object or PoseChannel protection. */
- short protectflag;
+ /** Distance needed to affect element (for Proportionnal Editing). */
+ float dist;
+ /** Distance to the nearest element (for Proportionnal Editing). */
+ float rdist;
+ /** Factor of the transformation (for Proportionnal Editing). */
+ float factor;
+ /** Location of the data to transform. */
+ float *loc;
+ /** Initial location. */
+ float iloc[3];
+ /** Value pointer for special transforms. */
+ float *val;
+ /** Old value. */
+ float ival;
+ /** Individual data center. */
+ float center[3];
+ /** Transformation matrix from data space to global space. */
+ float mtx[3][3];
+ /** Transformation matrix from global space to data space. */
+ float smtx[3][3];
+ /** Axis orientation matrix of the data. */
+ float axismtx[3][3];
+ struct Object *ob;
+ /** For objects/bones, the first constraint in its constraint stack. */
+ struct bConstraint *con;
+ /** For objects, poses. 1 single malloc per TransInfo! */
+ TransDataExtension *ext;
+ /** for curves, stores handle flags for modification/cancel. */
+ TransDataCurveHandleFlags *hdata;
+ /**
+ * Extra data (mirrored element pointer, in editmode mesh to BMVert)
+ * (editbone for roll fixing) (...).
+ */
+ void *extra;
+ /** Various flags. */
+ int flag;
+ /** If set, copy of Object or PoseChannel protection. */
+ short protectflag;
} TransData;
typedef struct MouseInput {
- void (*apply)(struct TransInfo *t, struct MouseInput *mi, const double mval[2], float output[3]);
- void (*post)(struct TransInfo *t, float values[3]);
-
- /** Initial mouse position. */
- int imval[2];
- bool precision;
- float precision_factor;
- float center[2];
- float factor;
- /** Additional data, if needed by the particular function. */
- void *data;
-
- /**
- * Use virtual cursor, which takes precision into account
- * keeping track of the cursors 'virtual' location,
- * to avoid jumping values when its toggled.
- *
- * This works well for scaling drag motion,
- * but not for rotating around a point (rotaton needs its own custom accumulator)
- */
- bool use_virtual_mval;
- struct {
- double prev[2];
- double accum[2];
- } virtual_mval;
+ void (*apply)(struct TransInfo *t, struct MouseInput *mi, const double mval[2], float output[3]);
+ void (*post)(struct TransInfo *t, float values[3]);
+
+ /** Initial mouse position. */
+ int imval[2];
+ bool precision;
+ float precision_factor;
+ float center[2];
+ float factor;
+ /** Additional data, if needed by the particular function. */
+ void *data;
+
+ /**
+ * Use virtual cursor, which takes precision into account
+ * keeping track of the cursors 'virtual' location,
+ * to avoid jumping values when its toggled.
+ *
+ * This works well for scaling drag motion,
+ * but not for rotating around a point (rotaton needs its own custom accumulator)
+ */
+ bool use_virtual_mval;
+ struct {
+ double prev[2];
+ double accum[2];
+ } virtual_mval;
} MouseInput;
typedef struct TransCustomData {
- void *data;
- void (*free_cb)(struct TransInfo *, struct TransDataContainer *tc, struct TransCustomData *custom_data);
- unsigned int use_free : 1;
+ void *data;
+ void (*free_cb)(struct TransInfo *,
+ struct TransDataContainer *tc,
+ struct TransCustomData *custom_data);
+ unsigned int use_free : 1;
} TransCustomData;
typedef struct TransCenterData {
- float global[3];
- unsigned int is_set : 1;
+ float global[3];
+ unsigned int is_set : 1;
} TransCenterData;
/**
@@ -462,304 +473,303 @@ typedef struct TransCenterData {
* (typically in transform_conversion.c).
*/
typedef struct TransCustomDataContainer {
- /** Owned by the mode (grab, scale, bend... ).*/
- union {
- TransCustomData mode, first_elem;
- };
- TransCustomData type;
+ /** Owned by the mode (grab, scale, bend... ).*/
+ union {
+ TransCustomData mode, first_elem;
+ };
+ TransCustomData type;
} TransCustomDataContainer;
#define TRANS_CUSTOM_DATA_ELEM_MAX (sizeof(TransCustomDataContainer) / sizeof(TransCustomData))
typedef struct TransDataContainer {
- /**
- * Use for cases we care about the active, eg: active vert of active mesh.
- * if set this will _always_ be the first item in the array.
- */
- bool is_active;
-
- /** Transformed data (array). */
- TransData *data;
- /** Total number of transformed data. */
- int data_len;
-
- /** Transformed data extension (array). */
- TransDataExtension *data_ext;
- /** Transformed data for 2d (array). */
- TransData2D *data_2d;
-
- struct Object *obedit;
-
- /**
- * Use when #T_LOCAL_MATRIX is set.
- * Typically: 'obedit->obmat' or 'poseobj->obmat', but may be used elsewhere too.
- */
- bool use_local_mat;
- float mat[4][4];
- float imat[4][4];
- /** 3x3 copies of matrices above. */
- float mat3[3][3];
- float imat3[3][3];
-
- /** Normalized 'mat3' */
- float mat3_unit[3][3];
-
- /** if 't->flag & T_POSE', this denotes pose object */
- struct Object *poseobj;
-
- /** Center of transformation (in local-space), Calculated from #TransInfo.center_global. */
- float center_local[3];
-
- /**
- * Mirror option
- */
- struct {
- /* Currently for mesh X mirror only. */
- int axis_flag;
- /** Set to -1.0f or 1.0 when use_mirror is set. */
- float sign;
- } mirror;
-
- TransCustomDataContainer custom;
+ /**
+ * Use for cases we care about the active, eg: active vert of active mesh.
+ * if set this will _always_ be the first item in the array.
+ */
+ bool is_active;
+
+ /** Transformed data (array). */
+ TransData *data;
+ /** Total number of transformed data. */
+ int data_len;
+
+ /** Transformed data extension (array). */
+ TransDataExtension *data_ext;
+ /** Transformed data for 2d (array). */
+ TransData2D *data_2d;
+
+ struct Object *obedit;
+
+ /**
+ * Use when #T_LOCAL_MATRIX is set.
+ * Typically: 'obedit->obmat' or 'poseobj->obmat', but may be used elsewhere too.
+ */
+ bool use_local_mat;
+ float mat[4][4];
+ float imat[4][4];
+ /** 3x3 copies of matrices above. */
+ float mat3[3][3];
+ float imat3[3][3];
+
+ /** Normalized 'mat3' */
+ float mat3_unit[3][3];
+
+ /** if 't->flag & T_POSE', this denotes pose object */
+ struct Object *poseobj;
+
+ /** Center of transformation (in local-space), Calculated from #TransInfo.center_global. */
+ float center_local[3];
+
+ /**
+ * Mirror option
+ */
+ struct {
+ /* Currently for mesh X mirror only. */
+ int axis_flag;
+ /** Set to -1.0f or 1.0 when use_mirror is set. */
+ float sign;
+ } mirror;
+
+ TransCustomDataContainer custom;
} TransDataContainer;
typedef struct TransInfo {
- TransDataContainer *data_container;
- int data_container_len;
- /** Combine length of all #TransDataContainer.data_len
- * Use to check if nothing is selected or if we have a single selection. */
- int data_len_all;
-
- /** Current mode. */
- int mode;
- /** Generic flags for special behaviors. */
- int flag;
- /** Special modifiers, by function, not key. */
- int modifiers;
- /** Current state (running, canceled. */
- short state;
- /** Current context/options for transform. */
- int options;
- /** Init value for some transformations (and rotation angle). */
- float val;
- void (*transform)(struct TransInfo *, const int[2]);
- /** Transform function pointer. */
- eRedrawFlag (*handleEvent)(struct TransInfo *, const struct wmEvent *);
- /* event handler function pointer RETURN 1 if redraw is needed */
- /** transformed constraint. */
- TransCon con;
- TransSnap tsnap;
- /** numerical input. */
- NumInput num;
- /** mouse input. */
- MouseInput mouse;
- /** redraw flag. */
- eRedrawFlag redraw;
- /** proportional circle radius. */
- float prop_size;
- /** proportional falloff text. */
- char proptext[20];
- /**
- * Spaces using non 1:1 aspect, (uv's, f-curve, movie-clip... etc)
- * use for conversion and snapping.
- */
- float aspect[3];
- /** center of transformation (in global-space) */
- float center_global[3];
- /** center in screen coordinates. */
- float center2d[2];
- /* Lazy initialize center data for when we need other center values.
- * V3D_AROUND_ACTIVE + 1 (static assert checks this) */
- TransCenterData center_cache[5];
- /** maximum index on the input vector. */
- short idx_max;
- /** Snapping Gears. */
- float snap[3];
- /** Spatial snapping gears(even when rotating, scaling... etc). */
- float snap_spatial[3];
- /** Mouse side of the cfra, 'L', 'R' or 'B' */
- char frame_side;
-
- /** copy from G.vd, prevents feedback. */
- float viewmat[4][4];
- /** and to make sure we don't have to. */
- float viewinv[4][4];
- /** access G.vd from other space types. */
- float persmat[4][4];
- float persinv[4][4];
- short persp;
- short around;
- /** spacetype where transforming is. */
- char spacetype;
- /** Choice of custom cursor with or without a help line from the gizmo to the mouse position. */
- char helpline;
- /** Avoid looking inside TransDataContainer obedit. */
- short obedit_type;
-
- /** translation, to show for widget. */
- float vec[3];
- /** rot/rescale, to show for widget. */
- float mat[3][3];
-
- /** orientation matrix of the current space. */
- float spacemtx[3][3];
- /** name of the current space, MAX_NAME. */
- char spacename[64];
-
- /*************** NEW STUFF *********************/
- /** event type used to launch transform. */
- short launch_event;
-
- struct {
- /** Orientation type when when we're not constrained.
- * nearly always global except for rotate which defaults to screen-space orientation. */
- short unset;
- /** Orientation to use when a key is pressed. */
- short user;
- /* Used when user is global. */
- short user_alt;
- short index;
- short *types[2];
- /* this gets used when custom_orientation is V3D_ORIENT_CUSTOM */
- TransformOrientation *custom;
- } orientation;
- /** backup from view3d, to restore on end. */
- short gizmo_flag;
-
- short prop_mode;
-
- float values[4];
- /** Offset applied ontop of modal input. */
- float values_modal_offset[4];
- float auto_values[4];
-
- /* Axis members for modes that use an axis separate from the orientation (rotate & shear). */
-
- /** Primary axis, rotate only uses this. */
- int orient_axis;
- /** Secondary axis, shear uses this. */
- int orient_axis_ortho;
-
- /** Often this matrix has similar usage to #TransInfo.spacemtx however this
- * is used to define extra axes to operate on, not necessarily a space.
- *
- * For example, by default rotation operates on the view (`orient_matrix[2]`),
- * even when the current space isn't set to the view. */
- float orient_matrix[3][3];
- /** Don't overwrite when set by operator redo defines the orientation axis. */
- bool orient_matrix_is_set;
-
- /** remove elements if operator is canceled. */
- bool remove_on_cancel;
-
- void *view;
- /** Only valid (non null) during an operator called function. */
- struct bContext *context;
- struct ScrArea *sa;
- struct ARegion *ar;
- struct Depsgraph *depsgraph;
- struct Scene *scene;
- struct ViewLayer *view_layer;
- struct ToolSettings *settings;
- struct wmTimer *animtimer;
- /** so we can do lookups for header text. */
- struct wmKeyMap *keymap;
- /** assign from the operator, or can be NULL. */
- struct ReportList *reports;
- /** current mouse position. */
- int mval[2];
- /** use for 3d view. */
- float zfac;
- void *draw_handle_apply;
- void *draw_handle_view;
- void *draw_handle_pixel;
- void *draw_handle_cursor;
-
- /** Currently only used for random curve of proportional editing. */
- struct RNG *rng;
-
- /** Typically for mode settings. */
- TransCustomDataContainer custom;
+ TransDataContainer *data_container;
+ int data_container_len;
+ /** Combine length of all #TransDataContainer.data_len
+ * Use to check if nothing is selected or if we have a single selection. */
+ int data_len_all;
+
+ /** Current mode. */
+ int mode;
+ /** Generic flags for special behaviors. */
+ int flag;
+ /** Special modifiers, by function, not key. */
+ int modifiers;
+ /** Current state (running, canceled. */
+ short state;
+ /** Current context/options for transform. */
+ int options;
+ /** Init value for some transformations (and rotation angle). */
+ float val;
+ void (*transform)(struct TransInfo *, const int[2]);
+ /** Transform function pointer. */
+ eRedrawFlag (*handleEvent)(struct TransInfo *, const struct wmEvent *);
+ /* event handler function pointer RETURN 1 if redraw is needed */
+ /** transformed constraint. */
+ TransCon con;
+ TransSnap tsnap;
+ /** numerical input. */
+ NumInput num;
+ /** mouse input. */
+ MouseInput mouse;
+ /** redraw flag. */
+ eRedrawFlag redraw;
+ /** proportional circle radius. */
+ float prop_size;
+ /** proportional falloff text. */
+ char proptext[20];
+ /**
+ * Spaces using non 1:1 aspect, (uv's, f-curve, movie-clip... etc)
+ * use for conversion and snapping.
+ */
+ float aspect[3];
+ /** center of transformation (in global-space) */
+ float center_global[3];
+ /** center in screen coordinates. */
+ float center2d[2];
+ /* Lazy initialize center data for when we need other center values.
+ * V3D_AROUND_ACTIVE + 1 (static assert checks this) */
+ TransCenterData center_cache[5];
+ /** maximum index on the input vector. */
+ short idx_max;
+ /** Snapping Gears. */
+ float snap[3];
+ /** Spatial snapping gears(even when rotating, scaling... etc). */
+ float snap_spatial[3];
+ /** Mouse side of the cfra, 'L', 'R' or 'B' */
+ char frame_side;
+
+ /** copy from G.vd, prevents feedback. */
+ float viewmat[4][4];
+ /** and to make sure we don't have to. */
+ float viewinv[4][4];
+ /** access G.vd from other space types. */
+ float persmat[4][4];
+ float persinv[4][4];
+ short persp;
+ short around;
+ /** spacetype where transforming is. */
+ char spacetype;
+ /** Choice of custom cursor with or without a help line from the gizmo to the mouse position. */
+ char helpline;
+ /** Avoid looking inside TransDataContainer obedit. */
+ short obedit_type;
+
+ /** translation, to show for widget. */
+ float vec[3];
+ /** rot/rescale, to show for widget. */
+ float mat[3][3];
+
+ /** orientation matrix of the current space. */
+ float spacemtx[3][3];
+ /** name of the current space, MAX_NAME. */
+ char spacename[64];
+
+ /*************** NEW STUFF *********************/
+ /** event type used to launch transform. */
+ short launch_event;
+
+ struct {
+ /** Orientation type when when we're not constrained.
+ * nearly always global except for rotate which defaults to screen-space orientation. */
+ short unset;
+ /** Orientation to use when a key is pressed. */
+ short user;
+ /* Used when user is global. */
+ short user_alt;
+ short index;
+ short *types[2];
+ /* this gets used when custom_orientation is V3D_ORIENT_CUSTOM */
+ TransformOrientation *custom;
+ } orientation;
+ /** backup from view3d, to restore on end. */
+ short gizmo_flag;
+
+ short prop_mode;
+
+ float values[4];
+ /** Offset applied ontop of modal input. */
+ float values_modal_offset[4];
+ float auto_values[4];
+
+ /* Axis members for modes that use an axis separate from the orientation (rotate & shear). */
+
+ /** Primary axis, rotate only uses this. */
+ int orient_axis;
+ /** Secondary axis, shear uses this. */
+ int orient_axis_ortho;
+
+ /** Often this matrix has similar usage to #TransInfo.spacemtx however this
+ * is used to define extra axes to operate on, not necessarily a space.
+ *
+ * For example, by default rotation operates on the view (`orient_matrix[2]`),
+ * even when the current space isn't set to the view. */
+ float orient_matrix[3][3];
+ /** Don't overwrite when set by operator redo defines the orientation axis. */
+ bool orient_matrix_is_set;
+
+ /** remove elements if operator is canceled. */
+ bool remove_on_cancel;
+
+ void *view;
+ /** Only valid (non null) during an operator called function. */
+ struct bContext *context;
+ struct ScrArea *sa;
+ struct ARegion *ar;
+ struct Depsgraph *depsgraph;
+ struct Scene *scene;
+ struct ViewLayer *view_layer;
+ struct ToolSettings *settings;
+ struct wmTimer *animtimer;
+ /** so we can do lookups for header text. */
+ struct wmKeyMap *keymap;
+ /** assign from the operator, or can be NULL. */
+ struct ReportList *reports;
+ /** current mouse position. */
+ int mval[2];
+ /** use for 3d view. */
+ float zfac;
+ void *draw_handle_apply;
+ void *draw_handle_view;
+ void *draw_handle_pixel;
+ void *draw_handle_cursor;
+
+ /** Currently only used for random curve of proportional editing. */
+ struct RNG *rng;
+
+ /** Typically for mode settings. */
+ TransCustomDataContainer custom;
} TransInfo;
-
/* ******************** Macros & Prototypes *********************** */
/* transinfo->state */
enum {
- TRANS_STARTING = 0,
- TRANS_RUNNING = 1,
- TRANS_CONFIRM = 2,
- TRANS_CANCEL = 3,
+ TRANS_STARTING = 0,
+ TRANS_RUNNING = 1,
+ TRANS_CONFIRM = 2,
+ TRANS_CANCEL = 3,
};
/* transinfo->flag */
enum {
- T_OBJECT = 1 << 0,
- /** \note We could remove 'T_EDIT' and use 'obedit_type', for now ensure they're in sync. */
- T_EDIT = 1 << 1,
- T_POSE = 1 << 2,
- T_TEXTURE = 1 << 3,
- /** Transforming the camera while in camera view. */
- T_CAMERA = 1 << 4,
- /** Transforming the 3D cursor. */
- T_CURSOR = 1 << 5,
- /** Transform points, having no rotation/scale. */
- T_POINTS = 1 << 6,
- /**
- * Apply matrix #TransDataContainer.matrix, this avoids having to have duplicate check all over
- * that happen to apply to specific modes (edit & pose for eg). */
- T_LOCAL_MATRIX = 1 << 7,
-
- /** restrictions flags */
- T_NO_CONSTRAINT = 1 << 8,
- T_NULL_ONE = 1 << 9,
- T_NO_ZERO = 1 << 10,
- T_ALL_RESTRICTIONS = T_NO_CONSTRAINT | T_NULL_ONE | T_NO_ZERO,
-
- T_PROP_EDIT = 1 << 11,
- T_PROP_CONNECTED = 1 << 12,
- T_PROP_PROJECTED = 1 << 13,
- T_PROP_EDIT_ALL = T_PROP_EDIT | T_PROP_CONNECTED | T_PROP_PROJECTED,
-
- T_V3D_ALIGN = 1 << 14,
- /** For 2d views like uv or fcurve. */
- T_2D_EDIT = 1 << 15,
- T_CLIP_UV = 1 << 16,
-
- /** Auto-ik is on. */
- T_AUTOIK = 1 << 18,
-
- /** Don't use mirror even if the data-block option is set. */
- T_NO_MIRROR = 1 << 19,
-
- T_AUTOVALUES = 1 << 20,
-
- /** To specify if we save back settings at the end. */
- T_MODAL = 1 << 21,
-
- /** No retopo. */
- T_NO_PROJECT = 1 << 22,
-
- T_RELEASE_CONFIRM = 1 << 23,
-
- /** Alternative transformation. used to add offset to tracking markers. */
- T_ALT_TRANSFORM = 1 << 24,
-
- /** #TransInfo.center has been set, don't change it. */
- T_OVERRIDE_CENTER = 1 << 25,
-
- T_MODAL_CURSOR_SET = 1 << 26,
-
- T_CLNOR_REBUILD = 1 << 27,
+ T_OBJECT = 1 << 0,
+ /** \note We could remove 'T_EDIT' and use 'obedit_type', for now ensure they're in sync. */
+ T_EDIT = 1 << 1,
+ T_POSE = 1 << 2,
+ T_TEXTURE = 1 << 3,
+ /** Transforming the camera while in camera view. */
+ T_CAMERA = 1 << 4,
+ /** Transforming the 3D cursor. */
+ T_CURSOR = 1 << 5,
+ /** Transform points, having no rotation/scale. */
+ T_POINTS = 1 << 6,
+ /**
+ * Apply matrix #TransDataContainer.matrix, this avoids having to have duplicate check all over
+ * that happen to apply to specific modes (edit & pose for eg). */
+ T_LOCAL_MATRIX = 1 << 7,
+
+ /** restrictions flags */
+ T_NO_CONSTRAINT = 1 << 8,
+ T_NULL_ONE = 1 << 9,
+ T_NO_ZERO = 1 << 10,
+ T_ALL_RESTRICTIONS = T_NO_CONSTRAINT | T_NULL_ONE | T_NO_ZERO,
+
+ T_PROP_EDIT = 1 << 11,
+ T_PROP_CONNECTED = 1 << 12,
+ T_PROP_PROJECTED = 1 << 13,
+ T_PROP_EDIT_ALL = T_PROP_EDIT | T_PROP_CONNECTED | T_PROP_PROJECTED,
+
+ T_V3D_ALIGN = 1 << 14,
+ /** For 2d views like uv or fcurve. */
+ T_2D_EDIT = 1 << 15,
+ T_CLIP_UV = 1 << 16,
+
+ /** Auto-ik is on. */
+ T_AUTOIK = 1 << 18,
+
+ /** Don't use mirror even if the data-block option is set. */
+ T_NO_MIRROR = 1 << 19,
+
+ T_AUTOVALUES = 1 << 20,
+
+ /** To specify if we save back settings at the end. */
+ T_MODAL = 1 << 21,
+
+ /** No retopo. */
+ T_NO_PROJECT = 1 << 22,
+
+ T_RELEASE_CONFIRM = 1 << 23,
+
+ /** Alternative transformation. used to add offset to tracking markers. */
+ T_ALT_TRANSFORM = 1 << 24,
+
+ /** #TransInfo.center has been set, don't change it. */
+ T_OVERRIDE_CENTER = 1 << 25,
+
+ T_MODAL_CURSOR_SET = 1 << 26,
+
+ T_CLNOR_REBUILD = 1 << 27,
};
/** #TransInfo.modifiers */
enum {
- MOD_CONSTRAINT_SELECT = 1 << 0,
- MOD_PRECISION = 1 << 1,
- MOD_SNAP = 1 << 2,
- MOD_SNAP_INVERT = 1 << 3,
- MOD_CONSTRAINT_PLANE = 1 << 4,
+ MOD_CONSTRAINT_SELECT = 1 << 0,
+ MOD_PRECISION = 1 << 1,
+ MOD_SNAP = 1 << 2,
+ MOD_SNAP_INVERT = 1 << 3,
+ MOD_CONSTRAINT_PLANE = 1 << 4,
};
/* use node center for transform instead of upper-left corner.
@@ -767,87 +777,90 @@ enum {
*/
// #define USE_NODE_CENTER
-
/* ******************************************************************************** */
/** #TransInfo.helpline */
enum {
- HLP_NONE = 0,
- HLP_SPRING = 1,
- HLP_ANGLE = 2,
- HLP_HARROW = 3,
- HLP_VARROW = 4,
- HLP_CARROW = 5,
- HLP_TRACKBALL = 6,
+ HLP_NONE = 0,
+ HLP_SPRING = 1,
+ HLP_ANGLE = 2,
+ HLP_HARROW = 3,
+ HLP_VARROW = 4,
+ HLP_CARROW = 5,
+ HLP_TRACKBALL = 6,
};
/** #TransCon.mode, #TransInfo.con.mode */
enum {
- /** When set constraints are in use. */
- CON_APPLY = 1 << 0,
- /** These are only used for modal execution. */
- CON_AXIS0 = 1 << 1,
- CON_AXIS1 = 1 << 2,
- CON_AXIS2 = 1 << 3,
- CON_SELECT = 1 << 4,
- /** Does not reorient vector to face viewport when on. */
- CON_NOFLIP = 1 << 5,
- CON_USER = 1 << 6,
+ /** When set constraints are in use. */
+ CON_APPLY = 1 << 0,
+ /** These are only used for modal execution. */
+ CON_AXIS0 = 1 << 1,
+ CON_AXIS1 = 1 << 2,
+ CON_AXIS2 = 1 << 3,
+ CON_SELECT = 1 << 4,
+ /** Does not reorient vector to face viewport when on. */
+ CON_NOFLIP = 1 << 5,
+ CON_USER = 1 << 6,
};
/** #TransData.flag */
enum {
- TD_SELECTED = 1 << 0,
- TD_NOACTION = 1 << 2,
- TD_USEQUAT = 1 << 3,
- TD_NOTCONNECTED = 1 << 4,
- /** Used for scaling of #MetaElem.rad */
- TD_SINGLESIZE = 1 << 5,
- /** Scale relative to individual element center */
- TD_INDIVIDUAL_SCALE = 1 << 8,
- TD_NOCENTER = 1 << 9,
- /** #TransData.ext abused for particle key timing. */
- TD_NO_EXT = 1 << 10,
- /** don't transform this data */
- TD_SKIP = 1 << 11,
- /** if this is a bez triple, we need to restore the handles,
- * if this is set #TransData.hdata needs freeing */
- TD_BEZTRIPLE = 1 << 12,
- /** when this is set, don't apply translation changes to this element */
- TD_NO_LOC = 1 << 13,
- /** for Graph Editor autosnap, indicates that point should not undergo autosnapping */
- TD_NOTIMESNAP = 1 << 14,
- /** for Graph Editor - curves that can only have int-values need their keyframes tagged with this */
- TD_INTVALUES = 1 << 15,
- /** For editmode mirror, clamp to x = 0 */
- TD_MIRROR_EDGE = 1 << 16,
- /** For fcurve handles, move them along with their keyframes */
- TD_MOVEHANDLE1 = 1 << 17,
- TD_MOVEHANDLE2 = 1 << 18,
- /** Exceptional case with pose bone rotating when a parent bone has 'Local Location'
- * option enabled and rotating also transforms it. */
- TD_PBONE_LOCAL_MTX_P = 1 << 19,
- /** Same as above but for a child bone. */
- TD_PBONE_LOCAL_MTX_C = 1 << 20,
+ TD_SELECTED = 1 << 0,
+ TD_NOACTION = 1 << 2,
+ TD_USEQUAT = 1 << 3,
+ TD_NOTCONNECTED = 1 << 4,
+ /** Used for scaling of #MetaElem.rad */
+ TD_SINGLESIZE = 1 << 5,
+ /** Scale relative to individual element center */
+ TD_INDIVIDUAL_SCALE = 1 << 8,
+ TD_NOCENTER = 1 << 9,
+ /** #TransData.ext abused for particle key timing. */
+ TD_NO_EXT = 1 << 10,
+ /** don't transform this data */
+ TD_SKIP = 1 << 11,
+ /** if this is a bez triple, we need to restore the handles,
+ * if this is set #TransData.hdata needs freeing */
+ TD_BEZTRIPLE = 1 << 12,
+ /** when this is set, don't apply translation changes to this element */
+ TD_NO_LOC = 1 << 13,
+ /** for Graph Editor autosnap, indicates that point should not undergo autosnapping */
+ TD_NOTIMESNAP = 1 << 14,
+ /** for Graph Editor - curves that can only have int-values need their keyframes tagged with this */
+ TD_INTVALUES = 1 << 15,
+ /** For editmode mirror, clamp to x = 0 */
+ TD_MIRROR_EDGE = 1 << 16,
+ /** For fcurve handles, move them along with their keyframes */
+ TD_MOVEHANDLE1 = 1 << 17,
+ TD_MOVEHANDLE2 = 1 << 18,
+ /** Exceptional case with pose bone rotating when a parent bone has 'Local Location'
+ * option enabled and rotating also transforms it. */
+ TD_PBONE_LOCAL_MTX_P = 1 << 19,
+ /** Same as above but for a child bone. */
+ TD_PBONE_LOCAL_MTX_C = 1 << 20,
};
/** #TransSnap.status */
enum {
- SNAP_FORCED = 1 << 0,
- TARGET_INIT = 1 << 1,
- POINT_INIT = 1 << 2,
- MULTI_POINTS = 1 << 3,
+ SNAP_FORCED = 1 << 0,
+ TARGET_INIT = 1 << 1,
+ POINT_INIT = 1 << 2,
+ MULTI_POINTS = 1 << 3,
};
/* Hard min/max for proportional size. */
#define T_PROP_SIZE_MIN 1e-6f
#define T_PROP_SIZE_MAX 1e12f
-bool initTransform(struct bContext *C, struct TransInfo *t, struct wmOperator *op, const struct wmEvent *event, int mode);
+bool initTransform(struct bContext *C,
+ struct TransInfo *t,
+ struct wmOperator *op,
+ const struct wmEvent *event,
+ int mode);
void saveTransform(struct bContext *C, struct TransInfo *t, struct wmOperator *op);
-int transformEvent(TransInfo *t, const struct wmEvent *event);
+int transformEvent(TransInfo *t, const struct wmEvent *event);
void transformApply(struct bContext *C, TransInfo *t);
-int transformEnd(struct bContext *C, TransInfo *t);
+int transformEnd(struct bContext *C, TransInfo *t);
void setTransformViewMatrices(TransInfo *t);
void setTransformViewAspect(TransInfo *t, float r_aspect[3]);
@@ -864,7 +877,6 @@ void drawPropCircle(const struct bContext *C, TransInfo *t);
struct wmKeyMap *transform_modal_keymap(struct wmKeyConfig *keyconf);
-
/*********************** transform_conversions.c ********** */
void flushTransIntFrameActionData(TransInfo *t);
@@ -893,18 +905,24 @@ void drawDial3d(const TransInfo *t);
void createTransData(struct bContext *C, TransInfo *t);
void sort_trans_data_dist(TransInfo *t);
void special_aftertrans_update(struct bContext *C, TransInfo *t);
-int special_transform_moving(TransInfo *t);
+int special_transform_moving(TransInfo *t);
void transform_autoik_update(TransInfo *t, short mode);
bool transdata_check_local_islands(TransInfo *t, short around);
-int count_set_pose_transflags(struct Object *ob, const int mode, const short around, bool has_translate_rotate[2]);
+int count_set_pose_transflags(struct Object *ob,
+ const int mode,
+ const short around,
+ bool has_translate_rotate[2]);
/* Auto-keyframe applied after transform, returns true if motion paths need to be updated. */
-void autokeyframe_object(
- struct bContext *C, struct Scene *scene, struct ViewLayer *view_layer, struct Object *ob, int tmode);
+void autokeyframe_object(struct bContext *C,
+ struct Scene *scene,
+ struct ViewLayer *view_layer,
+ struct Object *ob,
+ int tmode);
void autokeyframe_pose(
- struct bContext *C, struct Scene *scene, struct Object *ob, int tmode, short targetless_ik);
+ struct bContext *C, struct Scene *scene, struct Object *ob, int tmode, short targetless_ik);
/* Test if we need to update motion paths for a given object. */
bool motionpath_need_update_object(struct Scene *scene, struct Object *ob);
@@ -923,8 +941,8 @@ void setUserConstraint(TransInfo *t, short orientation, int mode, const char tex
void constraintNumInput(TransInfo *t, float vec[3]);
bool isLockConstraint(TransInfo *t);
-int getConstraintSpaceDimension(TransInfo *t);
-int constraintModeToIndex(const TransInfo *t);
+int getConstraintSpaceDimension(TransInfo *t);
+int constraintModeToIndex(const TransInfo *t);
char constraintModeToChar(const TransInfo *t);
void startConstraint(TransInfo *t);
@@ -939,9 +957,9 @@ void setNearestAxis(TransInfo *t);
/*********************** Snapping ********************************/
typedef enum {
- NO_GEARS = 0,
- BIG_GEARS = 1,
- SMALL_GEARS = 2,
+ NO_GEARS = 0,
+ BIG_GEARS = 1,
+ SMALL_GEARS = 2,
} GearsType;
bool transformModeUseSnap(const TransInfo *t);
@@ -973,35 +991,47 @@ void removeSnapPoint(TransInfo *t);
/********************** Mouse Input ******************************/
typedef enum {
- INPUT_NONE,
- INPUT_VECTOR,
- INPUT_SPRING,
- INPUT_SPRING_FLIP,
- INPUT_SPRING_DELTA,
- INPUT_ANGLE,
- INPUT_ANGLE_SPRING,
- INPUT_TRACKBALL,
- INPUT_HORIZONTAL_RATIO,
- INPUT_HORIZONTAL_ABSOLUTE,
- INPUT_VERTICAL_RATIO,
- INPUT_VERTICAL_ABSOLUTE,
- INPUT_CUSTOM_RATIO,
- INPUT_CUSTOM_RATIO_FLIP,
+ INPUT_NONE,
+ INPUT_VECTOR,
+ INPUT_SPRING,
+ INPUT_SPRING_FLIP,
+ INPUT_SPRING_DELTA,
+ INPUT_ANGLE,
+ INPUT_ANGLE_SPRING,
+ INPUT_TRACKBALL,
+ INPUT_HORIZONTAL_RATIO,
+ INPUT_HORIZONTAL_ABSOLUTE,
+ INPUT_VERTICAL_RATIO,
+ INPUT_VERTICAL_ABSOLUTE,
+ INPUT_CUSTOM_RATIO,
+ INPUT_CUSTOM_RATIO_FLIP,
} MouseInputMode;
-void initMouseInput(TransInfo *t, MouseInput *mi, const float center[2], const int mval[2], const bool precision);
+void initMouseInput(
+ TransInfo *t, MouseInput *mi, const float center[2], const int mval[2], const bool precision);
void initMouseInputMode(TransInfo *t, MouseInput *mi, MouseInputMode mode);
-eRedrawFlag handleMouseInput(struct TransInfo *t, struct MouseInput *mi, const struct wmEvent *event);
-void applyMouseInput(struct TransInfo *t, struct MouseInput *mi, const int mval[2], float output[3]);
+eRedrawFlag handleMouseInput(struct TransInfo *t,
+ struct MouseInput *mi,
+ const struct wmEvent *event);
+void applyMouseInput(struct TransInfo *t,
+ struct MouseInput *mi,
+ const int mval[2],
+ float output[3]);
void setCustomPoints(TransInfo *t, MouseInput *mi, const int start[2], const int end[2]);
void setCustomPointsFromDirection(TransInfo *t, MouseInput *mi, const float dir[2]);
-void setInputPostFct(MouseInput *mi, void (*post)(struct TransInfo *t, float values[3]));
+void setInputPostFct(MouseInput *mi, void (*post)(struct TransInfo *t, float values[3]));
/*********************** Generics ********************************/
-void initTransDataContainers_FromObjectData(TransInfo *t, struct Object *obact, struct Object **objects, uint objects_len);
-void initTransInfo(struct bContext *C, TransInfo *t, struct wmOperator *op, const struct wmEvent *event);
+void initTransDataContainers_FromObjectData(TransInfo *t,
+ struct Object *obact,
+ struct Object **objects,
+ uint objects_len);
+void initTransInfo(struct bContext *C,
+ TransInfo *t,
+ struct wmOperator *op,
+ const struct wmEvent *event);
void freeTransCustomDataForMode(TransInfo *t);
void postTrans(struct bContext *C, TransInfo *t);
void resetTransModal(TransInfo *t);
@@ -1010,7 +1040,7 @@ void resetTransRestrictions(TransInfo *t);
void drawLine(TransInfo *t, const float center[3], const float dir[3], char axis, short options);
/* DRAWLINE options flags */
-#define DRAWLIGHT 1
+#define DRAWLIGHT 1
void applyTransObjects(TransInfo *t);
void restoreTransObjects(TransInfo *t);
@@ -1044,21 +1074,27 @@ void initTransformOrientation(struct bContext *C, TransInfo *t);
bool createSpaceNormal(float mat[3][3], const float normal[3]);
bool createSpaceNormalTangent(float mat[3][3], const float normal[3], const float tangent[3]);
-struct TransformOrientation *addMatrixSpace(struct bContext *C, float mat[3][3],
- const char *name, const bool overwrite);
-bool applyTransformOrientation(const struct TransformOrientation *ts, float r_mat[3][3], char r_name[64]);
+struct TransformOrientation *addMatrixSpace(struct bContext *C,
+ float mat[3][3],
+ const char *name,
+ const bool overwrite);
+bool applyTransformOrientation(const struct TransformOrientation *ts,
+ float r_mat[3][3],
+ char r_name[64]);
enum {
- ORIENTATION_NONE = 0,
- ORIENTATION_NORMAL = 1,
- ORIENTATION_VERT = 2,
- ORIENTATION_EDGE = 3,
- ORIENTATION_FACE = 4,
+ ORIENTATION_NONE = 0,
+ ORIENTATION_NORMAL = 1,
+ ORIENTATION_VERT = 2,
+ ORIENTATION_EDGE = 3,
+ ORIENTATION_FACE = 4,
};
-#define ORIENTATION_USE_PLANE(ty) \
- ELEM(ty, ORIENTATION_NORMAL, ORIENTATION_EDGE, ORIENTATION_FACE)
+#define ORIENTATION_USE_PLANE(ty) ELEM(ty, ORIENTATION_NORMAL, ORIENTATION_EDGE, ORIENTATION_FACE)
-int getTransformOrientation_ex(const struct bContext *C, float normal[3], float plane[3], const short around);
+int getTransformOrientation_ex(const struct bContext *C,
+ float normal[3],
+ float plane[3],
+ const short around);
int getTransformOrientation(const struct bContext *C, float normal[3], float plane[3]);
void freeCustomNormalArray(TransInfo *t, TransDataContainer *tc, TransCustomData *custom_data);
@@ -1071,7 +1107,6 @@ void freeVertSlideTempFaces(VertSlideData *sld);
void freeVertSlideVerts(TransInfo *t, TransDataContainer *tc, TransCustomData *custom_data);
void projectVertSlideData(TransInfo *t, bool is_final);
-
/* TODO. transform_query.c */
bool checkUseAxisMatrix(TransInfo *t);
@@ -1082,16 +1117,19 @@ bool checkUseAxisMatrix(TransInfo *t);
#define TRANS_DATA_CONTAINER_FIRST_OK(t) (&(t)->data_container[0])
/* For cases we _know_ there is only one handle. */
-#define TRANS_DATA_CONTAINER_FIRST_SINGLE(t) (BLI_assert((t)->data_container_len == 1), (&(t)->data_container[0]))
+#define TRANS_DATA_CONTAINER_FIRST_SINGLE(t) \
+ (BLI_assert((t)->data_container_len == 1), (&(t)->data_container[0]))
#define FOREACH_TRANS_DATA_CONTAINER(t, th) \
- for (TransDataContainer *tc = t->data_container, *tc_end = t->data_container + t->data_container_len; \
- th != tc_end; \
- th++)
+ for (TransDataContainer *tc = t->data_container, \
+ *tc_end = t->data_container + t->data_container_len; \
+ th != tc_end; \
+ th++)
#define FOREACH_TRANS_DATA_CONTAINER_INDEX(t, th, i) \
- for (TransDataContainer *tc = ((i = 0), t->data_container), *tc_end = t->data_container + t->data_container_len; \
- th != tc_end; \
- th++, i++)
+ for (TransDataContainer *tc = ((i = 0), t->data_container), \
+ *tc_end = t->data_container + t->data_container_len; \
+ th != tc_end; \
+ th++, i++)
#endif