fixed spacing in the headers to get rid of some warnings and some other
[blender.git] / source / blender / makesdna / DNA_scene_types.h
1 /**
2  * blenlib/DNA_scene_types.h (mar-2001 nzc)
3  *
4  * Renderrecipe and scene decription. The fact that there is a
5  * hierarchy here is a bit strange, and not desirable.
6  *
7  * $Id$ 
8  *
9  * ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
10  *
11  * This program is free software; you can redistribute it and/or
12  * modify it under the terms of the GNU General Public License
13  * as published by the Free Software Foundation; either version 2
14  * of the License, or (at your option) any later version. The Blender
15  * Foundation also sells licenses for use in proprietary software under
16  * the Blender License.  See http://www.blender.org/BL/ for information
17  * about this.
18  *
19  * This program is distributed in the hope that it will be useful,
20  * but WITHOUT ANY WARRANTY; without even the implied warranty of
21  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
22  * GNU General Public License for more details.
23  *
24  * You should have received a copy of the GNU General Public License
25  * along with this program; if not, write to the Free Software Foundation,
26  * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
27  *
28  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
29  * All rights reserved.
30  *
31  * The Original Code is: all of this file.
32  *
33  * Contributor(s): none yet.
34  *
35  * ***** END GPL/BL DUAL LICENSE BLOCK *****
36  */
37 #ifndef DNA_SCENE_TYPES_H
38 #define DNA_SCENE_TYPES_H
39
40 #ifdef __cplusplus
41 extern "C" {
42 #endif
43
44 #include "DNA_vec_types.h"
45 #include "DNA_listBase.h"
46 #include "DNA_scriptlink_types.h"
47 #include "DNA_ID.h"
48 #include "DNA_scriptlink_types.h"
49
50 struct FreeCamera;
51 struct Radio;
52 struct Object;
53 struct World;
54 struct Scene;
55 struct Image;
56 struct Group;
57
58 typedef struct Base {
59         struct Base *next, *prev;
60         unsigned int lay, selcol;
61         int flag;
62         short sx, sy;
63         struct Object *object;
64 } Base;
65
66 typedef struct AviCodecData {
67         void                    *lpFormat;                      /* save format */
68         void                    *lpParms;                       /* compressor options */
69         unsigned int    cbFormat;                       /* size of lpFormat buffer */
70         unsigned int    cbParms;                        /* size of lpParms buffer */
71
72         unsigned int    fccType;            /* stream type, for consistency */
73         unsigned int    fccHandler;         /* compressor */
74         unsigned int    dwKeyFrameEvery;    /* keyframe rate */
75         unsigned int    dwQuality;          /* compress quality 0-10,000 */
76         unsigned int    dwBytesPerSecond;   /* bytes per second */
77         unsigned int    dwFlags;            /* flags... see below */
78         unsigned int    dwInterleaveEvery;  /* for non-video streams only */
79         unsigned int    pad;
80 } AviCodecData;
81
82 typedef struct RenderData {
83         struct AviCodecData *avicodecdata;
84         
85         /* hoe gaat tijd gedefinieerd worden? */
86         short cfra, sfra, efra; /* plaatjes */
87         short images, framapto, flag;
88         float ctime;                    /* hiermee rekenen? */
89         float framelen, blurfac;
90
91         /** For UR edge rendering: give the edges this colour */
92         float edgeR, edgeG, edgeB;
93         
94         short fullscreen, xplay, yplay, freqplay;       /* standalone player */
95         short depth, attrib, rt1, rt2;                          /* standalone player */
96
97         short stereomode;                                       /* standalone player stereo settings */
98         short pad[3];
99
100         short size, maximsize;  /* size in %, max in Kb */
101         /* uit buttons: */
102         /**
103          * The desired number of pixels in the x direction
104          */
105         short xsch;
106         /**
107          * The desired number of pixels in the y direction
108          */
109         short ysch;
110         /**
111          * Adjustment factors for the aspect ratio in the x direction
112          */
113         short xasp;
114         /**
115          * Adjustment factors for the aspect ratio in the x direction
116          */
117         short yasp;
118         /**
119          * The number of part to use in the x direction
120          */
121         short xparts;
122         /**
123          * The number of part to use in the y direction
124          */
125         short yparts;
126         /* should rewrite this I think... */
127         rctf safety, border;
128         
129         short winpos, planes, imtype;
130         /** Mode bits:                                                           */
131         /* 0: Enable backbuffering for images                                    */
132         short bufflag;
133         short quality;
134         /**
135          * Flags for render settings. Use bit-masking to access the settings.
136          * 0: enable sequence output rendering                                   
137          * 1: render daemon                                                      
138          * 4: add extensions to filenames
139          */
140         short scemode;
141
142         /**
143          * Flags for render settings. Use bit-masking to access the settings.
144          * The bits have these meanings:
145          * 0: do oversampling                                                    
146          * 1: do shadows                                                         
147          * 2: do gamma correction                                                
148          * 3: ortho (not used?)                                                  
149          * 4: trace (not used?)                                                  
150          * 5: edge shading                                                       
151          * 6: field rendering                                                    
152          * 7: Disables time difference in field calculations                     
153          * 8: Gauss ? is this for sampling?                                      
154          * 9: borders                                                            
155          * 10: panorama                                                          
156          * 11: crop                                                              
157          * 12: save SGI movies with Cosmo hardware (????)                        
158          * 13: odd field first rendering                                         
159          * 14: motion blur                                                       
160          * 15: use unified renderer for this pic!                                
161          */
162         short mode;
163
164         /**
165          * What to do with the sky/background. Picks sky/premul/key
166          * blending for the background
167          */
168         short alphamode;
169         /**
170          * Toggles whether to apply a gamma correction for subpixel to
171          * pixel blending
172          */
173         short dogamma;
174         /**
175          * The number of samples to use per pixel.
176          */
177         short osa;
178         short frs_sec, edgeint;
179
180         /** For unified renderer: reduce intensity on boundaries with
181          * identical materials with this number.*/
182         short same_mat_redux, pad_3[3];
183         
184         /**
185          * The gamma for the normal rendering. Used when doing
186          * oversampling, to correctly blend subpixels to pixels.  */
187         float gamma;
188         /** post-production settings. Don't really belong here */
189         float postmul, postgamma, postadd, postigamma;
190         
191         char backbuf[160], pic[160], ftype[160];
192         
193 } RenderData;
194
195
196 typedef struct GameFraming {
197         float col[3];
198         char type, pad1, pad2, pad3;
199 } GameFraming;
200
201 #define SCE_GAMEFRAMING_BARS   0
202 #define SCE_GAMEFRAMING_EXTEND 1
203 #define SCE_GAMEFRAMING_SCALE  2
204
205 typedef struct Scene {
206         ID id;
207         struct Object *camera;
208         struct World *world;
209         
210         struct Scene *set;
211         struct Image *ima;
212         
213         ListBase base;
214         struct Base *basact;
215         struct Group *group;
216         
217         float cursor[3];
218         unsigned int lay;
219
220         /* enkele realtime vars */
221         struct FreeCamera *fcam;
222         
223         void *ed;
224         struct Radio *radio;
225         void *sumohandle;
226         
227         struct GameFraming framing;
228
229         /* migrate or replace? depends on some internal things... */
230         /* no, is on the right place (ton) */
231         struct RenderData r;
232         
233         ScriptLink scriptlink;
234 } Scene;
235
236
237 /* **************** RENDERDATA ********************* */
238
239 /* bufflag */
240 #define R_BACKBUF               1
241 #define R_BACKBUFANIM   2
242 #define R_FRONTBUF              4
243 #define R_FRONTBUFANIM  8
244
245 /* mode */
246 #define R_OSA                   0x0001  
247 #define R_SHADOW                0x0002  
248 #define R_GAMMA                 0x0004
249 #define R_ORTHO                 0x0008
250 #define R_TRACE                 0x0010
251 #define R_EDGE                  0x0020
252 #define R_FIELDS                0x0040
253 #define R_FIELDSTILL    0x0080
254 #define R_GAUSS                 0x0100
255 #define R_BORDER                0x0200
256 #define R_PANORAMA              0x0400
257 #define R_MOVIECROP             0x0800
258 #define R_COSMO                 0x1000
259 /* deze verschillen tussen IrisGL en OpenGL!!! */
260 #define R_ODDFIELD              0x2000
261 #define R_MBLUR                 0x4000
262 #define R_UNIFIED       0x8000
263
264 /* scemode */
265 #define R_DOSEQ                 0x0001
266 #define R_BG_RENDER             0x0002
267
268 #define R_EXTENSION             0x0010
269 #define R_OGL                   0x0020
270
271 /* alphamode */
272 #define R_ADDSKY                0
273 #define R_ALPHAPREMUL   1
274 #define R_ALPHAKEY              2
275
276 /* planes */
277 #define R_PLANES24              24
278 #define R_PLANES32              32
279 #define R_PLANESBW              8
280
281 /* imtype */
282 #define R_TARGA         0
283 #define R_IRIS          1
284 #define R_HAMX          2
285 #define R_FTYPE         3
286 #define R_JPEG90        4
287 #define R_MOVIE         5
288 #define R_IRIZ          7
289 #define R_RAWTGA        14
290 #define R_AVIRAW        15
291 #define R_AVIJPEG       16
292 #define R_PNG           17
293 #define R_AVICODEC      18
294
295
296 /* **************** RENDER ********************* */
297 /* mode flag is same as for renderdata */
298 /* flag */
299 #define R_ZTRA                  1
300 #define R_HALO                  2
301 #define R_SEC_FIELD             4
302 #define R_LAMPHALO              8
303 #define R_RENDERING             16
304 #define R_ANIMRENDER    32
305
306 /* vlakren->flag */
307 #define R_SMOOTH                1
308 #define R_VISIBLE               2
309 #define R_NOPUNOFLIP    8
310 #define R_CMAPCODE              16
311 #define R_FACE_SPLIT    32
312
313 /* vertren->texofs (texcoordinaten offset vanaf vertren->orco */
314 #define R_UVOFS3        1
315
316 /* **************** SCENE ********************* */
317 #define RAD_PHASE_PATCHES       1
318 #define RAD_PHASE_FACES         2
319
320 /* base->flag en ob->flag */
321 #define BA_WASSEL                       2
322 #define BA_PARSEL                       4
323 #define BA_WHERE_UPDATE         8
324 #define BA_DISP_UPDATE          16
325 #define BA_DO_IPO                       32
326 #define BA_FROMSET                      128
327 #define OB_DO_IMAT                      256
328 #define OB_FROMDUPLI            512
329 #define OB_DONE                         1024
330 #define OB_RADIO                        2048
331 #define OB_FROMGROUP            4096
332
333 /* sce->flag */
334 #define SCE_ADDSCENAME          1
335
336 /* return flag next_object function */
337 #define F_START                 0
338 #define F_SCENE                 1
339 #define F_SET                   2
340 #define F_DUPLI                 3
341
342 #ifdef __cplusplus
343 }
344 #endif
345
346 #endif
347