#include "window.hpp" #include #include #include SDL_Window *window; SDL_Renderer *renderer; int sdl2Initialize() { if (auto err = SDL_Init(SDL_INIT_VIDEO); err < 0) { std::cerr << "SDL error: " << SDL_GetError() << std::endl; return EXIT_FAILURE; } else { atexit(SDL_Quit); } if (!(IMG_Init(IMG_INIT_PNG) & IMG_INIT_PNG)) { std::cerr << "IMG error: " << IMG_GetError() << std::endl; return EXIT_FAILURE; } else { atexit(IMG_Quit); } window = SDL_CreateWindow("game", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, WINDOW_WIDTH, WINDOW_HEIGHT, SDL_WINDOW_SHOWN); if (window == nullptr) { std::cerr << "SDL error: " << SDL_GetError() << std::endl; return EXIT_FAILURE; } else { atexit([] { SDL_DestroyWindow(window); }); } renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED); if (renderer == nullptr) { std::cerr << "SDL error: " << SDL_GetError() << std::endl; return EXIT_FAILURE; } else { atexit([] { SDL_DestroyRenderer(renderer); }); } return 0; } SDL_Texture *sdl2LoadTexture(const char *path) { SDL_Texture *tex = nullptr; auto surface = IMG_Load(path); if (surface == nullptr) { std::cerr << "Unable to load image " << path << '!' << std::endl; std::cerr << "SDL error: " << IMG_GetError() << std::endl; } else { tex = SDL_CreateTextureFromSurface(renderer, surface); if (tex == nullptr) { std::cerr << "Unable to create texture for " << path << '!' << std::endl; std::cerr << "SDL error: " << SDL_GetError() << std::endl; } else { SDL_FreeSurface(surface); } } return tex; }