imgui-rs/CHANGELOG.markdown

655 lines
20 KiB
Markdown

# Change Log
## [Unreleased]
### Changed
- is_key_down, is_key_pressed, is_key_released and key_pressed_amount now make a call to key_index internally and thus take a Key instead of u32
- `imgui-winit-support`'s `winit-23` feature no longer is compatible with `winit` 0.24.x, which apparently didn't work anyway. Instead the
- The default `imgui-winit-support` feature has been changed to `winit-24`, as it's now the latest.
### Removed
- key_index is now only used internally
- The `gfx` and `glium` features are removed to reduce version compatibility issues going forward.
- In the somewhat unlikely case that you used these features directly (and not as part of `imgui-{gfx,glium}-renderer`) you should use replace calls to `draw_list.vtx_buffer::<imgui::DrawVert>()` with `draw_list.transmute_vtx_buffer::<MyDrawVert>()`, where `MyDrawVert` is a struct with the same layout as `imgui::DrawVert` (For examples, please see the `imgui-gfx-renderer` and `imgui-glium-renderer` crates — in particular, the definition and implementation of `GliumDrawVert`/`GfxDrawVert`).
This is less convenient, but avoids depending on any specific version of `gfx` or `glium`, which will ease maintenance.
## [0.6.1](https://github.com/imgui-rs/imgui-rs/releases/tag/v0.6.1) - 2020-12-16
This release mainly updated the glium/winit/glium versions, adding support for winit `0.24` and related.
Unfortunately, this caused unintentional breaking changes (it was the holidays and not enough attention was paid to the changes in an urgent-sounding request for supporting the new version), and thus violated the stated semver change.
This release will be yanked once 0.7.0 is released, but not before, so that users who need 0.24 support are still able to use imgui.
## [0.6.0] - 2020-11-15
### Added
- `Io::peek_input_characters`
### Changed
- Upgrade to cimgui / imgui 1.79
- Upgrade to winit 0.23
- Bump minimum Rust version to 1.43
## [0.5.0] - 2020-09-20
### Added
- Support for ConfigFlags::RENDERER_HAS_VTX_OFFSET in imgui-glium-renderer
and imgui-gfx-renderer. This makes it possible to output large meshes (e.g.
complex UIs) without problems when using these renderers
- `Ui::begin_tooltip` to support using tooltips with stack tokens instead
of closures
- API for accessing the background drawlist
- Tab bar / tab item API
- Redesigned drag slider API
### Changed
- Upgrade to cimgui / imgui 1.78
- Store per-texture sampler parameters in imgui-glium-renderer to support
customizing them
- Slider widget constructors no longer require the range parameter. Call the
range function on the builder to set the range.
### Fixed
- Reduce unnecessary winit cursor changes which earlier caused cursor
flickering or invalid cursors on some platforms (at least Windows)
### Removed
- Various things that were deprecated in imgui-rs 0.4.0
## [0.4.0] - 2020-05-27
### Added
- WebAssembly FFI shells
### Changed
- Redesign tree / collapsing header API
- Bump minimum Rust version to 1.40 (at least xml-rs crate requires it)
- Upgrade to glium 0.27 / winit 0.22
- Switch Glium renderer to use GL_CLAMP_TO_BORDER
### Fixed
- Bug in font name length checking
## [0.3.1] - 2020-03-16
### Fixed
- Narrowed supported winit version range in imgui-winit-support
## [0.3.0] - 2020-02-15
### Added
- Add `ChildWindow::movable`
- ImString now implements fmt::Write
### Changed
- Upgrade to cimgui / imgui 1.75
- Bump minimum Rust version to 1.38 (at least backtrace crate requires it)
- Upgrade to glium 0.26 / winit 0.21
- Switch imgui-winit-support to 0.20+ by default. Winit 0.19 support is still
available via the `winit-19` feature flag
- Resources used by examples are no longer included in the published crate
### Removed
- Various things that were deprecated in imgui-rs 0.2.0
### Fixed
- Fix toggling behavior on using `MenuItem::build_with_ref` and
`Selectable::build_with_ref`.
- ImString nul terminator handling
## [0.2.1] - 2019-09-09
### Fixed
- Fix backspace handling on macOS
- Fix ImageButton bool return value
## [0.2.0] - 2019-09-07
### Added
- Window scrolling API
- Full support for the column API
- Almost all small utility functions from upstream API
- Support for winit 0.20 alpha via `winit-20` feature
### Changed
- Redesigned window API
- Redesigned progress bar API
- Redesigned color editor/picker API
- Redesigned child window API (previously known as child frame)
- Redesigned image / image button API
- Redesigned combo box API
- Redesigned selectable API
- Redesigned slider API. Generic scalar sliders support all main data types and replace
previous individual sliders (int, int2, int3, int4, etc...)
- Redesigned menu API
- Updated layout API
- Renderer errors implement std::error::Error
- Glium renderer re-exports imgui and glium
- Gfx renderer re-exports imgui and gfx
- These functions now take/return PathBuf: log_filename, set_log_filename, ini_filename, set_logfilename
- ID stack manipulation now uses stack tokens
- Parameter stack pushes *must almost always be paired by a manual call to stack pop*
- Container widget tokens *must be ended manually by calling end*.
Closure-based function (e.g. build()) are unaffected and do this
automatically
- Bump minimum Rust version to 1.36 (some dependencies, including winit, require MaybeUninit)
- Upgrade to cimgui / imgui 1.72b
### Removed
- Various things that were deprecated in imgui-rs 0.1.0
## [0.1.0] - 2019-07-12
### Added
- Support for font atlas sharing
- Support for using multiple fonts
- Support for suspended contexts (useful for having multiple independent
operating system windows)
- Support for DX11 in imgui-gfx-renderer
- Support for navigation input system
- Support for backend/renderer name strings
- Support for saving/loading INI settings manually
- Pluggable clipboard support
### Changed
- imgui-sys is now almost completely automatically generated. **This is a big
breaking change in imgui-sys API**
- ImGui/Context API is now safer
- The library context (known as Context, previously known as ImGui) is no longer Send or Sync
- Many getter/setter APIs have been replaced with direct access to struct fields
- [f32; 2] and [f32; 4] are now the main vector types. ImVec/ImVec4 and
corresponding tuples are no longer used in the main API
- imgui-gfx-renderer is parameterized over the color format, so Rgba8 and
Srgba8 are both supported
- imgui-winit-support has been rewritten to provide a more robust abstraction
that is easier to use correctly
- Parameter stack (e.g. StyleVar) manipulation is now done using push functions
and automatically or manually droppable stack tokens
- Upgrade to glium 0.25
- Upgrade to cimgui / imgui 1.71
- Bump minimum Rust version to 1.33
## [0.0.23] - 2019-04-10
### Added
- Support for image buttons: `Ui::image_button`
- `Ui::set_keyboard_focus_here`
- Support for window position pivot
### Changed
- Upgrade to gfx 0.18
### Removed
- Various things that were deprecated in imgui-rs 0.0.21 and 0.0.22
## [0.0.22] - 2019-02-05
### Added
- `Ui::with_test_wrap_pos`
- `Ui::get_content_region_max`
- `Ui::get_window_content_region_min`
- `Ui::get_window_content_region_max`
### Changed
- Upgrade to cimgui 1.66.2+ / imgui 1.66b. **This is a very big update, so there
are a lot of breaking changes**
- Bump minimum Rust version to 1.31 (1.28 required by the glutin crate, and
1.31 required by the stb_truetype crate)
- Upgrade to glium 0.23
- Replaced `imgui-glutin-support` with `imgui-winit-support`
## [0.0.21] - 2018-10-11
### Added
- `ImGui::mouse_down`
- `ImGui::key_super`
- `Ui::get_window_pos`
- `Ui::is_window_focused`
- `Ui::is_root_window_focused`
- `Ui::is_child_window_focused`
- `Ui::popup_modal`
- `imgui-glutin-support` crate
- Support for custom textures
### Fixed
- Possible crash if rendering was skipped during a frame
### Changed
- Bump minimum Rust version to 1.26 (required by the parking_lot_core crate)
## [0.0.20] - 2018-08-13
### Fixed
- Clip rect regression in the glium renderer
### Removed
- Various things that were deprecated in imgui-rs 0.0.19
## [0.0.19] - 2018-08-12
### Added
- New things in imgui/cimgui 1.53.1
- Style: Add `PopupRounding`, `FrameBorderSize`, `WindowBorderSize`, `PopupBorderSize`.
- DemoWindow: Add `no_close` state.
- Input: Add `no_undo_redo` method.
- *imgui-sys*:
- `igStyleColorsDark` and `igStyleColorsLight`
- DragDrop low level API
- `igGetFrameHeight`
- `igBeginCombo`, `igEndCombo`
- `igSetItemDefaultFocus`
- `igGetOverlayDrawList` and `igGetDrawListSharedData`
- `ImFontConfig_DefaultConstructor`
- `ImDrawList_AddImageRounded`
- Input: Add `read_only` and `password` methods.
- Various utility functions
- Support for changing the mouse cursor
- Custom font support
- Support for item grouping (`group` function)
- Custom drawing with draw list manipulation
- Drag widgets
- Input: Add `input_text_multiline` method
### Changed
- Upgrade to imgui/cimgui 1.53.1
- Rename `Ui::show_test_window` to `Ui::show_demo_window`. Keep redirection.
- Rename `sys::igGetItemsLineHeightWithSpacing` to `sys::igGetFrameHeightWithSpacing`.
Keep redirection.
- Rename `ImGuiTreeNodeFlags::AllowOverlapMode` to `ImGuiTreeNodeFlags::AllowItemOverlap`.
`sys::igSetNextWindowContentSize()`. Keep redirection.
- Rename `sys::ImGuiTextBuffer_append()` helper to `appendf()`.
- Rename `ImGuiStyleVar::ChildWindowRounding` to `ImGuiStyleVar::ChildRounding`.
Keep redirection.
- Rename `StyleVar::ChildWindowRounding` to `StyleVar::ChildRounding`.
Keep redirection.
- Rename `ImGuiCol::ChildWindowBg` to `ImGuiCol::ChildBg`.
Keep redirection.
- Upgrade glium to 0.22.0. This updates winit to 0.16. This changes the way
HIDPI are calculated. Depending on your needs, you may want to set HIDPI to 1
by setting the environment variable `WINIT_HIDPI_FACTOR=1` if you use X11.
- `frame()` now takes a single `FrameSize` argument
- Bump minimum Rust version to 1.24
- `set_mouse_down` takes button states by value, not by reference
### Deprecated
- Various imgui-sys things that were deprecated in imgui/cimgui 1.53.1
- Obsolete `sys::igIsRootWindowFocused()` in favor of using
`sys::igIsWindowFocused(ImGuiFocusedFlags::RootWindow)`.
- Obsolete `sys::igIsRootWindowOrAnyChildFocused()` in favor of using
`sys::igIsWindowFocused(ImGuiFocusedFlags::RootAndChildWindows)`.
- Obsolete `sys::igIsRootWindowOrAnyChildHovered()` in favor of using
`sys::igIsWindowHovered(ImGuiHoveredFlags::RootAndChildWindows)`.
- Obsolete `sys::SetNextWindowContentWidth()` in favor of using
- Obsolete `Window::show_borders`. Use `StyleVar` instead.
- Obsolete `ImGuiCol::ComboBg`. Use `PopupBg` instead.
### Removed
- Features that were removed in imgui/cimgui 1.53.1
- Remove `anti_aliased: bool` final parameter of `sys::ImDrawList_AddPolyline`
and `sys::ImDrawList_AddConvexPolyFilled`.
- Remove `ImGuiWindowFlags::ShowBorders` window flag. Borders are now fully
set up in the ImGuiStyle structure.
- Various imgui-sys things that were deprecated in imgui/cimgui 1.52
## [0.0.18] - 2017-12-23
### Added
- `is_item_hovered`
- `tooltip`
- `tooltip_text`
### Changed
- Upgrade to imgui/cimgui 1.52
- Upgrade to glium 0.19
### Deprecated
- Various imgui-sys things that were deprecated in imgui/cimgui 1.52
### Removed
- Non-namespaced flags
- Various imgui-sys things that were deprecated in imgui/cimgui 1.51
- `Window::bg_alpha`. Push a color change with `with_color_var` instead
- `color_edit3`
- `color_edit4`
## [0.0.17] - 2017-11-07
### Added
- Namespaced flags (e.g. `ImGuiWindowFlags`)
- Color picker widget
- Color button widget
- `imgui_sys` is now re-exported as `sys` in the main create
- `imgui::get_style_color_name`
### Changed
- Upgrade to imgui/cimgui 1.51
- Adapt to latest cimgui API changes
- Bump minimum Rust version to 1.20
- Upgrade to bitflags 1.0
- Various minor ImString/ImStr changes
- `text` now accepts normal Rust strings. ImStr is still needed everywhere else
### Fixed
- Default impl for ImString was incorrect and could cause a crash
### Deprecated
- Non-namespaced flags
- Various imgui-sys things that were deprecated in imgui/cimgui 1.51
- `Window::bg_alpha`. Push a color change with `with_color_var` instead
- `color_edit3`. Use `color_edit` instead
- `color_edit4`. Use `color_edit` instead
### Removed
- ImStr -> str Deref. Use `to_str` instead.
## [0.0.16] - 2017-10-26
### Added
- OpenGL ES 2.0+ support in gfx and glium renderers
- Separate OpenGL 2.0, 3.0, 4.0 shaders in both renderers. This should fix an
issue with some systems that refuse to use old GLSL shaders with modern
OpenGL contexts
- `ImGui::add_font_global_scale`
- Support for radio buttons
### Changed
- Upgrade to glium 0.18
- imgui-gfx-renderer `Renderer::init` now requires a `shaders: Shaders`
parameter. Please see examples/support_gfx/mod.rs for a shader resolution
example
- Bump minimum Rust version to 1.19 because some dependencies require it.
### Fixed
- Glium renderer now uses MinifySamplerFilter::Nearest. This fixes a blurry font
issue in some configurations
### Removed
- `ImString::from_string_unchecked`
- `ImString::from_bytes_unchecked`
- `ImStr::from_bytes_unchecked`
## [0.0.15] - 2017-07-23
### Added
- Support for new_line function
- Support for text size calculation
- Support for scoped style customization
- Support for scoped color customization
- Support for child frames
- Unsafe ImString/ImStr creation functions for advanced users:
+ `ImString::from_utf8_unchecked` (renamed from `ImString::from_bytes_unchecked`)
+ `ImString::from_utf8_with_nul_unchecked`)
+ `ImStr::from_utf8_with_nul_unchecked` (renamed from `ImStr::from_bytes_unchecked`)
### Changed
- Button, selectable, histogram, plotlines, and progress bar accept size with `Into<ImVec2>`
- `ImString::new` always succeeds and any interior NULs truncate the string. **Breaking change**
- All builder constructor functions (e.g. Window::new) now take `&Ui` reference
to tie the lifetime of the builder to it.
- Bumped minimum Rust version to 1.17 because some dependencies require it.
- Upgrade to glium 0.17
### Deprecated
- `ImString::from_string_unchecked` (please use `ImString::new`)
- `ImString::from_bytes_unchecked` (renamed to `ImString::from_utf8_unchecked`)
- `ImStr::from_bytes_unchecked` (renamed to `ImStr::from_utf8_with_nul_unchecked`)
### Fixed
- Histogram, plotlines, progressbar builders were not tied to the `&Ui`
lifetime, so it was possible to misuse them.
## [0.0.14] - 2017-06-18
### Added
- ImString owned type for strings
- Experimental support for gfx-rs in imgui-sys
- Experimental renderer for gfx-rs
### Changed
- ImStr is now "a dear imgui -compatible string slice". This change
significantly affects how strings are handled.
- Upgrade to imgui/cimgui 1.50
- Upgrade to bitflags 0.9
### Fixed
- String pointer compilation problems on ARM
## [0.0.13] - 2017-04-25
### Changed
- Make the crates publishable again after the Glium renderer separation
## [0.0.12] - 2017-04-25 [YANKED]
### Added
- Support for progress bar
- Support for push/pop item width
- Support for ID stack manipulation (integer values)
- Support for 2-4 -element int sliders
- Support for 2-4 -element float sliders
- `ImVec4::zero()`
- `Into` array and tuple conversions for ImVec2 and ImVec4
- gfx 0.15 support in imgui-sys
- gfx 0.15 renderer implementation
### Changed
- imgui-sys no longer includes glium support by default
- Move Glium renderer to a separate crate
### Removed
- `Window::always_vertical_scollbar` (typo)
- `igPushStyleVavrVec` (typo)
- `ImGuiInputTextFlags::with`
- `ImGuiTreeNodeFlags::with`
- `ImGuiWindowFlags::with`
## [0.0.11] - 2017-02-15
### Added
- `ImVec2::zero()`
- Support for buttons
- Support for closing current popup
- `Window::always_vertical_scrollbar` (fix typo)
- `igPushStyleVarVec` (fix typo)
### Changed
- Upgrade to bitflags 0.8
- Upgrade to glium 0.16
- Replace libc dependency with `std::os::raw`
- Upgrade cimgui to include MinGW compilation fix
### Deprecated
- `Window::always_vertical_scollbar` (typo)
- `igPushStyleVavrVec` (typo)
- `ImGuiInputTextFlags::with`
- `ImGuiTreeNodeFlags::with`
- `ImGuiWindowFlags::with`
## [0.0.10] - 2016-08-09
### Changed
- Upgrade to glium 0.15
- Examples use std::time instead of the deprecated time crate
## [0.0.9] - 2016-07-07
### Added
- Support for columns, combo, listbox
- Support for plothistogram, plotlines
- Support for color edit widgets
- Support for int and float inputs
- Support for int and float array inputs
- Support for popups
- Support for selectable
- Better support for hidpi environments
### Changed
- ImStr::as_ptr is now part of the public API
- Upgrade to bitflags 0.7
- Upgrade to imgui/cimgui 1.49
* Several imgui_sys structs have changed
* CollapsingHeader API has changed
* New window flags are supported
## [0.0.8] - 2016-04-15
### Added
- Add a change log
### Changed
- Upgrade to glium 0.14
## [0.0.7] - 2016-03-26
### Changed
- Upgrade to imgui/cimgui 1.47
### Fixed
- Fix Glium rendering error when more than one texture is used ([issue #17](https://github.com/Gekkio/imgui-rs/issues/17))
## [0.0.6] - 2016-01-12
### Changed
- Relicensed to dual MIT/Apache-2.0
- Upgrade to glium 0.13
- Upgrade to imgui/cimgui 1.46
## [0.0.5] - 2015-11-30
### Changed
- Upgrade to glium 0.12
- Upgrade to libc 0.2
## [0.0.4] - 2015-10-26
### Changed
- Upgrade to glium 0.10
- Lots of other changes
## [0.0.3] - 2015-09-27
### Changed
- Upgrade to glium 0.9
- Lots of other changes
## [0.0.2] - 2015-08-31
### Changed
- Lots of changes
## 0.0.1 - 2015-08-20
### Added
- Initial release with cimgui/imgui 1.44, glium 0.9
[Unreleased]: https://github.com/Gekkio/imgui-rs/compare/v0.6.0...HEAD
[0.6.0]: https://github.com/Gekkio/imgui-rs/compare/v0.5.0...v0.6.0
[0.5.0]: https://github.com/Gekkio/imgui-rs/compare/v0.4.0...v0.5.0
[0.4.0]: https://github.com/Gekkio/imgui-rs/compare/v0.3.0...v0.4.0
[0.3.1]: https://github.com/Gekkio/imgui-rs/compare/v0.3.0...v0.3.1
[0.3.0]: https://github.com/Gekkio/imgui-rs/compare/v0.2.0...v0.3.0
[0.2.1]: https://github.com/Gekkio/imgui-rs/compare/v0.2.0...v0.2.1
[0.2.0]: https://github.com/Gekkio/imgui-rs/compare/v0.1.0...v0.2.0
[0.1.0]: https://github.com/Gekkio/imgui-rs/compare/v0.0.23...v0.1.0
[0.0.23]: https://github.com/Gekkio/imgui-rs/compare/v0.0.22...v0.0.23
[0.0.22]: https://github.com/Gekkio/imgui-rs/compare/v0.0.21...v0.0.22
[0.0.21]: https://github.com/Gekkio/imgui-rs/compare/v0.0.20...v0.0.21
[0.0.20]: https://github.com/Gekkio/imgui-rs/compare/v0.0.19...v0.0.20
[0.0.19]: https://github.com/Gekkio/imgui-rs/compare/v0.0.18...v0.0.19
[0.0.18]: https://github.com/Gekkio/imgui-rs/compare/v0.0.17...v0.0.18
[0.0.17]: https://github.com/Gekkio/imgui-rs/compare/v0.0.16...v0.0.17
[0.0.16]: https://github.com/Gekkio/imgui-rs/compare/v0.0.15...v0.0.16
[0.0.15]: https://github.com/Gekkio/imgui-rs/compare/v0.0.14...v0.0.15
[0.0.14]: https://github.com/Gekkio/imgui-rs/compare/v0.0.13...v0.0.14
[0.0.13]: https://github.com/Gekkio/imgui-rs/compare/v0.0.12...v0.0.13
[0.0.12]: https://github.com/Gekkio/imgui-rs/compare/v0.0.11...v0.0.12
[0.0.11]: https://github.com/Gekkio/imgui-rs/compare/v0.0.10...v0.0.11
[0.0.10]: https://github.com/Gekkio/imgui-rs/compare/v0.0.9...v0.0.10
[0.0.9]: https://github.com/Gekkio/imgui-rs/compare/v0.0.8...v0.0.9
[0.0.8]: https://github.com/Gekkio/imgui-rs/compare/v0.0.7...v0.0.8
[0.0.7]: https://github.com/Gekkio/imgui-rs/compare/v0.0.6...v0.0.7
[0.0.6]: https://github.com/Gekkio/imgui-rs/compare/v0.0.5...v0.0.6
[0.0.5]: https://github.com/Gekkio/imgui-rs/compare/v0.0.4...v0.0.5
[0.0.4]: https://github.com/Gekkio/imgui-rs/compare/v0.0.3...v0.0.4
[0.0.3]: https://github.com/Gekkio/imgui-rs/compare/v0.0.2...v0.0.3
[0.0.2]: https://github.com/Gekkio/imgui-rs/compare/v0.0.1...v0.0.2