#include "utils/surface_to_png.hpp" #include #ifdef USE_SDL3 #include #include #else #include #endif #include #include "engine/surface.hpp" namespace devilution { #ifndef USE_SDL3 extern "C" int IMG_SavePNG_RW(SDL_Surface *surface, SDL_RWops *dst, int freedst); #endif tl::expected WriteSurfaceToFilePng(const Surface &buf, #ifdef USE_SDL3 SDL_IOStream * #else SDL_RWops * #endif dst) { #ifdef USE_SDL3 const bool ok = IMG_SavePNG_IO(buf.surface, dst, /*closeio=*/true); #else const bool ok = IMG_SavePNG_RW(buf.surface, dst, /*freedst=*/1) == 0; #endif if (!ok) { tl::expected result = tl::make_unexpected(std::string(SDL_GetError())); SDL_ClearError(); return result; } return {}; } } // namespace devilution