ee75d7b8f0fb86c2e7b47a19f2a2d034269b85d0
[blender.git] / source / blender / makesdna / DNA_view3d_types.h
1 /**
2  * blenlib/DNA_view3d_types.h (mar-2001 nzc)
3  *
4  * $Id$ 
5  *
6  * ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
7  *
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. The Blender
12  * Foundation also sells licenses for use in proprietary software under
13  * the Blender License.  See http://www.blender.org/BL/ for information
14  * about this.
15  *
16  * This program is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19  * GNU General Public License for more details.
20  *
21  * You should have received a copy of the GNU General Public License
22  * along with this program; if not, write to the Free Software Foundation,
23  * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
24  *
25  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
26  * All rights reserved.
27  *
28  * The Original Code is: all of this file.
29  *
30  * Contributor(s): none yet.
31  *
32  * ***** END GPL/BL DUAL LICENSE BLOCK *****
33  */
34 #ifndef DNA_VIEW3D_TYPES_H
35 #define DNA_VIEW3D_TYPES_H
36
37 struct ViewDepths;
38 struct Object;
39 struct Image;
40 struct Tex;
41 struct SpaceLink;
42 struct Base;
43 struct BoundBox;
44 struct RenderInfo;
45 struct RetopoViewData;
46
47 /* This is needed to not let VC choke on near and far... old
48  * proprietary MS extensions... */
49 #ifdef WIN32
50 #undef near
51 #undef far
52 #define near clipsta
53 #define far clipend
54 #endif
55
56 #include "DNA_listBase.h"
57 #include "DNA_image_types.h"
58
59 /* The near/far thing is a Win EXCEPTION. Thus, leave near/far in the
60  * code, and patch for windows. */
61
62 typedef struct BGpic {
63     struct Image *ima;
64         struct ImageUser iuser;
65     float xof, yof, size, zoom, blend;
66     short xim, yim;
67 } BGpic;
68
69 typedef struct View3D {
70         struct SpaceLink *next, *prev;
71         int spacetype;
72         float blockscale;
73         struct ScrArea *area;
74         
75         short blockhandler[8];
76
77         float viewmat[4][4];
78         float viewinv[4][4];
79         float persmat[4][4];
80         float persinv[4][4];
81         
82         float winmat1[4][4];  // persp(1) storage, for swap matrices
83         float viewmat1[4][4];
84         
85         float viewquat[4], dist, zfac, pad0;    /* zfac is initgrabz() result */
86
87         /**
88          * 0 - ortho
89          * 1 - do 3d perspective
90          * 2 - use the camera
91          */
92         short persp;
93         short view;
94
95         struct Object *camera, *ob_centre;
96         struct BGpic *bgpic;
97         struct View3D *localvd;
98         struct RenderInfo *ri;
99         struct RetopoViewData *retopo_view_data;
100         struct ViewDepths *depths;
101         
102         char ob_centre_bone[32];                /* optional string for armature bone to define center */
103         
104         /**
105          * The drawing mode for the 3d display. Set to OB_WIRE, OB_SOLID,
106          * OB_SHADED or OB_TEXTURED */
107         short drawtype;
108         short localview;
109         int lay, layact;
110         short scenelock, around, camzoom;
111         
112         char pivot_last, pad1; /* pivot_last is for rotating around the last edited element */
113         
114         float lens, grid, gridview, pixsize, near, far;
115         float camdx, camdy;             /* camera view offsets, 1.0 = viewplane moves entire width/height */
116         float ofs[3], cursor[3];
117
118         short gridlines, viewbut;
119         short gridflag;
120         short modeselect, menunr, texnr;
121         
122         /* transform widget info */
123         short twtype, twmode, twflag, twdrawflag;
124         float twmat[4][4];
125         
126         /* user defined clipping planes */
127         float clip[4][4];
128         
129         struct BoundBox *clipbb;
130         
131         /* afterdraw, for xray & transparent */
132         struct ListBase afterdraw;
133         /* drawflags, denoting state */
134         short zbuf, transp, xray;
135
136         short flag, flag2;
137         
138         short gridsubdiv;       /* Number of subdivisions in the grid between each highlighted grid line */
139         
140         short pad3;
141         
142         short pad2;
143         
144         void *properties_storage;       /* Nkey panel stores stuff here, not in file */
145
146 } View3D;
147
148 /* View3D->flag (short) */
149 #define V3D_MODE                        (16+32+64+128+256+512)
150 #define V3D_DISPIMAGE           1
151 #define V3D_DISPBGPIC           2
152 #define V3D_HIDE_HELPLINES      4
153 #define V3D_NEEDBACKBUFDRAW     8
154 #define V3D_EDITMODE            16
155 #define V3D_VERTEXPAINT         32
156 #define V3D_FACESELECT          64
157 #define V3D_POSEMODE            128
158 #define V3D_TEXTUREPAINT        256
159 #define V3D_WEIGHTPAINT         512
160 #define V3D_ALIGN                       1024
161 #define V3D_SELECT_OUTLINE      2048
162 #define V3D_ZBUF_SELECT         4096
163 #define V3D_GLOBAL_STATS        8192
164 #define V3D_CLIPPING            16384
165 #define V3D_DRAW_CENTERS        32768
166
167
168 /* View3d->flag2 (short) */
169 #define V3D_OPP_DIRECTION_NAME  1
170 #define V3D_FLYMODE                             2
171 #define V3D_DEPRECATED                  4 /* V3D_TRANSFORM_SNAP, moved to a scene setting */
172 #define V3D_SOLID_TEX                   8
173
174 /* View3D->around */
175 #define V3D_CENTER               0
176 #define V3D_CENTROID     3
177 #define V3D_CURSOR               1
178 #define V3D_LOCAL                2
179 #define V3D_ACTIVE               4
180
181
182 /* View3d->persp */
183 #define V3D_PERSP_ORTHO          0
184 #define V3D_PERSP_DO_3D_PERSP    1
185 #define V3D_PERSP_USE_THE_CAMERA 2
186
187 /* View3d->gridflag */
188 #define V3D_SHOW_FLOOR                  1
189 #define V3D_SHOW_X                              2
190 #define V3D_SHOW_Y                              4
191 #define V3D_SHOW_Z                              8
192
193 /* View3d->twtype (bits, we can combine them) */
194 #define V3D_MANIP_TRANSLATE             1
195 #define V3D_MANIP_ROTATE                2
196 #define V3D_MANIP_SCALE                 4
197
198 /* View3d->twmode */
199 #define V3D_MANIP_GLOBAL                0
200 #define V3D_MANIP_LOCAL                 1
201 #define V3D_MANIP_NORMAL                2
202 #define V3D_MANIP_VIEW                  3
203
204 /* View3d->twflag */
205    /* USE = user setting, DRAW = based on selection */
206 #define V3D_USE_MANIPULATOR             1
207 #define V3D_DRAW_MANIPULATOR    2
208 #define V3D_CALC_MANIPULATOR    4
209
210
211 #endif
212