From de7534243dc820723326cfe43e10c3cd9c59552f Mon Sep 17 00:00:00 2001 From: Quantum Date: Sun, 4 Oct 2020 02:31:27 -0400 Subject: [PATCH] Use standard function wand.image.Image.import_pixels --- win2xcur/parser/xcursor.py | 7 +++++-- win2xcur/utils.py | 20 -------------------- 2 files changed, 5 insertions(+), 22 deletions(-) delete mode 100644 win2xcur/utils.py diff --git a/win2xcur/parser/xcursor.py b/win2xcur/parser/xcursor.py index c608eda..5838d62 100644 --- a/win2xcur/parser/xcursor.py +++ b/win2xcur/parser/xcursor.py @@ -2,9 +2,10 @@ import struct from collections import defaultdict from typing import Any, Dict, List, Tuple, cast +from wand.image import Image + from win2xcur.cursor import CursorFrame, CursorImage from win2xcur.parser.base import BaseParser -from win2xcur.utils import image_from_pixels class XCursorParser(BaseParser): @@ -77,8 +78,10 @@ class XCursorParser(BaseParser): raise ValueError('Invalid image at %d: expected %d bytes, got %d bytes' % (image_size, image_size, len(blob))) + image = Image(width=width, height=height) + image.import_pixels(channel_map='BGRA', data=blob) images_by_size[nominal_size].append( - (CursorImage(image_from_pixels(blob, width, height, 'BGRA', 'char'), (x_offset, y_offset)), delay) + (CursorImage(image.sequence[0], (x_offset, y_offset)), delay) ) if len(set(map(len, images_by_size.values()))) != 1: diff --git a/win2xcur/utils.py b/win2xcur/utils.py deleted file mode 100644 index b40c437..0000000 --- a/win2xcur/utils.py +++ /dev/null @@ -1,20 +0,0 @@ -import ctypes - -from wand.api import library -from wand.image import Image -from wand.sequence import SingleImage - -MagickImportImagePixels = library['MagickImportImagePixels'] -MagickImportImagePixels.argtypes = ( - ctypes.c_void_p, ctypes.c_ssize_t, ctypes.c_ssize_t, ctypes.c_size_t, - ctypes.c_size_t, ctypes.c_char_p, ctypes.c_int, ctypes.c_void_p -) -StorageType = ('undefined', 'char', 'double', 'float', - 'integer', 'long', 'quantum', 'short') - - -def image_from_pixels(blob: bytes, width: int, height: int, pixel_format: str, pixel_size: str) -> SingleImage: - image = Image(width=width, height=height) - MagickImportImagePixels(image.wand, 0, 0, width, height, pixel_format.encode('ascii'), - StorageType.index(pixel_size), blob) - return image.sequence[0]