Merging r49212 through r49222 from trunk into soc-2011-tomato
[blender.git] / source / blender / makesdna / DNA_space_types.h
1 /*
2  * ***** BEGIN GPL LICENSE BLOCK *****
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public License
6  * as published by the Free Software Foundation; either version 2
7  * of the License, or (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software Foundation,
16  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17  *
18  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
19  * All rights reserved.
20  *
21  * The Original Code is: all of this file.
22  *
23  * Contributor(s): none yet.
24  *
25  * ***** END GPL LICENSE BLOCK *****
26  */
27 /** \file DNA_space_types.h
28  *  \ingroup DNA
29  *  \since mar-2001
30  *  \author nzc
31  */
32
33 #ifndef __DNA_SPACE_TYPES_H__
34 #define __DNA_SPACE_TYPES_H__
35
36 #include "DNA_defs.h"
37 #include "DNA_listBase.h"
38 #include "DNA_color_types.h"        /* for Histogram and color management */
39 #include "DNA_vec_types.h"
40 #include "DNA_outliner_types.h"     /* for TreeStoreElem */
41 #include "DNA_image_types.h"        /* ImageUser */
42 #include "DNA_movieclip_types.h"    /* MovieClipUser */
43 /* Hum ... Not really nice... but needed for spacebuts. */
44 #include "DNA_view2d_types.h"
45
46 struct ID;
47 struct Text;
48 struct Script;
49 struct bSound;
50 struct ImBuf;
51 struct Image;
52 struct Scopes;
53 struct Histogram;
54 struct SpaceIpo;
55 struct BlendHandle;
56 struct RenderInfo;
57 struct bNodeTree;
58 struct uiBlock;
59 struct FileList;
60 struct bGPdata;
61 struct bDopeSheet;
62 struct FileSelectParams;
63 struct FileLayout;
64 struct bScreen;
65 struct Scene;
66 struct wmOperator;
67 struct wmTimer;
68 struct MovieClip;
69 struct MovieClipScopes;
70 struct Mask;
71
72
73 /* SpaceLink (Base) ==================================== */
74
75 /**
76  * The base structure all the other spaces
77  * are derived (implicitly) from. Would be
78  * good to make this explicit.
79  */
80 typedef struct SpaceLink {
81         struct SpaceLink *next, *prev;
82         ListBase regionbase;        /* storage of regions for inactive spaces */
83         int spacetype;
84         float blockscale DNA_DEPRECATED;        /* XXX make deprecated */
85         short blockhandler[8]  DNA_DEPRECATED;  /* XXX make deprecated */
86 } SpaceLink;
87
88
89 /* Space Info ========================================== */
90
91 /* Info Header */
92 typedef struct SpaceInfo {
93         SpaceLink *next, *prev;
94         ListBase regionbase;        /* storage of regions for inactive spaces */
95         int spacetype;
96         float blockscale DNA_DEPRECATED;
97         short blockhandler[8]  DNA_DEPRECATED;      /* XXX make deprecated */
98         
99         char rpt_mask;
100         char pad[7];
101 } SpaceInfo;
102
103 /* SpaceInfo.rpt_mask */
104 typedef enum eSpaceInfo_RptMask {
105         INFO_RPT_DEBUG  = (1 << 0),
106         INFO_RPT_INFO   = (1 << 1),
107         INFO_RPT_OP     = (1 << 2),
108         INFO_RPT_WARN   = (1 << 3),
109         INFO_RPT_ERR    = (1 << 4),
110 } eSpaceInfo_RptMask;
111
112
113 /* Properties Editor ==================================== */
114
115 /* Properties Editor */
116 typedef struct SpaceButs {
117         SpaceLink *next, *prev;
118         ListBase regionbase;        /* storage of regions for inactive spaces */
119         int spacetype;
120         float blockscale DNA_DEPRECATED;
121         
122         short blockhandler[8]  DNA_DEPRECATED;
123
124         View2D v2d DNA_DEPRECATED;                      /* deprecated, copied to region */
125         
126         short mainb, mainbo, mainbuser; /* context tabs */
127         short re_align, align;          /* align for panels */
128         short preview;                  /* preview is signal to refresh */
129         short texture_context;          /* texture context selector (material, world, brush)*/
130         char flag, pad;
131         
132         void *path;                     /* runtime */
133         int pathflag, dataicon;         /* runtime */
134         ID *pinid;
135
136         void *texuser;
137 } SpaceButs;
138
139 /* button defines (deprecated) */
140 /* warning: the values of these defines are used in sbuts->tabs[8] */
141 /* sbuts->mainb new */
142 #define CONTEXT_SCENE   0
143 #define CONTEXT_OBJECT  1
144 #define CONTEXT_TYPES   2
145 #define CONTEXT_SHADING 3
146 #define CONTEXT_EDITING 4
147 #define CONTEXT_SCRIPT  5
148 #define CONTEXT_LOGIC   6
149
150 /* sbuts->mainb old (deprecated) */
151 #define BUTS_VIEW           0
152 #define BUTS_LAMP           1
153 #define BUTS_MAT            2
154 #define BUTS_TEX            3
155 #define BUTS_ANIM           4
156 #define BUTS_WORLD          5
157 #define BUTS_RENDER         6
158 #define BUTS_EDIT           7
159 #define BUTS_GAME           8
160 #define BUTS_FPAINT         9
161 #define BUTS_RADIO          10
162 #define BUTS_SCRIPT         11
163 #define BUTS_SOUND          12
164 #define BUTS_CONSTRAINT     13
165 #define BUTS_EFFECTS        14
166
167 /* buts->mainb new */
168 typedef enum eSpaceButtons_Context {
169         BCONTEXT_RENDER = 0,
170         BCONTEXT_SCENE = 1,
171         BCONTEXT_WORLD = 2,
172         BCONTEXT_OBJECT = 3,
173         BCONTEXT_DATA = 4,
174         BCONTEXT_MATERIAL = 5,
175         BCONTEXT_TEXTURE = 6,
176         BCONTEXT_PARTICLE = 7,
177         BCONTEXT_PHYSICS = 8,
178         BCONTEXT_BONE = 9,
179         BCONTEXT_MODIFIER = 10,
180         BCONTEXT_CONSTRAINT = 11,
181         BCONTEXT_BONE_CONSTRAINT = 12,
182         
183         /* always as last... */
184         BCONTEXT_TOT
185 } eSpaceButtons_Context;
186
187 /* sbuts->flag */
188 #define SB_PRV_OSA          1
189 #define SB_PIN_CONTEXT      2
190 //#define SB_WORLD_TEX          4       //not used anymore
191 //#define SB_BRUSH_TEX          8       //not used anymore      
192 #define SB_SHADING_CONTEXT  16
193
194 /* sbuts->texture_context */
195 typedef enum eSpaceButtons_Texture_Context {
196         SB_TEXC_MAT_OR_LAMP = 0,
197         SB_TEXC_WORLD = 1,
198         SB_TEXC_BRUSH = 2,
199         SB_TEXC_PARTICLES = 3,
200 } eSpaceButtons_Texture_Context;
201
202 /* sbuts->align */
203 typedef enum eSpaceButtons_Align {
204         BUT_FREE = 0,
205         BUT_HORIZONTAL = 1,
206         BUT_VERTICAL = 2,
207         BUT_AUTO = 3,
208 } eSpaceButtons_Align;
209
210 /* sbuts->scaflag */            
211 #define BUTS_SENS_SEL           1
212 #define BUTS_SENS_ACT           2
213 #define BUTS_SENS_LINK          4
214 #define BUTS_CONT_SEL           8
215 #define BUTS_CONT_ACT           16
216 #define BUTS_CONT_LINK          32
217 #define BUTS_ACT_SEL            64
218 #define BUTS_ACT_ACT            128
219 #define BUTS_ACT_LINK           256
220 #define BUTS_SENS_STATE         512
221 #define BUTS_ACT_STATE          1024
222 #define BUTS_CONT_INIT_STATE    2048
223
224
225 /* Outliner =============================================== */
226
227 /* Outliner */
228 typedef struct SpaceOops {
229         SpaceLink *next, *prev;
230         ListBase regionbase;        /* storage of regions for inactive spaces */
231         int spacetype;
232         float blockscale DNA_DEPRECATED;
233         short blockhandler[8]  DNA_DEPRECATED;
234
235         View2D v2d DNA_DEPRECATED;  /* deprecated, copied to region */
236         
237         ListBase tree;
238         struct TreeStore *treestore;
239         
240         /* search stuff */
241         char search_string[32];
242         struct TreeStoreElem search_tse;
243
244         short flag, outlinevis, storeflag, search_flags;
245 } SpaceOops;
246
247
248 /* SpaceOops->flag */
249 typedef enum eSpaceOutliner_Flag {
250         SO_TESTBLOCKS           = (1 << 0),
251         SO_NEWSELECTED          = (1 << 1),
252         SO_HIDE_RESTRICTCOLS    = (1 << 2),
253         SO_HIDE_KEYINGSETINFO   = (1 << 3),
254 } eSpaceOutliner_Flag;
255
256 /* SpaceOops->outlinevis */
257 typedef enum eSpaceOutliner_Mode {
258         SO_ALL_SCENES = 0,
259         SO_CUR_SCENE = 1,
260         SO_VISIBLE = 2,
261         SO_SELECTED = 3,
262         SO_ACTIVE = 4,
263         SO_SAME_TYPE = 5,
264         SO_GROUPS = 6,
265         SO_LIBRARIES = 7,
266         SO_VERSE_SESSION = 8,
267         SO_VERSE_MS = 9,
268         SO_SEQUENCE = 10,
269         SO_DATABLOCKS = 11,
270         SO_USERDEF = 12,
271         SO_KEYMAP = 13,
272 } eSpaceOutliner_Mode;
273
274 /* SpaceOops->storeflag */
275 typedef enum eSpaceOutliner_StoreFlag {
276         /* rebuild tree */
277         SO_TREESTORE_CLEANUP    = (1 << 0),
278         /* if set, it allows redraws. gets set for some allqueue events */
279         SO_TREESTORE_REDRAW     = (1 << 1),
280 } eSpaceOutliner_StoreFlag;
281
282 /* outliner search flags (SpaceOops->search_flags) */
283 typedef enum eSpaceOutliner_Search_Flags {
284         SO_FIND_CASE_SENSITIVE  = (1 << 0),
285         SO_FIND_COMPLETE        = (1 << 1),
286         SO_SEARCH_RECURSIVE     = (1 << 2),
287 } eSpaceOutliner_Search_Flags;
288
289
290 /* Graph Editor ========================================= */
291
292 /* 'Graph' Editor (formerly known as the IPO Editor) */
293 typedef struct SpaceIpo {
294         SpaceLink *next, *prev;
295         ListBase regionbase;        /* storage of regions for inactive spaces */
296         int spacetype;
297         float blockscale DNA_DEPRECATED;
298         short blockhandler[8]  DNA_DEPRECATED;
299         
300         View2D v2d DNA_DEPRECATED;  /* deprecated, copied to region */
301         
302         struct bDopeSheet *ads; /* settings for filtering animation data (NOTE: we use a pointer due to code-linking issues) */
303         
304         ListBase ghostCurves;   /* sampled snapshots of F-Curves used as in-session guides */
305         
306         short mode;             /* mode for the Graph editor (eGraphEdit_Mode) */
307         short autosnap;         /* time-transform autosnapping settings for Graph editor (eAnimEdit_AutoSnap in DNA_action_types.h) */
308         int flag;               /* settings for Graph editor (eGraphEdit_Flag) */
309         
310         float cursorVal;        /* cursor value (y-value, x-value is current frame) */
311         int around;             /* pivot point for transforms */
312 } SpaceIpo;
313
314
315 /* SpaceIpo->flag (Graph Editor Settings) */
316 typedef enum eGraphEdit_Flag {
317         /* OLD DEPRECEATED SETTING */
318         /* SIPO_LOCK_VIEW            = (1 << 0), */
319         
320         /* don't merge keyframes on the same frame after a transform */
321         SIPO_NOTRANSKEYCULL       = (1 << 1),
322         /* don't show any keyframe handles at all */
323         SIPO_NOHANDLES            = (1 << 2),
324         /* don't show current frame number beside indicator line */
325         SIPO_NODRAWCFRANUM        = (1 << 3),
326         /* show timing in seconds instead of frames */
327         SIPO_DRAWTIME             = (1 << 4),
328         /* only show keyframes for selected F-Curves */
329         SIPO_SELCUVERTSONLY       = (1 << 5),
330         /* draw names of F-Curves beside the respective curves */
331         /* NOTE: currently not used */
332         SIPO_DRAWNAMES            = (1 << 6),
333         /* show sliders in channels list */
334         SIPO_SLIDERS              = (1 << 7),
335         /* don't show the horizontal component of the cursor */
336         SIPO_NODRAWCURSOR         = (1 << 8),
337         /* only show handles of selected keyframes */
338         SIPO_SELVHANDLESONLY      = (1 << 9),
339         /* temporary flag to force channel selections to be synced with main */
340         SIPO_TEMP_NEEDCHANSYNC    = (1 << 10),
341         /* don't perform realtime updates */
342         SIPO_NOREALTIMEUPDATES    = (1 << 11),
343         /* don't draw curves with AA ("beauty-draw") for performance */
344         SIPO_BEAUTYDRAW_OFF       = (1 << 12),
345         /* draw grouped channels with colors set in group */
346         SIPO_NODRAWGCOLORS        = (1 << 13),
347 } eGraphEdit_Flag;
348
349 /* SpaceIpo->mode (Graph Editor Mode) */
350 typedef enum eGraphEdit_Mode {
351         /* all animation curves (from all over Blender) */
352         SIPO_MODE_ANIMATION = 0,
353         /* drivers only */
354         SIPO_MODE_DRIVERS = 1,
355 } eGraphEdit_Mode;
356
357
358 /* NLA Editor ============================================= */
359
360 /* NLA Editor */
361 typedef struct SpaceNla {
362         struct SpaceLink *next, *prev;
363         ListBase regionbase;        /* storage of regions for inactive spaces */
364         int spacetype;
365         float blockscale DNA_DEPRECATED;
366         short blockhandler[8]  DNA_DEPRECATED;
367
368         short autosnap;         /* this uses the same settings as autosnap for Action Editor */
369         short flag;
370         int pad;
371         
372         struct bDopeSheet *ads;
373         View2D v2d DNA_DEPRECATED;   /* deprecated, copied to region */
374 } SpaceNla;
375
376 /* nla->flag */
377 typedef enum eSpaceNla_Flag {
378         /* flags (1<<0), (1<<1), and (1<<3) are depreceated flags from old verisons */
379
380         /* draw timing in seconds instead of frames */
381         SNLA_DRAWTIME          = (1 << 2),
382         /* don't draw frame number beside frame indicator */
383         SNLA_NODRAWCFRANUM     = (1 << 4),
384         /* don't draw influence curves on strips */
385         SNLA_NOSTRIPCURVES     = (1 << 5),
386         /* don't perform realtime updates */
387         SNLA_NOREALTIMEUPDATES = (1 << 6),
388 } eSpaceNla_Flag;
389
390
391 /* Timeline =============================================== */
392
393 /* Pointcache drawing data */
394 # /* Only store the data array in the cache to avoid constant reallocation. */
395 # /* No need to store when saved. */
396 typedef struct SpaceTimeCache {
397         struct SpaceTimeCache *next, *prev;
398         float *array;
399 } SpaceTimeCache;
400
401 /* Timeline View */
402 typedef struct SpaceTime {
403         SpaceLink *next, *prev;
404         ListBase regionbase;        /* storage of regions for inactive spaces */
405         int spacetype;
406         float blockscale DNA_DEPRECATED;
407         
408         View2D v2d DNA_DEPRECATED;  /* deprecated, copied to region */
409
410         ListBase caches;
411
412         int cache_display;
413         int flag;
414 } SpaceTime;
415
416
417 /* time->flag */
418 typedef enum eTimeline_Flag {
419         /* show timing in frames instead of in seconds */
420         TIME_DRAWFRAMES    = (1 << 0),
421         /* show time indicator box beside the frame number */
422         TIME_CFRA_NUM      = (1 << 1),
423         /* only keyframes from active/selected channels get shown */
424         TIME_ONLYACTSEL    = (1 << 2),
425 } eTimeline_Flag;
426
427 /* time->redraws (now screen->redraws_flag) */
428 typedef enum eScreen_Redraws_Flag {
429         TIME_REGION            = (1 << 0),
430         TIME_ALL_3D_WIN        = (1 << 1),
431         TIME_ALL_ANIM_WIN      = (1 << 2),
432         TIME_ALL_BUTS_WIN      = (1 << 3),
433         TIME_WITH_SEQ_AUDIO    = (1 << 4), /* DEPRECATED */
434         TIME_SEQ               = (1 << 5),
435         TIME_ALL_IMAGE_WIN     = (1 << 6),
436         TIME_CONTINUE_PHYSICS  = (1 << 7),
437         TIME_NODES             = (1 << 8),
438         TIME_CLIPS             = (1 << 9),
439 } eScreen_Redraws_Flag;
440
441 /* time->cache */
442 typedef enum eTimeline_Cache_Flag {
443         TIME_CACHE_DISPLAY       = (1 << 0),
444         TIME_CACHE_SOFTBODY      = (1 << 1),
445         TIME_CACHE_PARTICLES     = (1 << 2),
446         TIME_CACHE_CLOTH         = (1 << 3),
447         TIME_CACHE_SMOKE         = (1 << 4),
448         TIME_CACHE_DYNAMICPAINT  = (1 << 5),
449 } eTimeline_Cache_Flag;
450
451
452 /* Sequence Editor ======================================= */
453
454 /* Sequencer */
455 typedef struct SpaceSeq {
456         SpaceLink *next, *prev;
457         ListBase regionbase;        /* storage of regions for inactive spaces */
458         int spacetype;
459         float blockscale DNA_DEPRECATED;
460
461         short blockhandler[8]  DNA_DEPRECATED;
462
463         View2D v2d DNA_DEPRECATED;  /* deprecated, copied to region */
464         
465         float xof DNA_DEPRECATED, yof DNA_DEPRECATED;   /* deprecated: offset for drawing the image preview */
466         short mainb;    /* weird name for the sequencer subtype (seq, image, luma... etc) */
467         short render_size;
468         short chanshown;
469         short zebra;
470         int flag;
471         float zoom DNA_DEPRECATED;  /* deprecated, handled by View2D now */
472         int view; /* see SEQ_VIEW_* below */
473         int pad;
474
475         struct bGPdata *gpd;        /* grease-pencil data */
476
477         /* **** color management **** */
478         ColorManagedViewSettings view_settings;
479 } SpaceSeq;
480
481
482 /* sseq->mainb */
483 typedef enum eSpaceSeq_RegionType {
484         SEQ_DRAW_SEQUENCE = 0,
485         SEQ_DRAW_IMG_IMBUF = 1,
486         SEQ_DRAW_IMG_WAVEFORM = 2,
487         SEQ_DRAW_IMG_VECTORSCOPE = 3,
488         SEQ_DRAW_IMG_HISTOGRAM = 4,
489 } eSpaceSeq_RegionType;
490
491 /* sseq->flag */
492 typedef enum eSpaceSeq_Flag {
493         SEQ_DRAWFRAMES              = (1 << 0),
494         SEQ_MARKER_TRANS            = (1 << 1),
495         SEQ_DRAW_COLOR_SEPARATED    = (1 << 2),
496         SEQ_DRAW_SAFE_MARGINS       = (1 << 3),
497 /*  SEQ_DRAW_GPENCIL            = (1 << 4), */ /* DEPRECATED */
498         SEQ_NO_DRAW_CFRANUM         = (1 << 5),
499 } eSpaceSeq_Flag;
500
501 /* sseq->view */
502 typedef enum eSpaceSeq_Displays {
503         SEQ_VIEW_SEQUENCE = 1,
504         SEQ_VIEW_PREVIEW = 2,
505         SEQ_VIEW_SEQUENCE_PREVIEW = 3,
506 } eSpaceSeq_Dispays;
507
508 /* sseq->render_size */
509 typedef enum eSpaceSeq_Proxy_RenderSize {
510         SEQ_PROXY_RENDER_SIZE_NONE      =  -1,
511         SEQ_PROXY_RENDER_SIZE_SCENE     =   0,
512         SEQ_PROXY_RENDER_SIZE_25        =  25,
513         SEQ_PROXY_RENDER_SIZE_50        =  50,
514         SEQ_PROXY_RENDER_SIZE_75        =  75,
515         SEQ_PROXY_RENDER_SIZE_100       =  99,
516         SEQ_PROXY_RENDER_SIZE_FULL      = 100
517 } eSpaceSeq_Proxy_RenderSize;
518
519 typedef struct MaskSpaceInfo
520 {
521         /* **** mask editing **** */
522         struct Mask *mask;
523         /* draw options */
524         char draw_flag;
525         char draw_type;
526         char pad3[6];
527 } MaskSpaceInfo;
528
529 /* File Selector ========================================== */
530
531 /* Config and Input for File Selector */
532 typedef struct FileSelectParams {
533         char title[96]; /* title, also used for the text of the execute button */
534         char dir[1056]; /* directory, FILE_MAX_LIBEXTRA, 1024 + 32, this is for extreme case when 1023 length path
535                          * needs to be linked in, where foo.blend/Armature need adding  */
536         char file[256]; /* file */
537         char renamefile[256];
538         char renameedit[256]; /* annoying but the first is only used for initialization */
539
540         char filter_glob[64]; /* list of filetypes to filter */
541
542         int active_file;
543         int sel_first;
544         int sel_last;
545
546         /* short */
547         short type; /* XXXXX for now store type here, should be moved to the operator */
548         short flag; /* settings for filter, hiding dots files,...  */
549         short sort; /* sort order */
550         short display; /* display mode flag */
551         short filter; /* filter when (flags & FILE_FILTER) is true */
552
553         /* XXX --- still unused -- */
554         short f_fp; /* show font preview */
555         char fp_str[8]; /* string to use for font preview */
556
557         /* XXX --- end unused -- */
558 } FileSelectParams;
559
560 /* File Browser */
561 typedef struct SpaceFile {
562         SpaceLink *next, *prev;
563         ListBase regionbase;        /* storage of regions for inactive spaces */
564         int spacetype;
565         
566         int scroll_offset;
567
568         struct FileSelectParams *params; /* config and input for file select */
569         
570         struct FileList *files; /* holds the list of files to show */
571
572         ListBase *folders_prev; /* holds the list of previous directories to show */
573         ListBase *folders_next; /* holds the list of next directories (pushed from previous) to show */
574
575         /* operator that is invoking fileselect 
576          * op->exec() will be called on the 'Load' button.
577          * if operator provides op->cancel(), then this will be invoked
578          * on the cancel button.
579          */
580         struct wmOperator *op; 
581
582         struct wmTimer *smoothscroll_timer;
583
584         struct FileLayout *layout;
585         
586         short recentnr, bookmarknr;
587         short systemnr, pad2;
588 } SpaceFile;
589
590
591 /* FileSelectParams.display */
592 enum FileDisplayTypeE {
593         FILE_DEFAULTDISPLAY = 0,
594         FILE_SHORTDISPLAY = 1,
595         FILE_LONGDISPLAY = 2,
596         FILE_IMGDISPLAY = 3
597 };
598
599 /* FileSelectParams.sort */
600 enum FileSortTypeE {
601         FILE_SORT_NONE = 0,
602         FILE_SORT_ALPHA = 1,
603         FILE_SORT_EXTENSION = 2,
604         FILE_SORT_TIME = 3,
605         FILE_SORT_SIZE = 4
606 };
607
608 /* these values need to be hardcoded in structs, dna does not recognize defines */
609 /* also defined in BKE */
610 #define FILE_MAXDIR         768
611 #define FILE_MAXFILE        256
612 #define FILE_MAX            1024
613
614 #define FILE_MAX_LIBEXTRA   (FILE_MAX + 32)
615
616 /* filesel types */
617 #define FILE_UNIX           8
618 #define FILE_BLENDER        8 /* don't display relative paths */
619 #define FILE_SPECIAL        9
620
621 #define FILE_LOADLIB        1
622 #define FILE_MAIN           2
623 #define FILE_LOADFONT       3
624
625 /* filesel op property -> action */
626 typedef enum eFileSel_Action {
627         FILE_OPENFILE = 0,
628         FILE_SAVE = 1,
629 } eFileSel_Action;
630
631 /* sfile->params->flag and simasel->flag */
632 typedef enum eFileSel_Params_Flag {
633         FILE_SHOWSHORT      = (1 << 0),
634         FILE_RELPATH        = (1 << 1), /* was FILE_STRINGCODE */
635         FILE_LINK           = (1 << 2),
636         FILE_HIDE_DOT       = (1 << 3),
637         FILE_AUTOSELECT     = (1 << 4),
638         FILE_ACTIVELAY      = (1 << 5),
639 /*  FILE_ATCURSOR       = (1 << 6), */ /* deprecated */
640         FILE_DIRSEL_ONLY    = (1 << 7),
641         FILE_FILTER         = (1 << 8),
642         FILE_BOOKMARKS      = (1 << 9),
643         FILE_GROUP_INSTANCE = (1 << 10),
644 } eFileSel_Params_Flag;
645
646
647 /* files in filesel list: file types */
648 typedef enum eFileSel_File_Types {
649         BLENDERFILE         = (1 << 2),
650         BLENDERFILE_BACKUP  = (1 << 3),
651         IMAGEFILE           = (1 << 4),
652         MOVIEFILE           = (1 << 5),
653         PYSCRIPTFILE        = (1 << 6),
654         FTFONTFILE          = (1 << 7),
655         SOUNDFILE           = (1 << 8),
656         TEXTFILE            = (1 << 9),
657         MOVIEFILE_ICON      = (1 << 10), /* movie file that preview can't load */
658         FOLDERFILE          = (1 << 11), /* represents folders for filtering */
659         BTXFILE             = (1 << 12),
660         COLLADAFILE         = (1 << 13),
661         OPERATORFILE        = (1 << 14), /* from filter_glob operator property */
662 } eFileSel_File_Types;
663
664 /* Selection Flags in filesel: struct direntry, unsigned char selflag */
665 typedef enum eDirEntry_SelectFlag {
666 /*  ACTIVE_FILE         = (1 << 1), */ /* UNUSED */
667         HILITED_FILE        = (1 << 2),
668         SELECTED_FILE       = (1 << 3),
669         EDITING_FILE        = (1 << 4),
670 } eDirEntry_SelectFlag;
671
672 /* Image/UV Editor ======================================== */
673
674 /* Image/UV Editor */
675 typedef struct SpaceImage {
676         SpaceLink *next, *prev;
677         ListBase regionbase;        /* storage of regions for inactive spaces */
678         int spacetype;
679
680         int flag;
681
682         struct Image *image;
683         struct ImageUser iuser;
684         struct CurveMapping *cumap;
685         
686         struct Scopes scopes;           /* histogram waveform and vectorscope */
687         struct Histogram sample_line_hist;  /* sample line histogram */
688
689         struct bGPdata *gpd;            /* grease pencil data */
690
691         float cursor[2];                /* UV editor 2d cursor */
692         float xof, yof;                 /* user defined offset, image is centered */
693         float zoom;                     /* user defined zoom level */
694         float centx, centy;             /* storage for offset while render drawing */
695
696         char  mode;                     /* view/paint/mask */
697         char  pin;
698         short pad;
699         short curtile; /* the currently active tile of the image when tile is enabled, is kept in sync with the active faces tile */
700         short lock;
701         char dt_uv; /* UV draw type */
702         char sticky; /* sticky selection type */
703         char dt_uvstretch;
704         char around;
705
706         MaskSpaceInfo mask_info;
707
708         /* **** color management **** */
709         ColorManagedViewSettings view_settings;
710 } SpaceImage;
711
712
713 /* SpaceImage->dt_uv */
714 typedef enum eSpaceImage_UVDT {
715         SI_UVDT_OUTLINE = 0,
716         SI_UVDT_DASH = 1,
717         SI_UVDT_BLACK = 2,
718         SI_UVDT_WHITE = 3,
719 } eSpaceImage_UVDT;
720
721 /* SpaceImage->dt_uvstretch */
722 typedef enum eSpaceImage_UVDT_Stretch {
723         SI_UVDT_STRETCH_ANGLE = 0,
724         SI_UVDT_STRETCH_AREA = 1,
725 } eSpaceImage_UVDT_Stretch;
726
727 /* SpaceImage->mode */
728 typedef enum eSpaceImage_Mode {
729         SI_MODE_VIEW  = 0,
730         SI_MODE_PAINT = 1,
731         SI_MODE_MASK  = 2
732 } eSpaceImage_Mode;
733
734 /* SpaceImage->sticky
735  * Note DISABLE should be 0, however would also need to re-arrange icon order,
736  * also, sticky loc is the default mode so this means we don't need to 'do_versons' */
737 typedef enum eSpaceImage_Sticky {
738         SI_STICKY_LOC      = 0,
739         SI_STICKY_DISABLE  = 1,
740         SI_STICKY_VERTEX   = 2,
741 } eSpaceImage_Sticky;
742
743 /* SpaceImage->flag */
744 typedef enum eSpaceImage_Flag {
745 /*      SI_BE_SQUARE          = (1 << 0), */  /* deprecated */
746         SI_EDITTILE           = (1 << 1),     /* XXX - not used but should be? */
747         SI_CLIP_UV            = (1 << 2),
748 /*      SI_DRAWTOOL           = (1 << 3), */  /* deprecated */
749         SI_NO_DRAWFACES       = (1 << 4),
750         SI_DRAWSHADOW         = (1 << 5),
751 /*      SI_SELACTFACE         = (1 << 6), */  /* deprecated */
752 /*      SI_DEPRECATED2        = (1 << 7), */  /* deprecated */
753 /*      SI_DEPRECATED3        = (1 << 8), */  /* deprecated */
754         SI_COORDFLOATS        = (1 << 9),
755         SI_PIXELSNAP          = (1 << 10),
756         SI_LIVE_UNWRAP        = (1 << 11),
757         SI_USE_ALPHA          = (1 << 12),
758         SI_SHOW_ALPHA         = (1 << 13),
759         SI_SHOW_ZBUF          = (1 << 14),
760         
761         /* next two for render window display */
762         SI_PREVSPACE          = (1 << 15),
763         SI_FULLWINDOW         = (1 << 16),
764         
765 /*      SI_DEPRECATED4        = (1 << 17), */  /* deprecated */
766 /*      SI_DEPRECATED5        = (1 << 18), */  /* deprecated */
767         
768         /* this means that the image is drawn until it reaches the view edge,
769          * in the image view, its unrelated to the 'tile' mode for texface
770          */
771         SI_DRAW_TILE          = (1 << 19),
772         SI_SMOOTH_UV          = (1 << 20),
773         SI_DRAW_STRETCH       = (1 << 21),
774 /*  SI_DISPGP             = (1 << 22), */  /* deprecated */
775         SI_DRAW_OTHER         = (1 << 23),
776
777         SI_COLOR_CORRECTION   = (1 << 24),
778 } eSpaceImage_Flag;
779
780 /* Text Editor ============================================ */
781
782 /* Text Editor */
783 typedef struct SpaceText {
784         SpaceLink *next, *prev;
785         ListBase regionbase;        /* storage of regions for inactive spaces */
786         int spacetype;
787         float blockscale DNA_DEPRECATED;
788         short blockhandler[8]  DNA_DEPRECATED;
789
790         struct Text *text;      
791
792         int top, viewlines;
793         short flags, menunr;    
794
795         short lheight;      /* user preference */
796         char cwidth, linenrs_tot;       /* runtime computed, character width and the number of chars to use when showing line numbers */
797         int left;
798         int showlinenrs;
799         int tabnumber;
800
801         short showsyntax;
802         short line_hlight;
803         short overwrite;
804         short live_edit; /* run python while editing, evil */
805         float pix_per_line;
806
807         struct rcti txtscroll, txtbar;
808
809         int wordwrap, doplugins;
810
811         char findstr[256];      /* ST_MAX_FIND_STR */
812         char replacestr[256];   /* ST_MAX_FIND_STR */
813
814         short margin_column; /* column number to show right margin at */
815         char pad[6];
816
817         void *drawcache; /* cache for faster drawing */
818 } SpaceText;
819
820
821 /* SpaceText flags (moved from DNA_text_types.h) */
822 typedef enum eSpaceText_Flags {
823         /* scrollable */
824         ST_SCROLL_SELECT        = (1 << 0),
825         /* clear namespace after script execution (BPY_main.c) */
826         ST_CLEAR_NAMESPACE      = (1 << 4), 
827         
828         ST_FIND_WRAP            = (1 << 5),
829         ST_FIND_ALL             = (1 << 6),
830         ST_SHOW_MARGIN          = (1 << 7),
831         ST_MATCH_CASE           = (1 << 8),
832 } eSpaceText_Flags;
833
834 /* stext->findstr/replacestr */
835 #define ST_MAX_FIND_STR     256
836
837 /* Script View (Obsolete) ================================== */
838
839 /* Script Runtime Data - Obsolete (pre 2.5) */
840 typedef struct Script {
841         ID id;
842
843         void *py_draw;
844         void *py_event;
845         void *py_button;
846         void *py_browsercallback;
847         void *py_globaldict;
848
849         int flags, lastspace;
850         /* store the script file here so we can re-run it on loading blender, if "Enable Scripts" is on */
851         char scriptname[1024]; /* 1024 = FILE_MAX */
852         char scriptarg[256]; /* 1024 = FILE_MAX */
853 } Script;
854 #define SCRIPT_SET_NULL(_script) _script->py_draw = _script->py_event = _script->py_button = _script->py_browsercallback = _script->py_globaldict = NULL; _script->flags = 0
855
856 /* Script View - Obsolete (pre 2.5) */
857 typedef struct SpaceScript {
858         SpaceLink *next, *prev;
859         ListBase regionbase;        /* storage of regions for inactive spaces */
860         int spacetype;
861         float blockscale DNA_DEPRECATED;
862         struct Script *script;
863
864         short flags, menunr;
865         int pad1;
866         
867         void *but_refs;
868 } SpaceScript;
869
870 /* Nodes Editor =========================================== */
871
872 /* Node Editor */
873 typedef struct SpaceNode {
874         SpaceLink *next, *prev;
875         ListBase regionbase;        /* storage of regions for inactive spaces */
876         int spacetype;
877         float blockscale DNA_DEPRECATED;
878         short blockhandler[8]  DNA_DEPRECATED;
879         
880         View2D v2d DNA_DEPRECATED;  /* deprecated, copied to region */
881         
882         struct ID *id, *from;       /* context, no need to save in file? well... pinning... */
883         short flag, pad1;           /* menunr: browse id block in header */
884         float aspect, aspect_sqrt;
885         
886         float xof, yof;     /* offset for drawing the backdrop */
887         float zoom;   /* zoom for backdrop */
888         float mx, my;       /* mousepos for drawing socketless link */
889         
890         struct bNodeTree *nodetree, *edittree;
891         int treetype;       /* treetype: as same nodetree->type */
892         short texfrom;      /* texfrom object, world or brush */
893         short shaderfrom;   /* shader from object or world */
894         short recalc;       /* currently on 0/1, for auto compo */
895         short pad[3];
896         ListBase linkdrag;  /* temporary data for modal linking operator */
897         
898         struct bGPdata *gpd;        /* grease-pencil data */
899
900         /* **** color management **** */
901         ColorManagedViewSettings view_settings;
902 } SpaceNode;
903
904 /* snode->flag */
905 typedef enum eSpaceNode_Flag {
906         SNODE_BACKDRAW       = (1 << 1),
907 /*  SNODE_DISPGP         = (1 << 2), */ /* XXX: Grease Pencil - deprecated? */
908         SNODE_USE_ALPHA      = (1 << 3),
909         SNODE_SHOW_ALPHA     = (1 << 4),
910         SNODE_SHOW_R         = (1 << 7),
911         SNODE_SHOW_G         = (1 << 8),
912         SNODE_SHOW_B         = (1 << 9),
913         SNODE_AUTO_RENDER    = (1 << 5),
914         SNODE_SHOW_HIGHLIGHT = (1 << 6),
915 } eSpaceNode_Flag;
916
917 /* snode->texfrom */
918 typedef enum eSpaceNode_TexFrom {
919         SNODE_TEX_OBJECT   = 0,
920         SNODE_TEX_WORLD    = 1,
921         SNODE_TEX_BRUSH    = 2,
922 } eSpaceNode_TexFrom;
923
924 /* snode->shaderfrom */
925 typedef enum eSpaceNode_ShaderFrom {
926         SNODE_SHADER_OBJECT = 0,
927         SNODE_SHADER_WORLD = 1,
928 } eSpaceNode_ShaderFrom;
929
930 /* Game Logic Editor ===================================== */
931
932 /* Logic Editor */
933 typedef struct SpaceLogic {
934         SpaceLink *next, *prev;
935         ListBase regionbase;        /* storage of regions for inactive spaces */
936         int spacetype;
937         float blockscale DNA_DEPRECATED;
938         
939         short blockhandler[8]  DNA_DEPRECATED;
940         
941         short flag, scaflag;
942         int pad;
943         
944         struct bGPdata *gpd;        /* grease-pencil data */
945 } SpaceLogic;
946
947 /* Console ================================================ */
948
949 /* Console content */
950 typedef struct ConsoleLine {
951         struct ConsoleLine *next, *prev;
952         
953         /* keep these 3 vars so as to share free, realloc funcs */
954         int len_alloc;  /* allocated length */
955         int len;    /* real len - strlen() */
956         char *line; 
957         
958         int cursor;
959         int type; /* only for use when in the 'scrollback' listbase */
960 } ConsoleLine;
961
962 /* ConsoleLine.type */
963 typedef enum eConsoleLine_Type {
964         CONSOLE_LINE_OUTPUT = 0,
965         CONSOLE_LINE_INPUT = 1,
966         CONSOLE_LINE_INFO = 2, /* autocomp feedback */
967         CONSOLE_LINE_ERROR = 3
968 } eConsoleLine_Type;
969
970
971 /* Console View */
972 typedef struct SpaceConsole {
973         SpaceLink *next, *prev;
974         ListBase regionbase;        /* storage of regions for inactive spaces */
975         int spacetype;
976         float blockscale DNA_DEPRECATED;            // XXX are these needed?
977         short blockhandler[8]  DNA_DEPRECATED;      // XXX are these needed?
978         
979         /* space vars */
980         int lheight, pad;
981
982         ListBase scrollback; /* ConsoleLine; output */
983         ListBase history; /* ConsoleLine; command history, current edited line is the first */
984         char prompt[256];
985         char language[32]; /* multiple consoles are possible, not just python */
986         
987         int sel_start;
988         int sel_end;
989 } SpaceConsole;
990
991
992 /* User Preferences ======================================= */
993
994 /* User Preferences View */
995 typedef struct SpaceUserPref {
996         SpaceLink *next, *prev;
997         ListBase regionbase;        /* storage of regions for inactive spaces */
998         int spacetype;
999         
1000         int pad;
1001         
1002         char filter[64];        /* search term for filtering in the UI */
1003 } SpaceUserPref;
1004
1005 /* Motion Tracking ======================================== */
1006
1007 /* Clip Editor */
1008 typedef struct SpaceClip {
1009         SpaceLink *next, *prev;
1010         ListBase regionbase;        /* storage of regions for inactive spaces */
1011         int spacetype;
1012
1013         float xof, yof;             /* user defined offset, image is centered */
1014         float xlockof, ylockof;     /* user defined offset from locked position */
1015         float zoom;                 /* user defined zoom level */
1016
1017         struct MovieClipUser user;      /* user of clip */
1018         struct MovieClip *clip;         /* clip data */
1019         struct MovieClipScopes scopes;  /* different scoped displayed in space panels */
1020
1021         int flag;                   /* flags */
1022         short mode;                 /* editor mode (editing context being displayed) */
1023         short view;                 /* type of the clip editor view */
1024
1025         int path_length;            /* length of displaying path, in frames */
1026
1027         /* current stabilization data */
1028         float loc[2], scale, angle; /* pre-composed stabilization data */
1029         int pad;
1030         float stabmat[4][4], unistabmat[4][4];  /* current stabilization matrix and the same matrix in unified space,
1031                                                  * defined when drawing and used for mouse position calculation */
1032
1033         /* movie postprocessing */
1034         int postproc_flag;
1035
1036         /* grease pencil */
1037         short gpencil_src, pad2;
1038
1039         void *draw_context;
1040
1041         int around, pad4;             /* pivot point for transforms */
1042
1043         MaskSpaceInfo mask_info;
1044
1045         /* **** color management **** */
1046         ColorManagedViewSettings view_settings;
1047 } SpaceClip;
1048
1049 /* SpaceClip->flag */
1050 typedef enum eSpaceClip_Flag {
1051         SC_SHOW_MARKER_PATTERN = (1 << 0),
1052         SC_SHOW_MARKER_SEARCH  = (1 << 1),
1053         SC_LOCK_SELECTION      = (1 << 2),
1054         SC_SHOW_TINY_MARKER    = (1 << 3),
1055         SC_SHOW_TRACK_PATH     = (1 << 4),
1056         SC_SHOW_BUNDLES        = (1 << 5),
1057         SC_MUTE_FOOTAGE        = (1 << 6),
1058         SC_HIDE_DISABLED       = (1 << 7),
1059         SC_SHOW_NAMES          = (1 << 8),
1060         SC_SHOW_GRID           = (1 << 9),
1061         SC_SHOW_STABLE         = (1 << 10),
1062         SC_MANUAL_CALIBRATION  = (1 << 11),
1063 /*      SC_SHOW_GPENCIL        = (1 << 12),*/   /* UNUSED */
1064         SC_SHOW_FILTERS        = (1 << 13),
1065         SC_SHOW_GRAPH_FRAMES   = (1 << 14),
1066         SC_SHOW_GRAPH_TRACKS   = (1 << 15),
1067 /*      SC_SHOW_PYRAMID_LEVELS = (1 << 16), */  /* UNUSED */
1068         SC_LOCK_TIMECURSOR     = (1 << 17),
1069         SC_SHOW_SECONDS        = (1 << 18),
1070         SC_SHOW_GRAPH_SEL_ONLY = (1 << 19),
1071         SC_SHOW_GRAPH_HIDDEN   = (1 << 20),
1072 } eSpaceClip_Flag;
1073
1074 /* SpaceClip->mode */
1075 typedef enum eSpaceClip_Mode {
1076         SC_MODE_TRACKING = 0,
1077         SC_MODE_RECONSTRUCTION = 1,
1078         SC_MODE_DISTORTION = 2,
1079         SC_MODE_MASKEDIT = 3,
1080 } eSpaceClip_Mode;
1081
1082 /* SpaceClip->view */
1083 typedef enum eSpaceClip_View {
1084         SC_VIEW_CLIP = 0,
1085         SC_VIEW_GRAPH = 1,
1086         SC_VIEW_DOPESHEET = 2,
1087 } eSpaceClip_View;
1088
1089 /* SpaceClip->gpencil_src */
1090 typedef enum eSpaceClip_GPencil_Source {
1091         SC_GPENCIL_SRC_CLIP = 0,
1092         SC_GPENCIL_SRC_TRACK = 1,
1093 } eSpaceClip_GPencil_Source;
1094
1095 /* **************** SPACE DEFINES ********************* */
1096
1097 /* headerbuttons: 450-499 */
1098 #define B_IMASELHOME        451
1099 #define B_IMASELREMOVEBIP   452
1100
1101
1102 /* space types, moved from DNA_screen_types.h */
1103 /* Do NOT change order, append on end. types are hardcoded needed */
1104 typedef enum eSpace_Type {
1105         SPACE_EMPTY    = 0,
1106         SPACE_VIEW3D   = 1,
1107         SPACE_IPO      = 2,
1108         SPACE_OUTLINER = 3,
1109         SPACE_BUTS     = 4,
1110         SPACE_FILE     = 5,
1111         SPACE_IMAGE    = 6,
1112         SPACE_INFO     = 7,
1113         SPACE_SEQ      = 8,
1114         SPACE_TEXT     = 9,
1115         SPACE_IMASEL   = 10, /* deprecated */
1116         SPACE_SOUND    = 11, /* Deprecated */
1117         SPACE_ACTION   = 12,
1118         SPACE_NLA      = 13,
1119         SPACE_SCRIPT   = 14, /* Deprecated */
1120         SPACE_TIME     = 15,
1121         SPACE_NODE     = 16,
1122         SPACE_LOGIC    = 17,
1123         SPACE_CONSOLE  = 18,
1124         SPACE_USERPREF = 19,
1125         SPACE_CLIP     = 20,
1126         
1127         SPACEICONMAX = SPACE_CLIP
1128 } eSpace_Type;
1129
1130 #define IMG_SIZE_FALLBACK 256
1131
1132 #endif