284e2ab60a8993436277680bc1ee36370866da88
[blender.git] / source / blender / editors / include / BIF_transform.h
1 /**
2  * $Id$
3  *
4  * ***** BEGIN GPL LICENSE BLOCK *****
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public License
8  * as published by the Free Software Foundation; either version 2
9  * of the License, or (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software Foundation,
18  * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
19  *
20  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
21  * All rights reserved.
22  *
23  * The Original Code is: all of this file.
24  *
25  * Contributor(s): none yet.
26  *
27  * ***** END GPL LICENSE BLOCK *****
28  */
29
30 #ifndef BIF_TRANSFORM_H
31 #define BIF_TRANSFORM_H
32
33 /* ******************* Registration Function ********************** */
34
35 struct wmWindowManager;
36 struct ListBase;
37 struct wmEvent;
38 struct bContext;
39 struct Object;
40
41 void transform_keymap_for_space(struct wmWindowManager *wm, struct ListBase *keymap, int spaceid);
42 void transform_operatortypes(void);
43
44 /* ******************** Macros & Prototypes *********************** */
45
46 /* MODE AND NUMINPUT FLAGS */
47 enum {
48         TFM_INIT = -1,
49         TFM_DUMMY,
50         TFM_TRANSLATION,
51         TFM_ROTATION,
52         TFM_RESIZE,
53         TFM_TOSPHERE,
54         TFM_SHEAR,
55         TFM_WARP,
56         TFM_SHRINKFATTEN,
57         TFM_TILT,
58         TFM_LAMP_ENERGY,
59         TFM_TRACKBALL,
60         TFM_PUSHPULL,
61         TFM_CREASE,
62         TFM_MIRROR,
63         TFM_BONESIZE,
64         TFM_BONE_ENVELOPE,
65         TFM_CURVE_SHRINKFATTEN,
66         TFM_BONE_ROLL,
67         TFM_TIME_TRANSLATE,
68         TFM_TIME_SLIDE,
69         TFM_TIME_SCALE,
70         TFM_TIME_EXTEND,
71         TFM_BAKE_TIME,
72         TFM_BEVEL,
73         TFM_BWEIGHT,
74         TFM_ALIGN
75 } TfmMode;
76
77 /* TRANSFORM CONTEXTS */
78 #define CTX_NONE                        0
79 #define CTX_TEXTURE                     1
80 #define CTX_EDGE                        2
81 #define CTX_NO_PET                      4
82 #define CTX_TWEAK                       8
83 #define CTX_NO_MIRROR           16
84 #define CTX_AUTOCONFIRM         32
85 #define CTX_BMESH                       64
86 #define CTX_NDOF                        128
87
88 /* Standalone call to get the transformation center corresponding to the current situation
89  * returns 1 if successful, 0 otherwise (usually means there's no selection)
90  * (if 0 is returns, *vec is unmodified) 
91  * */
92 int calculateTransformCenter(struct bContext *C, struct wmEvent *event, int centerMode, float *vec);
93
94 struct TransInfo;
95 struct ScrArea;
96 struct Base;
97 struct Scene;
98
99 struct TransInfo * BIF_GetTransInfo(void);
100 void BIF_setSingleAxisConstraint(float vec[3], char *text);
101 void BIF_setDualAxisConstraint(float vec1[3], float vec2[3], char *text);
102 void BIF_setLocalAxisConstraint(char axis, char *text);
103 void BIF_setLocalLockConstraint(char axis, char *text);
104
105 int BIF_snappingSupported(struct Object *obedit);
106
107 struct TransformOrientation;
108
109 void BIF_clearTransformOrientation(void);
110 void BIF_removeTransformOrientation(struct TransformOrientation *ts);
111 void BIF_manageTransformOrientation(int confirm, int set);
112 int BIF_menuselectTransformOrientation(void);
113 void BIF_selectTransformOrientation(struct TransformOrientation *ts);
114 void BIF_selectTransformOrientationFromIndex(int index);
115
116 char * BIF_menustringTransformOrientation(char *title); /* the returned value was allocated and needs to be freed after use */
117 int BIF_countTransformOrientation();
118
119 /* Drawing callbacks */
120 void BIF_drawConstraint(void);
121 void BIF_drawPropCircle(void);
122 void BIF_drawSnap(void);
123
124 void BIF_getPropCenter(float *center);
125
126 void BIF_TransformSetUndo(char *str);
127
128 void BIF_selectOrientation(void);
129
130 /* view3d manipulators */
131 void initManipulator(int mode);
132 void ManipulatorTransform();
133
134 //int BIF_do_manipulator(struct ScrArea *sa);
135 //void BIF_draw_manipulator(struct ScrArea *sa);
136
137 #endif
138