Two bugfixes:
[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], bonename[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; /* UV draw type */
242         char sticky; /* sticky selection type */ 
243         char pad[6]; 
244         
245         float xof, yof;                                 /* user defined offset, image is centered */
246         float centx, centy;                             /* storage for offset while render drawing */
247         
248         char *info_str, *info_spare;    /* info string for render */
249         struct ImBuf *spare;
250         
251 } SpaceImage;
252
253 typedef struct SpaceNla {
254         struct SpaceLink *next, *prev;
255         int spacetype;
256         float blockscale;
257         struct ScrArea *area;
258
259         short blockhandler[8];
260
261         short menunr, lock;
262         short autosnap;                 /* this uses the same settings as autosnap for Action Editor */
263         short flag;
264         
265         View2D v2d;     
266 } SpaceNla;
267
268 typedef struct SpaceText {
269         SpaceLink *next, *prev;
270         int spacetype;
271         float blockscale;
272         struct ScrArea *area;
273
274         short blockhandler[8];
275
276         struct Text *text;      
277
278         int top, viewlines;
279         short flags, menunr;
280         
281         int font_id;    
282         int lheight;
283         int left;
284         int showlinenrs;
285         
286         int tabnumber;
287         int currtab_set; 
288         int showsyntax;
289         int unused_padd;
290         
291         float pix_per_line;
292
293         struct rcti txtscroll, txtbar;
294
295 } SpaceText;
296
297 typedef struct SpaceScript {
298         SpaceLink *next, *prev;
299         int spacetype;
300         float blockscale;
301         struct ScrArea *area;
302         struct Script *script;
303
304         short flags, menunr;
305         int pad1;
306         
307         void *but_refs;
308 } SpaceScript;
309
310 typedef struct SpaceTime {
311         SpaceLink *next, *prev;
312         int spacetype;
313         float blockscale;
314         struct ScrArea *area;
315         
316         View2D v2d;
317         
318         int flag, redraws;
319         
320 } SpaceTime;
321
322 typedef struct SpaceNode {
323         SpaceLink *next, *prev;
324         int spacetype;
325         float blockscale;
326         struct ScrArea *area;
327         
328         View2D v2d;
329         
330         struct ID *id, *from;           /* context, no need to save in file? well... pinning... */
331         short flag, menunr;                     /* menunr: browse id block in header */
332         float aspect;
333         void *curfont;
334         
335         float xof, yof; /* offset for drawing the backdrop */
336         
337         struct bNodeTree *nodetree, *edittree;
338         int treetype, pad;                      /* treetype: as same nodetree->type */
339         
340 } SpaceNode;
341
342 /* snode->flag */
343 #define SNODE_DO_PREVIEW        1
344 #define SNODE_BACKDRAW          2
345
346 typedef struct SpaceImaSel {
347         SpaceLink *next, *prev;
348         int spacetype;
349         float blockscale;
350         struct ScrArea *area;
351         
352         short blockhandler[8];
353
354         View2D v2d;
355
356         struct FileList *files;
357
358         /* specific stuff for drawing */
359         char title[24];
360         char dir[160];
361         char file[80];
362
363         short type, menu, flag, sort;
364
365         void *curfont;
366         int     active_file;
367
368         int numtilesx;
369         int numtilesy;
370
371         int selstate;
372
373         struct rcti viewrect;
374         struct rcti bookmarkrect;
375
376         float scrollpos; /* current position of scrollhandle */
377         float scrollheight; /* height of the scrollhandle */
378         float scrollarea; /* scroll region, scrollpos is from 0 to scrollarea */
379
380         float aspect;
381         unsigned short retval;          /* event */
382
383         short ipotype;
384         
385         short filter;
386         short active_bookmark;
387         short pad, pad1;
388
389         /* view settings */
390         short prv_w;
391         short prv_h;
392
393         /* one day we'll add unions to dna */
394         void (*returnfunc)(char *);
395         void (*returnfunc_event)(unsigned short);
396         void (*returnfunc_args)(char *, void *, void *);
397         
398         void *arg1, *arg2;
399         short *menup;   /* pointer to menu result or ID browsing */
400         char *pupmenu;  /* optional menu in header */
401
402         struct ImBuf *img;
403 } SpaceImaSel;
404
405
406 /* **************** SPACE ********************* */
407
408
409 /* view3d  Now in DNA_view3d_types.h */
410
411 /* button defines in BIF_butspace.h */
412
413 /* sbuts->flag */
414 #define SB_PRV_OSA                      1
415
416 /* these values need to be hardcoded in structs, dna does not recognize defines */
417 /* also defined in BKE */
418 #define FILE_MAXDIR                     160
419 #define FILE_MAXFILE            80
420 #define FILE_MAX                        240
421
422 /* filesel types */
423 #define FILE_UNIX                       8
424 #define FILE_BLENDER            8 /* dont display relative paths */
425 #define FILE_SPECIAL            9
426
427 #define FILE_LOADLIB            1
428 #define FILE_MAIN                       2
429 #define FILE_LOADFONT           3
430
431 /* sfile->flag and simasel->flag */
432 #define FILE_SHOWSHORT          1
433 #define FILE_STRINGCODE         2
434 #define FILE_LINK                       4
435 #define FILE_HIDE_DOT           8
436 #define FILE_AUTOSELECT         16
437 #define FILE_ACTIVELAY          32
438 #define FILE_ATCURSOR           64
439 #define FILE_SYNCPOSE           128
440 #define FILE_FILTER                     256
441 #define FILE_BOOKMARKS          512
442
443 /* sfile->sort */
444 #define FILE_SORTALPHA          0
445 #define FILE_SORTDATE           1
446 #define FILE_SORTSIZE           2
447 #define FILE_SORTEXTENS         3
448
449 /* files in filesel list: 2=ACTIVE  */
450 #define HILITE                          1
451 #define BLENDERFILE                     4
452 #define PSXFILE                         8
453 #define IMAGEFILE                       16
454 #define MOVIEFILE                       32
455 #define PYSCRIPTFILE            64
456 #define FTFONTFILE                      128
457 #define SOUNDFILE                       256
458 #define TEXTFILE                        512
459 #define MOVIEFILE_ICON          1024 /* movie file that preview can't load */
460 #define FOLDERFILE                      2048 /* represents folders for filtering */
461
462 #define SCROLLH 16                      /* height scrollbar */
463 #define SCROLLB 16                      /* width scrollbar */
464
465 /* SpaceImage->mode */
466 #define SI_TEXTURE              0
467 #define SI_SHOW                 1
468
469 /* SpaceImage->dt_uv */
470 #define SI_UVDT_DASH    0
471 #define SI_UVDT_BLACK   1
472 #define SI_UVDT_WHITE   2
473 #define SI_UVDT_OUTLINE 3
474
475 /* SpaceImage->sticky
476  * Note DISABLE should be 0, however would also need to re-arrange icon order,
477  * also, sticky loc is the default mode so this means we dont need to 'do_versons' */
478 #define SI_STICKY_LOC           0
479 #define SI_STICKY_DISABLE       1
480 #define SI_STICKY_VERTEX        2
481
482 /* SpaceImage->flag */
483 #define SI_BE_SQUARE    1<<0
484 #define SI_EDITTILE             1<<1
485 #define SI_CLIP_UV              1<<2
486 #define SI_DRAWTOOL             1<<3
487 #define SI_DEPRECATED1  1<<4    /* stick UVs to others in the same location */
488 #define SI_DRAWSHADOW   1<<5
489 #define SI_SELACTFACE   1<<6
490 #define SI_DEPRECATED2  1<<7
491 #define SI_DEPRECATED3  1<<8    /* stick UV selection to mesh vertex (UVs wont always be touching) */
492 #define SI_COORDFLOATS  1<<9
493 #define SI_PIXELSNAP    1<<10
494 #define SI_LIVE_UNWRAP  1<<11
495 #define SI_USE_ALPHA    1<<12
496 #define SI_SHOW_ALPHA   1<<13
497 #define SI_SHOW_ZBUF    1<<14
498                 /* next two for render window dislay */
499 #define SI_PREVSPACE    1<<15
500 #define SI_FULLWINDOW   1<<16
501 #define SI_SYNC_UVSEL   1<<17
502 #define SI_LOCAL_UV             1<<18
503                 /* this means that the image is drawn until it reaches the view edge,
504                  * in the image view, its unrelated to the 'tile' mode for texface */
505 #define SI_DRAW_TILE    1<<19 
506 #define SI_SMOOTH_UV    1<<20 
507
508 /* SpaceText flags (moved from DNA_text_types.h) */
509
510 #define ST_SCROLL_SELECT        0x0001 // scrollable
511 #define ST_CLEAR_NAMESPACE      0x0010 // clear namespace after script
512                                        // execution (see BPY_main.c)
513
514 /* SpaceOops->type */
515 #define SO_OOPS                 0
516 #define SO_OUTLINER             1
517 #define SO_DEPSGRAPH    2
518
519 /* SpaceOops->flag */
520 #define SO_TESTBLOCKS   1
521 #define SO_NEWSELECTED  2
522 #define SO_HIDE_RESTRICTCOLS            4
523
524 /* SpaceOops->visiflag */
525 #define OOPS_SCE        1
526 #define OOPS_OB         2
527 #define OOPS_ME         4
528 #define OOPS_CU         8
529 #define OOPS_MB         16
530 #define OOPS_LT         32
531 #define OOPS_LA         64
532 #define OOPS_MA         128
533 #define OOPS_TE         256
534 #define OOPS_IP         512
535 #define OOPS_LAY        1024
536 #define OOPS_LI         2048
537 #define OOPS_IM         4096
538 #define OOPS_AR         8192
539 #define OOPS_GR         16384
540
541 /* SpaceOops->outlinevis */
542 #define SO_ALL_SCENES   0
543 #define SO_CUR_SCENE    1
544 #define SO_VISIBLE              2
545 #define SO_SELECTED             3
546 #define SO_ACTIVE               4
547 #define SO_SAME_TYPE    5
548 #define SO_GROUPS               6
549 #define SO_LIBRARIES    7
550 #define SO_VERSE_SESSION        8
551 #define SO_VERSE_MS             9
552
553 /* SpaceOops->storeflag */
554 #define SO_TREESTORE_CLEANUP    1
555                 /* if set, it allows redraws. gets set for some allqueue events */
556 #define SO_TREESTORE_REDRAW             2
557
558 /* headerbuttons: 450-499 */
559
560 #define B_IMASELHOME            451
561 #define B_IMASELREMOVEBIP       452
562
563 #define C_BACK  0xBAAAAA
564 #define C_DARK  0x665656
565 #define C_DERK  0x766666
566 #define C_HI    0xCBBBBB
567 #define C_LO    0x544444
568
569 /* queue settings */
570 #define IMS_KNOW_WIN        1
571 #define IMS_KNOW_BIP        2
572 #define IMS_KNOW_DIR        4
573 #define IMS_DOTHE_INF           8
574 #define IMS_KNOW_INF       16
575 #define IMS_DOTHE_IMA      32
576 #define IMS_KNOW_IMA       64
577 #define IMS_FOUND_BIP     128
578 #define IMS_DOTHE_BIP     256
579 #define IMS_WRITE_NO_BIP  512
580
581 /* imasel->mode */
582 #define IMS_NOIMA                       0
583 #define IMS_IMA                         1
584 #define IMS_ANIM                        2
585 #define IMS_DIR                         4
586 #define IMS_FILE                        8
587 #define IMS_STRINGCODE          16
588
589 #define IMS_INDIR                       1
590 #define IMS_INDIRSLI            2
591 #define IMS_INFILE                      3
592 #define IMS_INFILESLI           4
593
594 /* nla->flag */
595 #define SNLA_ALLKEYED           1
596 #define SNLA_ACTIVELAYERS       2
597 #define SNLA_DRAWTIME           4
598
599 /* time->flag */
600         /* show timing in frames instead of in seconds */
601 #define TIME_DRAWFRAMES         1
602         /* temporary flag set when scrubbing time */
603 #define TIME_CFRA_NUM           2
604         /* only keyframes from active/selected channels get shown */
605 #define TIME_ONLYACTSEL         4
606
607 /* time->redraws */
608 #define TIME_LEFTMOST_3D_WIN    1
609 #define TIME_ALL_3D_WIN                 2
610 #define TIME_ALL_ANIM_WIN               4
611 #define TIME_ALL_BUTS_WIN               8
612 #define TIME_WITH_SEQ_AUDIO             16
613 #define TIME_SEQ                                32
614 #define TIME_ALL_IMAGE_WIN              64
615
616 /* sseq->mainb */
617 #define SEQ_DRAW_SEQUENCE         0
618 #define SEQ_DRAW_IMG_IMBUF        1
619 #define SEQ_DRAW_IMG_WAVEFORM     2
620 #define SEQ_DRAW_IMG_VECTORSCOPE  3
621
622 /* sseq->flag */
623 #define SEQ_DRAWFRAMES  1
624 #define SEQ_MARKER_TRANS 2
625
626 /* space types, moved from DNA_screen_types.h */
627 enum {
628         SPACE_EMPTY,
629         SPACE_VIEW3D,
630         SPACE_IPO,
631         SPACE_OOPS,
632         SPACE_BUTS,
633         SPACE_FILE,
634         SPACE_IMAGE,            
635         SPACE_INFO,
636         SPACE_SEQ,
637         SPACE_TEXT,
638         SPACE_IMASEL,
639         SPACE_SOUND,
640         SPACE_ACTION,
641         SPACE_NLA,
642         SPACE_SCRIPT,
643         SPACE_TIME,
644         SPACE_NODE,
645         SPACEICONMAX = SPACE_NODE
646 /*      SPACE_LOGIC     */
647 };
648
649 #endif