1 /* -*- c -*- */ 2 #ifndef INCLUDED_LIB3DS_ATMOSPHERE_H 3 #define INCLUDED_LIB3DS_ATMOSPHERE_H 4 /* 5 * The 3D Studio File Format Library 6 * Copyright (C) 1996-2007 by Jan Eric Kyprianidis <www.kyprianidis.com> 7 * All rights reserved. 8 * 9 * This program is free software; you can redistribute it and/or modify it 10 * under the terms of the GNU Lesser General Public License as published by 11 * the Free Software Foundation; either version 2.1 of the License, or (at 12 * your option) any later version. 13 * 14 * This program is distributed in the hope that it will be useful, but 15 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 16 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public 17 * License for more details. 18 * 19 * You should have received a copy of the GNU Lesser General Public License 20 * along with this program; if not, write to the Free Software Foundation, 21 * Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 22 * 23 * $Id: atmosphere.h,v 1.8 2007/06/20 17:04:08 jeh Exp $ 24 */ 25 26 #ifndef INCLUDED_LIB3DS_TYPES_H 27 #include <lib3ds/types.h> 28 #endif 29 30 #ifdef __cplusplus 31 extern "C" { 32 #endif 33 34 /** 35 * Fog atmosphere settings 36 * \ingroup atmosphere 37 */ 38 typedef struct Lib3dsFog { 39 Lib3dsBool use; 40 Lib3dsRgb col; 41 Lib3dsBool fog_background; 42 Lib3dsFloat near_plane; 43 Lib3dsFloat near_density; 44 Lib3dsFloat far_plane; 45 Lib3dsFloat far_density; 46 } Lib3dsFog; 47 48 /** 49 * Layer fog atmosphere flags 50 * \ingroup atmosphere 51 */ 52 typedef enum Lib3dsLayerFogFlags { 53 LIB3DS_BOTTOM_FALL_OFF =0x00000001, 54 LIB3DS_TOP_FALL_OFF =0x00000002, 55 LIB3DS_FOG_BACKGROUND =0x00100000 56 } Lib3dsLayerFogFlags; 57 58 /** 59 * Layer fog atmosphere settings 60 * \ingroup atmosphere 61 */ 62 typedef struct Lib3dsLayerFog { 63 Lib3dsBool use; 64 Lib3dsDword flags; 65 Lib3dsRgb col; 66 Lib3dsFloat near_y; 67 Lib3dsFloat far_y; 68 Lib3dsFloat density; 69 } Lib3dsLayerFog; 70 71 /** 72 * Distance cue atmosphere settings 73 * \ingroup atmosphere 74 */ 75 typedef struct Lib3dsDistanceCue { 76 Lib3dsBool use; 77 Lib3dsBool cue_background; 78 Lib3dsFloat near_plane; 79 Lib3dsFloat near_dimming; 80 Lib3dsFloat far_plane; 81 Lib3dsFloat far_dimming; 82 } Lib3dsDistanceCue; 83 84 /** 85 * Atmosphere settings 86 * \ingroup atmosphere 87 */ 88 struct Lib3dsAtmosphere { 89 Lib3dsFog fog; 90 Lib3dsLayerFog layer_fog; 91 Lib3dsDistanceCue dist_cue; 92 }; 93 94 LIB3DSEXTERN LIB3DSAPI Lib3dsBool lib3ds_atmosphere_read(Lib3dsAtmosphere *atmosphere, Lib3dsIo *io); 95 LIB3DSEXTERN LIB3DSAPI Lib3dsBool lib3ds_atmosphere_write(Lib3dsAtmosphere *atmosphere, Lib3dsIo *io); 96 97 #ifdef __cplusplus 98 } 99 #endif 100 #endif 101