huge commit, sorry!
[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 ImBuf;
46 struct Image;
47 struct SpaceIpo;
48 struct BlendHandle;
49
50         /**
51          * The base structure all the other spaces
52          * are derived (implicitly) from. Would be
53          * good to make this explicit.
54          */
55 typedef struct SpaceLink SpaceLink;
56 struct SpaceLink {
57         SpaceLink *next, *prev;
58         int spacetype, pad;
59         struct ScrArea *area;
60 };
61
62 typedef struct SpaceInfo {
63         SpaceLink *next, *prev;
64         int spacetype, pad1;
65         struct ScrArea *area;
66 } SpaceInfo;
67
68 typedef struct SpaceIpo {
69         SpaceLink *next, *prev;
70         int spacetype, pad1;
71         struct ScrArea *area;
72
73         unsigned int rowbut, pad2; 
74         View2D v2d;
75         
76         void *editipo;
77         ListBase ipokey;
78         struct Ipo *ipo;
79         struct ID *from;
80
81         short totipo, pin;
82         short butofs, channel;
83         short showkey, blocktype;
84         short menunr, lock;
85         int flag;
86         int     reserved1;
87         rctf tot;
88 } SpaceIpo;
89
90 typedef struct SpaceButs {
91         SpaceLink *next, *prev;
92         int spacetype, pad1;
93         struct ScrArea *area;
94
95         short cursens, curact;
96         short align, pad2;              /* align for panels */
97         View2D v2d;
98         
99         short mainb, menunr;    /* texnr and menunr have to remain shorts */
100         short pin, mainbo;      
101         void *lockpoin;
102         
103         short texnr;
104         char texfrom, showgroup;
105
106         short rectx, recty;             /* preview render */
107         unsigned int *rect;
108         short cury, modeltype;
109
110         short scriptblock;
111         short scaflag;
112         
113         char texact, tab[7];    /* storing tabs for each context */
114                 
115 } SpaceButs;
116
117 typedef struct SpaceSeq {
118         SpaceLink *next, *prev;
119         int spacetype, pad;
120         struct ScrArea *area;
121
122         View2D v2d;
123         
124         short mainb, zoom;
125         int pad2;
126         
127 } SpaceSeq;
128
129 typedef struct SpaceFile {
130         SpaceLink *next, *prev;
131         int spacetype, pad;
132         struct ScrArea *area;
133         
134         struct direntry *filelist;
135         int totfile;
136         char title[24];
137         char dir[160];
138         char file[80];
139         short type, ofs, flag, sort;
140         short maxnamelen, collums;
141         
142         struct BlendHandle *libfiledata;
143         
144         short retval, ipotype;
145         short menu, act;
146
147         /* changed type for compiling */
148         /* void (*returnfunc)(short); ? used with char* ....*/
149         /**
150          * @attention Called in filesel.c: 
151          * @attention returnfunc(this->retval) : short
152          * @attention returnfunc(name)         : char*
153          * @attention Other uses are limited to testing against
154          * @attention the value. How do we resolve this? Two args?
155          * @attention For now, keep the char*, as it seems stable.
156          * @attention Be warned that strange behaviour _has_ been spotted!
157          */
158         void (*returnfunc)(char*);
159                 
160         short *menup;
161 } SpaceFile;
162
163 typedef struct SpaceOops {
164         SpaceLink *next, *prev;
165         int spacetype, pad;
166         struct ScrArea *area;
167
168         View2D v2d;
169         
170         ListBase oops;
171         short pin, visiflag, flag, rt;
172         void *lockpoin;
173         
174 } SpaceOops;
175
176 typedef struct SpaceImage {
177         SpaceLink *next, *prev;
178         int spacetype, pad;
179         struct ScrArea *area;
180
181         View2D v2d;
182         
183         struct Image *image;
184         float zoom;
185         float pad2; /* padding is with 8 bytes aligned  */
186         short mode, pin;
187         short imanr, curtile;
188         short xof, yof;
189         short flag, lock;
190         
191 } SpaceImage;
192
193 typedef struct SpaceNla{
194         struct SpaceLink *next, *prev;
195         int spacetype;
196         short menunr, lock;
197         struct ScrArea *area;
198
199         View2D v2d;     
200 } SpaceNla;
201
202 typedef struct SpaceText {
203         SpaceLink *next, *prev;
204         int spacetype, pad;
205         struct ScrArea *area;
206
207         struct Text *text;      
208
209         int top, viewlines;
210         short flags, menunr;
211         
212         int font_id;    
213         int lheight;
214         int left;
215         int showlinenrs;
216         
217         float pix_per_line;
218
219         struct rcti txtscroll, txtbar;
220         
221         void *py_draw;
222         void *py_event;
223         void *py_button;
224         void *py_globaldict;
225 } SpaceText;
226
227 #
228 #
229 typedef struct OneSelectableIma {
230         int   header;                                           
231         int   ibuf_type;
232         struct ImBuf *pict;                                     
233         struct OneSelectableIma *next;          
234         struct OneSelectableIma *prev;          
235         
236         short  cmap, image, draw_me, rt;
237         short  sx, sy, ex, ey, dw, dh;                          
238         short  selectable, selected;            
239         int   mtime, disksize;                          
240         char   file_name[64];
241         
242         short  orgx, orgy, orgd, anim;          /* same as ibuf->x...*/
243         char   dummy[4];                                        /* 128 */
244
245         char   pict_rect[3968];                         /* 4096   (RECT = 64 * 62) */
246         
247 } OneSelectableIma;
248
249 #
250 #
251 typedef struct ImaDir {
252         struct ImaDir *next, *prev;
253         int  selected, hilite; 
254         int  type,  size;
255         int mtime;
256         char name[100];
257 } ImaDir;
258
259 typedef struct SpaceImaSel {
260         SpaceLink *next, *prev;
261         int spacetype, pad1;
262         struct ScrArea *area;
263         
264         char   title[28];
265         
266         int   fase; 
267         short  mode, subfase;
268         short  mouse_move_redraw, imafase;
269         short  mx, my;
270         
271         short  dirsli, dirsli_lines;
272         short  dirsli_sx, dirsli_ey , dirsli_ex, dirsli_h;
273         short  imasli, fileselmenuitem;
274         short  imasli_sx, imasli_ey , imasli_ex, imasli_h;
275         
276         short  dssx, dssy, dsex, dsey; 
277         short  desx, desy, deex, deey; 
278         short  fssx, fssy, fsex, fsey; 
279         short  dsdh, fsdh; 
280         short  fesx, fesy, feex, feey; 
281         short  infsx, infsy, infex, infey; 
282         short  dnsx, dnsy, dnw, dnh;
283         short  fnsx, fnsy, fnw, fnh;
284
285         
286         char   fole[128], dor[128];
287         char   file[128], dir[128];
288         ImaDir *firstdir, *firstfile;
289         int    topdir,  totaldirs,  hilite; 
290         int    topfile, totalfiles;
291         
292         float  image_slider;
293         float  slider_height;
294         float  slider_space;
295         short  topima,  totalima;
296         short  curimax, curimay;
297         OneSelectableIma *first_sel_ima;
298         OneSelectableIma *hilite_ima;
299         short  total_selected, ima_redraw;
300         int pad2;
301         
302         struct ImBuf  *cmap;
303
304         /* Also fucked. Needs to change so things compile, but breaks sdna
305         * ... */        
306 /*      void (*returnfunc)(void); */
307         void (*returnfunc)(char*);
308         void *arg1;
309 } SpaceImaSel;
310
311
312 /* **************** SPACE ********************* */
313
314
315 /* view3d->flag */ /* Now in DNA_view3d_types.h */
316 /*
317 #define V3D_DISPIMAGE           1
318 #define V3D_DISPBGPIC           2
319 #define V3D_SETUPBUTS           4
320 #define V3D_NEEDBACKBUFDRAW     8
321 #define V3D_MODE                        (16+32+64+128)
322 #define V3D_EDITMODE            16
323 #define V3D_VERTEXPAINT         32
324 #define V3D_FACESELECT          64
325 #define V3D_POSEMODE            128
326 */
327
328 /* view3d->around */ /* Now in DNA_view3d_types.h */
329 /*
330 #define V3D_CENTRE              0
331 #define V3D_CENTROID    3
332 #define V3D_CURSOR              1
333 #define V3D_LOCAL               2
334 */
335
336 /* buts->mainb old */
337 #define BUTS_VIEW                       0
338 #define BUTS_LAMP                       1
339 #define BUTS_MAT                        2
340 #define BUTS_TEX                        3
341 #define BUTS_ANIM                       4
342 #define BUTS_WORLD                      5
343 #define BUTS_RENDER                     6
344 #define BUTS_EDIT                       7
345 #define BUTS_GAME                       8
346 #define BUTS_FPAINT                     9
347 #define BUTS_RADIO                      10
348 #define BUTS_SCRIPT                     11
349 #define BUTS_SOUND                      12
350 #define BUTS_CONSTRAINT         13
351
352 /* warning: the values of these defines are used in sbuts->tabs[7] */
353 /* buts->mainb new */
354 #define CONTEXT_SCENE   0
355 #define CONTEXT_OBJECT  1
356 #define CONTEXT_TYPES   2
357 #define CONTEXT_SHADING 3
358 #define CONTEXT_EDITING 4
359 #define CONTEXT_SCRIPT  5
360 #define CONTEXT_LOGIC   6
361
362 /* buts->tab new */
363 #define TAB_SCENE_RENDER        0
364 #define TAB_SCENE_WORLD         1
365 #define TAB_SCENE_SETTINGS      2
366
367 #define TAB_SHADING_MAT         0
368 #define TAB_SHADING_TEX         1
369 #define TAB_SHADING_RAD         2
370 #define TAB_SHADING_WORLD       3
371 #define TAB_SHADING_LAMP        4
372
373 /* buts->scaflag */             
374 #define BUTS_SENS_SEL           1
375 #define BUTS_SENS_ACT           2
376 #define BUTS_SENS_LINK          4
377 #define BUTS_CONT_SEL           8
378 #define BUTS_CONT_ACT           16
379 #define BUTS_CONT_LINK          32
380 #define BUTS_ACT_SEL            64
381 #define BUTS_ACT_ACT            128
382 #define BUTS_ACT_LINK           256
383
384 /* these values need to be hardcoded in blender.h SpaceFile: struct dna does not recognize defines */
385 #define FILE_MAXDIR                     160
386 #define FILE_MAXFILE            80
387
388 /* filesel types */
389 #define FILE_UNIX                       8
390 #define FILE_BLENDER            8
391 #define FILE_SPECIAL            9
392
393 #define FILE_LOADLIB            1
394 #define FILE_MAIN                       2
395
396 /* sfile->flag */
397 #define FILE_SHOWSHORT          1
398 #define FILE_STRINGCODE         2
399 #define FILE_LINK                       4
400 #define FILE_HIDE_DOT           8
401
402 /* sfile->sort */
403 #define FILE_SORTALPHA          0
404 #define FILE_SORTDATE           1
405 #define FILE_SORTSIZE           2
406 #define FILE_SORTEXTENS         3
407
408 /* files in filesel list: 2=ACTIVE  */
409 #define HILITE                          1
410 #define BLENDERFILE                     4
411 #define PSXFILE                         8
412 #define IMAGEFILE                       16
413 #define MOVIEFILE                       32
414 #define PYSCRIPTFILE            64
415 #define FTFONTFILE                      128
416 #define SOUNDFILE                       256
417
418 #define SCROLLH 16                      /* height scrollbar */
419 #define SCROLLB 16                      /* width scrollbar */
420
421 /* SpaceImage->mode */
422 #define SI_TEXTURE              0
423 #define SI_SHOW                 1
424
425 /* SpaceImage->flag */
426 #define SI_BE_SQUARE    1
427 #define SI_EDITTILE             2
428 #define SI_CLIP_UV              4
429 #define SI_DRAWTOOL             8
430
431 /* SpaceText flags (moved from DNA_text_types.h) */
432
433 #define ST_SCROLL_SELECT        0x0001 // scrollable
434 #define ST_CLEAR_NAMESPACE      0x0010 // clear namespace after script
435                                        // execution (see BPY_main.c)
436
437 /* SpaceOops->flag */
438 #define SO_TESTBLOCKS   1
439 #define SO_NEWSELECTED  2
440
441 /* SpaceOops->visiflag */
442 #define OOPS_SCE        1
443 #define OOPS_OB         2
444 #define OOPS_ME         4
445 #define OOPS_CU         8
446 #define OOPS_MB         16
447 #define OOPS_LT         32
448 #define OOPS_LA         64
449 #define OOPS_MA         128
450 #define OOPS_TE         256
451 #define OOPS_IP         512
452 #define OOPS_LAY        1024
453 #define OOPS_LI         2048
454 #define OOPS_IM         4096
455
456 /* headerbuttons: 450-499 */
457
458 #define B_IMASELHOME            451
459 #define B_IMASELREMOVEBIP       452
460
461 #define C_BACK  0xBAAAAA
462 #define C_DARK  0x665656
463 #define C_DERK  0x766666
464 #define C_HI    0xCBBBBB
465 #define C_LO    0x544444
466
467 /* queue settings */
468 #define IMS_KNOW_WIN        1
469 #define IMS_KNOW_BIP        2
470 #define IMS_KNOW_DIR        4
471 #define IMS_DOTHE_INF           8
472 #define IMS_KNOW_INF       16
473 #define IMS_DOTHE_IMA      32
474 #define IMS_KNOW_IMA       64
475 #define IMS_FOUND_BIP     128
476 #define IMS_DOTHE_BIP     256
477 #define IMS_WRITE_NO_BIP  512
478
479 /* imasel->mode */
480 #define IMS_NOIMA                       0
481 #define IMS_IMA                         1
482 #define IMS_ANIM                        2
483 #define IMS_DIR                         4
484 #define IMS_FILE                        8
485 #define IMS_STRINGCODE          16
486
487 #define IMS_INDIR                       1
488 #define IMS_INDIRSLI            2
489 #define IMS_INFILE                      3
490 #define IMS_INFILESLI           4
491
492 #endif
493