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