Skip to content

Commit 872e181

Browse files
committed
Remove memoryview copy method
1 parent 66fa04d commit 872e181

File tree

1 file changed

+11
-27
lines changed

1 file changed

+11
-27
lines changed

adafruit_imageload/png.py

Lines changed: 11 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -104,38 +104,22 @@ def load( # noqa: PLR0912, PLR0915, Too many branches, Too many statements
104104
data_bytes = zlib.decompress(data)
105105
unit = (1, 0, 3, 1, 2, 0, 4)[mode]
106106
scanline = (width * depth * unit + 7) // 8
107-
colors = 1 << (depth * unit)
108107
if mode == 3: # indexed
109-
bmp = bitmap(width, height, colors)
110-
mem = memoryview(bmp)
108+
bmp = bitmap(width, height, 1 << depth)
111109
pixels_per_byte = 8 // depth
112110
# Adjust for Displayio.Bitmap filler to scanline at 4-byte boundry
113111
filladj = (4 - (scanline % 4)) % 4
114112
src = 1
115-
if (
116-
(implementation[1][0] == 9 and implementation[1][1] < 2) or implementation[1][0] < 9
117-
) and (depth < 8 or width % 4 != 0):
118-
# Work around the bug in displayio.Bitmap
119-
# remove once CircuitPython 9.1 is no longer supported
120-
# https://github.com/adafruit/circuitpython/issues/6675
121-
# https://github.com/adafruit/circuitpython/issues/9707
122-
src_b = 1
123-
for y in range(height):
124-
for x in range(0, width, pixels_per_byte):
125-
byte = data_bytes[src_b]
126-
for pixel in range(pixels_per_byte):
127-
bmp[x + pixel, y] = (byte >> ((pixels_per_byte - pixel - 1) * depth)) & (
128-
(1 << depth) - 1
129-
)
130-
src_b += 1
131-
src += scanline + 1
132-
src_b = src
133-
else:
134-
dst = 0
135-
for y in range(height):
136-
mem[dst : dst + scanline] = data_bytes[src : src + scanline]
137-
dst += scanline + filladj
138-
src += scanline + 1
113+
src_b = 1
114+
pixmask = (1 << depth) - 1
115+
for y in range(height):
116+
for x in range(0, width, pixels_per_byte):
117+
byte = data_bytes[src_b]
118+
for pixel in range(pixels_per_byte):
119+
bmp[x + pixel, y] = (byte >> ((pixels_per_byte - pixel - 1) * depth)) & pixmask
120+
src_b += 1
121+
src += scanline + 1
122+
src_b = src
139123
return bmp, pal
140124
# RGB, RGBA or Grayscale
141125
import displayio

0 commit comments

Comments
 (0)