mirror of
https://github.com/python-pillow/Pillow.git
synced 2025-07-04 11:53:32 +03:00
Improved type hints
This commit is contained in:
parent
6512a8e371
commit
34efaaddf3
|
@ -37,17 +37,18 @@ class XpmImageFile(ImageFile.ImageFile):
|
||||||
format_description = "X11 Pixel Map"
|
format_description = "X11 Pixel Map"
|
||||||
|
|
||||||
def _open(self) -> None:
|
def _open(self) -> None:
|
||||||
|
assert self.fp is not None
|
||||||
if not _accept(self.fp.read(9)):
|
if not _accept(self.fp.read(9)):
|
||||||
msg = "not an XPM file"
|
msg = "not an XPM file"
|
||||||
raise SyntaxError(msg)
|
raise SyntaxError(msg)
|
||||||
|
|
||||||
# skip forward to next string
|
# skip forward to next string
|
||||||
while True:
|
while True:
|
||||||
s = self.fp.readline()
|
line = self.fp.readline()
|
||||||
if not s:
|
if not line:
|
||||||
msg = "broken XPM file"
|
msg = "broken XPM file"
|
||||||
raise SyntaxError(msg)
|
raise SyntaxError(msg)
|
||||||
m = xpm_head.match(s)
|
m = xpm_head.match(line)
|
||||||
if m:
|
if m:
|
||||||
break
|
break
|
||||||
|
|
||||||
|
@ -62,10 +63,10 @@ class XpmImageFile(ImageFile.ImageFile):
|
||||||
palette = {}
|
palette = {}
|
||||||
|
|
||||||
for _ in range(palette_length):
|
for _ in range(palette_length):
|
||||||
s = self.fp.readline().rstrip()
|
line = self.fp.readline().rstrip()
|
||||||
|
|
||||||
c = s[1 : bpp + 1]
|
c = line[1 : bpp + 1]
|
||||||
s = s[bpp + 1 : -2].split()
|
s = line[bpp + 1 : -2].split()
|
||||||
|
|
||||||
for i in range(0, len(s), 2):
|
for i in range(0, len(s), 2):
|
||||||
if s[i] == b"c":
|
if s[i] == b"c":
|
||||||
|
@ -74,9 +75,11 @@ class XpmImageFile(ImageFile.ImageFile):
|
||||||
if rgb == b"None":
|
if rgb == b"None":
|
||||||
self.info["transparency"] = c
|
self.info["transparency"] = c
|
||||||
elif rgb.startswith(b"#"):
|
elif rgb.startswith(b"#"):
|
||||||
rgb = int(rgb[1:], 16)
|
rgb_int = int(rgb[1:], 16)
|
||||||
palette[c] = (
|
palette[c] = (
|
||||||
o8((rgb >> 16) & 255) + o8((rgb >> 8) & 255) + o8(rgb & 255)
|
o8((rgb_int >> 16) & 255)
|
||||||
|
+ o8((rgb_int >> 8) & 255)
|
||||||
|
+ o8(rgb_int & 255)
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
# unknown colour
|
# unknown colour
|
||||||
|
@ -106,6 +109,7 @@ class XpmImageFile(ImageFile.ImageFile):
|
||||||
|
|
||||||
xsize, ysize = self.size
|
xsize, ysize = self.size
|
||||||
|
|
||||||
|
assert self.fp is not None
|
||||||
s = [self.fp.readline()[1 : xsize + 1].ljust(xsize) for i in range(ysize)]
|
s = [self.fp.readline()[1 : xsize + 1].ljust(xsize) for i in range(ysize)]
|
||||||
|
|
||||||
return b"".join(s)
|
return b"".join(s)
|
||||||
|
@ -124,15 +128,15 @@ class XpmDecoder(ImageFile.PyDecoder):
|
||||||
dest_length *= 3
|
dest_length *= 3
|
||||||
pixel_header = False
|
pixel_header = False
|
||||||
while len(data) < dest_length:
|
while len(data) < dest_length:
|
||||||
s = self.fd.readline()
|
line = self.fd.readline()
|
||||||
if not s:
|
if not line:
|
||||||
break
|
break
|
||||||
if s.rstrip() == b"/* pixels */" and not pixel_header:
|
if line.rstrip() == b"/* pixels */" and not pixel_header:
|
||||||
pixel_header = True
|
pixel_header = True
|
||||||
continue
|
continue
|
||||||
s = b'"'.join(s.split(b'"')[1:-1])
|
line = b'"'.join(line.split(b'"')[1:-1])
|
||||||
for i in range(0, len(s), bpp):
|
for i in range(0, len(line), bpp):
|
||||||
key = s[i : i + bpp]
|
key = line[i : i + bpp]
|
||||||
if self.mode == "RGB":
|
if self.mode == "RGB":
|
||||||
data += palette[key]
|
data += palette[key]
|
||||||
else:
|
else:
|
||||||
|
|
Loading…
Reference in New Issue
Block a user