made sticky UV editing options more accessible by adding them to a popup in the header.
[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];
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         int flag;
263         
264         View2D v2d;     
265 } SpaceNla;
266
267 typedef struct SpaceText {
268         SpaceLink *next, *prev;
269         int spacetype;
270         float blockscale;
271         struct ScrArea *area;
272
273         short blockhandler[8];
274
275         struct Text *text;      
276
277         int top, viewlines;
278         short flags, menunr;
279         
280         int font_id;    
281         int lheight;
282         int left;
283         int showlinenrs;
284         
285         int tabnumber;
286         int currtab_set; 
287         int showsyntax;
288         int unused_padd;
289         
290         float pix_per_line;
291
292         struct rcti txtscroll, txtbar;
293
294 } SpaceText;
295
296 typedef struct SpaceScript {
297         SpaceLink *next, *prev;
298         int spacetype;
299         float blockscale;
300         struct ScrArea *area;
301         struct Script *script;
302
303         short flags, menunr;
304         int pad1;
305         
306         void *but_refs;
307 } SpaceScript;
308
309 typedef struct SpaceTime {
310         SpaceLink *next, *prev;
311         int spacetype;
312         float blockscale;
313         struct ScrArea *area;
314         
315         View2D v2d;
316         
317         int flag, redraws;
318         
319 } SpaceTime;
320
321 typedef struct SpaceNode {
322         SpaceLink *next, *prev;
323         int spacetype;
324         float blockscale;
325         struct ScrArea *area;
326         
327         View2D v2d;
328         
329         struct ID *id, *from;           /* context, no need to save in file? well... pinning... */
330         short flag, menunr;                     /* menunr: browse id block in header */
331         float aspect;
332         void *curfont;
333         
334         float xof, yof; /* offset for drawing the backdrop */
335         
336         struct bNodeTree *nodetree, *edittree;
337         int treetype, pad;                      /* treetype: as same nodetree->type */
338         
339 } SpaceNode;
340
341 /* snode->flag */
342 #define SNODE_DO_PREVIEW        1
343 #define SNODE_BACKDRAW          2
344
345 typedef struct SpaceImaSel {
346         SpaceLink *next, *prev;
347         int spacetype;
348         float blockscale;
349         struct ScrArea *area;
350         
351         short blockhandler[8];
352
353         View2D v2d;
354
355         struct FileList *files;
356
357         /* specific stuff for drawing */
358         char title[24];
359         char dir[160];
360         char file[80];
361
362         short type, menu, flag, sort;
363
364         void *curfont;
365         int     active_file;
366
367         int numtilesx;
368         int numtilesy;
369
370         int selstate;
371
372         struct rcti viewrect;
373         struct rcti bookmarkrect;
374
375         float scrollpos; /* current position of scrollhandle */
376         float scrollheight; /* height of the scrollhandle */
377         float scrollarea; /* scroll region, scrollpos is from 0 to scrollarea */
378
379         float aspect;
380         unsigned short retval;          /* event */
381
382         short ipotype;
383         
384         short filter;
385         short active_bookmark;
386         short pad, pad1;
387
388         /* view settings */
389         short prv_w;
390         short prv_h;
391
392         /* one day we'll add unions to dna */
393         void (*returnfunc)(char *);
394         void (*returnfunc_event)(unsigned short);
395         void (*returnfunc_args)(char *, void *, void *);
396         
397         void *arg1, *arg2;
398         short *menup;   /* pointer to menu result or ID browsing */
399         char *pupmenu;  /* optional menu in header */
400
401         struct ImBuf *img;
402 } SpaceImaSel;
403
404
405 /* **************** SPACE ********************* */
406
407
408 /* view3d  Now in DNA_view3d_types.h */
409
410 /* button defines in BIF_butspace.h */
411
412 /* sbuts->flag */
413 #define SB_PRV_OSA                      1
414
415 /* these values need to be hardcoded in structs, dna does not recognize defines */
416 /* also defined in BKE */
417 #define FILE_MAXDIR                     160
418 #define FILE_MAXFILE            80
419 #define FILE_MAX                        240
420
421 /* filesel types */
422 #define FILE_UNIX                       8
423 #define FILE_BLENDER            8
424 #define FILE_SPECIAL            9
425
426 #define FILE_LOADLIB            1
427 #define FILE_MAIN                       2
428 #define FILE_LOADFONT           3
429
430 /* sfile->flag and simasel->flag */
431 #define FILE_SHOWSHORT          1
432 #define FILE_STRINGCODE         2
433 #define FILE_LINK                       4
434 #define FILE_HIDE_DOT           8
435 #define FILE_AUTOSELECT         16
436 #define FILE_ACTIVELAY          32
437 #define FILE_ATCURSOR           64
438 #define FILE_SYNCPOSE           128
439 #define FILE_FILTER                     256
440 #define FILE_BOOKMARKS          512
441
442 /* sfile->sort */
443 #define FILE_SORTALPHA          0
444 #define FILE_SORTDATE           1
445 #define FILE_SORTSIZE           2
446 #define FILE_SORTEXTENS         3
447
448 /* files in filesel list: 2=ACTIVE  */
449 #define HILITE                          1
450 #define BLENDERFILE                     4
451 #define PSXFILE                         8
452 #define IMAGEFILE                       16
453 #define MOVIEFILE                       32
454 #define PYSCRIPTFILE            64
455 #define FTFONTFILE                      128
456 #define SOUNDFILE                       256
457 #define TEXTFILE                        512
458 #define MOVIEFILE_ICON          1024 /* movie file that preview can't load */
459 #define FOLDERFILE                      2048 /* represents folders for filtering */
460
461 #define SCROLLH 16                      /* height scrollbar */
462 #define SCROLLB 16                      /* width scrollbar */
463
464 /* SpaceImage->mode */
465 #define SI_TEXTURE              0
466 #define SI_SHOW                 1
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
584 /* time->flag */
585 #define TIME_DRAWFRAMES         1
586 #define TIME_CFRA_NUM           2
587
588 /* time->redraws */
589 #define TIME_LEFTMOST_3D_WIN    1
590 #define TIME_ALL_3D_WIN                 2
591 #define TIME_ALL_ANIM_WIN               4
592 #define TIME_ALL_BUTS_WIN               8
593 #define TIME_WITH_SEQ_AUDIO             16
594 #define TIME_SEQ                                32
595 #define TIME_ALL_IMAGE_WIN              64
596
597 /* sseq->mainb */
598 #define SEQ_DRAW_SEQUENCE         0
599 #define SEQ_DRAW_IMG_IMBUF        1
600 #define SEQ_DRAW_IMG_WAVEFORM     2
601 #define SEQ_DRAW_IMG_VECTORSCOPE  3
602
603 /* sseq->flag */
604 #define SEQ_DRAWFRAMES  1
605
606 /* space types, moved from DNA_screen_types.h */
607 enum {
608         SPACE_EMPTY,
609         SPACE_VIEW3D,
610         SPACE_IPO,
611         SPACE_OOPS,
612         SPACE_BUTS,
613         SPACE_FILE,
614         SPACE_IMAGE,            
615         SPACE_INFO,
616         SPACE_SEQ,
617         SPACE_TEXT,
618         SPACE_IMASEL,
619         SPACE_SOUND,
620         SPACE_ACTION,
621         SPACE_NLA,
622         SPACE_SCRIPT,
623         SPACE_TIME,
624         SPACE_NODE,
625         SPACEICONMAX = SPACE_NODE
626 /*      SPACE_LOGIC     */
627 };
628
629 #endif