Files
@ r23882:d683a0787bc9
Branch filter:
Location: cpp/openttd-patchpack/source/src/spritecache.h - annotation
r23882:d683a0787bc9
2.1 KiB
text/x-c
Codechange: Don't use SDL_CreateRGBSurfaceWithFormat()
This function requires libSDL 2.0.5 or higher. It looks like we don't
need to use it, and can just use the original SDL_CreateRGBSurface(),
with the masks set to 0, to trigger the default 8-bit format, which is
SDL_PIXELFORMAT_INDEX8.
Closes #7785
Note: this code path is activated by using an 8-bit blitter, like:
./bin/openttd -b 8bpp-simple
This function requires libSDL 2.0.5 or higher. It looks like we don't
need to use it, and can just use the original SDL_CreateRGBSurface(),
with the masks set to 0, to trigger the default 8-bit format, which is
SDL_PIXELFORMAT_INDEX8.
Closes #7785
Note: this code path is activated by using an 8-bit blitter, like:
./bin/openttd -b 8bpp-simple
r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r9111:983de9c5a848 r6420:01087f989fd1 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r8123:dde0a9a84019 r8123:dde0a9a84019 r12246:330df08e87cc r6248:b940b09d7ab8 r18462:a1ba75a7f741 r18462:a1ba75a7f741 r18462:a1ba75a7f741 r18462:a1ba75a7f741 r18462:a1ba75a7f741 r6248:b940b09d7ab8 r5475:3f5cd13d1b63 r6803:f739da58f36c r6803:f739da58f36c r17035:6216511eba9e r17035:6216511eba9e r23607:36c15679007d r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r15087:eb029334c019 r15087:eb029334c019 r22525:8b64738b95fa r15087:eb029334c019 r15087:eb029334c019 r15087:eb029334c019 r10056:7a18efcd8edb r5475:3f5cd13d1b63 r10056:7a18efcd8edb r10056:7a18efcd8edb r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r10056:7a18efcd8edb r5475:3f5cd13d1b63 r10056:7a18efcd8edb r10056:7a18efcd8edb r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r6247:96e840dbefcc r18461:b013cc5efff8 r6247:96e840dbefcc r5475:3f5cd13d1b63 r19020:24d71054fe13 r19020:24d71054fe13 r19020:24d71054fe13 r14284:8fe3cab84763 r5587:034e5e185dc2 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 | /* $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 spritecache.h Functions to cache sprites in memory. */
#ifndef SPRITECACHE_H
#define SPRITECACHE_H
#include "gfx_type.h"
/** Data structure describing a sprite. */
struct Sprite {
uint16 height; ///< Height of the sprite.
uint16 width; ///< Width of the sprite.
int16 x_offs; ///< Number of pixels to shift the sprite to the right.
int16 y_offs; ///< Number of pixels to shift the sprite downwards.
byte data[]; ///< Sprite data.
};
extern uint _sprite_cache_size;
typedef void *AllocatorProc(size_t size);
void *GetRawSprite(SpriteID sprite, SpriteType type, AllocatorProc *allocator = nullptr);
bool SpriteExists(SpriteID sprite);
SpriteType GetSpriteType(SpriteID sprite);
uint GetOriginFileSlot(SpriteID sprite);
uint GetSpriteCountForSlot(uint file_slot, SpriteID begin, SpriteID end);
uint GetMaxSpriteID();
static inline const Sprite *GetSprite(SpriteID sprite, SpriteType type)
{
assert(type != ST_RECOLOUR);
return (Sprite*)GetRawSprite(sprite, type);
}
static inline const byte *GetNonSprite(SpriteID sprite, SpriteType type)
{
assert(type == ST_RECOLOUR);
return (byte*)GetRawSprite(sprite, type);
}
void GfxInitSpriteMem();
void GfxClearSpriteCache();
void IncreaseSpriteLRU();
void ReadGRFSpriteOffsets(byte container_version);
size_t GetGRFSpriteOffset(uint32 id);
bool LoadNextSprite(int load_index, byte file_index, uint file_sprite_id, byte container_version);
bool SkipSpriteData(byte type, uint16 num);
void DupSprite(SpriteID old_spr, SpriteID new_spr);
#endif /* SPRITECACHE_H */
|