|
Packit |
ed3af9 |
/**
|
|
Packit |
ed3af9 |
* Test point ordering of gdImageRectangle()
|
|
Packit |
ed3af9 |
*
|
|
Packit |
ed3af9 |
* We're testing the two allowed point orders with and without thickness,
|
|
Packit |
ed3af9 |
* and verify that all sides of the rectangle are drawn.
|
|
Packit |
ed3af9 |
*
|
|
Packit |
ed3af9 |
* See also <https://github.com/libgd/libgd/issues/177>
|
|
Packit |
ed3af9 |
*/
|
|
Packit |
ed3af9 |
|
|
Packit |
ed3af9 |
|
|
Packit |
ed3af9 |
#include "gd.h"
|
|
Packit |
ed3af9 |
#include "gdtest.h"
|
|
Packit |
ed3af9 |
|
|
Packit |
ed3af9 |
|
|
Packit |
ed3af9 |
static void draw_and_check_rectangle(gdImagePtr im, int x1, int y1, int x2, int y2, int black, int red);
|
|
Packit |
ed3af9 |
static void draw_and_check_pixel(gdImagePtr im, int x, int y, int black, int red);
|
|
Packit |
ed3af9 |
|
|
Packit |
ed3af9 |
|
|
Packit |
ed3af9 |
int main()
|
|
Packit |
ed3af9 |
{
|
|
Packit |
ed3af9 |
gdImagePtr im;
|
|
Packit |
ed3af9 |
int black, red;
|
|
Packit |
ed3af9 |
|
|
Packit |
ed3af9 |
im = gdImageCreate(110, 210);
|
|
Packit |
ed3af9 |
gdImageColorAllocate(im, 255, 255, 255);
|
|
Packit |
ed3af9 |
black = gdImageColorAllocate(im, 0, 0, 0);
|
|
Packit |
ed3af9 |
red = gdImageColorAllocate(im, 255, 0, 0);
|
|
Packit |
ed3af9 |
|
|
Packit |
ed3af9 |
draw_and_check_rectangle(im, 10, 10, 50, 50, black, red);
|
|
Packit |
ed3af9 |
draw_and_check_rectangle(im, 50, 150, 10, 110, black, red);
|
|
Packit |
ed3af9 |
gdImageSetThickness(im, 4);
|
|
Packit |
ed3af9 |
draw_and_check_rectangle(im, 60, 10, 100, 50, black, red);
|
|
Packit |
ed3af9 |
draw_and_check_rectangle(im, 100, 150, 60, 110, black, red);
|
|
Packit |
ed3af9 |
|
|
Packit |
ed3af9 |
#if 0
|
|
Packit |
ed3af9 |
/* save image for debugging purposes */
|
|
Packit |
ed3af9 |
do {
|
|
Packit |
ed3af9 |
char *path;
|
|
Packit |
ed3af9 |
FILE *fp;
|
|
Packit |
ed3af9 |
|
|
Packit |
ed3af9 |
path = gdTestFilePath2("gdimagerectangle", "point_ordering.png");
|
|
Packit |
ed3af9 |
fp = fopen(path, "wb");
|
|
Packit |
ed3af9 |
gdImagePng(im, fp);
|
|
Packit |
ed3af9 |
fclose(fp);
|
|
Packit |
ed3af9 |
gdFree(path);
|
|
Packit |
ed3af9 |
} while(0);
|
|
Packit |
ed3af9 |
#endif
|
|
Packit |
ed3af9 |
|
|
Packit |
ed3af9 |
gdImageDestroy(im);
|
|
Packit |
ed3af9 |
|
|
Packit |
ed3af9 |
return gdNumFailures();
|
|
Packit |
ed3af9 |
}
|
|
Packit |
ed3af9 |
|
|
Packit |
ed3af9 |
|
|
Packit |
ed3af9 |
static void draw_and_check_rectangle(gdImagePtr im, int x1, int y1, int x2, int y2, int black, int red)
|
|
Packit |
ed3af9 |
{
|
|
Packit |
ed3af9 |
int x, y;
|
|
Packit |
ed3af9 |
|
|
Packit |
ed3af9 |
gdImageRectangle(im, x1, y1, x2, y2, black);
|
|
Packit |
ed3af9 |
x = (x1 + x2) / 2;
|
|
Packit |
ed3af9 |
y = (y1 + y2) / 2;
|
|
Packit |
ed3af9 |
draw_and_check_pixel(im, x, y1, black, red);
|
|
Packit |
ed3af9 |
draw_and_check_pixel(im, x1, y, black, red);
|
|
Packit |
ed3af9 |
draw_and_check_pixel(im, x, y2, black, red);
|
|
Packit |
ed3af9 |
draw_and_check_pixel(im, x2, y, black, red);
|
|
Packit |
ed3af9 |
}
|
|
Packit |
ed3af9 |
|
|
Packit |
ed3af9 |
|
|
Packit |
ed3af9 |
static void draw_and_check_pixel(gdImagePtr im, int x, int y, int black, int red)
|
|
Packit |
ed3af9 |
{
|
|
Packit |
ed3af9 |
int color;
|
|
Packit |
ed3af9 |
|
|
Packit |
ed3af9 |
color = gdImagePalettePixel(im, x, y);
|
|
Packit |
ed3af9 |
gdTestAssertMsg(color == black, "expected color %d, but got color %d\n", black, color);
|
|
Packit |
ed3af9 |
gdImageSetPixel(im, x, y, red);
|
|
Packit |
ed3af9 |
}
|