56 lines
1.0 KiB
C++
56 lines
1.0 KiB
C++
#ifndef WINDOW_H
|
|
#define WINDOW_H
|
|
|
|
#include "WindowEvents.h"
|
|
|
|
#include "utils/Renderer/Renderer.h"
|
|
|
|
namespace Archimedes {
|
|
|
|
class Window {
|
|
|
|
public:
|
|
|
|
Window(const std::function<void(Event*)>& 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<void(Event*)> eventFn;
|
|
};
|
|
}
|
|
|
|
#endif
|