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