2 * blenlib/DNA_space_types.h (mar-2001 nzc)
6 * ***** BEGIN GPL LICENSE BLOCK *****
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License
10 * as published by the Free Software Foundation; either version 2
11 * of the License, or (at your option) any later version.
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software Foundation,
20 * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
22 * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
23 * All rights reserved.
25 * The Original Code is: all of this file.
27 * Contributor(s): none yet.
29 * ***** END GPL LICENSE BLOCK *****
31 #ifndef DNA_SPACE_TYPES_H
32 #define DNA_SPACE_TYPES_H
34 #include "DNA_listBase.h"
35 #include "DNA_vec_types.h"
36 #include "DNA_outliner_types.h" /* for TreeStoreElem */
37 #include "DNA_image_types.h" /* ImageUser */
38 /* Hum ... Not really nice... but needed for spacebuts. */
39 #include "DNA_view2d_types.h"
54 struct FileSelectParams;
62 * The base structure all the other spaces
63 * are derived (implicitly) from. Would be
64 * good to make this explicit.
67 typedef struct SpaceLink {
68 struct SpaceLink *next, *prev;
69 ListBase regionbase; /* storage of regions for inactive spaces */
71 float blockscale; /* XXX depricate this */
72 short blockhandler[8]; /* XXX depricate this */
75 typedef struct SpaceInfo {
76 SpaceLink *next, *prev;
77 ListBase regionbase; /* storage of regions for inactive spaces */
81 short blockhandler[8]; /* XXX depricate this */
83 struct bScreen *screen; /* browse screen */
84 struct Scene *scene; /* browse scene */
88 /* 'Graph' Editor (formerly known as the IPO Editor) */
89 /* XXX for now, we keep all old data... */
90 typedef struct SpaceIpo {
91 SpaceLink *next, *prev;
92 ListBase regionbase; /* storage of regions for inactive spaces */
96 short blockhandler[8];
97 View2D v2d; /* deprecated, copied to region */
99 struct bDopeSheet *ads; /* settings for filtering animation data (NOTE: we use a pointer due to code-linking issues) */
101 ListBase ghostCurves; /* sampled snapshots of F-Curves used as in-session guides */
103 short mode; /* mode for the Graph editor (eGraphEdit_Mode) */
104 short flag; /* settings for Graph editor */
105 short autosnap; /* time-transform autosnapping settings for Graph editor (eAnimEdit_AutoSnap in DNA_action_types.h) */
106 char pin, lock; // XXX old, unused vars that are probably going to be depreceated soon...
109 typedef struct SpaceButs {
110 SpaceLink *next, *prev;
111 ListBase regionbase; /* storage of regions for inactive spaces */
115 short blockhandler[8];
117 struct RenderInfo *ri;
119 View2D v2d; /* deprecated, copied to region */
121 short mainb, mainbo, mainbuser; /* context tabs */
122 short re_align, align; /* align for panels */
123 short preview; /* preview is signal to refresh */
126 void *path; /* runtime */
127 int pathflag, dataicon; /* runtime */
131 typedef struct SpaceSeq {
132 SpaceLink *next, *prev;
133 ListBase regionbase; /* storage of regions for inactive spaces */
137 short blockhandler[8];
139 View2D v2d; /* deprecated, copied to region */
141 float xof, yof; /* offset for drawing the image preview */
149 struct bGPdata *gpd; /* grease-pencil data */
152 typedef struct FileSelectParams {
153 char title[24]; /* title, also used for the text of the execute button */
154 char dir[240]; /* directory */
155 char file[80]; /* file */
157 short flag; /* settings for filter, hiding files and display mode */
158 short sort; /* sort order */
159 short display; /* display mode flag */
160 short filter; /* filter when (flags & FILE_FILTER) is true */
162 /* XXX - temporary, better move to filelist */
163 short active_bookmark;
168 /* XXX --- still unused -- */
169 short f_fp; /* show font preview */
170 short menu; /* currently selected option in pupmenu */
171 char fp_str[8]; /* string to use for font preview */
173 char *pupmenu; /* allows menu for save options - result stored in menup */
175 /* XXX --- end unused -- */
179 typedef struct SpaceFile {
180 SpaceLink *next, *prev;
181 ListBase regionbase; /* storage of regions for inactive spaces */
185 struct FileSelectParams *params; /* config and input for file select */
187 struct FileList *files; /* holds the list of files to show */
189 ListBase *folders_prev; /* holds the list of previous directories to show */
190 ListBase *folders_next; /* holds the list of next directories (pushed from previous) to show */
192 /* operator that is invoking fileselect
193 op->exec() will be called on the 'Load' button.
194 if operator provides op->cancel(), then this will be invoked
195 on the cancel button.
197 struct wmOperator *op;
199 struct wmTimer *loadimage_timer;
201 struct FileLayout *layout;
205 typedef struct SpaceOops {
206 SpaceLink *next, *prev;
207 ListBase regionbase; /* storage of regions for inactive spaces */
211 short blockhandler[8];
213 View2D v2d; /* deprecated, copied to region */
216 struct TreeStore *treestore;
219 char search_string[32];
220 struct TreeStoreElem search_tse;
221 int search_flags, do_;
223 short flag, outlinevis, storeflag, pad;
226 typedef struct SpaceImage {
227 SpaceLink *next, *prev;
228 ListBase regionbase; /* storage of regions for inactive spaces */
232 short blockhandler[8];
235 struct ImageUser iuser;
237 struct CurveMapping *cumap;
238 short menunr, imanr, pad2;
239 short curtile; /* the currently active tile of the image when tile is enabled, is kept in sync with the active faces tile */
241 short imtypenr, lock;
243 char dt_uv; /* UV draw type */
244 char sticky; /* sticky selection type */
248 float xof, yof; /* user defined offset, image is centered */
249 float zoom, pad4; /* user defined zoom level */
250 float centx, centy; /* storage for offset while render drawing */
252 struct bGPdata *gpd; /* grease pencil data */
255 typedef struct SpaceNla {
256 struct SpaceLink *next, *prev;
257 ListBase regionbase; /* storage of regions for inactive spaces */
261 short blockhandler[8];
263 short autosnap; /* this uses the same settings as autosnap for Action Editor */
267 struct bDopeSheet *ads;
268 View2D v2d; /* deprecated, copied to region */
271 typedef struct SpaceText {
272 SpaceLink *next, *prev;
273 ListBase regionbase; /* storage of regions for inactive spaces */
277 short blockhandler[8];
284 short lheight; /* user preference */
285 char cwidth, linenrs_tot; /* runtime computed, character width and the number of chars to use when showing line numbers */
292 short live_edit; /* run python while editing, evil */
295 struct rcti txtscroll, txtbar;
297 int wordwrap, doplugins;
299 char findstr[256]; /* ST_MAX_FIND_STR */
300 char replacestr[256]; /* ST_MAX_FIND_STR */
303 typedef struct Script {
309 void *py_browsercallback;
312 int flags, lastspace;
313 char scriptname[256]; /* store the script file here so we can re-run it on loading blender, if "Enable Scripts" is on */
316 #define SCRIPT_SET_NULL(_script) _script->py_draw = _script->py_event = _script->py_button = _script->py_browsercallback = _script->py_globaldict = NULL; _script->flags = 0;
317 #define SCRIPT_RUNNING 0x01
318 #define SCRIPT_GUI 0x02
319 #define SCRIPT_FILESEL 0x04
321 typedef struct SpaceScript {
322 SpaceLink *next, *prev;
323 ListBase regionbase; /* storage of regions for inactive spaces */
326 struct Script *script;
334 typedef struct SpaceTime {
335 SpaceLink *next, *prev;
336 ListBase regionbase; /* storage of regions for inactive spaces */
340 View2D v2d; /* deprecated, copied to region */
346 typedef struct SpaceNode {
347 SpaceLink *next, *prev;
348 ListBase regionbase; /* storage of regions for inactive spaces */
352 short blockhandler[8];
354 View2D v2d; /* deprecated, copied to region */
356 struct ID *id, *from; /* context, no need to save in file? well... pinning... */
357 short flag, menunr; /* menunr: browse id block in header */
361 float xof, yof; /* offset for drawing the backdrop */
362 float mx, my; /* mousepos for drawing socketless link */
364 struct bNodeTree *nodetree, *edittree;
365 int treetype; /* treetype: as same nodetree->type */
366 short texfrom, pad; /* texfrom object, world or brush */
368 struct bGPdata *gpd; /* grease-pencil data */
372 #define SNODE_BACKDRAW 2
373 #define SNODE_DISPGP 4
376 #define SNODE_TEX_OBJECT 0
377 #define SNODE_TEX_WORLD 1
378 #define SNODE_TEX_BRUSH 2
380 typedef struct SpaceLogic {
381 SpaceLink *next, *prev;
382 ListBase regionbase; /* storage of regions for inactive spaces */
386 short blockhandler[8];
391 struct bGPdata *gpd; /* grease-pencil data */
395 typedef struct SpaceImaSel {
396 SpaceLink *next, *prev;
397 ListBase regionbase; /* storage of regions for inactive spaces */
401 short blockhandler[8];
403 View2D v2d; /* deprecated, copied to region */
405 struct FileList *files;
407 /* specific stuff for drawing */
412 short type, menu, flag, sort;
422 struct rcti viewrect;
423 struct rcti bookmarkrect;
425 float scrollpos; /* current position of scrollhandle */
426 float scrollheight; /* height of the scrollhandle */
427 float scrollarea; /* scroll region, scrollpos is from 0 to scrollarea */
430 unsigned short retval; /* event */
435 short active_bookmark;
442 /* one day we'll add unions to dna */
443 void (*returnfunc)(char *);
444 void (*returnfunc_event)(unsigned short);
445 void (*returnfunc_args)(char *, void *, void *);
448 short *menup; /* pointer to menu result or ID browsing */
449 char *pupmenu; /* optional menu in header */
455 typedef struct ConsoleLine {
456 struct ConsoleLine *next, *prev;
458 /* keep these 3 vars so as to share free, realloc funcs */
459 int len_alloc; /* allocated length */
460 int len; /* real len - strlen() */
464 int type; /* only for use when in the 'scrollback' listbase */
467 /* ConsoleLine.type */
469 CONSOLE_LINE_OUTPUT=0,
471 CONSOLE_LINE_INFO, /* autocomp feedback */
475 /* SpaceConsole.rpt_mask */
477 CONSOLE_TYPE_PYTHON=0,
481 /* SpaceConsole.type see BKE_report.h */
483 CONSOLE_RPT_DEBUG = 1<<0,
484 CONSOLE_RPT_INFO = 1<<1,
485 CONSOLE_RPT_OP = 1<<2,
486 CONSOLE_RPT_WARN = 1<<3,
487 CONSOLE_RPT_ERR = 1<<4,
490 typedef struct SpaceConsole {
491 SpaceLink *next, *prev;
492 ListBase regionbase; /* storage of regions for inactive spaces */
494 float blockscale; // XXX are these needed?
496 short blockhandler[8]; // XXX are these needed?
499 int type; /* console/report/..? */
500 int rpt_mask; /* which reports to display */
503 ListBase scrollback; /* ConsoleLine; output */
504 ListBase history; /* ConsoleLine; command history, current edited line is the first */
510 /* view3d Now in DNA_view3d_types.h */
514 /* **************** SPACE DEFINES ********************* */
516 /* button defines (deprecated) */
517 /* warning: the values of these defines are used in sbuts->tabs[8] */
518 /* sbuts->mainb new */
519 #define CONTEXT_SCENE 0
520 #define CONTEXT_OBJECT 1
521 #define CONTEXT_TYPES 2
522 #define CONTEXT_SHADING 3
523 #define CONTEXT_EDITING 4
524 #define CONTEXT_SCRIPT 5
525 #define CONTEXT_LOGIC 6
527 /* sbuts->mainb old (deprecated) */
534 #define BUTS_RENDER 6
537 #define BUTS_FPAINT 9
538 #define BUTS_RADIO 10
539 #define BUTS_SCRIPT 11
540 #define BUTS_SOUND 12
541 #define BUTS_CONSTRAINT 13
542 #define BUTS_EFFECTS 14
544 /* sbuts->tab new (deprecated) */
545 #define TAB_SHADING_MAT 0
546 #define TAB_SHADING_TEX 1
547 #define TAB_SHADING_RAD 2
548 #define TAB_SHADING_WORLD 3
549 #define TAB_SHADING_LAMP 4
551 #define TAB_OBJECT_OBJECT 0
552 #define TAB_OBJECT_PHYSICS 1
553 #define TAB_OBJECT_PARTICLE 2
555 #define TAB_SCENE_RENDER 0
556 #define TAB_SCENE_WORLD 1
557 #define TAB_SCENE_ANIM 2
558 #define TAB_SCENE_SOUND 3
559 #define TAB_SCENE_SEQUENCER 4
562 /* buts->mainb new */
563 #define BCONTEXT_SCENE 0
564 #define BCONTEXT_WORLD 1
565 #define BCONTEXT_OBJECT 2
566 #define BCONTEXT_DATA 3
567 #define BCONTEXT_MATERIAL 4
568 #define BCONTEXT_TEXTURE 5
569 #define BCONTEXT_PARTICLE 6
570 #define BCONTEXT_PHYSICS 7
571 #define BCONTEXT_BONE 9
572 #define BCONTEXT_MODIFIER 10
573 #define BCONTEXT_CONSTRAINT 12
574 #define BCONTEXT_TOT 13
578 #define SB_PIN_CONTEXT 2
579 #define SB_WORLD_TEX 4
583 #define BUT_HORIZONTAL 1
584 #define BUT_VERTICAL 2
588 #define BUTS_SENS_SEL 1
589 #define BUTS_SENS_ACT 2
590 #define BUTS_SENS_LINK 4
591 #define BUTS_CONT_SEL 8
592 #define BUTS_CONT_ACT 16
593 #define BUTS_CONT_LINK 32
594 #define BUTS_ACT_SEL 64
595 #define BUTS_ACT_ACT 128
596 #define BUTS_ACT_LINK 256
597 #define BUTS_SENS_STATE 512
598 #define BUTS_ACT_STATE 1024
600 /* FileSelectParams.display */
601 enum FileDisplayTypeE {
602 FILE_SHORTDISPLAY = 1,
607 /* FileSelectParams.sort */
616 /* these values need to be hardcoded in structs, dna does not recognize defines */
617 /* also defined in BKE */
618 #define FILE_MAXDIR 160
619 #define FILE_MAXFILE 80
624 #define FILE_BLENDER 8 /* dont display relative paths */
625 #define FILE_SPECIAL 9
627 #define FILE_LOADLIB 1
629 #define FILE_LOADFONT 3
631 /* sfile->flag and simasel->flag */
632 #define FILE_SHOWSHORT 1
633 #define FILE_STRINGCODE 2
635 #define FILE_HIDE_DOT 8
636 #define FILE_AUTOSELECT 16
637 #define FILE_ACTIVELAY 32
638 #define FILE_ATCURSOR 64
639 #define FILE_SYNCPOSE 128
640 #define FILE_FILTER 256
641 #define FILE_BOOKMARKS 512
643 /* files in filesel list: 2=ACTIVE */
645 #define BLENDERFILE 4
649 #define PYSCRIPTFILE 64
650 #define FTFONTFILE 128
651 #define SOUNDFILE 256
653 #define MOVIEFILE_ICON 1024 /* movie file that preview can't load */
654 #define FOLDERFILE 2048 /* represents folders for filtering */
656 /* SpaceImage->dt_uv */
657 #define SI_UVDT_OUTLINE 0
658 #define SI_UVDT_DASH 1
659 #define SI_UVDT_BLACK 2
660 #define SI_UVDT_WHITE 3
662 /* SpaceImage->dt_uvstretch */
663 #define SI_UVDT_STRETCH_ANGLE 0
664 #define SI_UVDT_STRETCH_AREA 1
666 /* SpaceImage->sticky
667 * Note DISABLE should be 0, however would also need to re-arrange icon order,
668 * also, sticky loc is the default mode so this means we dont need to 'do_versons' */
669 #define SI_STICKY_LOC 0
670 #define SI_STICKY_DISABLE 1
671 #define SI_STICKY_VERTEX 2
673 /* SpaceImage->flag */
674 #define SI_BE_SQUARE 1<<0
675 #define SI_EDITTILE 1<<1
676 #define SI_CLIP_UV 1<<2
677 #define SI_DRAWTOOL 1<<3
678 #define SI_DEPRECATED1 1<<4 /* stick UVs to others in the same location */
679 #define SI_DRAWSHADOW 1<<5
680 #define SI_SELACTFACE 1<<6 /* deprecated */
681 #define SI_DEPRECATED2 1<<7
682 #define SI_DEPRECATED3 1<<8 /* stick UV selection to mesh vertex (UVs wont always be touching) */
683 #define SI_COORDFLOATS 1<<9
684 #define SI_PIXELSNAP 1<<10
685 #define SI_LIVE_UNWRAP 1<<11
686 #define SI_USE_ALPHA 1<<12
687 #define SI_SHOW_ALPHA 1<<13
688 #define SI_SHOW_ZBUF 1<<14
689 /* next two for render window dislay */
690 #define SI_PREVSPACE 1<<15
691 #define SI_FULLWINDOW 1<<16
692 #define SI_DEPRECATED4 1<<17
693 #define SI_DEPRECATED5 1<<18
694 /* this means that the image is drawn until it reaches the view edge,
695 * in the image view, its unrelated to the 'tile' mode for texface */
696 #define SI_DRAW_TILE 1<<19
697 #define SI_SMOOTH_UV 1<<20
698 #define SI_DRAW_STRETCH 1<<21
699 #define SI_DISPGP 1<<22
700 #define SI_DRAW_OTHER 1<<23
702 #define SI_COLOR_CORRECTION 1<<24
704 /* SpaceIpo->flag (Graph Editor Settings) */
705 #define SIPO_LOCK_VIEW (1<<0)
706 #define SIPO_NOTRANSKEYCULL (1<<1)
707 #define SIPO_NOHANDLES (1<<2)
708 #define SIPO_NODRAWCFRANUM (1<<3)
709 #define SIPO_DRAWTIME (1<<4)
711 /* SpaceIpo->mode (Graph Editor Mode) */
713 /* all animation curves (from all over Blender) */
714 SIPO_MODE_ANIMATION = 0,
719 /* SpaceText flags (moved from DNA_text_types.h) */
721 #define ST_SCROLL_SELECT 0x0001 // scrollable
722 #define ST_CLEAR_NAMESPACE 0x0010 // clear namespace after script
723 // execution (see BPY_main.c)
724 #define ST_FIND_WRAP 0x0020
725 #define ST_FIND_ALL 0x0040
728 /* stext->findstr/replacestr */
729 #define ST_MAX_FIND_STR 256
731 /* SpaceOops->flag */
732 #define SO_TESTBLOCKS 1
733 #define SO_NEWSELECTED 2
734 #define SO_HIDE_RESTRICTCOLS 4
735 #define SO_HIDE_KEYINGSETINFO 8
737 /* SpaceOops->outlinevis */
738 #define SO_ALL_SCENES 0
739 #define SO_CUR_SCENE 1
741 #define SO_SELECTED 3
743 #define SO_SAME_TYPE 5
745 #define SO_LIBRARIES 7
746 #define SO_VERSE_SESSION 8
747 #define SO_VERSE_MS 9
748 #define SO_SEQUENCE 10
749 #define SO_DATABLOCKS 11
750 #define SO_USERDEF 12
752 /* SpaceOops->storeflag */
753 #define SO_TREESTORE_CLEANUP 1
754 /* if set, it allows redraws. gets set for some allqueue events */
755 #define SO_TREESTORE_REDRAW 2
757 /* headerbuttons: 450-499 */
759 #define B_IMASELHOME 451
760 #define B_IMASELREMOVEBIP 452
762 #define C_BACK 0xBAAAAA
763 #define C_DARK 0x665656
764 #define C_DERK 0x766666
765 #define C_HI 0xCBBBBB
766 #define C_LO 0x544444
769 #define IMS_KNOW_WIN 1
770 #define IMS_KNOW_BIP 2
771 #define IMS_KNOW_DIR 4
772 #define IMS_DOTHE_INF 8
773 #define IMS_KNOW_INF 16
774 #define IMS_DOTHE_IMA 32
775 #define IMS_KNOW_IMA 64
776 #define IMS_FOUND_BIP 128
777 #define IMS_DOTHE_BIP 256
778 #define IMS_WRITE_NO_BIP 512
786 #define IMS_STRINGCODE 16
789 #define IMS_INDIRSLI 2
791 #define IMS_INFILESLI 4
795 #define SNLA_ALLKEYED (1<<0)
797 #define SNLA_ACTIVELAYERS (1<<1)
799 #define SNLA_DRAWTIME (1<<2)
800 #define SNLA_NOTRANSKEYCULL (1<<3)
801 #define SNLA_NODRAWCFRANUM (1<<4)
802 #define SNLA_NOSTRIPCURVES (1<<5)
805 /* show timing in frames instead of in seconds */
806 #define TIME_DRAWFRAMES 1
807 /* temporary flag set when scrubbing time */
808 #define TIME_CFRA_NUM 2
809 /* only keyframes from active/selected channels get shown */
810 #define TIME_ONLYACTSEL 4
813 #define TIME_REGION 1
814 #define TIME_ALL_3D_WIN 2
815 #define TIME_ALL_ANIM_WIN 4
816 #define TIME_ALL_BUTS_WIN 8
817 #define TIME_WITH_SEQ_AUDIO 16
819 #define TIME_ALL_IMAGE_WIN 64
820 #define TIME_CONTINUE_PHYSICS 128
823 #define SEQ_DRAW_SEQUENCE 0
824 #define SEQ_DRAW_IMG_IMBUF 1
825 #define SEQ_DRAW_IMG_WAVEFORM 2
826 #define SEQ_DRAW_IMG_VECTORSCOPE 3
827 #define SEQ_DRAW_IMG_HISTOGRAM 4
830 #define SEQ_DRAWFRAMES 1
831 #define SEQ_MARKER_TRANS 2
832 #define SEQ_DRAW_COLOR_SEPERATED 4
833 #define SEQ_DRAW_SAFE_MARGINS 8
834 #define SEQ_DRAW_GPENCIL 16
836 /* space types, moved from DNA_screen_types.h */
857 SPACEICONMAX = SPACE_CONSOLE