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