Patch #32326: NDOF support of rotation and panning the view at the same time
[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 #define MAX_FONT_NAME   256
51
52 /* default uifont_id offered by Blender */
53 #define UIFONT_DEFAULT  0
54 /*#define UIFONT_BITMAP 1*/ /*UNUSED*/
55 /* free slots */
56 #define UIFONT_CUSTOM1  2
57 #define UIFONT_CUSTOM2  3
58
59 /* default fonts to load/initalize */
60 /* first font is the default (index 0), others optional */
61 typedef struct uiFont {
62         struct uiFont *next, *prev;
63         char filename[1024];/* 1024 = FILE_MAX */
64         short blf_id;           /* from blfont lib */
65         short uifont_id;        /* own id */
66         short r_to_l;           /* fonts that read from left to right */
67         short pad;
68         
69 } uiFont;
70
71 /* this state defines appearance of text */
72 typedef struct uiFontStyle {
73         short uifont_id;                /* saved in file, 0 is default */
74         short points;                   /* actual size depends on 'global' dpi */
75         short kerning;                  /* unfitted or default kerning value. */
76         char pad[6];
77         short italic, bold;             /* style hint */
78         short shadow;                   /* value is amount of pixels blur */
79         short shadx, shady;             /* shadow offset in pixels */
80         short align;                    /* text align hint */
81         float shadowalpha;              /* total alpha */
82         float shadowcolor;              /* 1 value, typically white or black anyway */
83         
84 } uiFontStyle;
85
86 /* uiFontStyle->align */
87 #define UI_STYLE_TEXT_LEFT              0
88 #define UI_STYLE_TEXT_CENTER    1
89 #define UI_STYLE_TEXT_RIGHT             2
90
91
92 /* this is fed to the layout engine and widget code */
93
94 typedef struct uiStyle {
95         struct uiStyle *next, *prev;
96         
97         char name[64];                  /* MAX_STYLE_NAME */
98         
99         uiFontStyle paneltitle;
100         uiFontStyle grouplabel;
101         uiFontStyle widgetlabel;
102         uiFontStyle widget;
103         
104         float panelzoom;
105         
106         short minlabelchars;    /* in characters */
107         short minwidgetchars;   /* in characters */
108
109         short columnspace;
110         short templatespace;
111         short boxspace;
112         short buttonspacex;
113         short buttonspacey;
114         short panelspace;
115         short panelouter;
116
117         short pad;
118 } uiStyle;
119
120 typedef struct uiWidgetColors {
121         char outline[4];
122         char inner[4];
123         char inner_sel[4];
124         char item[4];
125         char text[4];
126         char text_sel[4];
127         short shaded;
128         short shadetop, shadedown;
129         short alpha_check;
130 } uiWidgetColors;
131
132 typedef struct uiWidgetStateColors {
133         char inner_anim[4];
134         char inner_anim_sel[4];
135         char inner_key[4];
136         char inner_key_sel[4];
137         char inner_driven[4];
138         char inner_driven_sel[4];
139         float blend, pad;
140 } uiWidgetStateColors;
141
142 typedef struct uiPanelColors {
143         char header[4];
144         short show_header;
145         short pad;
146 } uiPanelColors;
147
148 typedef struct ThemeUI {
149         
150         /* Interface Elements (buttons, menus, icons) */
151         uiWidgetColors wcol_regular, wcol_tool, wcol_text;
152         uiWidgetColors wcol_radio, wcol_option, wcol_toggle;
153         uiWidgetColors wcol_num, wcol_numslider;
154         uiWidgetColors wcol_menu, wcol_pulldown, wcol_menu_back, wcol_menu_item, wcol_tooltip;
155         uiWidgetColors wcol_box, wcol_scroll, wcol_progress, wcol_list_item;
156         
157         uiWidgetStateColors wcol_state;
158
159         uiPanelColors panel;
160
161         char iconfile[256];     // FILE_MAXFILE length
162         float icon_alpha;
163
164         float pad;
165 } ThemeUI;
166
167 /* try to put them all in one, if needed a special struct can be created as well
168  * for example later on, when we introduce wire colors for ob types or so...
169  */
170 typedef struct ThemeSpace {
171         /* main window colors */
172         char back[4];
173         char title[4];
174         char text[4];
175         char text_hi[4];
176         
177         /* header colors */
178         char header[4];
179         char header_title[4];
180         char header_text[4];
181         char header_text_hi[4];
182
183         /* button/tool regions */
184         char button[4];
185         char button_title[4];
186         char button_text[4];    
187         char button_text_hi[4];
188         
189         /* listview regions */
190         char list[4];
191         char list_title[4];
192         char list_text[4];
193         char list_text_hi[4];
194         
195         /* float panel */
196         char panel[4];
197         char panel_title[4];    
198         char panel_text[4];     
199         char panel_text_hi[4];
200         
201         char shade1[4];
202         char shade2[4];
203         
204         char hilite[4];
205         char grid[4]; 
206         
207         char wire[4], select[4];
208         char lamp[4], speaker[4], empty[4], camera[4], pad[8];
209         char active[4], group[4], group_active[4], transform[4];
210         char vertex[4], vertex_select[4];
211         char edge[4], edge_select[4];
212         char edge_seam[4], edge_sharp[4], edge_facesel[4], edge_crease[4];
213         char face[4], face_select[4];   // solid faces
214         char face_dot[4];                               // selected color
215         char extra_edge_len[4], extra_face_angle[4], extra_face_area[4], pad3[4];
216         char normal[4];
217         char vertex_normal[4];
218         char bone_solid[4], bone_pose[4], bone_pose_active[4];
219         char strip[4], strip_select[4];
220         char cframe[4];
221         
222         char nurb_uline[4], nurb_vline[4];
223         char act_spline[4], nurb_sel_uline[4], nurb_sel_vline[4], lastsel_point[4];
224         
225         char handle_free[4], handle_auto[4], handle_vect[4], handle_align[4], handle_auto_clamped[4];
226         char handle_sel_free[4], handle_sel_auto[4], handle_sel_vect[4], handle_sel_align[4], handle_sel_auto_clamped[4];
227         
228         char ds_channel[4], ds_subchannel[4]; // dopesheet
229         
230         char console_output[4], console_input[4], console_info[4], console_error[4];
231         char console_cursor[4];
232         
233         char vertex_size, outline_width, facedot_size;
234         char noodle_curving;
235
236         char syntaxl[4], syntaxn[4], syntaxb[4]; // syntax for textwindow and nodes
237         char syntaxv[4], syntaxc[4];
238         
239         char movie[4], movieclip[4], mask[4], image[4], scene[4], audio[4];             // for sequence editor
240         char effect[4], hpad0[4], transition[4], meta[4];
241         char editmesh_active[4]; 
242
243         char handle_vertex[4];
244         char handle_vertex_select[4];
245         
246         char handle_vertex_size;
247         
248         char marker_outline[4], marker[4], act_marker[4], sel_marker[4], dis_marker[4], lock_marker[4];
249         char bundle_solid[4];
250         char path_before[4], path_after[4];
251         char camera_path[4];
252         char hpad[3];
253         
254         char preview_back[4];
255         char preview_stitch_face[4];
256         char preview_stitch_edge[4];
257         char preview_stitch_vert[4];
258         char preview_stitch_stitchable[4];
259         char preview_stitch_unstitchable[4];
260         char preview_stitch_active[4];
261         
262         char match[4];                          /* outliner - filter match */
263         char selected_highlight[4];     /* outliner - selected item */
264
265         char skin_root[4]; /* Skin modifier root color */
266         
267         /* NLA */
268         char anim_active[4];     /* Active Action + Summary Channel */
269         char anim_non_active[4]; /* Active Action = NULL */
270         
271         char nla_tweaking[4];   /* NLA 'Tweaking' action/strip */
272         char nla_tweakdupli[4]; /* NLA - warning color for duplicate instances of tweaking strip */
273         
274         char nla_transition[4], nla_transition_sel[4]; /* NLA "Transition" strips */
275         char nla_meta[4], nla_meta_sel[4];             /* NLA "Meta" strips */
276         char nla_sound[4], nla_sound_sel[4];           /* NLA "Sound" strips */
277 } ThemeSpace;
278
279
280 /* set of colors for use as a custom color set for Objects/Bones wire drawing */
281 typedef struct ThemeWireColor {
282         char    solid[4];
283         char    select[4];
284         char    active[4];
285         
286         short   flag;
287         short   pad;
288 } ThemeWireColor; 
289
290 /* flags for ThemeWireColor */
291 #define TH_WIRECOLOR_CONSTCOLS  (1<<0)
292 #define TH_WIRECOLOR_TEXTCOLS   (1<<1)
293
294 /* A theme */
295 typedef struct bTheme {
296         struct bTheme *next, *prev;
297         char name[32];
298         
299         ThemeUI tui;
300         
301         /* Individual Spacetypes */
302         ThemeSpace tbuts;       
303         ThemeSpace tv3d;
304         ThemeSpace tfile;
305         ThemeSpace tipo;
306         ThemeSpace tinfo;
307         ThemeSpace tact;
308         ThemeSpace tnla;
309         ThemeSpace tseq;
310         ThemeSpace tima;
311         ThemeSpace text;
312         ThemeSpace toops;
313         ThemeSpace ttime;
314         ThemeSpace tnode;
315         ThemeSpace tlogic;
316         ThemeSpace tuserpref;   
317         ThemeSpace tconsole;
318         ThemeSpace tclip;
319         
320         /* 20 sets of bone colors for this theme */
321         ThemeWireColor tarm[20];
322         /*ThemeWireColor tobj[20];*/
323         
324         int active_theme_area, pad;
325         
326 } bTheme;
327
328 /* for the moment only the name. may want to store options with this later */
329 typedef struct bAddon {
330         struct bAddon *next, *prev;
331         char module[64];
332 } bAddon;
333
334 typedef struct SolidLight {
335         int flag, pad;
336         float col[4], spec[4], vec[4];
337 } SolidLight;
338
339 typedef struct UserDef {
340         int flag, dupflag;
341         int savetime;
342         char tempdir[768];      /* FILE_MAXDIR length */
343         char fontdir[768];
344         char renderdir[1024]; /* FILE_MAX length */
345         char textudir[768];
346         char pythondir[768];
347         char sounddir[768];
348         char i18ndir[768];
349         char image_editor[1024];        /* 1024 = FILE_MAX */
350         char anim_player[1024]; /* 1024 = FILE_MAX */
351         int anim_player_preset;
352         
353         short v2d_min_gridsize;         /* minimum spacing between gridlines in View2D grids */
354         short timecode_style;           /* style of timecode display */
355         
356         short versions;
357         short dbl_click_time;
358         
359         int gameflags;
360         int wheellinescroll;
361         int uiflag, language;
362         short userpref, viewzoom;
363         
364         int mixbufsize;
365         int audiodevice;
366         int audiorate;
367         int audioformat;
368         int audiochannels;
369
370         int scrollback; /* console scrollback limit */
371         int dpi;                /* range 48-128? */
372         short encoding;
373         short transopts;
374         short menuthreshold1, menuthreshold2;
375         
376         struct ListBase themes;
377         struct ListBase uifonts;
378         struct ListBase uistyles;
379         struct ListBase keymaps  DNA_DEPRECATED; /* deprecated in favor of user_keymaps */
380         struct ListBase user_keymaps;
381         struct ListBase addons;
382         char keyconfigstr[64];
383         
384         short undosteps;
385         short undomemory;
386         short gp_manhattendist, gp_euclideandist, gp_eraser;
387         short gp_settings;
388         short tb_leftmouse, tb_rightmouse;
389         struct SolidLight light[3];
390         short tw_hotspot, tw_flag, tw_handlesize, tw_size;
391         short textimeout, texcollectrate;
392         short wmdrawmethod; /* removed wmpad */
393         short dragthreshold;
394         int memcachelimit;
395         int prefetchframes;
396         short frameserverport;
397         short pad_rot_angle;    /*control the rotation step of the view when PAD2, PAD4, PAD6&PAD8 is use*/
398         short obcenter_dia;
399         short rvisize;                  /* rotating view icon size */
400         short rvibright;                /* rotating view icon brightness */
401         short recent_files;             /* maximum number of recently used files to remember  */
402         short smooth_viewtx;    /* miliseconds to spend spinning the view */
403         short glreslimit;
404         short curssize;
405         short color_picker_type;
406         short ipo_new;                  /* interpolation mode for newly added F-Curves */
407         short keyhandles_new;   /* handle types for newly added keyframes */
408
409         short scrcastfps;               /* frame rate for screencast to be played back */
410         short scrcastwait;              /* milliseconds between screencast snapshots */
411         
412         short widget_unit;              /* defaults to 20 for 72 DPI setting */
413         short anisotropic_filter;
414         short use_16bit_textures, use_gpu_mipmap;
415
416         float ndof_sensitivity; /* overall sensitivity of 3D mouse */
417         float ndof_orbit_sensitivity;
418         float pad4;
419         int ndof_flag;                  /* flags for 3D mouse */
420
421         float glalphaclip;
422         
423         short autokey_mode;             /* autokeying mode */
424         short autokey_flag;             /* flags for autokeying */
425         
426         short text_render, pad9;                /*options for text rendering*/
427
428         struct ColorBand coba_weight;   /* from texture.h */
429
430         float sculpt_paint_overlay_col[3];
431
432         short tweak_threshold;
433         short pad3;
434
435         char author[80];        /* author name for file formats supporting it */
436
437         int compute_device_type;
438         int compute_device_id;
439         
440         float fcu_inactive_alpha;       /* opacity of inactive F-Curves in F-Curve Editor */
441         float pad;
442 } UserDef;
443
444 extern UserDef U; /* from blenkernel blender.c */
445
446 /* ***************** USERDEF ****************** */
447
448 /* userpref/section */
449 #define USER_SECTION_INTERFACE  0
450 #define USER_SECTION_EDIT               1
451 #define USER_SECTION_FILE               2
452 #define USER_SECTION_SYSTEM             3
453 #define USER_SECTION_THEME              4
454 #define USER_SECTION_INPUT              5
455 #define USER_SECTION_ADDONS     6
456
457 /* flag */
458 #define USER_AUTOSAVE                   (1 << 0)
459 /*#define USER_AUTOGRABGRID             (1 << 1)        deprecated */
460 /*#define USER_AUTOROTGRID              (1 << 2)        deprecated */
461 /*#define USER_AUTOSIZEGRID             (1 << 3)        deprecated */
462 #define USER_SCENEGLOBAL                (1 << 4)
463 #define USER_TRACKBALL                  (1 << 5)
464 /*#define USER_DUPLILINK                (1 << 6)        deprecated */
465 /*#define USER_FSCOLLUM                 (1 << 7)        deprecated */
466 #define USER_MAT_ON_OB                  (1 << 8)
467 /*#define USER_NO_CAPSLOCK              (1 << 9)*/ /* not used anywhere */
468 /*#define USER_VIEWMOVE                 (1 << 10)*/ /* not used anywhere */
469 #define USER_TOOLTIPS                   (1 << 11)
470 #define USER_TWOBUTTONMOUSE             (1 << 12)
471 #define USER_NONUMPAD                   (1 << 13)
472 #define USER_LMOUSESELECT               (1 << 14)
473 #define USER_FILECOMPRESS               (1 << 15)
474 #define USER_SAVE_PREVIEWS              (1 << 16)
475 #define USER_CUSTOM_RANGE               (1 << 17)
476 #define USER_ADD_EDITMODE               (1 << 18)
477 #define USER_ADD_VIEWALIGNED    (1 << 19)
478 #define USER_RELPATHS                   (1 << 20)
479 #define USER_RELEASECONFIRM             (1 << 21)
480 #define USER_SCRIPT_AUTOEXEC_DISABLE    (1 << 22)
481 #define USER_FILENOUI                   (1 << 23)
482 #define USER_NONEGFRAMES                (1 << 24)
483 #define USER_TXT_TABSTOSPACES_DISABLE   (1 << 25)
484 #define USER_TOOLTIPS_PYTHON    (1 << 26)
485
486 /* helper macro for checking frame clamping */
487 #define FRAMENUMBER_MIN_CLAMP(cfra)  {                                        \
488         if ((U.flag & USER_NONEGFRAMES) && (cfra < 0))                            \
489                 cfra = 0;                                                             \
490         } (void)0
491
492 /* viewzom */
493 #define USER_ZOOM_CONT                  0
494 #define USER_ZOOM_SCALE                 1
495 #define USER_ZOOM_DOLLY                 2
496
497 /* uiflag */
498 // old flag for #define USER_KEYINSERTACT               (1 << 0)
499 // old flag for #define USER_KEYINSERTOBJ               (1 << 1)
500 #define USER_WHEELZOOMDIR               (1 << 2)
501 #define USER_FILTERFILEEXTS             (1 << 3)
502 #define USER_DRAWVIEWINFO               (1 << 4)
503 #define USER_PLAINMENUS                 (1 << 5)                // old EVTTOCONSOLE print ghost events, here for tuhopuu compat. --phase
504                                                                 // old flag for hide pulldown was here 
505 /*#define USER_FLIPFULLSCREEN           (1 << 7)*/ /* deprecated */
506 #define USER_ALLWINCODECS               (1 << 8)
507 #define USER_MENUOPENAUTO               (1 << 9)
508 #define USER_ZBUF_CURSOR                (1 << 10)
509 #define USER_AUTOPERSP                  (1 << 11)
510 #define USER_LOCKAROUND         (1 << 12)
511 #define USER_GLOBALUNDO         (1 << 13)
512 #define USER_ORBIT_SELECTION    (1 << 14)
513 #define USER_ZBUF_ORBIT                 (1 << 15)
514 #define USER_HIDE_DOT                   (1 << 16)
515 #define USER_SHOW_ROTVIEWICON   (1 << 17)
516 #define USER_SHOW_VIEWPORTNAME  (1 << 18)
517 #define USER_CAM_LOCK_NO_PARENT (1 << 19)
518 #define USER_ZOOM_TO_MOUSEPOS   (1 << 20)
519 #define USER_SHOW_FPS                   (1 << 21)
520 #define USER_MMB_PASTE                  (1 << 22)
521 #define USER_MENUFIXEDORDER             (1 << 23)
522 #define USER_CONTINUOUS_MOUSE   (1 << 24)
523 #define USER_ZOOM_INVERT                (1 << 25)
524 #define USER_ZOOM_HORIZ                 (1 << 26) /* for CONTINUE and DOLLY zoom */
525 #define USER_SPLASH_DISABLE             (1 << 27)
526 #define USER_HIDE_RECENT                (1 << 28)
527 #define USER_SHOW_THUMBNAILS    (1 << 29)
528 #define USER_QUIT_PROMPT                (1 << 30)
529
530 /* Auto-Keying mode */
531         /* AUTOKEY_ON is a bitflag */
532 #define         AUTOKEY_ON                              1
533         /* AUTOKEY_ON + 2**n...  (i.e. AUTOKEY_MODE_NORMAL = AUTOKEY_ON + 2) to preserve setting, even when autokey turned off  */
534 #define         AUTOKEY_MODE_NORMAL             3
535 #define         AUTOKEY_MODE_EDITKEYS   5
536
537 /* Auto-Keying flag
538  * U.autokey_flag (not strictly used when autokeying only - is also used when keyframing these days)
539  * note: AUTOKEY_FLAG_* is used with a macro, search for lines like IS_AUTOKEY_FLAG(INSERTAVAIL)
540  */
541 #define         AUTOKEY_FLAG_INSERTAVAIL        (1<<0)
542 #define         AUTOKEY_FLAG_INSERTNEEDED       (1<<1)
543 #define         AUTOKEY_FLAG_AUTOMATKEY         (1<<2)
544 #define         AUTOKEY_FLAG_XYZ2RGB            (1<<3)
545
546 /* toolsettings->autokey_flag */
547 #define         AUTOKEY_FLAG_ONLYKEYINGSET      (1<<6)
548 #define         ANIMRECORD_FLAG_WITHNLA         (1<<10)
549
550 /* transopts */
551 #define USER_TR_TOOLTIPS                (1 << 0)
552 #define USER_TR_IFACE                   (1 << 1)
553 /*#define USER_TR_MENUS                 (1 << 2)        deprecated*/
554 /*#define USER_TR_FILESELECT    (1 << 3)        deprecated*/
555 /*#define USER_TR_TEXTEDIT              (1 << 4)        deprecated*/
556 #define USER_DOTRANSLATE                (1 << 5)
557 #define USER_USETEXTUREFONT             (1 << 6)
558 /*#define CONVERT_TO_UTF8                       (1 << 7)        deprecated*/
559
560 /* dupflag */
561 #define USER_DUP_MESH                   (1 << 0)
562 #define USER_DUP_CURVE                  (1 << 1)
563 #define USER_DUP_SURF                   (1 << 2)
564 #define USER_DUP_FONT                   (1 << 3)
565 #define USER_DUP_MBALL                  (1 << 4)
566 #define USER_DUP_LAMP                   (1 << 5)
567 #define USER_DUP_IPO                    (1 << 6)
568 #define USER_DUP_MAT                    (1 << 7)
569 #define USER_DUP_TEX                    (1 << 8)
570 #define USER_DUP_ARM                    (1 << 9)
571 #define USER_DUP_ACT                    (1 << 10)
572 #define USER_DUP_PSYS                   (1 << 11)
573
574 /* gameflags */
575 // #define USER_DEPRECATED_FLAG 1
576 // #define USER_DISABLE_SOUND           2 deprecated, don't use without checking for
577 // backwards compatibilty in do_versions!
578 #define USER_DISABLE_MIPMAP             4
579 #define USER_DISABLE_VBO                8
580 #define USER_DISABLE_AA                 16
581
582 /* wm draw method */
583 #define USER_DRAW_TRIPLE                0
584 #define USER_DRAW_OVERLAP               1
585 #define USER_DRAW_FULL                  2
586 #define USER_DRAW_AUTOMATIC             3
587 #define USER_DRAW_OVERLAP_FLIP  4
588
589 /* text draw options*/
590 #define USER_TEXT_DISABLE_AA    (1 << 0)
591
592 /* tw_flag (transform widget) */
593
594 /* gp_settings (Grease Pencil Settings) */
595 #define GP_PAINT_DOSMOOTH               (1<<0)
596 #define GP_PAINT_DOSIMPLIFY             (1<<1)
597
598 /* color picker types */
599 #define USER_CP_CIRCLE          0
600 #define USER_CP_SQUARE_SV       1
601 #define USER_CP_SQUARE_HS       2
602 #define USER_CP_SQUARE_HV       3
603
604 /* timecode display styles */
605         /* as little info as is necessary to show relevant info
606          * with '+' to denote the frames 
607          * i.e. HH:MM:SS+FF, MM:SS+FF, SS+FF, or MM:SS
608          */
609 #define USER_TIMECODE_MINIMAL           0
610         /* reduced SMPTE - (HH:)MM:SS:FF */
611 #define USER_TIMECODE_SMPTE_MSF         1
612         /* full SMPTE - HH:MM:SS:FF */
613 #define USER_TIMECODE_SMPTE_FULL        2
614         /* milliseconds for sub-frames - HH:MM:SS.sss */
615 #define USER_TIMECODE_MILLISECONDS      3
616         /* seconds only */
617 #define USER_TIMECODE_SECONDS_ONLY      4
618
619 /* theme drawtypes */
620 #define TH_MINIMAL      0
621 #define TH_ROUNDSHADED  1
622 #define TH_ROUNDED      2
623 #define TH_OLDSKOOL     3
624 #define TH_SHADED       4
625
626 /* ndof_flag (3D mouse options) */
627 #define NDOF_SHOW_GUIDE     (1 << 0)
628 #define NDOF_FLY_HELICOPTER (1 << 1)
629 #define NDOF_LOCK_HORIZON   (1 << 2)
630 /* the following might not need to be saved between sessions,
631  * but they do need to live somewhere accessible... */
632 #define NDOF_SHOULD_PAN     (1 << 3)
633 #define NDOF_SHOULD_ZOOM    (1 << 4)
634 #define NDOF_SHOULD_ROTATE  (1 << 5)
635 /* orbit navigation modes
636  * only two options, so it's sort of a hybrid bool/enum
637  * if ((U.ndof_flag & NDOF_ORBIT_MODE) == NDOF_OM_OBJECT)... */
638
639 // #define NDOF_ORBIT_MODE     (1 << 6)
640 // #define NDOF_OM_TARGETCAMERA 0
641 // #define NDOF_OM_OBJECT      NDOF_ORBIT_MODE
642
643 /* actually... users probably don't care about what the mode
644  * is called, just that it feels right */
645 /* zoom is up/down if this flag is set (otherwise forward/backward) */
646 #define NDOF_ZOOM_UPDOWN (1 << 7)
647 #define NDOF_ZOOM_INVERT (1 << 8)
648 #define NDOF_ROTATE_INVERT_AXIS (1 << 9)
649 #define NDOF_TILT_INVERT_AXIS (1 << 10)
650 #define NDOF_ROLL_INVERT_AXIS (1 << 11)
651 #define NDOF_PANX_INVERT_AXIS (1 << 12)
652 #define NDOF_PANY_INVERT_AXIS (1 << 13)
653 #define NDOF_PANZ_INVERT_AXIS (1 << 14)
654 #define NDOF_TURNTABLE (1 << 15)
655
656 /* compute_device_type */
657 #define USER_COMPUTE_DEVICE_NONE        0
658 #define USER_COMPUTE_DEVICE_OPENCL      1
659 #define USER_COMPUTE_DEVICE_CUDA        2
660
661 #ifdef __cplusplus
662 }
663 #endif
664
665 #endif