#pragma once #include #include #include "utils/sdl_ptrs.h" namespace devilution { struct Art { SDLSurfaceUniquePtr surface; int frames; int logical_width; int frame_height; unsigned int palette_version; #ifndef USE_SDL1 SDLTextureUniquePtr texture; #endif Art() { surface = nullptr; frames = 1; logical_width = 0; frame_height = 0; // logical frame height (before scaling) palette_version = 0; #ifndef USE_SDL1 texture = nullptr; #endif } int w() const { return logical_width; } int h() const { return frame_height; } void Unload() { surface = nullptr; #ifndef USE_SDL1 texture = nullptr; #endif } }; void LoadArt(const char *pszFile, Art *art, int frames = 1, SDL_Color *pPalette = nullptr, const std::array *colorMapping = nullptr); void LoadMaskedArt(const char *pszFile, Art *art, int frames = 1, int mask = 250, const std::array *colorMapping = nullptr); } // namespace devilution