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