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