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