#include "sdl_nyan.h" #include #include #include #include #include #include #include "log.h" #include "nyan_types.h" #define STB_IMAGE_IMPLEMENTATION #include "stb_image.h" #include "nyan_data_r.c" static const char *const NYAN_PATH = "../external/nyan/nyan"; static void nyan_sdl_fatal(const char *const msg) { log_fatal("%s: %s", msg, SDL_GetError()); abort(); } static void nyan_sdl_error(const char *const msg) { log_error("%s: %s", msg, SDL_GetError()); } template [[maybe_unused]] const char *aprintf(std::array &buf, const char *fmt, ...) { std::va_list args; va_start(args, fmt); std::vsnprintf(buf.data(), buf.size(), fmt, args); va_end(args); return buf.data(); } static SDL_Texture *make_nyan_sprite_sheet_from_files(SDL_Renderer *renderer, const char dir = 'r') { static const auto textureRect = nyan_sheet_rect(); auto result = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_STREAMING, textureRect.w, textureRect.h); if (!result) nyan_sdl_fatal("make_nyan_sprite_sheet_from_files/SDL_CreateTexture"); if (SDL_SetTextureBlendMode(result, SDL_BLENDMODE_BLEND)) nyan_sdl_fatal("make_nyan_sprite_sheet_from_files/SDL_SetTextureBlendMode"); std::array strBuf; for (size_t i=0; i