#ifndef PLATFORM_UNIX_X11WINDOW_H #define PLATFORM_UNIX_X11WINDOW_H #include #include #include #include #include #include "Xrandr.h" namespace sp { class Window; class X11Window : public PlatformWindow { public : static X11Window* getFocused(); X11Window(Window *owner); virtual bool create(WindowDescription description); virtual void destroy(); virtual bool isValid(); virtual void* getHandle() const; virtual void setSize(unsigned int width, unsigned int height); virtual Vector2u getSize() const; virtual void setPosition(unsigned int x, unsigned int y); virtual Vector2u getPosition() const; virtual void setVisible(bool visible); virtual void setDecoration(unsigned decoration); virtual void minimize(); virtual void maximize(); virtual void enterFullscreen(DisplayMode mode); virtual void exitFullscreen(); virtual void setCaption(const std::string& caption); virtual void setIcon(unsigned int width, unsigned int height, const uint8_t *pixels); virtual void showCursor(bool value); virtual void grabCursor(bool value); void processEvent(const ::XEvent& event); protected : void createHiddenCursor(); void toggleFullscreen(bool enabled); void wm_fullscreen(bool enabled); protected : ::Window m_win; int m_screen; ::Cursor m_cur_hidden; ::Cursor m_cur_last; Vector2u m_size; Xrandr::VideoMode m_fullscreen_mode; Xrandr::VideoMode m_desktop_mode; }; } // namespace sp #endif /* PLATFORM_UNIX_X11WINDOW_H */