summaryrefslogtreecommitdiff
path: root/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/bug00100.c
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/bug00100.c')
-rw-r--r--Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/bug00100.c157
1 files changed, 157 insertions, 0 deletions
diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/bug00100.c b/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/bug00100.c
new file mode 100644
index 00000000000..ae2e084fe41
--- /dev/null
+++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/bug00100.c
@@ -0,0 +1,157 @@
+#include <stdlib.h>
+#include "gd.h"
+#include "gdtest.h"
+
+/* This is a quickie test program to show a bug in gd.
+ * There is a red line that is drawn across the bottom of
+ * the image that shouldn't be there.
+ */
+int
+main(void)
+{
+ gdPoint pointy[5];
+ gdPoint diamond[4];
+ int d, x, y, top, bot, left, right, r;
+
+ /* R G B */
+ int white = gdTrueColorAlpha(255, 255, 255, 10);
+ int black = gdTrueColorAlpha( 0, 0, 0, 10);
+ int red = gdTrueColorAlpha(255, 0, 0, 10);
+ int green = gdTrueColorAlpha( 0, 255, 0, 10);
+ int blue = gdTrueColorAlpha( 0, 0, 255, 10);
+ int yellow = gdTrueColorAlpha(255, 255, 0, 10);
+ int cyan = gdTrueColorAlpha( 0, 255, 255, 10);
+ int magenta = gdTrueColorAlpha(255, 0, 255, 10);
+ int purple = gdTrueColorAlpha(100, 0, 100, 10);
+
+ gdImagePtr im = gdImageCreateTrueColor(256, 256);
+ if (!im) exit(EXIT_FAILURE);
+
+ gdImageFilledRectangle(im, 0, 0, 256, 256, white);
+
+ /* M (bridge) */
+ top = 240;
+ bot = 255;
+ d = 30;
+ x = 100;
+ pointy[0].x = x;
+ pointy[0].y = top;
+ pointy[1].x = x+2*d;
+ pointy[1].y = top;
+ pointy[2].x = x+2*d;
+ pointy[2].y = bot;
+ pointy[3].x = x+d;
+ pointy[3].y = (top+bot)/2;
+ pointy[4].x = x;
+ pointy[4].y = bot;
+ gdImageFilledPolygon(im, pointy, 5, yellow);
+
+ /* left-facing M not on baseline */
+ top = 40;
+ bot = 70;
+ left = 120;
+ right = 180;
+ pointy[0].x = left;
+ pointy[0].y = top;
+ pointy[1].x = right;
+ pointy[1].y = top;
+ pointy[2].x = right;
+ pointy[2].y = bot;
+ pointy[3].x = left;
+ pointy[3].y = bot;
+ pointy[4].x = (left+right)/2;
+ pointy[4].y = (top+bot)/2;
+ gdImageFilledPolygon(im, pointy, 5, purple);
+
+ /* left-facing M on baseline */
+ top = 240;
+ bot = 270;
+ left = 20;
+ right = 80;
+ pointy[0].x = left;
+ pointy[0].y = top;
+ pointy[1].x = right;
+ pointy[1].y = top;
+ pointy[2].x = right;
+ pointy[2].y = bot;
+ pointy[3].x = left;
+ pointy[3].y = bot;
+ pointy[4].x = (left+right)/2;
+ pointy[4].y = (top+bot)/2;
+ gdImageFilledPolygon(im, pointy, 5, magenta);
+
+ /* left-facing M on ceiling */
+ top = -15;
+ bot = 15;
+ left = 20;
+ right = 80;
+ pointy[0].x = left;
+ pointy[0].y = top;
+ pointy[1].x = right;
+ pointy[1].y = top;
+ pointy[2].x = right;
+ pointy[2].y = bot;
+ pointy[3].x = left;
+ pointy[3].y = bot;
+ pointy[4].x = (left+right)/2;
+ pointy[4].y = (top+bot)/2;
+ gdImageFilledPolygon(im, pointy, 5, blue);
+
+ d = 30;
+ x = 150;
+ y = 150;
+ diamond[0].x = x-d;
+ diamond[0].y = y;
+ diamond[1].x = x;
+ diamond[1].y = y+d;
+ diamond[2].x = x+d;
+ diamond[2].y = y;
+ diamond[3].x = x;
+ diamond[3].y = y-d;
+ gdImageFilledPolygon(im, diamond, 4, green);
+
+ x = 180;
+ y = 225;
+ diamond[0].x = x-d;
+ diamond[0].y = y;
+ diamond[1].x = x;
+ diamond[1].y = y+d;
+ diamond[2].x = x+d;
+ diamond[2].y = y;
+ diamond[3].x = x;
+ diamond[3].y = y-d;
+ gdImageFilledPolygon(im, diamond, 4, red);
+
+ x = 225;
+ y = 255;
+ diamond[0].x = x-d;
+ diamond[0].y = y;
+ diamond[1].x = x;
+ diamond[1].y = y+d;
+ diamond[2].x = x+d;
+ diamond[2].y = y;
+ diamond[3].x = x;
+ diamond[3].y = y-d;
+ gdImageFilledPolygon(im, diamond, 4, cyan);
+
+ /* M (bridge) not touching bottom boundary */
+ top = 100;
+ bot = 150;
+ x = 30;
+ pointy[0].x = x;
+ pointy[0].y = top;
+ pointy[1].x = x+2*d;
+ pointy[1].y = top;
+ pointy[2].x = x+2*d;
+ pointy[2].y = bot;
+ pointy[3].x = x+d;
+ pointy[3].y = (top+bot)/2;
+ pointy[4].x = x;
+ pointy[4].y = bot;
+ gdImageFilledPolygon(im, pointy, 5, black);
+
+ r = gdAssertImageEqualsToFile(GDTEST_TOP_DIR "/gdimagefilledpolygon/bug00100.png", im);
+ gdImageDestroy(im);
+ if (!r) exit(EXIT_FAILURE);
+ return EXIT_SUCCESS;
+}