Skip to content

Latest commit

 

History

History
366 lines (284 loc) · 22.2 KB

CHANGELOG.md

File metadata and controls

366 lines (284 loc) · 22.2 KB

Version numbers are synced between hello_imgui and imgui_bundle.

v1.5.xxx

ImmVision

  • Breaking Change - October 2024: Color Order Must Be Set ImmVision now requires you to explicitly set the color order (RGB or BGR) at the start of your program. To configure the color order, you must call one of the following once before displaying images:
    • In C++: ImmVision::UseRgbColorOrder() or ImmVision::UseBgrColorOrder()
    • In Python: immvision.use_rgb_color_order() or immvision.use_bgr_color_order()
    • To enforce a temporary color order, use ImmVision::PushColorOrderBgr/Rgb() and ImmVision::PopColorOrder(). This change ensures that you are explicitly aware of the color order used throughout your program. If the color order is not configured, an error will be thrown when attempting to display images. Note: The IsColorOrderBGR member in ImageParams and the corresponding isBgrOrBgra parameter in ImageDisplay have been removed.

v1.5.0

ImGui:

  • Updated ImGui to v1.90.9-docking
  • Added support for StackLayout: ImGui::BeginHorizontal & ImGui::BeginVertical (by @thedmd)
  • Warn if users reuse an ID (cf ocornut/imgui#7669)

Hello ImGui

See changes in Hello ImGui v1.5.0-rc1

  • 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

v1.3.0

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)

v1.2.1

Hello ImGui

Backends

iOS

Android

Python

Bundle

v1.1.0

3D

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

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.png                         # 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-beta1

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

v0.9.0

  • 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

  • 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

v0.8.7

Updates and new features

  • ImGui: updated imgui to v1.89.6 (May 2023)
  • ImGui: python bindings now can use SDL2 (glfw is of course still supported, and remains the default with Hello ImGui)
  • ImGui: Add python bindings for drag&drop
  • HelloImGui: can now handle several layouts and save settings per layout (see details below)
  • HelloImGui: can now store user defined settings in the ini file
  • HelloImGui: now remembers user choices for the theme, status bar, and fps throttling
  • HelloImGui: handle utf8 filenames for assets loading
  • ImGuiColorTextEdit is now based on @santaclose fork
  • immvision bindings: use shared memory (between python and C++) for images
  • ImPlot bindings: Add support for colormap in implot python bindings
  • ImPlot bindings: Add support for heatmaps

As always, an online interactive manual is available    

More details about layouts handling with Hello ImGui:

Layout demo

Each layout has a different spatial layout and can contain a different list of windows. Each layout also remembers the user modifications to this given layout, as well as the list of opened windows.

See this online emscripten demo of the docking and layout, the C++ demo code, and python demo code

For more explanations on how to handle complex layouts, see this video explanation on YouTube (5 minutes)

v0.8.6

Please use v0.8.7 instead

v0.8.5

Hello ImGui and ImmApp usability improvements:

  • customize menu App
  • Docking Layout: keep user preferences
  • improve windows initial layout

v0.8.3

Added python bindings for implot_internal

Minor improvements:

  • Improve font rendering
  • Improve emscripten idling mode
  • Review main theme (DarculaDarker) to make it easier on the eyes

v0.8.2

  • Autoresize window post startup
  • Corrected notebook rendering

v0.8.1

  • correct launch demo_node_editor_basic

v0.8.0

  • markdown: render code blocks with text editor, and make them easily copyable
  • add lots of demos
  • add doc / ascii_doc
  • add emscripten interactive manual
  • add immapp::snippets
  • add portable_file_dialogs

v0.7.2

  • Improved doc and notebook support

v0.7.1

  • Improved support for High DPI in third parties
  • Improved demos
  • Markdown now support code blocks

v0.7.0 (work in progress)

  • Added support for ImGuizmo
    • all components available in C++ (gizmo, curve, graph, sequencer, etc.)
    • added ImGuizmoPure: C++ wrappers around existing api with clearly marked inputs and outputs
    • for python: ported pure API
    • added set of twin demos showing usage with C++ and with python. A good example showing how to port features between C++ and python.
    • the following items could not be ported to python (making a pure wrapper failed): ImGradient, GraphEditor, Sequencer
  • Added support for imgui_tex_inspect, a texture inspector.
    • Added support for codeless init of imgui_tex_inspect when using ImGuiBundle runner (future ImmApp), thanks to AddOnParams::withTexInspect
  • 6ef5df64: added imgui.set_io_ini_filename() & imgui.set_io_log_filename() Manual binding for ImGuiIO::IniFilename (naked const char* pointer)
  • 778aabf3: Added imgui_bundle.em_size and visible_font_size(): In order to scale your widgets properly on all platforms, use multiples of this size. (on MacOS with retina FontGlobalScale can be equal to 2) (EmSize is an alias for VisibleFontSize)
  • f6ae2072: generate named constructors if there is no user defined constructors
  • 19ca013a: remove ImGui prefix from classes and enums => lots of API changes
  • f9210578: ImPlot bindings: remove prefix ImPlot from classes and enums
  • hardened stub typings with mypy
  • imgui.backends: replace open_gl3 by opengl3
  • immvision module now stable
  • Lots of work on the CI and wheel generation

v0.6.6

Added Immvision (image debugger and analyzer utility)

immvision will be compiled if OpenCV is available. immvision is not available by default on the pip bindings.

To add them, compile from source after having installed conan

Added theming

  • Demo
  • API
  • Default theme is now a variation on Darcula

Improve ImGui & Glfw, low level integration

Full Changelog: https://github.com/pthom/imgui_bundle/compare/v0.6.5...v0.6.6

v0.6.5

Lots of additions

Full Changelog: https://github.com/pthom/imgui_bundle/compare/v0.6.4...v0.6.5