Replaced old fly mode for a fly mode that works in all 3 view types - ortho, perspect...
[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 /* Hum ... Not really nice... but needed for spacebuts. */
40 #include "DNA_view2d_types.h"
41
42 struct Ipo;
43 struct ID;
44 struct Text;
45 struct Script;
46 struct ImBuf;
47 struct Image;
48 struct SpaceIpo;
49 struct BlendHandle;
50 struct TreeStore;
51 struct RenderInfo;
52 struct bNodeTree;
53 struct uiBlock;
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 typedef struct SpaceLink SpaceLink;
61 struct SpaceLink {
62         SpaceLink *next, *prev;
63         int spacetype;
64         float blockscale;
65         struct ScrArea *area;
66         short blockhandler[8];
67 };
68
69 typedef struct SpaceInfo {
70         SpaceLink *next, *prev;
71         int spacetype;
72         float blockscale;
73         struct ScrArea *area;
74
75         short blockhandler[8];
76 } SpaceInfo;
77
78 typedef struct SpaceIpo {
79         SpaceLink *next, *prev;
80         int spacetype;
81         float blockscale;
82         struct ScrArea *area;
83
84         short blockhandler[8];
85         
86         unsigned int rowbut, pad2; 
87         View2D v2d;
88         
89         void *editipo;
90         ListBase ipokey;
91         
92         /* the ipo context we need to store */
93         struct Ipo *ipo;
94         struct ID *from;
95         char actname[32], constname[32];
96
97         short totipo, pin;
98         short butofs, channel;
99         short showkey, blocktype;
100         short menunr, lock;
101         int flag;
102         float median[3];
103         rctf tot;
104 } SpaceIpo;
105
106 typedef struct SpaceButs {
107         SpaceLink *next, *prev;
108         int spacetype;
109         float blockscale;
110         struct ScrArea *area;
111         struct RenderInfo *ri;
112
113         short blockhandler[8];
114
115         short cursens, curact;
116         short align, tabo;              /* align for panels, tab is old tab */
117         View2D v2d;
118         
119         short mainb, menunr;    /* texnr and menunr have to remain shorts */
120         short pin, mainbo;      
121         void *lockpoin;
122         
123         short texnr;
124         char texfrom, showgroup;
125         
126         short modeltype;
127         short scriptblock;
128         short scaflag;
129         short re_align;
130         
131         short oldkeypress;              /* for keeping track of the sub tab key cycling */
132         char use_nodes, pad;
133         
134         char texact, tab[7];    /* storing tabs for each context */
135                 
136 } SpaceButs;
137
138 typedef struct SpaceSeq {
139         SpaceLink *next, *prev;
140         int spacetype;
141         float blockscale;
142         struct ScrArea *area;
143
144         short blockhandler[8];
145
146         View2D v2d;
147         
148         short mainb, zoom;
149         short chanshown;
150         short pad2;
151         int flag;
152         int pad;
153 } SpaceSeq;
154
155 typedef struct SpaceFile {
156         SpaceLink *next, *prev;
157         int spacetype;
158         float blockscale;
159         struct ScrArea *area;
160         
161         short blockhandler[8];
162
163         struct direntry *filelist;
164         int totfile;
165         char title[24];
166         char dir[160];
167         char file[80];
168         short type, ofs, flag, sort;
169         short maxnamelen, collums;
170         
171         struct BlendHandle *libfiledata;
172         
173         short retval, ipotype;
174         short menu, act;
175
176         /* changed type for compiling */
177         /* void (*returnfunc)(short); ? used with char* ....*/
178         /**
179          * @attention Called in filesel.c: 
180          * @attention returnfunc(this->retval) : short
181          * @attention returnfunc(name)         : char*
182          * @attention Other uses are limited to testing against
183          * @attention the value. How do we resolve this? Two args?
184          * @attention For now, keep the char*, as it seems stable.
185          * @attention Be warned that strange behaviour _has_ been spotted!
186          */
187         void (*returnfunc)(char*);
188                 
189         short *menup;
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         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         struct ScrArea *area;
218
219         short blockhandler[8];
220
221         View2D v2d;
222         
223         struct Image *image;
224         struct CurveMapping *cumap;
225         float zoom;
226         short mode, menunr;
227         short imanr, curtile;
228         float xof, yof;
229         short flag, lock;
230 } SpaceImage;
231
232 typedef struct SpaceNla{
233         struct SpaceLink *next, *prev;
234         int spacetype;
235         float blockscale;
236         struct ScrArea *area;
237
238         short blockhandler[8];
239
240         short menunr, lock;
241         int pad;
242         
243         View2D v2d;     
244 } SpaceNla;
245
246 typedef struct SpaceText {
247         SpaceLink *next, *prev;
248         int spacetype;
249         float blockscale;
250         struct ScrArea *area;
251
252         short blockhandler[8];
253
254         struct Text *text;      
255
256         int top, viewlines;
257         short flags, menunr;
258         
259         int font_id;    
260         int lheight;
261         int left;
262         int showlinenrs;
263         
264         int tabnumber;
265         int currtab_set; 
266         int showsyntax;
267         int unused_padd;
268         
269         float pix_per_line;
270
271         struct rcti txtscroll, txtbar;
272
273 } SpaceText;
274
275 typedef struct SpaceScript {
276         SpaceLink *next, *prev;
277         int spacetype;
278         float blockscale;
279         struct ScrArea *area;
280         struct Script *script;
281
282         int pad2;
283         short flags, menunr;
284
285 } SpaceScript;
286
287 typedef struct SpaceTime {
288         SpaceLink *next, *prev;
289         int spacetype;
290         float blockscale;
291         struct ScrArea *area;
292         
293         View2D v2d;
294         
295         int flag, redraws;
296         
297 } SpaceTime;
298
299 typedef struct SpaceNode {
300         SpaceLink *next, *prev;
301         int spacetype;
302         float blockscale;
303         struct ScrArea *area;
304         
305         View2D v2d;
306         
307         struct ID *id, *from;           /* context, no need to save in file? well... pinning... */
308         short flag, menunr;                     /* menunr: browse id block in header */
309         float aspect;
310         void *curfont;
311         
312         struct bNodeTree *nodetree, *edittree;
313         int treetype, pad;                      /* treetype: as same nodetree->type */
314         
315 } SpaceNode;
316
317 /* snode->flag */
318 #define SNODE_DO_PREVIEW        1
319
320 #
321 #
322 typedef struct OneSelectableIma {
323         int   header;                                           
324         int   ibuf_type;
325         struct ImBuf *pict;                                     
326         struct OneSelectableIma *next;          
327         struct OneSelectableIma *prev;          
328         
329         short  cmap, image, draw_me, rt;
330         short  sx, sy, ex, ey, dw, dh;                          
331         short  selectable, selected;            
332         int   mtime, disksize;                          
333         char   file_name[64];
334         
335         short  orgx, orgy, orgd, anim;          /* same as ibuf->x...*/
336         char   dummy[4];                                        /* 128 */
337
338         char   pict_rect[3968];                         /* 4096   (RECT = 64 * 62) */
339         
340 } OneSelectableIma;
341
342 #
343 #
344 typedef struct ImaDir {
345         struct ImaDir *next, *prev;
346         int  selected, hilite; 
347         int  type,  size;
348         int mtime;
349         char name[100];
350 } ImaDir;
351
352 typedef struct SpaceImaSel {
353         SpaceLink *next, *prev;
354         int spacetype;
355         float blockscale;
356         struct ScrArea *area;
357         
358         char   title[28];
359         
360         int   fase; 
361         short  mode, subfase;
362         short  mouse_move_redraw, imafase;
363         short  mx, my;
364         
365         short  dirsli, dirsli_lines;
366         short  dirsli_sx, dirsli_ey , dirsli_ex, dirsli_h;
367         short  imasli, fileselmenuitem;
368         short  imasli_sx, imasli_ey , imasli_ex, imasli_h;
369         
370         short  dssx, dssy, dsex, dsey; 
371         short  desx, desy, deex, deey; 
372         short  fssx, fssy, fsex, fsey; 
373         short  dsdh, fsdh; 
374         short  fesx, fesy, feex, feey; 
375         short  infsx, infsy, infex, infey; 
376         short  dnsx, dnsy, dnw, dnh;
377         short  fnsx, fnsy, fnw, fnh;
378
379         
380         char   fole[128], dor[128];
381         char   file[128], dir[128];
382         ImaDir *firstdir, *firstfile;
383         int    topdir,  totaldirs,  hilite; 
384         int    topfile, totalfiles;
385         
386         float  image_slider;
387         float  slider_height;
388         float  slider_space;
389         short  topima,  totalima;
390         short  curimax, curimay;
391         OneSelectableIma *first_sel_ima;
392         OneSelectableIma *hilite_ima;
393         short  total_selected, ima_redraw;
394         int pad2;
395         
396         struct ImBuf  *cmap;
397
398         /* Also fucked. Needs to change so things compile, but breaks sdna
399         * ... */        
400 /*      void (*returnfunc)(void); */
401         void (*returnfunc)(char*);
402         void *arg1;
403 } SpaceImaSel;
404
405
406 /* **************** SPACE ********************* */
407
408
409 /* view3d  Now in DNA_view3d_types.h */
410
411 /* buts defines in BIF_butspace.h */
412
413 /* these values need to be hardcoded in blender.h SpaceFile: struct dna does not recognize defines */
414 #define FILE_MAXDIR                     160
415 #define FILE_MAXFILE            80
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
425 /* sfile->flag */
426 #define FILE_SHOWSHORT          1
427 #define FILE_STRINGCODE         2
428 #define FILE_LINK                       4
429 #define FILE_HIDE_DOT           8
430 #define FILE_AUTOSELECT         16
431 #define FILE_ACTIVELAY          32
432 #define FILE_ATCURSOR           64
433 #define FILE_SYNCPOSE           128
434
435 /* sfile->sort */
436 #define FILE_SORTALPHA          0
437 #define FILE_SORTDATE           1
438 #define FILE_SORTSIZE           2
439 #define FILE_SORTEXTENS         3
440
441 /* files in filesel list: 2=ACTIVE  */
442 #define HILITE                          1
443 #define BLENDERFILE                     4
444 #define PSXFILE                         8
445 #define IMAGEFILE                       16
446 #define MOVIEFILE                       32
447 #define PYSCRIPTFILE            64
448 #define FTFONTFILE                      128
449 #define SOUNDFILE                       256
450
451 #define SCROLLH 16                      /* height scrollbar */
452 #define SCROLLB 16                      /* width scrollbar */
453
454 /* SpaceImage->mode */
455 #define SI_TEXTURE              0
456 #define SI_SHOW                 1
457
458 /* SpaceImage->flag */
459 #define SI_BE_SQUARE    1
460 #define SI_EDITTILE             2
461 #define SI_CLIP_UV              4
462 #define SI_DRAWTOOL             8
463 #define SI_STICKYUVS    16
464 #define SI_DRAWSHADOW   32
465 #define SI_SELACTFACE   64
466 #define SI_DEPRECATED   128
467 #define SI_LOCALSTICKY  256
468 #define SI_COORDFLOATS  512
469 #define SI_PIXELSNAP    1024
470 #define SI_LIVE_UNWRAP  2048
471 #define SI_USE_ALPHA    4096
472 #define SI_SHOW_ALPHA   8192
473 #define SI_SHOW_ZBUF    16384
474
475
476 /* SpaceText flags (moved from DNA_text_types.h) */
477
478 #define ST_SCROLL_SELECT        0x0001 // scrollable
479 #define ST_CLEAR_NAMESPACE      0x0010 // clear namespace after script
480                                        // execution (see BPY_main.c)
481 /* SpaceOops->type */
482 #define SO_OOPS                 0
483 #define SO_OUTLINER             1
484 #define SO_DEPSGRAPH    2
485
486 /* SpaceOops->flag */
487 #define SO_TESTBLOCKS   1
488 #define SO_NEWSELECTED  2
489
490 /* SpaceOops->visiflag */
491 #define OOPS_SCE        1
492 #define OOPS_OB         2
493 #define OOPS_ME         4
494 #define OOPS_CU         8
495 #define OOPS_MB         16
496 #define OOPS_LT         32
497 #define OOPS_LA         64
498 #define OOPS_MA         128
499 #define OOPS_TE         256
500 #define OOPS_IP         512
501 #define OOPS_LAY        1024
502 #define OOPS_LI         2048
503 #define OOPS_IM         4096
504 #define OOPS_AR         8192
505
506 /* SpaceOops->outlinevis */
507 #define SO_ALL_SCENES   0
508 #define SO_CUR_SCENE    1
509 #define SO_VISIBLE              2
510 #define SO_SELECTED             3
511 #define SO_ACTIVE               4
512 #define SO_SAME_TYPE    5
513 #define SO_GROUPS               6
514
515 /* SpaceOops->storeflag */
516 #define SO_TREESTORE_CLEANUP    1
517
518 /* headerbuttons: 450-499 */
519
520 #define B_IMASELHOME            451
521 #define B_IMASELREMOVEBIP       452
522
523 #define C_BACK  0xBAAAAA
524 #define C_DARK  0x665656
525 #define C_DERK  0x766666
526 #define C_HI    0xCBBBBB
527 #define C_LO    0x544444
528
529 /* queue settings */
530 #define IMS_KNOW_WIN        1
531 #define IMS_KNOW_BIP        2
532 #define IMS_KNOW_DIR        4
533 #define IMS_DOTHE_INF           8
534 #define IMS_KNOW_INF       16
535 #define IMS_DOTHE_IMA      32
536 #define IMS_KNOW_IMA       64
537 #define IMS_FOUND_BIP     128
538 #define IMS_DOTHE_BIP     256
539 #define IMS_WRITE_NO_BIP  512
540
541 /* imasel->mode */
542 #define IMS_NOIMA                       0
543 #define IMS_IMA                         1
544 #define IMS_ANIM                        2
545 #define IMS_DIR                         4
546 #define IMS_FILE                        8
547 #define IMS_STRINGCODE          16
548
549 #define IMS_INDIR                       1
550 #define IMS_INDIRSLI            2
551 #define IMS_INFILE                      3
552 #define IMS_INFILESLI           4
553
554 /* time->flag */
555 #define TIME_DRAWFRAMES         1
556 #define TIME_CFRA_NUM           2
557
558 /* time->redraws */
559 #define TIME_LEFTMOST_3D_WIN    1
560 #define TIME_ALL_3D_WIN                 2
561 #define TIME_ALL_ANIM_WIN               4
562 #define TIME_ALL_BUTS_WIN               8
563 #define TIME_WITH_SEQ_AUDIO             16
564 #define TIME_SEQ                        32
565
566 /* sseq->mainb */
567 #define SEQ_DRAW_SEQUENCE         0
568 #define SEQ_DRAW_IMG_IMBUF        1
569 #define SEQ_DRAW_IMG_WAVEFORM     2
570 #define SEQ_DRAW_IMG_VECTORSCOPE  3
571
572 /* sseq->flag */
573 #define SEQ_DRAWFRAMES  1
574
575 #endif