393 Commits (927472f5ff978bcc9f67708316481a3fcae4c04d)

Author SHA1 Message Date
omar c262276988 Version 1.74 WIP 5 years ago
omar d5efe16157 Version 1.73 5 years ago
omar 52deb415e0 Internal: Refactored internal RenderMouseCursor so colors can be specified. (#2614) 5 years ago
omar 098591fe4c ImDrawListSplitter: fixed an issue merging channels if the last submitted draw command used a different texture. (#2506) 5 years ago
omar 3b014d0c31 Merge branch 'features/ellipsis_rendering'
# Conflicts:
#	imgui.cpp
5 years ago
omar 7d5a17e5e4 Remove trailing spaces (grep for ' \r?$' in visual studio) 5 years ago
omar 57623c15dd Font: Narrow ellipsis: various minor stylistic tweaks (#2775) 5 years ago
Rokas Kupstys 45405f0dc9 Font: implement a way to draw narrow ellipsis without relying on hardcoded 1 pixel dots. (#2775)
This changeset implements several pieces of the puzzle that add up to a narrow ellipsis rendering.

## EllipsisCodePoint

`ImFontConfig` and `ImFont` received `ImWchar EllipsisCodePoint = -1;` field. User may configure `ImFontConfig::EllipsisCodePoint` a unicode codepoint that will be used for rendering narrow ellipsis. Not setting this field will automatically detect a suitable character or fall back to rendering 3 dots with minimal spacing between them. Autodetection prefers codepoint 0x2026 (narrow ellipsis) and falls back to 0x0085 (NEXT LINE) when missing. Wikipedia indicates that codepoint 0x0085 was used as ellipsis in some older windows fonts. So does default Dear ImGui font. When user is merging fonts - first configured and present ellipsis codepoint will be used, ellipsis characters from subsequently merged fonts will be ignored.

## Narrow ellipsis

Rendering a narrow ellipsis is surprisingly not straightforward task. There are cases when ellipsis is bigger than the last visible character therefore `RenderTextEllipsis()` has to hide last two characters. In a subset of those cases ellipsis is as big as last visible character + space before it. `RenderTextEllipsis()` tries to work around this case by taking free space between glyph edges into account. Code responsible for this functionality is within `if (text_end_ellipsis != text_end_full) { ... }`.

## Fallback (manually rendered dots)

There are cases when font does not have ellipsis character defined. In this case RenderTextEllipsis() falls back to rendering ellipsis as 3 dots, but with reduced spacing between them. 1 pixel space is used in all cases. This results in a somewhat wider ellipsis, but avoids issues where spaces between dots are uneven (visible in larger/monospace fonts) or squish dots way too much (visible in default font where dot is essentially a pixel). This fallback method obsoleted `RenderPixelEllipsis()` and this function was removed. Note that fallback ellipsis will always be somewhat wider than it could be, however it will fit in visually into every font used unlike what `RenderPixelEllipsis()` produced.
5 years ago
omar c4ff1b3578 ImDrawList: clarified the name of many parameters so reading the code is a little easier. (#2740) 5 years ago
omar f624455d7b Version 1.73 WIP 6 years ago
omar 6a0d0dab5a Version 1.72b (patch for nav) 6 years ago
omar 9183e7c426 Version 1.73 WIP 6 years ago
omar ecb9b1e2eb Version 1.72 6 years ago
omar 51853292cc ImDrawList: Using ImDrawCornerFlags instead of int in various apis.
Demo: Using ImGuiColorEditrFlags instead of int.
6 years ago
omar d52c6316c8 Renamed ImFontAtlas::CustomRect to ImFontAtlasCustomRect. Keep redirection typedef (will obsolete). 6 years ago
omar 82711251b6 Internals: ImGuiListClipper using absolute coordinate (instead of relative one). Minor no-op tweaks + ImDrawListSplitter assert 6 years ago
omar 1dd322c6fb Style: Attenuated default opacity of ImGuiCol_Separator in Classic and Light styles. 6 years ago
omar dd41df3e98 Word-wrapping: Fixed overzealous word-wrapping when glyph edge lands exactly on the limit. Because of this, auto-fitting exactly unwrapped text would make it wrap. (fixes initial 1.15 commit, 78645a7d). 6 years ago
omar e9b92d1cef Disable -Wpragmas warning in GCC to avoid relying on version checks, as unusual/forks/mods don't appear to always have same warning<>version. (#2618)
+ Fix version number in imgui.h
6 years ago
omar b82e99c032 ImDrawList: Fixed CloneOutput() helper crashing. Also removed unnecessary risk from ImDrawList::Clear(), draw lists are being clear before use each frame anyway. (#1860) 6 years ago
omar 2645a2516f ImDrawList::ChannelsSplit(), ImDrawListSlitter: Fixed an issue with merging draw commands between channels 0 and 1. (#2624) Introduced by cef88f6aae. 6 years ago
omar 5286ecb8a7 Version 1.72 WIP 6 years ago
omar 2da1c66d15 Version 1.71 + comments 6 years ago
omar 4597632662 Readme, comments, dear imgui prefixes 6 years ago
omar a9b5c834b6 ImDrawListSplitter: Don't merge draw commands when crossing a VtxOffset boundary + Renamed fields ImDrawChannels to consistently suggest those are internal structures. 6 years ago
omar d8435c7710 ImDrawListSplitter: Fix idx offset when merging (cef88f6) (#2591) 6 years ago
omar afa3978ff6 Internals: Added drawlist and color arg to RenderArrow(), RenderBullet(). Reordered args for RenderPixelEllipsis. 6 years ago
omar cef88f6aae ImDrawListSplitter: Support merging consecutive draw commands straddling two channels. Support zero-init. 6 years ago
omar f1f4b42d91 ImDrawListSplitter: extracted out of ImDrawList. Down the line we may obsolete the ImDrawList functions and encourage users to store the splitter aside, in the meanwhile ImDrawList holds a splitter.
(This will allow columns/table to recurse.)
6 years ago
omar 8abf1313aa ImDrawList: Fix broken channel splitting (another issue when the first channel is empty) (#2591) + fixed warnings with newer VS 6 years ago
Sebastian Krzyszkowiak bff7202ff2 Include <alloca.h> also when __SWITCH__ is defined (#2595)
Fixes compilation with devkitPro for Nintendo Switch
6 years ago
omar 42c98c5eea ImDrawList: Fix broken channel splitting (broken by d1e8b69) (#2591) 6 years ago
omar d1e8b698d0 ImDrawList: Added ImDrawCmd::VtxOffset value to support large meshes (64k+ vertices) using 16-bits indices. To enable the feature, the renderer back-end needs to set 'io.BackendFlags |= ImGuiBackendFlags_HasVtxOffset' and honor the ImDrawCmd::VtxOffset field. Otherwise the value will always be zero. This has the advantage of preserving smaller index buffers and allowing to execute on hardware that do not support 32-bits indices.
ImDrawList: Added ImDrawCmd::IdxOffset value, equivalent to summing element count for each draw command. This is provided for convenience and consistency with VtxOffset. (#2591)
6 years ago
omar 40b9e5e0b4 ImDrawList: Store initial flags for the frame in ImDrawListSharedData, reducing code duplication in setting up the flags. 6 years ago
omar 34b881eb12 ImFontGlyphRangesBuilder: Fixed unnecessarily over-sized buffer, which incidentally was also not fully cleared. Fixed edge case overflow when adding character 0xFFFF. (#2568) 6 years ago
omar f242cd4d8a Fixed GCC mem-access warnings (#2565)
+ using "if defined" more consistently for Clang.
6 years ago
Lionel Landwerlin 679cf7434e Fix undefined behavior (#2561) 6 years ago
omar 42fc563fed Version 1.71 WIP + fixed minor typo 6 years ago
omar d1d5075b66 Version 1.70 6 years ago
omar 0f2852806c Amend 48a09a7 with changelog, breaking changes, tweak demo code for spacing. (#2518) 6 years ago
Richard Mitton 4c0f34fd5d Improved algorithm for mitre joints on thick lines 6 years ago
omar c8fd4afd75 Misc: Added IM_MALLOC/IM_FREE macros mimicking IM_NEW/IM_DELETE so user doesn't need to revert to using the ImGui::MemAlloc()/MemFree() calls directly. 6 years ago
omar 8dab7ac021 InputText: Made Shift+Tab consistently do nothing regardless of whether the back-end emits both char and keys or just keys. (#2467, #1336) 6 years ago
Nicolas Noble d9568c717d Silencing -Wstack-protector (#2459) 6 years ago
omar 221bf93a55 Comments, todo list, remove trailing spaces. 6 years ago
omar cf2c52282d Version 1.70 WIP 6 years ago
omar 55c02099c5 Version 1.69, comments, typos 6 years ago
omar a92c587c75 Added GetGlyphRangesVietnamese() helper. (#2403) 6 years ago
Bruce Mitchener b5d57a6615 Fix typos. (#2413) 6 years ago
Elias Daler c3ea1748dc Fix -Wconversion warning (#2379)
The warning was caused by implicit conversion from pointer type which
NULL has to non-pointer type, e.g. if ImTextureID is long int
6 years ago