resolved conflict state with HEAD r14096
[blender-staging.git] / source / blender / makesdna / DNA_userdef_types.h
1 /**
2  * blenkernel/DNA_userdef_types.h (mar-2001 nzc)
3  *
4  *      $Id$
5  *
6  * ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
7  *
8  * This program is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU General Public License
10  * as published by the Free Software Foundation; either version 2
11  * of the License, or (at your option) any later version. The Blender
12  * Foundation also sells licenses for use in proprietary software under
13  * the Blender License.  See http://www.blender.org/BL/ for information
14  * about this.
15  *
16  * This program is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19  * GNU General Public License for more details.
20  *
21  * You should have received a copy of the GNU General Public License
22  * along with this program; if not, write to the Free Software Foundation,
23  * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
24  *
25  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
26  * All rights reserved.
27  *
28  * The Original Code is: all of this file.
29  *
30  * Contributor(s): none yet.
31  *
32  * ***** END GPL/BL DUAL LICENSE BLOCK *****
33 */
34
35 #ifndef DNA_USERDEF_TYPES_H
36 #define DNA_USERDEF_TYPES_H
37
38 #include "DNA_listBase.h"
39 #include "DNA_texture_types.h"
40
41 /* themes; defines in BIF_resource.h */
42 struct ColorBand;
43
44 /* global, button colors */
45 typedef struct ThemeUI {
46         char outline[4];
47         char neutral[4];
48         char action[4];
49         char setting[4];
50         char setting1[4];
51         char setting2[4];
52         char num[4];
53         char textfield[4];
54         char textfield_hi[4];
55         char popup[4];
56         char text[4];
57         char text_hi[4];
58         char menu_back[4];
59         char menu_item[4];
60         char menu_hilite[4];
61         char menu_text[4];
62         char menu_text_hi[4];
63         
64         char but_drawtype;
65         char pad[3];
66         char iconfile[80];      // FILE_MAXFILE length
67 } ThemeUI;
68
69 /* try to put them all in one, if needed a special struct can be created as well
70  * for example later on, when we introduce wire colors for ob types or so...
71  */
72 typedef struct ThemeSpace {
73         char back[4];
74         char text[4];   
75         char text_hi[4];
76         char header[4];
77         char panel[4];
78         
79         char shade1[4];
80         char shade2[4];
81         
82         char hilite[4];
83         char grid[4]; 
84         
85         char wire[4], select[4];
86         char lamp[4];
87         char active[4], group[4], group_active[4], transform[4];
88         char vertex[4], vertex_select[4];
89         char edge[4], edge_select[4];
90         char edge_seam[4], edge_sharp[4], edge_facesel[4];
91         char face[4], face_select[4];   // solid faces
92         char face_dot[4];                               // selected color
93         char normal[4];
94         char bone_solid[4], bone_pose[4];
95         char strip[4], strip_select[4];
96         char cframe[4], pad[4];
97         
98         char vertex_size, facedot_size;
99         char bpad[2]; 
100
101         char syntaxl[4], syntaxn[4], syntaxb[4]; // syntax for textwindow and nodes
102         char syntaxv[4], syntaxc[4];
103         
104         char movie[4], image[4], scene[4], audio[4];            // for sequence editor
105         char effect[4], plugin[4], transition[4], meta[4];
106         char editmesh_active[4]; 
107 } ThemeSpace;
108
109
110 /* set of colors for use as a custom color set for Objects/Bones wire drawing */
111 typedef struct ThemeWireColor {
112         char    solid[4];
113         char    select[4];
114         char    active[4];
115         
116         short   flag;
117         short   pad;
118 } ThemeWireColor; 
119
120 /* flags for ThemeWireColor */
121 #define TH_WIRECOLOR_CONSTCOLS  (1<<0)
122
123 /* A theme */
124 typedef struct bTheme {
125         struct bTheme *next, *prev;
126         char name[32];
127         
128         /* Interface Elements (buttons, menus, icons) */
129         ThemeUI tui;
130         
131         /* Individual Spacetypes */
132         ThemeSpace tbuts;       
133         ThemeSpace tv3d;
134         ThemeSpace tfile;
135         ThemeSpace tipo;
136         ThemeSpace tinfo;       
137         ThemeSpace tsnd;
138         ThemeSpace tact;
139         ThemeSpace tnla;
140         ThemeSpace tseq;
141         ThemeSpace tima;
142         ThemeSpace timasel;
143         ThemeSpace text;
144         ThemeSpace toops;
145         ThemeSpace ttime;
146         ThemeSpace tnode;
147         
148         /* 20 sets of bone colors for this theme */
149         ThemeWireColor tarm[20];
150         /*ThemeWireColor tobj[20];*/
151
152         unsigned char bpad[4], bpad1[4];
153 } bTheme;
154
155 typedef struct SolidLight {
156         int flag, pad;
157         float col[4], spec[4], vec[4];
158 } SolidLight;
159
160 typedef struct UserDef {
161         int flag, dupflag;
162         int savetime;
163         char tempdir[160];      // FILE_MAXDIR length
164         char fontdir[160];
165         char renderdir[160];
166         char textudir[160];
167         char plugtexdir[160];
168         char plugseqdir[160];
169         char pythondir[160];
170         char sounddir[160];
171         /* yafray: temporary xml export directory */
172         char yfexportdir[160];
173         short versions, vrmlflag;       // tmp for export, will be replaced by strubi
174         int gameflags;
175         int wheellinescroll;
176         int uiflag, language;
177         short userpref, viewzoom;
178         short console_buffer;   //console vars here for tuhopuu compat, --phase
179         short console_out;
180         int mixbufsize;
181         int fontsize;
182         short encoding;
183         short transopts;
184         short menuthreshold1, menuthreshold2;
185         char fontname[256];             // FILE_MAXDIR+FILE length
186         struct ListBase themes;
187         short undosteps;
188         short curssize;
189         short tb_leftmouse, tb_rightmouse;
190         struct SolidLight light[3];
191         short tw_hotspot, tw_flag, tw_handlesize, tw_size;
192         int textimeout, texcollectrate;
193         int memcachelimit;
194         int prefetchframes;
195         short frameserverport;
196         short pad_rot_angle;    /*control the rotation step of the view when PAD2,PAD4,PAD6&PAD8 is use*/
197         short obcenter_dia;
198         short rvisize;                  /* rotating view icon size */
199         short rvibright;                /* rotating view icon brightness */
200         short recent_files;             /* maximum number of recently used files to remember  */
201         short smooth_viewtx;    /* miliseconds to spend spinning the view */
202         short glreslimit;
203         short ndof_pan, ndof_rotate;
204 //      short pads[4];
205 //      char pad[8];
206         char versemaster[160];
207         char verseuser[160];
208         float glalphaclip;
209         
210         short autokey_mode;             /* autokeying mode */
211         short autokey_flag;             /* flags for autokeying */
212         
213         struct ColorBand coba_weight;   /* from texture.h */
214 } UserDef;
215
216 extern UserDef U; /* from usiblender.c !!!! */
217
218 /* ***************** USERDEF ****************** */
219
220 /* flag */
221 #define USER_AUTOSAVE                   (1 << 0)
222 #define USER_AUTOGRABGRID               (1 << 1)
223 #define USER_AUTOROTGRID                (1 << 2)
224 #define USER_AUTOSIZEGRID               (1 << 3)
225 #define USER_SCENEGLOBAL                (1 << 4)
226 #define USER_TRACKBALL                  (1 << 5)
227 #define USER_DUPLILINK                  (1 << 6)
228 #define USER_FSCOLLUM                   (1 << 7)
229 #define USER_MAT_ON_OB                  (1 << 8)
230 #define USER_NO_CAPSLOCK                (1 << 9)
231 #define USER_VIEWMOVE                   (1 << 10)
232 #define USER_TOOLTIPS                   (1 << 11)
233 #define USER_TWOBUTTONMOUSE             (1 << 12)
234 #define USER_NONUMPAD                   (1 << 13)
235 #define USER_LMOUSESELECT               (1 << 14)
236 #define USER_FILECOMPRESS               (1 << 15)
237 #define USER_SAVE_PREVIEWS              (1 << 16)
238 #define USER_CUSTOM_RANGE               (1 << 17)
239 #define USER_ADD_EDITMODE               (1 << 18)
240 #define USER_ADD_VIEWALIGNED    (1 << 19)
241 #define USER_RELPATHS                   (1 << 20)
242 #define USER_DRAGIMMEDIATE                      (1 << 21)
243
244 /* viewzom */
245 #define USER_ZOOM_CONT                  0
246 #define USER_ZOOM_SCALE                 1
247 #define USER_ZOOM_DOLLY                 2
248
249 /* uiflag */
250 // old flag for #define USER_KEYINSERTACT               (1 << 0)
251 // old flag for #define USER_KEYINSERTOBJ               (1 << 1)
252 #define USER_WHEELZOOMDIR               (1 << 2)
253 #define USER_FILTERFILEEXTS             (1 << 3)
254 #define USER_DRAWVIEWINFO               (1 << 4)
255 #define USER_PLAINMENUS                 (1 << 5)                // old EVTTOCONSOLE print ghost events, here for tuhopuu compat. --phase
256                                                                 // old flag for hide pulldown was here 
257 #define USER_FLIPFULLSCREEN             (1 << 7)
258 #define USER_ALLWINCODECS               (1 << 8)
259 #define USER_MENUOPENAUTO               (1 << 9)
260 #define USER_PANELPINNED                (1 << 10)
261 #define USER_AUTOPERSP                  (1 << 11)
262 #define USER_LOCKAROUND         (1 << 12)
263 #define USER_GLOBALUNDO         (1 << 13)
264 #define USER_ORBIT_SELECTION    (1 << 14)
265 // old flag for #define USER_KEYINSERTAVAI              (1 << 15)
266 #define USER_HIDE_DOT                   (1 << 16)
267 #define USER_SHOW_ROTVIEWICON   (1 << 17)
268 #define USER_SHOW_VIEWPORTNAME  (1 << 18)
269 // old flag for #define USER_KEYINSERTNEED              (1 << 19)
270 #define USER_ZOOM_TO_MOUSEPOS   (1 << 20)
271 #define USER_SHOW_FPS                   (1 << 21)
272 #define USER_MMB_PASTE                  (1 << 22)
273
274 /* Auto-Keying mode */
275         /* AUTOKEY_ON is a bitflag */
276 #define         AUTOKEY_ON                              1
277         /* AUTOKEY_ON + 2**n...  (i.e. AUTOKEY_MODE_NORMAL = AUTOKEY_ON + 2) to preserve setting, even when autokey turned off  */
278 #define         AUTOKEY_MODE_NORMAL             3
279 #define         AUTOKEY_MODE_EDITKEYS   5
280
281 /* Auto-Keying flag */
282 #define         AUTOKEY_FLAG_INSERTAVAIL        (1<<0)
283 #define         AUTOKEY_FLAG_INSERTNEEDED       (1<<1)
284 #define         AUTOKEY_FLAG_AUTOMATKEY         (1<<2)
285
286 /* Auto-Keying macros */
287 #define IS_AUTOKEY_ON                   (U.autokey_mode & AUTOKEY_ON)
288 #define IS_AUTOKEY_MODE(mode)   (U.autokey_mode == AUTOKEY_MODE_##mode)
289 #define IS_AUTOKEY_FLAG(flag)   (U.autokey_flag == AUTOKEY_FLAG_##flag)
290
291 /* transopts */
292 #define USER_TR_TOOLTIPS                (1 << 0)
293 #define USER_TR_BUTTONS                 (1 << 1)
294 #define USER_TR_MENUS                   (1 << 2)
295 #define USER_TR_FILESELECT              (1 << 3)
296 #define USER_TR_TEXTEDIT                (1 << 4)
297 #define USER_DOTRANSLATE                (1 << 5)
298 #define USER_USETEXTUREFONT             (1 << 6)
299 #define CONVERT_TO_UTF8                 (1 << 7)
300
301 /* dupflag */
302 #define USER_DUP_MESH                   (1 << 0)
303 #define USER_DUP_CURVE                  (1 << 1)
304 #define USER_DUP_SURF                   (1 << 2)
305 #define USER_DUP_FONT                   (1 << 3)
306 #define USER_DUP_MBALL                  (1 << 4)
307 #define USER_DUP_LAMP                   (1 << 5)
308 #define USER_DUP_IPO                    (1 << 6)
309 #define USER_DUP_MAT                    (1 << 7)
310 #define USER_DUP_TEX                    (1 << 8)
311 #define USER_DUP_ARM                    (1 << 9)
312 #define USER_DUP_ACT                    (1 << 10)
313
314 /* gameflags */
315 #define USER_VERTEX_ARRAYS              1
316 #define USER_DISABLE_SOUND              2
317 #define USER_DISABLE_MIPMAP             4
318
319 /* vrml flag */
320 #define USER_VRML_LAYERS                1
321 #define USER_VRML_AUTOSCALE             2
322 #define USER_VRML_TWOSIDED              4
323
324 /* tw_flag (transform widget) */
325
326
327 #endif