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 ));
26+ if (img -> data != NULL ) {
27+ memset (img -> data , 0 , img -> len );
28+ }
29+
2030 return SD_SUCCESS ;
2131}
2232
@@ -27,7 +37,8 @@ int sd_vga_image_copy(sd_vga_image *dst, const sd_vga_image *src) {
2737 dst -> w = src -> w ;
2838 dst -> h = src -> h ;
2939 dst -> len = src -> len ;
30- dst -> data = omf_calloc (src -> len , 1 );
40+ dst -> data = omf_malloc (src -> len );
41+ dst -> transparent = src -> transparent ;
3142 memcpy (dst -> data , src -> data , src -> len );
3243 return SD_SUCCESS ;
3344}
@@ -36,7 +47,7 @@ void sd_vga_image_free(sd_vga_image *img) {
3647 if (img == NULL ) {
3748 return ;
3849 }
39- omf_free (img -> data );
50+ omf_free_with_options (img -> data , ALLOC_HINT_TEXTURE );
4051}
4152
4253int sd_vga_image_decode (sd_rgba_image * dst , const sd_vga_image * src , const vga_palette * pal ) {
@@ -62,6 +73,9 @@ int sd_vga_image_decode(sd_rgba_image *dst, const sd_vga_image *src, const vga_p
6273}
6374
6475int sd_vga_image_from_png (sd_vga_image * img , const char * filename ) {
76+ #if defined(MIN_BUILD )
77+ return 0 ;
78+ #else
6579 png_structp png_ptr ;
6680 png_infop info_ptr ;
6781 int ret = SD_SUCCESS ;
@@ -136,7 +150,7 @@ int sd_vga_image_from_png(sd_vga_image *img, const char *filename) {
136150 png_read_image (png_ptr , row_pointers );
137151
138152 // Convert
139- if (sd_vga_image_create (img , w , h ) != SD_SUCCESS ) {
153+ if (sd_vga_image_create (img , w , h , DEFAULT_NOT_TRANSPARENT ) != SD_SUCCESS ) {
140154 ret = SD_OUT_OF_MEMORY ;
141155 goto error_3 ;
142156 }
@@ -159,6 +173,7 @@ int sd_vga_image_from_png(sd_vga_image *img, const char *filename) {
159173 fclose (handle );
160174error_0 :
161175 return ret ;
176+ #endif
162177}
163178
164179int sd_vga_image_to_png (const sd_vga_image * img , const vga_palette * pal , const char * filename ) {
0 commit comments