545e115300cd1c0bfd4a9a92bc51e1ae54bf368e
[blender.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 #include "DNA_oops_types.h"             /* for TreeStoreElem */
40 #include "DNA_image_types.h"    /* ImageUser */
41 /* Hum ... Not really nice... but needed for spacebuts. */
42 #include "DNA_view2d_types.h"
43
44 struct Ipo;
45 struct ID;
46 struct Text;
47 struct Script;
48 struct ImBuf;
49 struct Image;
50 struct SpaceIpo;
51 struct BlendHandle;
52 struct RenderInfo;
53 struct bNodeTree;
54 struct uiBlock;
55 struct FileList;
56
57         /**
58          * The base structure all the other spaces
59          * are derived (implicitly) from. Would be
60          * good to make this explicit.
61          */
62 typedef struct SpaceLink SpaceLink;
63 struct SpaceLink {
64         SpaceLink *next, *prev;
65         int spacetype;
66         float blockscale;
67         struct ScrArea *area;
68         short blockhandler[8];
69 };
70
71 typedef struct SpaceInfo {
72         SpaceLink *next, *prev;
73         int spacetype;
74         float blockscale;
75         struct ScrArea *area;
76
77         short blockhandler[8];
78 } SpaceInfo;
79
80 typedef struct SpaceIpo {
81         SpaceLink *next, *prev;
82         int spacetype;
83         float blockscale;
84         struct ScrArea *area;
85
86         short blockhandler[8];
87         
88         unsigned int rowbut, pad2; 
89         View2D v2d;
90         
91         void *editipo;
92         ListBase ipokey;
93         
94         /* the ipo context we need to store */
95         struct Ipo *ipo;
96         struct ID *from;
97         char actname[32], constname[32];
98
99         short totipo, pin;
100         short butofs, channel;
101         short showkey, blocktype;
102         short menunr, lock;
103         int flag;
104         float median[3];
105         rctf tot;
106 } SpaceIpo;
107
108 typedef struct SpaceButs {
109         SpaceLink *next, *prev;
110         int spacetype;
111         float blockscale;
112         struct ScrArea *area;
113         struct RenderInfo *ri;
114
115         short blockhandler[8];
116
117         short cursens, curact;
118         short align, tabo;              /* align for panels, tab is old tab */
119         View2D v2d;
120         
121         short mainb, menunr;    /* texnr and menunr have to remain shorts */
122         short pin, mainbo;      
123         void *lockpoin;
124         
125         short texnr;
126         char texfrom, showgroup;
127         
128         short modeltype;
129         short scriptblock;
130         short scaflag;
131         short re_align;
132         
133         short oldkeypress;              /* for keeping track of the sub tab key cycling */
134         char pad, flag;
135         
136         char texact, tab[7];    /* storing tabs for each context */
137                 
138 } SpaceButs;
139
140 typedef struct SpaceSeq {
141         SpaceLink *next, *prev;
142         int spacetype;
143         float blockscale;
144         struct ScrArea *area;
145
146         short blockhandler[8];
147
148         View2D v2d;
149         
150         float xof, yof; /* offset for drawing the image preview */
151         short mainb, zoom;
152         short chanshown;
153         short pad2;
154         int flag;
155         int pad;
156 } SpaceSeq;
157
158 typedef struct SpaceFile {
159         SpaceLink *next, *prev;
160         int spacetype;
161         float blockscale;
162         struct ScrArea *area;
163         
164         short blockhandler[8];
165
166         struct direntry *filelist;
167         int totfile;
168         
169         char title[24];
170         char dir[160];
171         char file[80];
172         
173         short type, ofs, flag, sort;
174         short maxnamelen, collums, f_fp, pad1;
175         int pad2;
176         char fp_str[8];
177
178         struct BlendHandle *libfiledata;
179         
180         unsigned short retval;          /* event */
181         short menu, act, ipotype;
182         
183         /* one day we'll add unions to dna */
184         void (*returnfunc)(char *);
185         void (*returnfunc_event)(unsigned short);
186         void (*returnfunc_args)(char *, void *, void *);
187         
188         void *arg1, *arg2;
189         short *menup;   /* pointer to menu result or ID browsing */
190         char *pupmenu;  /* optional menu in header */
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         
210         /* search stuff */
211         char search_string[32];
212         struct TreeStoreElem search_tse;
213         int search_flags, do_;
214         
215         short type, outlinevis, storeflag;
216         short deps_flags;
217         
218 } SpaceOops;
219
220 typedef struct SpaceImage {
221         SpaceLink *next, *prev;
222         int spacetype;
223         float blockscale;
224         struct ScrArea *area;
225
226         short blockhandler[8];
227
228         View2D v2d;
229         
230         struct Image *image;
231         struct ImageUser iuser;
232         
233         struct CurveMapping *cumap;
234         short mode, menunr;
235         short imanr;
236         short curtile; /* the currently active tile of the image when tile is enabled, is kept in sync with the active faces tile */
237         int flag;
238         short imtypenr, lock;
239         short showspare, pin;
240         float zoom;
241         char dt_uv; char pad[7]; /* UV draw type */
242         
243         float xof, yof;                                 /* user defined offset, image is centered */
244         float centx, centy;                             /* storage for offset while render drawing */
245         
246         char *info_str, *info_spare;    /* info string for render */
247         struct ImBuf *spare;
248         
249 } SpaceImage;
250
251 typedef struct SpaceNla{
252         struct SpaceLink *next, *prev;
253         int spacetype;
254         float blockscale;
255         struct ScrArea *area;
256
257         short blockhandler[8];
258
259         short menunr, lock;
260         int flag;
261         
262         View2D v2d;     
263 } SpaceNla;
264
265 typedef struct SpaceText {
266         SpaceLink *next, *prev;
267         int spacetype;
268         float blockscale;
269         struct ScrArea *area;
270
271         short blockhandler[8];
272
273         struct Text *text;      
274
275         int top, viewlines;
276         short flags, menunr;
277         
278         int font_id;    
279         int lheight;
280         int left;
281         int showlinenrs;
282         
283         int tabnumber;
284         int currtab_set; 
285         int showsyntax;
286         int unused_padd;
287         
288         float pix_per_line;
289
290         struct rcti txtscroll, txtbar;
291
292 } SpaceText;
293
294 typedef struct SpaceScript {
295         SpaceLink *next, *prev;
296         int spacetype;
297         float blockscale;
298         struct ScrArea *area;
299         struct Script *script;
300
301         short flags, menunr;
302         int pad1;
303         
304         void *but_refs;
305 } SpaceScript;
306
307 typedef struct SpaceTime {
308         SpaceLink *next, *prev;
309         int spacetype;
310         float blockscale;
311         struct ScrArea *area;
312         
313         View2D v2d;
314         
315         int flag, redraws;
316         
317 } SpaceTime;
318
319 typedef struct SpaceNode {
320         SpaceLink *next, *prev;
321         int spacetype;
322         float blockscale;
323         struct ScrArea *area;
324         
325         View2D v2d;
326         
327         struct ID *id, *from;           /* context, no need to save in file? well... pinning... */
328         short flag, menunr;                     /* menunr: browse id block in header */
329         float aspect;
330         void *curfont;
331         
332         float xof, yof; /* offset for drawing the backdrop */
333         
334         struct bNodeTree *nodetree, *edittree;
335         int treetype, pad;                      /* treetype: as same nodetree->type */
336         
337 } SpaceNode;
338
339 /* snode->flag */
340 #define SNODE_DO_PREVIEW        1
341 #define SNODE_BACKDRAW          2
342
343 typedef struct SpaceImaSel {
344         SpaceLink *next, *prev;
345         int spacetype;
346         float blockscale;
347         struct ScrArea *area;
348         
349         short blockhandler[8];
350
351         View2D v2d;
352
353         struct FileList *files;
354
355         /* specific stuff for drawing */
356         char title[24];
357         char dir[160];
358         char file[80];
359
360         short type, menu, flag, sort;
361
362         void *curfont;
363         int     active_file;
364
365         int numtilesx;
366         int numtilesy;
367
368         int selstate;
369
370         struct rcti viewrect;
371         struct rcti bookmarkrect;
372
373         float scrollpos; /* current position of scrollhandle */
374         float scrollheight; /* height of the scrollhandle */
375         float scrollarea; /* scroll region, scrollpos is from 0 to scrollarea */
376
377         float aspect;
378         unsigned short retval;          /* event */
379
380         short ipotype;
381         
382         short filter;
383         short active_bookmark;
384         short pad, pad1;
385
386         /* view settings */
387         short prv_w;
388         short prv_h;
389
390         /* one day we'll add unions to dna */
391         void (*returnfunc)(char *);
392         void (*returnfunc_event)(unsigned short);
393         void (*returnfunc_args)(char *, void *, void *);
394         
395         void *arg1, *arg2;
396         short *menup;   /* pointer to menu result or ID browsing */
397         char *pupmenu;  /* optional menu in header */
398
399         struct ImBuf *img;
400 } SpaceImaSel;
401
402
403 /* **************** SPACE ********************* */
404
405
406 /* view3d  Now in DNA_view3d_types.h */
407
408 /* button defines in BIF_butspace.h */
409
410 /* sbuts->flag */
411 #define SB_PRV_OSA                      1
412
413 /* these values need to be hardcoded in structs, dna does not recognize defines */
414 /* also defined in BKE */
415 #define FILE_MAXDIR                     160
416 #define FILE_MAXFILE            80
417 #define FILE_MAX                        240
418
419 /* filesel types */
420 #define FILE_UNIX                       8
421 #define FILE_BLENDER            8
422 #define FILE_SPECIAL            9
423
424 #define FILE_LOADLIB            1
425 #define FILE_MAIN                       2
426 #define FILE_LOADFONT           3
427
428 /* sfile->flag and simasel->flag */
429 #define FILE_SHOWSHORT          1
430 #define FILE_STRINGCODE         2
431 #define FILE_LINK                       4
432 #define FILE_HIDE_DOT           8
433 #define FILE_AUTOSELECT         16
434 #define FILE_ACTIVELAY          32
435 #define FILE_ATCURSOR           64
436 #define FILE_SYNCPOSE           128
437 #define FILE_FILTER                     256
438 #define FILE_BOOKMARKS          512
439
440 /* sfile->sort */
441 #define FILE_SORTALPHA          0
442 #define FILE_SORTDATE           1
443 #define FILE_SORTSIZE           2
444 #define FILE_SORTEXTENS         3
445
446 /* files in filesel list: 2=ACTIVE  */
447 #define HILITE                          1
448 #define BLENDERFILE                     4
449 #define PSXFILE                         8
450 #define IMAGEFILE                       16
451 #define MOVIEFILE                       32
452 #define PYSCRIPTFILE            64
453 #define FTFONTFILE                      128
454 #define SOUNDFILE                       256
455 #define TEXTFILE                        512
456 #define MOVIEFILE_ICON          1024 /* movie file that preview can't load */
457 #define FOLDERFILE                      2048 /* represents folders for filtering */
458
459 #define SCROLLH 16                      /* height scrollbar */
460 #define SCROLLB 16                      /* width scrollbar */
461
462 /* SpaceImage->mode */
463 #define SI_TEXTURE              0
464 #define SI_SHOW                 1
465
466 /* SpaceImage->flag */
467 #define SI_BE_SQUARE    1<<0
468 #define SI_EDITTILE             1<<1
469 #define SI_CLIP_UV              1<<2
470 #define SI_DRAWTOOL             1<<3
471 #define SI_STICKYUVS    1<<4
472 #define SI_DRAWSHADOW   1<<5
473 #define SI_SELACTFACE   1<<6
474 #define SI_DEPRECATED   1<<7
475 #define SI_LOCALSTICKY  1<<8
476 #define SI_COORDFLOATS  1<<9
477 #define SI_PIXELSNAP    1<<10
478 #define SI_LIVE_UNWRAP  1<<11
479 #define SI_USE_ALPHA    1<<12
480 #define SI_SHOW_ALPHA   1<<13
481 #define SI_SHOW_ZBUF    1<<14
482                 /* next two for render window dislay */
483 #define SI_PREVSPACE    1<<15
484 #define SI_FULLWINDOW   1<<16
485 #define SI_SYNC_UVSEL   1<<17
486 #define SI_LOCAL_UV             1<<18
487                 /* this means that the image is drawn until it reaches the view edge,
488                  * in the image view, its unrelated to the 'tile' mode for texface */
489 #define SI_DRAW_TILE    1<<19 
490 #define SI_SMOOTH_UV    1<<20 
491
492 /* SpaceText flags (moved from DNA_text_types.h) */
493
494 #define ST_SCROLL_SELECT        0x0001 // scrollable
495 #define ST_CLEAR_NAMESPACE      0x0010 // clear namespace after script
496                                        // execution (see BPY_main.c)
497
498 /* SpaceOops->type */
499 #define SO_OOPS                 0
500 #define SO_OUTLINER             1
501 #define SO_DEPSGRAPH    2
502
503 /* SpaceOops->flag */
504 #define SO_TESTBLOCKS   1
505 #define SO_NEWSELECTED  2
506 #define SO_HIDE_RESTRICTCOLS            4
507
508 /* SpaceOops->visiflag */
509 #define OOPS_SCE        1
510 #define OOPS_OB         2
511 #define OOPS_ME         4
512 #define OOPS_CU         8
513 #define OOPS_MB         16
514 #define OOPS_LT         32
515 #define OOPS_LA         64
516 #define OOPS_MA         128
517 #define OOPS_TE         256
518 #define OOPS_IP         512
519 #define OOPS_LAY        1024
520 #define OOPS_LI         2048
521 #define OOPS_IM         4096
522 #define OOPS_AR         8192
523 #define OOPS_GR         16384
524
525 /* SpaceOops->outlinevis */
526 #define SO_ALL_SCENES   0
527 #define SO_CUR_SCENE    1
528 #define SO_VISIBLE              2
529 #define SO_SELECTED             3
530 #define SO_ACTIVE               4
531 #define SO_SAME_TYPE    5
532 #define SO_GROUPS               6
533 #define SO_LIBRARIES    7
534 #define SO_VERSE_SESSION        8
535 #define SO_VERSE_MS             9
536
537 /* SpaceOops->storeflag */
538 #define SO_TREESTORE_CLEANUP    1
539                 /* if set, it allows redraws. gets set for some allqueue events */
540 #define SO_TREESTORE_REDRAW             2
541
542 /* headerbuttons: 450-499 */
543
544 #define B_IMASELHOME            451
545 #define B_IMASELREMOVEBIP       452
546
547 #define C_BACK  0xBAAAAA
548 #define C_DARK  0x665656
549 #define C_DERK  0x766666
550 #define C_HI    0xCBBBBB
551 #define C_LO    0x544444
552
553 /* queue settings */
554 #define IMS_KNOW_WIN        1
555 #define IMS_KNOW_BIP        2
556 #define IMS_KNOW_DIR        4
557 #define IMS_DOTHE_INF           8
558 #define IMS_KNOW_INF       16
559 #define IMS_DOTHE_IMA      32
560 #define IMS_KNOW_IMA       64
561 #define IMS_FOUND_BIP     128
562 #define IMS_DOTHE_BIP     256
563 #define IMS_WRITE_NO_BIP  512
564
565 /* imasel->mode */
566 #define IMS_NOIMA                       0
567 #define IMS_IMA                         1
568 #define IMS_ANIM                        2
569 #define IMS_DIR                         4
570 #define IMS_FILE                        8
571 #define IMS_STRINGCODE          16
572
573 #define IMS_INDIR                       1
574 #define IMS_INDIRSLI            2
575 #define IMS_INFILE                      3
576 #define IMS_INFILESLI           4
577
578 /* nla->flag */
579 #define SNLA_ALLKEYED           1
580 #define SNLA_ACTIVELAYERS       2
581
582 /* time->flag */
583 #define TIME_DRAWFRAMES         1
584 #define TIME_CFRA_NUM           2
585
586 /* time->redraws */
587 #define TIME_LEFTMOST_3D_WIN    1
588 #define TIME_ALL_3D_WIN                 2
589 #define TIME_ALL_ANIM_WIN               4
590 #define TIME_ALL_BUTS_WIN               8
591 #define TIME_WITH_SEQ_AUDIO             16
592 #define TIME_SEQ                                32
593 #define TIME_ALL_IMAGE_WIN              64
594
595 /* sseq->mainb */
596 #define SEQ_DRAW_SEQUENCE         0
597 #define SEQ_DRAW_IMG_IMBUF        1
598 #define SEQ_DRAW_IMG_WAVEFORM     2
599 #define SEQ_DRAW_IMG_VECTORSCOPE  3
600
601 /* sseq->flag */
602 #define SEQ_DRAWFRAMES  1
603
604 /* space types, moved from DNA_screen_types.h */
605 enum {
606         SPACE_EMPTY,
607         SPACE_VIEW3D,
608         SPACE_IPO,
609         SPACE_OOPS,
610         SPACE_BUTS,
611         SPACE_FILE,
612         SPACE_IMAGE,            
613         SPACE_INFO,
614         SPACE_SEQ,
615         SPACE_TEXT,
616         SPACE_IMASEL,
617         SPACE_SOUND,
618         SPACE_ACTION,
619         SPACE_NLA,
620         SPACE_SCRIPT,
621         SPACE_TIME,
622         SPACE_NODE,
623         SPACEICONMAX = SPACE_NODE
624 /*      SPACE_LOGIC     */
625 };
626
627 #endif