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