tron@2186: /* $Id$ */ tron@2186: rubidium@9111: /** @file spritecache.h Functions to cache sprites in memory. */ belugas@6420: tron@1349: #ifndef SPRITECACHE_H tron@1349: #define SPRITECACHE_H tron@1349: rubidium@8123: #include "gfx_type.h" rubidium@8123: rubidium@6248: struct Sprite { tron@1350: byte height; tron@1356: uint16 width; tron@1356: int16 x_offs; tron@1356: int16 y_offs; tron@1350: byte data[VARARRAY_SIZE]; rubidium@6248: }; tron@1350: peter1138@6803: extern uint _sprite_cache_size; peter1138@6803: rubidium@10056: const void *GetRawSprite(SpriteID sprite, SpriteType type); peter1138@3565: bool SpriteExists(SpriteID sprite); tron@1361: rubidium@10056: static inline const Sprite *GetSprite(SpriteID sprite, SpriteType type) tron@1361: { rubidium@10056: assert(type != ST_RECOLOUR); rubidium@10056: return (Sprite*)GetRawSprite(sprite, type); tron@1361: } tron@1361: rubidium@10056: static inline const byte *GetNonSprite(SpriteID sprite, SpriteType type) tron@1361: { rubidium@10056: assert(type == ST_RECOLOUR); rubidium@10056: return (byte*)GetRawSprite(sprite, type); tron@1361: } tron@1349: rubidium@6247: void GfxInitSpriteMem(); rubidium@6247: void IncreaseSpriteLRU(); tron@1349: truelight@6908: bool LoadNextSprite(int load_index, byte file_index, uint file_sprite_id); rubidium@5587: void DupSprite(SpriteID old_spr, SpriteID new_spr); tron@2340: Darkvater@2436: #endif /* SPRITECACHE_H */