/* Testing thick styled horizontal, vertical and diagonal lines. We're drawing four triangles with basically the same pattern style. Each triangle has exactly the same shape (right isosceles, with the hypotenuse being diagonal) and size. The triangles are arranged from lower left to upper right with increasing line thickness. To have the same pattern style, it has to be adapted according to the thickness (i.e. the pixels have to be repeated thickness times), which happens in setStyleAndThickness(). See also . */ #include "gd.h" #include "gdtest.h" static void setStyleAndThickness(gdImagePtr im, int color, int thickness) { int style[192], i = 0; while (i < 16 * thickness) { style[i++] = color; } while (i < 20 * thickness) { style[i++] = gdTransparent; } while (i < 28 * thickness) { style[i++] = color; } while (i < 32 * thickness) { style[i++] = gdTransparent; } gdImageSetStyle(im, style, 32 * thickness); gdImageSetThickness(im, thickness); } int main() { gdImagePtr im; int error = 0, black; im = gdImageCreate(800, 800); gdImageColorAllocate(im, 255, 255, 255); black = gdImageColorAllocate(im, 0, 0, 0); setStyleAndThickness(im, black, 1); gdImageLine(im, 50, 250, 550, 250, gdStyled); gdImageLine(im, 550, 250, 550, 750, gdStyled); gdImageLine(im, 550, 750, 50, 250, gdStyled); setStyleAndThickness(im, black, 2); gdImageLine(im, 100, 200, 600, 200, gdStyled); gdImageLine(im, 600, 200, 600, 700, gdStyled); gdImageLine(im, 600, 700, 100, 200, gdStyled); setStyleAndThickness(im, black, 4); gdImageLine(im, 150, 150, 650, 150, gdStyled); gdImageLine(im, 650, 150, 650, 650, gdStyled); gdImageLine(im, 650, 650, 150, 150, gdStyled); setStyleAndThickness(im, black, 6); gdImageLine(im, 200, 100, 700, 100, gdStyled); gdImageLine(im, 700, 100, 700, 600, gdStyled); gdImageLine(im, 700, 600, 200, 100, gdStyled); if (!gdAssertImageEqualsToFile("gdimageline/github_bug_167_exp.png", im)) { error = 1; } gdImageDestroy(im); return error; }