#include <math.h>
#include "gensurf.h"
-void GenerateBitmapMapping(){
- double value;
- double C0, C1;
- double x, y;
- int i, j;
- int O00,O01,O10,O11;
- int r0, r1, c0, c1;
- int color;
- unsigned char *colors;
-
- if ( !gbmp.colors ) {
- return;
- }
-
- colors = gbmp.colors;
-
- for ( j = 0; j <= NV; j++ )
- {
- y = (double)( j * ( gbmp.height - 1 ) ) / (double)NV;
- r0 = (int)floor( y );
- r1 = (int)ceil( y );
- for ( i = 0; i <= NH; i++ )
- {
- x = (double)( i * ( gbmp.width - 1 ) ) / (double)NH;
- c0 = (int)floor( x );
- c1 = (int)ceil( x );
- O00 = r0 * gbmp.width + c0;
- O01 = r0 * gbmp.width + c1;
- O10 = r1 * gbmp.width + c0;
- O11 = r1 * gbmp.width + c1;
- C0 = (double)colors[O00] + (double)( colors[O01] - colors[O00] ) * ( x - (double)c0 );
- C1 = (double)colors[O10] + (double)( colors[O11] - colors[O10] ) * ( x - (double)c0 );
- color = (int)( C0 + ( C1 - C0 ) * ( y - r0 ) );
-
- value = CalculateSnapValue( gbmp.black_value + color * ( ( gbmp.white_value - gbmp.black_value ) / 255. ) );
-
- switch ( Plane )
- {
- case PLANE_XZ0:
- case PLANE_XZ1:
- xyz[i][j].p[1] = value;
- break;
- case PLANE_YZ0:
- case PLANE_YZ1:
- xyz[i][j].p[0] = value;
- break;
- default:
- xyz[i][j].p[2] = value;
- }
- }
- }
+void GenerateBitmapMapping()
+{
+ double value;
+ double C0, C1;
+ double x, y;
+ int i, j;
+ int O00, O01, O10, O11;
+ int r0, r1, c0, c1;
+ int color;
+ unsigned char *colors;
+
+ if (!gbmp.colors) {
+ return;
+ }
+
+ colors = gbmp.colors;
+
+ for (j = 0; j <= NV; j++) {
+ y = (double) (j * (gbmp.height - 1)) / (double) NV;
+ r0 = (int) floor(y);
+ r1 = (int) ceil(y);
+ for (i = 0; i <= NH; i++) {
+ x = (double) (i * (gbmp.width - 1)) / (double) NH;
+ c0 = (int) floor(x);
+ c1 = (int) ceil(x);
+ O00 = r0 * gbmp.width + c0;
+ O01 = r0 * gbmp.width + c1;
+ O10 = r1 * gbmp.width + c0;
+ O11 = r1 * gbmp.width + c1;
+ C0 = (double) colors[O00] + (double) (colors[O01] - colors[O00]) * (x - (double) c0);
+ C1 = (double) colors[O10] + (double) (colors[O11] - colors[O10]) * (x - (double) c0);
+ color = (int) (C0 + (C1 - C0) * (y - r0));
+
+ value = CalculateSnapValue(gbmp.black_value + color * ((gbmp.white_value - gbmp.black_value) / 255.));
+
+ switch (Plane) {
+ case PLANE_XZ0:
+ case PLANE_XZ1:
+ xyz[i][j].p[1] = value;
+ break;
+ case PLANE_YZ0:
+ case PLANE_YZ1:
+ xyz[i][j].p[0] = value;
+ break;
+ default:
+ xyz[i][j].p[2] = value;
+ }
+ }
+ }
}
-static unsigned char* OpenBitmapFile(){
-#define INVALID_FORMAT do { \
- fprintf( stderr,"%s:%d: Error file '%s' is malformed.\n",__FILE__,__LINE__,gbmp.name ); \
- fclose( fp ); \
- return NULL; \
+static unsigned char *OpenBitmapFile()
+{
+#define INVALID_FORMAT do { \
+ fprintf( stderr,"%s:%d: Error file '%s' is malformed.\n",__FILE__,__LINE__,gbmp.name ); \
+ fclose( fp ); \
+ return NULL; \
} while ( 0 );
- int32_t bmWidth;
- int32_t bmHeight;
- uint16_t bmPlanes;
- uint16_t bmBitsPixel;
- uint8_t m1,m2;
- uint32_t sizeimage;
- int16_t res1,res2;
- int32_t filesize, pixoff;
- int32_t bmisize, compression;
- int32_t xscale, yscale;
- int32_t colors, impcol;
- uint32_t m_bytesRead = 0;
- unsigned char *image;
- FILE *fp;
-
- fp = fopen( gbmp.name, "rb" );
- if ( fp == NULL ) {
- fprintf( stderr,"Error: Invalid filename '%s'\n",gbmp.name );
- return NULL;
- }
-
- long rc;
- rc = fread( &m1, 1, 1, fp );
- m_bytesRead++;
- if ( rc == -1 ) {
- INVALID_FORMAT;
- }
-
- rc = fread( &m2, 1, 1, fp );
- m_bytesRead++;
- if ( ( m1 != 'B' ) || ( m2 != 'M' ) ) {
- INVALID_FORMAT;
- }
-
- rc = fread( (uint32_t*)&( filesize ),4,1,fp ); m_bytesRead += 4;
- if ( rc != 1 ) {
- INVALID_FORMAT;
- }
-
- rc = fread( (uint16_t*)&( res1 ),2,1,fp ); m_bytesRead += 2;
- if ( rc != 1 ) {
- INVALID_FORMAT;
- }
-
- rc = fread( (uint16_t*)&( res2 ),2,1,fp ); m_bytesRead += 2;
- if ( rc != 1 ) {
- INVALID_FORMAT;
- }
-
- rc = fread( (uint32_t*)&( pixoff ),4,1,fp ); m_bytesRead += 4;
- if ( rc != 1 ) {
- INVALID_FORMAT;
- }
-
- rc = fread( (uint32_t*)&( bmisize ),4,1,fp ); m_bytesRead += 4;
- if ( rc != 1 ) {
- INVALID_FORMAT;
- }
-
- rc = fread( (uint32_t *)&( bmWidth ),4,1,fp ); m_bytesRead += 4;
- if ( rc != 1 ) {
- INVALID_FORMAT;
- }
-
- rc = fread( (uint32_t*)&( bmHeight ),4,1,fp ); m_bytesRead += 4;
- if ( rc != 1 ) {
- INVALID_FORMAT;
- }
-
- rc = fread( (uint16_t*)&( bmPlanes ),2,1,fp ); m_bytesRead += 2;
- if ( rc != 1 ) {
- INVALID_FORMAT;
- }
-
- rc = fread( (uint16_t*)&( bmBitsPixel ),2,1,fp ); m_bytesRead += 2;
- if ( rc != 1 ) {
- INVALID_FORMAT;
- }
-
- rc = fread( (uint32_t*)&( compression ),4,1,fp ); m_bytesRead += 4;
- if ( rc != 1 ) {
- INVALID_FORMAT;
- }
-
- rc = fread( (uint32_t*)&( sizeimage ),4,1,fp ); m_bytesRead += 4;
- if ( rc != 1 ) {
- INVALID_FORMAT;
- }
-
- rc = fread( (uint32_t*)&( xscale ),4,1,fp ); m_bytesRead += 4;
- if ( rc != 1 ) {
- INVALID_FORMAT;
- }
-
- rc = fread( (uint32_t*)&( yscale ),4,1,fp ); m_bytesRead += 4;
- if ( rc != 1 ) {
- INVALID_FORMAT;
- }
-
- rc = fread( (uint32_t*)&( colors ),4,1,fp ); m_bytesRead += 4;
- if ( rc != 1 ) {
- INVALID_FORMAT;
- }
-
- rc = fread( (uint32_t*)&( impcol ),4,1,fp ); m_bytesRead += 4;
- if ( rc != 1 ) {
- INVALID_FORMAT;
- }
-
- if ( bmBitsPixel != 8 ) {
- g_FuncTable.m_pfnMessageBox( g_pWnd, "This is not an 8-bit image. GenSurf can't use it.",
- "Bitmap", eMB_OK, eMB_ICONWARNING );
- fclose( fp );
- return NULL;
- }
-
- if ( colors == 0 ) {
- colors = 1 << bmBitsPixel;
- }
-
- if ( bmBitsPixel != 24 ) {
- int i;
- for ( i = 0; i < colors; i++ )
- {
- unsigned char r,g, b, dummy;
-
- rc = fread( &b, 1, 1, fp );
- m_bytesRead++;
- if ( rc != 1 ) {
- INVALID_FORMAT;
- }
-
- rc = fread( &g, 1, 1, fp );
- m_bytesRead++;
- if ( rc != 1 ) {
- INVALID_FORMAT;
- }
-
- rc = fread( &r, 1, 1, fp );
- m_bytesRead++;
- if ( rc != 1 ) {
- INVALID_FORMAT;
- }
-
- rc = fread( &dummy, 1, 1, fp );
- m_bytesRead++;
- if ( rc != 1 ) {
- INVALID_FORMAT;
- }
- }
- }
-
- if ( (long)m_bytesRead > pixoff ) {
- INVALID_FORMAT;
- }
-
- while ( (long)m_bytesRead < pixoff )
- {
- char dummy;
- fread( &dummy,1,1,fp );
- m_bytesRead++;
- }
-
- int w = bmWidth;
- int h = bmHeight;
-
- // set the output params
- image = (unsigned char*)malloc( w * h );
-
- if ( image != NULL ) {
- unsigned char* outbuf = image;
- long row = 0;
- long rowOffset = 0;
-
- if ( compression == 0 ) { // BI_RGB
- for ( row = 0; row < bmHeight; row++ )
- {
- // which row are we working on?
- rowOffset = (long unsigned)row * w;
-
- {
- // pixels are packed as 1 , 4 or 8 bit vals. need to unpack them
- int bit_count = 0;
- unsigned long mask = ( 1 << bmBitsPixel ) - 1;
- unsigned char inbyte = 0;
-
- for ( int col = 0; col < w; col++ )
- {
- int pix = 0;
-
- // if we need another byte
- if ( bit_count <= 0 ) {
- bit_count = 8;
- if ( fread( &inbyte,1,1,fp ) != 1 ) {
- free( image );
- INVALID_FORMAT;
- }
- m_bytesRead++;
- }
-
- // keep track of where we are in the bytes
- bit_count -= bmBitsPixel;
- pix = ( inbyte >> bit_count ) & mask;
-
- // lookup the color from the colormap - stuff it in our buffer
- // swap red and blue
- *( outbuf + rowOffset + col ) = pix;
- }
-
- // read DWORD padding
- while ( ( m_bytesRead - pixoff ) & 3 )
- {
- char dummy;
- if ( fread( &dummy,1,1,fp ) != 1 ) {
- free( image );
- INVALID_FORMAT;
- }
- m_bytesRead++;
- }
- }
- }
- }
- else // compression != 0
- {
- int i, x = 0;
- unsigned char c, c1 = 0, *pp;
- row = 0;
- pp = outbuf;
-
- if ( bmBitsPixel == 8 ) {
- while ( row < bmHeight )
- {
- c = getc( fp );
-
- if ( c ) {
- // encoded mode
- c1 = getc( fp );
- for ( i = 0; i < c; x++, i++ )
- {
- *pp = c1; pp++;
- }
- }
- else
- {
- // c==0x00, escape codes
- c = getc( fp );
-
- if ( c == 0x00 ) { // end of line
- row++;
- x = 0;
- pp = outbuf + row * bmWidth;
- }
- else if ( c == 0x01 ) {
- break; // end of pic
- }
- else if ( c == 0x02 ) { // delta
- c = getc( fp );
- x += c;
- c = getc( fp );
- row += c;
- pp = outbuf + x + row * bmWidth;
- }
- else // absolute mode
- {
- for ( i = 0; i < c; x++, i++ )
- {
- c1 = getc( fp );
- *pp = c1; pp++;
- }
-
- if ( c & 1 ) {
- getc( fp ); // odd length run: read an extra pad byte
- }
- }
- }
- }
- }
- else if ( bmBitsPixel == 4 ) {
- while ( row < bmHeight )
- {
- c = getc( fp );
-
- if ( c ) {
- // encoded mode
- c1 = getc( fp );
- for ( i = 0; i < c; x++, i++ )
- {
- *pp = ( i & 1 ) ? ( c1 & 0x0f ) : ( ( c1 >> 4 ) & 0x0f ); pp++;
- }
- }
- else
- {
- // c==0x00, escape codes
- c = getc( fp );
-
- if ( c == 0x00 ) { // end of line
- row++;
- x = 0;
- pp = outbuf + bmHeight * bmWidth;
- }
- else if ( c == 0x01 ) {
- break; // end of pic
- }
- else if ( c == 0x02 ) { // delta
- c = getc( fp );
- x += c;
- c = getc( fp );
- row += c;
- pp = outbuf + x + row * bmWidth;
- }
- else // absolute mode
- {
- for ( i = 0; i < c; x++, i++ )
- {
- if ( ( i & 1 ) == 0 ) {
- c1 = getc( fp );
- }
- *pp = ( i & 1 ) ? ( c1 & 0x0f ) : ( ( c1 >> 4 ) & 0x0f ); pp++;
- }
-
- if ( ( ( c & 3 ) == 1 ) || ( ( c & 3 ) == 2 ) ) {
- getc( fp ); // odd length run: read an extra pad byte
- }
- }
- }
- }
- }
- }
- }
- fclose( fp );
-
- gbmp.width = w;
- gbmp.height = h;
- if ( gbmp.colors ) {
- free( gbmp.colors );
- }
- gbmp.colors = image;
- return image;
+ int32_t bmWidth;
+ int32_t bmHeight;
+ uint16_t bmPlanes;
+ uint16_t bmBitsPixel;
+ uint8_t m1, m2;
+ uint32_t sizeimage;
+ int16_t res1, res2;
+ int32_t filesize, pixoff;
+ int32_t bmisize, compression;
+ int32_t xscale, yscale;
+ int32_t colors, impcol;
+ uint32_t m_bytesRead = 0;
+ unsigned char *image;
+ FILE *fp;
+
+ fp = fopen(gbmp.name, "rb");
+ if (fp == NULL) {
+ fprintf(stderr, "Error: Invalid filename '%s'\n", gbmp.name);
+ return NULL;
+ }
+
+ long rc;
+ rc = fread(&m1, 1, 1, fp);
+ m_bytesRead++;
+ if (rc == -1) {
+ INVALID_FORMAT;
+ }
+
+ rc = fread(&m2, 1, 1, fp);
+ m_bytesRead++;
+ if ((m1 != 'B') || (m2 != 'M')) {
+ INVALID_FORMAT;
+ }
+
+ rc = fread((uint32_t * ) & (filesize), 4, 1, fp);
+ m_bytesRead += 4;
+ if (rc != 1) {
+ INVALID_FORMAT;
+ }
+
+ rc = fread((uint16_t * ) & (res1), 2, 1, fp);
+ m_bytesRead += 2;
+ if (rc != 1) {
+ INVALID_FORMAT;
+ }
+
+ rc = fread((uint16_t * ) & (res2), 2, 1, fp);
+ m_bytesRead += 2;
+ if (rc != 1) {
+ INVALID_FORMAT;
+ }
+
+ rc = fread((uint32_t * ) & (pixoff), 4, 1, fp);
+ m_bytesRead += 4;
+ if (rc != 1) {
+ INVALID_FORMAT;
+ }
+
+ rc = fread((uint32_t * ) & (bmisize), 4, 1, fp);
+ m_bytesRead += 4;
+ if (rc != 1) {
+ INVALID_FORMAT;
+ }
+
+ rc = fread((uint32_t * ) & (bmWidth), 4, 1, fp);
+ m_bytesRead += 4;
+ if (rc != 1) {
+ INVALID_FORMAT;
+ }
+
+ rc = fread((uint32_t * ) & (bmHeight), 4, 1, fp);
+ m_bytesRead += 4;
+ if (rc != 1) {
+ INVALID_FORMAT;
+ }
+
+ rc = fread((uint16_t * ) & (bmPlanes), 2, 1, fp);
+ m_bytesRead += 2;
+ if (rc != 1) {
+ INVALID_FORMAT;
+ }
+
+ rc = fread((uint16_t * ) & (bmBitsPixel), 2, 1, fp);
+ m_bytesRead += 2;
+ if (rc != 1) {
+ INVALID_FORMAT;
+ }
+
+ rc = fread((uint32_t * ) & (compression), 4, 1, fp);
+ m_bytesRead += 4;
+ if (rc != 1) {
+ INVALID_FORMAT;
+ }
+
+ rc = fread((uint32_t * ) & (sizeimage), 4, 1, fp);
+ m_bytesRead += 4;
+ if (rc != 1) {
+ INVALID_FORMAT;
+ }
+
+ rc = fread((uint32_t * ) & (xscale), 4, 1, fp);
+ m_bytesRead += 4;
+ if (rc != 1) {
+ INVALID_FORMAT;
+ }
+
+ rc = fread((uint32_t * ) & (yscale), 4, 1, fp);
+ m_bytesRead += 4;
+ if (rc != 1) {
+ INVALID_FORMAT;
+ }
+
+ rc = fread((uint32_t * ) & (colors), 4, 1, fp);
+ m_bytesRead += 4;
+ if (rc != 1) {
+ INVALID_FORMAT;
+ }
+
+ rc = fread((uint32_t * ) & (impcol), 4, 1, fp);
+ m_bytesRead += 4;
+ if (rc != 1) {
+ INVALID_FORMAT;
+ }
+
+ if (bmBitsPixel != 8) {
+ g_FuncTable.m_pfnMessageBox(g_pWnd, "This is not an 8-bit image. GenSurf can't use it.",
+ "Bitmap", eMB_OK, eMB_ICONWARNING);
+ fclose(fp);
+ return NULL;
+ }
+
+ if (colors == 0) {
+ colors = 1 << bmBitsPixel;
+ }
+
+ if (bmBitsPixel != 24) {
+ int i;
+ for (i = 0; i < colors; i++) {
+ unsigned char r, g, b, dummy;
+
+ rc = fread(&b, 1, 1, fp);
+ m_bytesRead++;
+ if (rc != 1) {
+ INVALID_FORMAT;
+ }
+
+ rc = fread(&g, 1, 1, fp);
+ m_bytesRead++;
+ if (rc != 1) {
+ INVALID_FORMAT;
+ }
+
+ rc = fread(&r, 1, 1, fp);
+ m_bytesRead++;
+ if (rc != 1) {
+ INVALID_FORMAT;
+ }
+
+ rc = fread(&dummy, 1, 1, fp);
+ m_bytesRead++;
+ if (rc != 1) {
+ INVALID_FORMAT;
+ }
+ }
+ }
+
+ if ((long) m_bytesRead > pixoff) {
+ INVALID_FORMAT;
+ }
+
+ while ((long) m_bytesRead < pixoff) {
+ char dummy;
+ fread(&dummy, 1, 1, fp);
+ m_bytesRead++;
+ }
+
+ int w = bmWidth;
+ int h = bmHeight;
+
+ // set the output params
+ image = (unsigned char *) malloc(w * h);
+
+ if (image != NULL) {
+ unsigned char *outbuf = image;
+ long row = 0;
+ long rowOffset = 0;
+
+ if (compression == 0) { // BI_RGB
+ for (row = 0; row < bmHeight; row++) {
+ // which row are we working on?
+ rowOffset = (long unsigned) row * w;
+
+ {
+ // pixels are packed as 1 , 4 or 8 bit vals. need to unpack them
+ int bit_count = 0;
+ unsigned long mask = (1 << bmBitsPixel) - 1;
+ unsigned char inbyte = 0;
+
+ for (int col = 0; col < w; col++) {
+ int pix = 0;
+
+ // if we need another byte
+ if (bit_count <= 0) {
+ bit_count = 8;
+ if (fread(&inbyte, 1, 1, fp) != 1) {
+ free(image);
+ INVALID_FORMAT;
+ }
+ m_bytesRead++;
+ }
+
+ // keep track of where we are in the bytes
+ bit_count -= bmBitsPixel;
+ pix = (inbyte >> bit_count) & mask;
+
+ // lookup the color from the colormap - stuff it in our buffer
+ // swap red and blue
+ *(outbuf + rowOffset + col) = pix;
+ }
+
+ // read DWORD padding
+ while ((m_bytesRead - pixoff) & 3) {
+ char dummy;
+ if (fread(&dummy, 1, 1, fp) != 1) {
+ free(image);
+ INVALID_FORMAT;
+ }
+ m_bytesRead++;
+ }
+ }
+ }
+ } else // compression != 0
+ {
+ int i, x = 0;
+ unsigned char c, c1 = 0, *pp;
+ row = 0;
+ pp = outbuf;
+
+ if (bmBitsPixel == 8) {
+ while (row < bmHeight) {
+ c = getc(fp);
+
+ if (c) {
+ // encoded mode
+ c1 = getc(fp);
+ for (i = 0; i < c; x++, i++) {
+ *pp = c1;
+ pp++;
+ }
+ } else {
+ // c==0x00, escape codes
+ c = getc(fp);
+
+ if (c == 0x00) { // end of line
+ row++;
+ x = 0;
+ pp = outbuf + row * bmWidth;
+ } else if (c == 0x01) {
+ break; // end of pic
+ } else if (c == 0x02) { // delta
+ c = getc(fp);
+ x += c;
+ c = getc(fp);
+ row += c;
+ pp = outbuf + x + row * bmWidth;
+ } else // absolute mode
+ {
+ for (i = 0; i < c; x++, i++) {
+ c1 = getc(fp);
+ *pp = c1;
+ pp++;
+ }
+
+ if (c & 1) {
+ getc(fp); // odd length run: read an extra pad byte
+ }
+ }
+ }
+ }
+ } else if (bmBitsPixel == 4) {
+ while (row < bmHeight) {
+ c = getc(fp);
+
+ if (c) {
+ // encoded mode
+ c1 = getc(fp);
+ for (i = 0; i < c; x++, i++) {
+ *pp = (i & 1) ? (c1 & 0x0f) : ((c1 >> 4) & 0x0f);
+ pp++;
+ }
+ } else {
+ // c==0x00, escape codes
+ c = getc(fp);
+
+ if (c == 0x00) { // end of line
+ row++;
+ x = 0;
+ pp = outbuf + bmHeight * bmWidth;
+ } else if (c == 0x01) {
+ break; // end of pic
+ } else if (c == 0x02) { // delta
+ c = getc(fp);
+ x += c;
+ c = getc(fp);
+ row += c;
+ pp = outbuf + x + row * bmWidth;
+ } else // absolute mode
+ {
+ for (i = 0; i < c; x++, i++) {
+ if ((i & 1) == 0) {
+ c1 = getc(fp);
+ }
+ *pp = (i & 1) ? (c1 & 0x0f) : ((c1 >> 4) & 0x0f);
+ pp++;
+ }
+
+ if (((c & 3) == 1) || ((c & 3) == 2)) {
+ getc(fp); // odd length run: read an extra pad byte
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ fclose(fp);
+
+ gbmp.width = w;
+ gbmp.height = h;
+ if (gbmp.colors) {
+ free(gbmp.colors);
+ }
+ gbmp.colors = image;
+ return image;
}
-bool OpenBitmap(){
+bool OpenBitmap()
+{
- OpenBitmapFile();
+ OpenBitmapFile();
- if ( !gbmp.colors ) {
- char Text[256];
+ if (!gbmp.colors) {
+ char Text[256];
- sprintf( Text, "Error opening %s", gbmp.name );
- g_FuncTable.m_pfnMessageBox( g_pWnd, Text, "Bitmap", eMB_OK, eMB_ICONWARNING );
- strcpy( gbmp.name, "" );
- }
+ sprintf(Text, "Error opening %s", gbmp.name);
+ g_FuncTable.m_pfnMessageBox(g_pWnd, Text, "Bitmap", eMB_OK, eMB_ICONWARNING);
+ strcpy(gbmp.name, "");
+ }
- if ( g_pWnd ) {
- gtk_entry_set_text( GTK_ENTRY( g_object_get_data( G_OBJECT( g_pWnd ), "bmp_file" ) ), gbmp.name );
- gtk_widget_set_sensitive( g_object_get_data( G_OBJECT( g_pWnd , "bmp_reload" ) ),
- strlen( gbmp.name ) ? TRUE : FALSE );
+ if (g_pWnd) {
+ gtk_entry_set_text(GTK_ENTRY(g_object_get_data(G_OBJECT(g_pWnd), "bmp_file")), gbmp.name);
+ gtk_widget_set_sensitive(g_object_get_data(G_OBJECT(g_pWnd, "bmp_reload")),
+ strlen(gbmp.name) ? TRUE : FALSE);
- UpdatePreview( true );
- }
+ UpdatePreview(true);
+ }
- return ( gbmp.colors != NULL );
+ return (gbmp.colors != NULL);
}