#pragma once #include #include #include #include #include struct GLFWwindow; struct ImGuiSettingsHandler; namespace hex { class Window { public: Window(int &argc, char **&argv); ~Window(); void loop(); friend void *ImHexSettingsHandler_ReadOpenFn(ImGuiContext *ctx, ImGuiSettingsHandler *, const char *); friend void ImHexSettingsHandler_ReadLine(ImGuiContext*, ImGuiSettingsHandler *handler, void *, const char* line); friend void ImHexSettingsHandler_ApplyAll(ImGuiContext *ctx, ImGuiSettingsHandler *handler); friend void ImHexSettingsHandler_WriteAll(ImGuiContext* ctx, ImGuiSettingsHandler *handler, ImGuiTextBuffer *buf); bool setFont(const std::filesystem::path &font_path); void initPlugins(); void deinitPlugins(); private: void frameBegin(); void frameEnd(); void initGLFW(); void initImGui(); void deinitGLFW(); void deinitImGui(); GLFWwindow* m_window; float m_globalScale = 1.0f, m_fontScale = 1.0f; bool m_fpsVisible = false; bool m_demoWindowOpen = false; static inline std::tuple s_currShortcut = { -1, -1 }; }; }