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