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