]> git.saurik.com Git - wxWidgets.git/blobdiff - src/png/example.c
Revised #ifndef WX_PRECOMP headers, added missing #include wx/wxcrtvararg.h
[wxWidgets.git] / src / png / example.c
index fb1f5ed1d9be9b87fe03a563120abe22f7d24a87..08158731a69bcf373de8e20b07b1ca5c7724452b 100644 (file)
@@ -1,7 +1,13 @@
 
 #if 0 /* in case someone actually tries to compile this */
 
 
 #if 0 /* in case someone actually tries to compile this */
 
-/* example.c - an example of using libpng */
+/* example.c - an example of using libpng
+ * Last changed in libpng 1.2.1 December 7, 2001.
+ * This file has been placed in the public domain by the authors.
+ * Maintained 1998-2007 Glenn Randers-Pehrson
+ * Maintained 1996, 1997 Andreas Dilger)
+ * Written 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
+ */
 
 /* This is an example of how to use libpng to read and write PNG files.
  * The file libpng.txt is much more verbose then this.  If you have not
 
 /* This is an example of how to use libpng to read and write PNG files.
  * The file libpng.txt is much more verbose then this.  If you have not
@@ -194,7 +200,7 @@ void read_png(FILE *fp, unsigned int sig_read)  /* file is already open */
 
    /* Expand paletted colors into true RGB triplets */
    if (color_type == PNG_COLOR_TYPE_PALETTE)
 
    /* Expand paletted colors into true RGB triplets */
    if (color_type == PNG_COLOR_TYPE_PALETTE)
-      png_set_palette_rgb(png_ptr);
+      png_set_palette_to_rgb(png_ptr);
 
    /* Expand grayscale images to the full 8 bits from 1, 2, or 4 bits/pixel */
    if (color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8)
 
    /* Expand grayscale images to the full 8 bits from 1, 2, or 4 bits/pixel */
    if (color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8)
@@ -490,10 +496,10 @@ row_callback(png_structp png_ptr, png_bytep new_row,
  * In this function you will receive a pointer to new row data from
  * libpng called new_row that is to replace a corresponding row (of
  * the same data format) in a buffer allocated by your application.
  * In this function you will receive a pointer to new row data from
  * libpng called new_row that is to replace a corresponding row (of
  * the same data format) in a buffer allocated by your application.
- * 
+ *
  * The new row data pointer new_row may be NULL, indicating there is
  * no new data to be replaced (in cases of interlace loading).
  * The new row data pointer new_row may be NULL, indicating there is
  * no new data to be replaced (in cases of interlace loading).
- * 
+ *
  * If new_row is not NULL then you need to call
  * png_progressive_combine_row() to replace the corresponding row as
  * shown below:
  * If new_row is not NULL then you need to call
  * png_progressive_combine_row() to replace the corresponding row as
  * shown below:
@@ -742,6 +748,9 @@ void write_png(char *file_name /* , ... other image information ... */)
    png_byte image[height][width*bytes_per_pixel];
    png_bytep row_pointers[height];
 
    png_byte image[height][width*bytes_per_pixel];
    png_bytep row_pointers[height];
 
+   if (height > PNG_UINT_32_MAX/png_sizeof(png_bytep))
+     png_error (png_ptr, "Image is too tall to process in memory");
+
    for (k = 0; k < height; k++)
      row_pointers[k] = image + k*width*bytes_per_pixel;
 
    for (k = 0; k < height; k++)
      row_pointers[k] = image + k*width*bytes_per_pixel;