Blender  V2.59
DNA_userdef_types.h
Go to the documentation of this file.
00001 /*
00002  *      $Id: DNA_userdef_types.h 39110 2011-08-06 23:13:36Z merwin $
00003  *
00004  * ***** BEGIN GPL LICENSE BLOCK *****
00005  *
00006  * This program is free software; you can redistribute it and/or
00007  * modify it under the terms of the GNU General Public License
00008  * as published by the Free Software Foundation; either version 2
00009  * of the License, or (at your option) any later version.
00010  *
00011  * This program is distributed in the hope that it will be useful,
00012  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00013  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014  * GNU General Public License for more details.
00015  *
00016  * You should have received a copy of the GNU General Public License
00017  * along with this program; if not, write to the Free Software Foundation,
00018  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
00019  *
00020  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
00021  * All rights reserved.
00022  *
00023  * The Original Code is: all of this file.
00024  *
00025  * Contributor(s): none yet.
00026  *
00027  * ***** END GPL LICENSE BLOCK *****
00028 */
00029 
00030 #ifndef DNA_USERDEF_TYPES_H
00031 #define DNA_USERDEF_TYPES_H
00032 
00039 #include "DNA_listBase.h"
00040 #include "DNA_texture_types.h" /* ColorBand */
00041 
00042 #ifdef __cplusplus
00043 extern "C" {
00044 #endif
00045 
00046 /* themes; defines in BIF_resource.h */
00047 struct ColorBand;
00048 
00049 /* ************************ style definitions ******************** */
00050 
00051 #define MAX_STYLE_NAME  64
00052 #define MAX_FONT_NAME   256
00053 
00054 /* default uifont_id offered by Blender */
00055 #define UIFONT_DEFAULT  0
00056 /*#define UIFONT_BITMAP 1*/ /*UNUSED*/
00057 /* free slots */
00058 #define UIFONT_CUSTOM1  2
00059 #define UIFONT_CUSTOM2  3
00060 
00061 /* default fonts to load/initalize */
00062 /* first font is the default (index 0), others optional */
00063 typedef struct uiFont {
00064         struct uiFont *next, *prev;
00065         char filename[256];
00066         short blf_id;           /* from blfont lib */
00067         short uifont_id;        /* own id */
00068         short r_to_l;           /* fonts that read from left to right */
00069         short pad;
00070         
00071 } uiFont;
00072 
00073 /* this state defines appearance of text */
00074 typedef struct uiFontStyle {
00075         short uifont_id;                /* saved in file, 0 is default */
00076         short points;                   /* actual size depends on 'global' dpi */
00077         short kerning;                  /* unfitted or default kerning value. */
00078         char pad[6];
00079         short italic, bold;             /* style hint */
00080         short shadow;                   /* value is amount of pixels blur */
00081         short shadx, shady;             /* shadow offset in pixels */
00082         short align;                    /* text align hint */
00083         float shadowalpha;              /* total alpha */
00084         float shadowcolor;              /* 1 value, typically white or black anyway */
00085         
00086 } uiFontStyle;
00087 
00088 /* uiFontStyle->align */
00089 #define UI_STYLE_TEXT_LEFT              0
00090 #define UI_STYLE_TEXT_CENTER    1
00091 #define UI_STYLE_TEXT_RIGHT             2
00092 
00093 
00094 /* this is fed to the layout engine and widget code */
00095 
00096 typedef struct uiStyle {
00097         struct uiStyle *next, *prev;
00098         
00099         char name[64];                  /* MAX_STYLE_NAME */
00100         
00101         uiFontStyle paneltitle;
00102         uiFontStyle grouplabel;
00103         uiFontStyle widgetlabel;
00104         uiFontStyle widget;
00105         
00106         float panelzoom;
00107         
00108         short minlabelchars;    /* in characters */
00109         short minwidgetchars;   /* in characters */
00110 
00111         short columnspace;
00112         short templatespace;
00113         short boxspace;
00114         short buttonspacex;
00115         short buttonspacey;
00116         short panelspace;
00117         short panelouter;
00118 
00119         short pad[1];
00120 } uiStyle;
00121 
00122 typedef struct uiWidgetColors {
00123         char outline[4];
00124         char inner[4];
00125         char inner_sel[4];
00126         char item[4];
00127         char text[4];
00128         char text_sel[4];
00129         short shaded;
00130         short shadetop, shadedown;
00131         short alpha_check;
00132 } uiWidgetColors;
00133 
00134 typedef struct uiWidgetStateColors {
00135         char inner_anim[4];
00136         char inner_anim_sel[4];
00137         char inner_key[4];
00138         char inner_key_sel[4];
00139         char inner_driven[4];
00140         char inner_driven_sel[4];
00141         float blend, pad;
00142 } uiWidgetStateColors;
00143 
00144 typedef struct ThemeUI {
00145         
00146         /* Interface Elements (buttons, menus, icons) */
00147         uiWidgetColors wcol_regular, wcol_tool, wcol_text;
00148         uiWidgetColors wcol_radio, wcol_option, wcol_toggle;
00149         uiWidgetColors wcol_num, wcol_numslider;
00150         uiWidgetColors wcol_menu, wcol_pulldown, wcol_menu_back, wcol_menu_item;
00151         uiWidgetColors wcol_box, wcol_scroll, wcol_progress, wcol_list_item;
00152         
00153         uiWidgetStateColors wcol_state;
00154         
00155         char iconfile[80];      // FILE_MAXFILE length
00156         
00157 } ThemeUI;
00158 
00159 /* try to put them all in one, if needed a special struct can be created as well
00160  * for example later on, when we introduce wire colors for ob types or so...
00161  */
00162 typedef struct ThemeSpace {
00163         /* main window colors */
00164         char back[4];
00165         char title[4];
00166         char text[4];
00167         char text_hi[4];
00168         
00169         /* header colors */
00170         char header[4];
00171         char header_title[4];
00172         char header_text[4];
00173         char header_text_hi[4];
00174 
00175         /* button/tool regions */
00176         char button[4];
00177         char button_title[4];
00178         char button_text[4];    
00179         char button_text_hi[4];
00180         
00181         /* listview regions */
00182         char list[4];
00183         char list_title[4];
00184         char list_text[4];
00185         char list_text_hi[4];
00186         
00187         /* float panel */
00188         char panel[4];
00189         char panel_title[4];    
00190         char panel_text[4];     
00191         char panel_text_hi[4];
00192         
00193         char shade1[4];
00194         char shade2[4];
00195         
00196         char hilite[4];
00197         char grid[4]; 
00198         
00199         char wire[4], select[4];
00200         char lamp[4];
00201         char active[4], group[4], group_active[4], transform[4];
00202         char vertex[4], vertex_select[4];
00203         char edge[4], edge_select[4];
00204         char edge_seam[4], edge_sharp[4], edge_facesel[4], edge_crease[4];
00205         char face[4], face_select[4];   // solid faces
00206         char face_dot[4];                               // selected color
00207         char extra_edge_len[4], extra_face_angle[4], extra_face_area[4], pad3[4];
00208         char normal[4];
00209         char vertex_normal[4];
00210         char bone_solid[4], bone_pose[4];
00211         char strip[4], strip_select[4];
00212         char cframe[4];
00213         char nurb_uline[4], nurb_vline[4];
00214         char act_spline[4], nurb_sel_uline[4], nurb_sel_vline[4], lastsel_point[4];
00215         char handle_free[4], handle_auto[4], handle_vect[4], handle_align[4];
00216         char handle_sel_free[4], handle_sel_auto[4], handle_sel_vect[4], handle_sel_align[4];
00217         char ds_channel[4], ds_subchannel[4]; // dopesheet
00218         
00219         char console_output[4], console_input[4], console_info[4], console_error[4];
00220         char console_cursor[4];
00221         
00222         char vertex_size, outline_width, facedot_size;
00223         char noodle_curving;
00224 
00225         char syntaxl[4], syntaxn[4], syntaxb[4]; // syntax for textwindow and nodes
00226         char syntaxv[4], syntaxc[4];
00227         
00228         char movie[4], image[4], scene[4], audio[4];            // for sequence editor
00229         char effect[4], plugin[4], transition[4], meta[4];
00230         char editmesh_active[4]; 
00231 
00232         char handle_vertex[4];
00233         char handle_vertex_select[4];
00234         
00235         char handle_vertex_size;
00236         char hpad[7];
00237         
00238         char preview_back[4];
00239         
00240 } ThemeSpace;
00241 
00242 
00243 /* set of colors for use as a custom color set for Objects/Bones wire drawing */
00244 typedef struct ThemeWireColor {
00245         char    solid[4];
00246         char    select[4];
00247         char    active[4];
00248         
00249         short   flag;
00250         short   pad;
00251 } ThemeWireColor; 
00252 
00253 /* flags for ThemeWireColor */
00254 #define TH_WIRECOLOR_CONSTCOLS  (1<<0)
00255 #define TH_WIRECOLOR_TEXTCOLS   (1<<1)
00256 
00257 /* A theme */
00258 typedef struct bTheme {
00259         struct bTheme *next, *prev;
00260         char name[32];
00261         
00262         ThemeUI tui;
00263         
00264         /* Individual Spacetypes */
00265         ThemeSpace tbuts;       
00266         ThemeSpace tv3d;
00267         ThemeSpace tfile;
00268         ThemeSpace tipo;
00269         ThemeSpace tinfo;       
00270         ThemeSpace tsnd;
00271         ThemeSpace tact;
00272         ThemeSpace tnla;
00273         ThemeSpace tseq;
00274         ThemeSpace tima;
00275         ThemeSpace timasel;
00276         ThemeSpace text;
00277         ThemeSpace toops;
00278         ThemeSpace ttime;
00279         ThemeSpace tnode;
00280         ThemeSpace tlogic;
00281         ThemeSpace tuserpref;   
00282         ThemeSpace tconsole;
00283         
00284         /* 20 sets of bone colors for this theme */
00285         ThemeWireColor tarm[20];
00286         /*ThemeWireColor tobj[20];*/
00287         
00288         int active_theme_area, pad;
00289         
00290 } bTheme;
00291 
00292 /* for the moment only the name. may want to store options with this later */
00293 typedef struct bAddon {
00294         struct bAddon *next, *prev;
00295         char module[64];
00296 } bAddon;
00297 
00298 typedef struct SolidLight {
00299         int flag, pad;
00300         float col[4], spec[4], vec[4];
00301 } SolidLight;
00302 
00303 typedef struct UserDef {
00304         int flag, dupflag;
00305         int savetime;
00306         char tempdir[160];      // FILE_MAXDIR length
00307         char fontdir[160];
00308         char renderdir[240]; // FILE_MAX length
00309         char textudir[160];
00310         char plugtexdir[160];
00311         char plugseqdir[160];
00312         char pythondir[160];
00313         char sounddir[160];
00314         char image_editor[240]; // FILE_MAX length
00315         char anim_player[240];  // FILE_MAX length
00316         int anim_player_preset;
00317         
00318         short v2d_min_gridsize;         /* minimum spacing between gridlines in View2D grids */
00319         short timecode_style;           /* style of timecode display */
00320         
00321         short versions;
00322         short dbl_click_time;
00323         
00324         int gameflags;
00325         int wheellinescroll;
00326         int uiflag, language;
00327         short userpref, viewzoom;
00328         
00329         int mixbufsize;
00330         int audiodevice;
00331         int audiorate;
00332         int audioformat;
00333         int audiochannels;
00334 
00335         int scrollback; /* console scrollback limit */
00336         int dpi;                /* range 48-128? */
00337         short encoding;
00338         short transopts;
00339         short menuthreshold1, menuthreshold2;
00340         
00341         struct ListBase themes;
00342         struct ListBase uifonts;
00343         struct ListBase uistyles;
00344         struct ListBase keymaps;                /* deprecated in favor of user_keymaps */
00345         struct ListBase user_keymaps;
00346         struct ListBase addons;
00347         char keyconfigstr[64];
00348         
00349         short undosteps;
00350         short undomemory;
00351         short gp_manhattendist, gp_euclideandist, gp_eraser;
00352         short gp_settings;
00353         short tb_leftmouse, tb_rightmouse;
00354         struct SolidLight light[3];
00355         short tw_hotspot, tw_flag, tw_handlesize, tw_size;
00356         short textimeout,texcollectrate;
00357         short wmdrawmethod; /* removed wmpad */
00358         short dragthreshold;
00359         int memcachelimit;
00360         int prefetchframes;
00361         short frameserverport;
00362         short pad_rot_angle;    /*control the rotation step of the view when PAD2,PAD4,PAD6&PAD8 is use*/
00363         short obcenter_dia;
00364         short rvisize;                  /* rotating view icon size */
00365         short rvibright;                /* rotating view icon brightness */
00366         short recent_files;             /* maximum number of recently used files to remember  */
00367         short smooth_viewtx;    /* miliseconds to spend spinning the view */
00368         short glreslimit;
00369         short curssize;
00370         short color_picker_type;
00371         short ipo_new;                  /* interpolation mode for newly added F-Curves */
00372         short keyhandles_new;   /* handle types for newly added keyframes */
00373 
00374         short scrcastfps;               /* frame rate for screencast to be played back */
00375         short scrcastwait;              /* milliseconds between screencast snapshots */
00376         
00377         short widget_unit;              /* defaults to 20 for 72 DPI setting */
00378         short anisotropic_filter;
00379         /*short pad[3];                 */
00380 
00381         float ndof_sensitivity; /* overall sensitivity of 3D mouse */
00382         int ndof_flag;                  /* flags for 3D mouse */
00383 
00384         char versemaster[160];
00385         char verseuser[160];
00386         float glalphaclip;
00387         
00388         short autokey_mode;             /* autokeying mode */
00389         short autokey_flag;             /* flags for autokeying */
00390         
00391         short text_render, pad9[3];             /*options for text rendering*/
00392 
00393         struct ColorBand coba_weight;   /* from texture.h */
00394 
00395         float sculpt_paint_overlay_col[3];
00396         int pad3;
00397 
00398         char author[80];        /* author name for file formats supporting it */
00399 } UserDef;
00400 
00401 extern UserDef U; /* from blenkernel blender.c */
00402 
00403 /* ***************** USERDEF ****************** */
00404 
00405 /* userpref/section */
00406 #define USER_SECTION_INTERFACE  0
00407 #define USER_SECTION_EDIT               1
00408 #define USER_SECTION_FILE               2
00409 #define USER_SECTION_SYSTEM             3
00410 #define USER_SECTION_THEME              4
00411 #define USER_SECTION_INPUT              5
00412 #define USER_SECTION_ADDONS     6
00413 
00414 /* flag */
00415 #define USER_AUTOSAVE                   (1 << 0)
00416 /*#define USER_AUTOGRABGRID             (1 << 1)        deprecated */
00417 /*#define USER_AUTOROTGRID              (1 << 2)        deprecated */
00418 /*#define USER_AUTOSIZEGRID             (1 << 3)        deprecated */
00419 #define USER_SCENEGLOBAL                (1 << 4)
00420 #define USER_TRACKBALL                  (1 << 5)
00421 /*#define USER_DUPLILINK                (1 << 6)        deprecated */
00422 /*#define USER_FSCOLLUM                 (1 << 7)        deprecated */
00423 #define USER_MAT_ON_OB                  (1 << 8)
00424 /*#define USER_NO_CAPSLOCK              (1 << 9)*/ /* not used anywhere */
00425 /*#define USER_VIEWMOVE                 (1 << 10)*/ /* not used anywhere */
00426 #define USER_TOOLTIPS                   (1 << 11)
00427 #define USER_TWOBUTTONMOUSE             (1 << 12)
00428 #define USER_NONUMPAD                   (1 << 13)
00429 #define USER_LMOUSESELECT               (1 << 14)
00430 #define USER_FILECOMPRESS               (1 << 15)
00431 #define USER_SAVE_PREVIEWS              (1 << 16)
00432 #define USER_CUSTOM_RANGE               (1 << 17)
00433 #define USER_ADD_EDITMODE               (1 << 18)
00434 #define USER_ADD_VIEWALIGNED    (1 << 19)
00435 #define USER_RELPATHS                   (1 << 20)
00436 #define USER_RELEASECONFIRM             (1 << 21)
00437 #define USER_SCRIPT_AUTOEXEC_DISABLE    (1 << 22)
00438 #define USER_FILENOUI                   (1 << 23)
00439 #define USER_NONEGFRAMES                (1 << 24)
00440 #define USER_TXT_TABSTOSPACES_DISABLE   (1 << 25)
00441 #define USER_TOOLTIPS_PYTHON    (1 << 26)
00442 
00443 /* helper macro for checking frame clamping */
00444 #define FRAMENUMBER_MIN_CLAMP(cfra) \
00445         { \
00446                 if ((U.flag & USER_NONEGFRAMES) && (cfra < 0)) \
00447                         cfra = 0; \
00448         }
00449 
00450 /* viewzom */
00451 #define USER_ZOOM_CONT                  0
00452 #define USER_ZOOM_SCALE                 1
00453 #define USER_ZOOM_DOLLY                 2
00454 
00455 /* uiflag */
00456 // old flag for #define USER_KEYINSERTACT               (1 << 0)
00457 // old flag for #define USER_KEYINSERTOBJ               (1 << 1)
00458 #define USER_WHEELZOOMDIR               (1 << 2)
00459 #define USER_FILTERFILEEXTS             (1 << 3)
00460 #define USER_DRAWVIEWINFO               (1 << 4)
00461 #define USER_PLAINMENUS                 (1 << 5)                // old EVTTOCONSOLE print ghost events, here for tuhopuu compat. --phase
00462                                                                 // old flag for hide pulldown was here 
00463 /*#define USER_FLIPFULLSCREEN           (1 << 7)*/ /* deprecated */
00464 #define USER_ALLWINCODECS               (1 << 8)
00465 #define USER_MENUOPENAUTO               (1 << 9)
00466 /*#define USER_PANELPINNED              (1 << 10)               deprecated */
00467 #define USER_AUTOPERSP                  (1 << 11)
00468 #define USER_LOCKAROUND         (1 << 12)
00469 #define USER_GLOBALUNDO         (1 << 13)
00470 #define USER_ORBIT_SELECTION    (1 << 14)
00471 // old flag for #define USER_KEYINSERTAVAI              (1 << 15)
00472 #define USER_ORBIT_ZBUF                 (1 << 15)
00473 #define USER_HIDE_DOT                   (1 << 16)
00474 #define USER_SHOW_ROTVIEWICON   (1 << 17)
00475 #define USER_SHOW_VIEWPORTNAME  (1 << 18)
00476 #define USER_CAM_LOCK_NO_PARENT (1 << 19)
00477 #define USER_ZOOM_TO_MOUSEPOS   (1 << 20)
00478 #define USER_SHOW_FPS                   (1 << 21)
00479 #define USER_MMB_PASTE                  (1 << 22)
00480 #define USER_MENUFIXEDORDER             (1 << 23)
00481 #define USER_CONTINUOUS_MOUSE   (1 << 24)
00482 #define USER_ZOOM_INVERT                (1 << 25)
00483 #define USER_ZOOM_HORIZ         (1 << 26) /* for CONTINUE and DOLLY zoom */
00484 #define USER_SPLASH_DISABLE             (1 << 27)
00485 #define USER_HIDE_RECENT                (1 << 28)
00486 #define USER_SHOW_THUMBNAILS    (1 << 29)
00487 
00488 /* Auto-Keying mode */
00489         /* AUTOKEY_ON is a bitflag */
00490 #define         AUTOKEY_ON                              1
00491         /* AUTOKEY_ON + 2**n...  (i.e. AUTOKEY_MODE_NORMAL = AUTOKEY_ON + 2) to preserve setting, even when autokey turned off  */
00492 #define         AUTOKEY_MODE_NORMAL             3
00493 #define         AUTOKEY_MODE_EDITKEYS   5
00494 
00495 /* Auto-Keying flag
00496  * U.autokey_flag (not strictly used when autokeying only - is also used when keyframing these days)
00497  * note: AUTOKEY_FLAG_* is used with a macro, search for lines like IS_AUTOKEY_FLAG(INSERTAVAIL)
00498  */
00499 #define         AUTOKEY_FLAG_INSERTAVAIL        (1<<0)
00500 #define         AUTOKEY_FLAG_INSERTNEEDED       (1<<1)
00501 #define         AUTOKEY_FLAG_AUTOMATKEY         (1<<2)
00502 #define         AUTOKEY_FLAG_XYZ2RGB            (1<<3)
00503 
00504 /* toolsettings->autokey_flag */
00505 #define         AUTOKEY_FLAG_ONLYKEYINGSET      (1<<6)
00506 #define         ANIMRECORD_FLAG_WITHNLA         (1<<10)
00507 
00508 /* transopts */
00509 #define USER_TR_TOOLTIPS                (1 << 0)
00510 #define USER_TR_BUTTONS                 (1 << 1)
00511 #define USER_TR_MENUS                   (1 << 2)
00512 /*#define USER_TR_FILESELECT    (1 << 3)        deprecated*/
00513 /*#define USER_TR_TEXTEDIT              (1 << 4)        deprecated*/
00514 #define USER_DOTRANSLATE                (1 << 5)
00515 #define USER_USETEXTUREFONT             (1 << 6)
00516 /*#define CONVERT_TO_UTF8                       (1 << 7)        deprecated*/
00517 
00518 /* dupflag */
00519 #define USER_DUP_MESH                   (1 << 0)
00520 #define USER_DUP_CURVE                  (1 << 1)
00521 #define USER_DUP_SURF                   (1 << 2)
00522 #define USER_DUP_FONT                   (1 << 3)
00523 #define USER_DUP_MBALL                  (1 << 4)
00524 #define USER_DUP_LAMP                   (1 << 5)
00525 #define USER_DUP_IPO                    (1 << 6)
00526 #define USER_DUP_MAT                    (1 << 7)
00527 #define USER_DUP_TEX                    (1 << 8)
00528 #define USER_DUP_ARM                    (1 << 9)
00529 #define USER_DUP_ACT                    (1 << 10)
00530 #define USER_DUP_PSYS                   (1 << 11)
00531 
00532 /* gameflags */
00533 // #define USER_DEPRECATED_FLAG 1
00534 // #define USER_DISABLE_SOUND           2 deprecated, don't use without checking for
00535 // backwards compatibilty in do_versions!
00536 #define USER_DISABLE_MIPMAP             4
00537 #define USER_DISABLE_VBO                8
00538 #define USER_DISABLE_AA                 16
00539 
00540 /* wm draw method */
00541 #define USER_DRAW_TRIPLE                0
00542 #define USER_DRAW_OVERLAP               1
00543 #define USER_DRAW_FULL                  2
00544 #define USER_DRAW_AUTOMATIC             3
00545 #define USER_DRAW_OVERLAP_FLIP  4
00546 
00547 /* text draw options*/
00548 #define USER_TEXT_DISABLE_AA    (1 << 0)
00549 
00550 /* tw_flag (transform widget) */
00551 
00552 /* gp_settings (Grease Pencil Settings) */
00553 #define GP_PAINT_DOSMOOTH               (1<<0)
00554 #define GP_PAINT_DOSIMPLIFY             (1<<1)
00555 
00556 /* color picker types */
00557 #define USER_CP_CIRCLE          0
00558 #define USER_CP_SQUARE_SV       1
00559 #define USER_CP_SQUARE_HS       2
00560 #define USER_CP_SQUARE_HV       3
00561 
00562 /* timecode display styles */
00563         /* as little info as is necessary to show relevant info
00564          * with '+' to denote the frames 
00565          * i.e. HH:MM:SS+FF, MM:SS+FF, SS+FF, or MM:SS
00566          */
00567 #define USER_TIMECODE_MINIMAL           0
00568         /* reduced SMPTE - (HH:)MM:SS:FF */
00569 #define USER_TIMECODE_SMPTE_MSF         1
00570         /* full SMPTE - HH:MM:SS:FF */
00571 #define USER_TIMECODE_SMPTE_FULL        2
00572         /* milliseconds for sub-frames - HH:MM:SS.sss */
00573 #define USER_TIMECODE_MILLISECONDS      3
00574         /* seconds only */
00575 #define USER_TIMECODE_SECONDS_ONLY      4
00576 
00577 /* theme drawtypes */
00578 #define TH_MINIMAL      0
00579 #define TH_ROUNDSHADED  1
00580 #define TH_ROUNDED      2
00581 #define TH_OLDSKOOL     3
00582 #define TH_SHADED       4
00583 
00584 /* ndof_flag (3D mouse options) */
00585 #define NDOF_SHOW_GUIDE     (1 << 0)
00586 #define NDOF_FLY_HELICOPTER (1 << 1)
00587 #define NDOF_LOCK_HORIZON   (1 << 2)
00588 /* the following might not need to be saved between sessions,
00589    but they do need to live somewhere accessible... */
00590 #define NDOF_SHOULD_PAN     (1 << 3)
00591 #define NDOF_SHOULD_ZOOM    (1 << 4)
00592 #define NDOF_SHOULD_ROTATE  (1 << 5)
00593 /* orbit navigation modes
00594    only two options, so it's sort of a hyrbrid bool/enum
00595    if ((U.ndof_flag & NDOF_ORBIT_MODE) == NDOF_OM_OBJECT)... */
00596 /*
00597 #define NDOF_ORBIT_MODE     (1 << 6)
00598 #define NDOF_OM_TARGETCAMERA 0
00599 #define NDOF_OM_OBJECT      NDOF_ORBIT_MODE
00600 */
00601 /* actually... users probably don't care about what the mode
00602    is called, just that it feels right */
00603 #define NDOF_ORBIT_INVERT_AXES (1 << 6)
00604 /* zoom is up/down if this flag is set (otherwise forward/backward) */
00605 #define NDOF_ZOOM_UPDOWN (1 << 7)
00606 #define NDOF_ZOOM_INVERT (1 << 8)
00607 
00608 
00609 #ifdef __cplusplus
00610 }
00611 #endif
00612 
00613 #endif