Skip to content

Releases: ocornut/imgui

v1.33b

23 Feb 20:51
Compare
Choose a tag to compare
  • Fixed resizing columns.

v1.33

22 Feb 18:25
Compare
Choose a tag to compare
  • InputText: having a InputText widget active doesn't steal mouse inputs from clicking on a button before losing focus (relate to #134)
  • InputText: cursor/selection/undo stack persist when using other widgets and getting back to same (#134).
  • InputText: fix effective buffer size being smaller than necessary by 1 byte (so if you give 3 bytes you can input 2 ascii chars + zero terminator, which is correct).
  • Added IsAnyItemActive().
  • Child window explicitly inherit collapse state from parent (so if user keeps submitting items even thought Begin has returned 'false' the child items will be clipped faster).
  • BeginChild() return a bool the same way Begin() does. if true you can skip submitting content.
  • Removed extraneous (1,1) padding on child window (pointed out in #125)
  • Columns: doesn't bail out when SkipItems is set (fix #136)
  • Columns: Separator() within column correctly vertical offset all cells (pointed out in #125)
  • GetColumnOffset() / SetColumnOffset() handles padding values more correctly so matching columns can be lined up between a parent and a child window (cf. #125)
  • Fix ImFont::BuildLookupTable() potential dangling pointer dereference (fix #131)
  • Fix hovering of child window extending past their parent not taking account of parent clipping rectangle (fix #137)
  • Sliders: value text is clipped inside the frame when resizing sliders to be small.
  • ImGuITextFilter::Draw() use regular width call rather than computing its own arbitrary width.
  • ImGuiTextFilter: can take a default filter string during construction.

v1.32

11 Feb 18:39
Compare
Choose a tag to compare
  • Added Selectable() building block for various list boxes, combo boxes, etc.
  • Added ListBox() (#129).
  • Added ListBoxHeader(), ListBoxFooter() for customized list traversal and creating multi-selection boxes.
  • Fixed title bar text clipping issue (fix #128).
  • InputText: added ImGuiInputTextFlags_CallbackCharFilter system for filtering/replacement (#130). Callback now passed an "EventFlag" parameter.
  • InputText: Added ImGuiInputTextFlags_CharsUppercase and ImGuiInputTextFlags_CharsNoBlank stock filters.
  • PushItemWidth() can take negative value to right-align items.
  • Optimisation: Columns offsets cached to avoid unnecessary binary search.
  • Optimisation: Optimized CalcTextSize() function by about 25% (they are often the bottleneck when submitting thousands of clipped items).
  • Added ImGuiCol_ChildWindowBg, ImGuiStyleVar_ChildWindowRounding for completeness and flexibility.
  • Added BeginChild() variant that takes an ImGuiID.
  • Tweak default ImGuiCol_HeaderActive color to be less bright.
  • Calculate framerate for the user (IO.Framerate), as a purely luxurious feature and to reduce sample code size a little.

selectables

list boxes

v1.31

08 Feb 17:34
Compare
Choose a tag to compare
  • Added ImGuiWindowFlags_NoCollapse flag.
  • Added a way to replace the internal state pointer so that we can optionally share it between modules (e.g. multiple DLLs).
  • Added tint_col parameter to ImageButton().
  • Added CalcListClipping() helper to perform faster/coarse clipping on user side (when manipulating lists with thousands of items).
  • Added GetCursorPosX() / GetCursorPosY() shortcuts.
  • Renamed GetTextLineSpacing() to GetTextLineHeightWithSpacing().
  • Combo box always appears above other child windows of a same parent.
  • Combo/Label: label is properly clipped inside the frame (#23).
  • Added cpu-side text clipping functions which are used in some instances to avoid extra draw calls.
  • InputText: Filtering private Unicode range 0xE000-0xF8FF.
  • Fixed holding button over scrollbar creating a small feedback loop with calculation of contents size.
  • Calling SetCursorPos() automatically extends the contents size.
  • Track ownership of mouse clicks. Avoid requesting IO.WantCaptureMouse if initial click was outside of ImGui.
  • Removed the dependency on realloc().
  • Other fixes, tweaks and comments.

v1.30

01 Feb 00:19
Compare
Choose a tag to compare

Big update! Initialisation had to be changed. You don't need to load PNG data anymore. The new system gives you uncompressed texture data.

1/ This sequence:

const void* png_data;
unsigned int png_size;
ImGui::GetDefaultFontData(NULL, NULL, &png_data, &png_size);
// <Copy to GPU>

Became:

unsigned char* pixels;
int width, height;
// io.Fonts->AddFontFromFileTTF("myfontfile.ttf", 24.0f);  // Optionally load another font
io.Fonts->GetTexDataAsRGBA32(&pixels, &width, &height);
// <Copy to GPU>
io.Fonts->TexID = (your_texture_identifier);

2/ PixelCenterOffset has been removed and isn't a necessary setting anymore. Offset your projection matrix by 0.5 if you have rendering problems.

Please refer to the "API BREAKING CHANGES" section of ImGui.cpp for more details on the changes above.

  • Loading TTF files with stb_truetype.h.
  • We still embed a compressed pixel-perfect TTF version of ProggyClean for convenience.
  • Runtime font rendering is a little faster than previously.
  • You can load multiple fonts with multiple size inside the font atlas. Rendering with multiple fonts are still merged into a single draw call whenever possible.
  • The system handles UTF-8 and provide ranges to easily load e.g. characters for Japanese display.
  • Added PushFont() / PopFont().
  • Added Image() and ImageButton() to display your own texture data.
  • Added callback system in command-list. This can be used if you want to do your own rendering (e.g. render a 3D scene) inside ImGui widgets.
  • Added IsItemActive() to tell if last widget is being held / modified (as opposed to just being hovered). Useful for custom dragging behaviors.
  • Style: Added FrameRounding setting for a more rounded look (default to 0 for now).
  • Window: Fixed using multiple Begin/End pair on the same wnidow.
  • Window: Fixed style.WindowMinSize not being honored properly.
  • Window: Added SetCursorScreenPos() helper (WindowPos+CursorPos = ScreenPos).
  • ColorEdit3: clicking on color square change the edition. The toggle button is hidden by default.
  • Clipboard: Fixed logging to clipboard on architectures where va_list are passed by reference to vsnprintf.
  • Clipboard: Improve memory reserve policy for Clipboard / ImGuiTextBuffer.
  • Tooltip: Always auto-resize.
  • Tooltip: Fixed TooltigBg color not being honored properly.
  • Tooltip: Allow SetNextWindowPos() to be used on tooltips.
  • Added io.DisplayVisibleMin / io.DisplayVisibleMax to ease integration of virtual / scrolling display.
  • Added Set/GetVoidPtr in ImGuiStorage.
  • Added ColorConvertHSVtoRGB, ColorConvertRGBtoHSV, ColorConvertFloat4ToU32 helpers.
  • Added ImColor() inline helper to easily convert colors to packed 4x1 byte or 4x1 float formats.
  • Added io.MouseDrawCursor option to draw a mouse cursor for now (on systems that don't have one)
  • Examples: Added custom drawing app example for using ImDrawList api.
  • Lots of others fixes, tweaks and comments!

imgui_rounded_small

v1.20

07 Jan 19:23
Compare
Choose a tag to compare

Mostly fixes.

  • Fixed InputInt() InputFloat() label not declaring their width, breaking usage of SameLine().
  • Fixed hovering of combo boxes that extend beyond the parent window limits.
  • Fixed text input of Unicode character in the 128-255 range.
  • Fixed clipboard pasting into an InputText box not filtering the characters according to contents semantic.
  • Dragging outside area of a widget while it is active doesn't trigger hover on other widgets.
  • Activating widget bring parent window to front if not already.
  • Checkbox and Radio buttons activate on click-release to be consistent with other widgets and most UI.
  • InputText() nows consume input characters immediately so they cannot be reused if ImGui::Update is called again with a call to ImGui::Render(). (fixes #105)
  • Examples: Console: added support for History callbacks + some cleanup.
  • Various small optimisations.
  • Cleanup and other fixes.

history

v1.19

30 Dec 12:30
Compare
Choose a tag to compare
  • Tightening default style a little.
  • Added ImGuiStyleVar_WindowRounding enum for PushStyleVar() API.
  • Added SliderInt2(), SliderInt3(), SliderInt4() for consistency.
  • Widgets more consistently handle empty labels (starting with ## mark) for their size calculation.
  • Fixed crashing with zero sized frame-buffer.
  • Fixed ImGui::Combo() not registering its size properly when clipped out of screen.
  • Renamed second parameter to Begin() to 'bool* p_opened' to be a little more self-explanatory. Added more comments on the use of Begin().
  • Logging: Added LogText() to pass text straight to the log output (tty/clipboard/file) without rendering it.
  • Logging: Added LogFinish() to stop logging at an arbitrary point.
  • Logging: Log depth padding relative to start depth.
  • Logging: Tree nodes and headers looking better when logged to text.
  • Logging: Log outputs \r\n under Windows to play it nicely with \n unaware tools such as Notepad.
  • Style editor: added a button to output colors to clipboard/tty.
  • OpenGL3 example: fix growing of VBO.
  • Cleanup and other minor fixes.

save colors

v1.18

10 Dec 23:41
Compare
Choose a tag to compare
  • Added ImGuiWindowFlags_NoScrollWithMouse, disable mouse wheel scrolling on a window.
  • Added ImGuiWindowFlags_NoSavedSettings, disable loading/saving window state to .ini file.
  • Added SetNextWindowPos(), SetNextWindowSize(), SetNextWindowCollapsed() API along with SetWindowPos(), SetWindowSize(), SetWindowCollapsed(). All functions include an optional second parameter to easily set current value vs session default value vs persistent default value.
  • Removed rarely useful SetNewWindowDefaultPos() in favor of new API.
  • Fixed hovering of lower-right resize grip when it is above a child window.
  • Fixed InputInt() writing to output when it doesn't need to.
  • Added IMGUI_INCLUDE_IMGUI_USER_H define to include user file at the bottom of imgui.h without modifying the vanilla distribution.
  • ImGuiStorage helper can store float + added helpers to get pointer to stored data.
  • Setup Travis CI integration. Builds the OpenGL examples on Linux with GCC and Clang.
  • Examples: Added a "Fixed overlay" example in ShowTestWindow().
  • Examples: Re-added OpenGL 3 programmable-pipeline example (along with the existing fixed pipeline example).
  • Examples: OpenGL examples can now resize the application window.
  • Other minor fixes and comments.

v1.17

03 Dec 11:26
Compare
Choose a tag to compare
  • Added ImGuiWindowFlags_AlwaysAutoResize + example app.
  • Calling ImGui::SetWindowSize(0,0) force an autofit without zero-sizing first.
  • ImGui::InputText() support for completion/history/custom callback + added fancy completion example in the console demo app.
  • Not word-wrapping on apostrophes.
  • Increased visibility of check box and radio button with smaller size.
  • Smooth mouse scrolling on OSX (uses floating point scroll/wheel input).
  • New version of IMGUI_ONCE_UPON_A_FRAME helper macro that works with all compilers.
  • Moved IO.Font*** options to inside the IO.Font-> structure.. Added IO.FontGlobalScale setting (in addition to Font->Scale per individual font).
  • Fixed more Clang -Weverything warnings.
  • Examples: Added DirectX11 example application.
  • Examples: Created single .sln solution for all example projects.
  • Examples: Fixed DirectX9 example window initially showing an hourglass cursor.
  • Examples: Removed Microsoft IME handler in examples, too niche/confusing. Moved equivalent code to imgui.cpp instruction block.

completion example

v1.16

21 Nov 13:47
Compare
Choose a tag to compare
  • General fixing of Columns API to allow filling a cell with multiple widgets before switching to the next column.
  • Added documentation INDEX to top of imgui.cpp.
  • Fixed unaligned memory access for Emscripten compatibility.
  • Various pedantic warning fixes (now testing with Clang).
  • Added extra asserts to catch incorrect usage.
  • PushStyleColor() / PushStyleVar() can be used outside the scope of a window (namely to change variables that are used within the Begin() call).
  • PushTextWrapPos() defaults to 0.0 (right-end of current drawing region).
  • Fixed compatibility with std::vector if user decide to #define ImVector.
  • MouseWheel input is now normalized.
  • Added IMGUI_OVERRIDE_DRAWVERT_STRUCT_LAYOUT compile-time option to redefine the vertex layout.
  • Style editor: colors listed inside a scrolling region.
  • Examples: tweaks and fixes.

30b32bb4-70a9-11e4-9531-833a6e1d154b