Skip to content

Releases: HexaEngine/Hexa.NET.ImGui

2.2.4 Dear ImGui 1.91.6 + static link support

13 Dec 14:20
2240c48
Compare
Choose a tag to compare

Hexa.NET.ImGui Changes

  • Updated to Dear ImGui 1.91.6
  • Fixed #31
  • Added static link support.

New Sponsors

πŸŽ‰ Huge thanks to our newest supporter:
@TheSameCat2


Forwarded from https://github.com/ocornut/imgui/releases/tag/v1.91.6 (removed @ to avoid spam)

Changes (since v1.91.5)

This is an unusual small release. It is mostly motivated by the fact that the Win32 backend in docking branch of v1.91.5 had a crash when running multiple program instances. Most of the work done this month is part of a larger feature I will talk about later :)

Breaking Changes:

  • Backends: DX12: Changed ImGui_ImplDX12_Init() signature to take a ImGui_ImplDX12_InitInfo struct.
    • Using the new API, application is now required to pass function pointers to allocate/free SRV Descriptors.
    • We provide convenience legacy fields to pass a single descriptor, matching the old API, but upcoming features will want multiple.
    • Legacy ImGui_ImplDX12_Init() signature is still supported (will obsolete).
  • Misc: changed CRC32 table from CRC32-adler to CRC32c polynomial in order to be compatible with the result of SSE 4.2 instructions. (#8169, #4933) [Teselka]
    • As a result, some .ini data may be partially lost when storing checksums (docking and tables information particularly).
    • Because some users have crafted and storing .ini data as a way to workaround limitations of the docking API, we are providing a #define IMGUI_USE_LEGACY_CRC32_ADLER compile-time option to keep using old CRC32 tables if you cannot afford invalidating old .ini data.

Other changes:

  • InputText: added ImGuiInputTextFlags_ElideLeft to elide left side and ensure right side of contents is visible when whole text is not fitting (useful for paths/filenames). (#1442, #1440, #4391, #7208, #8216) [kucoman, ocornut]
  • InputText: reactivating last activated InputText() doesn't restore horizontal scrolling (which was disabled during deactivation anyway).
  • Error Handling: fixed cases where recoverable error handling would crash when processing errors outside of the NewFrame()..EndFrame() scope. (#1651)
  • Tables: fixed SetNextWindowScroll() value being ignored by BeginTable() during the first frame or when scrolling flags have changed. (#8196)
  • Misc: changed embedded ProggyClean encoding to save a bit of binary space (~12kb to 9.5kb).
  • Misc: added IMGUI_DISABLE_DEFAULT_FONT to strip embedded font from binary. (#8161) [demonese]
  • Demo: example tree used by Property Editor & Selection demos properly freed on application closure. (#8158) [Legulysse]
  • Fonts: fixed AddCustomRect() not being packed with TexGlyphPadding + not accounted for surface area used to determine best-guess texture size. (#8107) [YarikTH, ocornut]
  • Misc: use SSE 4.2 crc32 instructions when available. (#8169, #4933) [Teselka]
  • Tools: binary_to_compressed_c: added -u8/-u32/-base85 export options.
  • Backends: DirectX12: Let user specifies the DepthStencilView format by setting ImGui_ImplDX12_InitInfo::DSVFormat. (#8217) [bmarques1995]
  • Backends: Vulkan: Make user-provided descriptor pool optional. As a convenience, when setting init_info->DescriptorPoolSize then the backend will create and manage one itself. (#8172, #4867) [zeux]
  • Examples: Win32+DX12: Using a basic free-list allocator to manage multiple SRV descriptors.

Changes from 1.91.5 to 1.91.6 in the Docking branch:

  • Backends: Win32: Fixed a crash/regression in 1.91.5 when running two processes with multi-viewports (was using GetProp() to query property which could have belonged to another process). (#8162, #8069) [sammyfreg, ocornut]
  • Docking: Added an assert to clarify that ImGuiDockNodeFlags_CentralNode flag (from internals) does not need to be passed to DockSpace(), as it causes general havoc. (#8145)

2.2.2 .NET 9.0 and 6.0 support.

14 Nov 14:12
Compare
Choose a tag to compare
  • No API changes.
  • Re-targeted to net9.0 net8.0 net7.0 net6.0 netstandard2.1 netstandard2.0

Full Changelog: 2.2.1...2.2.2

2.2.1 Hotfix for Win32 and android. (No api changes)

11 Nov 01:33
Compare
Choose a tag to compare
  • No API changes.
  • Added missing function from ImGui_ImplWin32
  • Hopefully fixed android native lib packing with build targets.

Full Changelog: 2.2.0...2.2.1

2.2.0 Dear ImGui 1.91.5 + new backends.

09 Nov 18:19
9f3ed0d
Compare
Choose a tag to compare

Hexa.NET.ImGui Changes

  • Updated to Dear ImGui 1.91.5
  • Added backends for D3D10 and D3D9. #25 #17
  • Added support for android and added an example. #17
  • Fixes issues with MacOS backends #24

New Sponsors

πŸŽ‰ Huge thanks to our newest supporters:
@qian-o, @NotNite and Mr Villa


Forwarded from https://github.com/ocornut/imgui/releases/tag/v1.91.5 (removed @ to avoid spam)

Changes (since v1.91.4)

Breaking Changes:

  • Commented out pre-1.87 IO system (equivalent to using IMGUI_DISABLE_OBSOLETE_KEYIO or IMGUI_DISABLE_OBSOLETE_FUNCTIONS before).
    • io.KeyMap[] and io.KeysDown[] are removed (obsoleted February 2022).
    • io.NavInputs[] and ImGuiNavInput enum are removed (obsoleted July 2022).
    • Pre-1.87 backends are not supported:
      • backends need to call io.AddKeyEvent(), io.AddMouseEvent() instead of writing to io.KeysDown[], io.MouseDown[] fields.
      • backends need to call io.AddKeyAnalogEvent() for gamepad values instead of writing to io.NavInputs[] fields.
    • For more references:
    • If you have trouble updating a very old codebase using legacy backend-specific key codes:
      consider updating to 1.91.4 first, then #define IMGUI_DISABLE_OBSOLETE_KEYIO, then update to latest.
    • Obsoleted ImGuiKey_COUNT (it was unusually error-prone/misleading since valid keys don't start at 0). Probably use ImGuiKey_NamedKey_BEGIN/ImGuiKey_NamedKey_END instead?
  • Fonts: removed const qualifiers from most font functions in prevision for upcoming fonts improvements.

Other changes:

  • Selectable: selected Selectable use ImGuiCol_Header instead of an arbitrary lerp between _Header and _HeaderHovered which was introduced v1.91 (#8106, #1861)
  • Buttons: using ImGuiItemFlags_ButtonRepeat makes default button behavior use _PressedOnClick instead of _PressedOnClickRelease when unspecified.
  • InputText: fixed a bug (regression in 1.91.2) where modifying text buffer within a callback would sometimes prevents further appending to the buffer.
  • Tabs, Style: made ImGuiCol_TabDimmedSelectedOverline alpha 0 (not visible) in default styles as the current look is not right (but ImGuiCol_TabSelectedOverline stays the same).
  • Log/Capture: added experimental io.ConfigWindowsCopyContentsWithCtrlC option to automatically copy window contents into clipboard using CTRL+C. This is experimental because (1) it currently breaks on nested Begin/End, (2) text output quality varies, and (3) text output comes in submission order rather than spatial order.
  • Log/Capture: better decorating of BeginMenu() and TabItem() output.
  • Log/Capture: a non terminated log ends automatically in the window which called it.
  • imgui_freetype: Fixed a crash in build font atlas when using merged fonts and the first font in a merged set has no loaded glyph. (#8081)
  • Backends: DX12: Unmap() call specify written range. The range is informational and may be used by debug tools.
  • Backends: SDL2: Replace SDL_Vulkan_GetDrawableSize() forward declaration with the actual include. (#8095, #7967, #3190) [sev-]
  • Backends: SDL2, SDL3: SDL_EVENT_MOUSE_WHEEL event doesn't require dividing by 100.0f on Emscripten target. (#4019, #6096, #1463)
  • Examples: SDL3+Vulkan: Added example. (#8084, #8085)
  • Examples: Android+OpenGL: Using ALooper_pollOnce() instead of ALooper_pollAll() which has been deprecated. (#8013) [feather179]

Changes from 1.91.4 to 1.91.5 in the Docking branch:

  • Backends: GLFW: added Linux workaround for spurious mouse up events emitted while dragging and creating new viewports. Generally they would be interrupting a dragging operations. (#3158, #7733, #7922) [rokups, ocornut]
  • Docking: fixed using ImGuiDockNodeFlags_KeepAliveOnly with DockSpaceOverViewport(): the normally invisible space did erroneously claim mouse hover and could be potentially focused. (#8125) [kcbanner]

How the output of io.ConfigWindowsCopyContentsWithCtrlC looks:

window ctrl-c (3)

2.1.10 FreeType support and api improvements.

27 Oct 20:50
Compare
Choose a tag to compare
  • Added missing overloads for ImGui InputText and related. (see #23)
  • Optimized InputText return decoding. (see #23)
  • Added FreeType support for colored emoji fonts (see #22)

Full Changelog: 2.1.9...2.1.10

2.1.9 Dear ImGui 1.91.4

20 Oct 14:22
Compare
Choose a tag to compare

Hexa.NET.ImGui Changes

  • Updated to Dear ImGui 1.91.4.
  • Added Native Backends. (incl. Win32, D3D11, D3D12, OpenGL2, OpenGL3, Vulkan and extra packages for SDL2 and GLFW) (see #17)

Forwarded from https://github.com/ocornut/imgui/releases/tag/v1.91.4 (removed @ to avoid spam)

Changes (since v1.91.3)

Breaking Changes:

  • Style: renamed ImGuiCol_NavHighlight to ImGuiCol_NavCursor, for consistency with newly exposed and reworked features. Kept inline redirection enum (will obsolete).
  • The typedef for ImTextureID now defaults to ImU64 instead of void*. (#1641)
    • This removes the requirement to redefine it for backends which are e.g. storing descriptor sets or other 64-bits structures when building on 32-bits archs (namely our DX12 and Vulkan backends). It therefore simplify various building scripts/helpers.
    • You may have compile-time warnings if you were casting to void* instead of ImTextureID when passing your types to functions taking ImTextureID values, e.g. ImGui::Image(). In doubt it is almost always better to do an intermediate intptr_t cast, since it allows casting any pointer/integer type without warning:
      • May warn: ImGui::Image((void*)MyTextureData, ...);
      • May warn: ImGui::Image((void*)(intptr_t)MyTextureData, ...);
      • Won't warn: ImGui::Image((ImTextureID)(intptr_t)MyTextureData), ...);
    • Note that you can always #define ImTextureID to be your own high-level structures (with dedicated constructors and extra render parameters) if you like.
  • IO: moved ImGuiConfigFlags_NavEnableSetMousePos to standalone io.ConfigNavMoveSetMousePos bool.
  • IO: moved ImGuiConfigFlags_NavNoCaptureKeyboard to standalone io.ConfigNavCaptureKeyboard bool (note the inverted value!). (#2517, #2009). Kept legacy names (will obsolete) + code that copies settings once the first time. Dynamically changing the old value won't work. Switch to using the new value!

Other changes:

  • IO: added void* platform_io.Renderer_RenderState which is set during the ImGui_ImplXXXX_RenderDrawData() of standard backends to expose selected render states to your draw callbacks. (#6969, #5834, #7468, #3590)
  • IO: io.WantCaptureKeyboard is never set when ImGuiConfigFlags_NoKeyboard is enabled. (#4921)
  • Error Handling: turned a few more functions into recoverable errors. (#1651)
  • Nav (Keyboard/Gamepad navigation):
    • Nav: added io.ConfigNavCursorVisibleAuto and io.ConfigNavCursorVisibleAlways to configure visibility of navigation cursor. (#1074, #2048, #7237, #8059, #3200, #787)
      • Set io.ConfigNavCursorVisibleAuto = true (default) to enable automatic toggling of cursor visibility (mouse click hide the cursor, arrow keys makes it visible).
      • Set io.ConfigNavCursorVisibleAlways to keep cursor always visible.
    • Nav: added NavSetCursorVisible(bool visible) function to manipulate visibility of navigation cursor (e.g. set default state, or after some actions). (#1074, #2048, #7237, #8059)
    • Nav: added io.ConfigNavEscapeClearFocusItem and io.ConfigNavEscapeClearFocusWindow to change how pressing Escape affects navigation. (#8059, #2048, #1074, #3200)
      • Set io.ConfigNavEscapeClearFocusItem = true (default) to clear focused item and highlight.
      • Set io.ConfigNavEscapeClearFocusItem = false for Escape to not have an effect.
      • Set io.ConfigNavEscapeClearFocusWindow = true to completely unfocus the Dear ImGui window, is for some reason your app relies on imgui focus to take other decisions.
    • Nav: pressing Escape to hide the navigation cursor doesn't clear current location, so it may be restored when Ctrl+Tabbing back into the same window later.
    • Nav: fixed Ctrl+Tab initiated with no focused window from skipping the top-most window. (#3200)
    • Nav: navigation cursor is not rendered for items with ImGuiItemFlags_NoNav. Can be relevant when e.g activating a _NoNav item with mouse, then Ctrl+Tabbing back and forth.
  • Disabled: clicking a disabled item focuses parent window. (#8064)
  • InvisibleButton, Nav: fixed an issue when InvisibleButton() would be navigable into but not display navigation highlight. Properly navigation on it by default. (#8057)
  • InvisibleButton: added ImGuiButtonFlags_EnableNav to enable navigation over the invisible button. (#8057)
  • Tooltips: fixed incorrect tooltip positioning when using keyboard/gamepad navigation (1.91.3 regression). (#8036)
  • DrawList: AddCallback() added an optional size parameter allowing to copy and store any amount of user data for usage by callbacks: (#6969, #4770, #7665)
    • If userdata_size == 0: we copy/store the userdata argument as-is (existing behavior). It will be available unmodified in ImDrawCmd::UserCallbackData during render.
    • If userdata_size > 0, we copy/store userdata_size bytes pointed to by userdata (new behavior). 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.
    • Note that we use a raw type-less copy.
  • Tables: fixed initial auto-sizing issue with synced-instances. (#8045, #7218)
  • InputText: fixed an issue with not declaring ownership of Delete/Backspace/Arrow keys, preventing use of external shortcuts that are not guarded by an ActiveId check. (#8048) [geertbleyen]
  • InputText: ensure mouse cursor shape is set regardless of whether keyboard mode is enabled or not. (#6417)
  • InputScalar: added an assert to clarify that ImGuiInputTextFlags_EnterReturnsTrue is not
    supported by InputFloat()/InputInt()/InputScalar() etc. widgets. It actually never was. (#8065, #3946)
  • imgui_freetype: Added support for plutosvg (as an alternative to lunasvg) to render OpenType SVG fonts. Requires defining IMGUI_ENABLE_FREETYPE_PLUTOSVG along with IMGUI_ENABLE_FREETYPE. Providing headers/librairies for plutosvg + plutovg is up to you (see #7927 for help). (#7927, #7187, #6591, #6607) [pthom]
  • Backends: DX11, DX12, SDLRenderer2/3. Vulkan, WGPU: expose selected state in ImGui_ImplXXXX_RenderState structures during render loop, for user draw callbacks. (#6969, #5834, #7468, #3590)
  • Backends: DX9, DX10, DX11, DX12, OpenGL, Vulkan, WGPU: Changed default texture sampler to Clamp instead of Repeat/Wrap. (#7468, #7511, #5999, #5502, #7230)

Changes from 1.91.3 to 1.91.4 in the Docking branch:

  • Backends: changed all backends to allow enabling ImGuiConfigFlags_ViewportsEnable after initialization. (#5371)

2.1.7 Dear ImGui 1.91.3

11 Oct 14:51
Compare
Choose a tag to compare

Hexa.NET.ImGui Changes

  • Updated to Dear ImGui 1.91.3.
  • Moved internal functions to ImGuiP.XXX for better clarity to avoid misuse/unintentional use of the internal API. (see #16)
  • Added aggressive inlining for native methods to improve performance.
  • Bug fix for FunctionTable generation which generated empty spaces. (nothing serious)

New Sponsor

πŸŽ‰ A big thank you to @Doprez for their generous support! Their contributions have been invaluable in helping this project thrive.


Forwarded from https://github.com/ocornut/imgui/releases/tag/v1.91.3 (removed @ to avoid spam)

Changes (since v1.91.2)

Breaking Changes:

  • Drags: treat v_min==v_max as a valid clamping range when != 0.0f. Zero is still a special value due to legacy reasons, unless using ImGuiSliderFlags_ClampZeroRange. (#7968, #3361, #76)
  • Drags: extended behavior of ImGuiSliderFlags_AlwaysClamp to include ImGuiSliderFlags_ClampZeroRange. It considers v_min==v_max==0.0f as a valid clamping range (aka edits not allowed). Although unlikely, it you wish to only clamp on text input but want v_min==v_max==0.0f to mean unclamped drags, you can use _ClampOnInput instead of _AlwaysClamp. (#7968, #3361, #76)

Other changes:

  • Error Handling: Enabled/improved error recovery systems. (#1651, #5654)
    • Read https://github.com/ocornut/imgui/wiki/Error-Handling for a bit more details.
    • Error recovery is provided as a way to facilitate:
      • Recovery after a programming error. Native code or scripting language (the later tends to facilitate iterating on code while running).
      • Recovery after running an exception handler or any error processing which may skip code after an error has been detected.
    • Error recovery is not perfect nor guaranteed! It is a feature to ease development.
      You not are not supposed to rely on it in the course of a normal application run.
    • Functions that support error recovery are using IM_ASSERT_USER_ERROR() instead of IM_ASSERT().
    • By design, we do not allow error recovery to be 100% silent. One of the options needs to be enabled!
    • Possible usage: facilitate recovery from errors triggered from a scripting language or after specific exceptions handlers. Surface errors to programmers in less aggressive ways.
    • Always ensure that on programmers seats you have at minimum Asserts or Tooltips enabled when making direct imgui API calls! Otherwise it would severely hinder your ability to catch and correct mistakes!
    • Added io.ConfigErrorRecovery to enable error recovery support.
    • Added io.ConfigErrorRecoveryEnableAssert to assert on recoverable errors.
    • Added io.ConfigErrorRecoveryEnableDebugLog to output to debug log on recoverable errors.
    • Added io.ConfigErrorRecoveryEnableTooltip to enable displaying an error tooltip on recoverable errors. The tooltip include a way to enable asserts if they were disabled.
    • All options are enabled by default.
  • Windows: BeginChild(): made it possible to call SetNextWindowSize() on a child window using ImGuiChildFlags_ResizeX, ImGuiChildFlags_ResizeY in order to override its current size. (#1710, #8020)
  • Scrollbar: Shift+Click scroll to clicked location (pre-1.90.8 default). (#8002, #7328)
  • Scrollbar: added io.ConfigScrollbarScrollByPage setting (default to true). Set io.ConfigScrollbarScrollByPage=false to enforce always scrolling to clicked location. (#8002, #7328)
  • Drags: split ImGuiSliderFlags_AlwaysClamp into two distinct flags: (#7968, #3361, #76)
    • ImGuiSliderFlags_AlwaysClamp = ImGuiSliderFlags_ClampOnInput + ImGuiSliderFlags_ClampZeroRange.
    • Previously _AlwaysClamp only did the equivalent of _ClampOnInput.
    • Added ImGuiSliderFlags_ClampOnInput which is now a subset of _AlwaysClamp (note that it was the old name of _AlwaysClamp, but we are reintroducing that name).
    • Added ImGuiSliderFlags_ClampZeroRange to enforce clamping even when v_min==v_max==0.0f in drag functions. Sliders are not affected.
  • Tooltips, Drag and Drop: Fixed an issue where the fallback drag and drop payload tooltip appeared during drag and drop release.
  • Tooltips, Drag and Drop: Stabilized name of drag and drop tooltip window so thattransitioning from an item tooltip to a drag tooltip doesn't leak window auto-sizing info from one to the other. (#8036)
  • Tooltips: Tooltips triggered from touch inputs are positioned above the item. (#8036)
  • Backends: SDL3: Update for API changes: SDL_bool removal. SDL_INIT_TIMER removal.
  • Backends: WebGPU: Fixed DAWN api change using WGPUStringView in WGPUShaderSourceWGSL. (#8009, #8010) [blitz-research]

Changes from 1.91.2 to 1.91.3 in the Docking branch:

  • Backends: SDL2, SDL3: Fixed building for UWP platforms. (#8008)
  • Backends: Win32: Use ResisterClassW()/CreateWindowExW() for secondary viewports, to ensure correct IME input even if the backend was compiled in MBCS mode. (#7979, #5725)

2.1.6 Dear ImGui v1.91.2

01 Oct 15:44
Compare
Choose a tag to compare
  • Yet another type inconsistency fix see #15
  • Updated to Dear ImGui v1.91.2

Forwarded from https://github.com/ocornut/imgui/releases/tag/v1.91.2 (removed @ user to avoid spam)

1.91.2: detect id conflicts, table fixes, faster input text & more.

Changes (since v1.91.1)

366080952-ed30a78f-a446-4e08-a537-25a19f72f226

Changes from 1.91.1 to 1.91.2 in the Docking branch:

  • Viewports: fixed an issue where a window manually constrained to the main viewport while crossing over main viewport bounds isn't translated properly. (ocornut/imgui#7985)
  • Backends: SDL2, SDL3, Win32: ensure that ImGuiPlatformMonitor list is available after backend Init call. (ocornut/imgui#7995)
  • Backends: Win32: fixed direct calls to platform_io.Platform_SetWindowPos()/Platform_SetWindowSize() on windows created by application (typically main viewport).
  • Backends: Win32: fixed an issue where a viewport destroyed while clicking would hog mouse tracking and temporary lead to incorrect update of HoveredWindow. (ocornut/imgui#7971)
  • Backends: SDL3: added support for viewport->ParentViewportId field to support parenting windows at OS level. (ocornut/imgui#7973, ocornut/imgui#7989)

2.1.4 Fixed naming inconsistency

15 Sep 10:53
Compare
Choose a tag to compare
  • Fixed issue #15
  • Changed some names from ImGui.ImGuiXXX to ImGui.XXX and ImPlot.ImPlotXXX to ImPlot.XXX.

Full Changelog: 2.1.3...2.1.4

2.1.3 Hotfix for AOT compatibility. (No api changes)

12 Sep 11:08
Compare
Choose a tag to compare
  • Fixed issue #14 regarding .NET AOT compatibility.

Full Changelog: 2.1.2...2.1.3