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 = {}
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):