tornavis/source/blender/makesdna/DNA_userdef_types.h

666 lines
19 KiB
C

/*
* ***** BEGIN GPL LICENSE BLOCK *****
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* 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., 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.
*
* The Original Code is: all of this file.
*
* Contributor(s): none yet.
*
* ***** END GPL LICENSE BLOCK *****
*/
/** \file DNA_userdef_types.h
* \ingroup DNA
* \since mar-2001
* \author nzc
*/
#ifndef __DNA_USERDEF_TYPES_H__
#define __DNA_USERDEF_TYPES_H__
#include "DNA_listBase.h"
#include "DNA_texture_types.h" /* ColorBand */
#ifdef __cplusplus
extern "C" {
#endif
/* themes; defines in BIF_resource.h */
struct ColorBand;
/* ************************ style definitions ******************** */
#define MAX_STYLE_NAME 64
#define MAX_FONT_NAME 256
/* default uifont_id offered by Blender */
#define UIFONT_DEFAULT 0
/*#define UIFONT_BITMAP 1*/ /*UNUSED*/
/* free slots */
#define UIFONT_CUSTOM1 2
#define UIFONT_CUSTOM2 3
/* default fonts to load/initalize */
/* first font is the default (index 0), others optional */
typedef struct uiFont {
struct uiFont *next, *prev;
char filename[1024];/* 1024 = FILE_MAX */
short blf_id; /* from blfont lib */
short uifont_id; /* own id */
short r_to_l; /* fonts that read from left to right */
short pad;
} uiFont;
/* this state defines appearance of text */
typedef struct uiFontStyle {
short uifont_id; /* saved in file, 0 is default */
short points; /* actual size depends on 'global' dpi */
short kerning; /* unfitted or default kerning value. */
char pad[6];
short italic, bold; /* style hint */
short shadow; /* value is amount of pixels blur */
short shadx, shady; /* shadow offset in pixels */
short align; /* text align hint */
float shadowalpha; /* total alpha */
float shadowcolor; /* 1 value, typically white or black anyway */
} uiFontStyle;
/* uiFontStyle->align */
#define UI_STYLE_TEXT_LEFT 0
#define UI_STYLE_TEXT_CENTER 1
#define UI_STYLE_TEXT_RIGHT 2
/* this is fed to the layout engine and widget code */
typedef struct uiStyle {
struct uiStyle *next, *prev;
char name[64]; /* MAX_STYLE_NAME */
uiFontStyle paneltitle;
uiFontStyle grouplabel;
uiFontStyle widgetlabel;
uiFontStyle widget;
float panelzoom;
short minlabelchars; /* in characters */
short minwidgetchars; /* in characters */
short columnspace;
short templatespace;
short boxspace;
short buttonspacex;
short buttonspacey;
short panelspace;
short panelouter;
short pad;
} uiStyle;
typedef struct uiWidgetColors {
char outline[4];
char inner[4];
char inner_sel[4];
char item[4];
char text[4];
char text_sel[4];
short shaded;
short shadetop, shadedown;
short alpha_check;
} uiWidgetColors;
typedef struct uiWidgetStateColors {
char inner_anim[4];
char inner_anim_sel[4];
char inner_key[4];
char inner_key_sel[4];
char inner_driven[4];
char inner_driven_sel[4];
float blend, pad;
} uiWidgetStateColors;
typedef struct uiPanelColors {
char header[4];
short show_header;
short pad;
} uiPanelColors;
typedef struct ThemeUI {
/* Interface Elements (buttons, menus, icons) */
uiWidgetColors wcol_regular, wcol_tool, wcol_text;
uiWidgetColors wcol_radio, wcol_option, wcol_toggle;
uiWidgetColors wcol_num, wcol_numslider;
uiWidgetColors wcol_menu, wcol_pulldown, wcol_menu_back, wcol_menu_item, wcol_tooltip;
uiWidgetColors wcol_box, wcol_scroll, wcol_progress, wcol_list_item;
uiWidgetStateColors wcol_state;
uiPanelColors panel;
char iconfile[256]; // FILE_MAXFILE length
float icon_alpha;
float pad;
} ThemeUI;
/* try to put them all in one, if needed a special struct can be created as well
* for example later on, when we introduce wire colors for ob types or so...
*/
typedef struct ThemeSpace {
/* main window colors */
char back[4];
char title[4];
char text[4];
char text_hi[4];
/* header colors */
char header[4];
char header_title[4];
char header_text[4];
char header_text_hi[4];
/* button/tool regions */
char button[4];
char button_title[4];
char button_text[4];
char button_text_hi[4];
/* listview regions */
char list[4];
char list_title[4];
char list_text[4];
char list_text_hi[4];
/* float panel */
char panel[4];
char panel_title[4];
char panel_text[4];
char panel_text_hi[4];
char shade1[4];
char shade2[4];
char hilite[4];
char grid[4];
char wire[4], select[4];
char lamp[4], speaker[4], empty[4], camera[4], pad[8];
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], 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], handle_auto_clamped[4];
char handle_sel_free[4], handle_sel_auto[4], handle_sel_vect[4], handle_sel_align[4], handle_sel_auto_clamped[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, outline_width, facedot_size;
char noodle_curving;
char syntaxl[4], syntaxn[4], syntaxb[4]; // syntax for textwindow and nodes
char syntaxv[4], syntaxc[4];
char movie[4], movieclip[4], mask[4], image[4], scene[4], audio[4]; // for sequence editor
char effect[4], hpad0[4], transition[4], meta[4];
char editmesh_active[4];
char handle_vertex[4];
char handle_vertex_select[4];
char handle_vertex_size;
char marker_outline[4], marker[4], act_marker[4], sel_marker[4], dis_marker[4], lock_marker[4];
char bundle_solid[4];
char path_before[4], path_after[4];
char camera_path[4];
char hpad[3];
char preview_back[4];
char preview_stitch_face[4];
char preview_stitch_edge[4];
char preview_stitch_vert[4];
char preview_stitch_stitchable[4];
char preview_stitch_unstitchable[4];
char preview_stitch_active[4];
char match[4]; /* outliner - filter match */
char selected_highlight[4]; /* outliner - selected item */
char skin_root[4]; /* Skin modifier root color */
int pad4;
/* NLA */
char anim_active[4]; /* Active Action + Summary Channel */
char anim_non_active[4]; /* Active Action = NULL */
char nla_tweaking[4]; /* NLA 'Tweaking' action/strip */
char nla_tweakdupli[4]; /* NLA - warning color for duplicate instances of tweaking strip */
char nla_transition[4], nla_transition_sel[4]; /* NLA "Transition" strips */
char nla_meta[4], nla_meta_sel[4]; /* NLA "Meta" strips */
char nla_sound[4], nla_sound_sel[4]; /* NLA "Sound" strips */
} ThemeSpace;
/* set of colors for use as a custom color set for Objects/Bones wire drawing */
typedef struct ThemeWireColor {
char solid[4];
char select[4];
char active[4];
short flag;
short pad;
} ThemeWireColor;
/* flags for ThemeWireColor */
#define TH_WIRECOLOR_CONSTCOLS (1<<0)
#define TH_WIRECOLOR_TEXTCOLS (1<<1)
/* A theme */
typedef struct bTheme {
struct bTheme *next, *prev;
char name[32];
ThemeUI tui;
/* Individual Spacetypes */
ThemeSpace tbuts;
ThemeSpace tv3d;
ThemeSpace tfile;
ThemeSpace tipo;
ThemeSpace tinfo;
ThemeSpace tact;
ThemeSpace tnla;
ThemeSpace tseq;
ThemeSpace tima;
ThemeSpace text;
ThemeSpace toops;
ThemeSpace ttime;
ThemeSpace tnode;
ThemeSpace tlogic;
ThemeSpace tuserpref;
ThemeSpace tconsole;
ThemeSpace tclip;
/* 20 sets of bone colors for this theme */
ThemeWireColor tarm[20];
/*ThemeWireColor tobj[20];*/
int active_theme_area, pad;
} 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];
} SolidLight;
typedef struct UserDef {
int flag, dupflag;
int savetime;
char tempdir[768]; /* FILE_MAXDIR length */
char fontdir[768];
char renderdir[1024]; /* FILE_MAX length */
char textudir[768];
char pythondir[768];
char sounddir[768];
char image_editor[1024]; /* 1024 = FILE_MAX */
char anim_player[1024]; /* 1024 = FILE_MAX */
int anim_player_preset;
short v2d_min_gridsize; /* minimum spacing between gridlines in View2D grids */
short timecode_style; /* style of timecode display */
short versions;
short dbl_click_time;
int gameflags;
int wheellinescroll;
int uiflag, language;
short userpref, viewzoom;
int mixbufsize;
int audiodevice;
int audiorate;
int audioformat;
int audiochannels;
int scrollback; /* console scrollback limit */
int dpi; /* range 48-128? */
short encoding;
short transopts;
short menuthreshold1, menuthreshold2;
struct ListBase themes;
struct ListBase uifonts;
struct ListBase uistyles;
struct ListBase keymaps DNA_DEPRECATED; /* deprecated in favor of user_keymaps */
struct ListBase user_keymaps;
struct ListBase addons;
char keyconfigstr[64];
short undosteps;
short undomemory;
short gp_manhattendist, gp_euclideandist, gp_eraser;
short gp_settings;
short tb_leftmouse, tb_rightmouse;
struct SolidLight light[3];
short tw_hotspot, tw_flag, tw_handlesize, tw_size;
short textimeout, texcollectrate;
short wmdrawmethod; /* removed wmpad */
short dragthreshold;
int memcachelimit;
int prefetchframes;
short frameserverport;
short pad_rot_angle; /*control the rotation step of the view when PAD2, PAD4, PAD6&PAD8 is use*/
short obcenter_dia;
short rvisize; /* rotating view icon size */
short rvibright; /* rotating view icon brightness */
short recent_files; /* maximum number of recently used files to remember */
short smooth_viewtx; /* miliseconds to spend spinning the view */
short glreslimit;
short curssize;
short color_picker_type;
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 use_16bit_textures, use_gpu_mipmap;
float ndof_sensitivity; /* overall sensitivity of 3D mouse */
int ndof_flag; /* flags for 3D mouse */
float glalphaclip;
short autokey_mode; /* autokeying mode */
short autokey_flag; /* flags for autokeying */
short text_render, pad9; /*options for text rendering*/
struct ColorBand coba_weight; /* from texture.h */
float sculpt_paint_overlay_col[3];
short tweak_threshold;
short pad3;
char author[80]; /* author name for file formats supporting it */
int compute_device_type;
int compute_device_id;
float fcu_inactive_alpha; /* opacity of inactive F-Curves in F-Curve Editor */
float pad;
} UserDef;
extern UserDef U; /* from blenkernel blender.c */
/* ***************** USERDEF ****************** */
/* userpref/section */
#define USER_SECTION_INTERFACE 0
#define USER_SECTION_EDIT 1
#define USER_SECTION_FILE 2
#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) 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) 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)*/ /* not used anywhere */
#define USER_TOOLTIPS (1 << 11)
#define USER_TWOBUTTONMOUSE (1 << 12)
#define USER_NONUMPAD (1 << 13)
#define USER_LMOUSESELECT (1 << 14)
#define USER_FILECOMPRESS (1 << 15)
#define USER_SAVE_PREVIEWS (1 << 16)
#define USER_CUSTOM_RANGE (1 << 17)
#define USER_ADD_EDITMODE (1 << 18)
#define USER_ADD_VIEWALIGNED (1 << 19)
#define USER_RELPATHS (1 << 20)
#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)
/* 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
#define USER_ZOOM_SCALE 1
#define USER_ZOOM_DOLLY 2
/* uiflag */
// old flag for #define USER_KEYINSERTACT (1 << 0)
// old flag for #define USER_KEYINSERTOBJ (1 << 1)
#define USER_WHEELZOOMDIR (1 << 2)
#define USER_FILTERFILEEXTS (1 << 3)
#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)*/ /* deprecated */
#define USER_ALLWINCODECS (1 << 8)
#define USER_MENUOPENAUTO (1 << 9)
/*#define USER_PANELPINNED (1 << 10) deprecated */
#define USER_AUTOPERSP (1 << 11)
#define USER_LOCKAROUND (1 << 12)
#define USER_GLOBALUNDO (1 << 13)
#define USER_ORBIT_SELECTION (1 << 14)
// old flag for #define USER_KEYINSERTAVAI (1 << 15)
#define USER_ORBIT_ZBUF (1 << 15)
#define USER_HIDE_DOT (1 << 16)
#define USER_SHOW_ROTVIEWICON (1 << 17)
#define USER_SHOW_VIEWPORTNAME (1 << 18)
#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_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)
#define USER_QUIT_PROMPT (1 << 30)
/* Auto-Keying mode */
/* AUTOKEY_ON is a bitflag */
#define AUTOKEY_ON 1
/* AUTOKEY_ON + 2**n... (i.e. AUTOKEY_MODE_NORMAL = AUTOKEY_ON + 2) to preserve setting, even when autokey turned off */
#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)
* 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)
/* toolsettings->autokey_flag */
#define AUTOKEY_FLAG_ONLYKEYINGSET (1<<6)
#define ANIMRECORD_FLAG_WITHNLA (1<<10)
/* transopts */
#define USER_TR_TOOLTIPS (1 << 0)
#define USER_TR_IFACE (1 << 1)
/*#define USER_TR_MENUS (1 << 2) deprecated*/
/*#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) deprecated*/
/* dupflag */
#define USER_DUP_MESH (1 << 0)
#define USER_DUP_CURVE (1 << 1)
#define USER_DUP_SURF (1 << 2)
#define USER_DUP_FONT (1 << 3)
#define USER_DUP_MBALL (1 << 4)
#define USER_DUP_LAMP (1 << 5)
#define USER_DUP_IPO (1 << 6)
#define USER_DUP_MAT (1 << 7)
#define USER_DUP_TEX (1 << 8)
#define USER_DUP_ARM (1 << 9)
#define USER_DUP_ACT (1 << 10)
#define USER_DUP_PSYS (1 << 11)
/* gameflags */
// #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
#define USER_DISABLE_VBO 8
#define USER_DISABLE_AA 16
/* wm draw method */
#define USER_DRAW_TRIPLE 0
#define USER_DRAW_OVERLAP 1
#define USER_DRAW_FULL 2
#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) */
#define GP_PAINT_DOSMOOTH (1<<0)
#define GP_PAINT_DOSIMPLIFY (1<<1)
/* color picker types */
#define USER_CP_CIRCLE 0
#define USER_CP_SQUARE_SV 1
#define USER_CP_SQUARE_HS 2
#define USER_CP_SQUARE_HV 3
/* timecode display styles */
/* as little info as is necessary to show relevant info
* with '+' to denote the frames
* i.e. HH:MM:SS+FF, MM:SS+FF, SS+FF, or MM:SS
*/
#define USER_TIMECODE_MINIMAL 0
/* reduced SMPTE - (HH:)MM:SS:FF */
#define USER_TIMECODE_SMPTE_MSF 1
/* full SMPTE - HH:MM:SS:FF */
#define USER_TIMECODE_SMPTE_FULL 2
/* milliseconds for sub-frames - HH:MM:SS.sss */
#define USER_TIMECODE_MILLISECONDS 3
/* seconds only */
#define USER_TIMECODE_SECONDS_ONLY 4
/* theme drawtypes */
#define TH_MINIMAL 0
#define TH_ROUNDSHADED 1
#define TH_ROUNDED 2
#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 hybrid 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 */
/* zoom is up/down if this flag is set (otherwise forward/backward) */
#define NDOF_ZOOM_UPDOWN (1 << 7)
#define NDOF_ZOOM_INVERT (1 << 8)
#define NDOF_ROTATE_INVERT_AXIS (1 << 9)
#define NDOF_TILT_INVERT_AXIS (1 << 10)
#define NDOF_ROLL_INVERT_AXIS (1 << 11)
#define NDOF_PANX_INVERT_AXIS (1 << 12)
#define NDOF_PANY_INVERT_AXIS (1 << 13)
#define NDOF_PANZ_INVERT_AXIS (1 << 14)
/* compute_device_type */
#define USER_COMPUTE_DEVICE_NONE 0
#define USER_COMPUTE_DEVICE_OPENCL 1
#define USER_COMPUTE_DEVICE_CUDA 2
#ifdef __cplusplus
}
#endif
#endif