From 335c1e48ee5b3008fbae48b7de4d0f2b6b2f30b9 Mon Sep 17 00:00:00 2001 From: Germano Cavalcante Date: Sun, 7 Jun 2020 18:36:01 -0300 Subject: Cleanup: Create a header for TransData declarations --- source/blender/editors/transform/transform.h | 171 +-------------------------- 1 file changed, 3 insertions(+), 168 deletions(-) (limited to 'source/blender/editors/transform/transform.h') diff --git a/source/blender/editors/transform/transform.h b/source/blender/editors/transform/transform.h index d400d7fffb9..cf8698ab0e8 100644 --- a/source/blender/editors/transform/transform.h +++ b/source/blender/editors/transform/transform.h @@ -31,14 +31,16 @@ #include "RE_engine.h" #include "DNA_listBase.h" +#include "DNA_object_enums.h" #include "DEG_depsgraph.h" +#include "transform_data.h" + /* ************************** Types ***************************** */ struct ARegion; struct Depsgraph; -struct EditBone; struct NumInput; struct Object; struct RNG; @@ -46,21 +48,17 @@ struct ReportList; struct Scene; struct ScrArea; struct SnapObjectContext; -struct TransData; struct TransDataContainer; struct TransInfo; struct TransSnap; struct TransformOrientation; struct ViewLayer; -struct bConstraint; struct bContext; struct wmEvent; struct wmKeyConfig; struct wmKeyMap; struct wmTimer; -#include "DNA_object_enums.h" - /* transinfo->redraw */ typedef enum { TREDRAW_NOTHING = 0, @@ -148,127 +146,6 @@ typedef struct TransCon { 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; -} 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]; -} TransData2D; - -/** - * Used to store 2 handles for each #TransData in case the other handle wasn't selected. - * Also to unset temporary flags. - */ -typedef struct TransDataCurveHandleFlags { - char ih1, ih2; - char *h1, *h2; -} TransDataCurveHandleFlags; - -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; -} TransData; - -typedef struct TransDataMirror { - /** location of mirrored reference data. */ - const float *loc_src; - /** Location of the data to transform. */ - float *loc_dst; - void *extra; - /* `sign` can be -2, -1, 0 or 1. */ - int sign_x : 2; - int sign_y : 2; - int sign_z : 2; -} TransDataMirror; - 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]); @@ -658,44 +535,6 @@ enum { CON_USER = 1 << 6, }; -/** #TransData.flag */ -enum { - TD_SELECTED = 1 << 0, - TD_USEQUAT = 1 << 1, - TD_NOTCONNECTED = 1 << 2, - /** Used for scaling of #MetaElem.rad */ - TD_SINGLESIZE = 1 << 3, - /** Scale relative to individual element center */ - TD_INDIVIDUAL_SCALE = 1 << 4, - TD_NOCENTER = 1 << 5, - /** #TransData.ext abused for particle key timing. */ - TD_NO_EXT = 1 << 6, - /** don't transform this data */ - TD_SKIP = 1 << 7, - /** if this is a bez triple, we need to restore the handles, - * if this is set #TransData.hdata needs freeing */ - TD_BEZTRIPLE = 1 << 8, - /** when this is set, don't apply translation changes to this element */ - TD_NO_LOC = 1 << 9, - /** For Graph Editor autosnap, indicates that point should not undergo autosnapping */ - TD_NOTIMESNAP = 1 << 10, - /** For Graph Editor - curves that can only have int-values - * need their keyframes tagged with this. */ - TD_INTVALUES = 1 << 11, - /** For editmode mirror, clamp axis to 0 */ - TD_MIRROR_EDGE_X = 1 << 12, - TD_MIRROR_EDGE_Y = 1 << 13, - TD_MIRROR_EDGE_Z = 1 << 14, - /** For fcurve handles, move them along with their keyframes */ - TD_MOVEHANDLE1 = 1 << 15, - TD_MOVEHANDLE2 = 1 << 16, - /** 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 << 17, - /** Same as above but for a child bone. */ - TD_PBONE_LOCAL_MTX_C = 1 << 18, -}; - /** #TransSnap.status */ enum { SNAP_FORCED = 1 << 0, @@ -741,10 +580,6 @@ enum { TFM_MODAL_INSERTOFS_TOGGLE_DIR = 27, }; -/* 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, -- cgit v1.2.3