New feature! (Well, replacement for the exisiting cumbersome "DispView")
[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 Script;
46 struct ImBuf;
47 struct Image;
48 struct SpaceIpo;
49 struct BlendHandle;
50 struct TreeStore;
51 struct RenderInfo;
52 struct bNodeTree;
53 struct uiBlock;
54
55         /**
56          * The base structure all the other spaces
57          * are derived (implicitly) from. Would be
58          * good to make this explicit.
59          */
60 typedef struct SpaceLink SpaceLink;
61 struct SpaceLink {
62         SpaceLink *next, *prev;
63         int spacetype;
64         float blockscale;
65         struct ScrArea *area;
66         short blockhandler[8];
67 };
68
69 typedef struct SpaceInfo {
70         SpaceLink *next, *prev;
71         int spacetype;
72         float blockscale;
73         struct ScrArea *area;
74
75         short blockhandler[8];
76 } SpaceInfo;
77
78 typedef struct SpaceIpo {
79         SpaceLink *next, *prev;
80         int spacetype;
81         float blockscale;
82         struct ScrArea *area;
83
84         short blockhandler[8];
85         
86         unsigned int rowbut, pad2; 
87         View2D v2d;
88         
89         void *editipo;
90         ListBase ipokey;
91         
92         /* the ipo context we need to store */
93         struct Ipo *ipo;
94         struct ID *from;
95         char actname[32], constname[32];
96
97         short totipo, pin;
98         short butofs, channel;
99         short showkey, blocktype;
100         short menunr, lock;
101         int flag;
102         float median[3];
103         rctf tot;
104 } SpaceIpo;
105
106 typedef struct SpaceButs {
107         SpaceLink *next, *prev;
108         int spacetype;
109         float blockscale;
110         struct ScrArea *area;
111         struct RenderInfo *ri;
112
113         short blockhandler[8];
114
115         short cursens, curact;
116         short align, tabo;              /* align for panels, tab is old tab */
117         View2D v2d;
118         
119         short mainb, menunr;    /* texnr and menunr have to remain shorts */
120         short pin, mainbo;      
121         void *lockpoin;
122         
123         short texnr;
124         char texfrom, showgroup;
125         
126         short modeltype;
127         short scriptblock;
128         short scaflag;
129         short re_align;
130         
131         short oldkeypress;              /* for keeping track of the sub tab key cycling */
132         char use_nodes, pad;
133         
134         char texact, tab[7];    /* storing tabs for each context */
135                 
136 } SpaceButs;
137
138 typedef struct SpaceSeq {
139         SpaceLink *next, *prev;
140         int spacetype;
141         float blockscale;
142         struct ScrArea *area;
143
144         short blockhandler[8];
145
146         View2D v2d;
147         
148         float xof, yof; /* offset for drawing the image preview */
149         short mainb, zoom;
150         short chanshown;
151         short pad2;
152         int flag;
153         int pad;
154 } SpaceSeq;
155
156 typedef struct SpaceFile {
157         SpaceLink *next, *prev;
158         int spacetype;
159         float blockscale;
160         struct ScrArea *area;
161         
162         short blockhandler[8];
163
164         struct direntry *filelist;
165         int totfile;
166         char title[24];
167         char dir[160];
168         char file[80];
169         short type, ofs, flag, sort;
170         short maxnamelen, collums;
171         
172         struct BlendHandle *libfiledata;
173         
174         short retval, ipotype;
175         short menu, act;
176
177         /* changed type for compiling */
178         /* void (*returnfunc)(short); ? used with char* ....*/
179         /**
180          * @attention Called in filesel.c: 
181          * @attention returnfunc(this->retval) : short
182          * @attention returnfunc(name)         : char*
183          * @attention Other uses are limited to testing against
184          * @attention the value. How do we resolve this? Two args?
185          * @attention For now, keep the char*, as it seems stable.
186          * @attention Be warned that strange behaviour _has_ been spotted!
187          */
188         void (*returnfunc)(char*);
189                 
190         short *menup;
191 } SpaceFile;
192
193 typedef struct SpaceOops {
194         SpaceLink *next, *prev;
195         int spacetype;
196         float blockscale;
197         struct ScrArea *area;
198
199         short blockhandler[8];
200
201         View2D v2d;
202         
203         ListBase oops;
204         short pin, visiflag, flag, rt;
205         void *lockpoin;
206         
207         ListBase tree;
208         struct TreeStore *treestore;
209         short type, outlinevis, storeflag;
210         short deps_flags;
211         
212 } SpaceOops;
213
214 typedef struct SpaceImage {
215         SpaceLink *next, *prev;
216         int spacetype;
217         float blockscale;
218         struct ScrArea *area;
219
220         short blockhandler[8];
221
222         View2D v2d;
223         
224         struct Image *image;
225         struct CurveMapping *cumap;
226         short mode, menunr;
227         short imanr, curtile;
228         int flag;
229         short pad1, lock;
230         
231         float zoom, pad2;
232         
233         float xof, yof;                 /* user defined offset, image is centered */
234         
235         float centx, centy;             /* storage for offset while render drawing */
236         char *info_str;                 /* info string for render */
237 } SpaceImage;
238
239 typedef struct SpaceNla{
240         struct SpaceLink *next, *prev;
241         int spacetype;
242         float blockscale;
243         struct ScrArea *area;
244
245         short blockhandler[8];
246
247         short menunr, lock;
248         int pad;
249         
250         View2D v2d;     
251 } SpaceNla;
252
253 typedef struct SpaceText {
254         SpaceLink *next, *prev;
255         int spacetype;
256         float blockscale;
257         struct ScrArea *area;
258
259         short blockhandler[8];
260
261         struct Text *text;      
262
263         int top, viewlines;
264         short flags, menunr;
265         
266         int font_id;    
267         int lheight;
268         int left;
269         int showlinenrs;
270         
271         int tabnumber;
272         int currtab_set; 
273         int showsyntax;
274         int unused_padd;
275         
276         float pix_per_line;
277
278         struct rcti txtscroll, txtbar;
279
280 } SpaceText;
281
282 typedef struct SpaceScript {
283         SpaceLink *next, *prev;
284         int spacetype;
285         float blockscale;
286         struct ScrArea *area;
287         struct Script *script;
288
289         int pad2;
290         short flags, menunr;
291
292 } SpaceScript;
293
294 typedef struct SpaceTime {
295         SpaceLink *next, *prev;
296         int spacetype;
297         float blockscale;
298         struct ScrArea *area;
299         
300         View2D v2d;
301         
302         int flag, redraws;
303         
304 } SpaceTime;
305
306 typedef struct SpaceNode {
307         SpaceLink *next, *prev;
308         int spacetype;
309         float blockscale;
310         struct ScrArea *area;
311         
312         View2D v2d;
313         
314         struct ID *id, *from;           /* context, no need to save in file? well... pinning... */
315         short flag, menunr;                     /* menunr: browse id block in header */
316         float aspect;
317         void *curfont;
318         
319         struct bNodeTree *nodetree, *edittree;
320         int treetype, pad;                      /* treetype: as same nodetree->type */
321         
322 } SpaceNode;
323
324 /* snode->flag */
325 #define SNODE_DO_PREVIEW        1
326
327 #
328 #
329 typedef struct OneSelectableIma {
330         int   header;                                           
331         int   ibuf_type;
332         struct ImBuf *pict;                                     
333         struct OneSelectableIma *next;          
334         struct OneSelectableIma *prev;          
335         
336         short  cmap, image, draw_me, rt;
337         short  sx, sy, ex, ey, dw, dh;                          
338         short  selectable, selected;            
339         int   mtime, disksize;                          
340         char   file_name[64];
341         
342         short  orgx, orgy, orgd, anim;          /* same as ibuf->x...*/
343         char   dummy[4];                                        /* 128 */
344
345         char   pict_rect[3968];                         /* 4096   (RECT = 64 * 62) */
346         
347 } OneSelectableIma;
348
349 #
350 #
351 typedef struct ImaDir {
352         struct ImaDir *next, *prev;
353         int  selected, hilite; 
354         int  type,  size;
355         int mtime;
356         char name[100];
357 } ImaDir;
358
359 typedef struct SpaceImaSel {
360         SpaceLink *next, *prev;
361         int spacetype;
362         float blockscale;
363         struct ScrArea *area;
364         
365         char   title[28];
366         
367         int   fase; 
368         short  mode, subfase;
369         short  mouse_move_redraw, imafase;
370         short  mx, my;
371         
372         short  dirsli, dirsli_lines;
373         short  dirsli_sx, dirsli_ey , dirsli_ex, dirsli_h;
374         short  imasli, fileselmenuitem;
375         short  imasli_sx, imasli_ey , imasli_ex, imasli_h;
376         
377         short  dssx, dssy, dsex, dsey; 
378         short  desx, desy, deex, deey; 
379         short  fssx, fssy, fsex, fsey; 
380         short  dsdh, fsdh; 
381         short  fesx, fesy, feex, feey; 
382         short  infsx, infsy, infex, infey; 
383         short  dnsx, dnsy, dnw, dnh;
384         short  fnsx, fnsy, fnw, fnh;
385
386         
387         char   fole[128], dor[128];
388         char   file[128], dir[128];
389         ImaDir *firstdir, *firstfile;
390         int    topdir,  totaldirs,  hilite; 
391         int    topfile, totalfiles;
392         
393         float  image_slider;
394         float  slider_height;
395         float  slider_space;
396         short  topima,  totalima;
397         short  curimax, curimay;
398         OneSelectableIma *first_sel_ima;
399         OneSelectableIma *hilite_ima;
400         short  total_selected, ima_redraw;
401         int pad2;
402         
403         struct ImBuf  *cmap;
404
405         /* Also fucked. Needs to change so things compile, but breaks sdna
406         * ... */        
407 /*      void (*returnfunc)(void); */
408         void (*returnfunc)(char*);
409         void *arg1;
410 } SpaceImaSel;
411
412
413 /* **************** SPACE ********************* */
414
415
416 /* view3d  Now in DNA_view3d_types.h */
417
418 /* buts defines in BIF_butspace.h */
419
420 /* these values need to be hardcoded in blender.h SpaceFile: struct dna does not recognize defines */
421 #define FILE_MAXDIR                     160
422 #define FILE_MAXFILE            80
423
424 /* filesel types */
425 #define FILE_UNIX                       8
426 #define FILE_BLENDER            8
427 #define FILE_SPECIAL            9
428
429 #define FILE_LOADLIB            1
430 #define FILE_MAIN                       2
431
432 /* sfile->flag */
433 #define FILE_SHOWSHORT          1
434 #define FILE_STRINGCODE         2
435 #define FILE_LINK                       4
436 #define FILE_HIDE_DOT           8
437 #define FILE_AUTOSELECT         16
438 #define FILE_ACTIVELAY          32
439 #define FILE_ATCURSOR           64
440 #define FILE_SYNCPOSE           128
441
442 /* sfile->sort */
443 #define FILE_SORTALPHA          0
444 #define FILE_SORTDATE           1
445 #define FILE_SORTSIZE           2
446 #define FILE_SORTEXTENS         3
447
448 /* files in filesel list: 2=ACTIVE  */
449 #define HILITE                          1
450 #define BLENDERFILE                     4
451 #define PSXFILE                         8
452 #define IMAGEFILE                       16
453 #define MOVIEFILE                       32
454 #define PYSCRIPTFILE            64
455 #define FTFONTFILE                      128
456 #define SOUNDFILE                       256
457
458 #define SCROLLH 16                      /* height scrollbar */
459 #define SCROLLB 16                      /* width scrollbar */
460
461 /* SpaceImage->mode */
462 #define SI_TEXTURE              0
463 #define SI_SHOW                 1
464
465 /* SpaceImage->flag */
466 #define SI_BE_SQUARE    1
467 #define SI_EDITTILE             2
468 #define SI_CLIP_UV              4
469 #define SI_DRAWTOOL             8
470 #define SI_STICKYUVS    16
471 #define SI_DRAWSHADOW   32
472 #define SI_SELACTFACE   64
473 #define SI_DEPRECATED   128
474 #define SI_LOCALSTICKY  256
475 #define SI_COORDFLOATS  512
476 #define SI_PIXELSNAP    1024
477 #define SI_LIVE_UNWRAP  2048
478 #define SI_USE_ALPHA    0x1000
479 #define SI_SHOW_ALPHA   0x2000
480 #define SI_SHOW_ZBUF    0x4000
481                 /* next two for render window dislay */
482 #define SI_PREVSPACE    0x8000
483 #define SI_FULLWINDOW   0x10000
484
485 /* SpaceText flags (moved from DNA_text_types.h) */
486
487 #define ST_SCROLL_SELECT        0x0001 // scrollable
488 #define ST_CLEAR_NAMESPACE      0x0010 // clear namespace after script
489                                        // execution (see BPY_main.c)
490 /* SpaceOops->type */
491 #define SO_OOPS                 0
492 #define SO_OUTLINER             1
493 #define SO_DEPSGRAPH    2
494
495 /* SpaceOops->flag */
496 #define SO_TESTBLOCKS   1
497 #define SO_NEWSELECTED  2
498
499 /* SpaceOops->visiflag */
500 #define OOPS_SCE        1
501 #define OOPS_OB         2
502 #define OOPS_ME         4
503 #define OOPS_CU         8
504 #define OOPS_MB         16
505 #define OOPS_LT         32
506 #define OOPS_LA         64
507 #define OOPS_MA         128
508 #define OOPS_TE         256
509 #define OOPS_IP         512
510 #define OOPS_LAY        1024
511 #define OOPS_LI         2048
512 #define OOPS_IM         4096
513 #define OOPS_AR         8192
514
515 /* SpaceOops->outlinevis */
516 #define SO_ALL_SCENES   0
517 #define SO_CUR_SCENE    1
518 #define SO_VISIBLE              2
519 #define SO_SELECTED             3
520 #define SO_ACTIVE               4
521 #define SO_SAME_TYPE    5
522 #define SO_GROUPS               6
523
524 /* SpaceOops->storeflag */
525 #define SO_TREESTORE_CLEANUP    1
526
527 /* headerbuttons: 450-499 */
528
529 #define B_IMASELHOME            451
530 #define B_IMASELREMOVEBIP       452
531
532 #define C_BACK  0xBAAAAA
533 #define C_DARK  0x665656
534 #define C_DERK  0x766666
535 #define C_HI    0xCBBBBB
536 #define C_LO    0x544444
537
538 /* queue settings */
539 #define IMS_KNOW_WIN        1
540 #define IMS_KNOW_BIP        2
541 #define IMS_KNOW_DIR        4
542 #define IMS_DOTHE_INF           8
543 #define IMS_KNOW_INF       16
544 #define IMS_DOTHE_IMA      32
545 #define IMS_KNOW_IMA       64
546 #define IMS_FOUND_BIP     128
547 #define IMS_DOTHE_BIP     256
548 #define IMS_WRITE_NO_BIP  512
549
550 /* imasel->mode */
551 #define IMS_NOIMA                       0
552 #define IMS_IMA                         1
553 #define IMS_ANIM                        2
554 #define IMS_DIR                         4
555 #define IMS_FILE                        8
556 #define IMS_STRINGCODE          16
557
558 #define IMS_INDIR                       1
559 #define IMS_INDIRSLI            2
560 #define IMS_INFILE                      3
561 #define IMS_INFILESLI           4
562
563 /* time->flag */
564 #define TIME_DRAWFRAMES         1
565 #define TIME_CFRA_NUM           2
566
567 /* time->redraws */
568 #define TIME_LEFTMOST_3D_WIN    1
569 #define TIME_ALL_3D_WIN                 2
570 #define TIME_ALL_ANIM_WIN               4
571 #define TIME_ALL_BUTS_WIN               8
572 #define TIME_WITH_SEQ_AUDIO             16
573 #define TIME_SEQ                        32
574
575 /* sseq->mainb */
576 #define SEQ_DRAW_SEQUENCE         0
577 #define SEQ_DRAW_IMG_IMBUF        1
578 #define SEQ_DRAW_IMG_WAVEFORM     2
579 #define SEQ_DRAW_IMG_VECTORSCOPE  3
580
581 /* sseq->flag */
582 #define SEQ_DRAWFRAMES  1
583
584 #endif