Skip to content

Commit f59c9ae

Browse files
authored
Merge pull request #4 from radarhere/improved_dds
Loop over enums to create constants
2 parents 69b922d + 51f7359 commit f59c9ae

File tree

3 files changed

+42
-60
lines changed

3 files changed

+42
-60
lines changed

src/PIL/DdsImagePlugin.py

Lines changed: 39 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
"""
1212
import io
1313
import struct
14+
import sys
1415
from enum import IntEnum, IntFlag
1516

1617
from . import Image, ImageFile, ImagePalette
@@ -263,62 +264,43 @@ class D3DFMT(IntEnum):
263264

264265

265266
# Backward compat layer
266-
DDSD_CAPS = DDSD.CAPS
267-
DDSD_HEIGHT = DDSD.HEIGHT
268-
DDSD_WIDTH = DDSD.WIDTH
269-
DDSD_PITCH = DDSD.PITCH
270-
DDSD_PIXELFORMAT = DDSD.PIXELFORMAT
271-
DDSD_MIPMAPCOUNT = DDSD.MIPMAPCOUNT
272-
DDSD_LINEARSIZE = DDSD.LINEARSIZE
273-
DDSD_DEPTH = DDSD.DEPTH
274-
275-
DDSCAPS_COMPLEX = DDSCAPS.COMPLEX
276-
DDSCAPS_TEXTURE = DDSCAPS.TEXTURE
277-
DDSCAPS_MIPMAP = DDSCAPS.MIPMAP
278-
279-
DDSCAPS2_CUBEMAP = DDSCAPS2.CUBEMAP
280-
DDSCAPS2_CUBEMAP_POSITIVEX = DDSCAPS2.CUBEMAP_POSITIVEX
281-
DDSCAPS2_CUBEMAP_NEGATIVEX = DDSCAPS2.CUBEMAP_NEGATIVEX
282-
DDSCAPS2_CUBEMAP_POSITIVEY = DDSCAPS2.CUBEMAP_POSITIVEY
283-
DDSCAPS2_CUBEMAP_NEGATIVEY = DDSCAPS2.CUBEMAP_NEGATIVEY
284-
DDSCAPS2_CUBEMAP_POSITIVEZ = DDSCAPS2.CUBEMAP_POSITIVEZ
285-
DDSCAPS2_CUBEMAP_NEGATIVEZ = DDSCAPS2.CUBEMAP_NEGATIVEZ
286-
DDSCAPS2_VOLUME = DDSCAPS2.VOLUME
287-
288-
DDPF_ALPHAPIXELS = DDPF.ALPHAPIXELS
289-
DDPF_ALPHA = DDPF.ALPHA
290-
DDPF_FOURCC = DDPF.FOURCC
291-
DDPF_PALETTEINDEXED8 = DDPF.PALETTEINDEXED8
292-
DDPF_RGB = DDPF.RGB
293-
DDPF_LUMINANCE = DDPF.LUMINANCE
294-
295-
DDS_FOURCC = DDPF_FOURCC
296-
DDS_RGB = DDPF_RGB
297-
DDS_RGBA = DDPF_RGB | DDPF_ALPHAPIXELS
298-
DDS_LUMINANCE = DDPF_LUMINANCE
299-
DDS_LUMINANCEA = DDPF_LUMINANCE | DDPF_ALPHAPIXELS
300-
DDS_ALPHA = DDPF_ALPHA
301-
DDS_PAL8 = DDPF_PALETTEINDEXED8
302-
303-
DDS_HEADER_FLAGS_TEXTURE = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH | DDSD_PIXELFORMAT
304-
DDS_HEADER_FLAGS_MIPMAP = DDSD_MIPMAPCOUNT
305-
DDS_HEADER_FLAGS_VOLUME = DDSD_DEPTH
306-
DDS_HEADER_FLAGS_PITCH = DDSD_PITCH
307-
DDS_HEADER_FLAGS_LINEARSIZE = DDSD_LINEARSIZE
308-
309-
DDS_HEIGHT = DDSD_HEIGHT
310-
DDS_WIDTH = DDSD_WIDTH
311-
312-
DDS_SURFACE_FLAGS_TEXTURE = DDSCAPS_TEXTURE
313-
DDS_SURFACE_FLAGS_MIPMAP = DDSCAPS_COMPLEX | DDSCAPS_MIPMAP
314-
DDS_SURFACE_FLAGS_CUBEMAP = DDSCAPS_COMPLEX
315-
316-
DDS_CUBEMAP_POSITIVEX = DDSCAPS2_CUBEMAP | DDSCAPS2_CUBEMAP_POSITIVEX
317-
DDS_CUBEMAP_NEGATIVEX = DDSCAPS2_CUBEMAP | DDSCAPS2_CUBEMAP_NEGATIVEX
318-
DDS_CUBEMAP_POSITIVEY = DDSCAPS2_CUBEMAP | DDSCAPS2_CUBEMAP_POSITIVEY
319-
DDS_CUBEMAP_NEGATIVEY = DDSCAPS2_CUBEMAP | DDSCAPS2_CUBEMAP_NEGATIVEY
320-
DDS_CUBEMAP_POSITIVEZ = DDSCAPS2_CUBEMAP | DDSCAPS2_CUBEMAP_POSITIVEZ
321-
DDS_CUBEMAP_NEGATIVEZ = DDSCAPS2_CUBEMAP | DDSCAPS2_CUBEMAP_NEGATIVEZ
267+
module = sys.modules[__name__]
268+
for item in DDSD:
269+
setattr(module, "DDSD_" + item.name, item.value)
270+
for item in DDSCAPS:
271+
setattr(module, "DDSCAPS_" + item.name, item.value)
272+
for item in DDSCAPS2:
273+
setattr(module, "DDSCAPS2_" + item.name, item.value)
274+
for item in DDPF:
275+
setattr(module, "DDPF_" + item.name, item.value)
276+
277+
DDS_FOURCC = DDPF.FOURCC
278+
DDS_RGB = DDPF.RGB
279+
DDS_RGBA = DDPF.RGB | DDPF.ALPHAPIXELS
280+
DDS_LUMINANCE = DDPF.LUMINANCE
281+
DDS_LUMINANCEA = DDPF.LUMINANCE | DDPF.ALPHAPIXELS
282+
DDS_ALPHA = DDPF.ALPHA
283+
DDS_PAL8 = DDPF.PALETTEINDEXED8
284+
285+
DDS_HEADER_FLAGS_TEXTURE = DDSD.CAPS | DDSD.HEIGHT | DDSD.WIDTH | DDSD.PIXELFORMAT
286+
DDS_HEADER_FLAGS_MIPMAP = DDSD.MIPMAPCOUNT
287+
DDS_HEADER_FLAGS_VOLUME = DDSD.DEPTH
288+
DDS_HEADER_FLAGS_PITCH = DDSD.PITCH
289+
DDS_HEADER_FLAGS_LINEARSIZE = DDSD.LINEARSIZE
290+
291+
DDS_HEIGHT = DDSD.HEIGHT
292+
DDS_WIDTH = DDSD.WIDTH
293+
294+
DDS_SURFACE_FLAGS_TEXTURE = DDSCAPS.TEXTURE
295+
DDS_SURFACE_FLAGS_MIPMAP = DDSCAPS.COMPLEX | DDSCAPS.MIPMAP
296+
DDS_SURFACE_FLAGS_CUBEMAP = DDSCAPS.COMPLEX
297+
298+
DDS_CUBEMAP_POSITIVEX = DDSCAPS2.CUBEMAP | DDSCAPS2.CUBEMAP_POSITIVEX
299+
DDS_CUBEMAP_NEGATIVEX = DDSCAPS2.CUBEMAP | DDSCAPS2.CUBEMAP_NEGATIVEX
300+
DDS_CUBEMAP_POSITIVEY = DDSCAPS2.CUBEMAP | DDSCAPS2.CUBEMAP_POSITIVEY
301+
DDS_CUBEMAP_NEGATIVEY = DDSCAPS2.CUBEMAP | DDSCAPS2.CUBEMAP_NEGATIVEY
302+
DDS_CUBEMAP_POSITIVEZ = DDSCAPS2.CUBEMAP | DDSCAPS2.CUBEMAP_POSITIVEZ
303+
DDS_CUBEMAP_NEGATIVEZ = DDSCAPS2.CUBEMAP | DDSCAPS2.CUBEMAP_NEGATIVEZ
322304

323305
DXT1_FOURCC = D3DFMT.DXT1
324306
DXT3_FOURCC = D3DFMT.DXT3
@@ -405,7 +387,7 @@ def _open(self):
405387
else:
406388
msg = f"Unsupported bitcount {bitcount} for {pfflags_}"
407389
raise OSError(msg)
408-
elif pfflags & DDPF_PALETTEINDEXED8:
390+
elif pfflags & DDPF.PALETTEINDEXED8:
409391
self._mode = "P"
410392
self.palette = ImagePalette.raw("RGBA", self.fp.read(1024))
411393
self.tile = [("raw", (0, 0) + self.size, 0, "L")]

src/PIL/Image.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@ class _Tile(NamedTuple):
212212
encoder_name: str
213213
extents: tuple[int, int, int, int]
214214
offset: int
215-
tile_args: tuple
215+
args: tuple
216216

217217

218218
# --------------------------------------------------------------------

src/PIL/ImageFile.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -523,10 +523,10 @@ def _save(im, fp, tile, bufsize=0):
523523

524524

525525
def _encode_tile(im, fp, tile: list[Image._Tile], bufsize, fh, exc=None):
526-
for encoder_name, extents, offset, tile_args in tile:
526+
for encoder_name, extents, offset, args in tile:
527527
if offset > 0:
528528
fp.seek(offset)
529-
encoder = Image._getencoder(im.mode, encoder_name, tile_args, im.encoderconfig)
529+
encoder = Image._getencoder(im.mode, encoder_name, args, im.encoderconfig)
530530
try:
531531
encoder.setimage(im.im, extents)
532532
if encoder.pushes_fd:

0 commit comments

Comments
 (0)