summaryrefslogtreecommitdiff
path: root/ext/gd/libgd/gdtest.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/gd/libgd/gdtest.c')
-rw-r--r--ext/gd/libgd/gdtest.c409
1 files changed, 0 insertions, 409 deletions
diff --git a/ext/gd/libgd/gdtest.c b/ext/gd/libgd/gdtest.c
deleted file mode 100644
index f4300bb3fd..0000000000
--- a/ext/gd/libgd/gdtest.c
+++ /dev/null
@@ -1,409 +0,0 @@
-#include <stdio.h>
-#ifdef _WIN32
-#include <process.h>
-int
-unlink (const char *filename)
-{
- return _unlink (filename);
-}
-#else
-#include <unistd.h> /* for getpid(), unlink() */
-#endif
-#include "gd.h"
-
-void CompareImages (char *msg, gdImagePtr im1, gdImagePtr im2);
-
-static int freadWrapper (void *context, char *buf, int len);
-static int fwriteWrapper (void *context, const char *buffer, int len);
-
-int
-main (int argc, char **argv)
-{
- gdImagePtr im, ref, im2, im3;
- FILE *in, *out;
- void *iptr;
- int sz;
- gdIOCtxPtr ctx;
- char of[256];
- int colRed, colBlu;
- gdSource imgsrc;
- gdSink imgsnk;
- int foreground;
- int i;
- if (argc != 2)
- {
- fprintf (stderr, "Usage: gdtest filename.png\n");
- exit (1);
- }
- in = fopen (argv[1], "rb");
- if (!in)
- {
- fprintf (stderr, "Input file does not exist!\n");
- exit (1);
- }
- im = gdImageCreateFromPng (in);
-
- rewind (in);
- ref = gdImageCreateFromPng (in);
-
- fclose (in);
-
- printf ("Reference File has %d Palette entries\n", ref->colorsTotal);
-
- CompareImages ("Initial Versions", ref, im);
-
-
- /* */
- /* Send to PNG File then Ptr */
- /* */
- sprintf (of, "%s.png", argv[1]);
- out = fopen (of, "wb");
- gdImagePng (im, out);
- fclose (out);
-
- in = fopen (of, "rb");
- if (!in)
- {
- fprintf (stderr, "PNG Output file does not exist!\n");
- exit (1);
- }
- im2 = gdImageCreateFromPng (in);
- fclose (in);
-
- CompareImages ("GD->PNG File->GD", ref, im2);
-
- unlink (of);
- gdImageDestroy (im2);
-
- iptr = gdImagePngPtr (im, &sz);
- ctx = gdNewDynamicCtx (sz, iptr);
- im2 = gdImageCreateFromPngCtx (ctx);
-
- CompareImages ("GD->PNG ptr->GD", ref, im2);
-
- gdImageDestroy (im2);
- ctx->gd_free (ctx);
-
-
- /* */
- /* Send to GD2 File then Ptr */
- /* */
- sprintf (of, "%s.gd2", argv[1]);
- out = fopen (of, "wb");
- gdImageGd2 (im, out, 128, 2);
- fclose (out);
-
- in = fopen (of, "rb");
- if (!in)
- {
- fprintf (stderr, "GD2 Output file does not exist!\n");
- exit (1);
- }
- im2 = gdImageCreateFromGd2 (in);
- fclose (in);
-
- CompareImages ("GD->GD2 File->GD", ref, im2);
-
- unlink (of);
- gdImageDestroy (im2);
-
- iptr = gdImageGd2Ptr (im, 128, 2, &sz);
- /*printf("Got ptr %d (size %d)\n",iptr, sz); */
- ctx = gdNewDynamicCtx (sz, iptr);
- /*printf("Got ctx %d\n",ctx); */
- im2 = gdImageCreateFromGd2Ctx (ctx);
- /*printf("Got img2 %d\n",im2); */
-
- CompareImages ("GD->GD2 ptr->GD", ref, im2);
-
- gdImageDestroy (im2);
- ctx->gd_free (ctx);
-
-
- /* */
- /* Send to GD File then Ptr */
- /* */
- sprintf (of, "%s.gd", argv[1]);
- out = fopen (of, "wb");
- gdImageGd (im, out);
- fclose (out);
-
- in = fopen (of, "rb");
- if (!in)
- {
- fprintf (stderr, "GD Output file does not exist!\n");
- exit (1);
- }
- im2 = gdImageCreateFromGd (in);
- fclose (in);
-
- CompareImages ("GD->GD File->GD", ref, im2);
-
- unlink (of);
- gdImageDestroy (im2);
-
- iptr = gdImageGdPtr (im, &sz);
- /*printf("Got ptr %d (size %d)\n",iptr, sz); */
- ctx = gdNewDynamicCtx (sz, iptr);
- /*printf("Got ctx %d\n",ctx); */
- im2 = gdImageCreateFromGdCtx (ctx);
- /*printf("Got img2 %d\n",im2); */
-
- CompareImages ("GD->GD ptr->GD", ref, im2);
-
- gdImageDestroy (im2);
- ctx->gd_free (ctx);
-
- /*
- ** Test gdImageCreateFromPngSource'
- * */
-
- in = fopen (argv[1], "rb");
-
- imgsrc.source = freadWrapper;
- imgsrc.context = in;
- im2 = gdImageCreateFromPngSource (&imgsrc);
- fclose (in);
-
- if (im2 == NULL)
- {
- printf ("GD Source: ERROR Null returned by gdImageCreateFromPngSource\n");
- }
- else
- {
- CompareImages ("GD Source", ref, im2);
- gdImageDestroy (im2);
- };
-
-
- /*
- ** Test gdImagePngToSink'
- * */
-
- sprintf (of, "%s.snk", argv[1]);
- out = fopen (of, "wb");
- imgsnk.sink = fwriteWrapper;
- imgsnk.context = out;
- gdImagePngToSink (im, &imgsnk);
- fclose (out);
- in = fopen (of, "rb");
- if (!in)
- {
- fprintf (stderr, "GD Sink: ERROR - GD Sink Output file does not exist!\n");
- }
- else
- {
- im2 = gdImageCreateFromPng (in);
- fclose (in);
-
- CompareImages ("GD Sink", ref, im2);
- gdImageDestroy (im2);
- };
-
- unlink (of);
-
- /* */
- /* Test Extraction */
- /* */
- in = fopen ("test/gdtest_200_300_150_100.png", "rb");
- if (!in)
- {
- fprintf (stderr, "gdtest_200_300_150_100.png does not exist!\n");
- exit (1);
- }
- im2 = gdImageCreateFromPng (in);
- fclose (in);
-
-
- in = fopen ("test/gdtest.gd2", "rb");
- if (!in)
- {
- fprintf (stderr, "gdtest.gd2 does not exist!\n");
- exit (1);
- }
- im3 = gdImageCreateFromGd2Part (in, 200, 300, 150, 100);
- fclose (in);
-
- CompareImages ("GD2Part (gdtest_200_300_150_100.png, gdtest.gd2(part))", im2, im3);
-
- gdImageDestroy (im2);
- gdImageDestroy (im3);
-
- /* */
- /* Copy Blend */
- /* */
- in = fopen ("test/gdtest.png", "rb");
- if (!in)
- {
- fprintf (stderr, "gdtest.png does not exist!\n");
- exit (1);
- }
- im2 = gdImageCreateFromPng (in);
- fclose (in);
-
- im3 = gdImageCreate (100, 60);
- colRed = gdImageColorAllocate (im3, 255, 0, 0);
- colBlu = gdImageColorAllocate (im3, 0, 0, 255);
- gdImageFilledRectangle (im3, 0, 0, 49, 30, colRed);
- gdImageFilledRectangle (im3, 50, 30, 99, 59, colBlu);
-
- gdImageCopyMerge (im2, im3, 150, 200, 10, 10, 90, 50, 50);
- gdImageCopyMerge (im2, im3, 180, 70, 10, 10, 90, 50, 50);
-
- gdImageCopyMergeGray (im2, im3, 250, 160, 10, 10, 90, 50, 50);
- gdImageCopyMergeGray (im2, im3, 80, 70, 10, 10, 90, 50, 50);
-
- gdImageDestroy (im3);
-
- in = fopen ("test/gdtest_merge.png", "rb");
- if (!in)
- {
- fprintf (stderr, "gdtest_merge.png does not exist!\n");
- exit (1);
- }
- im3 = gdImageCreateFromPng (in);
- fclose (in);
-
- printf ("[Merged Image has %d colours]\n", im2->colorsTotal);
- CompareImages ("Merged (gdtest.png, gdtest_merge.png)", im2, im3);
-
- gdImageDestroy (im2);
- gdImageDestroy (im3);
-
-#ifdef HAVE_JPEG
- out = fopen ("test/gdtest.jpg", "wb");
- if (!out)
- {
- fprintf (stderr, "Can't create file test/gdtest.jpg.\n");
- exit (1);
- }
- gdImageJpeg (im, out, -1);
- fclose (out);
- in = fopen ("test/gdtest.jpg", "rb");
- if (!in)
- {
- fprintf (stderr, "Can't open file test/gdtest.jpg.\n");
- exit (1);
- }
- im2 = gdImageCreateFromJpeg (in);
- fclose (in);
- if (!im2)
- {
- fprintf (stderr, "gdImageCreateFromJpeg failed.\n");
- exit (1);
- }
- gdImageDestroy (im2);
- printf ("Created test/gdtest.jpg successfully. Compare this image\n"
- "to the input image manually. Some difference must be\n"
- "expected as JPEG is a lossy file format.\n");
-#endif /* HAVE_JPEG */
- /* Assume the color closest to black is the foreground
- color for the B&W wbmp image. */
- fprintf (stderr, "NOTE: the WBMP output image will NOT match the original unless the original\n"
- "is also black and white. This is OK!\n");
- foreground = gdImageColorClosest (im, 0, 0, 0);
- fprintf (stderr, "Foreground index is %d\n", foreground);
- if (foreground == -1)
- {
- fprintf (stderr, "Source image has no colors, skipping wbmp test.\n");
- }
- else
- {
- out = fopen ("test/gdtest.wbmp", "wb");
- if (!out)
- {
- fprintf (stderr, "Can't create file test/gdtest.wbmp.\n");
- exit (1);
- }
- gdImageWBMP (im, foreground, out);
- fclose (out);
- in = fopen ("test/gdtest.wbmp", "rb");
- if (!in)
- {
- fprintf (stderr, "Can't open file test/gdtest.wbmp.\n");
- exit (1);
- }
- im2 = gdImageCreateFromWBMP (in);
- fprintf (stderr, "WBMP has %d colors\n", gdImageColorsTotal (im2));
- fprintf (stderr, "WBMP colors are:\n");
- for (i = 0; (i < gdImageColorsTotal (im2)); i++)
- {
- fprintf (stderr, "%02X%02X%02X\n",
- gdImageRed (im2, i),
- gdImageGreen (im2, i),
- gdImageBlue (im2, i));
- }
- fclose (in);
- if (!im2)
- {
- fprintf (stderr, "gdImageCreateFromWBMP failed.\n");
- exit (1);
- }
- CompareImages ("WBMP test (gdtest.png, gdtest.wbmp)", ref, im2);
- out = fopen ("test/gdtest_wbmp_to_png.png", "wb");
- if (!out)
- {
- fprintf (stderr, "Can't create file test/gdtest_wbmp_to_png.png.\n");
- exit (1);
- }
- gdImagePng (im2, out);
- fclose (out);
- gdImageDestroy (im2);
- }
- gdImageDestroy (im);
- gdImageDestroy (ref);
-
- return 0;
-}
-
-void
-CompareImages (char *msg, gdImagePtr im1, gdImagePtr im2)
-{
- int cmpRes;
-
- cmpRes = gdImageCompare (im1, im2);
-
- if (cmpRes & GD_CMP_IMAGE)
- {
- printf ("%%%s: ERROR images differ: BAD\n", msg);
- }
- else if (cmpRes != 0)
- {
- printf ("%%%s: WARNING images differ: WARNING - Probably OK\n", msg);
- }
- else
- {
- printf ("%%%s: OK\n", msg);
- return;
- }
-
- if (cmpRes & (GD_CMP_SIZE_X + GD_CMP_SIZE_Y))
- {
- printf ("-%s: INFO image sizes differ\n", msg);
- }
-
- if (cmpRes & GD_CMP_NUM_COLORS)
- {
- printf ("-%s: INFO number of pallette entries differ %d Vs. %d\n", msg,
- im1->colorsTotal, im2->colorsTotal);
- }
-
- if (cmpRes & GD_CMP_COLOR)
- {
- printf ("-%s: INFO actual colours of pixels differ\n", msg);
- }
-}
-
-
-static int
-freadWrapper (void *context, char *buf, int len)
-{
- int got = fread (buf, 1, len, (FILE *) context);
- return got;
-}
-
-static int
-fwriteWrapper (void *context, const char *buffer, int len)
-{
- return fwrite (buffer, 1, len, (FILE *) context);
-}