add define for deprecated DNA struct members: DNA_DEPRECATED,
[blender.git] / source / blender / makesdna / DNA_view3d_types.h
1 /*
2  * ***** BEGIN GPL LICENSE BLOCK *****
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public License
6  * as published by the Free Software Foundation; either version 2
7  * of the License, or (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software Foundation,
16  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17  *
18  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
19  * All rights reserved.
20  *
21  * The Original Code is: all of this file.
22  *
23  * Contributor(s): none yet.
24  *
25  * ***** END GPL LICENSE BLOCK *****
26  */
27 #ifndef DNA_VIEW3D_TYPES_H
28 #define DNA_VIEW3D_TYPES_H
29
30 /** \file DNA_view3d_types.h
31  *  \ingroup DNA
32  */
33
34 struct ViewDepths;
35 struct Object;
36 struct Image;
37 struct Tex;
38 struct SpaceLink;
39 struct Base;
40 struct BoundBox;
41 struct MovieClip;
42 struct MovieClipUser;
43 struct RenderInfo;
44 struct RenderEngine;
45 struct bGPdata;
46 struct SmoothViewStore;
47 struct wmTimer;
48
49 /* This is needed to not let VC choke on near and far... old
50  * proprietary MS extensions... */
51 #ifdef WIN32
52 #undef near
53 #undef far
54 #define near clipsta
55 #define far clipend
56 #endif
57
58 #include "DNA_defs.h"
59 #include "DNA_listBase.h"
60 #include "DNA_image_types.h"
61 #include "DNA_movieclip_types.h"
62
63 /* ******************************** */
64
65 /* The near/far thing is a Win EXCEPTION. Thus, leave near/far in the
66  * code, and patch for windows. */
67  
68 /* Background Picture in 3D-View */
69 typedef struct BGpic {
70         struct BGpic *next, *prev;
71
72         struct Image *ima;
73         struct ImageUser iuser;
74         struct MovieClip *clip;
75         struct MovieClipUser cuser;
76         float xof, yof, size, blend;
77         short view;
78         short flag;
79         short source, pad;
80 } BGpic;
81
82 /* ********************************* */
83
84 typedef struct RegionView3D {
85         
86         float winmat[4][4];                     /* GL_PROJECTION matrix */
87         float viewmat[4][4];            /* GL_MODELVIEW matrix */
88         float viewinv[4][4];            /* inverse of viewmat */
89         float persmat[4][4];            /* viewmat*winmat */
90         float persinv[4][4];            /* inverse of persmat */
91
92         /* viewmat/persmat multiplied with object matrix, while drawing and selection */
93         float viewmatob[4][4];
94         float persmatob[4][4];
95
96         /* transform widget matrix */
97         float twmat[4][4];
98
99         float viewquat[4];                      /* view rotation, must be kept normalized */
100         float dist;                                     /* distance from 'ofs' along -viewinv[2] vector, where result is negative as is 'ofs' */
101         float zfac;                                     /* initgrabz() result */
102         float camdx, camdy;                     /* camera view offsets, 1.0 = viewplane moves entire width/height */
103         float pixsize;                          /* runtime only */
104         float ofs[3];                           /* view center & orbit pivot, negative of worldspace location,
105                                                                  * also matches -viewinv[3][0:3] in ortho mode.*/
106         short camzoom;                          /* viewport zoom on the camera frame, see BKE_screen_view3d_zoom_to_fac */
107         short twdrawflag;
108         char is_persp;                          /* check if persp/ortho view, since 'persp' cant be used for this since
109                                                                  * it can have cameras assigned as well. (only set in setwinmatrixview3d) */
110         char pad[3];
111         
112         short rflag, viewlock;
113         short persp;
114         short view;
115         
116         /* user defined clipping planes */
117         float clip[6][4];
118         float clip_local[6][4]; /* clip in object space, means we can test for clipping in editmode without first going into worldspace */
119         struct BoundBox *clipbb;        
120         
121         struct bGPdata *gpd;            /* Grease-Pencil Data (annotation layers) */
122         
123         struct RegionView3D *localvd; /* allocated backup of its self while in localview */
124         struct RenderInfo *ri;
125         struct RenderEngine *render_engine;
126         struct ViewDepths *depths;
127         
128         /* animated smooth view */
129         struct SmoothViewStore *sms;
130         struct wmTimer *smooth_timer;
131         
132         /* last view */
133         float lviewquat[4];
134         short lpersp, lview; /* lpersp can never be set to 'RV3D_CAMOB' */
135         float gridview;
136         
137         float twangle[3];
138
139         /* active rotation from NDOF or elsewhere */
140         float rot_angle;
141         float rot_axis[3];
142         
143         char pad2[4];
144
145 } RegionView3D;
146
147 /* 3D ViewPort Struct */
148 typedef struct View3D {
149         struct SpaceLink *next, *prev;
150         ListBase regionbase;            /* storage of regions for inactive spaces */
151         int spacetype;
152         float blockscale;
153         short blockhandler[8];
154
155         float viewquat[4]  DNA_DEPRECATED;
156         float dist         DNA_DEPRECATED;
157
158         float bundle_size;                      /* size of bundles in reconstructed data */
159         short bundle_drawtype;          /* display style for bundle */
160
161         char pad[6];
162         
163         unsigned int lay_used; /* used while drawing */
164         
165         short persp  DNA_DEPRECATED;
166         short view   DNA_DEPRECATED;
167         
168         struct Object *camera, *ob_centre;
169
170         struct ListBase bgpicbase;
171         struct BGpic *bgpic  DNA_DEPRECATED; /* deprecated, use bgpicbase, only kept for do_versions(...) */
172
173         struct View3D *localvd; /* allocated backup of its self while in localview */
174         
175         char ob_centre_bone[32];                /* optional string for armature bone to define center */
176         
177         unsigned int lay;
178         int layact;
179         
180         /**
181          * The drawing mode for the 3d display. Set to OB_BOUNDBOX, OB_WIRE, OB_SOLID,
182          * OB_TEXTURE, OB_MATERIAL or OB_RENDER */
183         short drawtype;
184         short ob_centre_cursor;         /* optional bool for 3d cursor to define center */
185         short scenelock, around;
186         short flag, flag2;
187         
188         float lens, grid;
189         float near, far;
190         float ofs[3]  DNA_DEPRECATED;                   /* XXX deprecated */
191         float cursor[3];
192
193         short modeselect;
194         short gridlines;
195         short gridsubdiv;       /* Number of subdivisions in the grid between each highlighted grid line */
196         char gridflag;
197
198         /* transform widget info */
199         char twtype, twmode, twflag, pad2[2];
200         
201         /* afterdraw, for xray & transparent */
202         struct ListBase afterdraw_transp;
203         struct ListBase afterdraw_xray;
204         struct ListBase afterdraw_xraytransp;
205         
206         /* drawflags, denoting state */
207         short zbuf, transp, xray;
208
209         char pad3[2];
210
211         void *properties_storage;       /* Nkey panel stores stuff here (runtime only!) */
212
213         /* XXX deprecated? */
214         struct bGPdata *gpd  DNA_DEPRECATED;            /* Grease-Pencil Data (annotation layers) */
215
216 } View3D;
217
218
219 /* View3D->flag (short) */
220 /*#define V3D_DISPIMAGE         1*/ /*UNUSED*/
221 #define V3D_DISPBGPICS          2
222 #define V3D_HIDE_HELPLINES      4
223 #define V3D_INVALID_BACKBUF     8
224
225 #define V3D_ALIGN                       1024
226 #define V3D_SELECT_OUTLINE      2048
227 #define V3D_ZBUF_SELECT         4096
228 #define V3D_GLOBAL_STATS        8192
229 #define V3D_DRAW_CENTERS        32768
230
231 /* RegionView3d->persp */
232 #define RV3D_ORTHO                              0
233 #define RV3D_PERSP                              1
234 #define RV3D_CAMOB                              2
235
236 /* RegionView3d->rflag */
237 #define RV3D_CLIPPING                           4
238 #define RV3D_NAVIGATING                         8
239 #define RV3D_GPULIGHT_UPDATE            16
240
241 /* RegionView3d->viewlock */
242 #define RV3D_LOCKED                     1
243 #define RV3D_BOXVIEW            2
244 #define RV3D_BOXCLIP            4
245
246 /* RegionView3d->view */
247 #define RV3D_VIEW_USER                   0
248 #define RV3D_VIEW_FRONT                  1
249 #define RV3D_VIEW_BACK                   2
250 #define RV3D_VIEW_LEFT                   3
251 #define RV3D_VIEW_RIGHT                  4
252 #define RV3D_VIEW_TOP                    5
253 #define RV3D_VIEW_BOTTOM                 6
254 #define RV3D_VIEW_PERSPORTHO     7
255 #define RV3D_VIEW_CAMERA                 8
256
257 /* View3d->flag2 (short) */
258 #define V3D_RENDER_OVERRIDE             4
259 #define V3D_SOLID_TEX                   8
260 #define V3D_DISPGP                              16
261 #define V3D_LOCK_CAMERA                 32
262 #define V3D_RENDER_SHADOW               64 /* This is a runtime only flag that's used to tell draw_mesh_object() that we're doing a shadow pass instead of a regular draw */
263 #define V3D_SHOW_RECONSTRUCTION         128
264 #define V3D_SHOW_CAMERAPATH             256
265 #define V3D_SHOW_BUNDLENAME             512
266
267 /* View3D->around */
268 #define V3D_CENTER               0
269 #define V3D_CENTROID     3
270 #define V3D_CURSOR               1
271 #define V3D_LOCAL                2
272 #define V3D_ACTIVE               4
273
274 /*View3D types (only used in tools, not actually saved)*/
275 #define V3D_VIEW_STEPLEFT                1
276 #define V3D_VIEW_STEPRIGHT               2
277 #define V3D_VIEW_STEPDOWN                3
278 #define V3D_VIEW_STEPUP          4
279 #define V3D_VIEW_PANLEFT                 5
280 #define V3D_VIEW_PANRIGHT                6
281 #define V3D_VIEW_PANDOWN                 7
282 #define V3D_VIEW_PANUP                   8
283
284 /* View3d->gridflag */
285 #define V3D_SHOW_FLOOR                  1
286 #define V3D_SHOW_X                              2
287 #define V3D_SHOW_Y                              4
288 #define V3D_SHOW_Z                              8
289
290 /* View3d->twtype (bits, we can combine them) */
291 #define V3D_MANIP_TRANSLATE             1
292 #define V3D_MANIP_ROTATE                2
293 #define V3D_MANIP_SCALE                 4
294
295 /* View3d->twmode */
296 #define V3D_MANIP_GLOBAL                0
297 #define V3D_MANIP_LOCAL                 1
298 #define V3D_MANIP_NORMAL                2
299 #define V3D_MANIP_VIEW                  3
300 #define V3D_MANIP_GIMBAL                4
301 #define V3D_MANIP_CUSTOM                5 /* anything of value 5 or higher is custom */
302
303 /* View3d->twflag */
304    /* USE = user setting, DRAW = based on selection */
305 #define V3D_USE_MANIPULATOR             1
306 #define V3D_DRAW_MANIPULATOR    2
307 /* #define V3D_CALC_MANIPULATOR 4 */ /*UNUSED*/
308
309 /* BGPic->flag */
310 /* may want to use 1 for select ?*/
311 #define V3D_BGPIC_EXPANDED              2
312 #define V3D_BGPIC_CAMERACLIP    4
313 #define V3D_BGPIC_DISABLED              8
314
315 /* BGPic->source */
316 /* may want to use 1 for select ?*/
317 #define V3D_BGPIC_IMAGE         0
318 #define V3D_BGPIC_MOVIE         1
319
320 #define RV3D_CAMZOOM_MIN -30
321 #define RV3D_CAMZOOM_MAX 600
322
323 #endif
324
325