#ifndef WINDOW_H
#define WINDOW_H

#include <GL/glew.h>
#include <GLFW/glfw3.h>

#include "rendering/WindowSize.h"

class Window final {
public:
    Window(const WindowSize& size, const char* windowName);
    ~Window();

    Window(const Window&) = delete;
    Window& operator=(const Window&) = delete;
    Window(Window&&) = delete;
    Window& operator=(Window&&) = delete;

    bool hasError() const;
    void show();
    bool shouldClose() const;
    void swapBuffers();

    void setFramebufferSizeCallback(GLFWframebuffersizefun f);
    void setKeyCallback(GLFWkeyfun f);
    void setMouseButtonCallback(GLFWmousebuttonfun f);
    void setCursorPosCallback(GLFWcursorposfun f);

private:
    GLFWwindow* window;
};

#endif