[pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci
This commit is contained in:
pre-commit-ci[bot] 2022-08-13 20:45:18 +00:00 committed by REDxEYE
parent 59a43752d1
commit b7a589475d

View File

@ -12,7 +12,7 @@ Full text of the CC0 license:
import struct import struct
from enum import IntEnum, IntFlag from enum import IntEnum, IntFlag
from io import BytesIO, BufferedIOBase from io import BufferedIOBase, BytesIO
from math import ceil, log from math import ceil, log
from typing import NamedTuple from typing import NamedTuple
@ -125,7 +125,11 @@ VTFHeader = NamedTuple(
("resource_count", int), ("resource_count", int),
], ],
) )
RGB_FORMATS = (VtfPF.RGB888, VtfPF.BGR888, VtfPF.UV88,) RGB_FORMATS = (
VtfPF.RGB888,
VtfPF.BGR888,
VtfPF.UV88,
)
RGBA_FORMATS = ( RGBA_FORMATS = (
VtfPF.DXT1, VtfPF.DXT1,
VtfPF.DXT1_ONEBITALPHA, VtfPF.DXT1_ONEBITALPHA,
@ -137,9 +141,7 @@ L_FORMATS = (
VtfPF.A8, VtfPF.A8,
VtfPF.I8, VtfPF.I8,
) )
LA_FORMATS = ( LA_FORMATS = (VtfPF.IA88,)
VtfPF.IA88,
)
BLOCK_COMPRESSED = (VtfPF.DXT1, VtfPF.DXT1_ONEBITALPHA, VtfPF.DXT3, VtfPF.DXT5) BLOCK_COMPRESSED = (VtfPF.DXT1, VtfPF.DXT1_ONEBITALPHA, VtfPF.DXT3, VtfPF.DXT5)
SUPPORTED_FORMATS = RGBA_FORMATS + RGB_FORMATS + LA_FORMATS + L_FORMATS SUPPORTED_FORMATS = RGBA_FORMATS + RGB_FORMATS + LA_FORMATS + L_FORMATS
@ -152,12 +154,12 @@ def _get_texture_size(pixel_format: VtfPF, width, height):
if pixel_format in (VtfPF.DXT1, VtfPF.DXT1_ONEBITALPHA): if pixel_format in (VtfPF.DXT1, VtfPF.DXT1_ONEBITALPHA):
return width * height // 2 return width * height // 2
elif ( elif (
pixel_format pixel_format
in ( in (
VtfPF.DXT3, VtfPF.DXT3,
VtfPF.DXT5, VtfPF.DXT5,
) )
+ L_FORMATS + L_FORMATS
): ):
return width * height return width * height
elif pixel_format == VtfPF.UV88: elif pixel_format == VtfPF.UV88:
@ -186,50 +188,50 @@ def _get_mipmap_count(width: int, height: int):
def _write_image(fp: BufferedIOBase, im: Image.Image, pixel_format: VtfPF): def _write_image(fp: BufferedIOBase, im: Image.Image, pixel_format: VtfPF):
extents = (0, 0) + im.size extents = (0, 0) + im.size
if pixel_format == VtfPF.DXT1: if pixel_format == VtfPF.DXT1:
encoder = 'bcn' encoder = "bcn"
encoder_args = (1, "DXT1") encoder_args = (1, "DXT1")
im = im.convert('RGB') im = im.convert("RGB")
elif pixel_format == VtfPF.DXT1_ONEBITALPHA: elif pixel_format == VtfPF.DXT1_ONEBITALPHA:
encoder = 'bcn' encoder = "bcn"
encoder_args = (1, "DXT1A") encoder_args = (1, "DXT1A")
im = im.convert('RGBA') im = im.convert("RGBA")
elif pixel_format == VtfPF.DXT3: elif pixel_format == VtfPF.DXT3:
encoder = 'bcn' encoder = "bcn"
encoder_args = (3, "DXT3") encoder_args = (3, "DXT3")
im = im.convert('RGBA') im = im.convert("RGBA")
elif pixel_format == VtfPF.DXT5: elif pixel_format == VtfPF.DXT5:
encoder = 'bcn' encoder = "bcn"
encoder_args = (5, "DXT5") encoder_args = (5, "DXT5")
im = im.convert('RGBA') im = im.convert("RGBA")
elif pixel_format == VtfPF.RGB888: elif pixel_format == VtfPF.RGB888:
encoder = 'raw' encoder = "raw"
encoder_args = ("RGB", 0, 0) encoder_args = ("RGB", 0, 0)
im = im.convert('RGB') im = im.convert("RGB")
elif pixel_format == VtfPF.BGR888: elif pixel_format == VtfPF.BGR888:
encoder = 'raw' encoder = "raw"
encoder_args = ("BGR", 0, 0) encoder_args = ("BGR", 0, 0)
im = im.convert('RGB') im = im.convert("RGB")
elif pixel_format == VtfPF.RGBA8888: elif pixel_format == VtfPF.RGBA8888:
encoder = 'raw' encoder = "raw"
encoder_args = ("RGBA", 0, 0) encoder_args = ("RGBA", 0, 0)
im = im.convert('RGBA') im = im.convert("RGBA")
elif pixel_format == VtfPF.A8: elif pixel_format == VtfPF.A8:
encoder = 'raw' encoder = "raw"
encoder_args = ("L", 0, 0) encoder_args = ("L", 0, 0)
*_, a = im.split() *_, a = im.split()
im = Image.merge('L', (a,)) im = Image.merge("L", (a,))
elif pixel_format == VtfPF.I8: elif pixel_format == VtfPF.I8:
encoder = 'raw' encoder = "raw"
encoder_args = ("L", 0, 0) encoder_args = ("L", 0, 0)
im = im.convert('L') im = im.convert("L")
elif pixel_format == VtfPF.IA88: elif pixel_format == VtfPF.IA88:
encoder = 'raw' encoder = "raw"
encoder_args = ("LA", 0, 0) encoder_args = ("LA", 0, 0)
im = im.convert('LA') im = im.convert("LA")
elif pixel_format == VtfPF.UV88: elif pixel_format == VtfPF.UV88:
encoder = 'raw' encoder = "raw"
r, g, *_ = im.split() r, g, *_ = im.split()
im = Image.merge('LA', (r, g)) im = Image.merge("LA", (r, g))
encoder_args = ("LA", 0, 0) encoder_args = ("LA", 0, 0)
else: else:
raise VTFException(f"Unsupported pixel format: {pixel_format!r}") raise VTFException(f"Unsupported pixel format: {pixel_format!r}")
@ -240,7 +242,7 @@ def _write_image(fp: BufferedIOBase, im: Image.Image, pixel_format: VtfPF):
def _closest_power(x): def _closest_power(x):
possible_results = round(log(x, 2)), ceil(log(x, 2)) possible_results = round(log(x, 2)), ceil(log(x, 2))
return 2 ** min(possible_results, key=lambda z: abs(x - 2 ** z)) return 2 ** min(possible_results, key=lambda z: abs(x - 2**z))
class VtfImageFile(ImageFile.ImageFile): class VtfImageFile(ImageFile.ImageFile):
@ -325,12 +327,12 @@ class VtfImageFile(ImageFile.ImageFile):
def _save(im, fp, filename): def _save(im, fp, filename):
im: Image.Image im: Image.Image
if im.mode not in ("RGB", "RGBA", 'L', 'LA'): if im.mode not in ("RGB", "RGBA", "L", "LA"):
raise OSError(f"cannot write mode {im.mode} as VTF") raise OSError(f"cannot write mode {im.mode} as VTF")
encoderinfo = im.encoderinfo encoderinfo = im.encoderinfo
pixel_format = VtfPF(encoderinfo.get("pixel_format", VtfPF.RGBA8888)) pixel_format = VtfPF(encoderinfo.get("pixel_format", VtfPF.RGBA8888))
version = encoderinfo.get("version", (7, 4)) version = encoderinfo.get("version", (7, 4))
generate_mips = encoderinfo.get('generate_mips', True) generate_mips = encoderinfo.get("generate_mips", True)
flags = CompiledVtfFlags(0) flags = CompiledVtfFlags(0)
@ -343,7 +345,7 @@ def _save(im, fp, filename):
elif pixel_format in RGB_FORMATS + L_FORMATS: elif pixel_format in RGB_FORMATS + L_FORMATS:
pass pass
else: else:
raise VTFException('Unhandled case') raise VTFException("Unhandled case")
im = im.resize((_closest_power(im.width), _closest_power(im.height))) im = im.resize((_closest_power(im.width), _closest_power(im.height)))
width, height = im.size width, height = im.size