514 Commits (bcdc8bcc4b8a30a1e0451b96ba51d68e4cab9b09)

Author SHA1 Message Date
omar c7f5876f8a Internals: backport window HitTestHole code from docking branch + RenderRectFilledWithHole() helper. (#1512, #3368) 4 years ago
omar b335225caa Internals: Extract ImFontAtlasBuildRender1bppRectFromString() out of ImFontAtlasBuildRenderDefaultTexData() + minor renaming, comments 4 years ago
omar 550f110354 InputText, ImDrawList: Fixed assert triggering when drawing single line of text with more than ~16 KB characters. (#3349) 4 years ago
omar fb7f6cab8c Backends: Amend, docs + extra comments. (#3330, #3245) 4 years ago
omar 89685b346c ImDrawList: Fixed minor bug introduced in 1.75 where AddCircle() with 12 segments would generate an extra unrequired vertex.
Actual missing code for d3b37180a3, thanks @domgho!
4 years ago
omar 3a6c9907cd Texture-based thick lines: Minor tweaks and rename toward merging in master. Changes to allow changing AA_SIZE (disable texture path). 4 years ago
Ben Carter b5bae9781d Texture-based thick lines: Only use textured lines for integer line widths 4 years ago
omar 78d6bdf080 Texture-based thick lines: Remove unnecessary indirection in fetching UV data, removed lerp call, renames, tweaks. 4 years ago
Omar a07c8b6999 Texture-based thick lines: Fixes for AddCustomRect api, add IMGUI_HAS_TEXLINES define (temporarily) to facilitate working with test cases, Demo allows growing FrameBorderSize for testing 4 years ago
Ben Carter 21d9e8e1f4 Texture-based thick lines: Simplified line width calculation code and removed hack for thickness 1.0 lines 4 years ago
Ben Carter 403bf45245 Texture-based thick lines: Allow interpolation between textures for non-integer line widths 4 years ago
omar 222b7ddbfa Texture-based thick lines: Tweaks, fix for truetype builder. 4 years ago
Ben Carter 741ab74b55 Texture-based thick lines: Improvements to code for drawing anti-aliased lines using textures
Moved line width into a constant
Removed test code (now in imgui-tests)
Improved matching between geometry and texture rendering at non-integer sizes
4 years ago
Ben Carter 1d3c3070d8 Texture-based thick lines: Initial version of AA line drawing using textures (press SHIFT to enable) 4 years ago
Ben Carter 8e4046e13b Atlas build use GetCustomRectByIndex() + comments, rename, and shallow merge from tex_antialiasing_lines branch. 4 years ago
omar ab4ef822f0 Version 1.78 WIP 4 years ago
Rokas Kupstys 0738611559 Misc: Bunch of code formatting changes suggested by a pass running 'astyle' 4 years ago
omar 9418dcb693 Version 1.77
+ fix minor clang-tidy warnings which seems reasonable
4 years ago
omar 8ead38c100 Clang: Reduce uses of __has_warning for overall sanity, as compilers are hostile to software targetting multiple compiler version. 4 years ago
omar 704723744e Disabled latest overzealous warnings from Clang 4 years ago
ocornut c658cba22b Comments, reworded some !(xxx && xxx) complex expression to be a little less confusing. 4 years ago
ocornut 64d8d302fb ImDrawList: Fixed VtxOffset change leading to unnecessary leading empty ImDrawCmd in certain cases. 4 years ago
ocornut 84862ec78e ImDrawList, ImDrawListSplitter, Columns: Fixed an issue where changing channels with different TextureId, VtxOffset would incorrectly apply new settings to draw channels. (#3129, #3163) 4 years ago
ocornut 3bef743df4 ImDrawList: Clarifying and guarateeing that CmdBuffer.back()->UserCallback should be always be NULL. 4 years ago
ocornut b1f2eacdf3 ImDrawList: Prefixed internal functions with underscore, renamed UpdateClipRect() to _OnChangedClipRect(), UpdateTextureID() -> _OnChangedTextureID() 4 years ago
ocornut 117d57df5b ImDrawList: Additional comments and extracted bits into ImDrawList::PopUnusedDrawCmd() 4 years ago
ocornut a6bb047bab ImDrawList: Store header/current ImDrawCmd in instance to simplify merging code. Amend 0320e72, toward #3163, #3129 4 years ago
ocornut f6120f8e16 ImDrawList, ImDrawListSplitter, Columns: Fixed an issue where starting a split when current VtxOffset was not zero would lead to draw commands with wrong VtxOffset. (#259 4 years ago
ocornut 41f47c853b ImDrawList: Amend 0320e72 removed an unnecessary test. 4 years ago
ocornut 0320e7257b ImDrawList: Small refactor to create empty command when beginning the frame, allowing to simplify some functions.
+ Missing clearing two fields in ClearFreeMemory() (was hamrless)
4 years ago
ocornut 003153b3ac ImDrawList: Tweaks to make style consistent (using pointers, same local names). Added comments. Should be no-op. 4 years ago
thedmd e22e3f300a ImDrawList: Fixed an issue when draw command merging or cancelling while crossing the VtxOffset boundary would lead to draw command being emitted with wrong VtxOffset value. (#3129, #3163, #3232) 4 years ago
ocornut 41e8837f59 Comments, adding some spacing in ImVec2() constructors. 4 years ago
ocornut 417ac68f82 Internals: AddPolyline: Add spaces for consistency, renaming. 4 years ago
Maru 6b80bd9cc3 Fix GetGlyphRangesKorean() end-range to end at 0xD7A3 (instead of 0xD79D). (#348, #3217)
https://en.wikipedia.org/wiki/Hangul_Syllables
4 years ago
Clownacy a2454f2a45
Use __NEWLIB__ instead of __SWITCH__ and __CYGWIN__ for alloca.h-detection (#3070)
Cygwin uses newlib, so it's covered by the __NEWLIB__ check.
You can see how it defines __NEWLIB__ here: https://cygwin.com/git/?p=newlib-cygwin.git;a=blob;f=newlib/configure.in#l453
5 years ago
Ryan Pavlik 8cbff5ccb2 Fix various typos. (#3161)
(found by Debian's lintian on a package that uses imgui.)
(found by codespell.)
5 years ago
omar 5ac5d3674f Removed unncessary ID (first arg) of ImFontAtlas::AddCustomRectRegular() function. 5 years ago
omar e8c986b34e Version 1.77 WIP 5 years ago
omar 5503c0a12e Version 1.76
+ fixed PVS warning, update demo binaries, update readme image
5 years ago
omar cc0d4e346a Misc: Added an explicit compile-time test for non-scoped IM_ASSERT() macros to redirect users to a solution + fixed our stb wrappers.
+ Nav: Use nav layer enum, comments.
5 years ago
omar bdd31ec4db Internal: Refactor: Moved RenderColorRectWithAlphaCheckerboard() to imgui_draw.cpp, tweaked signature. 5 years ago
omar 0bbbbe0f68 Internal: Refactor: Moved RenderArrow, RenderBullet, RenderCheckMark to imgui_draw.cpp, changed RenderCheckMark to avoid using ImGui context 5 years ago
ocornut 339ffd25a9 Internals: Renamed ImBoolVector to ImBitVector, added low-level loose function to replicate the behavior include a help SetBitRange() function. 5 years ago
ocornut 0850b46c88 ImDrawList: Internals: Added IM_DRAWLIST_ARCFAST_TESSELLATION_MULTIPLIER setting. 5 years ago
omar 0283a6e566 ImFont: Demo, Store Used4kPagesMap[] map in ImFont to facilitate iteration on all codepoints with a large value of IM_UNICODE_CODEPOINT_MAX. (#2815)
Demo uses IsGlyphRangeUnused()
5 years ago
Sam Hocevar c8ea0a017d Unicode: UTF32 support improvements (#2541, #2538, #2815)
- Make ImWchar32 unsigned.
 - Fix Win32 version of ImFileOpen by including windows.h sooner.
 - Make ImGuiIO::AddInputCharacterUTF16() more robust by disallowing illegal
surrogate pairs.
 - Allow pushing higher plane codepoints through ImGuiIO::AddInputCharacter().
 - Minor cleaning up in the high-plane Unicode support.
 - Fix Clang -Wunreachable-code warning
5 years ago
Cloud Wu 6d59653e82 Unicode: full Unicode Support (6 squashed commits) (#2541, #2538)
fix build for WideCharToMultiByte
[3181ff1e] Full Unicode Support
[6c9e73ac] Fix ImTextCountUtf8BytesFromChar and ImTextCharToUtf8, these APIs assume the input is an unicode code point, not UTF-16
[ba85665b] Add AddInputCharacterUTF16 for windows backend to handle WM_CHAR
[fafdcaf0] Use Windows API to convert UTF-16 for ImFileOpen
[dc7d5925] Use windows API to convert UTF-16 for clipboard
5 years ago
Omar 09329ea4e6 Fix Clang 9.0 zealous warnings 5 years ago
omar d284a6cffc InputText: Fixed password fields displaying ASCII spaces as blanks. Fixed non-ASCII space occasionally creating unnecessary empty polygons. (#2149, #515) 5 years ago
omar ccaec1a270 Version 1.76 WIP 5 years ago
omar d16c87a5b1 Internals: Minor renaming 5 years ago
omar 58b3e02b95 Version 1.75
Comments
5 years ago
omar d37d25470a Added IMGUI_DISABLE compile-time definition to make all headers and sources empty. 5 years ago
Rokas Kupstys 9cff4d6e5e Columns: ImDrawList::Channels* functions now work inside columns.
Use a private splitter in columns, paving way for removal of obsolete ImDrawList::Channels* functions.
5 years ago
omar 5363af7f47 AddCircle, AddCircleFilled: Add auto-calculation of circle segment counts (amends)
Tweak default max error value, Changelog, comments, path-fast for 12 segments circles, made LUT store ImU8
5 years ago
Ben Carter 051ce0765e AddCircle, AddCircleFilled: Add auto-calculation of circle segment counts 5 years ago
omar d581939387 Removed trailing spaces. 5 years ago
omar f70204f2f4 Minor bits, placeholder aimed at facilitating merging of Tables branch into Docking 5 years ago
omar a610f1da52 Bezier Tweaks, fixed parameter order of 3831d50 5 years ago
Rokas Kupstys 3831d50ab9 Add ImBezierClosestPoint() function which returns a point on bezier curve which is closed to a specified point. 5 years ago
Ben Carter 0e74103659 ImDrawList: Add AddNgon(), AddNgonFilled() API. 5 years ago
Ben Carter 697f15e339 Added PrimUnreserve() API. Obsoleted calling ImDrawList::PrimReserve() with a negative count. 5 years ago
omar 8342e5b91a Amend previous commits (added ImGuiMouseCursor_NotAllowed enum + new cursors in GLFW 3.4)
Amend b5cad20d79, 945a509773
+ unrelated minor typos
5 years ago
omar abaf0256b8 Version 1.75 WIP
Added message to font file loading assert.
5 years ago
omar bdce833636 Version 1.74 5 years ago
omar 51e2e9b239 ImVector: Added shrink() helper. ImFont::RenderText minor optimisation for debug build. Misc: Metrics shows tab names because we now have them. 5 years ago
omar 51a02b319c Added IM_UNICODE_CODEPOINT_MAX. Changed specs of ImFontAtlas::AddCustomRectRegular() (breaking change). 5 years ago
stfx 6bf5aed325 Declaration and assignment can be joined, Member function may be 'const'. (#2875) 5 years ago
Rokas Kupstys c863c1f6a1 Clean up number rounding. Now it is more obvious what code is doing. (#2862)
Add IM_ROUND() macro
Replace IM_FLOOR(n + 0.5f) and ImFloor(n + 0.5f) with IM_ROUND(n)
5 years ago
Rokas Kupstys 714fe29d1a Replace manual flooring with IM_FLOOR() macro. (#2850)
Macro is used to ensure that flooring operation is always inlined even in debug builds. __forceinline does not force inlining in /Od builds with MSVC.

(cherry picked from commit bc165df6fd7969605bbc07b8a6d3d28f9109e8f3)
5 years ago
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 5 years ago
omar 6a0d0dab5a Version 1.72b (patch for nav) 5 years ago
omar 9183e7c426 Version 1.73 WIP 5 years ago
omar ecb9b1e2eb Version 1.72 5 years ago
omar 51853292cc ImDrawList: Using ImDrawCornerFlags instead of int in various apis.
Demo: Using ImGuiColorEditrFlags instead of int.
5 years ago
omar d52c6316c8 Renamed ImFontAtlas::CustomRect to ImFontAtlasCustomRect. Keep redirection typedef (will obsolete). 5 years ago
omar 82711251b6 Internals: ImGuiListClipper using absolute coordinate (instead of relative one). Minor no-op tweaks + ImDrawListSplitter assert 5 years ago
omar 1dd322c6fb Style: Attenuated default opacity of ImGuiCol_Separator in Classic and Light styles. 5 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). 5 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
5 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) 5 years ago
omar 2645a2516f ImDrawList::ChannelsSplit(), ImDrawListSlitter: Fixed an issue with merging draw commands between channels 0 and 1. (#2624) Introduced by cef88f6aae. 5 years ago
omar 5286ecb8a7 Version 1.72 WIP 5 years ago
omar 2da1c66d15 Version 1.71 + comments 5 years ago
omar 4597632662 Readme, comments, dear imgui prefixes 5 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. 5 years ago
omar d8435c7710 ImDrawListSplitter: Fix idx offset when merging (cef88f6) (#2591) 5 years ago
omar afa3978ff6 Internals: Added drawlist and color arg to RenderArrow(), RenderBullet(). Reordered args for RenderPixelEllipsis. 5 years ago
omar cef88f6aae ImDrawListSplitter: Support merging consecutive draw commands straddling two channels. Support zero-init. 5 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.)
5 years ago