* Adds userdef-types for memcache limitor and frameserver-rendering
[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         
152 } SpaceSeq;
153
154 typedef struct SpaceFile {
155         SpaceLink *next, *prev;
156         int spacetype;
157         float blockscale;
158         struct ScrArea *area;
159         
160         short blockhandler[8];
161
162         struct direntry *filelist;
163         int totfile;
164         char title[24];
165         char dir[160];
166         char file[80];
167         short type, ofs, flag, sort;
168         short maxnamelen, collums;
169         
170         struct BlendHandle *libfiledata;
171         
172         short retval, ipotype;
173         short menu, act;
174
175         /* changed type for compiling */
176         /* void (*returnfunc)(short); ? used with char* ....*/
177         /**
178          * @attention Called in filesel.c: 
179          * @attention returnfunc(this->retval) : short
180          * @attention returnfunc(name)         : char*
181          * @attention Other uses are limited to testing against
182          * @attention the value. How do we resolve this? Two args?
183          * @attention For now, keep the char*, as it seems stable.
184          * @attention Be warned that strange behaviour _has_ been spotted!
185          */
186         void (*returnfunc)(char*);
187                 
188         short *menup;
189 } SpaceFile;
190
191 typedef struct SpaceOops {
192         SpaceLink *next, *prev;
193         int spacetype;
194         float blockscale;
195         struct ScrArea *area;
196
197         short blockhandler[8];
198
199         View2D v2d;
200         
201         ListBase oops;
202         short pin, visiflag, flag, rt;
203         void *lockpoin;
204         
205         ListBase tree;
206         struct TreeStore *treestore;
207         short type, outlinevis, storeflag;
208         short deps_flags;
209         
210 } SpaceOops;
211
212 typedef struct SpaceImage {
213         SpaceLink *next, *prev;
214         int spacetype;
215         float blockscale;
216         struct ScrArea *area;
217
218         short blockhandler[8];
219
220         View2D v2d;
221         
222         struct Image *image;
223         struct CurveMapping *cumap;
224         float zoom;
225         short mode, menunr;
226         short imanr, curtile;
227         float xof, yof;
228         short flag, lock;
229 } SpaceImage;
230
231 typedef struct SpaceNla{
232         struct SpaceLink *next, *prev;
233         int spacetype;
234         float blockscale;
235         struct ScrArea *area;
236
237         short blockhandler[8];
238
239         short menunr, lock;
240         int pad;
241         
242         View2D v2d;     
243 } SpaceNla;
244
245 typedef struct SpaceText {
246         SpaceLink *next, *prev;
247         int spacetype;
248         float blockscale;
249         struct ScrArea *area;
250
251         short blockhandler[8];
252
253         struct Text *text;      
254
255         int top, viewlines;
256         short flags, menunr;
257         
258         int font_id;    
259         int lheight;
260         int left;
261         int showlinenrs;
262         
263         int tabnumber;
264         int currtab_set; 
265         int showsyntax;
266         int unused_padd;
267         
268         float pix_per_line;
269
270         struct rcti txtscroll, txtbar;
271
272 } SpaceText;
273
274 typedef struct SpaceScript {
275         SpaceLink *next, *prev;
276         int spacetype;
277         float blockscale;
278         struct ScrArea *area;
279         struct Script *script;
280
281         int pad2;
282         short flags, menunr;
283
284 } SpaceScript;
285
286 typedef struct SpaceTime {
287         SpaceLink *next, *prev;
288         int spacetype;
289         float blockscale;
290         struct ScrArea *area;
291         
292         View2D v2d;
293         
294         int flag, redraws;
295         
296 } SpaceTime;
297
298 typedef struct SpaceNode {
299         SpaceLink *next, *prev;
300         int spacetype;
301         float blockscale;
302         struct ScrArea *area;
303         
304         View2D v2d;
305         
306         struct ID *id, *from;           /* context, no need to save in file? well... pinning... */
307         short flag, menunr;                     /* menunr: browse id block in header */
308         float aspect;
309         void *curfont;
310         
311         struct bNodeTree *nodetree, *edittree;
312         int treetype, pad;                      /* treetype: as same nodetree->type */
313         
314 } SpaceNode;
315
316 /* snode->flag */
317 #define SNODE_DO_PREVIEW        1
318
319 #
320 #
321 typedef struct OneSelectableIma {
322         int   header;                                           
323         int   ibuf_type;
324         struct ImBuf *pict;                                     
325         struct OneSelectableIma *next;          
326         struct OneSelectableIma *prev;          
327         
328         short  cmap, image, draw_me, rt;
329         short  sx, sy, ex, ey, dw, dh;                          
330         short  selectable, selected;            
331         int   mtime, disksize;                          
332         char   file_name[64];
333         
334         short  orgx, orgy, orgd, anim;          /* same as ibuf->x...*/
335         char   dummy[4];                                        /* 128 */
336
337         char   pict_rect[3968];                         /* 4096   (RECT = 64 * 62) */
338         
339 } OneSelectableIma;
340
341 #
342 #
343 typedef struct ImaDir {
344         struct ImaDir *next, *prev;
345         int  selected, hilite; 
346         int  type,  size;
347         int mtime;
348         char name[100];
349 } ImaDir;
350
351 typedef struct SpaceImaSel {
352         SpaceLink *next, *prev;
353         int spacetype;
354         float blockscale;
355         struct ScrArea *area;
356         
357         char   title[28];
358         
359         int   fase; 
360         short  mode, subfase;
361         short  mouse_move_redraw, imafase;
362         short  mx, my;
363         
364         short  dirsli, dirsli_lines;
365         short  dirsli_sx, dirsli_ey , dirsli_ex, dirsli_h;
366         short  imasli, fileselmenuitem;
367         short  imasli_sx, imasli_ey , imasli_ex, imasli_h;
368         
369         short  dssx, dssy, dsex, dsey; 
370         short  desx, desy, deex, deey; 
371         short  fssx, fssy, fsex, fsey; 
372         short  dsdh, fsdh; 
373         short  fesx, fesy, feex, feey; 
374         short  infsx, infsy, infex, infey; 
375         short  dnsx, dnsy, dnw, dnh;
376         short  fnsx, fnsy, fnw, fnh;
377
378         
379         char   fole[128], dor[128];
380         char   file[128], dir[128];
381         ImaDir *firstdir, *firstfile;
382         int    topdir,  totaldirs,  hilite; 
383         int    topfile, totalfiles;
384         
385         float  image_slider;
386         float  slider_height;
387         float  slider_space;
388         short  topima,  totalima;
389         short  curimax, curimay;
390         OneSelectableIma *first_sel_ima;
391         OneSelectableIma *hilite_ima;
392         short  total_selected, ima_redraw;
393         int pad2;
394         
395         struct ImBuf  *cmap;
396
397         /* Also fucked. Needs to change so things compile, but breaks sdna
398         * ... */        
399 /*      void (*returnfunc)(void); */
400         void (*returnfunc)(char*);
401         void *arg1;
402 } SpaceImaSel;
403
404
405 /* **************** SPACE ********************* */
406
407
408 /* view3d  Now in DNA_view3d_types.h */
409
410 /* buts defines in BIF_butspace.h */
411
412 /* these values need to be hardcoded in blender.h SpaceFile: struct dna does not recognize defines */
413 #define FILE_MAXDIR                     160
414 #define FILE_MAXFILE            80
415
416 /* filesel types */
417 #define FILE_UNIX                       8
418 #define FILE_BLENDER            8
419 #define FILE_SPECIAL            9
420
421 #define FILE_LOADLIB            1
422 #define FILE_MAIN                       2
423
424 /* sfile->flag */
425 #define FILE_SHOWSHORT          1
426 #define FILE_STRINGCODE         2
427 #define FILE_LINK                       4
428 #define FILE_HIDE_DOT           8
429 #define FILE_AUTOSELECT         16
430 #define FILE_ACTIVELAY          32
431 #define FILE_ATCURSOR           64
432 #define FILE_SYNCPOSE           128
433
434 /* sfile->sort */
435 #define FILE_SORTALPHA          0
436 #define FILE_SORTDATE           1
437 #define FILE_SORTSIZE           2
438 #define FILE_SORTEXTENS         3
439
440 /* files in filesel list: 2=ACTIVE  */
441 #define HILITE                          1
442 #define BLENDERFILE                     4
443 #define PSXFILE                         8
444 #define IMAGEFILE                       16
445 #define MOVIEFILE                       32
446 #define PYSCRIPTFILE            64
447 #define FTFONTFILE                      128
448 #define SOUNDFILE                       256
449
450 #define SCROLLH 16                      /* height scrollbar */
451 #define SCROLLB 16                      /* width scrollbar */
452
453 /* SpaceImage->mode */
454 #define SI_TEXTURE              0
455 #define SI_SHOW                 1
456
457 /* SpaceImage->flag */
458 #define SI_BE_SQUARE    1
459 #define SI_EDITTILE             2
460 #define SI_CLIP_UV              4
461 #define SI_DRAWTOOL             8
462 #define SI_STICKYUVS    16
463 #define SI_DRAWSHADOW   32
464 #define SI_SELACTFACE   64
465 #define SI_DEPRECATED   128
466 #define SI_LOCALSTICKY  256
467 #define SI_COORDFLOATS  512
468 #define SI_PIXELSNAP    1024
469 #define SI_LIVE_UNWRAP  2048
470 #define SI_USE_ALPHA    4096
471 #define SI_SHOW_ALPHA   8192
472 #define SI_SHOW_ZBUF    16384
473
474
475 /* SpaceText flags (moved from DNA_text_types.h) */
476
477 #define ST_SCROLL_SELECT        0x0001 // scrollable
478 #define ST_CLEAR_NAMESPACE      0x0010 // clear namespace after script
479                                        // execution (see BPY_main.c)
480 /* SpaceOops->type */
481 #define SO_OOPS                 0
482 #define SO_OUTLINER             1
483 #define SO_DEPSGRAPH    2
484
485 /* SpaceOops->flag */
486 #define SO_TESTBLOCKS   1
487 #define SO_NEWSELECTED  2
488
489 /* SpaceOops->visiflag */
490 #define OOPS_SCE        1
491 #define OOPS_OB         2
492 #define OOPS_ME         4
493 #define OOPS_CU         8
494 #define OOPS_MB         16
495 #define OOPS_LT         32
496 #define OOPS_LA         64
497 #define OOPS_MA         128
498 #define OOPS_TE         256
499 #define OOPS_IP         512
500 #define OOPS_LAY        1024
501 #define OOPS_LI         2048
502 #define OOPS_IM         4096
503 #define OOPS_AR         8192
504
505 /* SpaceOops->outlinevis */
506 #define SO_ALL_SCENES   0
507 #define SO_CUR_SCENE    1
508 #define SO_VISIBLE              2
509 #define SO_SELECTED             3
510 #define SO_ACTIVE               4
511 #define SO_SAME_TYPE    5
512 #define SO_GROUPS               6
513
514 /* SpaceOops->storeflag */
515 #define SO_TREESTORE_CLEANUP    1
516
517 /* headerbuttons: 450-499 */
518
519 #define B_IMASELHOME            451
520 #define B_IMASELREMOVEBIP       452
521
522 #define C_BACK  0xBAAAAA
523 #define C_DARK  0x665656
524 #define C_DERK  0x766666
525 #define C_HI    0xCBBBBB
526 #define C_LO    0x544444
527
528 /* queue settings */
529 #define IMS_KNOW_WIN        1
530 #define IMS_KNOW_BIP        2
531 #define IMS_KNOW_DIR        4
532 #define IMS_DOTHE_INF           8
533 #define IMS_KNOW_INF       16
534 #define IMS_DOTHE_IMA      32
535 #define IMS_KNOW_IMA       64
536 #define IMS_FOUND_BIP     128
537 #define IMS_DOTHE_BIP     256
538 #define IMS_WRITE_NO_BIP  512
539
540 /* imasel->mode */
541 #define IMS_NOIMA                       0
542 #define IMS_IMA                         1
543 #define IMS_ANIM                        2
544 #define IMS_DIR                         4
545 #define IMS_FILE                        8
546 #define IMS_STRINGCODE          16
547
548 #define IMS_INDIR                       1
549 #define IMS_INDIRSLI            2
550 #define IMS_INFILE                      3
551 #define IMS_INFILESLI           4
552
553 /* time->flag */
554 #define TIME_DRAWFRAMES         1
555 #define TIME_CFRA_NUM           2
556
557 /* time->redraws */
558 #define TIME_LEFTMOST_3D_WIN    1
559 #define TIME_ALL_3D_WIN                 2
560 #define TIME_ALL_ANIM_WIN               4
561 #define TIME_ALL_BUTS_WIN               8
562 #define TIME_WITH_SEQ_AUDIO             16
563
564 /* sseq->mainb */
565 #define SEQ_DRAW_SEQUENCE        0
566 #define SEQ_DRAW_IMG_IMBUF       1
567 #define SEQ_DRAW_IMG_WAVEFORM    2
568 #define SEQ_DRAW_IMG_VECTORSCOPE 3
569
570 #endif