Program Listing for File DockableWindow.hpp

Return to documentation for file (include/ari/en/gui/DockableWindow.hpp)

#pragma once
#include "Gui.hpp"
#include "../../Delegate.hpp"

namespace ImWindow
{
    class ImwWindow;
}

namespace ari
{
    class GuiSystem;
    class PlatformWindow;

    class ARI_API DockableWindow: public Gui
    {
        friend class AriImwWindow;

    public:
        enum class Oriention
        {
            Center,
            Top,
            Left,
            Right,
            Botton
        };

        DockableWindow(GuiSystem* _pGuiSystem);
        ~DockableWindow() override;

        bool BeginRender() override;

        void Dock(Oriention _oriention = Oriention::Center, float _raito = 0.5f) const;

        void DockWith(DockableWindow* _pOtherDock, Oriention _oriention = Oriention::Center,
            float _raito = 0.5f) const;

        void SetTitle(const char* _pTitle) const;
        void SetAlone(bool _alone) const;
        void SetClosable(bool _closable) const;
        void SetFillingSpace(bool _fill) const;

        void GetLastPosition(float& _x, float& _y) const;
        void GetLastSize(float& _width, float& _height) const;

        DelegateNoParam<void> OnGui;

        DelegateNoParam<void> OnWindowChanged;

        PlatformWindow* GetPlatformWindow() const;

    protected:

        GuiSystem           *   m_pGuiSystem;
        ImWindow::ImwWindow *   m_pWindow;
        PlatformWindow      *   m_pPlatformWindow;

    };

} // ari