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:
authorGermano Cavalcante <germano.costa@ig.com.br>2020-06-08 00:36:01 +0300
committerGermano Cavalcante <germano.costa@ig.com.br>2020-06-08 14:23:37 +0300
commit335c1e48ee5b3008fbae48b7de4d0f2b6b2f30b9 (patch)
treeb66bf96d4614aa78cffb7c712ff03d3df16cdd77 /source/blender/editors/transform/transform.h
parent4f4141c8f45e20834fb32fb3e5f33105269cb092 (diff)
Cleanup: Create a header for TransData declarations
Diffstat (limited to 'source/blender/editors/transform/transform.h')
-rw-r--r--source/blender/editors/transform/transform.h171
1 files changed, 3 insertions, 168 deletions
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,