Skip to content

Commit

Permalink
Consider I;16 pixel size when drawing
Browse files Browse the repository at this point in the history
  • Loading branch information
radarhere committed Jun 22, 2019
1 parent 32d1050 commit 3747d64
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 4 deletions.
Binary file added Tests/images/imagedraw_rectangle_I.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
12 changes: 12 additions & 0 deletions Tests/test_imagedraw.py
Expand Up @@ -479,6 +479,18 @@ def test_rectangle_width_fill(self):
# Assert
self.assert_image_equal(im, Image.open(expected))

def test_rectangle_I16(self):
# Arrange
im = Image.new("I;16", (W, H))
draw = ImageDraw.Draw(im)

# Act
draw.rectangle(BBOX1, fill="black", outline="green")

# Assert
self.assert_image_equal(
im.convert("I"), Image.open("Tests/images/imagedraw_rectangle_I.png"))

def test_floodfill(self):
red = ImageColor.getrgb("red")

Expand Down
16 changes: 12 additions & 4 deletions src/libImaging/Draw.c
Expand Up @@ -68,7 +68,12 @@ static inline void
point8(Imaging im, int x, int y, int ink)
{
if (x >= 0 && x < im->xsize && y >= 0 && y < im->ysize)
im->image8[y][x] = (UINT8) ink;
if (strncmp(im->mode, "I;16", 4) == 0) {
im->image8[y][x*2] = (UINT8) ink;
im->image8[y][x*2+1] = (UINT8) ink;
} else {
im->image8[y][x] = (UINT8) ink;
}
}

static inline void
Expand All @@ -95,7 +100,7 @@ point32rgba(Imaging im, int x, int y, int ink)
static inline void
hline8(Imaging im, int x0, int y0, int x1, int ink)
{
int tmp;
int tmp, pixelwidth;

if (y0 >= 0 && y0 < im->ysize) {
if (x0 > x1)
Expand All @@ -108,8 +113,11 @@ hline8(Imaging im, int x0, int y0, int x1, int ink)
return;
else if (x1 >= im->xsize)
x1 = im->xsize-1;
if (x0 <= x1)
memset(im->image8[y0] + x0, (UINT8) ink, x1 - x0 + 1);
if (x0 <= x1) {
pixelwidth = strncmp(im->mode, "I;16", 4) == 0 ? 2 : 1;
memset(im->image8[y0] + x0 * pixelwidth, (UINT8) ink,
(x1 - x0 + 1) * pixelwidth);
}
}
}

Expand Down

0 comments on commit 3747d64

Please sign in to comment.