From 6fb0c7a7a53e1eba7a0f5dc5b1ade312a0d76119 Mon Sep 17 00:00:00 2001 From: Toad King Date: Thu, 14 Jun 2012 03:21:06 -0400 Subject: initial pocketsnes commit --- src/png.c | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/png.c (limited to 'src/png.c') diff --git a/src/png.c b/src/png.c new file mode 100644 index 0000000..2d24c47 --- /dev/null +++ b/src/png.c @@ -0,0 +1,38 @@ +/* + Simple PNG handling library + Under GPL v2 License + 2011 by bitrider +*/ + +#include +#include "lodepng.h" +#include "png.h" + +#define ERROR(err) {if (error) (*error) = PNG_ERROR_OPENING; return NULL;} +gBITMAP *load_png(char *filename, int *error) /* We need to open the file */ +{ + gBITMAP *img = NULL; + unsigned int e; + + // allocate memory + img = malloc(sizeof(gBITMAP)); + if (!img) ERROR(PNG_ERROR_MEMORY); + + img->data = NULL; + + e = LodePNG_decode32_file(&img->data, &img->w, &img->h, filename); + if (e) { + gDestroyBitmap(img); + ERROR(e); + } + + img->bpp = 32; + if (error) (*error) = PNG_OK; + return img; +} + +int save_png(gBITMAP *img, char *filename) { + if ((!img) || (!img->data) || (img->bpp != 32)) return PNG_ERROR_INVALID_INPUT; + + return LodePNG_encode32_file(filename, img->data, img->w, img->h); +} -- cgit v1.2.3