// // Created by m on 12/3/21. // #ifndef RLA_IIPP_SDLRENDERER_HPP #define RLA_IIPP_SDLRENDERER_HPP #include "../renderer.hpp" #include "sdltexturemanager.hpp" #include "sdlfontmanager.hpp" #include #include #include struct SDL_WindowDeleter { void operator()(SDL_Window* window) { SDL_DestroyWindow(window);} }; class SdlRenderer : public Renderer { public: ~SdlRenderer() override; explicit SdlRenderer(RendererParams renderer_params); void draw_text(std::optional details, std::string text, int x, int y) override; void flush() override; void draw_point(int x, int y, Color color) override; void draw_sprite(Sprite sprite, int x, int y) override; TextRenderDetails get_default_text_render_details() override { return this->renderer_params.default_font; } private: RendererParams renderer_params; std::unique_ptr window; std::shared_ptr renderer = nullptr; std::unique_ptr texture_manager = nullptr; std::unique_ptr font_manager = nullptr; void render_texture(int x, int y, const std::shared_ptr& texture, SDL_Rect *src); }; #endif //RLA_IIPP_SDLRENDERER_HPP