ae01536eebe23ff8af4b05dcd9957124e0a31843
[blender.git] / source / blender / makesdna / DNA_userdef_types.h
1 /*
2  * ***** BEGIN GPL LICENSE BLOCK *****
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public License
6  * as published by the Free Software Foundation; either version 2
7  * of the License, or (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software Foundation,
16  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17  *
18  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
19  * All rights reserved.
20  *
21  * The Original Code is: all of this file.
22  *
23  * Contributor(s): none yet.
24  *
25  * ***** END GPL LICENSE BLOCK *****
26  */
27
28 /** \file DNA_userdef_types.h
29  *  \ingroup DNA
30  *  \since mar-2001
31  *  \author nzc
32  */
33
34 #ifndef __DNA_USERDEF_TYPES_H__
35 #define __DNA_USERDEF_TYPES_H__
36
37 #include "DNA_listBase.h"
38 #include "DNA_texture_types.h" /* ColorBand */
39
40 #ifdef __cplusplus
41 extern "C" {
42 #endif
43
44 /* themes; defines in BIF_resource.h */
45 struct ColorBand;
46
47 /* ************************ style definitions ******************** */
48
49 #define MAX_STYLE_NAME  64
50
51 /* default uifont_id offered by Blender */
52 typedef enum eUIFont_ID {
53         UIFONT_DEFAULT  = 0,
54 /*      UIFONT_BITMAP   = 1 */ /* UNUSED */
55         
56         /* free slots */
57         UIFONT_CUSTOM1  = 2,
58         UIFONT_CUSTOM2  = 3
59 } eUIFont_ID;
60
61 /* default fonts to load/initalize */
62 /* first font is the default (index 0), others optional */
63 typedef struct uiFont {
64         struct uiFont *next, *prev;
65         char filename[1024];/* 1024 = FILE_MAX */
66         short blf_id;           /* from blfont lib */
67         short uifont_id;        /* own id */
68         short r_to_l;           /* fonts that read from left to right */
69         short hinting;
70 } uiFont;
71
72 /* this state defines appearance of text */
73 typedef struct uiFontStyle {
74         short uifont_id;                /* saved in file, 0 is default */
75         short points;                   /* actual size depends on 'global' dpi */
76         short kerning;                  /* unfitted or default kerning value. */
77         char pad[6];
78         short italic, bold;             /* style hint */
79         short shadow;                   /* value is amount of pixels blur */
80         short shadx, shady;             /* shadow offset in pixels */
81         short align;                    /* text align hint */
82         float shadowalpha;              /* total alpha */
83         float shadowcolor;              /* 1 value, typically white or black anyway */
84 } uiFontStyle;
85
86 /* uiFontStyle->align */
87 typedef enum eFontStyle_Align {
88         UI_STYLE_TEXT_LEFT              = 0,
89         UI_STYLE_TEXT_CENTER    = 1,
90         UI_STYLE_TEXT_RIGHT             = 2
91 } eFontStyle_Align;
92
93
94 /* this is fed to the layout engine and widget code */
95
96 typedef struct uiStyle {
97         struct uiStyle *next, *prev;
98         
99         char name[64];                  /* MAX_STYLE_NAME */
100         
101         uiFontStyle paneltitle;
102         uiFontStyle grouplabel;
103         uiFontStyle widgetlabel;
104         uiFontStyle widget;
105         
106         float panelzoom;
107         
108         short minlabelchars;    /* in characters */
109         short minwidgetchars;   /* in characters */
110
111         short columnspace;
112         short templatespace;
113         short boxspace;
114         short buttonspacex;
115         short buttonspacey;
116         short panelspace;
117         short panelouter;
118
119         short pad;
120 } uiStyle;
121
122 typedef struct uiWidgetColors {
123         char outline[4];
124         char inner[4];
125         char inner_sel[4];
126         char item[4];
127         char text[4];
128         char text_sel[4];
129         short shaded;
130         short shadetop, shadedown;
131         short alpha_check;
132 } uiWidgetColors;
133
134 typedef struct uiWidgetStateColors {
135         char inner_anim[4];
136         char inner_anim_sel[4];
137         char inner_key[4];
138         char inner_key_sel[4];
139         char inner_driven[4];
140         char inner_driven_sel[4];
141         float blend, pad;
142 } uiWidgetStateColors;
143
144 typedef struct uiPanelColors {
145         char header[4];
146         char back[4];
147         short show_header;
148         short show_back;
149         int pad;
150 } uiPanelColors;
151
152 typedef struct uiGradientColors {
153         char gradient[4];
154         char high_gradient[4];
155         int show_grad;
156         int pad2;
157 } uiGradientColors;
158
159 typedef struct ThemeUI {
160         /* Interface Elements (buttons, menus, icons) */
161         uiWidgetColors wcol_regular, wcol_tool, wcol_text;
162         uiWidgetColors wcol_radio, wcol_option, wcol_toggle;
163         uiWidgetColors wcol_num, wcol_numslider;
164         uiWidgetColors wcol_menu, wcol_pulldown, wcol_menu_back, wcol_menu_item, wcol_tooltip;
165         uiWidgetColors wcol_box, wcol_scroll, wcol_progress, wcol_list_item;
166         
167         uiWidgetStateColors wcol_state;
168
169         uiPanelColors panel; /* depricated, but we keep it for do_versions (2.66.1) */
170
171         /* fac: 0 - 1 for blend factor, width in pixels */
172         float menu_shadow_fac;
173         short menu_shadow_width;
174         
175         short pad;
176         
177         char iconfile[256];     // FILE_MAXFILE length
178         float icon_alpha;
179
180         /* Axis Colors */
181         char xaxis[4], yaxis[4], zaxis[4];
182 } ThemeUI;
183
184 /* try to put them all in one, if needed a special struct can be created as well
185  * for example later on, when we introduce wire colors for ob types or so...
186  */
187 typedef struct ThemeSpace {
188         /* main window colors */
189         char back[4];
190         char title[4];  /* panel title */
191         char text[4];
192         char text_hi[4];
193         
194         /* header colors */
195         char header[4];                 /* region background */
196         char header_title[4];   /* unused */
197         char header_text[4];
198         char header_text_hi[4];
199
200         /* button/tool regions */
201         char button[4];                 /* region background */
202         char button_title[4];   /* panel title */
203         char button_text[4];
204         char button_text_hi[4];
205         
206         /* listview regions */
207         char list[4];                   /* region background */
208         char list_title[4];     /* panel title */
209         char list_text[4];
210         char list_text_hi[4];
211         
212         /* float panel */
213 /*      char panel[4];                  unused */
214 /*      char panel_title[4];    unused */
215 /*      char panel_text[4];             unused */
216 /*      char panel_text_hi[4];  unused */
217         
218         /* note, cannot use name 'panel' because of DNA mapping old files */
219         uiPanelColors panelcolors;
220
221         uiGradientColors gradients;
222
223         char shade1[4];
224         char shade2[4];
225         
226         char hilite[4];
227         char grid[4]; 
228         
229         char wire[4], wire_edit[4], select[4];
230         char lamp[4], speaker[4], empty[4], camera[4], pad[4];
231         char active[4], group[4], group_active[4], transform[4];
232         char vertex[4], vertex_select[4], vertex_unreferenced[4];
233         char edge[4], edge_select[4];
234         char edge_seam[4], edge_sharp[4], edge_facesel[4], edge_crease[4];
235         char face[4], face_select[4];   /* solid faces */
236         char face_dot[4];                               /*  selected color */
237         char extra_edge_len[4], extra_edge_angle[4], extra_face_angle[4], extra_face_area[4];
238         char normal[4];
239         char vertex_normal[4];
240         char bone_solid[4], bone_pose[4], bone_pose_active[4];
241         char strip[4], strip_select[4];
242         char cframe[4];
243         char freestyle_edge_mark[4], freestyle_face_mark[4];
244         
245         char nurb_uline[4], nurb_vline[4];
246         char act_spline[4], nurb_sel_uline[4], nurb_sel_vline[4], lastsel_point[4];
247         
248         char handle_free[4], handle_auto[4], handle_vect[4], handle_align[4], handle_auto_clamped[4];
249         char handle_sel_free[4], handle_sel_auto[4], handle_sel_vect[4], handle_sel_align[4], handle_sel_auto_clamped[4];
250         
251         char ds_channel[4], ds_subchannel[4]; /* dopesheet */
252         
253         char console_output[4], console_input[4], console_info[4], console_error[4];
254         char console_cursor[4], console_select[4], pad1[4];
255         
256         char vertex_size, outline_width, facedot_size;
257         char noodle_curving;
258
259         /* syntax for textwindow and nodes */
260         char syntaxl[4], syntaxs[4];
261         char syntaxb[4], syntaxn[4];
262         char syntaxv[4], syntaxc[4];
263         char syntaxd[4], syntaxr[4];
264         
265         char movie[4], movieclip[4], mask[4], image[4], scene[4], audio[4];             /* for sequence editor */
266         char effect[4], transition[4], meta[4];
267         char editmesh_active[4]; 
268
269         char handle_vertex[4];
270         char handle_vertex_select[4];
271         char pad2[4];
272         
273         char handle_vertex_size;
274         
275         char marker_outline[4], marker[4], act_marker[4], sel_marker[4], dis_marker[4], lock_marker[4];
276         char bundle_solid[4];
277         char path_before[4], path_after[4];
278         char camera_path[4];
279         char hpad[3];
280         
281         char preview_back[4];
282         char preview_stitch_face[4];
283         char preview_stitch_edge[4];
284         char preview_stitch_vert[4];
285         char preview_stitch_stitchable[4];
286         char preview_stitch_unstitchable[4];
287         char preview_stitch_active[4];
288         
289         char uv_shadow[4];
290         char uv_others[4];
291
292         char match[4];                          /* outliner - filter match */
293         char selected_highlight[4];     /* outliner - selected item */
294
295         char skin_root[4]; /* Skin modifier root color */
296         
297         /* NLA */
298         char anim_active[4];     /* Active Action + Summary Channel */
299         char anim_non_active[4]; /* Active Action = NULL */
300         
301         char nla_tweaking[4];   /* NLA 'Tweaking' action/strip */
302         char nla_tweakdupli[4]; /* NLA - warning color for duplicate instances of tweaking strip */
303         
304         char nla_transition[4], nla_transition_sel[4]; /* NLA "Transition" strips */
305         char nla_meta[4], nla_meta_sel[4];             /* NLA "Meta" strips */
306         char nla_sound[4], nla_sound_sel[4];           /* NLA "Sound" strips */
307 } ThemeSpace;
308
309
310 /* set of colors for use as a custom color set for Objects/Bones wire drawing */
311 typedef struct ThemeWireColor {
312         char    solid[4];
313         char    select[4];
314         char    active[4];
315         
316         short   flag;
317         short   pad;
318 } ThemeWireColor; 
319
320 /* flags for ThemeWireColor */
321 typedef enum eWireColor_Flags {
322         TH_WIRECOLOR_CONSTCOLS  = (1 << 0),
323         TH_WIRECOLOR_TEXTCOLS   = (1 << 1),
324 } eWireColor_Flags;
325
326 /* A theme */
327 typedef struct bTheme {
328         struct bTheme *next, *prev;
329         char name[32];
330         
331         ThemeUI tui;
332         
333         /* Individual Spacetypes */
334         ThemeSpace tbuts;
335         ThemeSpace tv3d;
336         ThemeSpace tfile;
337         ThemeSpace tipo;
338         ThemeSpace tinfo;
339         ThemeSpace tact;
340         ThemeSpace tnla;
341         ThemeSpace tseq;
342         ThemeSpace tima;
343         ThemeSpace text;
344         ThemeSpace toops;
345         ThemeSpace ttime;
346         ThemeSpace tnode;
347         ThemeSpace tlogic;
348         ThemeSpace tuserpref;
349         ThemeSpace tconsole;
350         ThemeSpace tclip;
351         
352         /* 20 sets of bone colors for this theme */
353         ThemeWireColor tarm[20];
354         /*ThemeWireColor tobj[20];*/
355         
356         int active_theme_area, pad;
357 } bTheme;
358
359 /* for the moment only the name. may want to store options with this later */
360 typedef struct bAddon {
361         struct bAddon *next, *prev;
362         char module[64];
363         IDProperty *prop;  /* User-Defined Properties on this  Addon (for storing preferences) */
364 } bAddon;
365
366 typedef struct bPathCompare {
367         struct bPathCompare *next, *prev;
368         char path[768];  /* FILE_MAXDIR */
369         char flag, pad[7];
370 } bPathCompare;
371
372 typedef struct SolidLight {
373         int flag, pad;
374         float col[4], spec[4], vec[4];
375 } SolidLight;
376
377 typedef struct UserDef {
378         /* UserDef has separate do-version handling, and can be read from other files */
379         int versionfile, subversionfile;
380         
381         int flag, dupflag;
382         int savetime;
383         char tempdir[768];      /* FILE_MAXDIR length */
384         char fontdir[768];
385         char renderdir[1024]; /* FILE_MAX length */
386         char textudir[768];
387         char pythondir[768];
388         char sounddir[768];
389         char i18ndir[768];
390         char image_editor[1024];    /* 1024 = FILE_MAX */
391         char anim_player[1024];     /* 1024 = FILE_MAX */
392         int anim_player_preset;
393         
394         short v2d_min_gridsize;         /* minimum spacing between gridlines in View2D grids */
395         short timecode_style;           /* style of timecode display */
396         
397         short versions;
398         short dbl_click_time;
399         
400         short gameflags;
401         short wheellinescroll;
402         int uiflag, uiflag2;
403         int language;
404         short userpref, viewzoom;
405         
406         int mixbufsize;
407         int audiodevice;
408         int audiorate;
409         int audioformat;
410         int audiochannels;
411
412         int scrollback; /* console scrollback limit */
413         int dpi;                /* range 48-128? */
414         short encoding;
415         short transopts;
416         short menuthreshold1, menuthreshold2;
417         
418         struct ListBase themes;
419         struct ListBase uifonts;
420         struct ListBase uistyles;
421         struct ListBase keymaps  DNA_DEPRECATED; /* deprecated in favor of user_keymaps */
422         struct ListBase user_keymaps;
423         struct ListBase addons;
424         struct ListBase autoexec_paths;
425         char keyconfigstr[64];
426         
427         short undosteps;
428         short undomemory;
429         short gp_manhattendist, gp_euclideandist, gp_eraser;
430         short gp_settings;
431         short tb_leftmouse, tb_rightmouse;
432         struct SolidLight light[3];
433         short tw_hotspot, tw_flag, tw_handlesize, tw_size;
434         short textimeout, texcollectrate;
435         short wmdrawmethod; /* removed wmpad */
436         short dragthreshold;
437         int memcachelimit;
438         int prefetchframes;
439         short frameserverport;
440         short pad_rot_angle;    /* control the rotation step of the view when PAD2, PAD4, PAD6&PAD8 is use */
441         short obcenter_dia;
442         short rvisize;                  /* rotating view icon size */
443         short rvibright;                /* rotating view icon brightness */
444         short recent_files;             /* maximum number of recently used files to remember  */
445         short smooth_viewtx;    /* miliseconds to spend spinning the view */
446         short glreslimit;
447         short curssize;
448         short color_picker_type;
449         short ipo_new;                  /* interpolation mode for newly added F-Curves */
450         short keyhandles_new;   /* handle types for newly added keyframes */
451
452         short scrcastfps;               /* frame rate for screencast to be played back */
453         short scrcastwait;              /* milliseconds between screencast snapshots */
454         
455         short widget_unit;              /* private, defaults to 20 for 72 DPI setting */
456         short anisotropic_filter;
457         short use_16bit_textures, use_gpu_mipmap;
458
459         float ndof_sensitivity; /* overall sensitivity of 3D mouse */
460         float ndof_orbit_sensitivity;
461         int ndof_flag;                  /* flags for 3D mouse */
462
463         short ogl_multisamples; /* amount of samples for OpenGL FSA, if zero no FSA */
464
465         short image_draw_method; /* Method to be used to draw the images (AUTO, GLSL, Textures or DrawPixels) */
466         
467         float glalphaclip;
468         
469         short autokey_mode;             /* autokeying mode */
470         short autokey_flag;             /* flags for autokeying */
471         
472         short text_render, pad9;                /* options for text rendering */
473
474         struct ColorBand coba_weight;   /* from texture.h */
475
476         float sculpt_paint_overlay_col[3];
477         float gpencil_new_layer_col[3]; /* default color for newly created Grease Pencil layers */
478
479         short tweak_threshold;
480         short pad3;
481
482         char author[80];        /* author name for file formats supporting it */
483
484         int compute_device_type;
485         int compute_device_id;
486         
487         float fcu_inactive_alpha;       /* opacity of inactive F-Curves in F-Curve Editor */
488         float pixelsize;                        /* private, set by GHOST, to multiply DPI with */
489 } UserDef;
490
491 extern UserDef U; /* from blenkernel blender.c */
492
493 /* ***************** USERDEF ****************** */
494
495 /* userpref/section */
496 typedef enum eUserPref_Section {
497         USER_SECTION_INTERFACE  = 0,
498         USER_SECTION_EDIT               = 1,
499         USER_SECTION_FILE               = 2,
500         USER_SECTION_SYSTEM             = 3,
501         USER_SECTION_THEME              = 4,
502         USER_SECTION_INPUT              = 5,
503         USER_SECTION_ADDONS     = 6,
504 } eUserPref_Section;
505
506 /* flag */
507 typedef enum eUserPref_Flag {
508         USER_AUTOSAVE                   = (1 << 0),
509 /*      USER_AUTOGRABGRID               = (1 << 1),     deprecated */
510 /*      USER_AUTOROTGRID                = (1 << 2),     deprecated */
511 /*      USER_AUTOSIZEGRID               = (1 << 3),     deprecated */
512         USER_SCENEGLOBAL                = (1 << 4),
513         USER_TRACKBALL                  = (1 << 5),
514 /*      USER_DUPLILINK          = (1 << 6),     deprecated */
515 /*      USER_FSCOLLUM                   = (1 << 7),     deprecated */
516         USER_MAT_ON_OB                  = (1 << 8),
517 /*      USER_NO_CAPSLOCK                = (1 << 9), */  /* not used anywhere */
518 /*      USER_VIEWMOVE                   = (1 << 10), */ /* not used anywhere */
519         USER_TOOLTIPS                   = (1 << 11),
520         USER_TWOBUTTONMOUSE             = (1 << 12),
521         USER_NONUMPAD                   = (1 << 13),
522         USER_LMOUSESELECT               = (1 << 14),
523         USER_FILECOMPRESS               = (1 << 15),
524         USER_SAVE_PREVIEWS              = (1 << 16),
525         USER_CUSTOM_RANGE               = (1 << 17),
526         USER_ADD_EDITMODE               = (1 << 18),
527         USER_ADD_VIEWALIGNED    = (1 << 19),
528         USER_RELPATHS                   = (1 << 20),
529         USER_RELEASECONFIRM             = (1 << 21),
530         USER_SCRIPT_AUTOEXEC_DISABLE    = (1 << 22),
531         USER_FILENOUI                   = (1 << 23),
532         USER_NONEGFRAMES                = (1 << 24),
533         USER_TXT_TABSTOSPACES_DISABLE   = (1 << 25),
534         USER_TOOLTIPS_PYTHON    = (1 << 26),
535 } eUserPref_Flag;
536
537 /* flag */
538 typedef enum ePathCompare_Flag {
539         USER_PATHCMP_GLOB               = (1 << 0),
540 } ePathCompare_Flag;
541
542 /* helper macro for checking frame clamping */
543 #define FRAMENUMBER_MIN_CLAMP(cfra)  {                                        \
544         if ((U.flag & USER_NONEGFRAMES) && (cfra < 0))                            \
545                 cfra = 0;                                                             \
546         } (void)0
547
548 /* viewzoom */
549 typedef enum eViewZoom_Style {
550         USER_ZOOM_CONT                  = 0,
551         USER_ZOOM_SCALE                 = 1,
552         USER_ZOOM_DOLLY                 = 2
553 } eViewZoom_Style;
554
555 /* uiflag */
556 typedef enum eUserpref_UI_Flag {
557         /* flags 0 and 1 were old flags (for autokeying) that aren't used anymore */
558         USER_WHEELZOOMDIR               = (1 << 2),
559         USER_FILTERFILEEXTS             = (1 << 3),
560         USER_DRAWVIEWINFO               = (1 << 4),
561         USER_PLAINMENUS                 = (1 << 5),
562         /* flags 6 and 7 were old flags that are no-longer used */
563         USER_ALLWINCODECS               = (1 << 8),
564         USER_MENUOPENAUTO               = (1 << 9),
565         USER_ZBUF_CURSOR                = (1 << 10),
566         USER_AUTOPERSP                  = (1 << 11),
567         USER_LOCKAROUND         = (1 << 12),
568         USER_GLOBALUNDO         = (1 << 13),
569         USER_ORBIT_SELECTION    = (1 << 14),
570         USER_ZBUF_ORBIT                 = (1 << 15),
571         USER_HIDE_DOT                   = (1 << 16),
572         USER_SHOW_ROTVIEWICON   = (1 << 17),
573         USER_SHOW_VIEWPORTNAME  = (1 << 18),
574         USER_CAM_LOCK_NO_PARENT = (1 << 19),
575         USER_ZOOM_TO_MOUSEPOS   = (1 << 20),
576         USER_SHOW_FPS                   = (1 << 21),
577         USER_MMB_PASTE                  = (1 << 22),
578         USER_MENUFIXEDORDER             = (1 << 23),
579         USER_CONTINUOUS_MOUSE   = (1 << 24),
580         USER_ZOOM_INVERT                = (1 << 25),
581         USER_ZOOM_HORIZ                 = (1 << 26), /* for CONTINUE and DOLLY zoom */
582         USER_SPLASH_DISABLE             = (1 << 27),
583         USER_HIDE_RECENT                = (1 << 28),
584         USER_SHOW_THUMBNAILS    = (1 << 29),
585         USER_QUIT_PROMPT                = (1 << 30),
586         USER_HIDE_SYSTEM_BOOKMARKS = (1 << 31)
587 } eUserpref_UI_Flag;
588
589 /* uiflag2 */
590 typedef enum eUserpref_UI_Flag2 {
591         USER_KEEP_SESSION               = (1 << 0),
592         USER_REGION_OVERLAP             = (1 << 1),
593         USER_TRACKPAD_NATURAL   = (1 << 2)
594 } eUserpref_UI_Flag2;
595         
596 /* Auto-Keying mode */
597 typedef enum eAutokey_Mode {
598         /* AUTOKEY_ON is a bitflag */
599         AUTOKEY_ON             = 1,
600         
601         /* AUTOKEY_ON + 2**n...  (i.e. AUTOKEY_MODE_NORMAL = AUTOKEY_ON + 2) to preserve setting, even when autokey turned off  */
602         AUTOKEY_MODE_NORMAL    = 3,
603         AUTOKEY_MODE_EDITKEYS  = 5
604 } eAutokey_Mode;
605
606 /* Auto-Keying flag
607  * U.autokey_flag (not strictly used when autokeying only - is also used when keyframing these days)
608  * note: AUTOKEY_FLAG_* is used with a macro, search for lines like IS_AUTOKEY_FLAG(INSERTAVAIL)
609  */
610 typedef enum eAutokey_Flag {
611         AUTOKEY_FLAG_INSERTAVAIL        = (1 << 0),
612         AUTOKEY_FLAG_INSERTNEEDED       = (1 << 1),
613         AUTOKEY_FLAG_AUTOMATKEY         = (1 << 2),
614         AUTOKEY_FLAG_XYZ2RGB            = (1 << 3),
615         
616         /* toolsettings->autokey_flag */
617         AUTOKEY_FLAG_ONLYKEYINGSET      = (1 << 6),
618         AUTOKEY_FLAG_NOWARNING          = (1 << 7),
619         ANIMRECORD_FLAG_WITHNLA         = (1 << 10),
620 } eAutokey_Flag;
621
622 /* transopts */
623 typedef enum eUserpref_Translation_Flags {
624         USER_TR_TOOLTIPS                = (1 << 0),
625         USER_TR_IFACE                   = (1 << 1),
626 /*      USER_TR_MENUS                   = (1 << 2),  deprecated */
627 /*      USER_TR_FILESELECT              = (1 << 3),  deprecated */
628 /*      USER_TR_TEXTEDIT                = (1 << 4),  deprecated */
629         USER_DOTRANSLATE                = (1 << 5),
630         USER_USETEXTUREFONT             = (1 << 6),
631 /*      CONVERT_TO_UTF8                 = (1 << 7),  deprecated */
632         USER_TR_NEWDATANAME             = (1 << 8),
633 } eUserpref_Translation_Flags;
634
635 /* dupflag */
636 typedef enum eDupli_ID_Flags {
637         USER_DUP_MESH                   = (1 << 0),
638         USER_DUP_CURVE                  = (1 << 1),
639         USER_DUP_SURF                   = (1 << 2),
640         USER_DUP_FONT                   = (1 << 3),
641         USER_DUP_MBALL                  = (1 << 4),
642         USER_DUP_LAMP                   = (1 << 5),
643         USER_DUP_IPO                    = (1 << 6),
644         USER_DUP_MAT                    = (1 << 7),
645         USER_DUP_TEX                    = (1 << 8),
646         USER_DUP_ARM                    = (1 << 9),
647         USER_DUP_ACT                    = (1 << 10),
648         USER_DUP_PSYS                   = (1 << 11)
649 } eDupli_ID_Flags;
650
651 /* gameflags */
652 typedef enum eOpenGL_RenderingOptions {
653         /* USER_DEPRECATED_FLAG = (1 << 0), */
654         /* USER_DISABLE_SOUND           = (1 << 1), */ /* deprecated, don't use without checking for */
655                                              /* backwards compatibilty in do_versions! */
656         USER_DISABLE_MIPMAP             = (1 << 2),
657         USER_DISABLE_VBO                = (1 << 3),
658         /* USER_DISABLE_AA                      = (1 << 4), */ /* DEPRECATED */
659 } eOpenGL_RenderingOptions;
660
661 /* wm draw method */
662 typedef enum eWM_DrawMethod {
663         USER_DRAW_TRIPLE                = 0,
664         USER_DRAW_OVERLAP               = 1,
665         USER_DRAW_FULL                  = 2,
666         USER_DRAW_AUTOMATIC             = 3,
667         USER_DRAW_OVERLAP_FLIP  = 4,
668 } eWM_DrawMethod;
669
670 /* text draw options */
671 typedef enum eText_Draw_Options {
672         USER_TEXT_DISABLE_AA    = (1 << 0),
673 } eText_Draw_Options;
674
675 /* tw_flag (transform widget) */
676
677 /* gp_settings (Grease Pencil Settings) */
678 typedef enum eGP_UserdefSettings {
679         GP_PAINT_DOSMOOTH               = (1 << 0),
680         GP_PAINT_DOSIMPLIFY             = (1 << 1),
681 } eGP_UserdefSettings;
682
683 /* color picker types */
684 typedef enum eColorPicker_Types {
685         USER_CP_CIRCLE          = 0,
686         USER_CP_SQUARE_SV       = 1,
687         USER_CP_SQUARE_HS       = 2,
688         USER_CP_SQUARE_HV       = 3,
689 } eColorPicker_Types;
690
691 /* timecode display styles */
692 typedef enum eTimecodeStyles {
693         /* as little info as is necessary to show relevant info
694          * with '+' to denote the frames 
695          * i.e. HH:MM:SS+FF, MM:SS+FF, SS+FF, or MM:SS
696          */
697         USER_TIMECODE_MINIMAL           = 0,
698         
699         /* reduced SMPTE - (HH:)MM:SS:FF */
700         USER_TIMECODE_SMPTE_MSF         = 1,
701         
702         /* full SMPTE - HH:MM:SS:FF */
703         USER_TIMECODE_SMPTE_FULL        = 2,
704         
705         /* milliseconds for sub-frames - HH:MM:SS.sss */
706         USER_TIMECODE_MILLISECONDS      = 3,
707         
708         /* seconds only */
709         USER_TIMECODE_SECONDS_ONLY      = 4,
710 } eTimecodeStyles;
711
712 /* theme drawtypes */
713 /* XXX: These are probably only for the old UI engine? */
714 typedef enum eTheme_DrawTypes {
715         TH_MINIMAL      = 0,
716         TH_ROUNDSHADED  = 1,
717         TH_ROUNDED      = 2,
718         TH_OLDSKOOL     = 3,
719         TH_SHADED       = 4
720 } eTheme_DrawTypes;
721
722 /* ndof_flag (3D mouse options) */
723 typedef enum eNdof_Flag {
724         NDOF_SHOW_GUIDE     = (1 << 0),
725         NDOF_FLY_HELICOPTER = (1 << 1),
726         NDOF_LOCK_HORIZON   = (1 << 2),
727
728         /* the following might not need to be saved between sessions,
729          * but they do need to live somewhere accessible... */
730         NDOF_SHOULD_PAN     = (1 << 3),
731         NDOF_SHOULD_ZOOM    = (1 << 4),
732         NDOF_SHOULD_ROTATE  = (1 << 5),
733
734         /* orbit navigation modes
735          * only two options, so it's sort of a hybrid bool/enum
736          * if ((U.ndof_flag & NDOF_ORBIT_MODE) == NDOF_OM_OBJECT)... */
737
738         // NDOF_ORBIT_MODE     = (1 << 6),
739         // #define NDOF_OM_TARGETCAMERA 0
740         // #define NDOF_OM_OBJECT      NDOF_ORBIT_MODE
741
742         /* actually... users probably don't care about what the mode
743          * is called, just that it feels right */
744         /* zoom is up/down if this flag is set (otherwise forward/backward) */
745         NDOF_ZOOM_UPDOWN        = (1 << 7),
746         NDOF_ZOOM_INVERT        = (1 << 8),
747         NDOF_ROTATE_INVERT_AXIS = (1 << 9),
748         NDOF_TILT_INVERT_AXIS   = (1 << 10),
749         NDOF_ROLL_INVERT_AXIS   = (1 << 11),
750         NDOF_PANX_INVERT_AXIS   = (1 << 12),
751         NDOF_PANY_INVERT_AXIS   = (1 << 13),
752         NDOF_PANZ_INVERT_AXIS   = (1 << 14),
753         NDOF_TURNTABLE          = (1 << 15),
754 } eNdof_Flag;
755
756 /* compute_device_type */
757 typedef enum eCompute_Device_Type {
758         USER_COMPUTE_DEVICE_NONE        = 0,
759         USER_COMPUTE_DEVICE_OPENCL      = 1,
760         USER_COMPUTE_DEVICE_CUDA        = 2,
761 } eCompute_Device_Type;
762
763         
764 typedef enum eMultiSample_Type {
765         USER_MULTISAMPLE_NONE   = 0,
766         USER_MULTISAMPLE_2      = 2,
767         USER_MULTISAMPLE_4      = 4,
768         USER_MULTISAMPLE_8      = 8,
769         USER_MULTISAMPLE_16     = 16,
770 } eMultiSample_Type;
771         
772 typedef enum eImageDrawMethod {
773         /* IMAGE_DRAW_METHOD_AUTO = 0, */ /* Currently unused */
774         IMAGE_DRAW_METHOD_GLSL = 1,
775         IMAGE_DRAW_METHOD_2DTEXTURE = 2,
776         IMAGE_DRAW_METHOD_DRAWPIXELS = 3,
777 } eImageDrawMethod;
778
779 #ifdef __cplusplus
780 }
781 #endif
782
783 #endif