#ifndef WINDOW_H #define WINDOW_H #include "WindowEvents.h" #include "utils/Renderer/Renderer.h" namespace Archimedes { class Window { public: Window(const std::function& sendEventFn) : eventFn(sendEventFn) {} virtual ~Window() = 0; void doFrame() { renderer->render(); swapBuffers(); pollEvents(); } virtual bool shouldClose() = 0; virtual void swapBuffers() = 0; virtual void pollEvents() = 0; virtual void getSize(int& w, int& h) { w = this->w; h = this->h; } Renderer* getRenderer() { return renderer; } void setRenderer(Renderer* r) { renderer = r; } virtual Window* getWindowImpl() = 0; protected: int w, h; Renderer* renderer; std::function eventFn; }; } #endif