merge with 2.5 at r18679
[blender.git] / source / blender / editors / transform / transform.h
index a2eb86100bba8b3fbc46a7891e9e9a62b3139bd8..a7017df5439f2d5b7ac4b541b9f586e4761dffc6 100644 (file)
@@ -150,6 +150,14 @@ typedef struct TransDataCurveHandleFlags {
        char *h1, *h2;
 } TransDataCurveHandleFlags;
 
+/* for sequencer transform */
+typedef struct TransDataSeq {
+       struct Sequence *seq;
+       int flag;               /* a copy of seq->flag that may be modified for nested strips */
+       short start_offset; /* use this so we can have transform data at the strips start, but apply correctly to the start frame  */
+       short sel_flag; /* one of SELECT, SEQ_LEFTSEL and SEQ_RIGHTSEL */
+       
+} TransDataSeq;
 
 typedef struct TransData {
        float  dist;         /* Distance needed to affect element (for Proportionnal Editing)                  */
@@ -212,6 +220,7 @@ typedef struct TransInfo {
     short       imval[2];       /* initial mouse position               */
        short       idx_max;            /* maximum index on the input vector    */
        float           snap[3];                /* Snapping Gears                                               */
+       char            frame_side;             /* Mouse side of the cfra, 'L', 'R' or 'B' */
        
        float           viewmat[4][4];  /* copy from G.vd, prevents feedback,   */
        float           viewinv[4][4];  /* and to make sure we don't have to    */
@@ -241,6 +250,7 @@ typedef struct TransInfo {
        struct Scene    *scene;
     short       mval[2];        /* current mouse position               */
     struct Object   *obedit;
+    void               *draw_handle;
 } TransInfo;
 
 
@@ -306,8 +316,7 @@ typedef struct TransInfo {
 #define CON_AXIS2              8
 #define CON_SELECT             16
 #define CON_NOFLIP             32      /* does not reorient vector to face viewport when on */
-#define CON_LOCAL              64
-#define CON_USER               128
+#define CON_USER               64
 
 /* transdata->flag */
 #define TD_SELECTED                    1
@@ -344,7 +353,7 @@ void TFM_OT_transform(struct wmOperatorType *ot);
 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);
+void transformApply(struct bContext *C, TransInfo *t);
 int  transformEnd(struct bContext *C, TransInfo *t);
 
 void setTransformViewMatrices(TransInfo *t);
@@ -352,8 +361,8 @@ void convertViewVec(TransInfo *t, float *vec, short dx, short dy);
 void projectIntView(TransInfo *t, float *vec, int *adr);
 void projectFloatView(TransInfo *t, float *vec, float *adr);
 
-void convertVecToDisplayNum(float *vec, float *num);
-void convertDisplayNumToVec(float *num, float *vec);
+void applyAspectRatio(TransInfo *t, float *vec);
+void removeAspectRatio(TransInfo *t, float *vec);
 
 void initWarp(TransInfo *t);
 int handleEventWarp(TransInfo *t, struct wmEvent *event);
@@ -427,6 +436,9 @@ int Mirror(TransInfo *t, short mval[2]);
 void initAlign(TransInfo *t);
 int Align(TransInfo *t, short mval[2]);
 
+
+void drawPropCircle(TransInfo *t);
+
 /*********************** transform_conversions.c ********** */
 struct ListBase;
 void flushTransGPactionData(TransInfo *t);
@@ -435,11 +447,12 @@ void flushTransUVs(TransInfo *t);
 void flushTransParticles(TransInfo *t);
 int clipUVTransform(TransInfo *t, float *vec, int resize);
 void flushTransNodes(TransInfo *t);
+void flushTransSeq(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]);
 int calc_manipulator_stats(struct ScrArea *sa);
-float get_drawsize(struct View3D *v3d, struct ScrArea *sa, float *co);
+float get_drawsize(struct ARegion *ar, float *co);
 
 /*********************** TransData Creation and General Handling *********** */
 void createTransData(struct bContext *C, TransInfo *t);
@@ -456,6 +469,8 @@ void autokeyframe_pose_cb_func(struct Object *ob, int tmode, short targetless_ik
 
 /*********************** Constraints *****************************/
 
+void drawConstraint(TransInfo *t);
+
 void getConstraintMatrix(TransInfo *t);
 void setConstraint(TransInfo *t, float space[3][3], int mode, const char text[]);
 void setLocalConstraint(TransInfo *t, int mode, const char text[]);
@@ -522,7 +537,7 @@ void initTransInfo(struct bContext *C, TransInfo *t, struct wmEvent *event);
 void postTrans (TransInfo *t);
 void resetTransRestrictions(TransInfo *t);
 
-void drawLine(float *center, float *dir, char axis, short options);
+void drawLine(TransInfo *t, float *center, float *dir, char axis, short options);
 
 TransDataCurveHandleFlags *initTransDataCurveHandes(TransData *td, struct BezTriple *bezt);
 
@@ -571,19 +586,21 @@ int handleNDofInput(NDofInput *n, struct wmEvent *event);
 #define NDOF_CANCEL            4
 
 
-/*********************** TransSpace ******************************/
+/*********************** Transform Orientations ******************************/
+
+void initTransformOrientation(struct bContext *C, TransInfo *t);
 
-int manageObjectSpace(int confirm, int set);
-int manageMeshSpace(int confirm, int set);
-int manageBoneSpace(int confirm, int set);
+int manageObjectSpace(struct bContext *C, int confirm, int set);
+int manageMeshSpace(struct bContext *C, int confirm, int set);
+int manageBoneSpace(struct bContext *C, int confirm, int set);
 
 /* Those two fill in mat and return non-zero on success */
 int createSpaceNormal(float mat[3][3], float normal[3]);
 int createSpaceNormalTangent(float mat[3][3], float normal[3], float tangent[3]);
 
-int addMatrixSpace(float mat[3][3], char name[]);
-int addObjectSpace(struct Object *ob);
-void applyTransformOrientation(void);
+int addMatrixSpace(struct bContext *C, float mat[3][3], char name[]);
+int addObjectSpace(struct bContext *C, struct Object *ob);
+void applyTransformOrientation(struct bContext *C, TransInfo *t);
 
 
 #define ORIENTATION_NONE       0