Files
@ r17167:68f47a8db1b5
Branch filter:
Location: cpp/openttd-patchpack/source/src/spriteloader/spriteloader.hpp - annotation
r17167:68f47a8db1b5
2.5 KiB
text/x-c++hdr
(svn r21916) -Fix [FS#4442]: the minimum speed needed for (realistic) acceleration to work properly can sometimes be more than the (temporary) maximum speed causing Clamp to "fail". Make sure that the minimum speed always overrules the maximum speed
r6852:5b6b567a9e32 r6852:5b6b567a9e32 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r9111:983de9c5a848 r6852:5b6b567a9e32 r6852:5b6b567a9e32 r6852:5b6b567a9e32 r6852:5b6b567a9e32 r11203:4e233b1fc54b r14248:a9050881acd7 r11203:4e233b1fc54b r6852:5b6b567a9e32 r6852:5b6b567a9e32 r6852:5b6b567a9e32 r6852:5b6b567a9e32 r6852:5b6b567a9e32 r6852:5b6b567a9e32 r6852:5b6b567a9e32 r6852:5b6b567a9e32 r6852:5b6b567a9e32 r6852:5b6b567a9e32 r11202:ec3713bd39fb r11202:ec3713bd39fb r11202:ec3713bd39fb r11202:ec3713bd39fb r11202:ec3713bd39fb r11202:ec3713bd39fb r6852:5b6b567a9e32 r6852:5b6b567a9e32 r6852:5b6b567a9e32 r6852:5b6b567a9e32 r6852:5b6b567a9e32 r6852:5b6b567a9e32 r11202:ec3713bd39fb r11202:ec3713bd39fb r11202:ec3713bd39fb r11202:ec3713bd39fb r11202:ec3713bd39fb r11203:4e233b1fc54b r11202:ec3713bd39fb r11202:ec3713bd39fb r11203:4e233b1fc54b r6852:5b6b567a9e32 r6852:5b6b567a9e32 r6852:5b6b567a9e32 r6852:5b6b567a9e32 r17138:5078c9240593 r17138:5078c9240593 r17138:5078c9240593 r17138:5078c9240593 r17138:5078c9240593 r6852:5b6b567a9e32 r10056:7a18efcd8edb r6852:5b6b567a9e32 r6852:5b6b567a9e32 r6852:5b6b567a9e32 r6852:5b6b567a9e32 r6852:5b6b567a9e32 | /* $Id$ */
/*
* This file is part of OpenTTD.
* 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.
* 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.
* 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/>.
*/
/** @file spriteloader.hpp Base for loading sprites. */
#ifndef SPRITELOADER_HPP
#define SPRITELOADER_HPP
#include "../core/alloc_type.hpp"
#include "../gfx_type.h"
class SpriteLoader {
public:
struct CommonPixel {
uint8 r; ///< Red-channel
uint8 g; ///< Green-channel
uint8 b; ///< Blue-channel
uint8 a; ///< Alpha-channel
uint8 m; ///< Remap-channel
};
/**
* Structure for passing information from the sprite loader to the blitter.
* You can only use this struct once at a time when using AllocateData to
* allocate the memory as that will always return the same memory address.
* This to prevent thousands of malloc + frees just to load a sprite.
*/
struct Sprite {
uint16 height; ///< Height of the sprite
uint16 width; ///< Width of the sprite
int16 x_offs; ///< The x-offset of where the sprite will be drawn
int16 y_offs; ///< The y-offset of where the sprite will be drawn
SpriteLoader::CommonPixel *data; ///< The sprite itself
/**
* Allocate the sprite data of this sprite.
* @param size the minimum size of the data field.
*/
void AllocateData(size_t size) { this->data = Sprite::buffer.ZeroAllocate(size); }
private:
/** Allocated memory to pass sprite data around */
static ReusableBuffer<SpriteLoader::CommonPixel> buffer;
};
/**
* Load a sprite from the disk and return a sprite struct which is the same for all loaders.
* @param sprite The sprite to fill with data.
* @param file_slot The file "descriptor" of the file we read from.
* @param file_pos The position within the file the image begins.
* @param sprite_type The type of sprite we're trying to load.
* @return true iff loading went okay.
*/
virtual bool LoadSprite(SpriteLoader::Sprite *sprite, uint8 file_slot, size_t file_pos, SpriteType sprite_type) = 0;
virtual ~SpriteLoader() { }
};
#endif /* SPRITELOADER_HPP */
|