Merging trunk up to r38932.
[blender.git] / source / blender / makesdna / DNA_userdef_types.h
index 3b39f06..b5a1a36 100644 (file)
@@ -1,6 +1,4 @@
-/**
- * blenkernel/DNA_userdef_types.h (mar-2001 nzc)
- *
+/*
  *     $Id$
  *
  * ***** BEGIN GPL LICENSE BLOCK *****
@@ -17,7 +15,7 @@
  *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  *
  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
  * All rights reserved.
 
 #ifndef DNA_USERDEF_TYPES_H
 #define DNA_USERDEF_TYPES_H
+/** \file DNA_userdef_types.h
+ *  \ingroup DNA
+ *  \since mar-2001
+ *  \author nzc
+ *
+ */
 
 #include "DNA_listBase.h"
-#include "DNA_texture_types.h"
+#include "DNA_texture_types.h" /* ColorBand */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
 
 /* themes; defines in BIF_resource.h */
 struct ColorBand;
@@ -45,7 +53,7 @@ struct ColorBand;
 
 /* default uifont_id offered by Blender */
 #define UIFONT_DEFAULT 0
-#define UIFONT_BITMAP  1
+/*#define UIFONT_BITMAP        1*/ /*UNUSED*/
 /* free slots */
 #define UIFONT_CUSTOM1 2
 #define UIFONT_CUSTOM2 3
@@ -84,6 +92,7 @@ typedef struct uiFontStyle {
 
 
 /* this is fed to the layout engine and widget code */
+
 typedef struct uiStyle {
        struct uiStyle *next, *prev;
        
@@ -119,7 +128,7 @@ typedef struct uiWidgetColors {
        char text_sel[4];
        short shaded;
        short shadetop, shadedown;
-       short pad;
+       short alpha_check;
 } uiWidgetColors;
 
 typedef struct uiWidgetStateColors {
@@ -139,8 +148,8 @@ typedef struct ThemeUI {
        uiWidgetColors wcol_radio, wcol_option, wcol_toggle;
        uiWidgetColors wcol_num, wcol_numslider;
        uiWidgetColors wcol_menu, wcol_pulldown, wcol_menu_back, wcol_menu_item;
-       uiWidgetColors wcol_box, wcol_scroll, wcol_list_item;
-
+       uiWidgetColors wcol_box, wcol_scroll, wcol_progress, wcol_list_item;
+       
        uiWidgetStateColors wcol_state;
        
        char iconfile[80];      // FILE_MAXFILE length
@@ -154,13 +163,13 @@ typedef struct ThemeSpace {
        /* main window colors */
        char back[4];
        char title[4];
-       char text[4];   
+       char text[4];
        char text_hi[4];
        
        /* header colors */
        char header[4];
        char header_title[4];
-       char header_text[4];    
+       char header_text[4];
        char header_text_hi[4];
 
        /* button/tool regions */
@@ -172,7 +181,7 @@ typedef struct ThemeSpace {
        /* listview regions */
        char list[4];
        char list_title[4];
-       char list_text[4];      
+       char list_text[4];
        char list_text_hi[4];
        
        /* float panel */
@@ -188,24 +197,30 @@ typedef struct ThemeSpace {
        char grid[4]; 
        
        char wire[4], select[4];
-       char lamp[4];
+       char lamp[4], speaker[4], pad2[4];
        char active[4], group[4], group_active[4], transform[4];
        char vertex[4], vertex_select[4];
        char edge[4], edge_select[4];
-       char edge_seam[4], edge_sharp[4], edge_facesel[4];
+       char edge_seam[4], edge_sharp[4], edge_facesel[4], edge_crease[4];
        char face[4], face_select[4];   // solid faces
        char face_dot[4];                               // selected color
+       char extra_edge_len[4], extra_face_angle[4], extra_face_area[4], pad3[4];
        char normal[4];
        char vertex_normal[4];
        char bone_solid[4], bone_pose[4];
        char strip[4], strip_select[4];
        char cframe[4];
+       char nurb_uline[4], nurb_vline[4];
+       char act_spline[4], nurb_sel_uline[4], nurb_sel_vline[4], lastsel_point[4];
+       char handle_free[4], handle_auto[4], handle_vect[4], handle_align[4];
+       char handle_sel_free[4], handle_sel_auto[4], handle_sel_vect[4], handle_sel_align[4];
        char ds_channel[4], ds_subchannel[4]; // dopesheet
        
        char console_output[4], console_input[4], console_info[4], console_error[4];
+       char console_cursor[4];
        
-       char vertex_size, facedot_size;
-       char bpad[6];
+       char vertex_size, outline_width, facedot_size;
+       char bpad;
 
        char syntaxl[4], syntaxn[4], syntaxb[4]; // syntax for textwindow and nodes
        char syntaxv[4], syntaxc[4];
@@ -218,7 +233,7 @@ typedef struct ThemeSpace {
        char handle_vertex_select[4];
        
        char handle_vertex_size;
-       char hpad[3];
+       char hpad[7];
        
        char preview_back[4];
        
@@ -274,6 +289,12 @@ typedef struct bTheme {
        
 } bTheme;
 
+/* for the moment only the name. may want to store options with this later */
+typedef struct bAddon {
+       struct bAddon *next, *prev;
+       char module[64];
+} bAddon;
+
 typedef struct SolidLight {
        int flag, pad;
        float col[4], spec[4], vec[4];
@@ -284,12 +305,13 @@ typedef struct UserDef {
        int savetime;
        char tempdir[160];      // FILE_MAXDIR length
        char fontdir[160];
-       char renderdir[160];
+       char renderdir[240]; // FILE_MAX length
        char textudir[160];
        char plugtexdir[160];
        char plugseqdir[160];
        char pythondir[160];
        char sounddir[160];
+       char image_editor[240]; // FILE_MAX length
        char anim_player[240];  // FILE_MAX length
        int anim_player_preset;
        
@@ -320,6 +342,7 @@ typedef struct UserDef {
        struct ListBase uifonts;
        struct ListBase uistyles;
        struct ListBase keymaps;
+       struct ListBase addons;
        char keyconfigstr[64];
        
        short undosteps;
@@ -330,7 +353,8 @@ typedef struct UserDef {
        struct SolidLight light[3];
        short tw_hotspot, tw_flag, tw_handlesize, tw_size;
        short textimeout,texcollectrate;
-       short wmdrawmethod, wmpad;
+       short wmdrawmethod; /* removed wmpad */
+       short dragthreshold;
        int memcachelimit;
        int prefetchframes;
        short frameserverport;
@@ -341,13 +365,20 @@ typedef struct UserDef {
        short recent_files;             /* maximum number of recently used files to remember  */
        short smooth_viewtx;    /* miliseconds to spend spinning the view */
        short glreslimit;
-       short ndof_pan, ndof_rotate;
-       short curssize, ipo_new;
+       short curssize;
        short color_picker_type;
-       short pad2;
+       short ipo_new;                  /* interpolation mode for newly added F-Curves */
+       short keyhandles_new;   /* handle types for newly added keyframes */
 
        short scrcastfps;               /* frame rate for screencast to be played back */
        short scrcastwait;              /* milliseconds between screencast snapshots */
+       
+       short widget_unit;              /* defaults to 20 for 72 DPI setting */
+       short anisotropic_filter;
+       /*short pad[3];                 */
+
+       float ndof_sensitivity; /* overall sensitivity of 3D mouse */
+       int ndof_flag;                  /* flags for 3D mouse */
 
        char versemaster[160];
        char verseuser[160];
@@ -355,8 +386,15 @@ typedef struct UserDef {
        
        short autokey_mode;             /* autokeying mode */
        short autokey_flag;             /* flags for autokeying */
+       
+       short text_render, pad9[3];             /*options for text rendering*/
 
        struct ColorBand coba_weight;   /* from texture.h */
+
+       float sculpt_paint_overlay_col[3];
+       int pad3;
+
+       char author[80];        /* author name for file formats supporting it */
 } UserDef;
 
 extern UserDef U; /* from blenkernel blender.c */
@@ -370,19 +408,20 @@ extern UserDef U; /* from blenkernel blender.c */
 #define USER_SECTION_SYSTEM            3
 #define USER_SECTION_THEME             4
 #define USER_SECTION_INPUT             5
+#define USER_SECTION_ADDONS    6
 
 /* flag */
 #define USER_AUTOSAVE                  (1 << 0)
-#define USER_AUTOGRABGRID              (1 << 1)
-#define USER_AUTOROTGRID               (1 << 2)
-#define USER_AUTOSIZEGRID              (1 << 3)
+/*#define USER_AUTOGRABGRID            (1 << 1)        deprecated */
+/*#define USER_AUTOROTGRID             (1 << 2)        deprecated */
+/*#define USER_AUTOSIZEGRID            (1 << 3)        deprecated */
 #define USER_SCENEGLOBAL               (1 << 4)
 #define USER_TRACKBALL                 (1 << 5)
-#define USER_DUPLILINK                 (1 << 6)
-#define USER_FSCOLLUM                  (1 << 7)
+/*#define USER_DUPLILINK               (1 << 6)        deprecated */
+/*#define USER_FSCOLLUM                        (1 << 7)        deprecated */
 #define USER_MAT_ON_OB                 (1 << 8)
 /*#define USER_NO_CAPSLOCK             (1 << 9)*/ /* not used anywhere */
-#define USER_VIEWMOVE                  (1 << 10)
+/*#define USER_VIEWMOVE                        (1 << 10)*/ /* not used anywhere */
 #define USER_TOOLTIPS                  (1 << 11)
 #define USER_TWOBUTTONMOUSE            (1 << 12)
 #define USER_NONUMPAD                  (1 << 13)
@@ -393,9 +432,20 @@ extern UserDef U; /* from blenkernel blender.c */
 #define USER_ADD_EDITMODE              (1 << 18)
 #define USER_ADD_VIEWALIGNED   (1 << 19)
 #define USER_RELPATHS                  (1 << 20)
-#define USER_DRAGIMMEDIATE             (1 << 21)
-#define USER_DONT_DOSCRIPTLINKS        (1 << 22)
+#define USER_RELEASECONFIRM            (1 << 21)
+#define USER_SCRIPT_AUTOEXEC_DISABLE   (1 << 22)
 #define USER_FILENOUI                  (1 << 23)
+#define USER_NONEGFRAMES               (1 << 24)
+#define USER_TXT_TABSTOSPACES_DISABLE  (1 << 25)
+#define USER_TOOLTIPS_PYTHON    (1 << 26)
+#define USER_NO_RECENTLOAD_UPDATE (1 << 27)
+
+/* helper macro for checking frame clamping */
+#define FRAMENUMBER_MIN_CLAMP(cfra) \
+       { \
+               if ((U.flag & USER_NONEGFRAMES) && (cfra < 0)) \
+                       cfra = 0; \
+       }
 
 /* viewzom */
 #define USER_ZOOM_CONT                 0
@@ -410,10 +460,10 @@ extern UserDef U; /* from blenkernel blender.c */
 #define USER_DRAWVIEWINFO              (1 << 4)
 #define USER_PLAINMENUS                        (1 << 5)                // old EVTTOCONSOLE print ghost events, here for tuhopuu compat. --phase
                                                                // old flag for hide pulldown was here 
-#define USER_FLIPFULLSCREEN            (1 << 7)
+/*#define USER_FLIPFULLSCREEN          (1 << 7)*/ /* deprecated */
 #define USER_ALLWINCODECS              (1 << 8)
 #define USER_MENUOPENAUTO              (1 << 9)
-#define USER_PANELPINNED               (1 << 10)
+/*#define USER_PANELPINNED             (1 << 10)               deprecated */
 #define USER_AUTOPERSP                 (1 << 11)
 #define USER_LOCKAROUND        (1 << 12)
 #define USER_GLOBALUNDO        (1 << 13)
@@ -423,14 +473,17 @@ extern UserDef U; /* from blenkernel blender.c */
 #define USER_HIDE_DOT                  (1 << 16)
 #define USER_SHOW_ROTVIEWICON  (1 << 17)
 #define USER_SHOW_VIEWPORTNAME (1 << 18)
-// old flag for #define USER_KEYINSERTNEED             (1 << 19)
+#define USER_CAM_LOCK_NO_PARENT        (1 << 19)
 #define USER_ZOOM_TO_MOUSEPOS  (1 << 20)
 #define USER_SHOW_FPS                  (1 << 21)
 #define USER_MMB_PASTE                 (1 << 22)
 #define USER_MENUFIXEDORDER            (1 << 23)
 #define USER_CONTINUOUS_MOUSE  (1 << 24)
 #define USER_ZOOM_INVERT               (1 << 25)
-#define USER_ZOOM_DOLLY_HORIZ  (1 << 26)
+#define USER_ZOOM_HORIZ                (1 << 26) /* for CONTINUE and DOLLY zoom */
+#define USER_SPLASH_DISABLE            (1 << 27)
+#define USER_HIDE_RECENT               (1 << 28)
+#define USER_SHOW_THUMBNAILS   (1 << 29)
 
 /* Auto-Keying mode */
        /* AUTOKEY_ON is a bitflag */
@@ -439,26 +492,28 @@ extern UserDef U; /* from blenkernel blender.c */
 #define                AUTOKEY_MODE_NORMAL             3
 #define                AUTOKEY_MODE_EDITKEYS   5
 
-/* Auto-Keying flag */
-       /* U.autokey_flag (not strictly used when autokeying only - is also used when keyframing these days) */
+/* Auto-Keying flag
+ * U.autokey_flag (not strictly used when autokeying only - is also used when keyframing these days)
+ * note: AUTOKEY_FLAG_* is used with a macro, search for lines like IS_AUTOKEY_FLAG(INSERTAVAIL)
+ */
 #define                AUTOKEY_FLAG_INSERTAVAIL        (1<<0)
 #define                AUTOKEY_FLAG_INSERTNEEDED       (1<<1)
 #define                AUTOKEY_FLAG_AUTOMATKEY         (1<<2)
 #define                AUTOKEY_FLAG_XYZ2RGB            (1<<3)
-       /* U.autokey_flag (strictly autokeying only) */
+
+/* toolsettings->autokey_flag */
 #define        AUTOKEY_FLAG_ONLYKEYINGSET      (1<<6)
-       /* toolsettings->autokey_flag */
 #define        ANIMRECORD_FLAG_WITHNLA         (1<<10)
 
 /* transopts */
 #define        USER_TR_TOOLTIPS                (1 << 0)
 #define        USER_TR_BUTTONS                 (1 << 1)
 #define USER_TR_MENUS                  (1 << 2)
-#define USER_TR_FILESELECT             (1 << 3)
-#define USER_TR_TEXTEDIT               (1 << 4)
+/*#define USER_TR_FILESELECT   (1 << 3)        deprecated*/
+/*#define USER_TR_TEXTEDIT             (1 << 4)        deprecated*/
 #define USER_DOTRANSLATE               (1 << 5)
 #define USER_USETEXTUREFONT            (1 << 6)
-#define CONVERT_TO_UTF8                        (1 << 7)
+/*#define CONVERT_TO_UTF8                      (1 << 7)        deprecated*/
 
 /* dupflag */
 #define USER_DUP_MESH                  (1 << 0)
@@ -475,7 +530,7 @@ extern UserDef U; /* from blenkernel blender.c */
 #define        USER_DUP_PSYS                   (1 << 11)
 
 /* gameflags */
-#define USER_DEPRECATED_FLAG   1
+// #define USER_DEPRECATED_FLAG        1
 // #define USER_DISABLE_SOUND          2 deprecated, don't use without checking for
 // backwards compatibilty in do_versions!
 #define USER_DISABLE_MIPMAP            4
@@ -489,6 +544,9 @@ extern UserDef U; /* from blenkernel blender.c */
 #define USER_DRAW_AUTOMATIC            3
 #define USER_DRAW_OVERLAP_FLIP 4
 
+/* text draw options*/
+#define USER_TEXT_DISABLE_AA   (1 << 0)
+
 /* tw_flag (transform widget) */
 
 /* gp_settings (Grease Pencil Settings) */
@@ -523,4 +581,30 @@ extern UserDef U; /* from blenkernel blender.c */
 #define TH_OLDSKOOL    3
 #define TH_SHADED      4
 
+/* ndof_flag (3D mouse options) */
+#define NDOF_SHOW_GUIDE     (1 << 0)
+#define NDOF_FLY_HELICOPTER (1 << 1)
+#define NDOF_LOCK_HORIZON   (1 << 2)
+/* the following might not need to be saved between sessions,
+   but they do need to live somewhere accessible... */
+#define NDOF_SHOULD_PAN     (1 << 3)
+#define NDOF_SHOULD_ZOOM    (1 << 4)
+#define NDOF_SHOULD_ROTATE  (1 << 5)
+/* orbit navigation modes
+   only two options, so it's sort of a hyrbrid bool/enum
+   if ((U.ndof_flag & NDOF_ORBIT_MODE) == NDOF_OM_OBJECT)... */
+/*
+#define NDOF_ORBIT_MODE     (1 << 6)
+#define NDOF_OM_TARGETCAMERA 0
+#define NDOF_OM_OBJECT      NDOF_ORBIT_MODE
+*/
+/* actually... users probably don't care about what the mode
+   is called, just that it feels right */
+#define NDOF_ORBIT_INVERT_AXES (1 << 6)
+
+
+#ifdef __cplusplus
+}
+#endif
+
 #endif