From 5ba1be325aa4c1d5d901b796a3fe757acbc77e52 Mon Sep 17 00:00:00 2001 From: Simon Cross Date: Fri, 9 Sep 2016 21:09:01 +0200 Subject: [PATCH] Add support for transforming images when loading them. --- tabakrolletjie/loader.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/tabakrolletjie/loader.py b/tabakrolletjie/loader.py index 7f012a0..e4a5aef 100644 --- a/tabakrolletjie/loader.py +++ b/tabakrolletjie/loader.py @@ -9,11 +9,14 @@ import pygame.display import pygame.mixer from .constants import DEBUG +from .transforms import NullTransform class Loader(object): """ Load data files from beneath a prefix. """ + NULL_TRANSFORM = NullTransform() + def __init__(self, prefix): self._prefix = prefix self._cache = {} @@ -33,16 +36,18 @@ class Loader(object): with self.open_file("stations", *parts) as f: return json.load(f) - def load_image(self, *parts): + def load_image(self, *parts, **kwargs): """Return a pygame surface of the requested image.""" fn = self.full_path("images", *parts) - img = self._cache.get(fn, None) + transform = kwargs.pop("transform", self.NULL_TRANSFORM) + img = self._cache.get((fn, transform.hash), None) if img is None: img = pygame.image.load(fn) # We assume pygame.display has been initialised # Fix this if that changes img.convert_alpha(pygame.display.get_surface()) - self._cache[fn] = img + img = transform.apply(img) + self._cache[(fn, transform.hash)] = img return img def load_font(self, *parts, **kwargs): -- 2.34.1