#ifndef SPECTRE_PLATFORM_DISPLAY_H #define SPECTRE_PLATFORM_DISPLAY_H #include #include #include #include #include // Low-level platform dependant API. namespace sp { class Display; class PlatformDisplay { public : // Factory method. static PlatformDisplay* make(Display* parent); virtual ~PlatformDisplay(); virtual bool create(DisplayDescription description) = 0; virtual void destroy() = 0; virtual void* getHandle() const = 0; virtual bool isValid() = 0; virtual void setSize(unsigned int width, unsigned int height) = 0; virtual Vector2u getSize() const = 0; virtual void setPosition(unsigned int x, unsigned int y) = 0; virtual Vector2u getPosition() const = 0; virtual void setVisible(bool visible) = 0; virtual void setDecoration(unsigned decoration) = 0; virtual void minimize() = 0; virtual void maximize() = 0; virtual void enterFullscreen(DisplayMode mode) = 0; virtual void exitFullscreen() = 0; virtual void setCaption(const std::string& caption) = 0; virtual void setIcon(unsigned int width, unsigned int height, const uint8_t *pixels) = 0; virtual void showCursor(bool value) = 0; virtual void grabCursor(bool value) = 0; protected : PlatformDisplay(); void onReshape(int width, int height); private : Display * m_parent; }; } // namespace sp #endif /* SPECTRE_PLATFORM_DISPLAY_H */