#pragma once #include #include #include #include #include #include struct GLFWwindow; struct ImGuiSettingsHandler; namespace hex { void nativeErrorMessage(const std::string &message); class Window { public: Window(); ~Window(); void loop(); void fullFrame(); static void initNative(); void resize(i32 width, i32 height); private: void configureGLFW(); void setupNativeWindow(); void beginNativeWindowFrame(); void endNativeWindowFrame(); void drawTitleBar(); void frameBegin(); void frame(); void frameEnd(); void initGLFW(); void initImGui(); void exitGLFW(); void exitImGui(); void registerEventHandlers(); GLFWwindow *m_window = nullptr; std::string m_windowTitle, m_windowTitleFull; double m_lastStartFrameTime = 0; double m_lastFrameTime = 0; ImGuiExt::Texture m_logoTexture; std::mutex m_popupMutex; std::list m_popupsToOpen; std::vector m_pressedKeys; bool m_unlockFrameRate = false; ImGuiExt::ImHexCustomData m_imguiCustomData; u32 m_searchBarPosition = 0; bool m_emergencyPopupOpen = false; }; }