Point Cache Refactoring
[blender-staging.git] / source / blender / makesdna / DNA_space_types.h
index 7017a4155cb56cf20432062fe8f1af19e24d34ed..9e49b3a5e0c1d443b4533bbdfc87d16e7997df62 100644 (file)
@@ -36,6 +36,8 @@
 
 #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"
 
@@ -47,8 +49,10 @@ struct ImBuf;
 struct Image;
 struct SpaceIpo;
 struct BlendHandle;
-struct TreeStore;
-
+struct RenderInfo;
+struct bNodeTree;
+struct uiBlock;
+struct FileList;
 
        /**
         * The base structure all the other spaces
@@ -86,8 +90,11 @@ typedef struct SpaceIpo {
        
        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;
@@ -103,6 +110,7 @@ typedef struct SpaceButs {
        int spacetype;
        float blockscale;
        struct ScrArea *area;
+       struct RenderInfo *ri;
 
        short blockhandler[8];
 
@@ -116,15 +124,14 @@ 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, pad1;
-       int pad2;
+       short re_align;
+       
+       short oldkeypress;              /* for keeping track of the sub tab key cycling */
+       char pad, flag;
        
        char texact, tab[7];    /* storing tabs for each context */
                
@@ -140,9 +147,12 @@ typedef struct SpaceSeq {
 
        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 {
@@ -155,31 +165,29 @@ typedef struct SpaceFile {
 
        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 {
@@ -198,8 +206,14 @@ typedef struct SpaceOops {
        
        ListBase tree;
        struct TreeStore *treestore;
+       
+       /* search stuff */
+       char search_string[32];
+       struct TreeStoreElem search_tse;
+       int search_flags, do_;
+       
        short type, outlinevis, storeflag;
-       short pad1;
+       short deps_flags;
        
 } SpaceOops;
 
@@ -214,16 +228,27 @@ typedef struct SpaceImage {
        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;
        float blockscale;
@@ -232,7 +257,8 @@ typedef struct SpaceNla{
        short blockhandler[8];
 
        short menunr, lock;
-       int pad;
+       short autosnap;                 /* this uses the same settings as autosnap for Action Editor */
+       short flag;
        
        View2D v2d;     
 } SpaceNla;
@@ -255,12 +281,35 @@ 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;
+
+       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;
@@ -268,42 +317,47 @@ typedef struct SpaceScript {
        struct ScrArea *area;
        struct Script *script;
 
-       int pad2;
        short flags, menunr;
-
+       int pad1;
+       
+       void *but_refs;
 } SpaceScript;
 
-#
-#
-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;
+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;
@@ -311,93 +365,86 @@ typedef struct SpaceImaSel {
        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;
+       
+       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 *);
        
-       struct ImBuf  *cmap;
+       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 defines in BIF_butspace.h */
-
-/* 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
@@ -405,6 +452,9 @@ typedef struct SpaceImaSel {
 #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
@@ -421,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 */
@@ -429,29 +482,65 @@ 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_STICKYUVS    16
-#define SI_DRAWSHADOW   32
-#define SI_SELACTFACE   64
-#define SI_NOPIXELSNAP  128
-#define SI_LOCALSTICKY  256
+#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) */
 
 #define ST_SCROLL_SELECT        0x0001 // scrollable
 #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
@@ -467,6 +556,8 @@ 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
@@ -475,9 +566,15 @@ typedef struct SpaceImaSel {
 #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 */
 
@@ -515,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