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