SVG Patch

This commit is contained in:
NikolaM 2023-05-25 07:45:37 +00:00
parent b64a7802bb
commit 210a14393f
1 changed files with 66 additions and 0 deletions

66
img_sdl2.py Normal file
View File

@ -0,0 +1,66 @@
'''
SDL2 image loader
=================
'''
__all__ = ('ImageLoaderSDL2', )
from kivy.logger import Logger
from kivy.core.image import ImageLoaderBase, ImageData, ImageLoader
try:
from kivy.core.image import _img_sdl2
except ImportError:
from kivy.core import handle_win_lib_import_error
handle_win_lib_import_error(
'image', 'sdl2', 'kivy.core.image._img_sdl2')
raise
class ImageLoaderSDL2(ImageLoaderBase):
'''Image loader based on SDL2_image'''
def _ensure_ext(self):
_img_sdl2.init()
@staticmethod
def extensions():
'''Return accepted extensions for this loader'''
return ('bmp', 'jpg', 'jpeg', 'jpe', 'svg', 'lbm', 'pcx', 'png', 'pnm',
'tga', 'tiff', 'webp', 'xcf', 'xpm', 'xv')
@staticmethod
def can_save(fmt, is_bytesio):
return fmt in ('jpg', 'png')
@staticmethod
def can_load_memory():
return True
def load(self, filename):
if self._inline:
data = filename.read()
info = _img_sdl2.load_from_memory(data)
else:
info = _img_sdl2.load_from_filename(filename)
if not info:
Logger.warning('Image: Unable to load image <%s>' % filename)
raise Exception('SDL2: Unable to load image')
w, h, fmt, pixels, rowlength = info
# update internals
if not self._inline:
self.filename = filename
return [ImageData(
w, h, fmt, pixels, source=filename,
rowlength=rowlength)]
@staticmethod
def save(filename, width, height, pixelfmt, pixels, flipped, imagefmt):
_img_sdl2.save(filename, width, height, pixelfmt, pixels, flipped,
imagefmt)
return True
# register
ImageLoader.register(ImageLoaderSDL2)