diff options
Diffstat (limited to 'source/blender/makesdna/DNA_screen_types.h')
-rw-r--r-- | source/blender/makesdna/DNA_screen_types.h | 191 |
1 files changed, 133 insertions, 58 deletions
diff --git a/source/blender/makesdna/DNA_screen_types.h b/source/blender/makesdna/DNA_screen_types.h index 9f0a70d9bca..e51da0c0818 100644 --- a/source/blender/makesdna/DNA_screen_types.h +++ b/source/blender/makesdna/DNA_screen_types.h @@ -1,6 +1,4 @@ /** - * blenlib/DNA_screen_types.h (mar-2001 nzc) - * * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** @@ -22,9 +20,7 @@ * 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. + * Contributor(s): Blender Foundation * * ***** END GPL LICENSE BLOCK ***** */ @@ -32,23 +28,50 @@ #define DNA_SCREEN_TYPES_H #include "DNA_listBase.h" +#include "DNA_view2d_types.h" #include "DNA_vec_types.h" #include "DNA_ID.h" -#include "DNA_scriptlink_types.h" +struct SpaceType; +struct SpaceLink; +struct ARegion; +struct ARegionType; +struct PanelType; +struct HeaderType; struct Scene; +struct uiLayout; +struct wmTimer; typedef struct bScreen { ID id; - ListBase vertbase, edgebase, areabase; + + ListBase vertbase; /* screens have vertices/edges to define areas */ + ListBase edgebase; + ListBase areabase; + ListBase regionbase; /* screen level regions (menus), runtime only */ + struct Scene *scene; - short startx, endx, starty, endy; /* framebuffer coords */ - short sizex, sizey; - short scenenr, screennr; /* only for pupmenu */ - short full, pad; - short mainwin, winakt; - short handler[8]; /* similar to space handler now */ + struct Scene *newscene; /* temporary when switching */ + + short full; /* fade out? */ + short winid; /* winid from WM, starts with 1 */ + short do_draw; /* notifier for drawing edges */ + short do_refresh; /* notifier for scale screen, changed screen, etc */ + short do_draw_gesture; /* notifier for gesture draw. */ + short do_draw_paintcursor; /* notifier for paint cursor draw. */ + short swap; /* indicator to survive swap-exchange systems */ + short pad; + + short mainwin; /* screensize subwindow, for screenedges and global menus */ + short subwinactive; /* active subwindow */ + + int pad2; + + struct wmTimer *animtimer; /* if set, screen has timer handler added in window */ + void *context; /* context callback */ + + short handler[8]; /* similar to space handler */ } bScreen; typedef struct ScrVert { @@ -65,63 +88,93 @@ typedef struct ScrEdge { int pad; } ScrEdge; -#ifndef DNA_USHORT_FIX -#define DNA_USHORT_FIX -/** - * @deprecated This typedef serves to avoid badly typed functions when - * @deprecated compiling while delivering a proper dna.c. Do not use - * @deprecated it in any case. - */ -typedef unsigned short dna_ushort_fix; -#endif - - - typedef struct Panel { /* the part from uiBlock that needs saved in file */ struct Panel *next, *prev; + + struct PanelType *type; /* runtime */ + struct uiLayout *layout; /* runtime for drawing */ + char panelname[64], tabname[64]; /* defined as UI_MAX_NAME_STR */ char drawname[64]; /* panelname is identifier for restoring location */ short ofsx, ofsy, sizex, sizey; - short flag, active; /* active= used currently by a uiBlock */ + short labelofs, pad; + short flag, runtime_flag; short control; short snap; - short old_ofsx, old_ofsy; /* for stow */ - int sortcounter; /* when sorting panels, it uses this to put new ones in right place */ + int sortorder; /* panels are aligned according to increasing sortorder */ struct Panel *paneltab; /* this panel is tabbed in *paneltab */ + void *activedata; /* runtime for panel manipulation */ + + int list_scroll, list_size; + char list_search[64]; } Panel; typedef struct ScrArea { struct ScrArea *next, *prev; + ScrVert *v1, *v2, *v3, *v4; bScreen *full; /* if area==full, this is the parent */ - float winmat[4][4]; - rcti totrct, headrct, winrct; - short headwin, win; - short headertype; /* 0=no header, 1= down, 2= up */ - char spacetype, butspacetype; /* SPACE_... */ - short winx, winy; /* size */ - char head_swap, head_equal; - char win_swap, win_equal; + rcti totrct; /* rect bound by v1 v2 v3 v4 */ + + char spacetype, butspacetype; /* SPACE_..., butspacetype is button arg */ + short winx, winy; /* size */ - short headbutlen, headbutofs; + short headertype; /* OLD! 0=no header, 1= down, 2= up */ + short pad; + short do_refresh; /* private, for spacetype refresh callback */ short cursor, flag; - - ScriptLink scriptlink; - - ListBase spacedata; - ListBase uiblocks; - ListBase panels; + + struct SpaceType *type; /* callbacks for this space type */ + + ListBase spacedata; /* SpaceLink */ + ListBase regionbase; /* ARegion */ + ListBase handlers; /* wmEventHandler */ + + ListBase actionzones; /* AZone */ } ScrArea; -#define MAXWIN 128 +typedef struct ARegion { + struct ARegion *next, *prev; + + View2D v2d; /* 2D-View scrolling/zoom info (most regions are 2d anyways) */ + rcti winrct; /* coordinates of region */ + rcti drawrct; /* runtime for partial redraw, same or smaller than winrct */ + short winx, winy; /* size */ + + short swinid; + short regiontype; /* window, header, etc. identifier for drawing */ + short alignment; /* how it should split */ + short flag; /* hide, ... */ + + float fsize; /* current split size in float */ + + short do_draw; /* private, cached notifier events */ + short swap; /* private, indicator to survive swap-exchange */ + int pad1; + + struct ARegionType *type; /* callbacks for this region type */ + + ListBase uiblocks; /* uiBlock */ + ListBase panels; /* Panel */ + ListBase handlers; /* wmEventHandler */ + + char *headerstr; /* use this string to draw info */ + void *regiondata; /* XXX 2.50, need spacedata equivalent? */ +} ARegion; + +/* swap */ +#define WIN_BACK_OK 1 +#define WIN_FRONT_OK 2 +#define WIN_EQUAL 3 /* area->flag */ #define HEADER_NO_PULLDOWN 1 +#define AREA_FLAG_DRAWJOINTO 2 +#define AREA_FLAG_DRAWJOINFROM 4 /* If you change EDGEWIDTH, also do the global arrat edcol[] */ #define EDGEWIDTH 1 -#define EDGEWIDTH2 0 #define AREAGRID 4 #define AREAMINX 32 #define HEADERY 26 @@ -133,20 +186,8 @@ typedef struct ScrArea { #define SCREENNORMAL 0 #define SCREENFULL 1 #define SCREENAUTOPLAY 2 +#define SCREENTEMP 3 -/* sa->win_swap */ -#define WIN_FRONT_OK 1 -#define WIN_BACK_OK 2 -#define WIN_EQUAL 3 - -#define L_SCROLL 1 /* left scrollbar */ -#define R_SCROLL 2 -#define VERT_SCROLL 3 -#define T_SCROLL 4 -#define B_SCROLL 8 -#define HOR_SCROLL 12 -#define B_SCROLLO 16 /* special hack for outliner hscroll - prevent hanging */ -#define HOR_SCROLLO 20 /* in older versions of blender */ /* Panel->snap - for snapping to screen edges */ #define PNL_SNAP_NONE 0 @@ -157,6 +198,10 @@ typedef struct ScrArea { #define PNL_SNAP_DIST 9.0 +/* paneltype flag */ +#define PNL_DEFAULT_CLOSED 1 +#define PNL_NO_HEADER 2 + /* screen handlers */ #define SCREEN_MAXHANDLER 8 @@ -164,5 +209,35 @@ typedef struct ScrArea { #define SCREEN_HANDLER_PYTHON 2 #define SCREEN_HANDLER_VERSE 3 +/* regiontype, first two are the default set */ +#define RGN_TYPE_WINDOW 0 +#define RGN_TYPE_HEADER 1 +#define RGN_TYPE_CHANNELS 2 +#define RGN_TYPE_TEMPORARY 3 +#define RGN_TYPE_UI 4 +#define RGN_TYPE_TOOLS 5 +#define RGN_TYPE_TOOL_PROPS 6 + +/* region alignment */ +#define RGN_ALIGN_NONE 0 +#define RGN_ALIGN_TOP 1 +#define RGN_ALIGN_BOTTOM 2 +#define RGN_ALIGN_LEFT 3 +#define RGN_ALIGN_RIGHT 4 +#define RGN_ALIGN_HSPLIT 5 +#define RGN_ALIGN_VSPLIT 6 +#define RGN_ALIGN_FLOAT 7 +#define RGN_ALIGN_QSPLIT 8 +#define RGN_OVERLAP_TOP 9 +#define RGN_OVERLAP_BOTTOM 10 +#define RGN_OVERLAP_LEFT 11 +#define RGN_OVERLAP_RIGHT 12 + +#define RGN_SPLIT_PREV 32 + +/* region flag */ +#define RGN_FLAG_HIDDEN 1 +#define RGN_FLAG_TOO_SMALL 2 + #endif |