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