Skip to content

Releases: pthom/imgui_bundle

v1.6.0

21 Nov 19:11
1a40c5e
Compare
Choose a tag to compare

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!

v1.5.2

07 Jul 20:09
3d8cc54
Compare
Choose a tag to compare

ImGui:

Hello ImGui

See changes in Hello ImGui v1.5.0

  • add FontDpiResponsive
  • add OpenGlOptions
  • add null backends
  • Improved text rendering on windows (via improved antialiasing)
  • Can set OpenGL options in hello_imgui.ini in any parent folder
  • add InputTextResizable & WidgetWithResizeHandle
  • Logger: use less vertical space
  • add Push/PopTweakedTheme (different windows can have different themes)
  • add callback PostRenderDockableWindows
  • Polish Themes

Libraries

immvision

  • fixup Custom version of cv::warpAffine for small sizes
  • ImmVision::Image is now resizable / added ImmVision::ImageDisplayResizable
  • fix icon buttons size
  • Add option ResizeKeepAspectRatio: when resizing an image, the widget will keep the aspect ratio of the image

imgui-knobs

  • can drag knob horizontally or vertically

ImPlot

  • Add Python binding for colors (cf #221)

imgui-node-editor

  • Add ForceWindowContentWidthToNodeWidth: ImGui::TextWrapped(), ImGui::Separator(), and ImGui::SliderXXX can now fit inside a Node. See proposed fix to @thedmd here: thedmd/imgui-node-editor#298
  • The theme of the node editor can be derived and adapted automatically from ImGui Theme (see UpdateNodeEditorColorsFromImguiColors)

Python

  • imgui_fig is now resizable
  • Added binding for ColorPicker4
  • Added mathematical operators for ImVec2, ImVec4, ImColor
  • add pickle support for ImVec2, ImVec4, ImColor
  • Add eq operator to ImVec2/4/ImColor bindings
  • add pydantic support for ImVec2, ImVec4, ImColor

Build

Contributions and contributors

Many thanks to all contributors!

New Contributors

Full Changelog: v1.3.0...v1.5.0

v1.5.0-rc1

24 May 06:54
2f2e76d
Compare
Choose a tag to compare
v1.5.0-rc1 Pre-release
Pre-release

High level changes overview

ImGui:

Hello ImGui

See changes in Hello ImGui v1.5.0-rc1

  • add FontDpiResponsive
  • add OpenGlOptions
  • add null backends
  • Can set OpenGL options in hello_imgui.ini in any parent folder
  • add InputTextResizable & WidgetWithResizeHandle
  • Logger: use less vertical space

Libraries

  • immvision:
    • fixup Custom version of cv::warpAffine for small sizes
    • ImmVision::Image is now resizable / added ImmVision::ImageDisplayResizable
  • imgui-knobs: can drag knob horizontally or vertically

Python

  • imgui_fig is now resizable

Build


Full changes

Pull requests & contributors

New Contributors

Full Changelog: v1.3.0...v1.5.0-rc1


Get python wheels from here

v1.3.0

19 Jan 11:26
Compare
Choose a tag to compare

Version numbers are synced between hello_imgui and imgui_bundle.

New libraries

Bundle

  • Update imgui to v1.90.1-docking
  • Update implot, imgui_test_engine, imgui-node-editor

Python

  • Release the Python GIL when rendering: improve multithreading performance (see #171)
  • Fix an issue under Ubuntu where cibuildwheel binary wheels did not work (see #170)

Hello ImGui

Fixes

  • Fix usage of ShowIdStackTool without ImGui Test Engine (see #166)
  • ImGuiColorTextEdit: added bindings for GetSelection / Fixed keyboard selection (see #169)

Full Changelog: v1.2.1...v1.3.0

v1.2.1

08 Jan 22:38
Compare
Choose a tag to compare

Hello ImGui

Backends

iOS

Android

Python

Bundle


Contributors

New Contributors

Full Changelog: v1.1.0...v1.2.1

v1.1.0

05 Dec 23:30
Compare
Choose a tag to compare

3D

  • Added callback runnerParams.callbacks.CustomBackground: display any 3D scene in the background of the app: see doc
image

App deployment

  • Added support for macOS application bundles
  • Added option to specify where settings are saved: RunnerParams.iniFolderType can be set to: CurrentFolder, AppUserConfigFolder, DocumentsFolder, HomeFolder, TempFolder, AppExecutableFolder.
  • Support for Application Icon: the file assets/app_settings/icon.png will be used to generate the window icon (C++, Python), and app icon (C++ only) for any platform. See assets structure below:
assets/
├── world.jpg                         # A custom asset
├── app_settings/                     # Application settings
│         ├── icon.png                # This will be the app icon, it should be square
│         │                           # and at least 512x512. It will  be converted
│         │                           # to the right format, for each platform.
│         ├── apple/
│         │         └── Info.plist    # macOS and iOS app settings
│         │                           # (or Info.ios.plist + Info.macos.plist)
├── fonts/
│         ├── DroidSans.ttf               # Default fonts
│         └── fontawesome-webfont.ttf     #     used by HelloImGui
│         ├── Roboto
│         │    ├── Roboto-Bold.ttf        # Font used by Markdown
│         │    ├── Roboto-BoldItalic.ttf
│         │    ├── Roboto-Regular.ttf
│         │    └── Roboto-RegularItalic.ttf
│         ├── SourceCodePro-Regular.ttf
├── images
│         └── markdown_broken_image.png

Python bindings

CMake

  • hello_imgui_add_app and imgui_bundle.add_app can now accept ASSETS_LOCATION as a parameter e.g. hello_imgui_add_app(my_app file1.cpp file2.cpp ASSETS_LOCATION my_assets)

v1.0.0.0

26 Oct 21:49
Compare
Choose a tag to compare

This release is the first official v1.0.0.0!

See release v1.0.0.0-beta1 for full changelog.

It adds:

  • Updated SDL and glfw
  • Updated imgui to V1.90 WIP (2023-10-21) and imgui_test_engine
  • Updated implot bindings

Full Changelog: v1.0.0-beta1...v1.0.0

v1.0.0-beta1

20 Oct 22:10
Compare
Choose a tag to compare
v1.0.0-beta1 Pre-release
Pre-release

Added support for ImGui Test Engine

ImGui Test Engine is a Tests & Automation Engine for Dear ImGui.

  • Can be used with python, and C++ (all platforms, incl emscripten). See python bindings declarations (stubs).
  • Enabled by default inside ImGui Bundle. Needs to be enabled manually when using Hello ImGui.
  • Lots of work on making ImGui Test Engine's coroutines (thread based) compatible with Python and emscripten
  • ImGui Test Engine is now used to run interactive automations in the interactive manual (click on the "Show me" buttons)
  • Added specific demo and doc

Note: See Dear ImGui Test Engine License. (TL;DR: free for individuals, educational, open-source and small businesses uses. Paid for larger businesses)

New library

  • Added new library: ImCoolBar

Doc

Misc

  • Python bindings stubs: add "overload" everywhere when required
  • cmake: add options to run sanitizers (no warning given by any of them at this moment)
  • demo_logger: add logs at startup
  • implot python bindings: add plot_bar_groups & plot_pie_chart
  • update imgui_toggle (after merged PRs from imgui_bundle)
  • update HelloImGui: add callback BeforeImGuiRender
  • update ImmVision: can call gladLoadGl if needed (fix #134)
  • add demo imgui_example_glfw_opengl3.cpp

Full Changelog: v0.9.0...v1.0.0-beta1

v0.9.0

22 Sep 11:55
Compare
Choose a tag to compare

Added wheels for python3.12

Submodule updates:

  • imgui-node-editor: fix suspend/resume issue
  • HelloImGui::DockingParams::focusDockableWindow() can show a window tab

v0.8.8

15 Sep 09:56
Compare
Choose a tag to compare
  • update imgui to v1.89.6 and implot to v0.17
  • Enable 32 bits ImDrawIdx for ImPlot

Submodules changes:

  • ImmVision: fix exit sequence, can save colormap image
  • imgui-node-editor: fixes
  • HelloImGui: basic apps can run without font assets / can set docking options for main dock space