2.5 / Nodes / Transformations
[blender.git] / source / blender / editors / transform / transform.h
index abbf5e93e020f43fbcc4b52bd1c83fb9099aff57..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,7 +241,6 @@ 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               */
     struct Object   *obedit;
 } TransInfo;
@@ -281,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) 
@@ -293,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 */
@@ -341,7 +347,8 @@ 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(struct bContext *C, TransInfo *t);
@@ -426,9 +433,6 @@ int Mirror(TransInfo *t, short mval[2]);
 void initAlign(TransInfo *t);
 int Align(TransInfo *t, short mval[2]);
 
-void initNodeTranslate(TransInfo *t);
-int NodeTranslate(TransInfo *t, short mval[2]);
-
 /*********************** transform_conversions.c ********** */
 struct ListBase;
 void flushTransGPactionData(TransInfo *t);
@@ -436,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]);