Skip to content

v1.6.0

Latest
Compare
Choose a tag to compare
@pthom pthom released this 21 Nov 19:11
· 35 commits to main since this release
1a40c5e

This release brings a major upgrade with Dear ImGui v1.91.5, a new python binding library (nanobind), various quality-of-life improvements (notably in the node editor), and support for Python 3.13.


Python Bindings

Transition to Nanobind - Nov 2024

We’ve replaced Pybind11 with Nanobind for Python bindings. This change should be seamless for most users. If you encounter any issues, please let us know.

Python 3.13 Support

  • Prebuilt binary wheels are now available for Python 3.11, 3.12, and 3.13. (Python 3.10 remains supported, requiring source builds.)

Additional Changes

  • glfw_backend: Updated clipboard handling to the new API.
  • Key enum bindings: Removed im_gui_ prefix from values.
  • Flags enums (e.g., InputTextFlagsPrivate_, TreeNodeFlagsPrivate_): Cleaned up unnecessary prefixes.
  • ImFontGlyph: Published methods get_codepoint(), is_visible(), and is_colored().
  • imgui_fig: Added support for user-defined Matplotlib renderers.
  • Stubbed ImVec2/ImVec4 math operators (fix #267).
  • pyglet_backend: Fixed version checks (thanks to @DragonMoffon).
  • implot: Resolved issues with setup_axis_links() bindings.
  • Optimized startup by deferring PIL and Matplotlib imports.
  • Initial steps toward supporting Pyodide.

ImmVision

Breaking Change - October 2024: Explicit Color Order Configuration

You must now explicitly set the color order (RGB or BGR) in your program. Use one of the following before displaying images:

  • C++: ImmVision::UseRgbColorOrder() or ImmVision::UseBgrColorOrder()
  • Python: immvision.use_rgb_color_order() or immvision.use_bgr_color_order()
  • Temporary overrides: ImmVision::PushColorOrderBgr/Rgb() and ImmVision::PopColorOrder().

This ensures clarity regarding color order. Failure to set it will result in an error when attempting to display images.

Additional Notes:

  • The IsColorOrderBGR member in ImageParams and the isBgrOrBgra parameter in ImageDisplay have been removed.
  • Published GlTexture in the API.
  • Prevented zooming when zoom level becomes excessively extreme.

Hello ImGui: Updated to v1.6.0

  • SVG Font Rendering: Switched from lunasvg to plutosvg (default: HELLOIMGUI_USE_FREETYPE_PLUTOSVG).
  • Added AddDockableWindow and RemoveDockableWindow APIs.
  • Enhanced demo_docking to better showcase docking and theme customization.
  • Introduced HelloImGui::ManualRender: A namespace with functions for fine-grained rendering control.
  • Progressed on Pyodide integration (for ImGui Bundle).
  • Improved font rendering for iOS.

Node Editor

Many quality of life improvements: see demo on this page

  • Enhanced popup placement and child window handling. See issue #310.
  • InputTextMultiline now works within the node editor (opens as a popup for editing).
  • Node theme colors now align better with the overall theme.

ImGuiMd

  • Added ImGuiMd::GetFont(const MarkdownFontSpec& fontSpec).

ImmApp

  • Introduced Immapp::ManualRender: A namespace with functions for fine-grained rendering control.

ImGui

  • Updated ImGui to v1.91.5.

Demos

  • Docking Demo: Improved layout and theme setup.
  • Python Demos: Removed OpenCV dependency; now uses Pillow for image loading.
  • Removed outdated demos, including ImGuizmo curve editing (only maintaining 3D Gizmo compatibility).

Contributors & Acknowledgements

  • @DragonMoffon made their first contribution in PR #269.
  • Thanks to @sammycage for assisting with font rendering improvements (see this discussion
  • Special thanks to @davidlatwe for supporting the transition from Pybind11 to Nanobind.
  • Gratitude to @wjakob for guidance on building with Nanobind.
  • Shoutout to @lukaasm for patching popup rendering in the node editor.
  • And as always a big shoutout to @ocornut, creator of Dear ImGui

Full Changelog: v1.5.2...v1.6.0


Please share your feedback for this release here! Your input is very valuable!