1+ #if !defined(MIN_BUILD )
12#include <png.h>
3+ #endif
4+ #include <assert.h>
25#include <stdint.h>
36#include <stdio.h>
47#include <stdlib.h>
58#include <string.h>
69
710#include "formats/error.h"
11+ #include "formats/transparent.h"
812#include "formats/vga_image.h"
913#include "utils/allocator.h"
1014#include "utils/png_writer.h"
1115
12- int sd_vga_image_create (sd_vga_image * img , unsigned int w , unsigned int h ) {
16+ int sd_vga_image_create (sd_vga_image * img , unsigned int w , unsigned int h , int transparent ) {
1317 if (img == NULL ) {
1418 return SD_INVALID_INPUT ;
1519 }
1620 img -> w = w ;
1721 img -> h = h ;
1822 img -> len = w * h ;
19- img -> data = omf_calloc (1 , w * h );
23+ img -> transparent = transparent ;
24+ img -> data = omf_alloc_with_options (1 , img -> len , ALLOC_HINT_TEXTURE );
25+ assert ((img -> data != NULL ) || (img -> len == 0 ));
2026 return SD_SUCCESS ;
2127}
2228
@@ -27,7 +33,8 @@ int sd_vga_image_copy(sd_vga_image *dst, const sd_vga_image *src) {
2733 dst -> w = src -> w ;
2834 dst -> h = src -> h ;
2935 dst -> len = src -> len ;
30- dst -> data = omf_calloc (src -> len , 1 );
36+ dst -> data = omf_malloc (src -> len );
37+ dst -> transparent = src -> transparent ;
3138 memcpy (dst -> data , src -> data , src -> len );
3239 return SD_SUCCESS ;
3340}
@@ -36,7 +43,7 @@ void sd_vga_image_free(sd_vga_image *img) {
3643 if (img == NULL ) {
3744 return ;
3845 }
39- omf_free (img -> data );
46+ omf_free_with_options (img -> data , ALLOC_HINT_TEXTURE );
4047}
4148
4249int sd_vga_image_decode (sd_rgba_image * dst , const sd_vga_image * src , const vga_palette * pal ) {
@@ -62,6 +69,9 @@ int sd_vga_image_decode(sd_rgba_image *dst, const sd_vga_image *src, const vga_p
6269}
6370
6471int sd_vga_image_from_png (sd_vga_image * img , const char * filename ) {
72+ #if defined(MIN_BUILD )
73+ return 0 ;
74+ #else
6575 png_structp png_ptr ;
6676 png_infop info_ptr ;
6777 int ret = SD_SUCCESS ;
@@ -136,7 +146,7 @@ int sd_vga_image_from_png(sd_vga_image *img, const char *filename) {
136146 png_read_image (png_ptr , row_pointers );
137147
138148 // Convert
139- if (sd_vga_image_create (img , w , h ) != SD_SUCCESS ) {
149+ if (sd_vga_image_create (img , w , h , DEFAULT_NOT_TRANSPARENT ) != SD_SUCCESS ) {
140150 ret = SD_OUT_OF_MEMORY ;
141151 goto error_3 ;
142152 }
@@ -159,6 +169,7 @@ int sd_vga_image_from_png(sd_vga_image *img, const char *filename) {
159169 fclose (handle );
160170error_0 :
161171 return ret ;
172+ #endif
162173}
163174
164175int sd_vga_image_to_png (const sd_vga_image * img , const vga_palette * pal , const char * filename ) {
0 commit comments