Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(75)

Unified Diff: third_party/libpng/contrib/examples/pngtopng.c

Issue 2033063003: Check libpng directly into third_party/ (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/libpng/contrib/examples/pngtopng.c
diff --git a/third_party/libpng/contrib/examples/pngtopng.c b/third_party/libpng/contrib/examples/pngtopng.c
new file mode 100644
index 0000000000000000000000000000000000000000..4acf6b3ad4d844c77eeb54e56a6ac2e971b40821
--- /dev/null
+++ b/third_party/libpng/contrib/examples/pngtopng.c
@@ -0,0 +1,95 @@
+/*- pngtopng
+ *
+ * COPYRIGHT: Written by John Cunningham Bowler, 2011.
+ * To the extent possible under law, the author has waived all copyright and
+ * related or neighboring rights to this work. This work is published from:
+ * United States.
+ *
+ * Read a PNG and write it out in a fixed format, using the 'simplified API'
+ * that was introduced in libpng-1.6.0.
+ *
+ * This sample code is just the code from the top of 'example.c' with some error
+ * handling added. See example.c for more comments.
+ */
+#include <stddef.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+
+/* Normally use <png.h> here to get the installed libpng, but this is done to
+ * ensure the code picks up the local libpng implementation:
+ */
+#include "../../png.h"
+#if defined(PNG_SIMPLIFIED_READ_SUPPORTED) && \
+ defined(PNG_SIMPLIFIED_WRITE_SUPPORTED)
+
+int main(int argc, const char **argv)
+{
+ int result = 1;
+
+ if (argc == 3)
+ {
+ png_image image;
+
+ /* Only the image structure version number needs to be set. */
+ memset(&image, 0, sizeof image);
+ image.version = PNG_IMAGE_VERSION;
+
+ if (png_image_begin_read_from_file(&image, argv[1]))
+ {
+ png_bytep buffer;
+
+ /* Change this to try different formats! If you set a colormap format
+ * then you must also supply a colormap below.
+ */
+ image.format = PNG_FORMAT_RGBA;
+
+ buffer = malloc(PNG_IMAGE_SIZE(image));
+
+ if (buffer != NULL)
+ {
+ if (png_image_finish_read(&image, NULL/*background*/, buffer,
+ 0/*row_stride*/, NULL/*colormap for PNG_FORMAT_FLAG_COLORMAP */))
+ {
+ if (png_image_write_to_file(&image, argv[2],
+ 0/*convert_to_8bit*/, buffer, 0/*row_stride*/,
+ NULL/*colormap*/))
+ result = 0;
+
+ else
+ fprintf(stderr, "pngtopng: write %s: %s\n", argv[2],
+ image.message);
+
+ free(buffer);
+ }
+
+ else
+ {
+ fprintf(stderr, "pngtopng: read %s: %s\n", argv[1],
+ image.message);
+
+ /* This is the only place where a 'free' is required; libpng does
+ * the cleanup on error and success, but in this case we couldn't
+ * complete the read because of running out of memory.
+ */
+ png_image_free(&image);
+ }
+ }
+
+ else
+ fprintf(stderr, "pngtopng: out of memory: %lu bytes\n",
+ (unsigned long)PNG_IMAGE_SIZE(image));
+ }
+
+ else
+ /* Failed to read the first argument: */
+ fprintf(stderr, "pngtopng: %s: %s\n", argv[1], image.message);
+ }
+
+ else
+ /* Wrong number of arguments */
+ fprintf(stderr, "pngtopng: usage: pngtopng input-file output-file\n");
+
+ return result;
+}
+#endif /* READ && WRITE */

Powered by Google App Engine
This is Rietveld 408576698