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