diff options
author | rtk0c <[email protected]> | 2022-04-08 22:30:12 -0700 |
---|---|---|
committer | rtk0c <[email protected]> | 2022-04-08 22:30:12 -0700 |
commit | e7ef3f208c109357538b1f68af10bcd78db95c95 (patch) | |
tree | 066d614ae0f079e53602d7c0fd972998c546c8c1 /3rdparty/imgui | |
parent | f163e8f37123e651ea80b690793845b31ddb8639 (diff) |
Changeset: 3 More work
Diffstat (limited to '3rdparty/imgui')
-rw-r--r-- | 3rdparty/imgui/CMakeLists.txt | 7 | ||||
-rw-r--r-- | 3rdparty/imgui/source/backends/imgui_impl_glfw.cpp | 2 | ||||
-rw-r--r-- | 3rdparty/imgui/source/backends/imgui_impl_glfw.h | 3 | ||||
-rw-r--r-- | 3rdparty/imgui/source/backends/imgui_impl_opengl3.cpp | 4 | ||||
-rw-r--r-- | 3rdparty/imgui/source/misc/cpp/imgui_stdlib.cpp | 72 | ||||
-rw-r--r-- | 3rdparty/imgui/source/misc/cpp/imgui_stdlib.h | 18 |
6 files changed, 100 insertions, 6 deletions
diff --git a/3rdparty/imgui/CMakeLists.txt b/3rdparty/imgui/CMakeLists.txt index 5dcd24e..a82b94f 100644 --- a/3rdparty/imgui/CMakeLists.txt +++ b/3rdparty/imgui/CMakeLists.txt @@ -1,13 +1,10 @@ -# Note: we are not including files under backend/ here: those are #included in project main source files -file(GLOB IMGUI_HEDAER ${CMAKE_CURRENT_LIST_DIR}/source/*.h) -file(GLOB IMGUI_SOURCE ${CMAKE_CURRENT_LIST_DIR}/source/*.cpp) +file(GLOB_RECURSE IMGUI_SOURCE ${CMAKE_CURRENT_LIST_DIR}/source/*.cpp) add_library(imgui - ${IMGUI_HEDAER} ${IMGUI_SOURCE} ) target_include_directories(imgui PUBLIC ${CMAKE_CURRENT_LIST_DIR}/source) set_target_properties(imgui PROPERTIES - UNITY_BUILD OFF + UNITY_BUILD OFF ) diff --git a/3rdparty/imgui/source/backends/imgui_impl_glfw.cpp b/3rdparty/imgui/source/backends/imgui_impl_glfw.cpp index 516aa3c..68f1188 100644 --- a/3rdparty/imgui/source/backends/imgui_impl_glfw.cpp +++ b/3rdparty/imgui/source/backends/imgui_impl_glfw.cpp @@ -131,7 +131,7 @@ static void ImGui_ImplGlfw_SetClipboardText(void* user_data, const char* text) glfwSetClipboardString((GLFWwindow*)user_data, text); } -static ImGuiKey ImGui_ImplGlfw_KeyToImGuiKey(int key) +ImGuiKey ImGui_ImplGlfw_KeyToImGuiKey(int key) { switch (key) { diff --git a/3rdparty/imgui/source/backends/imgui_impl_glfw.h b/3rdparty/imgui/source/backends/imgui_impl_glfw.h index 58712de..86811ef 100644 --- a/3rdparty/imgui/source/backends/imgui_impl_glfw.h +++ b/3rdparty/imgui/source/backends/imgui_impl_glfw.h @@ -44,3 +44,6 @@ IMGUI_IMPL_API void ImGui_ImplGlfw_ScrollCallback(GLFWwindow* window, double IMGUI_IMPL_API void ImGui_ImplGlfw_KeyCallback(GLFWwindow* window, int key, int scancode, int action, int mods); IMGUI_IMPL_API void ImGui_ImplGlfw_CharCallback(GLFWwindow* window, unsigned int c); IMGUI_IMPL_API void ImGui_ImplGlfw_MonitorCallback(GLFWmonitor* monitor, int event); + +// CUSTOM ADDITIONS +IMGUI_IMPL_API ImGuiKey ImGui_ImplGlfw_KeyToImGuiKey(int key); diff --git a/3rdparty/imgui/source/backends/imgui_impl_opengl3.cpp b/3rdparty/imgui/source/backends/imgui_impl_opengl3.cpp index 0d3489c..93f057d 100644 --- a/3rdparty/imgui/source/backends/imgui_impl_opengl3.cpp +++ b/3rdparty/imgui/source/backends/imgui_impl_opengl3.cpp @@ -1,3 +1,7 @@ +// CUSTOM ADDITIONS +#define IMGUI_IMPL_OPENGL_LOADER_CUSTOM 1 +#include <glad/glad.h> + // dear imgui: Renderer Backend for modern OpenGL with shaders / programmatic pipeline // - Desktop GL: 2.x 3.x 4.x // - Embedded GL: ES 2.0 (WebGL 1.0), ES 3.0 (WebGL 2.0) diff --git a/3rdparty/imgui/source/misc/cpp/imgui_stdlib.cpp b/3rdparty/imgui/source/misc/cpp/imgui_stdlib.cpp new file mode 100644 index 0000000..dd6bd8a --- /dev/null +++ b/3rdparty/imgui/source/misc/cpp/imgui_stdlib.cpp @@ -0,0 +1,72 @@ +// dear imgui: wrappers for C++ standard library (STL) types (std::string, etc.) +// This is also an example of how you may wrap your own similar types. + +// Changelog: +// - v0.10: Initial version. Added InputText() / InputTextMultiline() calls with std::string + +#include "imgui.h" +#include "imgui_stdlib.h" + +struct InputTextCallback_UserData +{ + std::string* Str; + ImGuiInputTextCallback ChainCallback; + void* ChainCallbackUserData; +}; + +static int InputTextCallback(ImGuiInputTextCallbackData* data) +{ + InputTextCallback_UserData* user_data = (InputTextCallback_UserData*)data->UserData; + if (data->EventFlag == ImGuiInputTextFlags_CallbackResize) + { + // Resize string callback + // If for some reason we refuse the new length (BufTextLen) and/or capacity (BufSize) we need to set them back to what we want. + std::string* str = user_data->Str; + IM_ASSERT(data->Buf == str->c_str()); + str->resize(data->BufTextLen); + data->Buf = (char*)str->c_str(); + } + else if (user_data->ChainCallback) + { + // Forward to user callback, if any + data->UserData = user_data->ChainCallbackUserData; + return user_data->ChainCallback(data); + } + return 0; +} + +bool ImGui::InputText(const char* label, std::string* str, ImGuiInputTextFlags flags, ImGuiInputTextCallback callback, void* user_data) +{ + IM_ASSERT((flags & ImGuiInputTextFlags_CallbackResize) == 0); + flags |= ImGuiInputTextFlags_CallbackResize; + + InputTextCallback_UserData cb_user_data; + cb_user_data.Str = str; + cb_user_data.ChainCallback = callback; + cb_user_data.ChainCallbackUserData = user_data; + return InputText(label, (char*)str->c_str(), str->capacity() + 1, flags, InputTextCallback, &cb_user_data); +} + +bool ImGui::InputTextMultiline(const char* label, std::string* str, const ImVec2& size, ImGuiInputTextFlags flags, ImGuiInputTextCallback callback, void* user_data) +{ + IM_ASSERT((flags & ImGuiInputTextFlags_CallbackResize) == 0); + flags |= ImGuiInputTextFlags_CallbackResize; + + InputTextCallback_UserData cb_user_data; + cb_user_data.Str = str; + cb_user_data.ChainCallback = callback; + cb_user_data.ChainCallbackUserData = user_data; + return InputTextMultiline(label, (char*)str->c_str(), str->capacity() + 1, size, flags, InputTextCallback, &cb_user_data); +} + +bool ImGui::InputTextWithHint(const char* label, const char* hint, std::string* str, ImGuiInputTextFlags flags, ImGuiInputTextCallback callback, void* user_data) +{ + IM_ASSERT((flags & ImGuiInputTextFlags_CallbackResize) == 0); + flags |= ImGuiInputTextFlags_CallbackResize; + + InputTextCallback_UserData cb_user_data; + cb_user_data.Str = str; + cb_user_data.ChainCallback = callback; + cb_user_data.ChainCallbackUserData = user_data; + return InputTextWithHint(label, hint, (char*)str->c_str(), str->capacity() + 1, flags, InputTextCallback, &cb_user_data); +} diff --git a/3rdparty/imgui/source/misc/cpp/imgui_stdlib.h b/3rdparty/imgui/source/misc/cpp/imgui_stdlib.h new file mode 100644 index 0000000..61afc09 --- /dev/null +++ b/3rdparty/imgui/source/misc/cpp/imgui_stdlib.h @@ -0,0 +1,18 @@ +// dear imgui: wrappers for C++ standard library (STL) types (std::string, etc.) +// This is also an example of how you may wrap your own similar types. + +// Changelog: +// - v0.10: Initial version. Added InputText() / InputTextMultiline() calls with std::string + +#pragma once + +#include <string> + +namespace ImGui +{ + // ImGui::InputText() with std::string + // Because text input needs dynamic resizing, we need to setup a callback to grow the capacity + IMGUI_API bool InputText(const char* label, std::string* str, ImGuiInputTextFlags flags = 0, ImGuiInputTextCallback callback = NULL, void* user_data = NULL); + IMGUI_API bool InputTextMultiline(const char* label, std::string* str, const ImVec2& size = ImVec2(0, 0), ImGuiInputTextFlags flags = 0, ImGuiInputTextCallback callback = NULL, void* user_data = NULL); + IMGUI_API bool InputTextWithHint(const char* label, const char* hint, std::string* str, ImGuiInputTextFlags flags = 0, ImGuiInputTextCallback callback = NULL, void* user_data = NULL); +} |