2.5 / Nodes / Transformations
[blender.git] / source / blender / editors / transform / transform.h
index dc7949ed0ab4e2a3d02c9b054a45b15e0b80852e..806afa8e624978598ab362191fb2c990d57f5cb9 100644 (file)
@@ -46,6 +46,7 @@ struct bPose;
 struct bConstraint;
 struct BezTriple;
 struct wmOperatorType;
+struct wmOperator;
 struct bContext;
 struct wmEvent;
 struct ARegion;
@@ -77,6 +78,7 @@ typedef struct NumInput {
 typedef struct TransSnap {
        short   modePoint;
        short   modeTarget;
+       int             mode;
        int     status;
        float   snapPoint[3];
        float   snapTarget[3];
@@ -186,6 +188,7 @@ typedef struct MouseInput {
 typedef struct TransInfo {
     int         mode;           /* current mode                         */
     int                flag;           /* generic flags for special behaviors  */
+    int                        modifiers;              /* special modifiers, by function, not key */
        short           state;                  /* current state (running, canceled,...)*/
     int         options;        /* current context/options for transform                      */
     float       val;            /* init value for some transformations (and rotation angle)  */
@@ -238,8 +241,8 @@ typedef struct TransInfo {
        struct ScrArea  *sa;
        struct ARegion  *ar;
        struct Scene    *scene;
-       struct wmEvent  *event; /* last event, reset at the start of each transformApply and nulled at the transformEnd */
-    short       mval[2];       /* current mouse position               */
+    short       mval[2];        /* current mouse position               */
+    struct Object   *obedit;
 } TransInfo;
 
 
@@ -280,9 +283,6 @@ typedef struct TransInfo {
 #define T_PROP_EDIT                    (1 << 11)
 #define T_PROP_CONNECTED       (1 << 12)
 
-       /* if MMB is pressed or not */
-#define        T_MMB_PRESSED           (1 << 13)
-
 #define T_V3D_ALIGN                    (1 << 14)
        /* for 2d views like uv or ipo */
 #define T_2D_EDIT                      (1 << 15) 
@@ -292,6 +292,13 @@ typedef struct TransInfo {
        /* auto-ik is on */
 #define T_AUTOIK                       (1 << 18)
 
+/* TransInfo->modifiers */
+#define        MOD_CONSTRAINT_SELECT   0x01
+#define        MOD_PRECISION                   0x02
+#define        MOD_SNAP_GEARS                  0x04
+#define        MOD_CONSTRAINT_PLANE    0x08
+
+
 /* ******************************************************************************** */
 
 /* transinfo->con->mode */
@@ -340,10 +347,11 @@ typedef struct TransInfo {
 
 void TFM_OT_transform(struct wmOperatorType *ot);
 
-void initTransform(struct bContext *C, struct TransInfo *t, int mode, int context, struct wmEvent *event);
+void initTransform(struct bContext *C, struct TransInfo *t, struct wmOperator *op, struct wmEvent *event);
+void saveTransform(struct bContext *C, struct TransInfo *t, struct wmOperator *op);
 void transformEvent(TransInfo *t, struct wmEvent *event);
 void transformApply(TransInfo *t);
-int  transformEnd(TransInfo *t);
+int  transformEnd(struct bContext *C, TransInfo *t);
 
 void setTransformViewMatrices(TransInfo *t);
 void convertViewVec(TransInfo *t, float *vec, short dx, short dy);
@@ -432,6 +440,7 @@ void flushTransIpoData(TransInfo *t);
 void flushTransUVs(TransInfo *t);
 void flushTransParticles(TransInfo *t);
 int clipUVTransform(TransInfo *t, float *vec, int resize);
+void flushTransNodes(TransInfo *t);
 
 /*********************** exported from transform_manipulator.c ********** */
 void draw_manipulator_ext(struct ScrArea *sa, int type, char axis, int col, float vec[3], float mat[][3]);
@@ -530,6 +539,7 @@ TransDataCurveHandleFlags *initTransDataCurveHandes(TransData *td, struct BezTri
 
 void applyTransObjects(TransInfo *t);
 void restoreTransObjects(TransInfo *t);
+void restoreTransNodes(TransInfo *t);
 void recalcData(TransInfo *t);
 
 void calculateCenter(TransInfo *t);