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