feat: Integrate imgui library

Version 1.91.7 of the imgui library with the cimgui wrapper.

imgui allows us to easily create minimal and powerful UI for
use-cases like in-game overlays or separate tooling.

The additional wrappers cimgui_impl_dx9 and cimgui_impl_win32
were added to provide a full C linkage integration for the rest
of the code base.

Tweaks to the makefile were kept to a minimum but enable
compilation of C++ since imgui is C++ based.

Remark: At this point bemanitools itself is still to be kept a pure
C codebase. Due to the lack of proper module/library management
with the current build system in bemanitools 5, proper separation
of concerns and clean integration with external libraries isn’t
possible with reasonable effort.
This commit was merged in pull request #314.
This commit is contained in:
icex2
2025-02-08 23:13:05 +01:00
committed by icex2
parent b7d1659a46
commit a85ce4bc96
25 changed files with 81143 additions and 10 deletions
+52
View File
@@ -0,0 +1,52 @@
#include <windows.h>
#include "imgui_impl_win32.h"
#include "imgui_internal.h"
#include "cimgui.h"
extern IMGUI_IMPL_API LRESULT ImGui_ImplWin32_WndProcHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
CIMGUI_API bool igImplWin32_Init(void* hwnd)
{
return ImGui_ImplWin32_Init(hwnd);
}
CIMGUI_API bool igImplWin32_InitForOpenGL(void* hwnd)
{
return ImGui_ImplWin32_InitForOpenGL(hwnd);
}
CIMGUI_API void igImplWin32_Shutdown()
{
ImGui_ImplWin32_Shutdown();
}
CIMGUI_API void igImplWin32_NewFrame()
{
ImGui_ImplWin32_NewFrame();
}
CIMGUI_API LRESULT igImplWin32_WndProcHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
return ImGui_ImplWin32_WndProcHandler(hWnd, msg, wParam, lParam);
}
CIMGUI_API void igImplWin32_EnableDpiAwareness()
{
ImGui_ImplWin32_EnableDpiAwareness();
}
CIMGUI_API float igImplWin32_GetDpiScaleForHwnd(void* hwnd)
{
return ImGui_ImplWin32_GetDpiScaleForHwnd(hwnd);
}
CIMGUI_API float igImplWin32_GetDpiScaleForMonitor(void* monitor)
{
return ImGui_ImplWin32_GetDpiScaleForMonitor(monitor);
}
CIMGUI_API void igImplWin32_EnableAlphaCompositing(void* hwnd)
{
ImGui_ImplWin32_EnableAlphaCompositing(hwnd);
}