#pragma once

#include <Core/Common/CoreTypes.h>
#include <Core/Common/NonNullPtr.h>

#ifdef JULIET_ENABLE_IMGUI

struct ImGuiContext;

namespace Juliet
{
    struct Window;
    struct GraphicsDevice;

    namespace ImGuiService
    {
        JULIET_API void Initialize(NonNullPtr<Window> window);
        JULIET_API void Shutdown();

        JULIET_API void NewFrame();
        JULIET_API void Render();

        JULIET_API bool          IsInitialized();
        JULIET_API ImGuiContext* GetContext();

        // Run internal unit tests
        JULIET_API void RunTests();
    } // namespace ImGuiService
} // namespace Juliet

#endif // JULIET_ENABLE_IMGUI
