RNA: only search necessary space types when unregistered panels
[blender.git] / source / blender / makesdna / DNA_camera_types.h
1 /*
2  * This program is free software; you can redistribute it and/or
3  * modify it under the terms of the GNU General Public License
4  * as published by the Free Software Foundation; either version 2
5  * of the License, or (at your option) any later version.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program; if not, write to the Free Software Foundation,
14  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
15  *
16  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
17  * All rights reserved.
18  */
19
20 /** \file
21  * \ingroup DNA
22  */
23
24 #ifndef __DNA_CAMERA_TYPES_H__
25 #define __DNA_CAMERA_TYPES_H__
26
27 #include "DNA_defs.h"
28 #include "DNA_gpu_types.h"
29 #include "DNA_movieclip_types.h"
30 #include "DNA_image_types.h"
31 #include "DNA_ID.h"
32
33 #ifdef __cplusplus
34 extern "C" {
35 #endif
36
37 struct AnimData;
38 struct Ipo;
39 struct Object;
40
41 /* ------------------------------------------- */
42 /* Stereo Settings */
43 typedef struct CameraStereoSettings {
44   float interocular_distance;
45   float convergence_distance;
46   short convergence_mode;
47   short pivot;
48   short flag;
49   char _pad[2];
50   /* Cut-off angle at which interocular distance start to fade down. */
51   float pole_merge_angle_from;
52   /* Cut-off angle at which interocular distance stops to fade down. */
53   float pole_merge_angle_to;
54 } CameraStereoSettings;
55
56 /* Background Picture */
57 typedef struct CameraBGImage {
58   struct CameraBGImage *next, *prev;
59
60   struct Image *ima;
61   struct ImageUser iuser;
62   struct MovieClip *clip;
63   struct MovieClipUser cuser;
64   float offset[2], scale, rotation;
65   float alpha;
66   short flag;
67   short source;
68 } CameraBGImage;
69
70 /** Properties for dof effect. */
71 typedef struct CameraDOFSettings {
72   /** Focal distance for depth of field. */
73   struct Object *focus_object;
74   float focus_distance;
75   float aperture_fstop;
76   float aperture_rotation;
77   float aperture_ratio;
78   int aperture_blades;
79   short flag;
80   char _pad[2];
81 } CameraDOFSettings;
82
83 typedef struct Camera_Runtime {
84   /* For draw manager. */
85   float drw_corners[2][4][2];
86   float drw_tria[2][2];
87   float drw_depth[2];
88   float drw_focusmat[4][4];
89   float drw_normalmat[4][4];
90 } Camera_Runtime;
91
92 typedef struct Camera {
93   ID id;
94   /** Animation data (must be immediately after id for utilities to use it). */
95   struct AnimData *adt;
96
97   /** CAM_PERSP, CAM_ORTHO or CAM_PANO. */
98   char type;
99   /** Draw type extra. */
100   char dtx;
101   short flag;
102   float passepartalpha;
103   float clip_start, clip_end;
104   float lens, ortho_scale, drawsize;
105   float sensor_x, sensor_y;
106   float shiftx, shifty;
107   float dof_distance DNA_DEPRECATED;
108
109   /** Old animation system, deprecated for 2.5. */
110   struct Ipo *ipo DNA_DEPRECATED;
111
112   struct Object *dof_ob DNA_DEPRECATED;
113   struct GPUDOFSettings gpu_dof DNA_DEPRECATED;
114   struct CameraDOFSettings dof;
115
116   /* CameraBGImage reference images */
117   struct ListBase bg_images;
118
119   char sensor_fit;
120   char _pad[7];
121
122   /* Stereo settings */
123   struct CameraStereoSettings stereo;
124
125   /** Runtime data (keep last). */
126   Camera_Runtime runtime;
127 } Camera;
128
129 /* **************** CAMERA ********************* */
130
131 /* type */
132 enum {
133   CAM_PERSP = 0,
134   CAM_ORTHO = 1,
135   CAM_PANO = 2,
136 };
137
138 /* dtx */
139 enum {
140   CAM_DTX_CENTER = (1 << 0),
141   CAM_DTX_CENTER_DIAG = (1 << 1),
142   CAM_DTX_THIRDS = (1 << 2),
143   CAM_DTX_GOLDEN = (1 << 3),
144   CAM_DTX_GOLDEN_TRI_A = (1 << 4),
145   CAM_DTX_GOLDEN_TRI_B = (1 << 5),
146   CAM_DTX_HARMONY_TRI_A = (1 << 6),
147   CAM_DTX_HARMONY_TRI_B = (1 << 7),
148 };
149
150 /* flag */
151 enum {
152   CAM_SHOWLIMITS = (1 << 0),
153   CAM_SHOWMIST = (1 << 1),
154   CAM_SHOWPASSEPARTOUT = (1 << 2),
155   CAM_SHOW_SAFE_MARGINS = (1 << 3),
156   CAM_SHOWNAME = (1 << 4),
157   CAM_ANGLETOGGLE = (1 << 5),
158   CAM_DS_EXPAND = (1 << 6),
159 #ifdef DNA_DEPRECATED
160   CAM_PANORAMA = (1 << 7), /* deprecated */
161 #endif
162   CAM_SHOWSENSOR = (1 << 8),
163   CAM_SHOW_SAFE_CENTER = (1 << 9),
164   CAM_SHOW_BG_IMAGE = (1 << 10),
165 };
166
167 /* Sensor fit */
168 enum {
169   CAMERA_SENSOR_FIT_AUTO = 0,
170   CAMERA_SENSOR_FIT_HOR = 1,
171   CAMERA_SENSOR_FIT_VERT = 2,
172 };
173
174 #define DEFAULT_SENSOR_WIDTH 36.0f
175 #define DEFAULT_SENSOR_HEIGHT 24.0f
176
177 /* stereo->convergence_mode */
178 enum {
179   CAM_S3D_OFFAXIS = 0,
180   CAM_S3D_PARALLEL = 1,
181   CAM_S3D_TOE = 2,
182 };
183
184 /* stereo->pivot */
185 enum {
186   CAM_S3D_PIVOT_LEFT = 0,
187   CAM_S3D_PIVOT_RIGHT = 1,
188   CAM_S3D_PIVOT_CENTER = 2,
189 };
190
191 /* stereo->flag */
192 enum {
193   CAM_S3D_SPHERICAL = (1 << 0),
194   CAM_S3D_POLE_MERGE = (1 << 1),
195 };
196
197 /* CameraBGImage->flag */
198 /* may want to use 1 for select ? */
199 enum {
200   CAM_BGIMG_FLAG_EXPANDED = (1 << 1),
201   CAM_BGIMG_FLAG_CAMERACLIP = (1 << 2),
202   CAM_BGIMG_FLAG_DISABLED = (1 << 3),
203   CAM_BGIMG_FLAG_FOREGROUND = (1 << 4),
204
205   /* Camera framing options */
206   CAM_BGIMG_FLAG_CAMERA_ASPECT = (1 << 5), /* don't stretch to fit the camera view  */
207   CAM_BGIMG_FLAG_CAMERA_CROP = (1 << 6),   /* crop out the image */
208
209   /* Axis flip options */
210   CAM_BGIMG_FLAG_FLIP_X = (1 << 7),
211   CAM_BGIMG_FLAG_FLIP_Y = (1 << 8),
212 };
213
214 /* CameraBGImage->source */
215 /* may want to use 1 for select ?*/
216 enum {
217   CAM_BGIMG_SOURCE_IMAGE = 0,
218   CAM_BGIMG_SOURCE_MOVIE = 1,
219 };
220
221 /* CameraDOFSettings->flag */
222 enum {
223   CAM_DOF_ENABLED = (1 << 0),
224 };
225
226 #ifdef __cplusplus
227 }
228 #endif
229
230 #endif