diff options
Diffstat (limited to 'Build/source/libs/gd/libgd-2.1.0/tests/gdimagefilledpolygon/bug00100.c')
-rw-r--r-- | Build/source/libs/gd/libgd-2.1.0/tests/gdimagefilledpolygon/bug00100.c | 157 |
1 files changed, 157 insertions, 0 deletions
diff --git a/Build/source/libs/gd/libgd-2.1.0/tests/gdimagefilledpolygon/bug00100.c b/Build/source/libs/gd/libgd-2.1.0/tests/gdimagefilledpolygon/bug00100.c new file mode 100644 index 00000000000..ae2e084fe41 --- /dev/null +++ b/Build/source/libs/gd/libgd-2.1.0/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; +} |