root/OpenSceneGraph/trunk/src/osgPlugins/3ds/chunk.h @ 10076

Revision 10076, 11.1 kB (checked in by robert, 5 years ago)

From Neil Hughes, converted across to use istream for reading data from file to enable reading .3ds files over http (use OSG's libcurl plugin).

From Robert Osfield, ammendments of the above to better support reading of files from local directories.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
RevLine 
[8]1/* -*- c -*- */
2#ifndef INCLUDED_LIB3DS_CHUNK_H
3#define INCLUDED_LIB3DS_CHUNK_H
4/*
5 * The 3D Studio File Format Library
6 * Copyright (C) 1996-2001 by J.E. Hoffmann <je-h@gmx.net>
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$
24 */
25
26#ifndef INCLUDED_LIB3DS_TYPES_H
[1563]27#include "types.h"
[8]28#endif
29
[10076]30#include <iostream>
31using namespace std;
32
[8]33#ifdef __cplusplus
34extern "C" {
35#endif
36
[10076]37
[8]38typedef enum _Lib3dsChunks {
39  LIB3DS_NULL_CHUNK             =0x0000,
40  LIB3DS_M3DMAGIC               =0x4D4D,    /*3DS file*/
41  LIB3DS_SMAGIC                 =0x2D2D,   
42  LIB3DS_LMAGIC                 =0x2D3D,   
43  LIB3DS_MLIBMAGIC              =0x3DAA,    /*MLI file*/
44  LIB3DS_MATMAGIC               =0x3DFF,   
45  LIB3DS_CMAGIC                 =0xC23D,    /*PRJ file*/
46  LIB3DS_M3D_VERSION            =0x0002,
47  LIB3DS_M3D_KFVERSION          =0x0005,
48
49  LIB3DS_COLOR_F                =0x0010,
50  LIB3DS_COLOR_24               =0x0011,
51  LIB3DS_LIN_COLOR_24           =0x0012,
52  LIB3DS_LIN_COLOR_F            =0x0013,
53  LIB3DS_INT_PERCENTAGE         =0x0030,
54  LIB3DS_FLOAT_PERCENTAGE       =0x0031,
55
56  LIB3DS_MDATA                  =0x3D3D,
57  LIB3DS_MESH_VERSION           =0x3D3E,
58  LIB3DS_MASTER_SCALE           =0x0100,
59  LIB3DS_LO_SHADOW_BIAS         =0x1400,
60  LIB3DS_HI_SHADOW_BIAS         =0x1410,
61  LIB3DS_SHADOW_MAP_SIZE        =0x1420,
62  LIB3DS_SHADOW_SAMPLES         =0x1430,
63  LIB3DS_SHADOW_RANGE           =0x1440,
64  LIB3DS_SHADOW_FILTER          =0x1450,
65  LIB3DS_RAY_BIAS               =0x1460,
66  LIB3DS_O_CONSTS               =0x1500,
67  LIB3DS_AMBIENT_LIGHT          =0x2100,
68  LIB3DS_BIT_MAP                =0x1100,
69  LIB3DS_SOLID_BGND             =0x1200,
70  LIB3DS_V_GRADIENT             =0x1300,
71  LIB3DS_USE_BIT_MAP            =0x1101,
72  LIB3DS_USE_SOLID_BGND         =0x1201,
73  LIB3DS_USE_V_GRADIENT         =0x1301,
74  LIB3DS_FOG                    =0x2200,
75  LIB3DS_FOG_BGND               =0x2210,
76  LIB3DS_LAYER_FOG              =0x2302,
77  LIB3DS_DISTANCE_CUE           =0x2300,
78  LIB3DS_DCUE_BGND              =0x2310,
79  LIB3DS_USE_FOG                =0x2201,
80  LIB3DS_USE_LAYER_FOG          =0x2303,
81  LIB3DS_USE_DISTANCE_CUE       =0x2301,
82
83  LIB3DS_MAT_ENTRY              =0xAFFF,
84  LIB3DS_MAT_NAME               =0xA000,
85  LIB3DS_MAT_AMBIENT            =0xA010,
86  LIB3DS_MAT_DIFFUSE            =0xA020,
87  LIB3DS_MAT_SPECULAR           =0xA030,
88  LIB3DS_MAT_SHININESS          =0xA040,
89  LIB3DS_MAT_SHIN2PCT           =0xA041,
90  LIB3DS_MAT_TRANSPARENCY       =0xA050,
91  LIB3DS_MAT_XPFALL             =0xA052,
92  LIB3DS_MAT_USE_XPFALL         =0xA240,
93  LIB3DS_MAT_REFBLUR            =0xA053,
94  LIB3DS_MAT_SHADING            =0xA100,
95  LIB3DS_MAT_USE_REFBLUR        =0xA250,
96  LIB3DS_MAT_SELF_ILLUM         =0xA080,
97  LIB3DS_MAT_TWO_SIDE           =0xA081,
98  LIB3DS_MAT_DECAL              =0xA082,
99  LIB3DS_MAT_ADDITIVE           =0xA083,
100  LIB3DS_MAT_WIRE               =0xA085,
101  LIB3DS_MAT_FACEMAP            =0xA088,
102  LIB3DS_MAT_PHONGSOFT          =0xA08C,
103  LIB3DS_MAT_WIREABS            =0xA08E,
104  LIB3DS_MAT_WIRE_SIZE          =0xA087,
105  LIB3DS_MAT_TEXMAP             =0xA200,
106  LIB3DS_MAT_SXP_TEXT_DATA      =0xA320,
107  LIB3DS_MAT_TEXMASK            =0xA33E,
108  LIB3DS_MAT_SXP_TEXTMASK_DATA  =0xA32A,
109  LIB3DS_MAT_TEX2MAP            =0xA33A,
110  LIB3DS_MAT_SXP_TEXT2_DATA     =0xA321,
111  LIB3DS_MAT_TEX2MASK           =0xA340,
112  LIB3DS_MAT_SXP_TEXT2MASK_DATA =0xA32C,
113  LIB3DS_MAT_OPACMAP            =0xA210,
114  LIB3DS_MAT_SXP_OPAC_DATA      =0xA322,
115  LIB3DS_MAT_OPACMASK           =0xA342,
116  LIB3DS_MAT_SXP_OPACMASK_DATA  =0xA32E,
117  LIB3DS_MAT_BUMPMAP            =0xA230,
118  LIB3DS_MAT_SXP_BUMP_DATA      =0xA324,
119  LIB3DS_MAT_BUMPMASK           =0xA344,
120  LIB3DS_MAT_SXP_BUMPMASK_DATA  =0xA330,
121  LIB3DS_MAT_SPECMAP            =0xA204,
122  LIB3DS_MAT_SXP_SPEC_DATA      =0xA325,
123  LIB3DS_MAT_SPECMASK           =0xA348,
124  LIB3DS_MAT_SXP_SPECMASK_DATA  =0xA332,
125  LIB3DS_MAT_SHINMAP            =0xA33C,
126  LIB3DS_MAT_SXP_SHIN_DATA      =0xA326,
127  LIB3DS_MAT_SHINMASK           =0xA346,
128  LIB3DS_MAT_SXP_SHINMASK_DATA  =0xA334,
129  LIB3DS_MAT_SELFIMAP           =0xA33D,
130  LIB3DS_MAT_SXP_SELFI_DATA     =0xA328,
131  LIB3DS_MAT_SELFIMASK          =0xA34A,
132  LIB3DS_MAT_SXP_SELFIMASK_DATA =0xA336,
133  LIB3DS_MAT_REFLMAP            =0xA220,
134  LIB3DS_MAT_REFLMASK           =0xA34C,
135  LIB3DS_MAT_SXP_REFLMASK_DATA  =0xA338,
136  LIB3DS_MAT_ACUBIC             =0xA310,
137  LIB3DS_MAT_MAPNAME            =0xA300,
138  LIB3DS_MAT_MAP_TILING         =0xA351,
139  LIB3DS_MAT_MAP_TEXBLUR        =0xA353,
140  LIB3DS_MAT_MAP_USCALE         =0xA354,
141  LIB3DS_MAT_MAP_VSCALE         =0xA356,
142  LIB3DS_MAT_MAP_UOFFSET        =0xA358,
143  LIB3DS_MAT_MAP_VOFFSET        =0xA35A,
144  LIB3DS_MAT_MAP_ANG            =0xA35C,
145  LIB3DS_MAT_MAP_COL1           =0xA360,
146  LIB3DS_MAT_MAP_COL2           =0xA362,
147  LIB3DS_MAT_MAP_RCOL           =0xA364,
148  LIB3DS_MAT_MAP_GCOL           =0xA366,
149  LIB3DS_MAT_MAP_BCOL           =0xA368,
150
151  LIB3DS_NAMED_OBJECT           =0x4000,
152  LIB3DS_N_DIRECT_LIGHT         =0x4600,
153  LIB3DS_DL_OFF                 =0x4620,
154  LIB3DS_DL_OUTER_RANGE         =0x465A,
155  LIB3DS_DL_INNER_RANGE         =0x4659,
156  LIB3DS_DL_MULTIPLIER          =0x465B,
157  LIB3DS_DL_EXCLUDE             =0x4654,
158  LIB3DS_DL_ATTENUATE           =0x4625,
159  LIB3DS_DL_SPOTLIGHT           =0x4610,
160  LIB3DS_DL_SPOT_ROLL           =0x4656,
161  LIB3DS_DL_SHADOWED            =0x4630,
162  LIB3DS_DL_LOCAL_SHADOW2       =0x4641,
163  LIB3DS_DL_SEE_CONE            =0x4650,
164  LIB3DS_DL_SPOT_RECTANGULAR    =0x4651,
165  LIB3DS_DL_SPOT_ASPECT         =0x4657,
166  LIB3DS_DL_SPOT_PROJECTOR      =0x4653,
167  LIB3DS_DL_SPOT_OVERSHOOT      =0x4652,
168  LIB3DS_DL_RAY_BIAS            =0x4658,
169  LIB3DS_DL_RAYSHAD             =0x4627,
170  LIB3DS_N_CAMERA               =0x4700,
171  LIB3DS_CAM_SEE_CONE           =0x4710,
172  LIB3DS_CAM_RANGES             =0x4720,
173  LIB3DS_OBJ_HIDDEN             =0x4010,
174  LIB3DS_OBJ_VIS_LOFTER         =0x4011,
175  LIB3DS_OBJ_DOESNT_CAST        =0x4012,
176  LIB3DS_OBJ_DONT_RECVSHADOW    =0x4017,
177  LIB3DS_OBJ_MATTE              =0x4013,
178  LIB3DS_OBJ_FAST               =0x4014,
179  LIB3DS_OBJ_PROCEDURAL         =0x4015,
180  LIB3DS_OBJ_FROZEN             =0x4016,
181  LIB3DS_N_TRI_OBJECT           =0x4100,
182  LIB3DS_POINT_ARRAY            =0x4110,
183  LIB3DS_POINT_FLAG_ARRAY       =0x4111,
184  LIB3DS_FACE_ARRAY             =0x4120,
185  LIB3DS_MSH_MAT_GROUP          =0x4130,
186  LIB3DS_SMOOTH_GROUP           =0x4150,
187  LIB3DS_MSH_BOXMAP             =0x4190,
188  LIB3DS_TEX_VERTS              =0x4140,
189  LIB3DS_MESH_MATRIX            =0x4160,
190  LIB3DS_MESH_COLOR             =0x4165,
191  LIB3DS_MESH_TEXTURE_INFO      =0x4170,
192
193  LIB3DS_KFDATA                 =0xB000,
194  LIB3DS_KFHDR                  =0xB00A,
195  LIB3DS_KFSEG                  =0xB008,
196  LIB3DS_KFCURTIME              =0xB009,
197  LIB3DS_AMBIENT_NODE_TAG       =0xB001,
198  LIB3DS_OBJECT_NODE_TAG        =0xB002,
199  LIB3DS_CAMERA_NODE_TAG        =0xB003,
200  LIB3DS_TARGET_NODE_TAG        =0xB004,
201  LIB3DS_LIGHT_NODE_TAG         =0xB005,
202  LIB3DS_L_TARGET_NODE_TAG      =0xB006,
203  LIB3DS_SPOTLIGHT_NODE_TAG     =0xB007,
204  LIB3DS_NODE_ID                =0xB030,
205  LIB3DS_NODE_HDR               =0xB010,
206  LIB3DS_PIVOT                  =0xB013,
207  LIB3DS_INSTANCE_NAME          =0xB011,
208  LIB3DS_MORPH_SMOOTH           =0xB015,
209  LIB3DS_BOUNDBOX               =0xB014,
210  LIB3DS_POS_TRACK_TAG          =0xB020,
211  LIB3DS_COL_TRACK_TAG          =0xB025,
212  LIB3DS_ROT_TRACK_TAG          =0xB021,
213  LIB3DS_SCL_TRACK_TAG          =0xB022,
214  LIB3DS_MORPH_TRACK_TAG        =0xB026,
215  LIB3DS_FOV_TRACK_TAG          =0xB023,
216  LIB3DS_ROLL_TRACK_TAG         =0xB024,
217  LIB3DS_HOT_TRACK_TAG          =0xB027,
218  LIB3DS_FALL_TRACK_TAG         =0xB028,
219  LIB3DS_HIDE_TRACK_TAG         =0xB029,
220
221  LIB3DS_POLY_2D                = 0x5000,
222  LIB3DS_SHAPE_OK               = 0x5010,
223  LIB3DS_SHAPE_NOT_OK           = 0x5011,
224  LIB3DS_SHAPE_HOOK             = 0x5020,
225  LIB3DS_PATH_3D                = 0x6000,
226  LIB3DS_PATH_MATRIX            = 0x6005,
227  LIB3DS_SHAPE_2D               = 0x6010,
228  LIB3DS_M_SCALE                = 0x6020,
229  LIB3DS_M_TWIST                = 0x6030,
230  LIB3DS_M_TEETER               = 0x6040,
231  LIB3DS_M_FIT                  = 0x6050,
232  LIB3DS_M_BEVEL                = 0x6060,
233  LIB3DS_XZ_CURVE               = 0x6070,
234  LIB3DS_YZ_CURVE               = 0x6080,
235  LIB3DS_INTERPCT               = 0x6090,
236  LIB3DS_DEFORM_LIMIT           = 0x60A0,
237
238  LIB3DS_USE_CONTOUR            = 0x6100,
239  LIB3DS_USE_TWEEN              = 0x6110,
240  LIB3DS_USE_SCALE              = 0x6120,
241  LIB3DS_USE_TWIST              = 0x6130,
242  LIB3DS_USE_TEETER             = 0x6140,
243  LIB3DS_USE_FIT                = 0x6150,
244  LIB3DS_USE_BEVEL              = 0x6160,
245
246  LIB3DS_DEFAULT_VIEW           = 0x3000,
247  LIB3DS_VIEW_TOP               = 0x3010,
248  LIB3DS_VIEW_BOTTOM            = 0x3020,
249  LIB3DS_VIEW_LEFT              = 0x3030,
250  LIB3DS_VIEW_RIGHT             = 0x3040,
251  LIB3DS_VIEW_FRONT             = 0x3050,
252  LIB3DS_VIEW_BACK              = 0x3060,
253  LIB3DS_VIEW_USER              = 0x3070,
254  LIB3DS_VIEW_CAMERA            = 0x3080,
255  LIB3DS_VIEW_WINDOW            = 0x3090,
256
257  LIB3DS_VIEWPORT_LAYOUT_OLD    = 0x7000,
258  LIB3DS_VIEWPORT_DATA_OLD      = 0x7010,
259  LIB3DS_VIEWPORT_LAYOUT        = 0x7001,
260  LIB3DS_VIEWPORT_DATA          = 0x7011,
261  LIB3DS_VIEWPORT_DATA_3        = 0x7012,
262  LIB3DS_VIEWPORT_SIZE          = 0x7020,
263  LIB3DS_NETWORK_VIEW           = 0x7030
264} Lib3dsChunks;
265
266typedef struct _Lib3dsChunk {
267    Lib3dsWord chunk;
268    Lib3dsDword size;
269    Lib3dsDword end;
270    Lib3dsDword cur;
271} Lib3dsChunk;
272
273extern LIB3DSAPI void lib3ds_chunk_enable_dump(Lib3dsBool enable, Lib3dsBool unknown);
[10076]274extern LIB3DSAPI Lib3dsBool lib3ds_chunk_read(Lib3dsChunk *c, iostream *strm);
275extern LIB3DSAPI Lib3dsBool lib3ds_chunk_read_start(Lib3dsChunk *c, Lib3dsWord chunk, iostream *strm);
276extern LIB3DSAPI void lib3ds_chunk_read_tell(Lib3dsChunk *c, iostream *strm);
277extern LIB3DSAPI Lib3dsWord lib3ds_chunk_read_next(Lib3dsChunk *c, iostream *strm);
278extern LIB3DSAPI void lib3ds_chunk_read_reset(Lib3dsChunk *c, iostream *strm);
279extern LIB3DSAPI void lib3ds_chunk_read_end(Lib3dsChunk *c, iostream *strm);
280extern LIB3DSAPI Lib3dsBool lib3ds_chunk_write(Lib3dsChunk *c, iostream *strm);
281extern LIB3DSAPI Lib3dsBool lib3ds_chunk_write_start(Lib3dsChunk *c, iostream *strm);
282extern LIB3DSAPI Lib3dsBool lib3ds_chunk_write_end(Lib3dsChunk *c, iostream *strm);
[8]283extern LIB3DSAPI const char* lib3ds_chunk_name(Lib3dsWord chunk);
284extern LIB3DSAPI void lib3ds_chunk_unknown(Lib3dsWord chunk);
[151]285extern LIB3DSAPI void lib3ds_chunk_dump_info(const char *format, ...);
[8]286
287#ifdef __cplusplus
[6461]288}
[8]289#endif
290#endif
291
Note: See TracBrowser for help on using the browser.