67 lines
1.3 KiB
C++
67 lines
1.3 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() {};
|
|
|
|
|
|
void doFrame() {
|
|
|
|
swapBuffers();
|
|
|
|
renderer->render();
|
|
|
|
pollEvents();
|
|
|
|
}
|
|
|
|
virtual bool shouldClose() = 0;
|
|
|
|
virtual void swapBuffers() = 0;
|
|
|
|
virtual void pollEvents() = 0;
|
|
|
|
virtual void restoreContext() = 0;
|
|
|
|
virtual void getSize(int& w, int& h) {
|
|
w = this->w;
|
|
h = this->h;
|
|
}
|
|
|
|
virtual void setSize(const int& w, const int& h) {
|
|
this->w = w;
|
|
this->h = h;
|
|
}
|
|
|
|
Renderer* getRenderer() { return renderer; }
|
|
void setRenderer(Renderer* r) {
|
|
renderer = r;
|
|
renderer->w = w;
|
|
renderer->h = h;
|
|
}
|
|
|
|
virtual Window* getWindowImpl() = 0;
|
|
|
|
protected:
|
|
|
|
int w, h;
|
|
|
|
Renderer* renderer;
|
|
|
|
std::function<void(Event*)> eventFn;
|
|
};
|
|
}
|
|
|
|
#endif
|