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