Home | API | File List | Examples | Download

lib3ds_chunktable.c

00001 /*
00002     Copyright (C) 1996-2008 by Jan Eric Kyprianidis <www.kyprianidis.com>
00003     All rights reserved.
00004     
00005     This program is free  software: you can redistribute it and/or modify 
00006     it under the terms of the GNU Lesser General Public License as published 
00007     by the Free Software Foundation, either version 2.1 of the License, or 
00008     (at your option) any later version.
00009 
00010     Thisprogram  is  distributed in the hope that it will be useful, 
00011     but WITHOUT ANY WARRANTY; without even the implied warranty of 
00012     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 
00013     GNU Lesser General Public License for more details.
00014     
00015     You should  have received a copy of the GNU Lesser General Public License
00016     along with  this program; If not, see <http://www.gnu.org/licenses/>. 
00017 */
00018 #include "lib3ds_impl.h"
00019 
00020 
00021 typedef struct Lib3dsChunkTable {
00022     uint32_t chunk;
00023     const char* name;
00024 } Lib3dsChunkTable;
00025 
00026 
00027 static Lib3dsChunkTable lib3ds_chunk_table[] = {
00028     {CHK_NULL_CHUNK, "NULL_CHUNK"},
00029     {CHK_M3DMAGIC, "M3DMAGIC"},
00030     {CHK_SMAGIC, "SMAGIC"},
00031     {CHK_LMAGIC, "LMAGIC"},
00032     {CHK_MLIBMAGIC, "MLIBMAGIC"},
00033     {CHK_MATMAGIC, "MATMAGIC"},
00034     {CHK_CMAGIC, "CMAGIC"},
00035     {CHK_M3D_VERSION, "M3D_VERSION"},
00036     {CHK_M3D_KFVERSION, "M3D_KFVERSION"},
00037     {CHK_COLOR_F, "COLOR_F"},
00038     {CHK_COLOR_24, "COLOR_24"},
00039     {CHK_LIN_COLOR_24, "LIN_COLOR_24"},
00040     {CHK_LIN_COLOR_F, "LIN_COLOR_F"},
00041     {CHK_INT_PERCENTAGE, "INT_PERCENTAGE"},
00042     {CHK_FLOAT_PERCENTAGE, "FLOAT_PERCENTAGE"},
00043     {CHK_MDATA, "MDATA"},
00044     {CHK_MESH_VERSION, "MESH_VERSION"},
00045     {CHK_MASTER_SCALE, "MASTER_SCALE"},
00046     {CHK_LO_SHADOW_BIAS, "LO_SHADOW_BIAS"},
00047     {CHK_HI_SHADOW_BIAS, "HI_SHADOW_BIAS"},
00048     {CHK_SHADOW_MAP_SIZE, "SHADOW_MAP_SIZE"},
00049     {CHK_SHADOW_SAMPLES, "SHADOW_SAMPLES"},
00050     {CHK_SHADOW_RANGE, "SHADOW_RANGE"},
00051     {CHK_SHADOW_FILTER, "SHADOW_FILTER"},
00052     {CHK_RAY_BIAS, "RAY_BIAS"},
00053     {CHK_O_CONSTS, "O_CONSTS"},
00054     {CHK_AMBIENT_LIGHT, "AMBIENT_LIGHT"},
00055     {CHK_BIT_MAP, "BIT_MAP"},
00056     {CHK_SOLID_BGND, "SOLID_BGND"},
00057     {CHK_V_GRADIENT, "V_GRADIENT"},
00058     {CHK_USE_BIT_MAP, "USE_BIT_MAP"},
00059     {CHK_USE_SOLID_BGND, "USE_SOLID_BGND"},
00060     {CHK_USE_V_GRADIENT, "USE_V_GRADIENT"},
00061     {CHK_FOG, "FOG"},
00062     {CHK_FOG_BGND, "FOG_BGND"},
00063     {CHK_LAYER_FOG, "LAYER_FOG"},
00064     {CHK_DISTANCE_CUE, "DISTANCE_CUE"},
00065     {CHK_DCUE_BGND, "DCUE_BGND"},
00066     {CHK_USE_FOG, "USE_FOG"},
00067     {CHK_USE_LAYER_FOG, "USE_LAYER_FOG"},
00068     {CHK_USE_DISTANCE_CUE, "USE_DISTANCE_CUE"},
00069     {CHK_MAT_ENTRY, "MAT_ENTRY"},
00070     {CHK_MAT_NAME, "MAT_NAME"},
00071     {CHK_MAT_AMBIENT, "MAT_AMBIENT"},
00072     {CHK_MAT_DIFFUSE, "MAT_DIFFUSE"},
00073     {CHK_MAT_SPECULAR, "MAT_SPECULAR"},
00074     {CHK_MAT_SHININESS, "MAT_SHININESS"},
00075     {CHK_MAT_SHIN2PCT, "MAT_SHIN2PCT"},
00076     {CHK_MAT_TRANSPARENCY, "MAT_TRANSPARENCY"},
00077     {CHK_MAT_XPFALL, "MAT_XPFALL"},
00078     {CHK_MAT_USE_XPFALL, "MAT_USE_XPFALL"},
00079     {CHK_MAT_REFBLUR, "MAT_REFBLUR"},
00080     {CHK_MAT_SHADING, "MAT_SHADING"},
00081     {CHK_MAT_USE_REFBLUR, "MAT_USE_REFBLUR"},
00082     {CHK_MAT_SELF_ILLUM, "MAT_SELF_ILLUM"},
00083     {CHK_MAT_TWO_SIDE, "MAT_TWO_SIDE"},
00084     {CHK_MAT_DECAL, "MAT_DECAL"},
00085     {CHK_MAT_ADDITIVE, "MAT_ADDITIVE"},
00086     {CHK_MAT_SELF_ILPCT, "MAT_SELF_ILPCT"},
00087     {CHK_MAT_WIRE, "MAT_WIRE"},
00088     {CHK_MAT_FACEMAP, "MAT_FACEMAP"},
00089     {CHK_MAT_PHONGSOFT, "MAT_PHONGSOFT"},
00090     {CHK_MAT_WIREABS, "MAT_WIREABS"},
00091     {CHK_MAT_WIRE_SIZE, "MAT_WIRE_SIZE"},
00092     {CHK_MAT_TEXMAP, "MAT_TEXMAP"},
00093     {CHK_MAT_SXP_TEXT_DATA, "MAT_SXP_TEXT_DATA"},
00094     {CHK_MAT_TEXMASK, "MAT_TEXMASK"},
00095     {CHK_MAT_SXP_TEXTMASK_DATA, "MAT_SXP_TEXTMASK_DATA"},
00096     {CHK_MAT_TEX2MAP, "MAT_TEX2MAP"},
00097     {CHK_MAT_SXP_TEXT2_DATA, "MAT_SXP_TEXT2_DATA"},
00098     {CHK_MAT_TEX2MASK, "MAT_TEX2MASK"},
00099     {CHK_MAT_SXP_TEXT2MASK_DATA, "MAT_SXP_TEXT2MASK_DATA"},
00100     {CHK_MAT_OPACMAP, "MAT_OPACMAP"},
00101     {CHK_MAT_SXP_OPAC_DATA, "MAT_SXP_OPAC_DATA"},
00102     {CHK_MAT_OPACMASK, "MAT_OPACMASK"},
00103     {CHK_MAT_SXP_OPACMASK_DATA, "MAT_SXP_OPACMASK_DATA"},
00104     {CHK_MAT_BUMPMAP, "MAT_BUMPMAP"},
00105     {CHK_MAT_SXP_BUMP_DATA, "MAT_SXP_BUMP_DATA"},
00106     {CHK_MAT_BUMPMASK, "MAT_BUMPMASK"},
00107     {CHK_MAT_SXP_BUMPMASK_DATA, "MAT_SXP_BUMPMASK_DATA"},
00108     {CHK_MAT_SPECMAP, "MAT_SPECMAP"},
00109     {CHK_MAT_SXP_SPEC_DATA, "MAT_SXP_SPEC_DATA"},
00110     {CHK_MAT_SPECMASK, "MAT_SPECMASK"},
00111     {CHK_MAT_SXP_SPECMASK_DATA, "MAT_SXP_SPECMASK_DATA"},
00112     {CHK_MAT_SHINMAP, "MAT_SHINMAP"},
00113     {CHK_MAT_SXP_SHIN_DATA, "MAT_SXP_SHIN_DATA"},
00114     {CHK_MAT_SHINMASK, "MAT_SHINMASK"},
00115     {CHK_MAT_SXP_SHINMASK_DATA, "MAT_SXP_SHINMASK_DATA"},
00116     {CHK_MAT_SELFIMAP, "MAT_SELFIMAP"},
00117     {CHK_MAT_SXP_SELFI_DATA, "MAT_SXP_SELFI_DATA"},
00118     {CHK_MAT_SELFIMASK, "MAT_SELFIMASK"},
00119     {CHK_MAT_SXP_SELFIMASK_DATA, "MAT_SXP_SELFIMASK_DATA"},
00120     {CHK_MAT_REFLMAP, "MAT_REFLMAP"},
00121     {CHK_MAT_REFLMASK, "MAT_REFLMASK"},
00122     {CHK_MAT_SXP_REFLMASK_DATA, "MAT_SXP_REFLMASK_DATA"},
00123     {CHK_MAT_ACUBIC, "MAT_ACUBIC"},
00124     {CHK_MAT_MAPNAME, "MAT_MAPNAME"},
00125     {CHK_MAT_MAP_TILING, "MAT_MAP_TILING"},
00126     {CHK_MAT_MAP_TEXBLUR, "MAT_MAP_TEXBLUR"},
00127     {CHK_MAT_MAP_USCALE, "MAT_MAP_USCALE"},
00128     {CHK_MAT_MAP_VSCALE, "MAT_MAP_VSCALE"},
00129     {CHK_MAT_MAP_UOFFSET, "MAT_MAP_UOFFSET"},
00130     {CHK_MAT_MAP_VOFFSET, "MAT_MAP_VOFFSET"},
00131     {CHK_MAT_MAP_ANG, "MAT_MAP_ANG"},
00132     {CHK_MAT_MAP_COL1, "MAT_MAP_COL1"},
00133     {CHK_MAT_MAP_COL2, "MAT_MAP_COL2"},
00134     {CHK_MAT_MAP_RCOL, "MAT_MAP_RCOL"},
00135     {CHK_MAT_MAP_GCOL, "MAT_MAP_GCOL"},
00136     {CHK_MAT_MAP_BCOL, "MAT_MAP_BCOL"},
00137     {CHK_NAMED_OBJECT, "NAMED_OBJECT"},
00138     {CHK_N_DIRECT_LIGHT, "N_DIRECT_LIGHT"},
00139     {CHK_DL_OFF, "DL_OFF"},
00140     {CHK_DL_OUTER_RANGE, "DL_OUTER_RANGE"},
00141     {CHK_DL_INNER_RANGE, "DL_INNER_RANGE"},
00142     {CHK_DL_MULTIPLIER, "DL_MULTIPLIER"},
00143     {CHK_DL_EXCLUDE, "DL_EXCLUDE"},
00144     {CHK_DL_ATTENUATE, "DL_ATTENUATE"},
00145     {CHK_DL_SPOTLIGHT, "DL_SPOTLIGHT"},
00146     {CHK_DL_SPOT_ROLL, "DL_SPOT_ROLL"},
00147     {CHK_DL_SHADOWED, "DL_SHADOWED"},
00148     {CHK_DL_LOCAL_SHADOW2, "DL_LOCAL_SHADOW2"},
00149     {CHK_DL_SEE_CONE, "DL_SEE_CONE"},
00150     {CHK_DL_SPOT_RECTANGULAR, "DL_SPOT_RECTANGULAR"},
00151     {CHK_DL_SPOT_ASPECT, "DL_SPOT_ASPECT"},
00152     {CHK_DL_SPOT_PROJECTOR, "DL_SPOT_PROJECTOR"},
00153     {CHK_DL_SPOT_OVERSHOOT, "DL_SPOT_OVERSHOOT"},
00154     {CHK_DL_RAY_BIAS, "DL_RAY_BIAS"},
00155     {CHK_DL_RAYSHAD, "DL_RAYSHAD"},
00156     {CHK_N_CAMERA, "N_CAMERA"},
00157     {CHK_CAM_SEE_CONE, "CAM_SEE_CONE"},
00158     {CHK_CAM_RANGES, "CAM_RANGES"},
00159     {CHK_OBJ_HIDDEN, "OBJ_HIDDEN"},
00160     {CHK_OBJ_VIS_LOFTER, "OBJ_VIS_LOFTER"},
00161     {CHK_OBJ_DOESNT_CAST, "OBJ_DOESNT_CAST"},
00162     {CHK_OBJ_DONT_RCVSHADOW, "OBJ_DONT_RCVSHADOW"},
00163     {CHK_OBJ_MATTE, "OBJ_MATTE"},
00164     {CHK_OBJ_FAST, "OBJ_FAST"},
00165     {CHK_OBJ_PROCEDURAL, "OBJ_PROCEDURAL"},
00166     {CHK_OBJ_FROZEN, "OBJ_FROZEN"},
00167     {CHK_N_TRI_OBJECT, "N_TRI_OBJECT"},
00168     {CHK_POINT_ARRAY, "POINT_ARRAY"},
00169     {CHK_POINT_FLAG_ARRAY, "POINT_FLAG_ARRAY"},
00170     {CHK_FACE_ARRAY, "FACE_ARRAY"},
00171     {CHK_MSH_MAT_GROUP, "MSH_MAT_GROUP"},
00172     {CHK_SMOOTH_GROUP, "SMOOTH_GROUP"},
00173     {CHK_MSH_BOXMAP, "MSH_BOXMAP"},
00174     {CHK_TEX_VERTS, "TEX_VERTS"},
00175     {CHK_MESH_MATRIX, "MESH_MATRIX"},
00176     {CHK_MESH_COLOR, "MESH_COLOR"},
00177     {CHK_MESH_TEXTURE_INFO, "MESH_TEXTURE_INFO"},
00178     {CHK_KFDATA, "KFDATA"},
00179     {CHK_KFHDR, "KFHDR"},
00180     {CHK_KFSEG, "KFSEG"},
00181     {CHK_KFCURTIME, "KFCURTIME"},
00182     {CHK_AMBIENT_NODE_TAG, "AMBIENT_NODE_TAG"},
00183     {CHK_OBJECT_NODE_TAG, "OBJECT_NODE_TAG"},
00184     {CHK_CAMERA_NODE_TAG, "CAMERA_NODE_TAG"},
00185     {CHK_TARGET_NODE_TAG, "TARGET_NODE_TAG"},
00186     {CHK_LIGHT_NODE_TAG, "LIGHT_NODE_TAG"},
00187     {CHK_L_TARGET_NODE_TAG, "L_TARGET_NODE_TAG"},
00188     {CHK_SPOTLIGHT_NODE_TAG, "SPOTLIGHT_NODE_TAG"},
00189     {CHK_NODE_ID, "NODE_ID"},
00190     {CHK_NODE_HDR, "NODE_HDR"},
00191     {CHK_PIVOT, "PIVOT"},
00192     {CHK_INSTANCE_NAME, "INSTANCE_NAME"},
00193     {CHK_MORPH_SMOOTH, "MORPH_SMOOTH"},
00194     {CHK_BOUNDBOX, "BOUNDBOX"},
00195     {CHK_POS_TRACK_TAG, "POS_TRACK_TAG"},
00196     {CHK_COL_TRACK_TAG, "COL_TRACK_TAG"},
00197     {CHK_ROT_TRACK_TAG, "ROT_TRACK_TAG"},
00198     {CHK_SCL_TRACK_TAG, "SCL_TRACK_TAG"},
00199     {CHK_MORPH_TRACK_TAG, "MORPH_TRACK_TAG"},
00200     {CHK_FOV_TRACK_TAG, "FOV_TRACK_TAG"},
00201     {CHK_ROLL_TRACK_TAG, "ROLL_TRACK_TAG"},
00202     {CHK_HOT_TRACK_TAG, "HOT_TRACK_TAG"},
00203     {CHK_FALL_TRACK_TAG, "FALL_TRACK_TAG"},
00204     {CHK_HIDE_TRACK_TAG, "HIDE_TRACK_TAG"},
00205     {CHK_POLY_2D, "POLY_2D"},
00206     {CHK_SHAPE_OK, "SHAPE_OK"},
00207     {CHK_SHAPE_NOT_OK, "SHAPE_NOT_OK"},
00208     {CHK_SHAPE_HOOK, "SHAPE_HOOK"},
00209     {CHK_PATH_3D, "PATH_3D"},
00210     {CHK_PATH_MATRIX, "PATH_MATRIX"},
00211     {CHK_SHAPE_2D, "SHAPE_2D"},
00212     {CHK_M_SCALE, "M_SCALE"},
00213     {CHK_M_TWIST, "M_TWIST"},
00214     {CHK_M_TEETER, "M_TEETER"},
00215     {CHK_M_FIT, "M_FIT"},
00216     {CHK_M_BEVEL, "M_BEVEL"},
00217     {CHK_XZ_CURVE, "XZ_CURVE"},
00218     {CHK_YZ_CURVE, "YZ_CURVE"},
00219     {CHK_INTERPCT, "INTERPCT"},
00220     {CHK_DEFORM_LIMIT, "DEFORM_LIMIT"},
00221     {CHK_USE_CONTOUR, "USE_CONTOUR"},
00222     {CHK_USE_TWEEN, "USE_TWEEN"},
00223     {CHK_USE_SCALE, "USE_SCALE"},
00224     {CHK_USE_TWIST, "USE_TWIST"},
00225     {CHK_USE_TEETER, "USE_TEETER"},
00226     {CHK_USE_FIT, "USE_FIT"},
00227     {CHK_USE_BEVEL, "USE_BEVEL"},
00228     {CHK_DEFAULT_VIEW, "DEFAULT_VIEW"},
00229     {CHK_VIEW_TOP, "VIEW_TOP"},
00230     {CHK_VIEW_BOTTOM, "VIEW_BOTTOM"},
00231     {CHK_VIEW_LEFT, "VIEW_LEFT"},
00232     {CHK_VIEW_RIGHT, "VIEW_RIGHT"},
00233     {CHK_VIEW_FRONT, "VIEW_FRONT"},
00234     {CHK_VIEW_BACK, "VIEW_BACK"},
00235     {CHK_VIEW_USER, "VIEW_USER"},
00236     {CHK_VIEW_CAMERA, "VIEW_CAMERA"},
00237     {CHK_VIEW_WINDOW, "VIEW_WINDOW"},
00238     {CHK_VIEWPORT_LAYOUT_OLD, "VIEWPORT_LAYOUT_OLD"},
00239     {CHK_VIEWPORT_DATA_OLD, "VIEWPORT_DATA_OLD"},
00240     {CHK_VIEWPORT_LAYOUT, "VIEWPORT_LAYOUT"},
00241     {CHK_VIEWPORT_DATA, "VIEWPORT_DATA"},
00242     {CHK_VIEWPORT_DATA_3, "VIEWPORT_DATA_3"},
00243     {CHK_VIEWPORT_SIZE, "VIEWPORT_SIZE"},
00244     {CHK_NETWORK_VIEW, "NETWORK_VIEW"},
00245     {0, 0}
00246 };
00247 
00248 
00249 const char*
00250 lib3ds_chunk_name(uint16_t chunk) {
00251     Lib3dsChunkTable *p;
00252 
00253     for (p = lib3ds_chunk_table; p->name != 0; ++p) {
00254         if (p->chunk == chunk) {
00255             return(p->name);
00256         }
00257     }
00258     return("***UNKNOWN***");
00259 }