// // Created by Мустафаев Селим Мустафаевич on 24.08.2023. // #ifndef NES_WINDOW_H #define NES_WINDOW_H #include "../../src/Ppu.h" #include #include namespace nes { class SdlWindow { public: struct SdlDeleter { void operator()(SDL_Window* ptr) { SDL_DestroyWindow(ptr); } void operator()(SDL_Renderer* ptr) { SDL_DestroyRenderer(ptr); } void operator()(SDL_Texture* ptr) { SDL_DestroyTexture(ptr); } }; template using SdlUniquePtr = std::unique_ptr; using SdlWindowPtr = SdlUniquePtr; using SdlRendererPtr = SdlUniquePtr; using SdlTexturePtr = SdlUniquePtr; public: SdlWindow(uint16_t width, uint16_t height); void drawFrame(const Pixel* buffer); void setSize(int width, int height); private: uint16_t _width; uint16_t _height; SdlWindowPtr _wnd; SdlRendererPtr _renderer; SdlTexturePtr _texture; }; } #endif //NES_WINDOW_H