X-Git-Url: https://git.ctpug.org.za/?p=erdslangetjie.git;a=blobdiff_plain;f=erdslangetjie%2Fdata.py;h=2ee869120d5880f9c5bbf1c7bbf3b9d5435cc1c6;hp=d33d47a754e587e4cde2e20e0c17fe3aba14f359;hb=HEAD;hpb=67e1f5bd51cb9c6d11d3c5c1a8b98da78fe4bc20 diff --git a/erdslangetjie/data.py b/erdslangetjie/data.py index d33d47a..2ee8691 100644 --- a/erdslangetjie/data.py +++ b/erdslangetjie/data.py @@ -9,9 +9,15 @@ pyglet.resource search path. ''' import os +from kivy.core.image import ImageLoader +from kivy.core.audio import SoundLoader +from kivy.cache import Cache data_py = os.path.abspath(os.path.dirname(__file__)) data_dir = os.path.normpath(os.path.join(data_py, '..', 'data')) +imageloader = ImageLoader() +soundloader = SoundLoader() +Cache.register('bane', limit=200) def filepath(filename): @@ -27,3 +33,23 @@ def load(filename, mode='rb'): "mode" is passed as the second arg to open(). ''' return open(filepath(filename), mode) + + +def _cache_load(filename, loader): + '''Load an object either from disk or from the cache. + + We rely on kivy's caching infrastructure''' + path = filepath(filename) + obj = Cache.get('bane', path) + if obj is None: + obj = loader.load(path) + Cache.append('bane', path, obj) + return obj + + +def load_image(filename): + return _cache_load(filename, imageloader) + + +def load_sound(filename): + return _cache_load(filename, soundloader)