#ifndef SPECTRE_WINDOW_WINDOW_H #define SPECTRE_WINDOW_WINDOW_H #include "DisplayMode.h" #include "WindowDescription.h" #include #include #include namespace sp { class PlatformWindow; class GLContext; class Window { friend class PlatformWindow; public : enum Mode { WINDOWED = 0, FULLSCREEN = 1, WINDOWEDFULLSCREEN = 2, }; public : Window(); virtual ~Window(); virtual bool create(WindowDescription decription); virtual void destroy(); void setSize(unsigned int width, unsigned int height); sp::Vector2u getSize() const; void setCaption(const std::string& title); const std::string& getCaption() const; void setIcon(const std::string& filename); void setIcon(unsigned int width, unsigned int height, const uint8_t *pixels); void setDisplayMode(const DisplayMode& mode); const DisplayMode& getDisplayMode() const; void setVideoMode(Mode mode); enum Mode getVideoMode() const; void setVisible(bool visible); void showCursor(bool value); void grabCursor(bool value); protected : void init(); virtual void onReshape(int width, int height); protected : enum Mode m_fmode; // Cache window position when entering fullscreen // So it can be restored when returning to window mode. Vector2u m_cachePos; WindowDescription m_description; WindowDescription m_cacheDesc; std::string m_caption; PlatformWindow* m_impl; }; } // namepsace sp #endif /* SPECTRE_WINDOW_WINDOW_H */