RNA: review of commits in the past days, check the diffs for the
[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 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.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software Foundation,
20  * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
21  *
22  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
23  * All rights reserved.
24  *
25  * The Original Code is: all of this file.
26  *
27  * Contributor(s): none yet.
28  *
29  * ***** END GPL LICENSE BLOCK *****
30  */
31 #ifndef DNA_SPACE_TYPES_H
32 #define DNA_SPACE_TYPES_H
33
34 #include "DNA_listBase.h"
35 #include "DNA_vec_types.h"
36 #include "DNA_oops_types.h"             /* for TreeStoreElem */
37 #include "DNA_image_types.h"    /* ImageUser */
38 /* Hum ... Not really nice... but needed for spacebuts. */
39 #include "DNA_view2d_types.h"
40
41 struct Ipo;
42 struct ID;
43 struct Text;
44 struct Script;
45 struct ImBuf;
46 struct Image;
47 struct SpaceIpo;
48 struct BlendHandle;
49 struct RenderInfo;
50 struct bNodeTree;
51 struct uiBlock;
52 struct FileList;
53 struct bGPdata;
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
61 typedef struct SpaceLink {
62         struct SpaceLink *next, *prev;
63         int spacetype;
64         float blockscale;
65         short blockhandler[8];
66 } SpaceLink;
67
68 typedef struct SpaceInfo {
69         SpaceLink *next, *prev;
70         int spacetype;
71         float blockscale;
72
73         short blockhandler[8];
74 } SpaceInfo;
75
76 typedef struct SpaceIpo {
77         SpaceLink *next, *prev;
78         int spacetype;
79         float blockscale;
80
81         short blockhandler[8];
82         
83         unsigned int rowbut, pad2; 
84         View2D v2d;
85         
86         void *editipo;
87         ListBase ipokey;
88         
89         /* the ipo context we need to store */
90         struct Ipo *ipo;
91         struct ID *from;
92         char actname[32], constname[32], bonename[32];
93
94         short totipo, pin;
95         short butofs, channel;
96         short showkey, blocktype;
97         short menunr, lock;
98         int flag;
99         float median[3];
100         rctf tot;
101 } SpaceIpo;
102
103 typedef struct SpaceButs {
104         SpaceLink *next, *prev;
105         int spacetype;
106         float blockscale;
107         struct RenderInfo *ri;
108
109         short blockhandler[8];
110
111         short cursens, curact;
112         short align, tabo;              /* align for panels, tab is old tab */
113         View2D v2d;
114         
115         short mainb, menunr;    /* texnr and menunr have to remain shorts */
116         short pin, mainbo;      
117         void *lockpoin;
118         
119         short texnr;
120         char texfrom, showgroup;
121         
122         short modeltype;
123         short scriptblock;
124         short scaflag;
125         short re_align;
126         
127         short oldkeypress;              /* for keeping track of the sub tab key cycling */
128         char pad, flag;
129         
130         char texact, tab[7];    /* storing tabs for each context */
131                 
132 } SpaceButs;
133
134 typedef struct SpaceSeq {
135         SpaceLink *next, *prev;
136         int spacetype;
137         float blockscale;
138
139         short blockhandler[8];
140
141         View2D v2d;
142         
143         float xof, yof; /* offset for drawing the image preview */
144         short mainb, pad;
145         short chanshown;
146         short zebra;
147         int flag;
148         float zoom;
149         
150         struct bGPdata *gpd;            /* grease-pencil data */
151 } SpaceSeq;
152
153 typedef struct SpaceFile {
154         SpaceLink *next, *prev;
155         int spacetype;
156         float blockscale;
157         
158         short blockhandler[8];
159
160         struct direntry *filelist;
161         int totfile;
162         
163         char title[24];
164         char dir[240];
165         char file[80];
166         
167         short type, ofs, flag, sort;
168         short maxnamelen, collums, f_fp, pad1;
169         int pad2;
170         char fp_str[8];
171
172         struct BlendHandle *libfiledata;
173         
174         unsigned short retval;          /* event */
175         short menu, act, ipotype;
176         
177         /* one day we'll add unions to dna */
178         void (*returnfunc)(char *);
179         void (*returnfunc_event)(unsigned short);
180         void (*returnfunc_args)(char *, void *, void *);
181         
182         void *arg1, *arg2;
183         short *menup;   /* pointer to menu result or ID browsing */
184         char *pupmenu;  /* optional menu in header */
185 } SpaceFile;
186
187 typedef struct SpaceOops {
188         SpaceLink *next, *prev;
189         int spacetype;
190         float blockscale;
191
192         short blockhandler[8];
193
194         View2D v2d;
195         
196         ListBase oops;
197         short pin, visiflag, flag, rt;
198         void *lockpoin;
199         
200         ListBase tree;
201         struct TreeStore *treestore;
202         
203         /* search stuff */
204         char search_string[32];
205         struct TreeStoreElem search_tse;
206         int search_flags, do_;
207         
208         short type, outlinevis, storeflag;
209         short deps_flags;
210
211         /* RNA */
212         char *rnapath;
213         
214 } SpaceOops;
215
216 typedef struct SpaceImage {
217         SpaceLink *next, *prev;
218         int spacetype;
219         float blockscale;
220
221         short blockhandler[8];
222
223         View2D v2d;
224         
225         struct Image *image;
226         struct ImageUser iuser;
227         
228         struct CurveMapping *cumap;
229         short mode, menunr;
230         short imanr;
231         short curtile; /* the currently active tile of the image when tile is enabled, is kept in sync with the active faces tile */
232         int flag;
233         short selectmode;
234         short imtypenr, lock;
235         short pin;
236         float zoom;
237         char dt_uv; /* UV draw type */
238         char sticky; /* sticky selection type */
239         char dt_uvstretch;
240         char pad[5];
241         
242         float xof, yof;                                 /* user defined offset, image is centered */
243         float centx, centy;                             /* storage for offset while render drawing */
244         
245         struct bGPdata *gpd;                    /* grease pencil data */
246 } SpaceImage;
247
248 typedef struct SpaceNla {
249         struct SpaceLink *next, *prev;
250         int spacetype;
251         float blockscale;
252
253         short blockhandler[8];
254
255         short menunr, lock;
256         short autosnap;                 /* this uses the same settings as autosnap for Action Editor */
257         short flag;
258         
259         View2D v2d;     
260 } SpaceNla;
261
262 typedef struct SpaceText {
263         SpaceLink *next, *prev;
264         int spacetype;
265         float blockscale;
266
267         short blockhandler[8];
268
269         struct Text *text;      
270
271         int top, viewlines;
272         short flags, menunr;    
273         int font_id;
274
275         int lheight;
276         int left;
277         int showlinenrs;
278         int tabnumber;
279
280         int currtab_set; 
281         int showsyntax;
282         int overwrite;
283         float pix_per_line;
284
285         struct rcti txtscroll, txtbar;
286
287         int wordwrap, doplugins;
288
289 } SpaceText;
290
291 typedef struct Script {
292         ID id;
293
294         void *py_draw;
295         void *py_event;
296         void *py_button;
297         void *py_browsercallback;
298         void *py_globaldict;
299
300         int flags, lastspace;
301         char scriptname[256]; /* store the script file here so we can re-run it on loading blender, if "Enable Scripts" is on */
302         char scriptarg[256];
303 } Script;
304 #define SCRIPT_SET_NULL(_script) _script->py_draw = _script->py_event = _script->py_button = _script->py_browsercallback = _script->py_globaldict = NULL; _script->flags = 0;
305 #define SCRIPT_RUNNING  0x01
306 #define SCRIPT_GUI              0x02
307 #define SCRIPT_FILESEL  0x04
308
309 typedef struct SpaceScript {
310         SpaceLink *next, *prev;
311         int spacetype;
312         float blockscale;
313         struct Script *script;
314
315         short flags, menunr;
316         int pad1;
317         
318         void *but_refs;
319 } SpaceScript;
320
321 typedef struct SpaceTime {
322         SpaceLink *next, *prev;
323         int spacetype;
324         float blockscale;
325         
326         View2D v2d;
327         
328         int flag, redraws;
329         
330 } SpaceTime;
331
332 typedef struct SpaceNode {
333         SpaceLink *next, *prev;
334         int spacetype;
335         float blockscale;
336         
337         short blockhandler[8];
338         
339         View2D v2d;
340         
341         struct ID *id, *from;           /* context, no need to save in file? well... pinning... */
342         short flag, menunr;                     /* menunr: browse id block in header */
343         float aspect;
344         void *curfont;
345         
346         float xof, yof; /* offset for drawing the backdrop */
347         
348         struct bNodeTree *nodetree, *edittree;
349         int treetype, pad;                      /* treetype: as same nodetree->type */
350         
351         struct bGPdata *gpd;            /* grease-pencil data */
352 } SpaceNode;
353
354 /* snode->flag */
355 #define SNODE_DO_PREVIEW        1
356 #define SNODE_BACKDRAW          2
357 #define SNODE_DISPGP            4
358
359 typedef struct SpaceImaSel {
360         SpaceLink *next, *prev;
361         int spacetype;
362         float blockscale;
363         
364         short blockhandler[8];
365
366         View2D v2d;
367
368         struct FileList *files;
369
370         /* specific stuff for drawing */
371         char title[24];
372         char dir[240];
373         char file[80];
374
375         short type, menu, flag, sort;
376
377         void *curfont;
378         int     active_file;
379
380         int numtilesx;
381         int numtilesy;
382
383         int selstate;
384
385         struct rcti viewrect;
386         struct rcti bookmarkrect;
387
388         float scrollpos; /* current position of scrollhandle */
389         float scrollheight; /* height of the scrollhandle */
390         float scrollarea; /* scroll region, scrollpos is from 0 to scrollarea */
391
392         float aspect;
393         unsigned short retval;          /* event */
394
395         short ipotype;
396         
397         short filter;
398         short active_bookmark;
399         short pad, pad1;
400
401         /* view settings */
402         short prv_w;
403         short prv_h;
404
405         /* one day we'll add unions to dna */
406         void (*returnfunc)(char *);
407         void (*returnfunc_event)(unsigned short);
408         void (*returnfunc_args)(char *, void *, void *);
409         
410         void *arg1, *arg2;
411         short *menup;   /* pointer to menu result or ID browsing */
412         char *pupmenu;  /* optional menu in header */
413
414         struct ImBuf *img;
415 } SpaceImaSel;
416
417
418 /* **************** SPACE ********************* */
419
420
421 /* view3d  Now in DNA_view3d_types.h */
422
423 /* button defines in BIF_butspace.h */
424
425 /* sbuts->flag */
426 #define SB_PRV_OSA                      1
427
428 /* these values need to be hardcoded in structs, dna does not recognize defines */
429 /* also defined in BKE */
430 #define FILE_MAXDIR                     160
431 #define FILE_MAXFILE            80
432 #define FILE_MAX                        240
433
434 /* filesel types */
435 #define FILE_UNIX                       8
436 #define FILE_BLENDER            8 /* dont display relative paths */
437 #define FILE_SPECIAL            9
438
439 #define FILE_LOADLIB            1
440 #define FILE_MAIN                       2
441 #define FILE_LOADFONT           3
442
443 /* sfile->flag and simasel->flag */
444 #define FILE_SHOWSHORT          1
445 #define FILE_STRINGCODE         2
446 #define FILE_LINK                       4
447 #define FILE_HIDE_DOT           8
448 #define FILE_AUTOSELECT         16
449 #define FILE_ACTIVELAY          32
450 #define FILE_ATCURSOR           64
451 #define FILE_SYNCPOSE           128
452 #define FILE_FILTER                     256
453 #define FILE_BOOKMARKS          512
454
455 /* sfile->sort */
456 #define FILE_SORTALPHA          0
457 #define FILE_SORTDATE           1
458 #define FILE_SORTSIZE           2
459 #define FILE_SORTEXTENS         3
460
461 /* files in filesel list: 2=ACTIVE  */
462 #define HILITE                          1
463 #define BLENDERFILE                     4
464 #define PSXFILE                         8
465 #define IMAGEFILE                       16
466 #define MOVIEFILE                       32
467 #define PYSCRIPTFILE            64
468 #define FTFONTFILE                      128
469 #define SOUNDFILE                       256
470 #define TEXTFILE                        512
471 #define MOVIEFILE_ICON          1024 /* movie file that preview can't load */
472 #define FOLDERFILE                      2048 /* represents folders for filtering */
473
474 /* SpaceImage->mode */
475 #define SI_TEXTURE              0
476 #define SI_SHOW                 1
477
478 /* SpaceImage->dt_uv */
479 #define SI_UVDT_OUTLINE 0
480 #define SI_UVDT_DASH    1
481 #define SI_UVDT_BLACK   2
482 #define SI_UVDT_WHITE   3
483
484 /* SpaceImage->dt_uvstretch */
485 #define SI_UVDT_STRETCH_ANGLE   0
486 #define SI_UVDT_STRETCH_AREA    1
487
488 /* SpaceImage->sticky
489  * Note DISABLE should be 0, however would also need to re-arrange icon order,
490  * also, sticky loc is the default mode so this means we dont need to 'do_versons' */
491 #define SI_STICKY_LOC           0
492 #define SI_STICKY_DISABLE       1
493 #define SI_STICKY_VERTEX        2
494
495 /* SpaceImage->selectmode */
496 #define SI_SELECT_VERTEX        0
497 #define SI_SELECT_EDGE          1 /* not implemented */
498 #define SI_SELECT_FACE          2
499 #define SI_SELECT_ISLAND        3
500
501 /* SpaceImage->flag */
502 #define SI_BE_SQUARE    1<<0
503 #define SI_EDITTILE             1<<1
504 #define SI_CLIP_UV              1<<2
505 #define SI_DRAWTOOL             1<<3
506 #define SI_DEPRECATED1  1<<4    /* stick UVs to others in the same location */
507 #define SI_DRAWSHADOW   1<<5
508 #define SI_SELACTFACE   1<<6    /* deprecated */
509 #define SI_DEPRECATED2  1<<7
510 #define SI_DEPRECATED3  1<<8    /* stick UV selection to mesh vertex (UVs wont always be touching) */
511 #define SI_COORDFLOATS  1<<9
512 #define SI_PIXELSNAP    1<<10
513 #define SI_LIVE_UNWRAP  1<<11
514 #define SI_USE_ALPHA    1<<12
515 #define SI_SHOW_ALPHA   1<<13
516 #define SI_SHOW_ZBUF    1<<14
517                 /* next two for render window dislay */
518 #define SI_PREVSPACE    1<<15
519 #define SI_FULLWINDOW   1<<16
520 #define SI_SYNC_UVSEL   1<<17
521 #define SI_LOCAL_UV             1<<18
522                 /* this means that the image is drawn until it reaches the view edge,
523                  * in the image view, its unrelated to the 'tile' mode for texface */
524 #define SI_DRAW_TILE    1<<19 
525 #define SI_SMOOTH_UV    1<<20
526 #define SI_DRAW_STRETCH 1<<21
527 #define SI_DISPGP               1<<22
528
529 /* SpaceIpo->flag */
530 #define SIPO_LOCK_VIEW                  1<<0
531 #define SIPO_NOTRANSKEYCULL             1<<1
532
533 /* SpaceText flags (moved from DNA_text_types.h) */
534
535 #define ST_SCROLL_SELECT        0x0001 // scrollable
536 #define ST_CLEAR_NAMESPACE      0x0010 // clear namespace after script
537                                        // execution (see BPY_main.c)
538
539 /* SpaceOops->type */
540 #define SO_OOPS                 0
541 #define SO_OUTLINER             1
542 #define SO_DEPSGRAPH    2
543
544 /* SpaceOops->flag */
545 #define SO_TESTBLOCKS   1
546 #define SO_NEWSELECTED  2
547 #define SO_HIDE_RESTRICTCOLS            4
548
549 /* SpaceOops->visiflag */
550 #define OOPS_SCE        1
551 #define OOPS_OB         2
552 #define OOPS_ME         4
553 #define OOPS_CU         8
554 #define OOPS_MB         16
555 #define OOPS_LT         32
556 #define OOPS_LA         64
557 #define OOPS_MA         128
558 #define OOPS_TE         256
559 #define OOPS_IP         512
560 #define OOPS_LAY        1024
561 #define OOPS_LI         2048
562 #define OOPS_IM         4096
563 #define OOPS_AR         8192
564 #define OOPS_GR         16384
565 #define OOPS_CA         32768
566
567 /* SpaceOops->outlinevis */
568 #define SO_ALL_SCENES   0
569 #define SO_CUR_SCENE    1
570 #define SO_VISIBLE              2
571 #define SO_SELECTED             3
572 #define SO_ACTIVE               4
573 #define SO_SAME_TYPE    5
574 #define SO_GROUPS               6
575 #define SO_LIBRARIES    7
576 #define SO_VERSE_SESSION        8
577 #define SO_VERSE_MS             9
578 #define SO_SEQUENCE             10
579
580 /* SpaceOops->storeflag */
581 #define SO_TREESTORE_CLEANUP    1
582                 /* if set, it allows redraws. gets set for some allqueue events */
583 #define SO_TREESTORE_REDRAW             2
584
585 /* headerbuttons: 450-499 */
586
587 #define B_IMASELHOME            451
588 #define B_IMASELREMOVEBIP       452
589
590 #define C_BACK  0xBAAAAA
591 #define C_DARK  0x665656
592 #define C_DERK  0x766666
593 #define C_HI    0xCBBBBB
594 #define C_LO    0x544444
595
596 /* queue settings */
597 #define IMS_KNOW_WIN        1
598 #define IMS_KNOW_BIP        2
599 #define IMS_KNOW_DIR        4
600 #define IMS_DOTHE_INF           8
601 #define IMS_KNOW_INF       16
602 #define IMS_DOTHE_IMA      32
603 #define IMS_KNOW_IMA       64
604 #define IMS_FOUND_BIP     128
605 #define IMS_DOTHE_BIP     256
606 #define IMS_WRITE_NO_BIP  512
607
608 /* imasel->mode */
609 #define IMS_NOIMA                       0
610 #define IMS_IMA                         1
611 #define IMS_ANIM                        2
612 #define IMS_DIR                         4
613 #define IMS_FILE                        8
614 #define IMS_STRINGCODE          16
615
616 #define IMS_INDIR                       1
617 #define IMS_INDIRSLI            2
618 #define IMS_INFILE                      3
619 #define IMS_INFILESLI           4
620
621 /* nla->flag */
622 #define SNLA_ALLKEYED           1
623 #define SNLA_ACTIVELAYERS       2
624 #define SNLA_DRAWTIME           4
625 #define SNLA_NOTRANSKEYCULL     8
626
627 /* time->flag */
628         /* show timing in frames instead of in seconds */
629 #define TIME_DRAWFRAMES         1
630         /* temporary flag set when scrubbing time */
631 #define TIME_CFRA_NUM           2
632         /* only keyframes from active/selected channels get shown */
633 #define TIME_ONLYACTSEL         4
634
635 /* time->redraws */
636 #define TIME_LEFTMOST_3D_WIN    1
637 #define TIME_ALL_3D_WIN                 2
638 #define TIME_ALL_ANIM_WIN               4
639 #define TIME_ALL_BUTS_WIN               8
640 #define TIME_WITH_SEQ_AUDIO             16
641 #define TIME_SEQ                                32
642 #define TIME_ALL_IMAGE_WIN              64
643 #define TIME_CONTINUE_PHYSICS   128
644
645 /* sseq->mainb */
646 #define SEQ_DRAW_SEQUENCE         0
647 #define SEQ_DRAW_IMG_IMBUF        1
648 #define SEQ_DRAW_IMG_WAVEFORM     2
649 #define SEQ_DRAW_IMG_VECTORSCOPE  3
650 #define SEQ_DRAW_IMG_HISTOGRAM    4
651
652 /* sseq->flag */
653 #define SEQ_DRAWFRAMES   1
654 #define SEQ_MARKER_TRANS 2
655 #define SEQ_DRAW_COLOR_SEPERATED     4
656 #define SEQ_DRAW_SAFE_MARGINS        8
657 #define SEQ_DRAW_GPENCIL                        16
658
659 /* space types, moved from DNA_screen_types.h */
660 enum {
661         SPACE_EMPTY,
662         SPACE_VIEW3D,
663         SPACE_IPO,
664         SPACE_OOPS,
665         SPACE_BUTS,
666         SPACE_FILE,
667         SPACE_IMAGE,            
668         SPACE_INFO,
669         SPACE_SEQ,
670         SPACE_TEXT,
671         SPACE_IMASEL,
672         SPACE_SOUND,
673         SPACE_ACTION,
674         SPACE_NLA,
675         SPACE_SCRIPT,
676         SPACE_TIME,
677         SPACE_NODE,
678         SPACEICONMAX = SPACE_NODE
679 /*      SPACE_LOGIC     */
680 };
681
682 #endif