Another huge commit!!!
[blender-staging.git] / source / blender / makesdna / DNA_space_types.h
1 /**
2  * blenlib/DNA_space_types.h (mar-2001 nzc)
3  *      
4  * $Id$ 
5  *
6  * ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
7  *
8  * This program is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU General Public License
10  * as published by the Free Software Foundation; either version 2
11  * of the License, or (at your option) any later version. The Blender
12  * Foundation also sells licenses for use in proprietary software under
13  * the Blender License.  See http://www.blender.org/BL/ for information
14  * about this.
15  *
16  * This program is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19  * GNU General Public License for more details.
20  *
21  * You should have received a copy of the GNU General Public License
22  * along with this program; if not, write to the Free Software Foundation,
23  * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
24  *
25  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
26  * All rights reserved.
27  *
28  * The Original Code is: all of this file.
29  *
30  * Contributor(s): none yet.
31  *
32  * ***** END GPL/BL DUAL LICENSE BLOCK *****
33  */
34 #ifndef DNA_SPACE_TYPES_H
35 #define DNA_SPACE_TYPES_H
36
37 #include "DNA_listBase.h"
38 #include "DNA_vec_types.h"
39 /* Hum ... Not really nice... but needed for spacebuts. */
40 #include "DNA_view2d_types.h"
41
42 struct Ipo;
43 struct ID;
44 struct Text;
45 struct ImBuf;
46 struct Image;
47 struct SpaceIpo;
48 struct BlendHandle;
49
50         /**
51          * The base structure all the other spaces
52          * are derived (implicitly) from. Would be
53          * good to make this explicit.
54          */
55 typedef struct SpaceLink SpaceLink;
56 struct SpaceLink {
57         SpaceLink *next, *prev;
58         int spacetype, pad;
59         struct ScrArea *area;
60 };
61
62 typedef struct SpaceInfo {
63         SpaceLink *next, *prev;
64         int spacetype, pad1;
65         struct ScrArea *area;
66 } SpaceInfo;
67
68 typedef struct SpaceIpo {
69         SpaceLink *next, *prev;
70         int spacetype, pad1;
71         struct ScrArea *area;
72
73         unsigned int rowbut, pad2; 
74         View2D v2d;
75         
76         void *editipo;
77         ListBase ipokey;
78         struct Ipo *ipo;
79         struct ID *from;
80
81         short totipo, pin;
82         short butofs, channel;
83         short showkey, blocktype;
84         short menunr, lock;
85         int flag;
86         int     reserved1;
87         rctf tot;
88 } SpaceIpo;
89
90 typedef struct SpaceButs {
91         SpaceLink *next, *prev;
92         int spacetype;
93         short re_align, pad1;
94         struct ScrArea *area;
95
96         short cursens, curact;
97         short align, tabo;              /* align for panels, tab is old tab */
98         View2D v2d;
99         
100         short mainb, menunr;    /* texnr and menunr have to remain shorts */
101         short pin, mainbo;      
102         void *lockpoin;
103         
104         short texnr;
105         char texfrom, showgroup;
106
107         short rectx, recty;             /* preview render */
108         unsigned int *rect;
109         short cury, modeltype;
110
111         short scriptblock;
112         short scaflag;
113         
114         char texact, tab[7];    /* storing tabs for each context */
115                 
116 } SpaceButs;
117
118 typedef struct SpaceSeq {
119         SpaceLink *next, *prev;
120         int spacetype, pad;
121         struct ScrArea *area;
122
123         View2D v2d;
124         
125         short mainb, zoom;
126         int pad2;
127         
128 } SpaceSeq;
129
130 typedef struct SpaceFile {
131         SpaceLink *next, *prev;
132         int spacetype, pad;
133         struct ScrArea *area;
134         
135         struct direntry *filelist;
136         int totfile;
137         char title[24];
138         char dir[160];
139         char file[80];
140         short type, ofs, flag, sort;
141         short maxnamelen, collums;
142         
143         struct BlendHandle *libfiledata;
144         
145         short retval, ipotype;
146         short menu, act;
147
148         /* changed type for compiling */
149         /* void (*returnfunc)(short); ? used with char* ....*/
150         /**
151          * @attention Called in filesel.c: 
152          * @attention returnfunc(this->retval) : short
153          * @attention returnfunc(name)         : char*
154          * @attention Other uses are limited to testing against
155          * @attention the value. How do we resolve this? Two args?
156          * @attention For now, keep the char*, as it seems stable.
157          * @attention Be warned that strange behaviour _has_ been spotted!
158          */
159         void (*returnfunc)(char*);
160                 
161         short *menup;
162 } SpaceFile;
163
164 typedef struct SpaceOops {
165         SpaceLink *next, *prev;
166         int spacetype, pad;
167         struct ScrArea *area;
168
169         View2D v2d;
170         
171         ListBase oops;
172         short pin, visiflag, flag, rt;
173         void *lockpoin;
174         
175 } SpaceOops;
176
177 typedef struct SpaceImage {
178         SpaceLink *next, *prev;
179         int spacetype, pad;
180         struct ScrArea *area;
181
182         View2D v2d;
183         
184         struct Image *image;
185         float zoom;
186         float pad2; /* padding is with 8 bytes aligned  */
187         short mode, pin;
188         short imanr, curtile;
189         short xof, yof;
190         short flag, lock;
191         
192 } SpaceImage;
193
194 typedef struct SpaceNla{
195         struct SpaceLink *next, *prev;
196         int spacetype;
197         short menunr, lock;
198         struct ScrArea *area;
199
200         View2D v2d;     
201 } SpaceNla;
202
203 typedef struct SpaceText {
204         SpaceLink *next, *prev;
205         int spacetype, pad;
206         struct ScrArea *area;
207
208         struct Text *text;      
209
210         int top, viewlines;
211         short flags, menunr;
212         
213         int font_id;    
214         int lheight;
215         int left;
216         int showlinenrs;
217         
218         float pix_per_line;
219
220         struct rcti txtscroll, txtbar;
221         
222         void *py_draw;
223         void *py_event;
224         void *py_button;
225         void *py_globaldict;
226 } SpaceText;
227
228 #
229 #
230 typedef struct OneSelectableIma {
231         int   header;                                           
232         int   ibuf_type;
233         struct ImBuf *pict;                                     
234         struct OneSelectableIma *next;          
235         struct OneSelectableIma *prev;          
236         
237         short  cmap, image, draw_me, rt;
238         short  sx, sy, ex, ey, dw, dh;                          
239         short  selectable, selected;            
240         int   mtime, disksize;                          
241         char   file_name[64];
242         
243         short  orgx, orgy, orgd, anim;          /* same as ibuf->x...*/
244         char   dummy[4];                                        /* 128 */
245
246         char   pict_rect[3968];                         /* 4096   (RECT = 64 * 62) */
247         
248 } OneSelectableIma;
249
250 #
251 #
252 typedef struct ImaDir {
253         struct ImaDir *next, *prev;
254         int  selected, hilite; 
255         int  type,  size;
256         int mtime;
257         char name[100];
258 } ImaDir;
259
260 typedef struct SpaceImaSel {
261         SpaceLink *next, *prev;
262         int spacetype, pad1;
263         struct ScrArea *area;
264         
265         char   title[28];
266         
267         int   fase; 
268         short  mode, subfase;
269         short  mouse_move_redraw, imafase;
270         short  mx, my;
271         
272         short  dirsli, dirsli_lines;
273         short  dirsli_sx, dirsli_ey , dirsli_ex, dirsli_h;
274         short  imasli, fileselmenuitem;
275         short  imasli_sx, imasli_ey , imasli_ex, imasli_h;
276         
277         short  dssx, dssy, dsex, dsey; 
278         short  desx, desy, deex, deey; 
279         short  fssx, fssy, fsex, fsey; 
280         short  dsdh, fsdh; 
281         short  fesx, fesy, feex, feey; 
282         short  infsx, infsy, infex, infey; 
283         short  dnsx, dnsy, dnw, dnh;
284         short  fnsx, fnsy, fnw, fnh;
285
286         
287         char   fole[128], dor[128];
288         char   file[128], dir[128];
289         ImaDir *firstdir, *firstfile;
290         int    topdir,  totaldirs,  hilite; 
291         int    topfile, totalfiles;
292         
293         float  image_slider;
294         float  slider_height;
295         float  slider_space;
296         short  topima,  totalima;
297         short  curimax, curimay;
298         OneSelectableIma *first_sel_ima;
299         OneSelectableIma *hilite_ima;
300         short  total_selected, ima_redraw;
301         int pad2;
302         
303         struct ImBuf  *cmap;
304
305         /* Also fucked. Needs to change so things compile, but breaks sdna
306         * ... */        
307 /*      void (*returnfunc)(void); */
308         void (*returnfunc)(char*);
309         void *arg1;
310 } SpaceImaSel;
311
312
313 /* **************** SPACE ********************* */
314
315
316 /* view3d->flag */ /* Now in DNA_view3d_types.h */
317 /*
318 #define V3D_DISPIMAGE           1
319 #define V3D_DISPBGPIC           2
320 #define V3D_SETUPBUTS           4
321 #define V3D_NEEDBACKBUFDRAW     8
322 #define V3D_MODE                        (16+32+64+128)
323 #define V3D_EDITMODE            16
324 #define V3D_VERTEXPAINT         32
325 #define V3D_FACESELECT          64
326 #define V3D_POSEMODE            128
327 */
328
329 /* view3d->around */ /* Now in DNA_view3d_types.h */
330 /*
331 #define V3D_CENTRE              0
332 #define V3D_CENTROID    3
333 #define V3D_CURSOR              1
334 #define V3D_LOCAL               2
335 */
336
337 /* buts defines in BIF_butspace.h */
338
339 /* these values need to be hardcoded in blender.h SpaceFile: struct dna does not recognize defines */
340 #define FILE_MAXDIR                     160
341 #define FILE_MAXFILE            80
342
343 /* filesel types */
344 #define FILE_UNIX                       8
345 #define FILE_BLENDER            8
346 #define FILE_SPECIAL            9
347
348 #define FILE_LOADLIB            1
349 #define FILE_MAIN                       2
350
351 /* sfile->flag */
352 #define FILE_SHOWSHORT          1
353 #define FILE_STRINGCODE         2
354 #define FILE_LINK                       4
355 #define FILE_HIDE_DOT           8
356
357 /* sfile->sort */
358 #define FILE_SORTALPHA          0
359 #define FILE_SORTDATE           1
360 #define FILE_SORTSIZE           2
361 #define FILE_SORTEXTENS         3
362
363 /* files in filesel list: 2=ACTIVE  */
364 #define HILITE                          1
365 #define BLENDERFILE                     4
366 #define PSXFILE                         8
367 #define IMAGEFILE                       16
368 #define MOVIEFILE                       32
369 #define PYSCRIPTFILE            64
370 #define FTFONTFILE                      128
371 #define SOUNDFILE                       256
372
373 #define SCROLLH 16                      /* height scrollbar */
374 #define SCROLLB 16                      /* width scrollbar */
375
376 /* SpaceImage->mode */
377 #define SI_TEXTURE              0
378 #define SI_SHOW                 1
379
380 /* SpaceImage->flag */
381 #define SI_BE_SQUARE    1
382 #define SI_EDITTILE             2
383 #define SI_CLIP_UV              4
384 #define SI_DRAWTOOL             8
385
386 /* SpaceText flags (moved from DNA_text_types.h) */
387
388 #define ST_SCROLL_SELECT        0x0001 // scrollable
389 #define ST_CLEAR_NAMESPACE      0x0010 // clear namespace after script
390                                        // execution (see BPY_main.c)
391
392 /* SpaceOops->flag */
393 #define SO_TESTBLOCKS   1
394 #define SO_NEWSELECTED  2
395
396 /* SpaceOops->visiflag */
397 #define OOPS_SCE        1
398 #define OOPS_OB         2
399 #define OOPS_ME         4
400 #define OOPS_CU         8
401 #define OOPS_MB         16
402 #define OOPS_LT         32
403 #define OOPS_LA         64
404 #define OOPS_MA         128
405 #define OOPS_TE         256
406 #define OOPS_IP         512
407 #define OOPS_LAY        1024
408 #define OOPS_LI         2048
409 #define OOPS_IM         4096
410
411 /* headerbuttons: 450-499 */
412
413 #define B_IMASELHOME            451
414 #define B_IMASELREMOVEBIP       452
415
416 #define C_BACK  0xBAAAAA
417 #define C_DARK  0x665656
418 #define C_DERK  0x766666
419 #define C_HI    0xCBBBBB
420 #define C_LO    0x544444
421
422 /* queue settings */
423 #define IMS_KNOW_WIN        1
424 #define IMS_KNOW_BIP        2
425 #define IMS_KNOW_DIR        4
426 #define IMS_DOTHE_INF           8
427 #define IMS_KNOW_INF       16
428 #define IMS_DOTHE_IMA      32
429 #define IMS_KNOW_IMA       64
430 #define IMS_FOUND_BIP     128
431 #define IMS_DOTHE_BIP     256
432 #define IMS_WRITE_NO_BIP  512
433
434 /* imasel->mode */
435 #define IMS_NOIMA                       0
436 #define IMS_IMA                         1
437 #define IMS_ANIM                        2
438 #define IMS_DIR                         4
439 #define IMS_FILE                        8
440 #define IMS_STRINGCODE          16
441
442 #define IMS_INDIR                       1
443 #define IMS_INDIRSLI            2
444 #define IMS_INFILE                      3
445 #define IMS_INFILESLI           4
446
447 #endif
448