Skip to content

Commit

Permalink
switch back to void* by using a patch to modify imconfig.h
Browse files Browse the repository at this point in the history
  • Loading branch information
briaguya-ai committed Jan 10, 2025
1 parent 7465317 commit 54f11cc
Show file tree
Hide file tree
Showing 19 changed files with 74 additions and 65 deletions.
6 changes: 3 additions & 3 deletions cmake/dependencies/common.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,15 @@ if (CMAKE_GENERATOR MATCHES "Visual Studio")
endif()

#=================== ImGui ===================
set(sdl_gamepad_patch_file ${CMAKE_CURRENT_SOURCE_DIR}/cmake/dependencies/patches/sdl-gamepad-fix.patch)
set(imgui_fixes_and_config_patch_file ${CMAKE_CURRENT_SOURCE_DIR}/cmake/dependencies/patches/imgui-fixes-and-config.patch)

# Applies the patch or checks if it has already been applied successfully previously. Will error otherwise.
set(sdl_apply_patch_if_needed git apply ${sdl_gamepad_patch_file} ${git_hide_output} || git apply --reverse --check ${sdl_gamepad_patch_file})
set(imgui_apply_patch_if_needed git apply ${imgui_fixes_and_config_patch_file} ${git_hide_output} || git apply --reverse --check ${imgui_fixes_and_config_patch_file})
FetchContent_Declare(
ImGui
GIT_REPOSITORY https://github.com/ocornut/imgui.git
GIT_TAG v1.91.6-docking
PATCH_COMMAND ${sdl_apply_patch_if_needed}
PATCH_COMMAND ${imgui_apply_patch_if_needed}
)
FetchContent_MakeAvailable(ImGui)
list(APPEND ADDITIONAL_LIB_INCLUDES ${imgui_SOURCE_DIR} ${imgui_SOURCE_DIR}/backends)
Expand Down
59 changes: 59 additions & 0 deletions cmake/dependencies/patches/imgui-fixes-and-config.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
From 7cd9b89560b66b992db9fd0e620c2d28ad9a9645 Mon Sep 17 00:00:00 2001
From: briaguya <[email protected]>
Date: Fri, 10 Jan 2025 04:48:50 -0500
Subject: [PATCH 1/2] sdl gamepad fix

---
backends/imgui_impl_sdl2.cpp | 3 ---
1 file changed, 3 deletions(-)

diff --git a/backends/imgui_impl_sdl2.cpp b/backends/imgui_impl_sdl2.cpp
index 23f12796..a7fef045 100644
--- a/backends/imgui_impl_sdl2.cpp
+++ b/backends/imgui_impl_sdl2.cpp
@@ -816,9 +816,6 @@ static void ImGui_ImplSDL2_UpdateGamepads()
bd->WantUpdateGamepadsList = false;
}

- // FIXME: Technically feeding gamepad shouldn't depend on this now that they are regular inputs.
- if ((io.ConfigFlags & ImGuiConfigFlags_NavEnableGamepad) == 0)
- return;
io.BackendFlags &= ~ImGuiBackendFlags_HasGamepad;
if (bd->Gamepads.Size == 0)
return;
--
2.47.1


From 635226a311071e80c22e0c58c9cb5c9d950d2e17 Mon Sep 17 00:00:00 2001
From: briaguya <[email protected]>
Date: Fri, 10 Jan 2025 04:52:36 -0500
Subject: [PATCH 2/2] add config stuff

---
imconfig.h | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/imconfig.h b/imconfig.h
index 8f8bc3b9..cc578e3f 100644
--- a/imconfig.h
+++ b/imconfig.h
@@ -111,7 +111,7 @@
operator MyVec4() const { return MyVec4(x,y,z,w); }
*/
//---- ...Or use Dear ImGui's own very basic math operators.
-//#define IMGUI_DEFINE_MATH_OPERATORS
+#define IMGUI_DEFINE_MATH_OPERATORS

//---- Use 32-bit vertex indices (default is 16-bit) is one way to allow large meshes with more than 64K vertices.
// Your renderer backend will need to support it (most example renderer backends support both 16/32-bit indices).
@@ -140,3 +140,6 @@ namespace ImGui
void MyFunction(const char* name, MyMatrix44* mtx);
}
*/
+
+// handle https://github.com/ocornut/imgui/issues/1641 the old way
+#define ImTextureID void*
--
2.47.1

17 changes: 0 additions & 17 deletions cmake/dependencies/patches/sdl-gamepad-fix.patch

This file was deleted.

3 changes: 0 additions & 3 deletions src/controller/controldeck/ControlDeck.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,6 @@
#include "controller/controldevice/controller/Controller.h"
#include "utils/StringHelper.h"
#include "public/bridge/consolevariablebridge.h"
#ifndef IMGUI_DEFINE_MATH_OPERATORS
#define IMGUI_DEFINE_MATH_OPERATORS
#endif
#include <imgui.h>
#include "controller/deviceindex/ShipDeviceIndexMappingManager.h"
#include "controller/controldevice/controller/mapping/mouse/WheelHandler.h"
Expand Down
3 changes: 0 additions & 3 deletions src/controller/deviceindex/ControllerDisconnectedWindow.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,6 @@

#include "stdint.h"
#include "window/gui/GuiWindow.h"
#ifndef IMGUI_DEFINE_MATH_OPERATORS
#define IMGUI_DEFINE_MATH_OPERATORS
#endif
#include <imgui.h>
#include <unordered_map>
#include <string>
Expand Down
3 changes: 0 additions & 3 deletions src/controller/deviceindex/ControllerReorderingWindow.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,6 @@

#include "stdint.h"
#include "window/gui/GuiWindow.h"
#ifndef IMGUI_DEFINE_MATH_OPERATORS
#define IMGUI_DEFINE_MATH_OPERATORS
#endif
#include <imgui.h>
#include <unordered_map>
#include <string>
Expand Down
3 changes: 0 additions & 3 deletions src/debug/Console.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,6 @@
#include <vector>
#include <functional>
#include <map>
#ifndef IMGUI_DEFINE_MATH_OPERATORS
#define IMGUI_DEFINE_MATH_OPERATORS
#endif
#include <imgui.h>

namespace Ship {
Expand Down
4 changes: 2 additions & 2 deletions src/graphic/Fast3D/gfx_direct3d11.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1229,8 +1229,8 @@ gfx_d3d11_get_pixel_depth(int fb_id, const std::set<std::pair<float, float>>& co

} // namespace

ImTextureID gfx_d3d11_get_texture_by_id(unsigned long long id) {
return (unsigned long long)d3d.textures[id].resource_view.Get();
ImTextureID gfx_d3d11_get_texture_by_id(int id) {
return d3d.textures[id].resource_view.Get();
}

void gfx_d3d11_enable_srgb_mode() {
Expand Down
5 changes: 1 addition & 4 deletions src/graphic/Fast3D/gfx_direct3d11.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,10 @@
#define GFX_DIRECT3D11_H

#include "gfx_rendering_api.h"
#ifndef IMGUI_DEFINE_MATH_OPERATORS
#define IMGUI_DEFINE_MATH_OPERATORS
#endif
#include <imgui.h>

extern struct GfxRenderingAPI gfx_direct3d11_api;
ImTextureID gfx_d3d11_get_texture_by_id(unsigned long long id);
ImTextureID gfx_d3d11_get_texture_by_id(int id);

#endif

Expand Down
4 changes: 2 additions & 2 deletions src/graphic/Fast3D/gfx_metal.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1295,8 +1295,8 @@ FilteringMode gfx_metal_get_texture_filter() {
return mctx.current_filter_mode;
}

ImTextureID gfx_metal_get_texture_by_id(unsigned long long fb_id) {
return (unsigned long long)mctx.textures[fb_id].texture;
ImTextureID gfx_metal_get_texture_by_id(int fb_id) {
return (void*)mctx.textures[fb_id].texture;
}

void gfx_metal_enable_srgb_mode() {
Expand Down
2 changes: 1 addition & 1 deletion src/graphic/Fast3D/gfx_metal.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

extern struct GfxRenderingAPI gfx_metal_api;

ImTextureID gfx_metal_get_texture_by_id(unsigned long long id);
ImTextureID gfx_metal_get_texture_by_id(int id);

bool Metal_IsSupported();

Expand Down
3 changes: 0 additions & 3 deletions src/window/gui/ConsoleWindow.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,6 @@

#include "window/gui/GuiWindow.h"
#include "debug/Console.h"
#ifndef IMGUI_DEFINE_MATH_OPERATORS
#define IMGUI_DEFINE_MATH_OPERATORS
#endif
#include <imgui.h>
#include <spdlog/spdlog.h>

Expand Down
3 changes: 0 additions & 3 deletions src/window/gui/GameOverlay.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,6 @@
#include <memory>

#include "debug/Console.h"
#ifndef IMGUI_DEFINE_MATH_OPERATORS
#define IMGUI_DEFINE_MATH_OPERATORS
#endif
#include <imgui.h>
#include <unordered_map>
#include "resource/ResourceManager.h"
Expand Down
8 changes: 4 additions & 4 deletions src/window/gui/Gui.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -654,7 +654,7 @@ void Gui::DrawGame() {
}
if (gfxFramebuffer) {
ImGui::SetCursorPos(pos);
ImGui::Image(gfxFramebuffer, size);
ImGui::Image(reinterpret_cast<ImTextureID>(gfxFramebuffer), size);
}

ImGui::End();
Expand Down Expand Up @@ -722,7 +722,7 @@ void Gui::SetupRendererFrame() {
}
}

ImTextureID Gui::GetTextureById(unsigned long long id) {
ImTextureID Gui::GetTextureById(int32_t id) {
#ifdef ENABLE_DX11
if (Context::GetInstance()->GetWindow()->GetWindowBackend() == WindowBackend::FAST3D_DXGI_DX11) {
return gfx_d3d11_get_texture_by_id(id);
Expand All @@ -734,7 +734,7 @@ ImTextureID Gui::GetTextureById(unsigned long long id) {
}
#endif

return id;
return reinterpret_cast<ImTextureID>(id);
}

bool Gui::HasTextureByName(const std::string& name) {
Expand All @@ -743,7 +743,7 @@ bool Gui::HasTextureByName(const std::string& name) {

ImTextureID Gui::GetTextureByName(const std::string& name) {
if (!Gui::HasTextureByName(name)) {
return 0;
return nullptr;
}
return GetTextureById(mGuiTextures[name].RendererTextureId);
}
Expand Down
5 changes: 1 addition & 4 deletions src/window/gui/Gui.h
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
#pragma once

#ifdef __cplusplus
#ifndef IMGUI_DEFINE_MATH_OPERATORS
#define IMGUI_DEFINE_MATH_OPERATORS
#endif

#include <imgui.h>
#include <imgui_internal.h>
Expand Down Expand Up @@ -119,7 +116,7 @@ class Gui {
void ImGuiBackendInit();
void ImGuiRenderDrawData(ImDrawData* data);

ImTextureID GetTextureById(unsigned long long id);
ImTextureID GetTextureById(int32_t id);
void ApplyResolutionChanges();
int16_t GetIntegerScaleFactor();
void CheckSaveCvars();
Expand Down
3 changes: 0 additions & 3 deletions src/window/gui/GuiWindow.h
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
#pragma once

#include <string>
#ifndef IMGUI_DEFINE_MATH_OPERATORS
#define IMGUI_DEFINE_MATH_OPERATORS
#endif
#include <imgui.h>
#include <imgui_internal.h>
#include "window/gui/GuiElement.h"
Expand Down
3 changes: 0 additions & 3 deletions src/window/gui/InputEditorWindow.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,6 @@

#include "stdint.h"
#include "window/gui/GuiWindow.h"
#ifndef IMGUI_DEFINE_MATH_OPERATORS
#define IMGUI_DEFINE_MATH_OPERATORS
#endif
#include <imgui.h>
#include <unordered_map>
#include <string>
Expand Down
3 changes: 0 additions & 3 deletions src/window/gui/StatsWindow.cpp
Original file line number Diff line number Diff line change
@@ -1,7 +1,4 @@
#include "StatsWindow.h"
#ifndef IMGUI_DEFINE_MATH_OPERATORS
#define IMGUI_DEFINE_MATH_OPERATORS
#endif
#include <imgui.h>
#include "public/bridge/consolevariablebridge.h"
#include "spdlog/spdlog.h"
Expand Down
2 changes: 1 addition & 1 deletion src/window/gui/resource/GuiTexture.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ namespace Ship {
#define RESOURCE_TYPE_GUI_TEXTURE 0x47544558 // GTEX

struct GuiTextureMetadata {
unsigned long long RendererTextureId;
uint32_t RendererTextureId;
int32_t Width;
int32_t Height;
};
Expand Down

0 comments on commit 54f11cc

Please sign in to comment.