truelight@6852: /* $Id$ */ truelight@6852: rubidium@9111: /** @file 8bpp_optimized.hpp An optimized 8 bpp blitter. */ truelight@6852: truelight@6852: #ifndef BLITTER_8BPP_OPTIMIZED_HPP truelight@6852: #define BLITTER_8BPP_OPTIMIZED_HPP truelight@6852: truelight@6937: #include "8bpp_base.hpp" truelight@6937: #include "factory.hpp" truelight@6852: truelight@6937: class Blitter_8bppOptimized : public Blitter_8bppBase { truelight@6937: public: smatz@9542: struct SpriteData { smatz@9542: uint32 offset[ZOOM_LVL_COUNT]; ///< offsets (from .data) to streams for different zoom levels smatz@9542: byte data[VARARRAY_SIZE]; ///< data, all zoomlevels smatz@9542: }; smatz@9542: truelight@6878: /* virtual */ void Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom); truelight@6878: /* virtual */ Sprite *Encode(SpriteLoader::Sprite *sprite, Blitter::AllocatorProc *allocator); truelight@6989: truelight@6989: /* virtual */ const char *GetName() { return "8bpp-optimized"; } truelight@6852: }; truelight@6852: truelight@6852: class FBlitter_8bppOptimized: public BlitterFactory { truelight@6852: public: peter1138@6867: /* virtual */ const char *GetName() { return "8bpp-optimized"; } truelight@6852: /* virtual */ const char *GetDescription() { return "8bpp Optimized Blitter (compression + all-ZoomLevel cache)"; } truelight@6852: /* virtual */ Blitter *CreateInstance() { return new Blitter_8bppOptimized(); } truelight@6852: }; truelight@6852: truelight@6852: #endif /* BLITTER_8BPP_OPTIMIZED_HPP */