svn merge -r 13148:13177 https://svn.blender.org/svnroot/bf-blender/trunk/blender...
[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/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
68 } ThemeUI;
69
70 /* try to put them all in one, if needed a special struct can be created as well
71  * for example later on, when we introduce wire colors for ob types or so...
72  */
73 typedef struct ThemeSpace {
74         char back[4];
75         char text[4];   
76         char text_hi[4];
77         char header[4];
78         char panel[4];
79         
80         char shade1[4];
81         char shade2[4];
82         
83         char hilite[4];
84         char grid[4]; 
85         
86         char wire[4], select[4];
87         char lamp[4];
88         char active[4], group[4], group_active[4], transform[4];
89         char vertex[4], vertex_select[4];
90         char edge[4], edge_select[4];
91         char edge_seam[4], edge_sharp[4], edge_facesel[4];
92         char face[4], face_select[4];   // solid faces
93         char face_dot[4];                               // selected color
94         char normal[4];
95         char bone_solid[4], bone_pose[4];
96         char strip[4], strip_select[4];
97         char cframe[4], pad[4];
98         
99         char vertex_size, facedot_size;
100         char bpad[2]; 
101
102         char syntaxl[4], syntaxn[4], syntaxb[4]; // syntax for textwindow and nodes
103         char syntaxv[4], syntaxc[4];
104         
105         char movie[4], image[4], scene[4], audio[4];            // for sequence editor
106         char effect[4], plugin[4], transition[4], meta[4];
107         char editmesh_active[4]; 
108 } ThemeSpace;
109
110 /* set of colors for use as a custom color set for Objects/Bones wire drawing */
111 typedef struct ThemeWireColor {
112         char    unselected[3];
113         char    selected[3];
114         char    active[3];
115         char    pad[7];
116 } ThemeWireColor; 
117
118 /* A theme */
119 typedef struct bTheme {
120         struct bTheme *next, *prev;
121         char name[32];
122         
123         /* Interface Elements (buttons, menus, icons) */
124         ThemeUI tui;
125         
126         /* Individual Spacetypes */
127         ThemeSpace tbuts;       
128         ThemeSpace tv3d;
129         ThemeSpace tfile;
130         ThemeSpace tipo;
131         ThemeSpace tinfo;       
132         ThemeSpace tsnd;
133         ThemeSpace tact;
134         ThemeSpace tnla;
135         ThemeSpace tseq;
136         ThemeSpace tima;
137         ThemeSpace timasel;
138         ThemeSpace text;
139         ThemeSpace toops;
140         ThemeSpace ttime;
141         ThemeSpace tnode;
142         
143         /* 20 sets of bone colors for this theme */
144         ThemeWireColor tarm[20];
145         /*ThemeWireColor tobj[20];*/
146
147         unsigned char bpad[4], bpad1[4];
148 } bTheme;
149
150 typedef struct SolidLight {
151         int flag, pad;
152         float col[4], spec[4], vec[4];
153 } SolidLight;
154
155 typedef struct UserDef {
156         int flag, dupflag;
157         int savetime;
158         char tempdir[160];      // FILE_MAXDIR length
159         char fontdir[160];
160         char renderdir[160];
161         char textudir[160];
162         char plugtexdir[160];
163         char plugseqdir[160];
164         char pythondir[160];
165         char sounddir[160];
166         /* yafray: temporary xml export directory */
167         char yfexportdir[160];
168         short versions, vrmlflag;       // tmp for export, will be replaced by strubi
169         int gameflags;
170         int wheellinescroll;
171         int uiflag, language;
172         short userpref, viewzoom;
173         short console_buffer;   //console vars here for tuhopuu compat, --phase
174         short console_out;
175         int mixbufsize;
176         int fontsize;
177         short encoding;
178         short transopts;
179         short menuthreshold1, menuthreshold2;
180         char fontname[256];             // FILE_MAXDIR+FILE length
181         struct ListBase themes;
182         short undosteps;
183         short curssize;
184         short tb_leftmouse, tb_rightmouse;
185         struct SolidLight light[3];
186         short tw_hotspot, tw_flag, tw_handlesize, tw_size;
187         int textimeout, texcollectrate;
188         int memcachelimit;
189         int prefetchframes;
190         short frameserverport;
191         short pad_rot_angle;    /*control the rotation step of the view when PAD2,PAD4,PAD6&PAD8 is use*/
192         short obcenter_dia;
193         short rvisize;                  /* rotating view icon size */
194         short rvibright;                /* rotating view icon brightness */
195         short recent_files;             /* maximum number of recently used files to remember  */
196         short smooth_viewtx;    /* miliseconds to spend spinning the view */
197         short glreslimit;
198         char versemaster[160];
199         char verseuser[160];
200         float glalphaclip, pad;
201         
202         struct ColorBand coba_weight;   /* from texture.h */
203 } UserDef;
204
205 extern UserDef U; /* from usiblender.c !!!! */
206
207 /* ***************** USERDEF ****************** */
208
209 /* flag */
210 #define USER_AUTOSAVE                   (1 << 0)
211 #define USER_AUTOGRABGRID               (1 << 1)
212 #define USER_AUTOROTGRID                (1 << 2)
213 #define USER_AUTOSIZEGRID               (1 << 3)
214 #define USER_SCENEGLOBAL                (1 << 4)
215 #define USER_TRACKBALL                  (1 << 5)
216 #define USER_DUPLILINK                  (1 << 6)
217 #define USER_FSCOLLUM                   (1 << 7)
218 #define USER_MAT_ON_OB                  (1 << 8)
219 #define USER_NO_CAPSLOCK                (1 << 9)
220 #define USER_VIEWMOVE                   (1 << 10)
221 #define USER_TOOLTIPS                   (1 << 11)
222 #define USER_TWOBUTTONMOUSE             (1 << 12)
223 #define USER_NONUMPAD                   (1 << 13)
224 #define USER_LMOUSESELECT               (1 << 14)
225 #define USER_FILECOMPRESS               (1 << 15)
226 #define USER_SAVE_PREVIEWS              (1 << 16)
227 #define USER_CUSTOM_RANGE               (1 << 17)
228 #define USER_ADD_EDITMODE               (1 << 18)
229 #define USER_ADD_VIEWALIGNED    (1 << 19)
230 #define USER_ADD_VIEWALIGNED    (1 << 19)
231
232
233 /* viewzom */
234 #define USER_ZOOM_CONT                  0
235 #define USER_ZOOM_SCALE                 1
236 #define USER_ZOOM_DOLLY                 2
237
238 /* uiflag */
239
240 #define USER_KEYINSERTACT               (1 << 0)
241 #define USER_KEYINSERTOBJ               (1 << 1)
242 #define USER_WHEELZOOMDIR               (1 << 2)
243 #define USER_FILTERFILEEXTS             (1 << 3)
244 #define USER_DRAWVIEWINFO               (1 << 4)
245 #define USER_PLAINMENUS                 (1 << 5)                // old EVTTOCONSOLE print ghost events, here for tuhopuu compat. --phase
246                                                                 // old flag for hide pulldown was here 
247 #define USER_FLIPFULLSCREEN             (1 << 7)
248 #define USER_ALLWINCODECS               (1 << 8)
249 #define USER_MENUOPENAUTO               (1 << 9)
250 #define USER_PANELPINNED                (1 << 10)
251 #define USER_AUTOPERSP                  (1 << 11)
252 #define USER_LOCKAROUND         (1 << 12)
253 #define USER_GLOBALUNDO         (1 << 13)
254 #define USER_ORBIT_SELECTION    (1 << 14)
255 #define USER_KEYINSERTAVAI              (1 << 15)
256 #define USER_HIDE_DOT                   (1 << 16)
257 #define USER_SHOW_ROTVIEWICON   (1 << 17)
258 #define USER_SHOW_VIEWPORTNAME  (1 << 18)
259 #define USER_KEYINSERTNEED              (1 << 19)
260 #define USER_ZOOM_TO_MOUSEPOS   (1 << 20)
261 #define USER_SHOW_FPS   (1 << 21)
262 #define USER_UNDOSAVE   (1 << 22) // flag to signal a write_undo() call after a save (save on exit needed then)  
263
264 /* transopts */
265
266 #define USER_TR_TOOLTIPS                (1 << 0)
267 #define USER_TR_BUTTONS                 (1 << 1)
268 #define USER_TR_MENUS                   (1 << 2)
269 #define USER_TR_FILESELECT              (1 << 3)
270 #define USER_TR_TEXTEDIT                (1 << 4)
271 #define USER_DOTRANSLATE                (1 << 5)
272 #define USER_USETEXTUREFONT             (1 << 6)
273 #define CONVERT_TO_UTF8                 (1 << 7)
274
275 /* dupflag */
276
277 #define USER_DUP_MESH                   (1 << 0)
278 #define USER_DUP_CURVE                  (1 << 1)
279 #define USER_DUP_SURF                   (1 << 2)
280 #define USER_DUP_FONT                   (1 << 3)
281 #define USER_DUP_MBALL                  (1 << 4)
282 #define USER_DUP_LAMP                   (1 << 5)
283 #define USER_DUP_IPO                    (1 << 6)
284 #define USER_DUP_MAT                    (1 << 7)
285 #define USER_DUP_TEX                    (1 << 8)
286 #define USER_DUP_ARM                    (1 << 9)
287 #define USER_DUP_ACT                    (1 << 10)
288
289 /* gameflags */
290
291 #define USER_VERTEX_ARRAYS              1
292 #define USER_DISABLE_SOUND              2
293 #define USER_DISABLE_MIPMAP             4
294
295 /* vrml flag */
296
297 #define USER_VRML_LAYERS                1
298 #define USER_VRML_AUTOSCALE             2
299 #define USER_VRML_TWOSIDED              4
300
301 /* tw_flag (transform widget) */
302
303
304 #endif