Cycles: working towards texture workflow design
[blender.git] / source / blender / makesdna / DNA_view3d_types.h
index d8a8ec063d02c9f688de451310078f81b37e9087..fe2f0c634b5e6c088230daf5d40d0280dac9522d 100644 (file)
@@ -1,6 +1,4 @@
-/**
- * blenlib/DNA_view3d_types.h (mar-2001 nzc)
- *
+/*
  * $Id$ 
  *
  * ***** BEGIN GPL LICENSE BLOCK *****
@@ -17,7 +15,7 @@
  *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  *
  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
  * All rights reserved.
 #ifndef DNA_VIEW3D_TYPES_H
 #define DNA_VIEW3D_TYPES_H
 
+/** \file DNA_view3d_types.h
+ *  \ingroup DNA
+ */
+
 struct ViewDepths;
 struct Object;
 struct Image;
@@ -39,7 +41,7 @@ struct SpaceLink;
 struct Base;
 struct BoundBox;
 struct RenderInfo;
-struct RetopoViewData;
+struct RenderEngine;
 struct bGPdata;
 struct SmoothViewStore;
 struct wmTimer;
@@ -63,33 +65,45 @@ struct wmTimer;
  
 /* Background Picture in 3D-View */
 typedef struct BGpic {
-    struct Image *ima;
+       struct BGpic *next, *prev;
+
+       struct Image *ima;
        struct ImageUser iuser;
-    float xof, yof, size, blend;
+       float xof, yof, size, blend;
+       short view;
+       short flag;
+       float pad2;
 } BGpic;
 
 /* ********************************* */
 
 typedef struct RegionView3D {
        
-       float winmat[4][4];
-       float viewmat[4][4];
-       float viewinv[4][4];
-       float persmat[4][4];
-       float persinv[4][4];
+       float winmat[4][4];                     /* GL_PROJECTION matrix */
+       float viewmat[4][4];            /* GL_MODELVIEW matrix */
+       float viewinv[4][4];            /* inverse of viewmat */
+       float persmat[4][4];            /* viewmat*winmat */
+       float persinv[4][4];            /* inverse of persmat */
 
-       /* local viewmat/persmat, multiplied with object matrix, while drawing */
+       /* viewmat/persmat multiplied with object matrix, while drawing and selection */
        float viewmatob[4][4];
        float persmatob[4][4];
 
        /* transform widget matrix */
        float twmat[4][4];
-       
-       float viewquat[4], dist, zfac;  /* zfac is initgrabz() result */
-       float camdx, camdy;                             /* camera view offsets, 1.0 = viewplane moves entire width/height */
-       float pixsize;
-       float ofs[3];
-       short camzoom, viewbut, pad[2];
+
+       float viewquat[4];                      /* view rotation, must be kept normalized */
+       float dist;                                     /* distance from 'ofs' along -viewinv[2] vector, where result is negative as is 'ofs' */
+       float zfac;                                     /* initgrabz() result */
+       float camdx, camdy;                     /* camera view offsets, 1.0 = viewplane moves entire width/height */
+       float pixsize;                          /* runtime only */
+       float ofs[3];                           /* view center & orbit pivot, negative of worldspace location,
+                                                                * also matches -viewinv[3][0:3] in ortho mode.*/
+       short camzoom;                          /* viewport zoom on the camera frame, see BKE_screen_view3d_zoom_to_fac */
+       short twdrawflag;
+       char is_persp;                          /* check if persp/ortho view, since 'persp' cant be used for this since
+                                                                * it can have cameras assigned as well. (only set in setwinmatrixview3d) */
+       char pad[3];
        
        short rflag, viewlock;
        short persp;
@@ -102,9 +116,9 @@ typedef struct RegionView3D {
        
        struct bGPdata *gpd;            /* Grease-Pencil Data (annotation layers) */
        
-       struct RegionView3D *localvd;
+       struct RegionView3D *localvd; /* allocated backup of its self while in localview */
        struct RenderInfo *ri;
-       struct RetopoViewData *retopo_view_data;
+       struct RenderEngine *render_engine;
        struct ViewDepths *depths;
        
        /* animated smooth view */
@@ -113,9 +127,13 @@ typedef struct RegionView3D {
        
        /* last view */
        float lviewquat[4];
-       short lpersp, lview;
-       int pad3;
+       short lpersp, lview; /* lpersp can never be set to 'RV3D_CAMOB' */
+       float gridview;
        
+       float twangle[3];
+
+       float padf;
+
 } RegionView3D;
 
 /* 3D ViewPort Struct */
@@ -128,47 +146,48 @@ typedef struct View3D {
        
        float viewquat[4], dist, pad1;  /* XXX depricated */
        
-       int lay_used; /* used while drawing */
+       unsigned int lay_used; /* used while drawing */
        
        short persp;    /* XXX depricated */
        short view;     /* XXX depricated */
        
        struct Object *camera, *ob_centre;
-       struct BGpic *bgpic;
-       struct View3D *localvd;
+
+       struct ListBase bgpicbase;
+       struct BGpic *bgpic; /* deprecated, use bgpicbase, only kept for do_versions(...) */
+
+       struct View3D *localvd; /* allocated backup of its self while in localview */
        
        char ob_centre_bone[32];                /* optional string for armature bone to define center */
        
-       int lay, layact;
+       unsigned int lay;
+       int layact;
        
        /**
         * The drawing mode for the 3d display. Set to OB_WIRE, OB_SOLID,
         * OB_SHADED or OB_TEXTURE */
        short drawtype;
-       short pad2;
-       short scenelock, around, pad3;
+       short ob_centre_cursor;         /* optional bool for 3d cursor to define center */
+       short scenelock, around;
        short flag, flag2;
        
-       short pivot_last; /* pivot_last is for rotating around the last edited element */
-       
-       float lens, grid, gridview, padf, near, far;
-       float ofs[3];                   /* XXX depricated */
+       float lens, grid;
+       float near, far;
+       float ofs[3];                   /* XXX deprecated */
        float cursor[3];
 
-       short gridlines, pad4;
-       short gridflag;
-       short gridsubdiv;       /* Number of subdivisions in the grid between each highlighted grid line */
        short modeselect;
-       short keyflags;         /* flags for display of keyframes */
-       
+       short gridlines;
+       short gridsubdiv;       /* Number of subdivisions in the grid between each highlighted grid line */
+       char gridflag;
+
        /* transform widget info */
-       short twtype, twmode, twflag, twdrawflag;
-       
-       /* customdata flags from modes */
-       unsigned int customdata_mask;
+       char twtype, twmode, twflag, pad2[2];
        
        /* afterdraw, for xray & transparent */
-       struct ListBase afterdraw;
+       struct ListBase afterdraw_transp;
+       struct ListBase afterdraw_xray;
+       struct ListBase afterdraw_xraytransp;
        
        /* drawflags, denoting state */
        short zbuf, transp, xray;
@@ -176,27 +195,20 @@ typedef struct View3D {
        char ndofmode;                  /* mode of transform for 6DOF devices -1 not found, 0 normal, 1 fly, 2 ob transform */
        char ndoffilter;                /* filter for 6DOF devices 0 normal, 1 dominant */
        
-       void *properties_storage;       /* Nkey panel stores stuff here, not in file */
+       void *properties_storage;       /* Nkey panel stores stuff here (runtime only!) */
        
        /* XXX depricated? */
        struct bGPdata *gpd;            /* Grease-Pencil Data (annotation layers) */
 
 } View3D;
 
-/* XXX this needs cleaning */
 
 /* View3D->flag (short) */
-#define V3D_MODE                       (16+32+64+128+256+512)
-#define V3D_DISPIMAGE          1
-#define V3D_DISPBGPIC          2
+/*#define V3D_DISPIMAGE                1*/ /*UNUSED*/
+#define V3D_DISPBGPICS         2
 #define V3D_HIDE_HELPLINES     4
-#define V3D_NEEDBACKBUFDRAW    8
-#define V3D_EDITMODE           16
-#define V3D_VERTEXPAINT                32
-#define V3D_FACESELECT         64
-#define V3D_POSEMODE           128
-#define V3D_TEXTUREPAINT       256
-#define V3D_WEIGHTPAINT                512
+#define V3D_INVALID_BACKBUF    8
+
 #define V3D_ALIGN                      1024
 #define V3D_SELECT_OUTLINE     2048
 #define V3D_ZBUF_SELECT                4096
@@ -209,9 +221,9 @@ typedef struct View3D {
 #define RV3D_CAMOB                             2
 
 /* RegionView3d->rflag */
-#define RV3D_FLYMODE                           2
 #define RV3D_CLIPPING                          4
 #define RV3D_NAVIGATING                                8
+#define RV3D_GPULIGHT_UPDATE           16
 
 /* RegionView3d->viewlock */
 #define RV3D_LOCKED                    1
@@ -219,18 +231,21 @@ typedef struct View3D {
 #define RV3D_BOXCLIP           4
 
 /* RegionView3d->view */
-#define RV3D_VIEW_FRONT                 1
+#define RV3D_VIEW_USER                  0
+#define RV3D_VIEW_FRONT                         1
 #define RV3D_VIEW_BACK                  2
 #define RV3D_VIEW_LEFT                  3
-#define RV3D_VIEW_RIGHT                 4
+#define RV3D_VIEW_RIGHT                         4
 #define RV3D_VIEW_TOP                   5
 #define RV3D_VIEW_BOTTOM                6
 #define RV3D_VIEW_PERSPORTHO    7
 #define RV3D_VIEW_CAMERA                8
 
 /* View3d->flag2 (short) */
-#define V3D_SOLID_TEX                  8
+#define V3D_RENDER_OVERRIDE            4
+#define V3D_SOLID_TEX                  8       /* deprecated */
 #define V3D_DISPGP                             16
+#define V3D_LOCK_CAMERA                        32
 
 /* View3D->around */
 #define V3D_CENTER              0
@@ -272,8 +287,14 @@ typedef struct View3D {
    /* USE = user setting, DRAW = based on selection */
 #define V3D_USE_MANIPULATOR            1
 #define V3D_DRAW_MANIPULATOR   2
-#define V3D_CALC_MANIPULATOR   4
+/* #define V3D_CALC_MANIPULATOR        4 */ /*UNUSED*/
+
+/* BGPic->flag */
+/* may want to use 1 for select ?*/
+#define V3D_BGPIC_EXPANDED             2
 
+#define RV3D_CAMZOOM_MIN -30
+#define RV3D_CAMZOOM_MAX 600
 
 #endif