128 lines
2.1 KiB
C
128 lines
2.1 KiB
C
/*
|
|
* This file is automaticaly generated, Please dont edit this file!
|
|
*/
|
|
#include <engine/resourceManager.h>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
texture2D * resourceManager_loadPngImage( resourceManager * this, char * name ) {
|
|
|
|
texture2D * texture = texture2D_newPointer();
|
|
|
|
png_structp png_ptr;
|
|
|
|
png_infop info_ptr;
|
|
|
|
unsigned int sig_read = 0;
|
|
|
|
int color_type;
|
|
|
|
int interlace_type;
|
|
|
|
FILE * fp;
|
|
|
|
if ( ( fp = fopen( name, "rb" ) ) == NULL ) {
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
png_ptr = png_create_read_struct( PNG_LIBPNG_VER_STRING, NULL, NULL, NULL );
|
|
|
|
if ( png_ptr == NULL ) {
|
|
|
|
fclose( fp );
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
info_ptr = png_create_info_struct( png_ptr );
|
|
|
|
if ( info_ptr == NULL ) {
|
|
|
|
fclose(fp);
|
|
|
|
png_destroy_read_struct( &png_ptr, NULL, NULL );
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
if ( setjmp( png_jmpbuf( png_ptr ) ) ) {
|
|
|
|
png_destroy_read_struct( &png_ptr, &info_ptr, NULL );
|
|
|
|
fclose( fp );
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
png_init_io( png_ptr, fp );
|
|
|
|
png_set_sig_bytes( png_ptr, sig_read );
|
|
|
|
png_read_png( png_ptr, info_ptr, PNG_TRANSFORM_STRIP_16 | PNG_TRANSFORM_PACKING | PNG_TRANSFORM_EXPAND, NULL );
|
|
|
|
png_uint_32 width, height;
|
|
|
|
int bit_depth;
|
|
|
|
png_get_IHDR( png_ptr, info_ptr, &width, &height, &bit_depth, &color_type, &interlace_type, NULL, NULL );
|
|
|
|
unsigned int row_bytes = png_get_rowbytes( png_ptr, info_ptr );
|
|
|
|
|
|
|
|
texture->width = width;
|
|
|
|
texture->height = height;
|
|
|
|
texture->hasAlpha = ( color_type == PNG_COLOR_TYPE_RGBA );
|
|
|
|
texture->data = ( unsigned char * ) malloc( row_bytes * texture->height );
|
|
|
|
|
|
png_bytepp row_pointers = png_get_rows( png_ptr, info_ptr );
|
|
|
|
for (int i = 0; i < texture->height; i++) {
|
|
|
|
|
|
|
|
|
|
|
|
memcpy( texture->data + ( row_bytes * ( texture->height - 1 - i ) ), row_pointers[ i ], row_bytes );
|
|
|
|
}
|
|
|
|
png_destroy_read_struct( &png_ptr, &info_ptr, NULL );
|
|
|
|
fclose( fp );
|
|
|
|
return texture;
|
|
|
|
}
|
|
|
|
resourceManager resourceManager_new() {
|
|
|
|
resourceManager instance;
|
|
|
|
return instance;
|
|
|
|
}
|
|
|
|
resourceManager * resourceManager_newPointer() {
|
|
|
|
struct resourceManager * pointer = malloc( sizeof ( struct resourceManager ) );
|
|
|
|
return pointer;
|
|
|
|
}
|
|
|