diff --git a/Framework/Modules/CLIParser/ThirdParty/UntitledCLIParser b/Framework/Modules/CLIParser/ThirdParty/UntitledCLIParser index 26adb63d..478b8121 160000 --- a/Framework/Modules/CLIParser/ThirdParty/UntitledCLIParser +++ b/Framework/Modules/CLIParser/ThirdParty/UntitledCLIParser @@ -1 +1 @@ -Subproject commit 26adb63d696e678f6f245f112368fd99e13a97e7 +Subproject commit 478b8121dcfa421e5be505c5d528f7574552c52f diff --git a/Framework/Modules/Knobs/ThirdParty/imgui-knobs b/Framework/Modules/Knobs/ThirdParty/imgui-knobs index 8a43bf7b..6b4b5923 160000 --- a/Framework/Modules/Knobs/ThirdParty/imgui-knobs +++ b/Framework/Modules/Knobs/ThirdParty/imgui-knobs @@ -1 +1 @@ -Subproject commit 8a43bf7b31c4166ec50f3a52c382c2cc66a91516 +Subproject commit 6b4b5923129c1e8fa4cd30f8c59439643d44f22f diff --git a/Framework/Modules/OS/ThirdParty/UntitledDBusUtils b/Framework/Modules/OS/ThirdParty/UntitledDBusUtils index e39441d7..148538ea 160000 --- a/Framework/Modules/OS/ThirdParty/UntitledDBusUtils +++ b/Framework/Modules/OS/ThirdParty/UntitledDBusUtils @@ -1 +1 @@ -Subproject commit e39441d76093c21b19079de1587b2ce3f015b4f7 +Subproject commit 148538ea148af1b8d724ad272bd2bc53e36deaac diff --git a/Framework/Modules/OS/ThirdParty/UntitledOpen b/Framework/Modules/OS/ThirdParty/UntitledOpen index d5c81587..6ead8c08 160000 --- a/Framework/Modules/OS/ThirdParty/UntitledOpen +++ b/Framework/Modules/OS/ThirdParty/UntitledOpen @@ -1 +1 @@ -Subproject commit d5c8158729bb141f55a08e316286bac243525f7f +Subproject commit 6ead8c08c949e0b14105133a7a846fe311bcc198 diff --git a/Framework/Modules/OS/ThirdParty/UntitledXDGBasedir b/Framework/Modules/OS/ThirdParty/UntitledXDGBasedir index 4ed7262e..b5ac9e82 160000 --- a/Framework/Modules/OS/ThirdParty/UntitledXDGBasedir +++ b/Framework/Modules/OS/ThirdParty/UntitledXDGBasedir @@ -1 +1 @@ -Subproject commit 4ed7262e52c87234771c4062b188d267abd8bf86 +Subproject commit b5ac9e820443cfbe394c2fc05708c2ec48f7628e diff --git a/Framework/Modules/OS/ThirdParty/uexec b/Framework/Modules/OS/ThirdParty/uexec index 43350037..31428698 160000 --- a/Framework/Modules/OS/ThirdParty/uexec +++ b/Framework/Modules/OS/ThirdParty/uexec @@ -1 +1 @@ -Subproject commit 43350037d70b7958d5017378a305e9bc06bdc3d7 +Subproject commit 31428698b355c447aadc39b91f1310c380240501 diff --git a/Framework/Modules/Plotting/ThirdParty/implot b/Framework/Modules/Plotting/ThirdParty/implot index 9f023e65..15c1bbf9 160000 --- a/Framework/Modules/Plotting/ThirdParty/implot +++ b/Framework/Modules/Plotting/ThirdParty/implot @@ -1 +1 @@ -Subproject commit 9f023e65948ed1014e6534f6d753f888cbf2c083 +Subproject commit 15c1bbf953b3b443760eb49170174aca3d903c24 diff --git a/Framework/Modules/TextUtils/ThirdParty/UntitledImGuiTextUtils b/Framework/Modules/TextUtils/ThirdParty/UntitledImGuiTextUtils index b1d033d8..bee3ac93 160000 --- a/Framework/Modules/TextUtils/ThirdParty/UntitledImGuiTextUtils +++ b/Framework/Modules/TextUtils/ThirdParty/UntitledImGuiTextUtils @@ -1 +1 @@ -Subproject commit b1d033d8156642ffd7fb580ab1826a880184af8a +Subproject commit bee3ac9336a66e3347b4faaac8afff61812526f0 diff --git a/Framework/Modules/Theming/ThirdParty/UntitledImGuiTheme b/Framework/Modules/Theming/ThirdParty/UntitledImGuiTheme index faf4ce25..b4c09758 160000 --- a/Framework/Modules/Theming/ThirdParty/UntitledImGuiTheme +++ b/Framework/Modules/Theming/ThirdParty/UntitledImGuiTheme @@ -1 +1 @@ -Subproject commit faf4ce2529a9f028d2ea6dfed76debff1035ed04 +Subproject commit b4c097583f9b6221d793499c425b87f198c932bc diff --git a/Framework/Modules/Toggles/ThirdParty/imgui_toggle b/Framework/Modules/Toggles/ThirdParty/imgui_toggle index 74c41004..bfd17d7e 160000 --- a/Framework/Modules/Toggles/ThirdParty/imgui_toggle +++ b/Framework/Modules/Toggles/ThirdParty/imgui_toggle @@ -1 +1 @@ -Subproject commit 74c4100476572073db87ceb418e52e444a46e564 +Subproject commit bfd17d7e73558b1fb1ecf70fd0a6481c1b05cc69 diff --git a/Framework/Modules/i18n/ThirdParty/UntitledI18N b/Framework/Modules/i18n/ThirdParty/UntitledI18N index e3ed1389..4c6bec27 160000 --- a/Framework/Modules/i18n/ThirdParty/UntitledI18N +++ b/Framework/Modules/i18n/ThirdParty/UntitledI18N @@ -1 +1 @@ -Subproject commit e3ed138909537cbabdda805f969b0be47db01a95 +Subproject commit 4c6bec27d0587740c30526b620340348b7b83b25 diff --git a/Framework/Renderer/Vulkan/VulkanTexture.cpp b/Framework/Renderer/Vulkan/VulkanTexture.cpp index dc245a96..3acb3f8d 100644 --- a/Framework/Renderer/Vulkan/VulkanTexture.cpp +++ b/Framework/Renderer/Vulkan/VulkanTexture.cpp @@ -98,27 +98,7 @@ void UImGui::VulkanTexture::load(TextureData& dt, void* data, FVector2 size, uin return; } - const vk::SamplerCreateInfo samplerCreateInfo - { - .sType = vk::StructureType::eSamplerCreateInfo, - .magFilter = dt.bFiltered ? vk::Filter::eLinear : vk::Filter::eNearest, - .minFilter = dt.bFiltered ? vk::Filter::eLinear : vk::Filter::eNearest, - .mipmapMode = vk::SamplerMipmapMode::eLinear, - .addressModeU = vk::SamplerAddressMode::eRepeat, - .addressModeV = vk::SamplerAddressMode::eRepeat, - .addressModeW = vk::SamplerAddressMode::eRepeat, - .maxAnisotropy = 1.0f, - .minLod = -1000, - .maxLod = 1000, - }; - result = device.createSampler(&samplerCreateInfo, nullptr, &texDt->sampler); - if (result != vk::Result::eSuccess) - { - Logger::log("Couldn't create image sampler for Vulkan texture at location: ", ULOG_LOG_TYPE_WARNING, dt.filename); - return; - } - - texDt->descriptorSet = ImGui_ImplVulkan_AddTexture(texDt->sampler, texDt->imageView, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL); + texDt->descriptorSet = ImGui_ImplVulkan_AddTexture(texDt->imageView, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL); const vk::BufferCreateInfo bufferCreateInfo = { @@ -296,7 +276,6 @@ void UImGui::VulkanTexture::clear(TextureData& dt) noexcept device.freeMemory(texDt->uploadBufferMemory, nullptr); device.destroyBuffer(texDt->uploadBuffer, nullptr); - device.destroySampler(texDt->sampler, nullptr); device.destroyImageView(texDt->imageView, nullptr); device.destroyImage(texDt->image, nullptr); device.freeMemory(texDt->imageMemory, nullptr); diff --git a/Framework/Renderer/Vulkan/VulkanTexture.hpp b/Framework/Renderer/Vulkan/VulkanTexture.hpp index 041d8a95..563cc30f 100644 --- a/Framework/Renderer/Vulkan/VulkanTexture.hpp +++ b/Framework/Renderer/Vulkan/VulkanTexture.hpp @@ -34,7 +34,6 @@ namespace UImGui vk::ImageView imageView{}; vk::Image image{}; vk::DeviceMemory imageMemory{}; - vk::Sampler sampler{}; vk::Buffer uploadBuffer{}; vk::DeviceMemory uploadBufferMemory{}; }; diff --git a/Framework/ThirdParty/freetype b/Framework/ThirdParty/freetype index 20148b08..9a75b2ce 160000 --- a/Framework/ThirdParty/freetype +++ b/Framework/ThirdParty/freetype @@ -1 +1 @@ -Subproject commit 20148b08f78ef08c8ae26a1916e3a48a2795fad4 +Subproject commit 9a75b2ced4e2a78fc7194dac30bcf588867c22a3 diff --git a/Framework/ThirdParty/imgui b/Framework/ThirdParty/imgui index d65d0685..3a390f4c 160000 --- a/Framework/ThirdParty/imgui +++ b/Framework/ThirdParty/imgui @@ -1 +1 @@ -Subproject commit d65d068583b302483ebc8a09d5b8459c32b3a781 +Subproject commit 3a390f4cfede7931801123a643d2328c2e694806 diff --git a/Framework/ThirdParty/logger b/Framework/ThirdParty/logger index a5df480e..3578dc1a 160000 --- a/Framework/ThirdParty/logger +++ b/Framework/ThirdParty/logger @@ -1 +1 @@ -Subproject commit a5df480e5a4adf0fc443c1ddf4f62031f9e4cc21 +Subproject commit 3578dc1a2eb9a0ea491b377788e94d5dc34876db diff --git a/Framework/ThirdParty/rapidyaml b/Framework/ThirdParty/rapidyaml index 16b0c3c4..239b6b02 160000 --- a/Framework/ThirdParty/rapidyaml +++ b/Framework/ThirdParty/rapidyaml @@ -1 +1 @@ -Subproject commit 16b0c3c4ef4e741fab5cff6b0d40cc9c24fb6561 +Subproject commit 239b6b027cf563eac085c7782a98105519c6367a diff --git a/Framework/ThirdParty/source-libraries/cimgui/cimgui.cpp b/Framework/ThirdParty/source-libraries/cimgui/cimgui.cpp index 3f998090..3635f2f9 100644 --- a/Framework/ThirdParty/source-libraries/cimgui/cimgui.cpp +++ b/Framework/ThirdParty/source-libraries/cimgui/cimgui.cpp @@ -2609,9 +2609,9 @@ CIMGUI_API void cimgui::ImGui_SetNextItemShortcut(ImGuiKeyChord key_chord, ImGui ::ImGui::SetNextItemShortcut(key_chord, flags); } -CIMGUI_API void cimgui::ImGui_SetItemKeyOwner(cimgui::ImGuiKey key) +CIMGUI_API bool cimgui::ImGui_SetItemKeyOwner(cimgui::ImGuiKey key) { - ::ImGui::SetItemKeyOwner(static_cast<::ImGuiKey>(key)); + return ::ImGui::SetItemKeyOwner(static_cast<::ImGuiKey>(key)); } CIMGUI_API bool cimgui::ImGui_IsMouseDown(ImGuiMouseButton button) @@ -3294,14 +3294,34 @@ CIMGUI_API void cimgui::ImDrawList_AddLineEx(cimgui::ImDrawList* self, ci reinterpret_cast<::ImDrawList*>(self)->AddLine(ConvertToCPP_ImVec2(p1), ConvertToCPP_ImVec2(p2), col, thickness); } +CIMGUI_API void cimgui::ImDrawList_AddLineH(cimgui::ImDrawList* self, float min_x, float max_x, float y, ImU32 col) +{ + reinterpret_cast<::ImDrawList*>(self)->AddLineH(min_x, max_x, y, col); +} + +CIMGUI_API void cimgui::ImDrawList_AddLineHEx(cimgui::ImDrawList* self, float min_x, float max_x, float y, ImU32 col, float thickness) +{ + reinterpret_cast<::ImDrawList*>(self)->AddLineH(min_x, max_x, y, col, thickness); +} + +CIMGUI_API void cimgui::ImDrawList_AddLineV(cimgui::ImDrawList* self, float x, float min_y, float max_y, ImU32 col) +{ + reinterpret_cast<::ImDrawList*>(self)->AddLineV(x, min_y, max_y, col); +} + +CIMGUI_API void cimgui::ImDrawList_AddLineVEx(cimgui::ImDrawList* self, float x, float min_y, float max_y, ImU32 col, float thickness) +{ + reinterpret_cast<::ImDrawList*>(self)->AddLineV(x, min_y, max_y, col, thickness); +} + CIMGUI_API void cimgui::ImDrawList_AddRect(cimgui::ImDrawList* self, cimgui::ImVec2 p_min, cimgui::ImVec2 p_max, ImU32 col) { reinterpret_cast<::ImDrawList*>(self)->AddRect(ConvertToCPP_ImVec2(p_min), ConvertToCPP_ImVec2(p_max), col); } -CIMGUI_API void cimgui::ImDrawList_AddRectEx(cimgui::ImDrawList* self, cimgui::ImVec2 p_min, cimgui::ImVec2 p_max, ImU32 col, float rounding, ImDrawFlags flags, float thickness) +CIMGUI_API void cimgui::ImDrawList_AddRectEx(cimgui::ImDrawList* self, cimgui::ImVec2 p_min, cimgui::ImVec2 p_max, ImU32 col, float rounding, float thickness, ImDrawFlags flags) { - reinterpret_cast<::ImDrawList*>(self)->AddRect(ConvertToCPP_ImVec2(p_min), ConvertToCPP_ImVec2(p_max), col, rounding, flags, thickness); + reinterpret_cast<::ImDrawList*>(self)->AddRect(ConvertToCPP_ImVec2(p_min), ConvertToCPP_ImVec2(p_max), col, rounding, thickness, flags); } CIMGUI_API void cimgui::ImDrawList_AddRectFilled(cimgui::ImDrawList* self, cimgui::ImVec2 p_min, cimgui::ImVec2 p_max, ImU32 col) @@ -3429,9 +3449,9 @@ CIMGUI_API void cimgui::ImDrawList_AddBezierQuadratic(cimgui::ImDrawList* reinterpret_cast<::ImDrawList*>(self)->AddBezierQuadratic(ConvertToCPP_ImVec2(p1), ConvertToCPP_ImVec2(p2), ConvertToCPP_ImVec2(p3), col, thickness, num_segments); } -CIMGUI_API void cimgui::ImDrawList_AddPolyline(cimgui::ImDrawList* self, const cimgui::ImVec2* points, int num_points, ImU32 col, ImDrawFlags flags, float thickness) +CIMGUI_API void cimgui::ImDrawList_AddPolyline(cimgui::ImDrawList* self, const cimgui::ImVec2* points, int num_points, ImU32 col, float thickness, ImDrawFlags flags) { - reinterpret_cast<::ImDrawList*>(self)->AddPolyline(reinterpret_cast(points), num_points, col, flags, thickness); + reinterpret_cast<::ImDrawList*>(self)->AddPolyline(reinterpret_cast(points), num_points, col, thickness, flags); } CIMGUI_API void cimgui::ImDrawList_AddConvexPolyFilled(cimgui::ImDrawList* self, const cimgui::ImVec2* points, int num_points, ImU32 col) @@ -3494,9 +3514,9 @@ CIMGUI_API void cimgui::ImDrawList_PathFillConcave(cimgui::ImDrawList* se reinterpret_cast<::ImDrawList*>(self)->PathFillConcave(col); } -CIMGUI_API void cimgui::ImDrawList_PathStroke(cimgui::ImDrawList* self, ImU32 col, ImDrawFlags flags, float thickness) +CIMGUI_API void cimgui::ImDrawList_PathStroke(cimgui::ImDrawList* self, ImU32 col, float thickness, ImDrawFlags flags) { - reinterpret_cast<::ImDrawList*>(self)->PathStroke(col, flags, thickness); + reinterpret_cast<::ImDrawList*>(self)->PathStroke(col, thickness, flags); } CIMGUI_API void cimgui::ImDrawList_PathArcTo(cimgui::ImDrawList* self, cimgui::ImVec2 center, float radius, float a_min, float a_max, int num_segments) @@ -3534,9 +3554,9 @@ CIMGUI_API void cimgui::ImDrawList_PathRect(cimgui::ImDrawList* self, cim reinterpret_cast<::ImDrawList*>(self)->PathRect(ConvertToCPP_ImVec2(rect_min), ConvertToCPP_ImVec2(rect_max), rounding, flags); } -CIMGUI_API void cimgui::ImDrawList_AddCallback(cimgui::ImDrawList* self, cimgui::ImDrawCallback callback, void* userdata) +CIMGUI_API void cimgui::ImDrawList_AddCallback(cimgui::ImDrawList* self, cimgui::ImDrawCallback callback) { - reinterpret_cast<::ImDrawList*>(self)->AddCallback(reinterpret_cast<::ImDrawCallback>(callback), userdata); + reinterpret_cast<::ImDrawList*>(self)->AddCallback(reinterpret_cast<::ImDrawCallback>(callback)); } CIMGUI_API void cimgui::ImDrawList_AddCallbackEx(cimgui::ImDrawList* self, cimgui::ImDrawCallback callback, void* userdata, size_t userdata_size) @@ -3611,6 +3631,21 @@ CIMGUI_API void cimgui::ImDrawList_PrimVtx(cimgui::ImDrawList* self, cimg #ifndef IMGUI_DISABLE_OBSOLETE_FUNCTIONS +CIMGUI_API void cimgui::ImDrawList_AddRectImDrawFlags(cimgui::ImDrawList* self, cimgui::ImVec2 p_min, cimgui::ImVec2 p_max, ImU32 col, float rounding, ImDrawFlags flags, float thickness) +{ + reinterpret_cast<::ImDrawList*>(self)->AddRect(ConvertToCPP_ImVec2(p_min), ConvertToCPP_ImVec2(p_max), col, rounding, flags, thickness); +} + +CIMGUI_API void cimgui::ImDrawList_AddPolylineImDrawFlags(cimgui::ImDrawList* self, const cimgui::ImVec2* points, int num_points, ImU32 col, ImDrawFlags flags, float thickness) +{ + reinterpret_cast<::ImDrawList*>(self)->AddPolyline(reinterpret_cast(points), num_points, col, flags, thickness); +} + +CIMGUI_API void cimgui::ImDrawList_PathStrokeImDrawFlags(cimgui::ImDrawList* self, ImU32 col, ImDrawFlags flags, float thickness) +{ + reinterpret_cast<::ImDrawList*>(self)->PathStroke(col, flags, thickness); +} + CIMGUI_API void cimgui::ImDrawList_PushTextureID(cimgui::ImDrawList* self, cimgui::ImTextureRef tex_ref) { reinterpret_cast<::ImDrawList*>(self)->PushTextureID(ConvertToCPP_ImTextureRef(tex_ref)); @@ -3838,6 +3873,11 @@ CIMGUI_API void cimgui::ImFontAtlas_Clear(cimgui::ImFontAtlas* self reinterpret_cast<::ImFontAtlas*>(self)->Clear(); } +CIMGUI_API void cimgui::ImFontAtlas_ClearFonts(cimgui::ImFontAtlas* self) +{ + reinterpret_cast<::ImFontAtlas*>(self)->ClearFonts(); +} + CIMGUI_API void cimgui::ImFontAtlas_CompactCache(cimgui::ImFontAtlas* self) { reinterpret_cast<::ImFontAtlas*>(self)->CompactCache(); @@ -3853,11 +3893,6 @@ CIMGUI_API void cimgui::ImFontAtlas_ClearInputData(cimgui::ImFontAt reinterpret_cast<::ImFontAtlas*>(self)->ClearInputData(); } -CIMGUI_API void cimgui::ImFontAtlas_ClearFonts(cimgui::ImFontAtlas* self) -{ - reinterpret_cast<::ImFontAtlas*>(self)->ClearFonts(); -} - CIMGUI_API void cimgui::ImFontAtlas_ClearTexData(cimgui::ImFontAtlas* self) { reinterpret_cast<::ImFontAtlas*>(self)->ClearTexData(); diff --git a/Framework/ThirdParty/source-libraries/cimgui/cimgui.h b/Framework/ThirdParty/source-libraries/cimgui/cimgui.h index 6a8e49fa..6f7b9817 100644 --- a/Framework/ThirdParty/source-libraries/cimgui/cimgui.h +++ b/Framework/ThirdParty/source-libraries/cimgui/cimgui.h @@ -2,7 +2,7 @@ // **DO NOT EDIT DIRECTLY** // https://github.com/dearimgui/dear_bindings -// dear imgui, v1.92.8 WIP +// dear imgui, v1.92.8 // (headers) // Help: @@ -34,10 +34,10 @@ // Library Version // (Integer encoded as XYYZZ for use in #if preprocessor conditionals, e.g. '#if IMGUI_VERSION_NUM >= 12345') #ifndef DEAR_BINDINGS_INTERNAL_GLUE_CODE -#define IMGUI_VERSION "1.92.8 WIP" +#define IMGUI_VERSION "1.92.8" #endif // #ifndef DEAR_BINDINGS_INTERNAL_GLUE_CODE #ifndef DEAR_BINDINGS_INTERNAL_GLUE_CODE -#define IMGUI_VERSION_NUM 19273 +#define IMGUI_VERSION_NUM 19280 #endif // #ifndef DEAR_BINDINGS_INTERNAL_GLUE_CODE #define IMGUI_HAS_TABLE // Added BeginTable() - from IMGUI_VERSION_NUM >= 18000 #define IMGUI_HAS_TEXTURES // Added ImGuiBackendFlags_RendererHasTextures - from IMGUI_VERSION_NUM >= 19198 @@ -1227,10 +1227,11 @@ CIMGUI_API void ImGui_SetNextItemShortcut(ImGuiKeyChord key_chord, ImGuiInputFla // Inputs Utilities: Key/Input Ownership [BETA] // - One common use case would be to allow your items to disable standard inputs behaviors such // as Tab or Alt key handling, Mouse Wheel scrolling, etc. -// e.g. Button(...); SetItemKeyOwner(ImGuiKey_MouseWheelY); to make hovering/activating a button disable wheel for scrolling. +// e.g. `Button(...); if (SetItemKeyOwner(ImGuiKey_MouseWheelY)) { ... }` to make hovering/activating a button disable wheel for scrolling. // - Reminder ImGuiKey enum include access to mouse buttons and gamepad, so key ownership can apply to them. +// - The return value of SetItemKeyOwner() says if ownership has been requested for the item, which is a shortcut to calling yet non-public TestKeyOwner() function. // - Many related features are still in imgui_internal.h. For instance, most IsKeyXXX()/IsMouseXXX() functions have an owner-id-aware version. -CIMGUI_API void ImGui_SetItemKeyOwner(ImGuiKey key); // Set key owner to last item ID if it is hovered or active. Equivalent to 'if (IsItemHovered() || IsItemActive()) { SetKeyOwner(key, GetItemID());'. +CIMGUI_API bool ImGui_SetItemKeyOwner(ImGuiKey key); // Set key owner to last item ID if it is hovered or active. Return true when ownership has been set. Roughly equivalent to 'if (TestKeyOwner(key, GetItemID()) && (IsItemHovered() || IsItemActive())) { SetKeyOwner(key, GetItemID());'. // Inputs Utilities: Mouse // - To refer to a mouse button, you may use named enums in your code e.g. ImGuiMouseButton_Left, ImGuiMouseButton_Right. @@ -1537,7 +1538,7 @@ typedef enum ImGuiTabBarFlags_DrawSelectedOverline = 1<<6, // Draw selected overline markers over selected tab // Fitting/Resize policy - ImGuiTabBarFlags_FittingPolicyMixed = 1<<7, // Shrink down tabs when they don't fit, until width is style.TabMinWidthShrink, then enable scrolling buttons. + ImGuiTabBarFlags_FittingPolicyMixed = 1<<7, // Shrink down tabs when they don't fit, until width is style.TabMinWidthShrink, then enable scrolling. Setting TabMinWidthShrink to FLT_MAX makes this behave like ImGuiTabBarFlags_FittingPolicyScroll. ImGuiTabBarFlags_FittingPolicyShrink = 1<<8, // Shrink down tabs when they don't fit ImGuiTabBarFlags_FittingPolicyScroll = 1<<9, // Enable scrolling buttons when tabs don't fit ImGuiTabBarFlags_FittingPolicyMask_ = ImGuiTabBarFlags_FittingPolicyMixed | ImGuiTabBarFlags_FittingPolicyShrink | ImGuiTabBarFlags_FittingPolicyScroll, @@ -1977,7 +1978,7 @@ typedef enum ImGuiBackendFlags_RendererHasViewports = 1<<10, // Backend Renderer supports multiple viewports. ImGuiBackendFlags_PlatformHasViewports = 1<<11, // Backend Platform supports multiple viewports. ImGuiBackendFlags_HasMouseHoveredViewport = 1<<12, // Backend Platform supports calling io.AddMouseViewportEvent() with the viewport under the mouse. IF POSSIBLE, ignore viewports with the ImGuiViewportFlags_NoInputs flag (Win32 backend, GLFW 3.30+ backend can do this, SDL backend cannot). If this cannot be done, Dear ImGui needs to use a flawed heuristic to find the viewport under. - ImGuiBackendFlags_HasParentViewport = 1<<13, // Backend Platform supports honoring viewport->ParentViewport/ParentViewportId value, by applying the corresponding parent/child relation at the Platform level. + ImGuiBackendFlags_HasParentViewport = 1<<13, // Backend Platform supports honoring viewport->ParentViewport/ParentViewportId value, by applying the corresponding parent/child relationship at the Platform level. Child windows always appear in front of their parent window. } ImGuiBackendFlags_; // Enumeration for PushStyleColor() / PopStyleColor() @@ -2002,6 +2003,7 @@ typedef enum ImGuiCol_ScrollbarGrabHovered, ImGuiCol_ScrollbarGrabActive, ImGuiCol_CheckMark, // Checkbox tick and RadioButton circle + ImGuiCol_CheckboxSelectedBg, // Checkbox background when Selected, otherwise use FrameBg ImGuiCol_SliderGrab, ImGuiCol_SliderGrabActive, ImGuiCol_Button, @@ -2101,6 +2103,7 @@ typedef enum ImGuiStyleVar_TableAngledHeadersTextAlign, // ImVec2 TableAngledHeadersTextAlign ImGuiStyleVar_TreeLinesSize, // float TreeLinesSize ImGuiStyleVar_TreeLinesRounding, // float TreeLinesRounding + ImGuiStyleVar_DragDropTargetRounding, // float DragDropTargetRounding ImGuiStyleVar_ButtonTextAlign, // ImVec2 ButtonTextAlign ImGuiStyleVar_SelectableTextAlign, // ImVec2 SelectableTextAlign ImGuiStyleVar_SeparatorSize, // float SeparatorSize @@ -2542,7 +2545,7 @@ struct ImGuiStyle_t float TabBorderSize; // Thickness of border around tabs. float TabMinWidthBase; // Minimum tab width, to make tabs larger than their contents. TabBar buttons are not affected. float TabMinWidthShrink; // Minimum tab width after shrinking, when using ImGuiTabBarFlags_FittingPolicyMixed policy. - float TabCloseButtonMinWidthSelected; // -1: always visible. 0.0f: visible when hovered. >0.0f: visible when hovered if minimum width. + float TabCloseButtonMinWidthSelected; // -1: always visible. 0.0f: visible when hovered. >0.0f: visible when hovered if minimum width. FLT_MAX: never shrink, will behave like ImGuiTabBarFlags_FittingPolicyScroll. float TabCloseButtonMinWidthUnselected; // -1: always visible. 0.0f: visible when hovered. >0.0f: visible when hovered if minimum width. FLT_MAX: never show close button when unselected. float TabBarBorderSize; // Thickness of tab-bar separator, which takes on the tab active color to denote focus. float TabBarOverlineSize; // Thickness of tab-bar overline, which highlights the selected tab-bar. @@ -2551,7 +2554,7 @@ struct ImGuiStyle_t ImGuiTreeNodeFlags TreeLinesFlags; // Default way to draw lines connecting TreeNode hierarchy. ImGuiTreeNodeFlags_DrawLinesNone or ImGuiTreeNodeFlags_DrawLinesFull or ImGuiTreeNodeFlags_DrawLinesToNodes. float TreeLinesSize; // Thickness of outlines when using ImGuiTreeNodeFlags_DrawLines. float TreeLinesRounding; // Radius of lines connecting child nodes to the vertical line. - float DragDropTargetRounding; // Radius of the drag and drop target frame. + float DragDropTargetRounding; // Radius of the drag and drop target frame. When <0.0f: use FrameRounding. float DragDropTargetBorderSize; // Thickness of the drag and drop target border. float DragDropTargetPadding; // Size to expand the drag and drop target from actual target item size. float ColorMarkerSize; // Size of R/G/B/A color markers for ColorEdit4() and for Drags/Sliders when using ImGuiSliderFlags_ColorMarkers. @@ -2650,10 +2653,11 @@ struct ImGuiIO_t bool ConfigDockingTransparentPayload; // = false // [BETA] Make window or viewport transparent when docking and only display docking boxes on the target viewport. Useful if rendering of multiple viewport cannot be synced. Best used with ConfigViewportsNoAutoMerge. // Viewport options (when ImGuiConfigFlags_ViewportsEnable is set) + // (sorry for the amount of "NoXXXX" flags, which may be harder to reason about! may rework someday) bool ConfigViewportsNoAutoMerge; // = false; // Set to make all floating imgui windows always create their own viewport. Otherwise, they are merged into the main host viewports when overlapping it. May also set ImGuiViewportFlags_NoAutoMerge on individual viewport. bool ConfigViewportsNoTaskBarIcon; // = false // Disable default OS task bar icon flag for secondary viewports. When a viewport doesn't want a task bar icon, ImGuiViewportFlags_NoTaskBarIcon will be set on it. bool ConfigViewportsNoDecoration; // = true // Disable default OS window decoration flag for secondary viewports. When a viewport doesn't want window decorations, ImGuiViewportFlags_NoDecoration will be set on it. Enabling decoration can create subsequent issues at OS levels (e.g. minimum window size). - bool ConfigViewportsNoDefaultParent; // = true // When false: set secondary viewports' ParentViewportId to main viewport ID by default. Expects the platform backend to setup a parent/child relationship between the OS windows based on this value. Some backend may ignore this. Set to true if you want viewports to automatically be parent of main viewport, otherwise all viewports will be top-level OS windows. + bool ConfigViewportsNoDefaultParent; // = true // Disable setting OS window parent to main viewport by default. The platform backend is expected to honor `viewport->ParentViewportID` to setup a parent/child relationship between the OS windows (supported if ImGuiBackendFlags_HasParentViewport is set). When parented: child windows always appear in front of their parent. Set to false if you want viewports to automatically be parent of main viewport, otherwise all viewports will be top-level OS windows. Parent/child relationship may be set on a per-window basis using ImGuiWindowClass. bool ConfigViewportsPlatformFocusSetsImGuiFocus; //= true // When a platform window is focused (e.g. using Alt+Tab, clicking Platform Title Bar), apply corresponding focus on imgui windows (may clear focus/active id from imgui windows location in other platform windows). In principle this is better enabled but we provide an opt-out, because some Linux window managers tend to eagerly focus windows (e.g. on mouse hover, or even a simple window pos/size change). // DPI/Scaling options @@ -2918,7 +2922,7 @@ struct ImGuiSizeCallbackData_t // before we stabilize Docking features. Please be mindful if using this. // Provide hints: // - To the platform backend via altered viewport flags (enable/disable OS decoration, OS task bar icons, etc.) -// - To the platform backend for OS level parent/child relationships of viewport. +// - To the platform backend for OS level parent/child relationships of viewport (otherwise: default is configured via io.ConfigViewportsNoDefaultParent) // - To the docking system for various options and filtering. struct ImGuiWindowClass_t { @@ -3320,12 +3324,6 @@ CIMGUI_API void ImGuiSelectionExternalStorage_ApplyRequests(ImGuiSelectionExtern #ifndef ImDrawCallback typedef void (*ImDrawCallback)(const ImDrawList* parent_list, const ImDrawCmd* cmd); #endif // #ifndef ImDrawCallback -// Special Draw callback value to request renderer backend to reset the graphics/render state. -// The renderer backend needs to handle this special value, otherwise it will crash trying to call a function at this address. -// This is useful, for example, if you submitted callbacks which you know have altered the render state and you want it to be restored. -// Render state is not reset by default because they are many perfectly useful way of altering render state (e.g. changing shader/blending settings before an Image call). -#define ImDrawCallback_ResetRenderState (ImDrawCallback)(-8) - // Typically, 1 command = 1 GPU draw call (unless command is a callback) // - VtxOffset: When 'io.BackendFlags & ImGuiBackendFlags_RendererHasVtxOffset' is enabled, // this fields allow us to render meshes larger than 64K vertices while keeping 16-bit indices. @@ -3392,16 +3390,15 @@ CIMGUI_API void ImDrawListSplitter_Merge(ImDrawListSplitter* self, ImDrawList* d CIMGUI_API void ImDrawListSplitter_SetCurrentChannel(ImDrawListSplitter* self, ImDrawList* draw_list, int channel_idx); // Flags for ImDrawList functions -// (Legacy: bit 0 must always correspond to ImDrawFlags_Closed to be backward compatible with old API using a bool. Bits 1..3 must be unused) typedef enum { ImDrawFlags_None = 0, - ImDrawFlags_Closed = 1<<0, // PathStroke(), AddPolyline(): specify that shape should be closed (Important: this is always == 1 for legacy reason) ImDrawFlags_RoundCornersTopLeft = 1<<4, // AddRect(), AddRectFilled(), PathRect(): enable rounding top-left corner only (when rounding > 0.0f, we default to all corners). Was 0x01. ImDrawFlags_RoundCornersTopRight = 1<<5, // AddRect(), AddRectFilled(), PathRect(): enable rounding top-right corner only (when rounding > 0.0f, we default to all corners). Was 0x02. ImDrawFlags_RoundCornersBottomLeft = 1<<6, // AddRect(), AddRectFilled(), PathRect(): enable rounding bottom-left corner only (when rounding > 0.0f, we default to all corners). Was 0x04. ImDrawFlags_RoundCornersBottomRight = 1<<7, // AddRect(), AddRectFilled(), PathRect(): enable rounding bottom-right corner only (when rounding > 0.0f, we default to all corners). Wax 0x08. ImDrawFlags_RoundCornersNone = 1<<8, // AddRect(), AddRectFilled(), PathRect(): disable rounding on all corners (when rounding > 0.0f). This is NOT zero, NOT an implicit flag! + ImDrawFlags_Closed = 1<<9, // PathStroke(), AddPolyline(): specify that shape should be closed (Important: this is always == 1 for legacy reason) ImDrawFlags_RoundCornersTop = ImDrawFlags_RoundCornersTopLeft | ImDrawFlags_RoundCornersTopRight, ImDrawFlags_RoundCornersBottom = ImDrawFlags_RoundCornersBottomLeft | ImDrawFlags_RoundCornersBottomRight, ImDrawFlags_RoundCornersLeft = ImDrawFlags_RoundCornersBottomLeft | ImDrawFlags_RoundCornersTopLeft, @@ -3409,6 +3406,7 @@ typedef enum ImDrawFlags_RoundCornersAll = ImDrawFlags_RoundCornersTopLeft | ImDrawFlags_RoundCornersTopRight | ImDrawFlags_RoundCornersBottomLeft | ImDrawFlags_RoundCornersBottomRight, ImDrawFlags_RoundCornersDefault_ = ImDrawFlags_RoundCornersAll, // Default to ALL corners if none of the _RoundCornersXX flags are specified. ImDrawFlags_RoundCornersMask_ = ImDrawFlags_RoundCornersAll | ImDrawFlags_RoundCornersNone, + ImDrawFlags_InvalidMask_ = (ImDrawFlags)0x8000000F, } ImDrawFlags_; // Flags for ImDrawList instance. Those are set automatically by ImGui:: functions from ImGuiIO settings, and generally not manipulated directly. @@ -3473,48 +3471,52 @@ CIMGUI_API ImVec2 ImDrawList_GetClipRectMax(const ImDrawList* self); // In older versions (until Dear ImGui 1.77) the AddCircle functions defaulted to num_segments == 12. // In future versions we will use textures to provide cheaper and higher-quality circles. // Use AddNgon() and AddNgonFilled() functions if you need to guarantee a specific number of sides. -CIMGUI_API void ImDrawList_AddLine(ImDrawList* self, ImVec2 p1, ImVec2 p2, ImU32 col); // Implied thickness = 1.0f +CIMGUI_API void ImDrawList_AddLine(ImDrawList* self, ImVec2 p1, ImVec2 p2, ImU32 col); // Implied thickness = 1.0f CIMGUI_API void ImDrawList_AddLineEx(ImDrawList* self, ImVec2 p1, ImVec2 p2, ImU32 col, float thickness /* = 1.0f */); -CIMGUI_API void ImDrawList_AddRect(ImDrawList* self, ImVec2 p_min, ImVec2 p_max, ImU32 col); // Implied rounding = 0.0f, flags = 0, thickness = 1.0f -CIMGUI_API void ImDrawList_AddRectEx(ImDrawList* self, ImVec2 p_min, ImVec2 p_max, ImU32 col, float rounding /* = 0.0f */, ImDrawFlags flags /* = 0 */, float thickness /* = 1.0f */); // a: upper-left, b: lower-right (== upper-left + size) -CIMGUI_API void ImDrawList_AddRectFilled(ImDrawList* self, ImVec2 p_min, ImVec2 p_max, ImU32 col); // Implied rounding = 0.0f, flags = 0 +CIMGUI_API void ImDrawList_AddLineH(ImDrawList* self, float min_x, float max_x, float y, ImU32 col); // Implied thickness = 1.0f +CIMGUI_API void ImDrawList_AddLineHEx(ImDrawList* self, float min_x, float max_x, float y, ImU32 col, float thickness /* = 1.0f */); +CIMGUI_API void ImDrawList_AddLineV(ImDrawList* self, float x, float min_y, float max_y, ImU32 col); // Implied thickness = 1.0f +CIMGUI_API void ImDrawList_AddLineVEx(ImDrawList* self, float x, float min_y, float max_y, ImU32 col, float thickness /* = 1.0f */); +CIMGUI_API void ImDrawList_AddRect(ImDrawList* self, ImVec2 p_min, ImVec2 p_max, ImU32 col); // Implied rounding = 0.0f, thickness = 1.0f, flags = 0 +CIMGUI_API void ImDrawList_AddRectEx(ImDrawList* self, ImVec2 p_min, ImVec2 p_max, ImU32 col, float rounding /* = 0.0f */, float thickness /* = 1.0f */, ImDrawFlags flags /* = 0 */); // a: upper-left, b: lower-right (== upper-left + size) +CIMGUI_API void ImDrawList_AddRectFilled(ImDrawList* self, ImVec2 p_min, ImVec2 p_max, ImU32 col); // Implied rounding = 0.0f, flags = 0 CIMGUI_API void ImDrawList_AddRectFilledEx(ImDrawList* self, ImVec2 p_min, ImVec2 p_max, ImU32 col, float rounding /* = 0.0f */, ImDrawFlags flags /* = 0 */); // a: upper-left, b: lower-right (== upper-left + size) CIMGUI_API void ImDrawList_AddRectFilledMultiColor(ImDrawList* self, ImVec2 p_min, ImVec2 p_max, ImU32 col_upr_left, ImU32 col_upr_right, ImU32 col_bot_right, ImU32 col_bot_left); -CIMGUI_API void ImDrawList_AddQuad(ImDrawList* self, ImVec2 p1, ImVec2 p2, ImVec2 p3, ImVec2 p4, ImU32 col); // Implied thickness = 1.0f +CIMGUI_API void ImDrawList_AddQuad(ImDrawList* self, ImVec2 p1, ImVec2 p2, ImVec2 p3, ImVec2 p4, ImU32 col); // Implied thickness = 1.0f CIMGUI_API void ImDrawList_AddQuadEx(ImDrawList* self, ImVec2 p1, ImVec2 p2, ImVec2 p3, ImVec2 p4, ImU32 col, float thickness /* = 1.0f */); CIMGUI_API void ImDrawList_AddQuadFilled(ImDrawList* self, ImVec2 p1, ImVec2 p2, ImVec2 p3, ImVec2 p4, ImU32 col); -CIMGUI_API void ImDrawList_AddTriangle(ImDrawList* self, ImVec2 p1, ImVec2 p2, ImVec2 p3, ImU32 col); // Implied thickness = 1.0f +CIMGUI_API void ImDrawList_AddTriangle(ImDrawList* self, ImVec2 p1, ImVec2 p2, ImVec2 p3, ImU32 col); // Implied thickness = 1.0f CIMGUI_API void ImDrawList_AddTriangleEx(ImDrawList* self, ImVec2 p1, ImVec2 p2, ImVec2 p3, ImU32 col, float thickness /* = 1.0f */); CIMGUI_API void ImDrawList_AddTriangleFilled(ImDrawList* self, ImVec2 p1, ImVec2 p2, ImVec2 p3, ImU32 col); -CIMGUI_API void ImDrawList_AddCircle(ImDrawList* self, ImVec2 center, float radius, ImU32 col); // Implied num_segments = 0, thickness = 1.0f +CIMGUI_API void ImDrawList_AddCircle(ImDrawList* self, ImVec2 center, float radius, ImU32 col); // Implied num_segments = 0, thickness = 1.0f CIMGUI_API void ImDrawList_AddCircleEx(ImDrawList* self, ImVec2 center, float radius, ImU32 col, int num_segments /* = 0 */, float thickness /* = 1.0f */); CIMGUI_API void ImDrawList_AddCircleFilled(ImDrawList* self, ImVec2 center, float radius, ImU32 col, int num_segments /* = 0 */); -CIMGUI_API void ImDrawList_AddNgon(ImDrawList* self, ImVec2 center, float radius, ImU32 col, int num_segments); // Implied thickness = 1.0f +CIMGUI_API void ImDrawList_AddNgon(ImDrawList* self, ImVec2 center, float radius, ImU32 col, int num_segments); // Implied thickness = 1.0f CIMGUI_API void ImDrawList_AddNgonEx(ImDrawList* self, ImVec2 center, float radius, ImU32 col, int num_segments, float thickness /* = 1.0f */); CIMGUI_API void ImDrawList_AddNgonFilled(ImDrawList* self, ImVec2 center, float radius, ImU32 col, int num_segments); -CIMGUI_API void ImDrawList_AddEllipse(ImDrawList* self, ImVec2 center, ImVec2 radius, ImU32 col); // Implied rot = 0.0f, num_segments = 0, thickness = 1.0f +CIMGUI_API void ImDrawList_AddEllipse(ImDrawList* self, ImVec2 center, ImVec2 radius, ImU32 col); // Implied rot = 0.0f, num_segments = 0, thickness = 1.0f CIMGUI_API void ImDrawList_AddEllipseEx(ImDrawList* self, ImVec2 center, ImVec2 radius, ImU32 col, float rot /* = 0.0f */, int num_segments /* = 0 */, float thickness /* = 1.0f */); -CIMGUI_API void ImDrawList_AddEllipseFilled(ImDrawList* self, ImVec2 center, ImVec2 radius, ImU32 col); // Implied rot = 0.0f, num_segments = 0 +CIMGUI_API void ImDrawList_AddEllipseFilled(ImDrawList* self, ImVec2 center, ImVec2 radius, ImU32 col); // Implied rot = 0.0f, num_segments = 0 CIMGUI_API void ImDrawList_AddEllipseFilledEx(ImDrawList* self, ImVec2 center, ImVec2 radius, ImU32 col, float rot /* = 0.0f */, int num_segments /* = 0 */); -CIMGUI_API void ImDrawList_AddText(ImDrawList* self, ImVec2 pos, ImU32 col, const char* text_begin); // Implied text_end = NULL +CIMGUI_API void ImDrawList_AddText(ImDrawList* self, ImVec2 pos, ImU32 col, const char* text_begin); // Implied text_end = NULL CIMGUI_API void ImDrawList_AddTextEx(ImDrawList* self, ImVec2 pos, ImU32 col, const char* text_begin, const char* text_end /* = NULL */); -CIMGUI_API void ImDrawList_AddTextImFontPtr(ImDrawList* self, ImFont* font, float font_size, ImVec2 pos, ImU32 col, const char* text_begin); // Implied text_end = NULL, wrap_width = 0.0f, cpu_fine_clip_rect = NULL +CIMGUI_API void ImDrawList_AddTextImFontPtr(ImDrawList* self, ImFont* font, float font_size, ImVec2 pos, ImU32 col, const char* text_begin); // Implied text_end = NULL, wrap_width = 0.0f, cpu_fine_clip_rect = NULL CIMGUI_API void ImDrawList_AddTextImFontPtrEx(ImDrawList* self, ImFont* font, float font_size, ImVec2 pos, ImU32 col, const char* text_begin, const char* text_end /* = NULL */, float wrap_width /* = 0.0f */, const ImVec4* cpu_fine_clip_rect /* = NULL */); CIMGUI_API void ImDrawList_AddBezierCubic(ImDrawList* self, ImVec2 p1, ImVec2 p2, ImVec2 p3, ImVec2 p4, ImU32 col, float thickness, int num_segments /* = 0 */); // Cubic Bezier (4 control points) -CIMGUI_API void ImDrawList_AddBezierQuadratic(ImDrawList* self, ImVec2 p1, ImVec2 p2, ImVec2 p3, ImU32 col, float thickness, int num_segments /* = 0 */); // Quadratic Bezier (3 control points) +CIMGUI_API void ImDrawList_AddBezierQuadratic(ImDrawList* self, ImVec2 p1, ImVec2 p2, ImVec2 p3, ImU32 col, float thickness, int num_segments /* = 0 */); // Quadratic Bezier (3 control points) // General polygon // - Only simple polygons are supported by filling functions (no self-intersections, no holes). // - Concave polygon fill is more expensive than convex one: it has O(N^2) complexity. Provided as a convenience for the user but not used by the main library. -CIMGUI_API void ImDrawList_AddPolyline(ImDrawList* self, const ImVec2* points, int num_points, ImU32 col, ImDrawFlags flags, float thickness); +CIMGUI_API void ImDrawList_AddPolyline(ImDrawList* self, const ImVec2* points, int num_points, ImU32 col, float thickness, ImDrawFlags flags /* = 0 */); CIMGUI_API void ImDrawList_AddConvexPolyFilled(ImDrawList* self, const ImVec2* points, int num_points, ImU32 col); CIMGUI_API void ImDrawList_AddConcavePolyFilled(ImDrawList* self, const ImVec2* points, int num_points, ImU32 col); // Image primitives // - Read FAQ to understand what ImTextureID/ImTextureRef are. // - "p_min" and "p_max" represent the upper-left and lower-right corners of the rectangle. // - "uv_min" and "uv_max" represent the normalized texture coordinates to use for those corners. Using (0,0)->(1,1) texture coordinates will generally display the entire texture. -CIMGUI_API void ImDrawList_AddImage(ImDrawList* self, ImTextureRef tex_ref, ImVec2 p_min, ImVec2 p_max); // Implied uv_min = ImVec2(0, 0), uv_max = ImVec2(1, 1), col = IM_COL32_WHITE +CIMGUI_API void ImDrawList_AddImage(ImDrawList* self, ImTextureRef tex_ref, ImVec2 p_min, ImVec2 p_max); // Implied uv_min = ImVec2(0, 0), uv_max = ImVec2(1, 1), col = IM_COL32_WHITE CIMGUI_API void ImDrawList_AddImageEx(ImDrawList* self, ImTextureRef tex_ref, ImVec2 p_min, ImVec2 p_max, ImVec2 uv_min /* = ImVec2(0, 0) */, ImVec2 uv_max /* = ImVec2(1, 1) */, ImU32 col /* = IM_COL32_WHITE */); -CIMGUI_API void ImDrawList_AddImageQuad(ImDrawList* self, ImTextureRef tex_ref, ImVec2 p1, ImVec2 p2, ImVec2 p3, ImVec2 p4); // Implied uv1 = ImVec2(0, 0), uv2 = ImVec2(1, 0), uv3 = ImVec2(1, 1), uv4 = ImVec2(0, 1), col = IM_COL32_WHITE +CIMGUI_API void ImDrawList_AddImageQuad(ImDrawList* self, ImTextureRef tex_ref, ImVec2 p1, ImVec2 p2, ImVec2 p3, ImVec2 p4); // Implied uv1 = ImVec2(0, 0), uv2 = ImVec2(1, 0), uv3 = ImVec2(1, 1), uv4 = ImVec2(0, 1), col = IM_COL32_WHITE CIMGUI_API void ImDrawList_AddImageQuadEx(ImDrawList* self, ImTextureRef tex_ref, ImVec2 p1, ImVec2 p2, ImVec2 p3, ImVec2 p4, ImVec2 uv1 /* = ImVec2(0, 0) */, ImVec2 uv2 /* = ImVec2(1, 0) */, ImVec2 uv3 /* = ImVec2(1, 1) */, ImVec2 uv4 /* = ImVec2(0, 1) */, ImU32 col /* = IM_COL32_WHITE */); CIMGUI_API void ImDrawList_AddImageRounded(ImDrawList* self, ImTextureRef tex_ref, ImVec2 p_min, ImVec2 p_max, ImVec2 uv_min, ImVec2 uv_max, ImU32 col, float rounding, ImDrawFlags flags /* = 0 */); // Stateful path API, add points then finish with PathFillConvex() or PathStroke() @@ -3525,28 +3527,29 @@ CIMGUI_API void ImDrawList_PathLineTo(ImDrawList* self, ImVec2 pos); CIMGUI_API void ImDrawList_PathLineToMergeDuplicate(ImDrawList* self, ImVec2 pos); CIMGUI_API void ImDrawList_PathFillConvex(ImDrawList* self, ImU32 col); CIMGUI_API void ImDrawList_PathFillConcave(ImDrawList* self, ImU32 col); -CIMGUI_API void ImDrawList_PathStroke(ImDrawList* self, ImU32 col, ImDrawFlags flags /* = 0 */, float thickness /* = 1.0f */); +CIMGUI_API void ImDrawList_PathStroke(ImDrawList* self, ImU32 col, float thickness /* = 1.0f */, ImDrawFlags flags /* = 0 */); CIMGUI_API void ImDrawList_PathArcTo(ImDrawList* self, ImVec2 center, float radius, float a_min, float a_max, int num_segments /* = 0 */); -CIMGUI_API void ImDrawList_PathArcToFast(ImDrawList* self, ImVec2 center, float radius, int a_min_of_12, int a_max_of_12); // Use precomputed angles for a 12 steps circle -CIMGUI_API void ImDrawList_PathEllipticalArcTo(ImDrawList* self, ImVec2 center, ImVec2 radius, float rot, float a_min, float a_max); // Implied num_segments = 0 +CIMGUI_API void ImDrawList_PathArcToFast(ImDrawList* self, ImVec2 center, float radius, int a_min_of_12, int a_max_of_12); // Use precomputed angles for a 12 steps circle +CIMGUI_API void ImDrawList_PathEllipticalArcTo(ImDrawList* self, ImVec2 center, ImVec2 radius, float rot, float a_min, float a_max); // Implied num_segments = 0 CIMGUI_API void ImDrawList_PathEllipticalArcToEx(ImDrawList* self, ImVec2 center, ImVec2 radius, float rot, float a_min, float a_max, int num_segments /* = 0 */); // Ellipse -CIMGUI_API void ImDrawList_PathBezierCubicCurveTo(ImDrawList* self, ImVec2 p2, ImVec2 p3, ImVec2 p4, int num_segments /* = 0 */); // Cubic Bezier (4 control points) -CIMGUI_API void ImDrawList_PathBezierQuadraticCurveTo(ImDrawList* self, ImVec2 p2, ImVec2 p3, int num_segments /* = 0 */); // Quadratic Bezier (3 control points) +CIMGUI_API void ImDrawList_PathBezierCubicCurveTo(ImDrawList* self, ImVec2 p2, ImVec2 p3, ImVec2 p4, int num_segments /* = 0 */); // Cubic Bezier (4 control points) +CIMGUI_API void ImDrawList_PathBezierQuadraticCurveTo(ImDrawList* self, ImVec2 p2, ImVec2 p3, int num_segments /* = 0 */); // Quadratic Bezier (3 control points) CIMGUI_API void ImDrawList_PathRect(ImDrawList* self, ImVec2 rect_min, ImVec2 rect_max, float rounding /* = 0.0f */, ImDrawFlags flags /* = 0 */); // Advanced: Draw Callbacks // - May be used to alter render state (change sampler, blending, current shader). May be used to emit custom rendering commands (difficult to do correctly, but possible). -// - Use special ImDrawCallback_ResetRenderState callback to instruct backend to reset its render state to the default. +// - Use special GetPlatformIO().DrawCallback_ResetRenderState callback to instruct backend to reset its render state to the default. +// - See other standard callbacks in GetPlatformIO(), which may or not be supported by your backend. // - Your rendering loop must check for 'UserCallback' in ImDrawCmd and call the function instead of rendering triangles. All standard backends are honoring this. // - For some backends, the callback may access selected render-states exposed by the backend in a ImGui_ImplXXXX_RenderState structure pointed to by platform_io.Renderer_RenderState. // - IMPORTANT: please be mindful of the different level of indirection between using size==0 (copying argument) and using size>0 (copying pointed data into a buffer). // - If userdata_size == 0: we copy/store the 'userdata' argument as-is. It will be available unmodified in ImDrawCmd::UserCallbackData during render. // - If userdata_size > 0, we copy/store 'userdata_size' bytes pointed to by 'userdata'. We store them in a buffer stored inside the drawlist. ImDrawCmd::UserCallbackData will point inside that buffer so you have to retrieve data from there. Your callback may need to use ImDrawCmd::UserCallbackDataSize if you expect dynamically-sized data. // - Support for userdata_size > 0 was added in v1.91.4, October 2024. So earlier code always only allowed to copy/store a simple void*. -CIMGUI_API void ImDrawList_AddCallback(ImDrawList* self, ImDrawCallback callback, void* userdata); // Implied userdata_size = 0 -CIMGUI_API void ImDrawList_AddCallbackEx(ImDrawList* self, ImDrawCallback callback, void* userdata, size_t userdata_size /* = 0 */); +CIMGUI_API void ImDrawList_AddCallback(ImDrawList* self, ImDrawCallback callback); // Implied userdata = NULL, userdata_size = 0 +CIMGUI_API void ImDrawList_AddCallbackEx(ImDrawList* self, ImDrawCallback callback, void* userdata /* = NULL */, size_t userdata_size /* = 0 */); // Advanced: Miscellaneous -CIMGUI_API void ImDrawList_AddDrawCmd(ImDrawList* self); // This is useful if you need to forcefully create a new draw call (to allow for dependent rendering / blending). Otherwise primitives are merged into the same draw-call as much as possible -CIMGUI_API ImDrawList* ImDrawList_CloneOutput(const ImDrawList* self); // Create a clone of the CmdBuffer/IdxBuffer/VtxBuffer. For multi-threaded rendering, consider using `imgui_threaded_rendering` from https://github.com/ocornut/imgui_club instead. +CIMGUI_API void ImDrawList_AddDrawCmd(ImDrawList* self); // This is useful if you need to forcefully create a new draw call (to allow for dependent rendering / blending). Otherwise primitives are merged into the same draw-call as much as possible +CIMGUI_API ImDrawList* ImDrawList_CloneOutput(const ImDrawList* self); // Create a clone of the CmdBuffer/IdxBuffer/VtxBuffer. For multi-threaded rendering, consider using `imgui_threaded_rendering` from https://github.com/ocornut/imgui_club instead. // Advanced: Channels // - Use to split render into layers. By switching channels to can render out-of-order (e.g. submit FG primitives before BG primitives) // - Use to minimize draw calls (e.g. if going back-and-forth between multiple clipping rectangles, prefer to append into separate channels then merge at the end) @@ -3561,16 +3564,19 @@ CIMGUI_API void ImDrawList_ChannelsSetCurrent(ImDrawList* self, int n); // - All primitives needs to be reserved via PrimReserve() beforehand. CIMGUI_API void ImDrawList_PrimReserve(ImDrawList* self, int idx_count, int vtx_count); CIMGUI_API void ImDrawList_PrimUnreserve(ImDrawList* self, int idx_count, int vtx_count); -CIMGUI_API void ImDrawList_PrimRect(ImDrawList* self, ImVec2 a, ImVec2 b, ImU32 col); // Axis aligned rectangle (composed of two triangles) +CIMGUI_API void ImDrawList_PrimRect(ImDrawList* self, ImVec2 a, ImVec2 b, ImU32 col); // Axis aligned rectangle (composed of two triangles) CIMGUI_API void ImDrawList_PrimRectUV(ImDrawList* self, ImVec2 a, ImVec2 b, ImVec2 uv_a, ImVec2 uv_b, ImU32 col); CIMGUI_API void ImDrawList_PrimQuadUV(ImDrawList* self, ImVec2 a, ImVec2 b, ImVec2 c, ImVec2 d, ImVec2 uv_a, ImVec2 uv_b, ImVec2 uv_c, ImVec2 uv_d, ImU32 col); CIMGUI_API void ImDrawList_PrimWriteVtx(ImDrawList* self, ImVec2 pos, ImVec2 uv, ImU32 col); CIMGUI_API void ImDrawList_PrimWriteIdx(ImDrawList* self, ImDrawIdx idx); -CIMGUI_API void ImDrawList_PrimVtx(ImDrawList* self, ImVec2 pos, ImVec2 uv, ImU32 col); // Write vertex with unique index +CIMGUI_API void ImDrawList_PrimVtx(ImDrawList* self, ImVec2 pos, ImVec2 uv, ImU32 col); // Write vertex with unique index // Obsolete names #ifndef IMGUI_DISABLE_OBSOLETE_FUNCTIONS -CIMGUI_API void ImDrawList_PushTextureID(ImDrawList* self, ImTextureRef tex_ref); // RENAMED in 1.92.0 -CIMGUI_API void ImDrawList_PopTextureID(ImDrawList* self); // RENAMED in 1.92.0 +CIMGUI_API void ImDrawList_AddRectImDrawFlags(ImDrawList* self, ImVec2 p_min, ImVec2 p_max, ImU32 col, float rounding, ImDrawFlags flags, float thickness); // OBSOLETED in 1.92.8: NEW FUNCTION SIGNATURE HAS 'thickness' AND 'flags' SWAPPED. +CIMGUI_API void ImDrawList_AddPolylineImDrawFlags(ImDrawList* self, const ImVec2* points, int num_points, ImU32 col, ImDrawFlags flags, float thickness); // OBSOLETED in 1.92.8: NEW FUNCTION SIGNATURE HAS 'thickness' AND 'flags' SWAPPED. +CIMGUI_API void ImDrawList_PathStrokeImDrawFlags(ImDrawList* self, ImU32 col, ImDrawFlags flags, float thickness); // OBSOLETED in 1.92.8: NEW FUNCTION SIGNATURE HAS 'thickness' AND 'flags' SWAPPED. +CIMGUI_API void ImDrawList_PushTextureID(ImDrawList* self, ImTextureRef tex_ref); // RENAMED in 1.92.0 +CIMGUI_API void ImDrawList_PopTextureID(ImDrawList* self); // RENAMED in 1.92.0 #endif // #ifndef IMGUI_DISABLE_OBSOLETE_FUNCTIONS // [Internal helpers] CIMGUI_API void ImDrawList__SetDrawListSharedData(ImDrawList* self, ImDrawListSharedData* data); @@ -3879,12 +3885,12 @@ CIMGUI_API ImFont* ImFontAtlas_AddFontFromMemoryTTF(ImFontAtlas* self, CIMGUI_API ImFont* ImFontAtlas_AddFontFromMemoryCompressedTTF(ImFontAtlas* self, const void* compressed_font_data, int compressed_font_data_size, float size_pixels /* = 0.0f */, const ImFontConfig* font_cfg /* = NULL */, const ImWchar* glyph_ranges /* = NULL */); // 'compressed_font_data' still owned by caller. Compress with binary_to_compressed_c.cpp. CIMGUI_API ImFont* ImFontAtlas_AddFontFromMemoryCompressedBase85TTF(ImFontAtlas* self, const char* compressed_font_data_base85, float size_pixels /* = 0.0f */, const ImFontConfig* font_cfg /* = NULL */, const ImWchar* glyph_ranges /* = NULL */); // 'compressed_font_data_base85' still owned by caller. Compress with binary_to_compressed_c.cpp with -base85 parameter. CIMGUI_API void ImFontAtlas_RemoveFont(ImFontAtlas* self, ImFont* font); -CIMGUI_API void ImFontAtlas_Clear(ImFontAtlas* self); // Clear everything (input fonts, output glyphs/textures). +CIMGUI_API void ImFontAtlas_Clear(ImFontAtlas* self); // Clear everything (fonts + textures). Don't call mid-frame! +CIMGUI_API void ImFontAtlas_ClearFonts(ImFontAtlas* self); // Clear input+output font data/glyphs. You can call this mid-frame if you load new fonts afterwards! CIMGUI_API void ImFontAtlas_CompactCache(ImFontAtlas* self); // Compact cached glyphs and texture. CIMGUI_API void ImFontAtlas_SetFontLoader(ImFontAtlas* self, const ImFontLoader* font_loader); // Change font loader at runtime. // As we are transitioning toward a new font system, we expect to obsolete those soon: CIMGUI_API void ImFontAtlas_ClearInputData(ImFontAtlas* self); // [OBSOLETE] Clear input data (all ImFontConfig structures including sizes, TTF data, glyph ranges, etc.) = all the data used to build the texture and fonts. -CIMGUI_API void ImFontAtlas_ClearFonts(ImFontAtlas* self); // [OBSOLETE] Clear input+output font data (same as ClearInputData() + glyphs storage, UV coordinates). CIMGUI_API void ImFontAtlas_ClearTexData(ImFontAtlas* self); // [OBSOLETE] Clear CPU-side copy of the texture data. Saves RAM once the texture has been copied to graphics memory. #ifndef IMGUI_DISABLE_OBSOLETE_FUNCTIONS // Legacy path for build atlas + retrieving pixel data. @@ -4165,35 +4171,41 @@ struct ImGuiPlatformIO_t // Optional: Access OS clipboard // (default to use native Win32 clipboard on Windows, otherwise uses a private clipboard. Override to access OS clipboard on other architectures) - const char* (*Platform_GetClipboardTextFn)(ImGuiContext* ctx); // Should return NULL on failure (e.g. clipboard data is not text). + const char* (*Platform_GetClipboardTextFn)(ImGuiContext* ctx); // Should return NULL on failure (e.g. clipboard data is not text). void (*Platform_SetClipboardTextFn)(ImGuiContext* ctx, const char* text); - void* Platform_ClipboardUserData; + void* Platform_ClipboardUserData; // Optional: Open link/folder/file in OS Shell // (default to use ShellExecuteW() on Windows, system() on Linux/Mac. expected to return false on failure, but some platforms may always return true) bool (*Platform_OpenInShellFn)(ImGuiContext* ctx, const char* path); - void* Platform_OpenInShellUserData; + void* Platform_OpenInShellUserData; // Optional: Notify OS Input Method Editor of the screen position of your cursor for text input position (e.g. when using Japanese/Chinese IME on Windows) // (default to use native imm32 api on Windows) void (*Platform_SetImeDataFn)(ImGuiContext* ctx, ImGuiViewport* viewport, ImGuiPlatformImeData* data); - void* Platform_ImeUserData; + void* Platform_ImeUserData; //void (*SetPlatformImeDataFn)(ImGuiViewport* viewport, ImGuiPlatformImeData* data); // [Renamed to platform_io.PlatformSetImeDataFn in 1.91.1] // Optional: Platform locale // [Experimental] Configure decimal point e.g. '.' or ',' useful for some languages (e.g. German), generally pulled from *localeconv()->decimal_point - ImWchar Platform_LocaleDecimalPoint; // '.' + ImWchar Platform_LocaleDecimalPoint; // '.' //------------------------------------------------------------------ // Input - Interface with Renderer Backend //------------------------------------------------------------------ // Optional: Maximum texture size supported by renderer (used to adjust how we size textures). 0 if not known. - int Renderer_TextureMaxWidth; - int Renderer_TextureMaxHeight; + int Renderer_TextureMaxWidth; + int Renderer_TextureMaxHeight; // Written by some backends during ImGui_ImplXXXX_RenderDrawData() call to point backend_specific ImGui_ImplXXXX_RenderState* structure. - void* Renderer_RenderState; + void* Renderer_RenderState; + + // Standard draw callbacks provided by renderer backend. + ImDrawCallback DrawCallback_ResetRenderState; // Request to reset the graphics/render state. + ImDrawCallback DrawCallback_SetSamplerLinear; // Request backend to set texture sampling to Linear. + ImDrawCallback DrawCallback_SetSamplerNearest; // Request backend to set texture sampling to Nearest/Point. + //ImDrawCallback DrawCallback_SetSamplerCustom; // Request backend to set texture sampling using Backend Specific data. //------------------------------------------------------------------ // Input - Interface with Platform & Renderer backends for Multi-Viewport support @@ -4212,38 +4224,38 @@ struct ImGuiPlatformIO_t // Platform functions are typically called _before_ their Renderer counterpart, apart from Destroy which are called the other way. // Platform Backend functions (e.g. Win32, GLFW, SDL) ------------------- Called by ----- - void (*Platform_CreateWindow)(ImGuiViewport* vp); // . . U . . // Create a new platform window for the given viewport - void (*Platform_DestroyWindow)(ImGuiViewport* vp); // N . U . D // - void (*Platform_ShowWindow)(ImGuiViewport* vp); // . . U . . // Newly created windows are initially hidden so SetWindowPos/Size/Title can be called on them before showing the window - void (*Platform_SetWindowPos)(ImGuiViewport* vp, ImVec2 pos); // . . U . . // Set platform window position (given the upper-left corner of client area) - ImVec2 (*Platform_GetWindowPos)(ImGuiViewport* vp); // N . . . . // (Use ImGuiPlatformIO_SetPlatform_GetWindowPos() to set this from C, otherwise you will likely encounter stack corruption) - void (*Platform_SetWindowSize)(ImGuiViewport* vp, ImVec2 size); // . . U . . // Set platform window client area size (ignoring OS decorations such as OS title bar etc.) - ImVec2 (*Platform_GetWindowSize)(ImGuiViewport* vp); // N . . . . // Get platform window client area size (Use ImGuiPlatformIO_SetPlatform_GetWindowSize() to set this from C, otherwise you will likely encounter stack corruption) - ImVec2 (*Platform_GetWindowFramebufferScale)(ImGuiViewport* vp); // N . . . . // Return viewport density. Always 1,1 on Windows, often 2,2 on Retina display on macOS/iOS. MUST BE INTEGER VALUES. (Use ImGuiPlatformIO_SetPlatform_GetWindowFramebufferScale() to set this from C, otherwise you will likely encounter stack corruption) - void (*Platform_SetWindowFocus)(ImGuiViewport* vp); // N . . . . // Move window to front and set input focus - bool (*Platform_GetWindowFocus)(ImGuiViewport* vp); // . . U . . // - bool (*Platform_GetWindowMinimized)(ImGuiViewport* vp); // N . . . . // Get platform window minimized state. When minimized, we generally won't attempt to get/set size and contents will be culled more easily - void (*Platform_SetWindowTitle)(ImGuiViewport* vp, const char* str); // . . U . . // Set platform window title (given an UTF-8 string) - void (*Platform_SetWindowAlpha)(ImGuiViewport* vp, float alpha); // . . U . . // (Optional) Setup global transparency (not per-pixel transparency) - void (*Platform_UpdateWindow)(ImGuiViewport* vp); // . . U . . // (Optional) Called by UpdatePlatformWindows(). Optional hook to allow the platform backend from doing general book-keeping every frame. - void (*Platform_RenderWindow)(ImGuiViewport* vp, void* render_arg); // . . . R . // (Optional) Main rendering (platform side! This is often unused, or just setting a "current" context for OpenGL bindings). 'render_arg' is the value passed to RenderPlatformWindowsDefault(). - void (*Platform_SwapBuffers)(ImGuiViewport* vp, void* render_arg); // . . . R . // (Optional) Call Present/SwapBuffers (platform side! This is often unused!). 'render_arg' is the value passed to RenderPlatformWindowsDefault(). - float (*Platform_GetWindowDpiScale)(ImGuiViewport* vp); // N . . . . // (Optional) [BETA] FIXME-DPI: DPI handling: Return DPI scale for this viewport. 1.0f = 96 DPI. - void (*Platform_OnChangedViewport)(ImGuiViewport* vp); // . F . . . // (Optional) [BETA] FIXME-DPI: DPI handling: Called during Begin() every time the viewport we are outputting into changes, so backend has a chance to swap fonts to adjust style. - ImVec4 (*Platform_GetWindowWorkAreaInsets)(ImGuiViewport* vp); // N . . . . // (Optional) [BETA] Get initial work area inset for the viewport (won't be covered by main menu bar, dockspace over viewport etc.). Default to (0,0),(0,0). 'safeAreaInsets' in iOS land, 'DisplayCutout' in Android land. (Use ImGuiPlatformIO_SetPlatform_GetWindowWorkAreaInsets() to set this from C, otherwise you will likely encounter stack corruption) + void (*Platform_CreateWindow)(ImGuiViewport* vp); // . . U . . // Create a new platform window for the given viewport + void (*Platform_DestroyWindow)(ImGuiViewport* vp); // N . U . D // + void (*Platform_ShowWindow)(ImGuiViewport* vp); // . . U . . // Newly created windows are initially hidden so SetWindowPos/Size/Title can be called on them before showing the window + void (*Platform_SetWindowPos)(ImGuiViewport* vp, ImVec2 pos); // . . U . . // Set platform window position (given the upper-left corner of client area) + ImVec2 (*Platform_GetWindowPos)(ImGuiViewport* vp); // N . . . . // (Use ImGuiPlatformIO_SetPlatform_GetWindowPos() to set this from C, otherwise you will likely encounter stack corruption) + void (*Platform_SetWindowSize)(ImGuiViewport* vp, ImVec2 size); // . . U . . // Set platform window client area size (ignoring OS decorations such as OS title bar etc.) + ImVec2 (*Platform_GetWindowSize)(ImGuiViewport* vp); // N . . . . // Get platform window client area size (Use ImGuiPlatformIO_SetPlatform_GetWindowSize() to set this from C, otherwise you will likely encounter stack corruption) + ImVec2 (*Platform_GetWindowFramebufferScale)(ImGuiViewport* vp); // N . . . . // Return viewport density. Always 1,1 on Windows, often 2,2 on Retina display on macOS/iOS. MUST BE INTEGER VALUES. (Use ImGuiPlatformIO_SetPlatform_GetWindowFramebufferScale() to set this from C, otherwise you will likely encounter stack corruption) + void (*Platform_SetWindowFocus)(ImGuiViewport* vp); // N . . . . // Move window to front and set input focus + bool (*Platform_GetWindowFocus)(ImGuiViewport* vp); // . . U . . // + bool (*Platform_GetWindowMinimized)(ImGuiViewport* vp); // N . . . . // Get platform window minimized state. When minimized, we generally won't attempt to get/set size and contents will be culled more easily + void (*Platform_SetWindowTitle)(ImGuiViewport* vp, const char* str); // . . U . . // Set platform window title (given an UTF-8 string) + void (*Platform_SetWindowAlpha)(ImGuiViewport* vp, float alpha); // . . U . . // (Optional) Setup global transparency (not per-pixel transparency) + void (*Platform_UpdateWindow)(ImGuiViewport* vp); // . . U . . // (Optional) Called by UpdatePlatformWindows(). Optional hook to allow the platform backend from doing general book-keeping every frame. + void (*Platform_RenderWindow)(ImGuiViewport* vp, void* render_arg); // . . . R . // (Optional) Main rendering (platform side! This is often unused, or just setting a "current" context for OpenGL bindings). 'render_arg' is the value passed to RenderPlatformWindowsDefault(). + void (*Platform_SwapBuffers)(ImGuiViewport* vp, void* render_arg); // . . . R . // (Optional) Call Present/SwapBuffers (platform side! This is often unused!). 'render_arg' is the value passed to RenderPlatformWindowsDefault(). + float (*Platform_GetWindowDpiScale)(ImGuiViewport* vp); // N . . . . // (Optional) [BETA] FIXME-DPI: DPI handling: Return DPI scale for this viewport. 1.0f = 96 DPI. + void (*Platform_OnChangedViewport)(ImGuiViewport* vp); // . F . . . // (Optional) [BETA] FIXME-DPI: DPI handling: Called during Begin() every time the viewport we are outputting into changes, so backend has a chance to swap fonts to adjust style. + ImVec4 (*Platform_GetWindowWorkAreaInsets)(ImGuiViewport* vp); // N . . . . // (Optional) [BETA] Get initial work area inset for the viewport (won't be covered by main menu bar, dockspace over viewport etc.). Default to (0,0),(0,0). 'safeAreaInsets' in iOS land, 'DisplayCutout' in Android land. (Use ImGuiPlatformIO_SetPlatform_GetWindowWorkAreaInsets() to set this from C, otherwise you will likely encounter stack corruption) int (*Platform_CreateVkSurface)(ImGuiViewport* vp, ImU64 vk_inst, const void* vk_allocators, ImU64* out_vk_surface); // (Optional) For a Vulkan Renderer to call into Platform code (since the surface creation needs to tie them both). // Renderer Backend functions (e.g. DirectX, OpenGL, Vulkan) ------------ Called by ----- - void (*Renderer_CreateWindow)(ImGuiViewport* vp); // . . U . . // Create swap chain, frame buffers etc. (called after Platform_CreateWindow) - void (*Renderer_DestroyWindow)(ImGuiViewport* vp); // N . U . D // Destroy swap chain, frame buffers etc. (called before Platform_DestroyWindow) - void (*Renderer_SetWindowSize)(ImGuiViewport* vp, ImVec2 size); // . . U . . // Resize swap chain, frame buffers etc. (called after Platform_SetWindowSize) - void (*Renderer_RenderWindow)(ImGuiViewport* vp, void* render_arg); // . . . R . // (Optional) Clear framebuffer, setup render target, then render the viewport->DrawData. 'render_arg' is the value passed to RenderPlatformWindowsDefault(). - void (*Renderer_SwapBuffers)(ImGuiViewport* vp, void* render_arg); // . . . R . // (Optional) Call Present/SwapBuffers. 'render_arg' is the value passed to RenderPlatformWindowsDefault(). + void (*Renderer_CreateWindow)(ImGuiViewport* vp); // . . U . . // Create swap chain, frame buffers etc. (called after Platform_CreateWindow) + void (*Renderer_DestroyWindow)(ImGuiViewport* vp); // N . U . D // Destroy swap chain, frame buffers etc. (called before Platform_DestroyWindow) + void (*Renderer_SetWindowSize)(ImGuiViewport* vp, ImVec2 size); // . . U . . // Resize swap chain, frame buffers etc. (called after Platform_SetWindowSize) + void (*Renderer_RenderWindow)(ImGuiViewport* vp, void* render_arg); // . . . R . // (Optional) Clear framebuffer, setup render target, then render the viewport->DrawData. 'render_arg' is the value passed to RenderPlatformWindowsDefault(). + void (*Renderer_SwapBuffers)(ImGuiViewport* vp, void* render_arg); // . . . R . // (Optional) Call Present/SwapBuffers. 'render_arg' is the value passed to RenderPlatformWindowsDefault(). // (Optional) Monitor list // - Updated by: app/backend. Update every frame to dynamically support changing monitor or DPI configuration. // - Used by: dear imgui to query DPI info, clamp popups/tooltips within same monitor and not have them straddle monitors. - ImVector_ImGuiPlatformMonitor Monitors; + ImVector_ImGuiPlatformMonitor Monitors; //------------------------------------------------------------------ // Output @@ -4251,11 +4263,11 @@ struct ImGuiPlatformIO_t // Textures list (the list is updated by calling ImGui::EndFrame or ImGui::Render) // The ImGui_ImplXXXX_RenderDrawData() function of each backend generally access this via ImDrawData::Textures which points to this. The array is available here mostly because backends will want to destroy textures on shutdown. - ImVector_ImTextureDataPtr Textures; // List of textures used by Dear ImGui (most often 1) + contents of external texture list is automatically appended into this. + ImVector_ImTextureDataPtr Textures; // List of textures used by Dear ImGui (most often 1) + contents of external texture list is automatically appended into this. // Viewports list (the list is updated by calling ImGui::EndFrame or ImGui::Render) // (in the future we will attempt to organize this feature to remove the need for a "main viewport") - ImVector_ImGuiViewportPtr Viewports; // Main viewports, followed by all secondary viewports. + ImVector_ImGuiViewportPtr Viewports; // Main viewports, followed by all secondary viewports. //------------------------------------------------------------------ // Functions @@ -4381,6 +4393,8 @@ CIMGUI_API ImVec2 ImGui_GetWindowContentRegionMax(void); // Content boundaries //static inline float GetWindowFontSize() { return GetFontSize(); } // OBSOLETED in 1.48 //static inline void SetScrollPosHere() { SetScrollHere(); } // OBSOLETED in 1.42 +#define ImDrawCallback_ResetRenderState (ImDrawCallback)(-8) // OBSOLETED in 1.92.8: Use ImGui::GetPlatformIO().DrawCallback_ResetRenderState + //-- OBSOLETED in 1.92.0: ImFontAtlasCustomRect becomes ImTextureRect // - ImFontAtlasCustomRect::X,Y --> ImTextureRect::x,y // - ImFontAtlasCustomRect::Width,Height --> ImTextureRect::w,h diff --git a/Framework/ThirdParty/source-libraries/cimgui/cimgui_extra b/Framework/ThirdParty/source-libraries/cimgui/cimgui_extra index ebc5ebb3..287d8183 160000 --- a/Framework/ThirdParty/source-libraries/cimgui/cimgui_extra +++ b/Framework/ThirdParty/source-libraries/cimgui/cimgui_extra @@ -1 +1 @@ -Subproject commit ebc5ebb3937b5788ebe8a9fbed42b51bd5cbd116 +Subproject commit 287d8183a0dcc7eb94d2bf10201506860b511105 diff --git a/Framework/ThirdParty/source-libraries/parallel-hashmap b/Framework/ThirdParty/source-libraries/parallel-hashmap index b76a9e90..8bd6ea1e 160000 --- a/Framework/ThirdParty/source-libraries/parallel-hashmap +++ b/Framework/ThirdParty/source-libraries/parallel-hashmap @@ -1 +1 @@ -Subproject commit b76a9e9019cca28a387c52a649d8a4180599de86 +Subproject commit 8bd6ea1e56271e44af270eeb5c915399e194d89d diff --git a/Framework/ThirdParty/source-libraries/urll b/Framework/ThirdParty/source-libraries/urll index 6ca54250..af49103c 160000 --- a/Framework/ThirdParty/source-libraries/urll +++ b/Framework/ThirdParty/source-libraries/urll @@ -1 +1 @@ -Subproject commit 6ca5425091bef1fb106c785e05b8de2b1d6c2ccb +Subproject commit af49103cbe8b2732fca394b0917cda556dcf6af5 diff --git a/Framework/ThirdParty/vulkan-headers b/Framework/ThirdParty/vulkan-headers index f6a6f7ab..015e25c3 160000 --- a/Framework/ThirdParty/vulkan-headers +++ b/Framework/ThirdParty/vulkan-headers @@ -1 +1 @@ -Subproject commit f6a6f7ab165cedbfa2a7d0c93fe27a2d01ce09c8 +Subproject commit 015e25c3c91b70eb1a754d36fb14c4ba6ad9b0b9 diff --git a/UVKBuildTool b/UVKBuildTool index b25a0a12..3ab094f4 160000 --- a/UVKBuildTool +++ b/UVKBuildTool @@ -1 +1 @@ -Subproject commit b25a0a12cb78665ea6575fc05416bdb292836edb +Subproject commit 3ab094f47513b2f05e38055f6ca3d3787b12d24b