]> de.git.xonotic.org Git - xonotic/netradiant.git/blobdiff - libs/picomodel.h
tools: reduce diff noise
[xonotic/netradiant.git] / libs / picomodel.h
index a771e9438d3fae7cba27e58dffb831ffaeee76d7..370afef92266fb994ab5b5a14aeb631ca9d30488 100644 (file)
@@ -1,36 +1,36 @@
 /* -----------------------------------------------------------------------------
 
-PicoModel Library 
+   PicoModel Library
 
-Copyright (c) 2002, Randy Reddig & seaw0lf
-All rights reserved.
+   Copyright (c) 2002, Randy Reddig & seaw0lf
+   All rights reserved.
 
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
+   Redistribution and use in source and binary forms, with or without modification,
+   are permitted provided that the following conditions are met:
 
-Redistributions of source code must retain the above copyright notice, this list
-of conditions and the following disclaimer.
+   Redistributions of source code must retain the above copyright notice, this list
+   of conditions and the following disclaimer.
 
-Redistributions in binary form must reproduce the above copyright notice, this
-list of conditions and the following disclaimer in the documentation and/or
-other materials provided with the distribution.
+   Redistributions in binary form must reproduce the above copyright notice, this
+   list of conditions and the following disclaimer in the documentation and/or
+   other materials provided with the distribution.
 
-Neither the names of the copyright holders nor the names of its contributors may
-be used to endorse or promote products derived from this software without
-specific prior written permission. 
+   Neither the names of the copyright holders nor the names of its contributors may
+   be used to endorse or promote products derived from this software without
+   specific prior written permission.
 
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+   ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+   WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+   DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+   ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+   (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+   LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+   ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+   SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
------------------------------------------------------------------------------ */
+   ----------------------------------------------------------------------------- */
 
 
 
@@ -48,28 +48,28 @@ extern "C"
 
 
 /* version */
-#define PICOMODEL_VERSION              "0.8.20"
+#define PICOMODEL_VERSION       "0.8.20"
 
 
 /* constants */
-#define PICO_GROW_SHADERS              16
-#define PICO_GROW_SURFACES             16
-#define PICO_GROW_VERTEXES             1024
-#define PICO_GROW_INDEXES              1024
-#define PICO_GROW_ARRAYS               8
-#define PICO_GROW_FACES                        256
-#define PICO_MAX_SPECIAL               8
-#define PICO_MAX_DEFAULT_EXTS  4               /* max default extensions per module */
+#define PICO_GROW_SHADERS       16
+#define PICO_GROW_SURFACES      16
+#define PICO_GROW_VERTEXES      1024
+#define PICO_GROW_INDEXES       1024
+#define PICO_GROW_ARRAYS        8
+#define PICO_GROW_FACES         256
+#define PICO_MAX_SPECIAL        8
+#define PICO_MAX_DEFAULT_EXTS   4       /* max default extensions per module */
 
 
 /* types */
-typedef unsigned char                  picoByte_t;
-typedef float                                  picoVec_t;
-typedef float                                  picoVec2_t[ 2 ];
-typedef float                                  picoVec3_t[ 3 ];
-typedef float                                  picoVec4_t[ 4 ];
-typedef picoByte_t                     picoColor_t[ 4 ];
-typedef int                                            picoIndex_t;
+typedef unsigned char picoByte_t;
+typedef float picoVec_t;
+typedef float picoVec2_t[ 2 ];
+typedef float picoVec3_t[ 3 ];
+typedef float picoVec4_t[ 4 ];
+typedef picoByte_t picoColor_t[ 4 ];
+typedef int picoIndex_t;
 
 typedef enum
 {
@@ -89,73 +89,73 @@ typedef enum
 }
 picoPrintLevel_t;
 
-typedef struct picoSurface_s   picoSurface_t;
-typedef struct picoShader_s            picoShader_t;
-typedef struct picoModel_s             picoModel_t;
-typedef struct picoModule_s            picoModule_t;
+typedef struct picoSurface_s picoSurface_t;
+typedef struct picoShader_s picoShader_t;
+typedef struct picoModel_s picoModel_t;
+typedef struct picoModule_s picoModule_t;
 
 struct picoSurface_s
 {
-       void                                            *data;
-       
-       picoModel_t                                     *model;         /* owner model */
-       
-       picoSurfaceType_t                       type;
-       char                                            *name;          /* sea: surface name */
-       picoShader_t                            *shader;        /* ydnar: changed to ptr */
-       
-       int                                                     numVertexes, maxVertexes;
-       picoVec3_t                                      *xyz;
-       picoVec3_t                                      *normal;
-       picoIndex_t                                     *smoothingGroup;
-       
-       int                                                     numSTArrays, maxSTArrays;
-       picoVec2_t                                      **st;
-       
-       int                                                     numColorArrays, maxColorArrays;
-       picoColor_t                                     **color;
-       
-       int                                                     numIndexes, maxIndexes;
-       picoIndex_t                                     *index;
-
-       int                                                     numFaceNormals, maxFaceNormals;
-       picoVec3_t                                      *faceNormal;
-
-       int                                                     special[ PICO_MAX_SPECIAL ];
+       void                        *data;
+
+       picoModel_t                 *model;     /* owner model */
+
+       picoSurfaceType_t type;
+       char                        *name;      /* sea: surface name */
+       picoShader_t                *shader;    /* ydnar: changed to ptr */
+
+       int numVertexes, maxVertexes;
+       picoVec3_t                  *xyz;
+       picoVec3_t                  *normal;
+       picoIndex_t                 *smoothingGroup;
+
+       int numSTArrays, maxSTArrays;
+       picoVec2_t                  **st;
+
+       int numColorArrays, maxColorArrays;
+       picoColor_t                 **color;
+
+       int numIndexes, maxIndexes;
+       picoIndex_t                 *index;
+
+       int numFaceNormals, maxFaceNormals;
+       picoVec3_t                  *faceNormal;
+
+       int special[ PICO_MAX_SPECIAL ];
 };
 
 
 /* seaw0lf */
 struct picoShader_s
 {
-       picoModel_t                                     *model;                 /* owner model */
-
-       char                                            *name;                  /* shader name */
-       char                                            *mapName;               /* shader file name (name of diffuse texturemap) */
-       picoColor_t                                     ambientColor;   /* ambient color of mesh (rgba) */
-       picoColor_t                                     diffuseColor;   /* diffuse color of mesh (rgba) */
-       picoColor_t                                     specularColor;  /* specular color of mesh (rgba) */
-       float                                           transparency;   /* transparency (0..1; 1 = 100% transparent) */
-       float                                           shininess;              /* shininess (0..128; 128 = 100% shiny) */
+       picoModel_t                 *model;         /* owner model */
+
+       char                        *name;          /* shader name */
+       char                        *mapName;       /* shader file name (name of diffuse texturemap) */
+       picoColor_t ambientColor;                   /* ambient color of mesh (rgba) */
+       picoColor_t diffuseColor;                   /* diffuse color of mesh (rgba) */
+       picoColor_t specularColor;                  /* specular color of mesh (rgba) */
+       float transparency;                         /* transparency (0..1; 1 = 100% transparent) */
+       float shininess;                            /* shininess (0..128; 128 = 100% shiny) */
 };
 
 struct picoModel_s
 {
-       void                                            *data;
-       char                                            *name;                  /* model name */
-       char                                            *fileName;              /* sea: model file name */
-       int                                                     frameNum;               /* sea: renamed to frameNum */
-       int                                                     numFrames;              /* sea: number of frames */
-       picoVec3_t                                      mins;
-       picoVec3_t                                      maxs;
-
-       int                                                     numShaders, maxShaders;
-       picoShader_t                            **shader;
-       
-       int                                                     numSurfaces, maxSurfaces;
-       picoSurface_t                           **surface;
-       
-       const picoModule_t                      *module;                /* sea */
+       void                        *data;
+       char                        *name;          /* model name */
+       char                        *fileName;      /* sea: model file name */
+       int frameNum;                               /* sea: renamed to frameNum */
+       int numFrames;                              /* sea: number of frames */
+       picoVec3_t mins;
+       picoVec3_t maxs;
+
+       int numShaders, maxShaders;
+       picoShader_t                **shader;
+
+       int numSurfaces, maxSurfaces;
+       picoSurface_t               **surface;
+
+       const picoModule_t          *module;        /* sea */
 };
 
 
@@ -165,12 +165,12 @@ struct picoModel_s
 /* that there was an error. */
 enum
 {
-       PICO_PMV_OK,                    /* file valid */
-       PICO_PMV_ERROR,                 /* file not valid */
-       PICO_PMV_ERROR_IDENT,   /* unknown file magic (aka ident) */
-       PICO_PMV_ERROR_VERSION, /* unsupported file version */
-       PICO_PMV_ERROR_SIZE,    /* file size error */
-       PICO_PMV_ERROR_MEMORY,  /* out of memory error */
+       PICO_PMV_OK,            /* file valid */
+       PICO_PMV_ERROR,         /* file not valid */
+       PICO_PMV_ERROR_IDENT,   /* unknown file magic (aka ident) */
+       PICO_PMV_ERROR_VERSION, /* unsupported file version */
+       PICO_PMV_ERROR_SIZE,    /* file size error */
+       PICO_PMV_ERROR_MEMORY,  /* out of memory error */
 };
 
 /* convenience (makes it easy to add new params to the callbacks) */
@@ -184,164 +184,164 @@ enum
        void
 
 #define PM_PARAMS_SAVE \
-       const char *fileName, picoModel_t *model
+       const char *fileName, picoModel_t * model
 
 /* pico file format module structure */
 struct picoModule_s
 {
-       char                                    *version;                                                               /* internal module version (e.g. '1.5-b2') */
+       char                    *version;                               /* internal module version (e.g. '1.5-b2') */
 
-       char                                    *displayName;                                                   /* string used to display in guis, etc. */
-       char                                    *authorName;                                                    /* author name (eg. 'My Real Name') */
-       char                                    *copyright;                                                             /* copyright year and holder (eg. '2002 My Company') */
+       char                    *displayName;                           /* string used to display in guis, etc. */
+       char                    *authorName;                            /* author name (eg. 'My Real Name') */
+       char                    *copyright;                             /* copyright year and holder (eg. '2002 My Company') */
 
-       char                                    *defaultExts[ PICO_MAX_DEFAULT_EXTS ];  /* default file extensions used by this file type */
-       int                                             (*canload)( PM_PARAMS_CANLOAD );                /* checks whether module can load given file (returns PMVR_*) */
-       picoModel_t                             *(*load)( PM_PARAMS_LOAD );                             /* parses model file data */
-       int                                             (*cansave)( PM_PARAMS_CANSAVE );                /* checks whether module can save (returns 1 or 0 and might spit out a message) */
-       int                                             (*save)( PM_PARAMS_SAVE );                              /* saves a pico model in module's native model format */
+       char                    *defaultExts[ PICO_MAX_DEFAULT_EXTS ];  /* default file extensions used by this file type */
+       int ( *canload )( PM_PARAMS_CANLOAD );                          /* checks whether module can load given file (returns PMVR_*) */
+       picoModel_t             *( *load )( PM_PARAMS_LOAD );             /* parses model file data */
+       int ( *cansave )( PM_PARAMS_CANSAVE );                          /* checks whether module can save (returns 1 or 0 and might spit out a message) */
+       int ( *save )( PM_PARAMS_SAVE );                                /* saves a pico model in module's native model format */
 };
 
 
 
 /* general functions */
-int                                                    PicoInit( void );
-void                                           PicoShutdown( void );
-int                                                    PicoError( void );
+int                         PicoInit( void );
+void                        PicoShutdown( void );
+int                         PicoError( void );
 
-void                                           PicoSetMallocFunc( void *(*func)( size_t ) );
-void                                           PicoSetFreeFunc( void (*func)( void* ) );
-void                                           PicoSetLoadFileFunc( void (*func)( const char*, unsigned char**, int* ) );
-void                                           PicoSetFreeFileFunc( void (*func)( void* ) );
-void                                           PicoSetPrintFunc( void (*func)( int, const char* ) );
+void                        PicoSetMallocFunc( void *( *func )( size_t ) );
+void                        PicoSetFreeFunc( void ( *func )( void* ) );
+void                        PicoSetLoadFileFunc( void ( *func )( const char*, unsigned char**, int* ) );
+void                        PicoSetFreeFileFunc( void ( *func )( void* ) );
+void                        PicoSetPrintFunc( void ( *func )( int, const char* ) );
 
-const picoModule_t                     **PicoModuleList( int *numModules );
+const picoModule_t          **PicoModuleList( int *numModules );
 
-picoModel_t                                    *PicoLoadModel( const char *name, int frameNum );
+picoModel_t                 *PicoLoadModel( const char *name, int frameNum );
 
-typedef size_t (*PicoInputStreamReadFunc)(void* inputStream, unsigned char* buffer, size_t length);
+typedef size_t ( *PicoInputStreamReadFunc )( void* inputStream, unsigned char* buffer, size_t length );
 picoModel_t* PicoModuleLoadModelStream( const picoModule_t* module, void* inputStream, PicoInputStreamReadFunc inputStreamRead, size_t streamLength, int frameNum, const char *fileName );
 
 /* model functions */
-picoModel_t                                    *PicoNewModel( void );
-void                                           PicoFreeModel( picoModel_t *model );
-int                                                    PicoAdjustModel( picoModel_t *model, int numShaders, int numSurfaces );
+picoModel_t                 *PicoNewModel( void );
+void                        PicoFreeModel( picoModel_t *model );
+int                         PicoAdjustModel( picoModel_t *model, int numShaders, int numSurfaces );
 
 
 /* shader functions */
-picoShader_t                           *PicoNewShader( picoModel_t *model );
-void                                           PicoFreeShader( picoShader_t *shader );
-picoShader_t                           *PicoFindShader( picoModel_t *model, char *name, int caseSensitive );
+picoShader_t                *PicoNewShader( picoModel_t *model );
+void                        PicoFreeShader( picoShader_t *shader );
+picoShader_t                *PicoFindShader( picoModel_t *model, char *name, int caseSensitive );
 
 
 /* surface functions */
-picoSurface_t                          *PicoNewSurface( picoModel_t *model );
-void                                           PicoFreeSurface( picoSurface_t *surface );
-picoSurface_t                          *PicoFindSurface( picoModel_t *model, char *name, int caseSensitive );
-int                                                    PicoAdjustSurface( picoSurface_t *surface, int numVertexes, int numSTArrays, int numColorArrays, int numIndexes, int numFaceNormals );
+picoSurface_t               *PicoNewSurface( picoModel_t *model );
+void                        PicoFreeSurface( picoSurface_t *surface );
+picoSurface_t               *PicoFindSurface( picoModel_t *model, char *name, int caseSensitive );
+int                         PicoAdjustSurface( picoSurface_t *surface, int numVertexes, int numSTArrays, int numColorArrays, int numIndexes, int numFaceNormals );
 
 
 /* setter functions */
-void                                           PicoSetModelName( picoModel_t *model, const char *name );
-void                                           PicoSetModelFileName( picoModel_t *model, const char *fileName );
-void                                           PicoSetModelFrameNum( picoModel_t *model, int frameNum );
-void                                           PicoSetModelNumFrames( picoModel_t *model, int numFrames );
-void                                           PicoSetModelData( picoModel_t *model, void *data );
-
-void                                           PicoSetShaderName( picoShader_t *shader, char *name );
-void                                           PicoSetShaderMapName( picoShader_t *shader, char *mapName );
-void                                           PicoSetShaderAmbientColor( picoShader_t *shader, picoColor_t color );
-void                                           PicoSetShaderDiffuseColor( picoShader_t *shader, picoColor_t color );
-void                                           PicoSetShaderSpecularColor( picoShader_t *shader, picoColor_t color );
-void                                           PicoSetShaderTransparency( picoShader_t *shader, float value );
-void                                           PicoSetShaderShininess( picoShader_t *shader, float value );
-
-void                                           PicoSetSurfaceData( picoSurface_t *surface, void *data );
-void                                           PicoSetSurfaceType( picoSurface_t *surface, picoSurfaceType_t type );
-void                                           PicoSetSurfaceName( picoSurface_t *surface, const char *name );
-void                                           PicoSetSurfaceShader( picoSurface_t *surface, picoShader_t *shader );
-void                                           PicoSetSurfaceXYZ( picoSurface_t *surface, int num, picoVec3_t xyz );
-void                                           PicoSetSurfaceNormal( picoSurface_t *surface, int num, picoVec3_t normal );
-void                                           PicoSetSurfaceST( picoSurface_t *surface, int array, int num, picoVec2_t st );
-void                                           PicoSetSurfaceColor( picoSurface_t *surface, int array, int num, picoColor_t color );
-void                                           PicoSetSurfaceIndex( picoSurface_t *surface, int num, picoIndex_t index );
-void                                           PicoSetSurfaceIndexes( picoSurface_t *surface, int num, picoIndex_t *index, int count );
-void                                           PicoSetFaceNormal( picoSurface_t *surface, int num, picoVec3_t normal );
-void                                           PicoSetSurfaceSpecial( picoSurface_t *surface, int num, int special );
-void                                           PicoSetSurfaceSmoothingGroup( picoSurface_t *surface, int num, picoIndex_t smoothingGroup );
+void                        PicoSetModelName( picoModel_t *model, const char *name );
+void                        PicoSetModelFileName( picoModel_t *model, const char *fileName );
+void                        PicoSetModelFrameNum( picoModel_t *model, int frameNum );
+void                        PicoSetModelNumFrames( picoModel_t *model, int numFrames );
+void                        PicoSetModelData( picoModel_t *model, void *data );
+
+void                        PicoSetShaderName( picoShader_t *shader, char *name );
+void                        PicoSetShaderMapName( picoShader_t *shader, char *mapName );
+void                        PicoSetShaderAmbientColor( picoShader_t *shader, picoColor_t color );
+void                        PicoSetShaderDiffuseColor( picoShader_t *shader, picoColor_t color );
+void                        PicoSetShaderSpecularColor( picoShader_t *shader, picoColor_t color );
+void                        PicoSetShaderTransparency( picoShader_t *shader, float value );
+void                        PicoSetShaderShininess( picoShader_t *shader, float value );
+
+void                        PicoSetSurfaceData( picoSurface_t *surface, void *data );
+void                        PicoSetSurfaceType( picoSurface_t *surface, picoSurfaceType_t type );
+void                        PicoSetSurfaceName( picoSurface_t *surface, const char *name );
+void                        PicoSetSurfaceShader( picoSurface_t *surface, picoShader_t *shader );
+void                        PicoSetSurfaceXYZ( picoSurface_t *surface, int num, picoVec3_t xyz );
+void                        PicoSetSurfaceNormal( picoSurface_t *surface, int num, picoVec3_t normal );
+void                        PicoSetSurfaceST( picoSurface_t *surface, int array, int num, picoVec2_t st );
+void                        PicoSetSurfaceColor( picoSurface_t *surface, int array, int num, picoColor_t color );
+void                        PicoSetSurfaceIndex( picoSurface_t *surface, int num, picoIndex_t index );
+void                        PicoSetSurfaceIndexes( picoSurface_t *surface, int num, picoIndex_t *index, int count );
+void                        PicoSetFaceNormal( picoSurface_t *surface, int num, picoVec3_t normal );
+void                        PicoSetSurfaceSpecial( picoSurface_t *surface, int num, int special );
+void                        PicoSetSurfaceSmoothingGroup( picoSurface_t *surface, int num, picoIndex_t smoothingGroup );
 
 
 /* getter functions */
-char                                           *PicoGetModelName( picoModel_t *model );
-char                                           *PicoGetModelFileName( picoModel_t *model );
-int                                                    PicoGetModelFrameNum( picoModel_t *model );
-int                                                    PicoGetModelNumFrames( picoModel_t *model );
-void                                           *PicoGetModelData( picoModel_t *model );
-int                                            PicoGetModelNumShaders( picoModel_t *model );
-picoShader_t                           *PicoGetModelShader( picoModel_t *model, int num );     /* sea */
-int                                                    PicoGetModelNumSurfaces( picoModel_t *model );
-picoSurface_t                          *PicoGetModelSurface( picoModel_t *model, int num );
-int                                            PicoGetModelTotalVertexes( picoModel_t *model );
-int                                            PicoGetModelTotalIndexes( picoModel_t *model );
-
-char                                           *PicoGetShaderName( picoShader_t *shader );
-char                                           *PicoGetShaderMapName( picoShader_t *shader );
-picoByte_t                                     *PicoGetShaderAmbientColor( picoShader_t *shader );
-picoByte_t                                     *PicoGetShaderDiffuseColor( picoShader_t *shader );
-picoByte_t                                     *PicoGetShaderSpecularColor( picoShader_t *shader );
-float                                          PicoGetShaderTransparency( picoShader_t *shader );
-float                                          PicoGetShaderShininess( picoShader_t *shader );
-
-void                                           *PicoGetSurfaceData( picoSurface_t *surface );
-char                                           *PicoGetSurfaceName( picoSurface_t *surface );          /* sea */
-picoSurfaceType_t                      PicoGetSurfaceType( picoSurface_t *surface );
-char                                           *PicoGetSurfaceName( picoSurface_t *surface );
-picoShader_t                           *PicoGetSurfaceShader( picoSurface_t *surface );        /* sea */
-
-int                                                    PicoGetSurfaceNumVertexes( picoSurface_t *surface );
-picoVec_t                                      *PicoGetSurfaceXYZ( picoSurface_t *surface, int num );
-picoVec_t                                      *PicoGetSurfaceNormal( picoSurface_t *surface, int num );
-picoVec_t                                      *PicoGetSurfaceST( picoSurface_t *surface, int array, int num );
-picoByte_t                                     *PicoGetSurfaceColor( picoSurface_t *surface, int array, int num );
-int                                                    PicoGetSurfaceNumIndexes( picoSurface_t *surface );
-picoIndex_t                                    PicoGetSurfaceIndex( picoSurface_t *surface, int num );
-picoIndex_t                                    *PicoGetSurfaceIndexes( picoSurface_t *surface, int num );
-picoVec_t                                      *PicoGetFaceNormal( picoSurface_t *surface, int num );
-int                                                    PicoGetSurfaceSpecial( picoSurface_t *surface, int num );
+char                        *PicoGetModelName( picoModel_t *model );
+char                        *PicoGetModelFileName( picoModel_t *model );
+int                         PicoGetModelFrameNum( picoModel_t *model );
+int                         PicoGetModelNumFrames( picoModel_t *model );
+void                        *PicoGetModelData( picoModel_t *model );
+int                         PicoGetModelNumShaders( picoModel_t *model );
+picoShader_t                *PicoGetModelShader( picoModel_t *model, int num ); /* sea */
+int                         PicoGetModelNumSurfaces( picoModel_t *model );
+picoSurface_t               *PicoGetModelSurface( picoModel_t *model, int num );
+int                         PicoGetModelTotalVertexes( picoModel_t *model );
+int                         PicoGetModelTotalIndexes( picoModel_t *model );
+
+char                        *PicoGetShaderName( picoShader_t *shader );
+char                        *PicoGetShaderMapName( picoShader_t *shader );
+picoByte_t                  *PicoGetShaderAmbientColor( picoShader_t *shader );
+picoByte_t                  *PicoGetShaderDiffuseColor( picoShader_t *shader );
+picoByte_t                  *PicoGetShaderSpecularColor( picoShader_t *shader );
+float                       PicoGetShaderTransparency( picoShader_t *shader );
+float                       PicoGetShaderShininess( picoShader_t *shader );
+
+void                        *PicoGetSurfaceData( picoSurface_t *surface );
+char                        *PicoGetSurfaceName( picoSurface_t *surface );      /* sea */
+picoSurfaceType_t           PicoGetSurfaceType( picoSurface_t *surface );
+char                        *PicoGetSurfaceName( picoSurface_t *surface );
+picoShader_t                *PicoGetSurfaceShader( picoSurface_t *surface );    /* sea */
+
+int                         PicoGetSurfaceNumVertexes( picoSurface_t *surface );
+picoVec_t                   *PicoGetSurfaceXYZ( picoSurface_t *surface, int num );
+picoVec_t                   *PicoGetSurfaceNormal( picoSurface_t *surface, int num );
+picoVec_t                   *PicoGetSurfaceST( picoSurface_t *surface, int array, int num );
+picoByte_t                  *PicoGetSurfaceColor( picoSurface_t *surface, int array, int num );
+int                         PicoGetSurfaceNumIndexes( picoSurface_t *surface );
+picoIndex_t                 PicoGetSurfaceIndex( picoSurface_t *surface, int num );
+picoIndex_t                 *PicoGetSurfaceIndexes( picoSurface_t *surface, int num );
+picoVec_t                   *PicoGetFaceNormal( picoSurface_t *surface, int num );
+int                         PicoGetSurfaceSpecial( picoSurface_t *surface, int num );
 
 
 /* hashtable related functions */
 typedef struct picoVertexCombinationData_s
 {
-       picoVec3_t      xyz, normal;
-       picoVec2_t      st;
-       picoColor_t     color;
+       picoVec3_t xyz, normal;
+       picoVec2_t st;
+       picoColor_t color;
 } picoVertexCombinationData_t;
 
 typedef struct picoVertexCombinationHash_s
 {
-       picoVertexCombinationData_t     vcd;
-       picoIndex_t                                     index;
+       picoVertexCombinationData_t vcd;
+       picoIndex_t index;
 
-       void                                            *data;
+       void                        *data;
 
-       struct picoVertexCombinationHash_s      *next;
+       struct picoVertexCombinationHash_s  *next;
 } picoVertexCombinationHash_t;
 
-int                                                    PicoGetHashTableSize( void );
-unsigned int                           PicoVertexCoordGenerateHash( picoVec3_t xyz );
-picoVertexCombinationHash_t    **PicoNewVertexCombinationHashTable( void );
-void                                           PicoFreeVertexCombinationHashTable( picoVertexCombinationHash_t **hashTable );
-picoVertexCombinationHash_t    *PicoFindVertexCombinationInHashTable( picoVertexCombinationHash_t **hashTable, picoVec3_t xyz, picoVec3_t normal, picoVec3_t st, picoColor_t color );
+int                         PicoGetHashTableSize( void );
+unsigned int                PicoVertexCoordGenerateHash( picoVec3_t xyz );
+picoVertexCombinationHash_t **PicoNewVertexCombinationHashTable( void );
+void                        PicoFreeVertexCombinationHashTable( picoVertexCombinationHash_t **hashTable );
+picoVertexCombinationHash_t *PicoFindVertexCombinationInHashTable( picoVertexCombinationHash_t **hashTable, picoVec3_t xyz, picoVec3_t normal, picoVec3_t st, picoColor_t color );
 picoVertexCombinationHash_t *PicoAddVertexCombinationToHashTable( picoVertexCombinationHash_t **hashTable, picoVec3_t xyz, picoVec3_t normal, picoVec3_t st, picoColor_t color, picoIndex_t index );
 
 /* specialized functions */
-int                                                    PicoFindSurfaceVertexNum( picoSurface_t *surface, picoVec3_t xyz, picoVec3_t normal, int numSTs, picoVec2_t *st, int numColors, picoColor_t *color, picoIndex_t smoothingGroup );
-void                                           PicoFixSurfaceNormals( picoSurface_t *surface );
-int                                                    PicoRemapModel( picoModel_t *model, char *remapFile );
+int                         PicoFindSurfaceVertexNum( picoSurface_t *surface, picoVec3_t xyz, picoVec3_t normal, int numSTs, picoVec2_t *st, int numColors, picoColor_t *color, picoIndex_t smoothingGroup );
+void                        PicoFixSurfaceNormals( picoSurface_t *surface );
+int                         PicoRemapModel( picoModel_t *model, char *remapFile );
 
 
-void PicoAddTriangleToModel( picoModel_t *model, picoVec3_t** xyz, picoVec3_t** normals, int numSTs, picoVec2_t **st, int numColors, picoColor_t **colors, picoShader_t* shader, const char *name, picoIndex_t* smoothingGroup);
+void PicoAddTriangleToModel( picoModel_t *model, picoVec3_t** xyz, picoVec3_t** normals, int numSTs, picoVec2_t **st, int numColors, picoColor_t **colors, picoShader_t* shader, const char *name, picoIndex_t* smoothingGroup );
 
 /* end marker */
 #ifdef __cplusplus