Skip to content

Commit

Permalink
Merge pull request #6303 from radarhere/disconnected
Browse files Browse the repository at this point in the history
Only try to connect discontiguous corners at the end of edges
  • Loading branch information
radarhere committed May 28, 2022
2 parents 9c25fc6 + cb4b5f2 commit 71d6a7b
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 1 deletion.
8 changes: 8 additions & 0 deletions Tests/test_imagedraw.py
Expand Up @@ -1452,3 +1452,11 @@ def test_discontiguous_corners_polygon():
)
expected = os.path.join(IMAGES_PATH, "discontiguous_corners_polygon.png")
assert_image_similar_tofile(img, expected, 1)


def test_polygon():
im = Image.new("RGB", (W, H))
draw = ImageDraw.Draw(im)
draw.polygon([(18, 30), (19, 31), (18, 30), (85, 30), (60, 72)], "red")
expected = "Tests/images/imagedraw_outline_polygon_RGB.png"
assert_image_similar_tofile(im, expected, 1)
4 changes: 3 additions & 1 deletion src/libImaging/Draw.c
Expand Up @@ -513,7 +513,9 @@ polygon_generic(Imaging im, int n, Edge *e, int ink, int eofill, hline_handler h
continue;
}
// Check if the two edges join to make a corner
if (xx[j-1] == (ymin - other_edge->y0) * other_edge->dx + other_edge->x0) {
if (((ymin == current->ymin && ymin == other_edge->ymin) ||
(ymin == current->ymax && ymin == other_edge->ymax)) &&
xx[j-1] == (ymin - other_edge->y0) * other_edge->dx + other_edge->x0) {
// Determine points from the edges on the next row
// Or if this is the last row, check the previous row
int offset = ymin == ymax ? -1 : 1;
Expand Down

0 comments on commit 71d6a7b

Please sign in to comment.