|
Blender
V2.59
|
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