#ifndef BLUECORE_RENDER_WINDOW_H #define BLUECORE_RENDER_WINDOW_H // system includes #include // library includes #include "GL/glew.h" #include "GL/glfw.h" // project includes #include "Math/Vector.h" #include "Utilities/sigslot.h" #include "Utilities/Referenced.h" namespace BlueCore { class RenderWindow : public Referenced { private: static void WindowSizeCallback(int width, int height); static int WindowCloseCallback(); static void WindowRefreshCallback(); static void MousePosCallback(int x, int y); static void MouseButtonCallback(int button, int action); static void MouseWheelCallback(int pos); static void KeyCallback(int key, int action); static void CharCallback(int character, int action); bool _Resized; bool _Initialized; bool _Closed; int _Width, _Height; void resizeWindow(int width, int height); public: sigslot::signal0<> WindowCloseSignal; sigslot::signal2 WindowResizeSignal; sigslot::signal0<> WindowRefreshSignal; sigslot::signal2 MouseMoveSignal; sigslot::signal2 MouseButtonSignal; sigslot::signal1 MouseWheelSignal; sigslot::signal2 KeySignal; sigslot::signal1 CharSignal; public: RenderWindow(); ~RenderWindow(); bool create(int width, int height, int pixelbits, int depthbits, int stencilbits, bool fullscreen); void destroy(); void closeWindow(); int getWidth(); int getHeight(); bool isOpen(); }; } #endif