Initial revision
[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 Object;
38 struct Image;
39 struct Tex;
40 struct SpaceLink;
41
42 /* This is needed to not let VC choke on near and far... old
43  * proprietary MS extensions... */
44 #ifdef WIN32
45 #undef near
46 #undef far
47 #define near clipsta
48 #define far clipend
49 #endif
50
51 /* The near/far thing is a Win EXCEPTION. Thus, leave near/far in the
52  * code, and patch for windows. */
53
54 typedef struct BGpic {
55     struct Image *ima;
56         struct Tex *tex;
57     float xof, yof, size, zoom, blend;
58     short xim, yim;
59         unsigned int *rect;
60 } BGpic;
61
62 typedef struct View3D {
63         struct SpaceLink *next, *prev;
64         int spacetype, pad;
65         struct ScrArea *area;
66         
67         float viewmat[4][4];
68         float viewinv[4][4];
69         float persmat[4][4];
70         float persinv[4][4];
71         float viewquat[4], dist;
72
73         /**
74          * 0 - ortho
75          * 1 - do 3d perspective
76          * 2 - use the camera
77          */
78         short persp;
79         short view;
80
81         struct Object *camera;
82         struct BGpic *bgpic;
83         struct View3D *localvd;
84         
85         /**
86          * The drawing mode for the 3d display. Set to OB_WIRE, OB_SOLID,
87          * OB_SHADED or OB_TEXTURED */
88         short drawtype;
89         short localview;
90         int lay, layact;
91         short scenelock, around, camzoom, flag;
92         
93         float lens, grid, near, far;
94         float ofs[3], cursor[3];
95         
96         short mx, my;   /* moeten achter elkaar blijven staan ivm als pointer doorgeven */
97         short mxo, myo;
98
99         short gridlines, viewbut;
100         int     pad2, pad3;
101 } View3D;
102
103 /* View3D->flag */
104 #define V3D_MODE                        (16+32+64+128+256+512)
105 #define V3D_DISPIMAGE           1
106 #define V3D_DISPBGPIC           2
107 #define V3D_SETUPBUTS           4
108 #define V3D_NEEDBACKBUFDRAW     8
109 #define V3D_EDITMODE            16
110 #define V3D_VERTEXPAINT         32
111 #define V3D_FACESELECT          64
112 #define V3D_POSEMODE            128
113 #define V3D_TEXTUREPAINT        256
114 #define V3D_WEIGHTPAINT         512
115
116 /* View3D->around */
117 #define V3D_CENTRE              0
118 #define V3D_CENTROID    3
119 #define V3D_CURSOR              1
120 #define V3D_LOCAL               2
121
122 /* View3d->persp */
123 #define V3D_PERSP_ORTHO          0
124 #define V3D_PERSP_DO_3D_PERSP    1
125 #define V3D_PERSP_USE_THE_CAMERA 2
126
127 #endif