127e658308acf1f6bcfc0bd8dc2a88742e7a3c98
[blender.git] / source / blender / makesdna / DNA_screen_types.h
1 /**
2  * $Id$ 
3  *
4  * ***** BEGIN GPL LICENSE BLOCK *****
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public License
8  * as published by the Free Software Foundation; either version 2
9  * of the License, or (at your option) any later version. 
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software Foundation,
18  * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
19  *
20  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
21  * All rights reserved.
22  *
23  * 
24  * Contributor(s): Blender Foundation
25  *
26  * ***** END GPL LICENSE BLOCK *****
27  */
28 #ifndef DNA_SCREEN_TYPES_H
29 #define DNA_SCREEN_TYPES_H
30
31 #include "DNA_listBase.h"
32 #include "DNA_vec_types.h"
33
34 #include "DNA_ID.h"
35 #include "DNA_scriptlink_types.h"
36
37 struct Scene;
38 struct wmSubWindow;
39
40 typedef struct bScreen {
41         ID id;
42         
43         ListBase vertbase, edgebase, areabase;
44         struct Scene *scene;
45         short startx, endx, starty, endy;       /* framebuffer coords */
46         short sizex, sizey;
47         short scenenr, screennr;                        /* only for pupmenu */
48         short full, winid;                                      /* winid from WM, starts with 1 */
49         int pad;
50         short handler[8];                                       /* similar to space handler now */
51         
52         struct wmSubWindow *mainwin;            /* screensize subwindow, for screenedges */
53         struct wmSubWindow *subwinactive;       /* active subwindow */
54         
55         ListBase handlers;                                      /* wmEventHandler */
56 } bScreen;
57
58 typedef struct ScrVert {
59         struct ScrVert *next, *prev, *newv;
60         vec2s vec;
61         int flag;
62 } ScrVert;
63
64 typedef struct ScrEdge {
65         struct ScrEdge *next, *prev;
66         ScrVert *v1, *v2;
67         short border;                   /* 1 when at edge of screen */
68         short flag;
69         int pad;
70 } ScrEdge;
71
72 #ifndef DNA_USHORT_FIX
73 #define DNA_USHORT_FIX
74 /**
75  * @deprecated This typedef serves to avoid badly typed functions when
76  * @deprecated compiling while delivering a proper dna.c. Do not use
77  * @deprecated it in any case.
78  */
79 typedef unsigned short dna_ushort_fix;
80 #endif
81
82
83
84 typedef struct Panel {          /* the part from uiBlock that needs saved in file */
85         struct Panel *next, *prev;
86
87         char panelname[64], tabname[64];        /* defined as UI_MAX_NAME_STR */
88         char drawname[64];                                      /* panelname is identifier for restoring location */
89         short ofsx, ofsy, sizex, sizey;
90         short flag, active;                                     /* active= used currently by a uiBlock */
91         short control;
92         short snap;
93         short old_ofsx, old_ofsy;               /* for stow */
94         int sortcounter;                        /* when sorting panels, it uses this to put new ones in right place */
95         struct Panel *paneltab;         /* this panel is tabbed in *paneltab */
96 } Panel;
97
98 typedef struct ScrArea {
99         struct ScrArea *next, *prev;
100         
101         ScrVert *v1, *v2, *v3, *v4;
102         bScreen *full;                  /* if area==full, this is the parent */
103         float winmat[4][4];
104         rcti totrct, headrct, winrct;
105
106         int pad;
107         short headertype;               /* 0=no header, 1= down, 2= up */
108         char spacetype, butspacetype;   /* SPACE_...  */
109         short winx, winy;               /* size */
110         char head_swap, head_equal;
111         char win_swap, win_equal;
112         
113         short headbutlen, headbutofs;
114         short cursor, flag;
115
116         ScriptLink scriptlink;
117
118         ListBase spacedata;
119         ListBase uiblocks;
120         ListBase panels;
121         ListBase regionbase;    /* ARegion */
122         ListBase handlers;              /* wmEventHandler */
123 } ScrArea;
124
125 typedef struct ARegion {
126         struct ARegion *next, *prev;
127         
128         rcti winrct;
129         struct wmSubWindow *subwin;
130         
131         ListBase handlers;
132         
133 } ARegion;
134
135 #define MAXWIN          128
136
137 /* area->flag */
138 #define HEADER_NO_PULLDOWN      1
139
140 /* If you change EDGEWIDTH, also do the global arrat edcol[]  */
141 #define EDGEWIDTH       1
142 #define EDGEWIDTH2      0
143 #define AREAGRID        4
144 #define AREAMINX        32
145 #define HEADERY         26
146 #define AREAMINY        (HEADERY+EDGEWIDTH)
147
148 #define HEADERDOWN      1
149 #define HEADERTOP       2
150
151 #define SCREENNORMAL    0
152 #define SCREENFULL      1
153 #define SCREENAUTOPLAY  2
154
155 /* sa->win_swap */
156 #define WIN_FRONT_OK    1
157 #define WIN_BACK_OK             2
158 #define WIN_EQUAL               3
159
160 #define L_SCROLL 1                      /* left scrollbar */
161 #define R_SCROLL 2
162 #define VERT_SCROLL 3
163 #define T_SCROLL 4
164 #define B_SCROLL 8
165 #define HOR_SCROLL  12
166 #define B_SCROLLO   16          /* special hack for outliner hscroll - prevent hanging */
167 #define HOR_SCROLLO 20          /*        in older versions of blender                       */
168
169 /* Panel->snap - for snapping to screen edges */
170 #define PNL_SNAP_NONE           0
171 #define PNL_SNAP_TOP            1
172 #define PNL_SNAP_RIGHT          2
173 #define PNL_SNAP_BOTTOM 4
174 #define PNL_SNAP_LEFT           8
175
176 #define PNL_SNAP_DIST           9.0
177
178 /* screen handlers */
179 #define SCREEN_MAXHANDLER               8
180
181 #define SCREEN_HANDLER_ANIM             1
182 #define SCREEN_HANDLER_PYTHON   2
183 #define SCREEN_HANDLER_VERSE    3
184
185 #endif
186