Commit 1483f2b8 authored by DolceTriade's avatar DolceTriade Committed by Thomas Debesse

q3map2: Add crn loading support to q3map2

parent ca241db6
......@@ -31,6 +31,8 @@ include_directories(${ZLIB_INCLUDE_DIRS})
find_package(Minizip REQUIRED)
include_directories(${Minizip_INCLUDE_DIRS})
include_directories(${CMAKE_SOURCE_DIR}/libs/crunch)
set(q3map2_games
q3map2/game_darkplaces.h
q3map2/game_dq.h
......@@ -127,6 +129,7 @@ target_link_libraries(q3map2
${Minizip_LIBRARIES}
${ZLIB_LIBRARIES}
ddslib
crnlib
etclib
filematch
l_net
......
......@@ -86,6 +86,26 @@ static void LoadDDSBuffer( byte *buffer, int size, byte **pixels, int *width, in
DDSDecompress( (ddsBuffer_t*) buffer, *pixels );
}
/*
LoadCRNBuffer
loads a crn image into a valid rgba image
*/
void LoadCRNBuffer( byte *buffer, int size, byte **pixels, int *width, int *height) {
/* dummy check */
if ( buffer == NULL || size <= 0 || pixels == NULL || width == NULL || height == NULL ) {
return;
}
if ( !GetCRNImageSize( buffer, size, width, height ) ) {
Sys_FPrintf( SYS_WRN, "WARNING: Error getting crn imag dimensions.\n");;
return;
}
int outBufSize = *width * *height * 4;
*pixels = safe_malloc( outBufSize );
if ( !ConvertCRNtoRGBA( buffer, size, outBufSize, *pixels) ) {
Sys_FPrintf( SYS_WRN, "WARNING: Error decoding crn image.\n", 0 );
return;
}
}
/*
......@@ -437,6 +457,16 @@ image_t *ImageLoad( const char *filename ){
if ( size > 0 ) {
LoadKTXBufferFirstImage( buffer, size, &image->pixels, &image->width, &image->height );
}
else
{
/* attempt to load crn */
StripExtension( name );
strcat( name, ".crn" );
size = vfsLoadFile( ( const char* ) name, ( void** ) &buffer, 0 );
if ( size > 0 ) {
LoadCRNBuffer( buffer, size, &image->pixels, &image->width, &image->height );
}
}
}
}
}
......@@ -473,7 +503,7 @@ image_t *ImageLoad( const char *filename ){
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;
......
......@@ -70,6 +70,7 @@
#include "mathlib.h"
#include "md5lib.h"
#include "ddslib.h"
#include "crn_rgba.h"
#include "picomodel.h"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment