# class guip::GuiSystem

## Overview

Manages context, rendering and live span for all created widgets. More…

    #include <GuiSystem.h>

    class GuiSystem: public glw::WindowEventObserver {
    public:
        // classes

        class LoggerProxy;

        // construction

        GuiSystem();
        ~GuiSystem();

        // methods

        bool Initialize(const std::string& resource_dir, std::shared_ptr<glw::Window> window);
        void Update(float time_delta);
        void Draw();
        bool IsDirty();
        CEGUI::GUIContext* GetContext();
        CEGUI::Window* GetRoot();

    protected:
        // methods

        virtual void OnMouseDown(int button, int mods);
        virtual void OnMouseUp(int button, int mods);
        virtual void OnMouseWheel(double xoffset, double yoffset);
        virtual void OnMouseMove(double xpos, double ypos);
        virtual void OnCharacter(char codepoint);
        virtual void OnKeyDown(int key, int mods, bool is_repeat);
        virtual void OnKeyUp(int key, int mods);
        virtual void OnWindowResize(int width, int height);
        virtual void OnContentScale(float xscale, float yscale);
    };

### Inherited Members

    protected:
        // methods

        virtual void OnMouseMove(double xpos, double ypos);
        virtual void OnMouseDown(int button, int mods);
        virtual void OnMouseUp(int button, int mods);
        virtual void OnMouseWheel(double xoffset, double yoffset);
        virtual void OnCharacter(char codepoint);
        virtual void OnKeyDown(int key, int mods, bool is_repeat);
        virtual void OnKeyUp(int key, int mods);
        virtual void OnTouch(unsigned int num_of_contacts, unsigned int* id, double* xpos, double* ypos, double* cwidth, double* cheight);
        virtual void OnTouchGestBegin();
        virtual void OnTouchGestEnd();
        virtual void OnTouchGestZoom(double distance, double xpos, double ypos);
        virtual void OnTouchGestPan(double distance, double xpos, double ypos);
        virtual void OnWindowMove(int xpos, int ypos);
        virtual void OnWindowRefresh();
        virtual void OnWindowResize(int width, int height);
        virtual void OnContentScale(float xscale, float yscale);
        virtual void OnFramebufferResize(int width, int height);
        virtual void OnWindowIconify(int is_iconified);
        virtual void OnWindowFocus(int is_focused);
        virtual void OnWindowClose();
        virtual void OnFilesDropped(const std::vector<std::string>& files);

## Detailed Documentation

Manages context, rendering and live span for all created widgets.

The class automatically creates and destroys gui context as it exists.

### Methods

    bool Initialize(const std::string& resource_dir, std::shared_ptr<glw::Window> window)

Creates context. Without invoking this function, gui will not work.

    void Draw()

Renders GUI into currently bound gl frame buffer.

    bool IsDirty()

Whether GUI should be rendered.

    CEGUI::GUIContext* GetContext()

Returns context of CEGUI system.

    CEGUI::Window* GetRoot()

Returns the root window widget.