src/lib/png.c
changeset 61 31650ef395d3
parent 56 d5e3089906da
child 69 1d188aa94aee
--- a/src/lib/png.c	Mon Jan 25 02:00:14 2010 +0200
+++ b/src/lib/png.c	Mon Jan 25 02:03:25 2010 +0200
@@ -111,7 +111,7 @@
 /**
  * Decode the PNG data directly to memory - not good for sparse backgrounds
  */
-static int pt_png_decode_raw (struct pt_png_img *img, const struct pt_png_header *header, const struct pt_image_params *params, uint8_t *out)
+static int pt_png_decode_direct (struct pt_png_img *img, const struct pt_png_header *header, const struct pt_image_params *params, uint8_t *out)
 {
     // write out raw image data a row at a time
     for (size_t row = 0; row < header->height; row++) {
@@ -180,7 +180,14 @@
 {
     int err;
 
-    if ((err = pt_png_decode_sparse(img, header, params, out)))
+    // decode
+    if (params->background_color)
+        err = pt_png_decode_sparse(img, header, params, out);
+
+    else
+        err = pt_png_decode_direct(img, header, params, out);
+    
+    if (err)
         return err;
     
     // finish off, ignore trailing data
@@ -363,7 +370,8 @@
 
     // set palette?
     if (header->color_type == PNG_COLOR_TYPE_PALETTE)
-        png_set_PLTE(img->png, img->info, header->palette, header->num_palette);
+        // oops... missing const
+        png_set_PLTE(img->png, img->info, (png_colorp) header->palette, header->num_palette);
 
     // write meta-info
     png_write_info(img->png, img->info);