OpenTTD
32bpp_optimized.hpp
Go to the documentation of this file.
1 /* $Id: 32bpp_optimized.hpp 26209 2014-01-02 22:41:58Z rubidium $ */
2 
3 /*
4  * This file is part of OpenTTD.
5  * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
6  * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
7  * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
8  */
9 
12 #ifndef BLITTER_32BPP_OPTIMIZED_HPP
13 #define BLITTER_32BPP_OPTIMIZED_HPP
14 
15 #include "32bpp_simple.hpp"
16 
19 public:
21  struct SpriteData {
22  uint32 offset[ZOOM_LVL_COUNT][2];
23  byte data[];
24  };
25 
26  /* virtual */ void Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom);
27  /* virtual */ Sprite *Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator);
28 
29  /* virtual */ const char *GetName() { return "32bpp-optimized"; }
30 
31  template <BlitterMode mode> void Draw(const Blitter::BlitterParams *bp, ZoomLevel zoom);
32 };
33 
36 public:
37  FBlitter_32bppOptimized() : BlitterFactory("32bpp-optimized", "32bpp Optimized Blitter (no palette animation)") {}
38  /* virtual */ Blitter *CreateInstance() { return new Blitter_32bppOptimized(); }
39 };
40 
41 #endif /* BLITTER_32BPP_OPTIMIZED_HPP */
byte data[]
Data, all zoomlevels.
Data structure describing a sprite.
Definition: spritecache.h:18
uint32 offset[ZOOM_LVL_COUNT][2]
Offsets (from .data) to streams for different zoom levels, and the normal and remap image information...
Blitter * CreateInstance()
Create an instance of this Blitter-class.
How all blitters should look like.
Definition: base.hpp:30
Data stored about a (single) sprite.
Sprite * Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator)
Convert a sprite from the loader to our own format.
Factory for the optimised 32 bpp blitter (without palette animation).
Number of zoom levels.
Definition: zoom_type.h:32
Parameters related to blitting.
Definition: base.hpp:33
Structure for passing information from the sprite loader to the blitter.
The most trivial 32 bpp blitter (without palette animation).
Simple 32 bpp blitter.
ZoomLevel
All zoom levels we know.
Definition: zoom_type.h:21
void Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom)
Draws a sprite to a (screen) buffer.
const char * GetName()
Get the name of the blitter, the same as the Factory-instance returns.
BlitterMode
The modes of blitting we can do.
Definition: base.hpp:19
The base factory, keeping track of all blitters.
Definition: factory.hpp:28
The optimised 32 bpp blitter (without palette animation).