Point Cache Refactoring
[blender-staging.git] / source / blender / makesdna / DNA_space_types.h
index a3b2e85741744289b07e740c593bf52c988f4808..9e49b3a5e0c1d443b4533bbdfc87d16e7997df62 100644 (file)
 
 #include "DNA_listBase.h"
 #include "DNA_vec_types.h"
+#include "DNA_oops_types.h"            /* for TreeStoreElem */
+#include "DNA_image_types.h"   /* ImageUser */
 /* Hum ... Not really nice... but needed for spacebuts. */
 #include "DNA_view2d_types.h"
 
 struct Ipo;
 struct ID;
 struct Text;
+struct Script;
 struct ImBuf;
 struct Image;
 struct SpaceIpo;
 struct BlendHandle;
+struct RenderInfo;
+struct bNodeTree;
+struct uiBlock;
+struct FileList;
 
        /**
         * The base structure all the other spaces
@@ -55,45 +62,60 @@ struct BlendHandle;
 typedef struct SpaceLink SpaceLink;
 struct SpaceLink {
        SpaceLink *next, *prev;
-       int spacetype, pad;
+       int spacetype;
+       float blockscale;
        struct ScrArea *area;
+       short blockhandler[8];
 };
 
 typedef struct SpaceInfo {
        SpaceLink *next, *prev;
-       int spacetype, pad1;
+       int spacetype;
+       float blockscale;
        struct ScrArea *area;
+
+       short blockhandler[8];
 } SpaceInfo;
 
 typedef struct SpaceIpo {
        SpaceLink *next, *prev;
-       int spacetype, pad1;
+       int spacetype;
+       float blockscale;
        struct ScrArea *area;
 
+       short blockhandler[8];
+       
        unsigned int rowbut, pad2; 
        View2D v2d;
        
        void *editipo;
        ListBase ipokey;
+       
+       /* the ipo context we need to store */
        struct Ipo *ipo;
        struct ID *from;
+       char actname[32], constname[32], bonename[32];
 
        short totipo, pin;
        short butofs, channel;
        short showkey, blocktype;
        short menunr, lock;
        int flag;
-       int     reserved1;
+       float median[3];
        rctf tot;
 } SpaceIpo;
 
 typedef struct SpaceButs {
        SpaceLink *next, *prev;
-       int spacetype, pad1;
+       int spacetype;
+       float blockscale;
        struct ScrArea *area;
+       struct RenderInfo *ri;
+
+       short blockhandler[8];
 
        short cursens, curact;
-       int pad2;
+       short align, tabo;              /* align for panels, tab is old tab */
        View2D v2d;
        
        short mainb, menunr;    /* texnr and menunr have to remain shorts */
@@ -102,112 +124,153 @@ typedef struct SpaceButs {
        
        short texnr;
        char texfrom, showgroup;
-
-       short rectx, recty;             /* preview render */
-       unsigned int *rect;
-       short cury, modeltype;
-
+       
+       short modeltype;
        short scriptblock;
        short scaflag;
+       short re_align;
        
-       char texact, pad3[7];
+       short oldkeypress;              /* for keeping track of the sub tab key cycling */
+       char pad, flag;
        
-               /* a hackish link the anim buts keep
-                * to a SpaceIpo.
-                */
-       struct SpaceIpo *anim_linked_sipo;
+       char texact, tab[7];    /* storing tabs for each context */
+               
 } SpaceButs;
 
 typedef struct SpaceSeq {
        SpaceLink *next, *prev;
-       int spacetype, pad;
+       int spacetype;
+       float blockscale;
        struct ScrArea *area;
 
+       short blockhandler[8];
+
        View2D v2d;
        
-       short mainb, zoom;
-       int pad2;
-       
+       float xof, yof; /* offset for drawing the image preview */
+       short mainb, pad;
+       short chanshown;
+       short zebra;
+       int flag;
+       float zoom;
 } SpaceSeq;
 
 typedef struct SpaceFile {
        SpaceLink *next, *prev;
-       int spacetype, pad;
+       int spacetype;
+       float blockscale;
        struct ScrArea *area;
        
+       short blockhandler[8];
+
        struct direntry *filelist;
        int totfile;
+       
        char title[24];
-       char dir[160];
+       char dir[240];
        char file[80];
-       short type, ofs, flag, sort;
-       short maxnamelen, collums;
        
+       short type, ofs, flag, sort;
+       short maxnamelen, collums, f_fp, pad1;
+       int pad2;
+       char fp_str[8];
+
        struct BlendHandle *libfiledata;
        
-       short retval, ipotype;
-       short menu, act;
-
-       /* changed type for compiling */
-       /* void (*returnfunc)(short); ? used with char* ....*/
-       /**
-        * @attention Called in filesel.c: 
-        * @attention returnfunc(this->retval) : short
-        * @attention returnfunc(name)         : char*
-        * @attention Other uses are limited to testing against
-        * @attention the value. How do we resolve this? Two args?
-        * @attention For now, keep the char*, as it seems stable.
-        * @attention Be warned that strange behaviour _has_ been spotted!
-        */
-       void (*returnfunc)(char*);
-               
-       short *menup;
+       unsigned short retval;          /* event */
+       short menu, act, ipotype;
+       
+       /* one day we'll add unions to dna */
+       void (*returnfunc)(char *);
+       void (*returnfunc_event)(unsigned short);
+       void (*returnfunc_args)(char *, void *, void *);
+       
+       void *arg1, *arg2;
+       short *menup;   /* pointer to menu result or ID browsing */
+       char *pupmenu;  /* optional menu in header */
 } SpaceFile;
 
 typedef struct SpaceOops {
        SpaceLink *next, *prev;
-       int spacetype, pad;
+       int spacetype;
+       float blockscale;
        struct ScrArea *area;
 
+       short blockhandler[8];
+
        View2D v2d;
        
        ListBase oops;
        short pin, visiflag, flag, rt;
        void *lockpoin;
        
+       ListBase tree;
+       struct TreeStore *treestore;
+       
+       /* search stuff */
+       char search_string[32];
+       struct TreeStoreElem search_tse;
+       int search_flags, do_;
+       
+       short type, outlinevis, storeflag;
+       short deps_flags;
+       
 } SpaceOops;
 
 typedef struct SpaceImage {
        SpaceLink *next, *prev;
-       int spacetype, pad;
+       int spacetype;
+       float blockscale;
        struct ScrArea *area;
 
+       short blockhandler[8];
+
        View2D v2d;
        
        struct Image *image;
+       struct ImageUser iuser;
+       
+       struct CurveMapping *cumap;
+       short mode, menunr;
+       short imanr;
+       short curtile; /* the currently active tile of the image when tile is enabled, is kept in sync with the active faces tile */
+       int flag;
+       short imtypenr, lock;
+       short pin, pad2;
        float zoom;
-       float pad2; /* padding is with 8 bytes aligned  */
-       short mode, pin;
-       short imanr, curtile;
-       short xof, yof;
-       short flag, lock;
+       char dt_uv; /* UV draw type */
+       char sticky; /* sticky selection type */
+       char dt_uvstretch;
+       char pad[5];
+       
+       float xof, yof;                                 /* user defined offset, image is centered */
+       float centx, centy;                             /* storage for offset while render drawing */
        
 } SpaceImage;
 
-typedef struct SpaceNla{
+typedef struct SpaceNla {
        struct SpaceLink *next, *prev;
        int spacetype;
-       short menunr, lock;
+       float blockscale;
        struct ScrArea *area;
 
+       short blockhandler[8];
+
+       short menunr, lock;
+       short autosnap;                 /* this uses the same settings as autosnap for Action Editor */
+       short flag;
+       
        View2D v2d;     
 } SpaceNla;
 
 typedef struct SpaceText {
        SpaceLink *next, *prev;
-       int spacetype, pad;
+       int spacetype;
+       float blockscale;
        struct ScrArea *area;
 
+       short blockhandler[8];
+
        struct Text *text;      
 
        int top, viewlines;
@@ -218,169 +281,180 @@ typedef struct SpaceText {
        int left;
        int showlinenrs;
        
+       int tabnumber;
+       int currtab_set; 
+       int showsyntax;
+       int unused_padd;
+       
        float pix_per_line;
 
        struct rcti txtscroll, txtbar;
-       
+
+} SpaceText;
+
+typedef struct Script {
+       ID id;
+
        void *py_draw;
        void *py_event;
        void *py_button;
+       void *py_browsercallback;
        void *py_globaldict;
-} SpaceText;
 
-#
-#
-typedef struct OneSelectableIma {
-       int   header;                                           
-       int   ibuf_type;
-       struct ImBuf *pict;                                     
-       struct OneSelectableIma *next;          
-       struct OneSelectableIma *prev;          
-       
-       short  cmap, image, draw_me, rt;
-       short  sx, sy, ex, ey, dw, dh;                          
-       short  selectable, selected;            
-       int   mtime, disksize;                          
-       char   file_name[64];
-       
-       short  orgx, orgy, orgd, anim;          /* same as ibuf->x...*/
-       char   dummy[4];                                        /* 128 */
-
-       char   pict_rect[3968];                         /* 4096   (RECT = 64 * 62) */
-       
-} OneSelectableIma;
-
-#
-#
-typedef struct ImaDir {
-       struct ImaDir *next, *prev;
-       int  selected, hilite; 
-       int  type,  size;
-       int mtime;
-       char name[100];
-} ImaDir;
+       int flags, lastspace;
+       char scriptname[256]; /* store the script file here so we can re-run it on loading blender, if "Enable Scripts" is on */
+       char scriptarg[256];
+} Script;
+#define SCRIPT_SET_NULL(_script) _script->py_draw = _script->py_event = _script->py_button = _script->py_browsercallback = _script->py_globaldict = NULL; _script->flags = 0;
+#define SCRIPT_RUNNING 0x01
+#define SCRIPT_GUI             0x02
+#define SCRIPT_FILESEL 0x04
+
+typedef struct SpaceScript {
+       SpaceLink *next, *prev;
+       int spacetype;
+       float blockscale;
+       struct ScrArea *area;
+       struct Script *script;
+
+       short flags, menunr;
+       int pad1;
+       
+       void *but_refs;
+} SpaceScript;
+
+typedef struct SpaceTime {
+       SpaceLink *next, *prev;
+       int spacetype;
+       float blockscale;
+       struct ScrArea *area;
+       
+       View2D v2d;
+       
+       int flag, redraws;
+       
+} SpaceTime;
+
+typedef struct SpaceNode {
+       SpaceLink *next, *prev;
+       int spacetype;
+       float blockscale;
+       struct ScrArea *area;
+       
+       View2D v2d;
+       
+       struct ID *id, *from;           /* context, no need to save in file? well... pinning... */
+       short flag, menunr;                     /* menunr: browse id block in header */
+       float aspect;
+       void *curfont;
+       
+       float xof, yof; /* offset for drawing the backdrop */
+       
+       struct bNodeTree *nodetree, *edittree;
+       int treetype, pad;                      /* treetype: as same nodetree->type */
+       
+} SpaceNode;
+
+/* snode->flag */
+#define SNODE_DO_PREVIEW       1
+#define SNODE_BACKDRAW         2
 
 typedef struct SpaceImaSel {
        SpaceLink *next, *prev;
-       int spacetype, pad1;
+       int spacetype;
+       float blockscale;
        struct ScrArea *area;
        
-       char   title[28];
-       
-       int   fase; 
-       short  mode, subfase;
-       short  mouse_move_redraw, imafase;
-       short  mx, my;
-       
-       short  dirsli, dirsli_lines;
-       short  dirsli_sx, dirsli_ey , dirsli_ex, dirsli_h;
-       short  imasli, fileselmenuitem;
-       short  imasli_sx, imasli_ey , imasli_ex, imasli_h;
-       
-       short  dssx, dssy, dsex, dsey; 
-       short  desx, desy, deex, deey; 
-       short  fssx, fssy, fsex, fsey; 
-       short  dsdh, fsdh; 
-       short  fesx, fesy, feex, feey; 
-       short  infsx, infsy, infex, infey; 
-       short  dnsx, dnsy, dnw, dnh;
-       short  fnsx, fnsy, fnw, fnh;
-
-       
-       char   fole[128], dor[128];
-       char   file[128], dir[128];
-       ImaDir *firstdir, *firstfile;
-       int    topdir,  totaldirs,  hilite; 
-       int    topfile, totalfiles;
-       
-       float  image_slider;
-       float  slider_height;
-       float  slider_space;
-       short  topima,  totalima;
-       short  curimax, curimay;
-       OneSelectableIma *first_sel_ima;
-       OneSelectableIma *hilite_ima;
-       short  total_selected, ima_redraw;
-       int pad2;
+       short blockhandler[8];
+
+       View2D v2d;
+
+       struct FileList *files;
+
+       /* specific stuff for drawing */
+       char title[24];
+       char dir[240];
+       char file[80];
+
+       short type, menu, flag, sort;
+
+       void *curfont;
+       int     active_file;
+
+       int numtilesx;
+       int numtilesy;
+
+       int selstate;
+
+       struct rcti viewrect;
+       struct rcti bookmarkrect;
+
+       float scrollpos; /* current position of scrollhandle */
+       float scrollheight; /* height of the scrollhandle */
+       float scrollarea; /* scroll region, scrollpos is from 0 to scrollarea */
+
+       float aspect;
+       unsigned short retval;          /* event */
+
+       short ipotype;
        
-       struct ImBuf  *cmap;
+       short filter;
+       short active_bookmark;
+       short pad, pad1;
+
+       /* view settings */
+       short prv_w;
+       short prv_h;
+
+       /* one day we'll add unions to dna */
+       void (*returnfunc)(char *);
+       void (*returnfunc_event)(unsigned short);
+       void (*returnfunc_args)(char *, void *, void *);
+       
+       void *arg1, *arg2;
+       short *menup;   /* pointer to menu result or ID browsing */
+       char *pupmenu;  /* optional menu in header */
 
-       /* Also fucked. Needs to change so things compile, but breaks sdna
-       * ... */        
-/*     void (*returnfunc)(void); */
-       void (*returnfunc)(char*);
-       void *arg1;
+       struct ImBuf *img;
 } SpaceImaSel;
 
 
 /* **************** SPACE ********************* */
 
 
-/* view3d->flag */ /* Now in DNA_view3d_types.h */
-/*
-#define V3D_DISPIMAGE          1
-#define V3D_DISPBGPIC          2
-#define V3D_SETUPBUTS          4
-#define V3D_NEEDBACKBUFDRAW    8
-#define V3D_MODE                       (16+32+64+128)
-#define V3D_EDITMODE           16
-#define V3D_VERTEXPAINT                32
-#define V3D_FACESELECT         64
-#define V3D_POSEMODE           128
-*/
-
-/* view3d->around */ /* Now in DNA_view3d_types.h */
-/*
-#define V3D_CENTRE             0
-#define V3D_CENTROID   3
-#define V3D_CURSOR             1
-#define V3D_LOCAL              2
-*/
-
-/* buts->mainb */
-#define BUTS_VIEW                      0
-#define BUTS_LAMP                      1
-#define BUTS_MAT                       2
-#define BUTS_TEX                       3
-#define BUTS_ANIM                      4
-#define BUTS_WORLD                     5
-#define BUTS_RENDER                    6
-#define BUTS_EDIT                      7
-#define BUTS_GAME                      8
-#define BUTS_FPAINT                    9
-#define BUTS_RADIO                     10
-#define BUTS_SCRIPT                    11
-#define BUTS_SOUND                     12
-#define BUTS_CONSTRAINT                13
-
-/* buts->scaflag */            
-#define BUTS_SENS_SEL          1
-#define BUTS_SENS_ACT          2
-#define BUTS_SENS_LINK         4
-#define BUTS_CONT_SEL          8
-#define BUTS_CONT_ACT          16
-#define BUTS_CONT_LINK         32
-#define BUTS_ACT_SEL           64
-#define BUTS_ACT_ACT           128
-#define BUTS_ACT_LINK          256
-
-/* these values need to be hardcoded in blender.h SpaceFile: struct dna does not recognize defines */
+/* view3d  Now in DNA_view3d_types.h */
+
+/* button defines in BIF_butspace.h */
+
+/* sbuts->flag */
+#define SB_PRV_OSA                     1
+
+/* these values need to be hardcoded in structs, dna does not recognize defines */
+/* also defined in BKE */
 #define FILE_MAXDIR                    160
 #define FILE_MAXFILE           80
+#define FILE_MAX                       240
 
 /* filesel types */
 #define FILE_UNIX                      8
-#define FILE_BLENDER           8
+#define FILE_BLENDER           8 /* dont display relative paths */
 #define FILE_SPECIAL           9
 
 #define FILE_LOADLIB           1
 #define FILE_MAIN                      2
+#define FILE_LOADFONT          3
 
-/* sfile->flag */
+/* sfile->flag and simasel->flag */
 #define FILE_SHOWSHORT         1
 #define FILE_STRINGCODE                2
 #define FILE_LINK                      4
 #define FILE_HIDE_DOT          8
+#define FILE_AUTOSELECT                16
+#define FILE_ACTIVELAY         32
+#define FILE_ATCURSOR          64
+#define FILE_SYNCPOSE          128
+#define FILE_FILTER                    256
+#define FILE_BOOKMARKS         512
 
 /* sfile->sort */
 #define FILE_SORTALPHA         0
@@ -397,6 +471,9 @@ typedef struct SpaceImaSel {
 #define PYSCRIPTFILE           64
 #define FTFONTFILE                     128
 #define SOUNDFILE                      256
+#define TEXTFILE                       512
+#define MOVIEFILE_ICON         1024 /* movie file that preview can't load */
+#define FOLDERFILE                     2048 /* represents folders for filtering */
 
 #define SCROLLH        16                      /* height scrollbar */
 #define SCROLLB        16                      /* width scrollbar */
@@ -405,11 +482,49 @@ typedef struct SpaceImaSel {
 #define SI_TEXTURE             0
 #define SI_SHOW                        1
 
+/* SpaceImage->dt_uv */
+#define SI_UVDT_DASH   0
+#define SI_UVDT_BLACK  1
+#define SI_UVDT_WHITE  2
+#define SI_UVDT_OUTLINE        3
+
+/* SpaceImage->dt_uvstretch */
+#define SI_UVDT_STRETCH_ANGLE  0
+#define SI_UVDT_STRETCH_AREA   1
+
+/* SpaceImage->sticky
+ * Note DISABLE should be 0, however would also need to re-arrange icon order,
+ * also, sticky loc is the default mode so this means we dont need to 'do_versons' */
+#define SI_STICKY_LOC          0
+#define SI_STICKY_DISABLE      1
+#define SI_STICKY_VERTEX       2
+
 /* SpaceImage->flag */
-#define SI_BE_SQUARE   1
-#define SI_EDITTILE            2
-#define SI_CLIP_UV             4
-#define SI_DRAWTOOL            8
+#define SI_BE_SQUARE   1<<0
+#define SI_EDITTILE            1<<1
+#define SI_CLIP_UV             1<<2
+#define SI_DRAWTOOL            1<<3
+#define SI_DEPRECATED1  1<<4   /* stick UVs to others in the same location */
+#define SI_DRAWSHADOW   1<<5
+#define SI_SELACTFACE   1<<6
+#define SI_DEPRECATED2 1<<7
+#define SI_DEPRECATED3  1<<8   /* stick UV selection to mesh vertex (UVs wont always be touching) */
+#define SI_COORDFLOATS  1<<9
+#define SI_PIXELSNAP   1<<10
+#define SI_LIVE_UNWRAP 1<<11
+#define SI_USE_ALPHA   1<<12
+#define SI_SHOW_ALPHA  1<<13
+#define SI_SHOW_ZBUF   1<<14
+               /* next two for render window dislay */
+#define SI_PREVSPACE   1<<15
+#define SI_FULLWINDOW  1<<16
+#define SI_SYNC_UVSEL  1<<17
+#define SI_LOCAL_UV            1<<18
+               /* this means that the image is drawn until it reaches the view edge,
+                * in the image view, its unrelated to the 'tile' mode for texface */
+#define SI_DRAW_TILE   1<<19 
+#define SI_SMOOTH_UV   1<<20
+#define SI_DRAW_STRETCH        1<<21
 
 /* SpaceText flags (moved from DNA_text_types.h) */
 
@@ -417,9 +532,15 @@ typedef struct SpaceImaSel {
 #define ST_CLEAR_NAMESPACE      0x0010 // clear namespace after script
                                        // execution (see BPY_main.c)
 
+/* SpaceOops->type */
+#define SO_OOPS                        0
+#define SO_OUTLINER            1
+#define SO_DEPSGRAPH    2
+
 /* SpaceOops->flag */
 #define SO_TESTBLOCKS  1
 #define SO_NEWSELECTED 2
+#define SO_HIDE_RESTRICTCOLS           4
 
 /* SpaceOops->visiflag */
 #define OOPS_SCE       1
@@ -435,6 +556,25 @@ typedef struct SpaceImaSel {
 #define OOPS_LAY       1024
 #define OOPS_LI                2048
 #define OOPS_IM                4096
+#define OOPS_AR                8192
+#define OOPS_GR                16384
+
+/* SpaceOops->outlinevis */
+#define SO_ALL_SCENES  0
+#define SO_CUR_SCENE   1
+#define SO_VISIBLE             2
+#define SO_SELECTED            3
+#define SO_ACTIVE              4
+#define SO_SAME_TYPE   5
+#define SO_GROUPS              6
+#define SO_LIBRARIES   7
+#define SO_VERSE_SESSION       8
+#define SO_VERSE_MS            9
+
+/* SpaceOops->storeflag */
+#define SO_TREESTORE_CLEANUP   1
+               /* if set, it allows redraws. gets set for some allqueue events */
+#define SO_TREESTORE_REDRAW            2
 
 /* headerbuttons: 450-499 */
 
@@ -472,5 +612,63 @@ typedef struct SpaceImaSel {
 #define IMS_INFILE                     3
 #define IMS_INFILESLI          4
 
-#endif
+/* nla->flag */
+#define SNLA_ALLKEYED          1
+#define SNLA_ACTIVELAYERS      2
+#define SNLA_DRAWTIME          4
+
+/* time->flag */
+       /* show timing in frames instead of in seconds */
+#define TIME_DRAWFRAMES                1
+       /* temporary flag set when scrubbing time */
+#define TIME_CFRA_NUM          2
+       /* only keyframes from active/selected channels get shown */
+#define TIME_ONLYACTSEL                4
+
+/* time->redraws */
+#define TIME_LEFTMOST_3D_WIN   1
+#define TIME_ALL_3D_WIN                        2
+#define TIME_ALL_ANIM_WIN              4
+#define TIME_ALL_BUTS_WIN              8
+#define TIME_WITH_SEQ_AUDIO            16
+#define TIME_SEQ                               32
+#define TIME_ALL_IMAGE_WIN             64
+#define TIME_CONTINUE_PHYSICS  128
+
+/* sseq->mainb */
+#define SEQ_DRAW_SEQUENCE         0
+#define SEQ_DRAW_IMG_IMBUF        1
+#define SEQ_DRAW_IMG_WAVEFORM     2
+#define SEQ_DRAW_IMG_VECTORSCOPE  3
+#define SEQ_DRAW_IMG_HISTOGRAM    4
+
+/* sseq->flag */
+#define SEQ_DRAWFRAMES   1
+#define SEQ_MARKER_TRANS 2
+#define SEQ_DRAW_COLOR_SEPERATED     4
+#define SEQ_DRAW_SAFE_MARGINS        8
+
+/* space types, moved from DNA_screen_types.h */
+enum {
+       SPACE_EMPTY,
+       SPACE_VIEW3D,
+       SPACE_IPO,
+       SPACE_OOPS,
+       SPACE_BUTS,
+       SPACE_FILE,
+       SPACE_IMAGE,            
+       SPACE_INFO,
+       SPACE_SEQ,
+       SPACE_TEXT,
+       SPACE_IMASEL,
+       SPACE_SOUND,
+       SPACE_ACTION,
+       SPACE_NLA,
+       SPACE_SCRIPT,
+       SPACE_TIME,
+       SPACE_NODE,
+       SPACEICONMAX = SPACE_NODE
+/*     SPACE_LOGIC     */
+};
 
+#endif