]> de.git.xonotic.org Git - xonotic/netradiant.git/blobdiff - libs/picomodel/pm_terrain.c
my own uncrustify run
[xonotic/netradiant.git] / libs / picomodel / pm_terrain.c
index b31671193f60ee059087ae3c3d7c74c813e5de95..93b79840f7b0722ae17705e74871b92b0baf86d9 100644 (file)
@@ -1,36 +1,36 @@
 /* -----------------------------------------------------------------------------
 
-PicoModel Library 
+   PicoModel Library
 
-Copyright (c) 2003, Randy Reddig & seaw0lf
-All rights reserved.
+   Copyright (c) 2003, 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.
 
------------------------------------------------------------------------------ */
+   ----------------------------------------------------------------------------- */
 
 
 
@@ -46,75 +46,72 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 typedef struct tga_s
 {
-       unsigned char   id_length, colormap_type, image_type;
-       unsigned short  colormap_index, colormap_length;
-       unsigned char   colormap_size;
-       unsigned short  x_origin, y_origin, width, height;
-       unsigned char   pixel_size, attributes;
+       unsigned char id_length, colormap_type, image_type;
+       unsigned short colormap_index, colormap_length;
+       unsigned char colormap_size;
+       unsigned short x_origin, y_origin, width, height;
+       unsigned char pixel_size, attributes;
 }
 tga_t;
 
 
 
 /*
-_terrain_load_tga_buffer()
-loads a tga image into a newly allocated image buffer
-fixme: replace/clean this function
-*/
+   _terrain_load_tga_buffer()
+   loads a tga image into a newly allocated image buffer
+   fixme: replace/clean this function
+ */
+
+void _terrain_load_tga_buffer( unsigned char *buffer, unsigned char **pic, int *width, int *height ){
+       int row, column;
+       int columns, rows, numPixels;
+       unsigned char   *pixbuf;
+       unsigned char   *buf_p;
+       tga_t targa_header;
+       unsigned char   *targa_rgba;
+
 
-void _terrain_load_tga_buffer( unsigned char *buffer, unsigned char **pic, int *width, int *height )
-{
-       int                             row, column;
-       int                             columns, rows, numPixels;
-       unsigned char   *pixbuf;
-       unsigned char   *buf_p;
-       tga_t                   targa_header;
-       unsigned char   *targa_rgba;
-       
-       
        *pic = NULL;
-       
-       if( buffer == NULL )
+
+       if ( buffer == NULL ) {
                return;
-       
+       }
+
        buf_p = buffer;
-       
+
        targa_header.id_length = *buf_p++;
        targa_header.colormap_type = *buf_p++;
        targa_header.image_type = *buf_p++;
-       
-       targa_header.colormap_index = _pico_little_short ( *(short*)buf_p );
+
+       targa_header.colormap_index = _pico_little_short( *(short*)buf_p );
        buf_p += 2;
-       targa_header.colormap_length = _pico_little_short ( *(short*) buf_p );
+       targa_header.colormap_length = _pico_little_short( *(short*) buf_p );
        buf_p += 2;
        targa_header.colormap_size = *buf_p++;
-       targa_header.x_origin = _pico_little_short ( *(short*) buf_p );
+       targa_header.x_origin = _pico_little_short( *(short*) buf_p );
        buf_p += 2;
-       targa_header.y_origin = _pico_little_short ( *(short*) buf_p );
+       targa_header.y_origin = _pico_little_short( *(short*) buf_p );
        buf_p += 2;
-       targa_header.width = _pico_little_short ( *(short*) buf_p );
+       targa_header.width = _pico_little_short( *(short*) buf_p );
        buf_p += 2;
-       targa_header.height = _pico_little_short ( *(short*) buf_p );
+       targa_header.height = _pico_little_short( *(short*) buf_p );
        buf_p += 2;
        targa_header.pixel_size = *buf_p++;
        targa_header.attributes = *buf_p++;
 
-       if( targa_header.image_type != 2 && targa_header.image_type != 10 && targa_header.image_type != 3 ) 
-       {
-               _pico_printf( PICO_ERROR, "Only type 2 (RGB), 3 (gray), and 10 (RGB) TGA images supported\n");
+       if ( targa_header.image_type != 2 && targa_header.image_type != 10 && targa_header.image_type != 3 ) {
+               _pico_printf( PICO_ERROR, "Only type 2 (RGB), 3 (gray), and 10 (RGB) TGA images supported\n" );
                pic = NULL;
                return;
        }
 
-       if( targa_header.colormap_type != 0 )
-       {
+       if ( targa_header.colormap_type != 0 ) {
                _pico_printf( PICO_ERROR, "Indexed color TGA images not supported\n" );
                return;
        }
 
-       if( targa_header.pixel_size != 32 && targa_header.pixel_size != 24 && targa_header.image_type != 3 )
-       {
-               _pico_printf( PICO_ERROR, "Only 32 or 24 bit TGA images supported (not indexed color)\n");
+       if ( targa_header.pixel_size != 32 && targa_header.pixel_size != 24 && targa_header.image_type != 3 ) {
+               _pico_printf( PICO_ERROR, "Only 32 or 24 bit TGA images supported (not indexed color)\n" );
                pic = NULL;
                return;
        }
@@ -123,29 +120,31 @@ void _terrain_load_tga_buffer( unsigned char *buffer, unsigned char **pic, int *
        rows = targa_header.height;
        numPixels = columns * rows;
 
-       if (width)
+       if ( width ) {
                *width = columns;
-       if (height)
+       }
+       if ( height ) {
                *height = rows;
+       }
 
        targa_rgba = _pico_alloc( numPixels * 4 );
        *pic = targa_rgba;
 
-       if (targa_header.id_length != 0)
+       if ( targa_header.id_length != 0 ) {
                buf_p += targa_header.id_length;  // skip TARGA image comment
-       
-       if ( targa_header.image_type==2 || targa_header.image_type == 3 )
-       { 
+
+       }
+       if ( targa_header.image_type == 2 || targa_header.image_type == 3 ) {
                // Uncompressed RGB or gray scale image
-               for(row=rows-1; row>=0; row--) 
+               for ( row = rows - 1; row >= 0; row-- )
                {
-                       pixbuf = targa_rgba + row*columns*4;
-                       for(column=0; column<columns; column++) 
+                       pixbuf = targa_rgba + row * columns * 4;
+                       for ( column = 0; column < columns; column++ )
                        {
                                unsigned char red,green,blue,alphabyte;
-                               switch (targa_header.pixel_size) 
+                               switch ( targa_header.pixel_size )
                                {
-                                       
+
                                case 8:
                                        blue = *buf_p++;
                                        green = blue;
@@ -181,10 +180,9 @@ void _terrain_load_tga_buffer( unsigned char *buffer, unsigned char **pic, int *
                        }
                }
        }
-       
+
        /* rle encoded pixels */
-       else if( targa_header.image_type == 10 )
-       {   
+       else if ( targa_header.image_type == 10 ) {
                unsigned char red,green,blue,alphabyte,packetHeader,packetSize,j;
 
                red = 0;
@@ -192,98 +190,101 @@ void _terrain_load_tga_buffer( unsigned char *buffer, unsigned char **pic, int *
                blue = 0;
                alphabyte = 0xff;
 
-               for(row=rows-1; row>=0; row--) {
-                       pixbuf = targa_rgba + row*columns*4;
-                       for(column=0; column<columns; ) {
-                               packetHeader= *buf_p++;
-                               packetSize = 1 + (packetHeader & 0x7f);
-                               if (packetHeader & 0x80) {        // run-length packet
-                                       switch (targa_header.pixel_size) {
-                                               case 24:
-                                                               blue = *buf_p++;
-                                                               green = *buf_p++;
-                                                               red = *buf_p++;
-                                                               alphabyte = 255;
-                                                               break;
-                                               case 32:
-                                                               blue = *buf_p++;
-                                                               green = *buf_p++;
-                                                               red = *buf_p++;
-                                                               alphabyte = *buf_p++;
-                                                               break;
-                                               default:
-                                                       //Error("LoadTGA: illegal pixel_size '%d' in file '%s'\n", targa_header.pixel_size, name );
-                                                       break;
+               for ( row = rows - 1; row >= 0; row-- ) {
+                       pixbuf = targa_rgba + row * columns * 4;
+                       for ( column = 0; column < columns; ) {
+                               packetHeader = *buf_p++;
+                               packetSize = 1 + ( packetHeader & 0x7f );
+                               if ( packetHeader & 0x80 ) {        // run-length packet
+                                       switch ( targa_header.pixel_size ) {
+                                       case 24:
+                                               blue = *buf_p++;
+                                               green = *buf_p++;
+                                               red = *buf_p++;
+                                               alphabyte = 255;
+                                               break;
+                                       case 32:
+                                               blue = *buf_p++;
+                                               green = *buf_p++;
+                                               red = *buf_p++;
+                                               alphabyte = *buf_p++;
+                                               break;
+                                       default:
+                                               //Error("LoadTGA: illegal pixel_size '%d' in file '%s'\n", targa_header.pixel_size, name );
+                                               break;
                                        }
-       
-                                       for(j=0;j<packetSize;j++) {
-                                               *pixbuf++=red;
-                                               *pixbuf++=green;
-                                               *pixbuf++=blue;
-                                               *pixbuf++=alphabyte;
+
+                                       for ( j = 0; j < packetSize; j++ ) {
+                                               *pixbuf++ = red;
+                                               *pixbuf++ = green;
+                                               *pixbuf++ = blue;
+                                               *pixbuf++ = alphabyte;
                                                column++;
-                                               if (column==columns) { // run spans across rows
-                                                       column=0;
-                                                       if (row>0)
+                                               if ( column == columns ) { // run spans across rows
+                                                       column = 0;
+                                                       if ( row > 0 ) {
                                                                row--;
-                                                       else
+                                                       }
+                                                       else{
                                                                goto breakOut;
-                                                       pixbuf = targa_rgba + row*columns*4;
+                                                       }
+                                                       pixbuf = targa_rgba + row * columns * 4;
                                                }
                                        }
                                }
                                else {                            // non run-length packet
-                                       for(j=0;j<packetSize;j++) {
-                                               switch (targa_header.pixel_size) {
-                                                       case 24:
-                                                                       blue = *buf_p++;
-                                                                       green = *buf_p++;
-                                                                       red = *buf_p++;
-                                                                       *pixbuf++ = red;
-                                                                       *pixbuf++ = green;
-                                                                       *pixbuf++ = blue;
-                                                                       *pixbuf++ = 255;
-                                                                       break;
-                                                       case 32:
-                                                                       blue = *buf_p++;
-                                                                       green = *buf_p++;
-                                                                       red = *buf_p++;
-                                                                       alphabyte = *buf_p++;
-                                                                       *pixbuf++ = red;
-                                                                       *pixbuf++ = green;
-                                                                       *pixbuf++ = blue;
-                                                                       *pixbuf++ = alphabyte;
-                                                                       break;
-                                                       default:
-                                                               //Sysprintf("LoadTGA: illegal pixel_size '%d' in file '%s'\n", targa_header.pixel_size, name );
-                                                               break;
+                                       for ( j = 0; j < packetSize; j++ ) {
+                                               switch ( targa_header.pixel_size ) {
+                                               case 24:
+                                                       blue = *buf_p++;
+                                                       green = *buf_p++;
+                                                       red = *buf_p++;
+                                                       *pixbuf++ = red;
+                                                       *pixbuf++ = green;
+                                                       *pixbuf++ = blue;
+                                                       *pixbuf++ = 255;
+                                                       break;
+                                               case 32:
+                                                       blue = *buf_p++;
+                                                       green = *buf_p++;
+                                                       red = *buf_p++;
+                                                       alphabyte = *buf_p++;
+                                                       *pixbuf++ = red;
+                                                       *pixbuf++ = green;
+                                                       *pixbuf++ = blue;
+                                                       *pixbuf++ = alphabyte;
+                                                       break;
+                                               default:
+                                                       //Sysprintf("LoadTGA: illegal pixel_size '%d' in file '%s'\n", targa_header.pixel_size, name );
+                                                       break;
                                                }
                                                column++;
-                                               if (column==columns) { // pixel packet run spans across rows
-                                                       column=0;
-                                                       if (row>0)
+                                               if ( column == columns ) { // pixel packet run spans across rows
+                                                       column = 0;
+                                                       if ( row > 0 ) {
                                                                row--;
-                                                       else
+                                                       }
+                                                       else{
                                                                goto breakOut;
-                                                       pixbuf = targa_rgba + row*columns*4;
-                                               }                                               
+                                                       }
+                                                       pixbuf = targa_rgba + row * columns * 4;
+                                               }
                                        }
                                }
                        }
-                       breakOut:;
+breakOut:;
                }
        }
 
        /* fix vertically flipped image */
-       if( (targa_header.attributes & (1<<5)) )
-       {
+       if ( ( targa_header.attributes & ( 1 << 5 ) ) ) {
                int flip;
-               for (row = 0; row < .5f * rows; row++)
+               for ( row = 0; row < .5f * rows; row++ )
                {
-                       for (column = 0; column < columns; column++)
+                       for ( column = 0; column < columns; column++ )
                        {
-                               flip = *( (int*)targa_rgba + row * columns + column);
-                               *( (int*)targa_rgba + row * columns + column) = *( (int*)targa_rgba + ( ( rows - 1 ) - row ) * columns + column );
+                               flip = *( (int*)targa_rgba + row * columns + column );
+                               *( (int*)targa_rgba + row * columns + column ) = *( (int*)targa_rgba + ( ( rows - 1 ) - row ) * columns + column );
                                *( (int*)targa_rgba + ( ( rows - 1 ) - row ) * columns + column ) = flip;
                        }
                }
@@ -293,34 +294,34 @@ void _terrain_load_tga_buffer( unsigned char *buffer, unsigned char **pic, int *
 
 
 /*
-_terrain_canload()
-validates a picoterrain file
-*/
+   _terrain_canload()
+   validates a picoterrain file
+ */
+
+static int _terrain_canload( PM_PARAMS_CANLOAD ){
+       picoParser_t    *p;
+
 
-static int _terrain_canload( PM_PARAMS_CANLOAD )
-{
-       picoParser_t    *p;
-       
-       
        /* create pico parser */
        p = _pico_new_parser( (const picoByte_t*) buffer, bufSize );
-       if( p == NULL )
+       if ( p == NULL ) {
                return PICO_PMV_ERROR_MEMORY;
-       
+       }
+
        /* get first token */
-       if( _pico_parse_first( p ) == NULL)
+       if ( _pico_parse_first( p ) == NULL ) {
                return PICO_PMV_ERROR_IDENT;
-       
+       }
+
        /* check first token */
-       if( _pico_stricmp( p->token, "picoterrain" ) )
-       {
+       if ( _pico_stricmp( p->token, "picoterrain" ) ) {
                _pico_free_parser( p );
                return PICO_PMV_ERROR_IDENT;
        }
-       
+
        /* free the pico parser object */
        _pico_free_parser( p );
-       
+
        /* file seems to be a valid picoterrain file */
        return PICO_PMV_OK;
 }
@@ -328,259 +329,255 @@ static int _terrain_canload( PM_PARAMS_CANLOAD )
 
 
 /*
-_terrain_load()
-loads a picoterrain file
-*/
+   _terrain_load()
+   loads a picoterrain file
+ */
+
+static picoModel_t *_terrain_load( PM_PARAMS_LOAD ){
+       int i, j, v, pw[ 5 ], r;
+       picoParser_t    *p;
+
+       char            *shader, *heightmapFile, *colormapFile;
+       picoVec3_t scale, origin;
+
+       unsigned char   *imageBuffer;
+       int imageBufSize, w, h, cw, ch;
+       unsigned char   *heightmap, *colormap, *heightPixel, *colorPixel;
+
+       picoModel_t     *picoModel;
+       picoSurface_t   *picoSurface;
+       picoShader_t    *picoShader;
+       picoVec3_t xyz, normal;
+       picoVec2_t st;
+       picoColor_t color;
+
 
-static picoModel_t *_terrain_load( PM_PARAMS_LOAD )
-{
-       int                             i, j, v, pw[ 5 ], r;
-       picoParser_t    *p;
-       
-       char                    *shader, *heightmapFile, *colormapFile;
-       picoVec3_t              scale, origin;
-       
-       unsigned char   *imageBuffer;
-       int                             imageBufSize, w, h, cw, ch;
-       unsigned char   *heightmap, *colormap, *heightPixel, *colorPixel;
-       
-       picoModel_t             *picoModel;
-       picoSurface_t   *picoSurface;
-       picoShader_t    *picoShader;
-       picoVec3_t              xyz, normal;
-       picoVec2_t              st;
-       picoColor_t             color;
-       
-       
        /* create pico parser */
        p = _pico_new_parser( (const picoByte_t*) buffer, bufSize );
-       if( p == NULL )
+       if ( p == NULL ) {
                return NULL;
-       
+       }
+
        /* get first token */
-       if( _pico_parse_first( p ) == NULL)
+       if ( _pico_parse_first( p ) == NULL ) {
                return NULL;
-       
+       }
+
        /* check first token */
-       if( _pico_stricmp( p->token, "picoterrain" ) )
-       {
+       if ( _pico_stricmp( p->token, "picoterrain" ) ) {
                _pico_printf( PICO_ERROR, "Invalid PicoTerrain model" );
                _pico_free_parser( p );
                return NULL;
        }
-       
+
        /* setup */
        shader = heightmapFile = colormapFile = NULL;
        _pico_set_vec( scale, 512, 512, 32 );
-       
+
        /* parse ase model file */
-       while( 1 )
+       while ( 1 )
        {
                /* get first token on line */
-               if( !_pico_parse_first( p ) )
+               if ( !_pico_parse_first( p ) ) {
                        break;
-               
+               }
+
                /* skip empty lines */
-               if( !p->token || !p->token[ 0 ] )
+               if ( !p->token || !p->token[ 0 ] ) {
                        continue;
-               
+               }
+
                /* shader */
-               if( !_pico_stricmp( p->token, "shader" ) )
-               {
-                       if( _pico_parse( p, 0 ) && p->token[ 0 ] )
-                       {
-                               if( shader != NULL )
+               if ( !_pico_stricmp( p->token, "shader" ) ) {
+                       if ( _pico_parse( p, 0 ) && p->token[ 0 ] ) {
+                               if ( shader != NULL ) {
                                        _pico_free( shader );
+                               }
                                shader = _pico_clone_alloc( p->token );
                        }
                }
-               
+
                /* heightmap */
-               else if( !_pico_stricmp( p->token, "heightmap" ) )
-               {
-                       if( _pico_parse( p, 0 ) && p->token[ 0 ] )
-                       {
-                               if( heightmapFile != NULL )
+               else if ( !_pico_stricmp( p->token, "heightmap" ) ) {
+                       if ( _pico_parse( p, 0 ) && p->token[ 0 ] ) {
+                               if ( heightmapFile != NULL ) {
                                        _pico_free( heightmapFile );
+                               }
                                heightmapFile = _pico_clone_alloc( p->token );
                        }
                }
-               
+
                /* colormap */
-               else if( !_pico_stricmp( p->token, "colormap" ) )
-               {
-                       if( _pico_parse( p, 0 ) && p->token[ 0 ] )
-                       {
-                               if( colormapFile != NULL )
+               else if ( !_pico_stricmp( p->token, "colormap" ) ) {
+                       if ( _pico_parse( p, 0 ) && p->token[ 0 ] ) {
+                               if ( colormapFile != NULL ) {
                                        _pico_free( colormapFile );
+                               }
                                colormapFile = _pico_clone_alloc( p->token );
                        }
                }
-               
+
                /* scale */
-               else if( !_pico_stricmp( p->token, "scale" ) )
-               {
+               else if ( !_pico_stricmp( p->token, "scale" ) ) {
                        _pico_parse_vec( p, scale );
                }
-               
+
                /* skip unparsed rest of line and continue */
                _pico_parse_skip_rest( p );
        }
-       
+
        /* ----------------------------------------------------------------- */
-       
+
        /* load heightmap */
        heightmap = imageBuffer = NULL;
        _pico_load_file( heightmapFile, &imageBuffer, &imageBufSize );
        _terrain_load_tga_buffer( imageBuffer, &heightmap, &w, &h );
        _pico_free( heightmapFile );
        _pico_free_file( imageBuffer );
-       
-       if( heightmap == NULL || w < 2 || h < 2 )
-       {
+
+       if ( heightmap == NULL || w < 2 || h < 2 ) {
                _pico_printf( PICO_ERROR, "PicoTerrain model with invalid heightmap" );
-               if( shader != NULL )
+               if ( shader != NULL ) {
                        _pico_free( shader );
-               if( colormapFile != NULL )
+               }
+               if ( colormapFile != NULL ) {
                        _pico_free( colormapFile );
+               }
                _pico_free_parser( p );
                return NULL;
        }
-       
+
        /* set origin (bottom lowest corner of terrain mesh) */
-       _pico_set_vec( origin, (w / -2) * scale[ 0 ], (h / -2) * scale[ 1 ], -128 * scale[ 2 ] );
-       
+       _pico_set_vec( origin, ( w / -2 ) * scale[ 0 ], ( h / -2 ) * scale[ 1 ], -128 * scale[ 2 ] );
+
        /* load colormap */
        colormap = imageBuffer = NULL;
        _pico_load_file( colormapFile, &imageBuffer, &imageBufSize );
        _terrain_load_tga_buffer( imageBuffer, &colormap, &cw, &ch );
        _pico_free( colormapFile );
        _pico_free_file( imageBuffer );
-       
-       if( cw != w || ch != h )
-       {
+
+       if ( cw != w || ch != h ) {
                _pico_printf( PICO_WARNING, "PicoTerrain colormap/heightmap size mismatch" );
                _pico_free( colormap );
                colormap = NULL;
        }
-       
+
        /* ----------------------------------------------------------------- */
-       
+
        /* create new pico model */
        picoModel = PicoNewModel();
-       if( picoModel == NULL )
-       {
+       if ( picoModel == NULL ) {
                _pico_printf( PICO_ERROR, "Unable to allocate a new model" );
                return NULL;
        }
-       
+
        /* do model setup */
        PicoSetModelFrameNum( picoModel, frameNum );
        PicoSetModelNumFrames( picoModel, 1 ); /* sea */
        PicoSetModelName( picoModel, fileName );
        PicoSetModelFileName( picoModel, fileName );
-       
+
        /* allocate new pico surface */
        picoSurface = PicoNewSurface( picoModel );
-       if( picoSurface == NULL )
-       {
+       if ( picoSurface == NULL ) {
                _pico_printf( PICO_ERROR, "Unable to allocate a new model surface" );
                PicoFreeModel( picoModel ); /* sea */
                return NULL;
        }
-       
+
        /* terrain surfaces are triangle meshes */
        PicoSetSurfaceType( picoSurface, PICO_TRIANGLES );
-               
+
        /* set surface name */
        PicoSetSurfaceName( picoSurface, "picoterrain" );
-               
+
        /* create new pico shader */
        picoShader = PicoNewShader( picoModel );
-       if( picoShader == NULL )
-       {
+       if ( picoShader == NULL ) {
                _pico_printf( PICO_ERROR, "Unable to allocate a new model shader" );
                PicoFreeModel( picoModel );
                _pico_free( shader );
                return NULL;
        }
-       
+
        /* detox and set shader name */
        _pico_setfext( shader, "" );
        _pico_unixify( shader );
        PicoSetShaderName( picoShader, shader );
        _pico_free( shader );
-       
+
        /* associate current surface with newly created shader */
        PicoSetSurfaceShader( picoSurface, picoShader );
-       
+
        /* make bogus normal */
        _pico_set_vec( normal, 0.0f, 0.0f, 0.0f );
-       
+
        /* create mesh */
-       for( j = 0; j < h; j++ )
+       for ( j = 0; j < h; j++ )
        {
-               for( i = 0; i < w; i++ )
+               for ( i = 0; i < w; i++ )
                {
                        /* get pointers */
-                       v = i + (j * w);
+                       v = i + ( j * w );
                        heightPixel = heightmap + v * 4;
                        colorPixel = colormap
-                               ? colormap + v * 4
-                               : NULL;
-                       
+                                                ? colormap + v * 4
+                                                : NULL;
+
                        /* set xyz */
                        _pico_set_vec( xyz, origin[ 0 ] + scale[ 0 ] * i,
-                                                               origin[ 1 ] + scale[ 1 ] * j,
-                                                               origin[ 2 ] + scale[ 2 ] * heightPixel[ 0 ] );
+                                                  origin[ 1 ] + scale[ 1 ] * j,
+                                                  origin[ 2 ] + scale[ 2 ] * heightPixel[ 0 ] );
                        PicoSetSurfaceXYZ( picoSurface, v, xyz );
-                       
+
                        /* set normal */
                        PicoSetSurfaceNormal( picoSurface, v, normal );
-                       
+
                        /* set st */
                        st[ 0 ] = (float) i;
                        st[ 1 ] = (float) j;
                        PicoSetSurfaceST( picoSurface, 0, v, st );
-                       
+
                        /* set color */
-                       if( colorPixel != NULL )
+                       if ( colorPixel != NULL ) {
                                _pico_set_color( color, colorPixel[ 0 ], colorPixel[ 1 ], colorPixel[ 2 ], colorPixel[ 3 ] );
-                       else
+                       }
+                       else{
                                _pico_set_color( color, 255, 255, 255, 255 );
+                       }
                        PicoSetSurfaceColor( picoSurface, 0, v, color );
-                       
+
                        /* set triangles (zero alpha in heightmap suppresses this quad) */
-                       if( i < (w - 1) && j < (h - 1) && heightPixel[ 3 ] >= 128 )
-                       {
+                       if ( i < ( w - 1 ) && j < ( h - 1 ) && heightPixel[ 3 ] >= 128 ) {
                                /* set indexes */
-                               pw[ 0 ] = i + (j * w);
-                               pw[ 1 ] = i + ((j + 1) * w);
-                               pw[ 2 ] = i + 1 + ((j + 1) * w);
-                               pw[ 3 ] = i + 1 + (j * w);
-                               pw[ 4 ] = i + (j * w);  /* same as pw[ 0 ] */
-                               
+                               pw[ 0 ] = i + ( j * w );
+                               pw[ 1 ] = i + ( ( j + 1 ) * w );
+                               pw[ 2 ] = i + 1 + ( ( j + 1 ) * w );
+                               pw[ 3 ] = i + 1 + ( j * w );
+                               pw[ 4 ] = i + ( j * w );  /* same as pw[ 0 ] */
+
                                /* set radix */
-                               r = (i + j) & 1;
-                               
+                               r = ( i + j ) & 1;
+
                                /* make first triangle */
-                               PicoSetSurfaceIndex( picoSurface, (v * 6 + 0), (picoIndex_t) pw[ r + 0 ] );
-                               PicoSetSurfaceIndex( picoSurface, (v * 6 + 1), (picoIndex_t) pw[ r + 1 ] );
-                               PicoSetSurfaceIndex( picoSurface, (v * 6 + 2), (picoIndex_t) pw[ r + 2 ] );
-                               
+                               PicoSetSurfaceIndex( picoSurface, ( v * 6 + 0 ), (picoIndex_t) pw[ r + 0 ] );
+                               PicoSetSurfaceIndex( picoSurface, ( v * 6 + 1 ), (picoIndex_t) pw[ r + 1 ] );
+                               PicoSetSurfaceIndex( picoSurface, ( v * 6 + 2 ), (picoIndex_t) pw[ r + 2 ] );
+
                                /* make second triangle */
-                               PicoSetSurfaceIndex( picoSurface, (v * 6 + 3), (picoIndex_t) pw[ r + 0 ] );
-                               PicoSetSurfaceIndex( picoSurface, (v * 6 + 4), (picoIndex_t) pw[ r + 2 ] );
-                               PicoSetSurfaceIndex( picoSurface, (v * 6 + 5), (picoIndex_t) pw[ r + 3 ] );
+                               PicoSetSurfaceIndex( picoSurface, ( v * 6 + 3 ), (picoIndex_t) pw[ r + 0 ] );
+                               PicoSetSurfaceIndex( picoSurface, ( v * 6 + 4 ), (picoIndex_t) pw[ r + 2 ] );
+                               PicoSetSurfaceIndex( picoSurface, ( v * 6 + 5 ), (picoIndex_t) pw[ r + 3 ] );
                        }
                }
        }
-       
+
        /* free stuff */
        _pico_free_parser( p );
        _pico_free( heightmap );
        _pico_free( colormap );
-       
+
        /* return the new pico model */
        return picoModel;
 }
@@ -590,15 +587,15 @@ static picoModel_t *_terrain_load( PM_PARAMS_LOAD )
 /* pico file format module definition */
 const picoModule_t picoModuleTerrain =
 {
-       "1.3",                                          /* module version string */
-       "PicoTerrain",                          /* module display name */
-       "Randy Reddig",                         /* author's name */
-       "2003 Randy Reddig",            /* module copyright */
+       "1.3",                      /* module version string */
+       "PicoTerrain",              /* module display name */
+       "Randy Reddig",             /* author's name */
+       "2003 Randy Reddig",        /* module copyright */
        {
-               "picoterrain", NULL, NULL, NULL /* default extensions to use */
+               "picoterrain", NULL, NULL, NULL /* default extensions to use */
        },
-       _terrain_canload,                       /* validation routine */
-       _terrain_load,                          /* load routine */
-        NULL,                                          /* save validation routine */
-        NULL                                           /* save routine */
+       _terrain_canload,           /* validation routine */
+       _terrain_load,              /* load routine */
+       NULL,                       /* save validation routine */
+       NULL                        /* save routine */
 };