#pragma

#include "IPlatformScreen.h"

struct xcb_screen_t;

class XcbScreen : public IPlatformScreen
{
public:

    XcbScreen(xcb_screen_t* screen);

    virtual ~XcbScreen() = default;

    static std::unique_ptr<XcbScreen> Create(xcb_screen_t* screen);

    xcb_screen_t* GetNativeScreen() const;

    void SetGraphicsContext(unsigned gc);

    unsigned GetGraphicsContext() const;

private:
    unsigned mGraphicsContext {0};
    xcb_screen_t* mNativeScreen {nullptr};
};

using XcbScreenPtr = std::unique_ptr<XcbScreen>;
