/* get dds info */
if ( DDSGetInfo( (ddsBuffer_t*) buffer, &w, &h, &pf ) ) {
- Sys_Printf( "WARNING: Invalid DDS texture\n" );
+ Sys_FPrintf( SYS_WRN, "WARNING: Invalid DDS texture\n" );
return;
}
/* only certain types of dds textures are supported */
if ( pf != DDS_PF_ARGB8888 && pf != DDS_PF_DXT1 && pf != DDS_PF_DXT3 && pf != DDS_PF_DXT5 ) {
- Sys_Printf( "WARNING: Only DDS texture formats ARGB8888, DXT1, DXT3, and DXT5 are supported (%d)\n", pf );
+ Sys_FPrintf( SYS_WRN, "WARNING: Only DDS texture formats ARGB8888, DXT1, DXT3, and DXT5 are supported (%d)\n", pf );
return;
}
{
byte *buffer;
png_size_t size, offset;
-}
-pngBuffer_t;
+} pngBuffer_t;
void PNGReadData( png_struct *png, png_byte *buffer, png_size_t size ){
pngBuffer_t *pb = (pngBuffer_t*) png_get_io_ptr( png );
png_struct *png;
png_info *info, *end;
pngBuffer_t pb;
+ //pngBuffer_t *pb = (pngBuffer_t*) png_get_io_ptr( png );
int bitDepth, colorType;
png_uint_32 w, h, i;
byte **rowPointers;
-
/* dummy check */
if ( buffer == NULL || size <= 0 || pixels == NULL || width == NULL || height == NULL ) {
return;
/* determine if this is a png file */
if ( png_sig_cmp( buffer, 0, 8 ) != 0 ) {
- Sys_Printf( "WARNING: Invalid PNG file\n" );
+ Sys_FPrintf( SYS_WRN, "WARNING: Invalid PNG file\n" );
return;
}
/* create png structs */
png = png_create_read_struct( PNG_LIBPNG_VER_STRING, NULL, NULL, NULL );
if ( png == NULL ) {
- Sys_Printf( "WARNING: Unable to create PNG read struct\n" );
+ Sys_FPrintf( SYS_WRN, "WARNING: Unable to create PNG read struct\n" );
return;
}
info = png_create_info_struct( png );
if ( info == NULL ) {
- Sys_Printf( "WARNING: Unable to create PNG info struct\n" );
+ Sys_FPrintf( SYS_WRN, "WARNING: Unable to create PNG info struct\n" );
png_destroy_read_struct( &png, NULL, NULL );
return;
}
end = png_create_info_struct( png );
if ( end == NULL ) {
- Sys_Printf( "WARNING: Unable to create PNG end info struct\n" );
+ Sys_FPrintf( SYS_WRN, "WARNING: Unable to create PNG end info struct\n" );
png_destroy_read_struct( &png, &info, NULL );
return;
}
pb.size = size;
pb.offset = 0;
png_set_read_fn( png, &pb, PNGReadData );
+ //png->io_ptr = &pb; /* hack! */
/* set error longjmp */
- if ( setjmp( png_jmpbuf( png ) ) ) {
- Sys_Printf( "WARNING: An error occurred reading PNG image\n" );
+ if ( setjmp( png_jmpbuf(png) ) ) {
+ Sys_FPrintf( SYS_WRN, "WARNING: An error occurred reading PNG image\n" );
png_destroy_read_struct( &png, &info, &end );
return;
}
size = vfsLoadFile( (const char*) name, (void**) &buffer, 0 );
if ( size > 0 ) {
if ( LoadJPGBuff( buffer, size, &image->pixels, &image->width, &image->height ) == -1 && image->pixels != NULL ) {
- Sys_Printf( "WARNING: LoadJPGBuff: %s\n", (unsigned char*) image->pixels );
+ // On error, LoadJPGBuff might store a pointer to the error message in image->pixels
+ Sys_FPrintf( SYS_WRN, "WARNING: LoadJPGBuff: %s\n", (unsigned char*) image->pixels );
}
alphaHack = qtrue;
}
}
#endif
}
+ else
+ {
+ /* attempt to load ktx */
+ StripExtension( name );
+ strcat( name, ".ktx" );
+ size = vfsLoadFile( (const char*) name, (void**) &buffer, 0 );
+ if ( size > 0 ) {
+ LoadKTXBufferFirstImage( buffer, size, &image->pixels, &image->width, &image->height );
+ }
+ }
}
}
}
if ( size > 0 ) {
unsigned char *pixels;
int width, height;
- if ( LoadJPGBuff( buffer, size, &pixels, &width, &height ) == -1 && pixels != NULL ) {
- Sys_Printf( "WARNING: LoadJPGBuff: %s\n", (unsigned char*) image->pixels );
- }
- if ( pixels && width == image->width && height == image->height ) {
- int i;
- for ( i = 0; i < width * height; ++i )
- image->pixels[4 * i + 3] = pixels[4 * i + 2]; // copy alpha from blue channel
+ if ( LoadJPGBuff( buffer, size, &pixels, &width, &height ) == -1 ) {
+ if (pixels) {
+ // On error, LoadJPGBuff might store a pointer to the error message in pixels
+ Sys_FPrintf( SYS_WRN, "WARNING: LoadJPGBuff %s %s\n", name, (unsigned char*) pixels );
+ }
+ } else {
+ if ( width == image->width && height == image->height ) {
+ int i;
+ for ( i = 0; i < width * height; ++i )
+ image->pixels[4 * i + 3] = pixels[4 * i + 2]; // copy alpha from blue channel
+ }
+ free( pixels );
}
- free( pixels );
free( buffer );
}
}