Commit Graph

11965 Commits

Author SHA1 Message Date
Mikko Mononen
108bc3b060 DrawList: added explanation for IM_POLYLINE_CONVEX_POLY_MAX_BEVELS. 2026-08-06 18:58:10 +02:00
ocornut
a38ce24427 Demo: Custom Rendering: added zig-zag concave shape, tweak color, tidy up section. 2026-08-06 18:18:19 +02:00
ocornut
ff42226394 DrawList: changed _GetStrokePos() to a macro. 2026-08-06 18:18:00 +02:00
ocornut
b8516b3292 DrawList: rename ImDrawFlags_MiterOnly->ImDrawFlags_JoinMiter, ImDrawFlags_SquareCap->ImDrawFlags_CapSquare. 2026-08-06 18:12:11 +02:00
ocornut
32b4600ca2 DrawList: AddCircle, AddCircleFilled: fixed large circles being under-tessellated (when above ~140 with default CircleTessellationMaxError). 2026-08-06 18:12:11 +02:00
ocornut
3741affa6d Docs: reworked Changelog, comments. 2026-08-06 18:12:11 +02:00
ocornut
c5bc3ba9fe DrawList: rework _SelectFringeTexture() for use by third-party extensions + rename to _SelectLineTexture(). 2026-08-06 18:12:10 +02:00
ocornut
56a3017210 DrawList: fixed ImFontAtlasBuildUpdateTexDataCorners() packing vs render to match. 2026-08-06 18:12:10 +02:00
ocornut
bc2ce848a1 DrawList: amend PushDrawFlag() to report reaching capacity. 2026-08-06 18:12:10 +02:00
ocornut
8688cab452 DrawList: removed ImDrawFlags_UseTexForStrokeLegacy as it doesn't have any use now that legacy code is out of the way. 2026-08-06 18:12:10 +02:00
ocornut
63a36bfcc8 DrawList: simplify ImFontAtlasBuildUpdateTexDataCorners() by merging fill/strokes loops. 2026-08-06 18:12:10 +02:00
Mikko Mononen
65f176ef74 DrawList: fixed PathArcTo to not emit small segments.
- Changed PathArcTo to select start/end sample in quatized multiples of arc fast sample count
- This is done in order to avoid small segments at the start and end of the path, which causes issues with line AA ends
- Renamed CalcArcStepAndCount to CalcCornerArcStepAndCount to make it more clear that it returns the values for 90 degree arc
2026-08-06 18:12:09 +02:00
Mikko Mononen
d75d11cd2b DrawList: fixed too many detailed line textures being created.
Fixed issue where were creating detailed line textures up to detailed witdh + 1
Changed IM_DRAWLIST_TEX_LINES_DETAILED_WIDTH_MAX to IM_DRAWLIST_TEX_LINES_DETAILED_WIDTH_COUNT which no accounts for all the detailed line textures.
2026-08-06 18:12:09 +02:00
Mikko Mononen
30f70ac19c DrawList: fixed rendering issues on small and degenerate shapes.
The "does stroke cover the whole shape" used to be overly pessimistic to stroking artifacts. This was due to the fringe, where the geometry would mess up before visually closing the shape.
Fixed the issue by adding max inner offest for the AddPolyline(), which limits the inner offset and also adjusts the texture coords.
Second part of the fix was to calculate the pass the max inner offset from the common shapes (circle, ngon, ellipse, rect).
While this does not fix all the ellipse rendering issues, it limits the issue a lot.
e.g. AddRect() w/ size=5, thickness=2 used to trigger AddRectFilled() fallback because threshold was pessimistic to prevent the AddPolyline() issues.
2026-08-06 18:12:09 +02:00
Mikko Mononen
04efdebb14 DrawList: fixed overdraw issue for filled baked corner rendering.
Require all corners to fit inside the rect to avoid overdraw (or fallback to path rendering).
eg. AddRectFilled() w/ size=10, rounding=8 or 10 would break.
2026-08-06 18:12:09 +02:00
thedmd
9695af5162 DrawList: fixed passing large thickness value (e.g. 1e20f) to thickness crashing the code. 2026-08-06 18:12:09 +02:00
ocornut
d9711abaa0 DrawList: fixed AddRectFilled() path for minimum dimension. 2026-08-06 18:12:09 +02:00
ocornut
58f055a9f3 DrawList: baking half-texel in TexUvLines[] now that AddPolylineLegacy() was removed. 2026-08-06 18:12:08 +02:00
ocornut
06313c01ef DrawList: ImDrawFlags_AALineEnds also requires ImDrawFlags_AALine, which makes it easier for widgets to opt-in AAEnds. 2026-08-06 18:12:08 +02:00
ocornut
4fa220d168 DrawList: fixed using ImDrawFlags_UseTexForRoundCorners when ImFontAtlasFlags_NoBakedRoundCorners has also been set. 2026-08-06 18:12:08 +02:00
ocornut
ca9305e304 DrawList: fixed dropping prim flags in some paths (most for ImDrawFlags_AAXXX flags). 2026-08-06 18:12:08 +02:00
Mikko Mononen
3bce489b7a DrawList: fixed filled rect baked AA.
Always add 1px to the fill side of the rounded corner to prevent the corner AA to bleed into the rectangle edges.
2026-08-06 18:12:08 +02:00
ocornut
b5ef1d837d DrawList: Comments. Atlas's NoBakedLines automatically disable AA at Style level. Fix passing non-Legacy stroke mask to PushDrawFlag(). Demo: Custom Rendering: use LiveEdit everywhere. 2026-08-06 18:12:07 +02:00
ocornut
1c71e07fa0 TabBar: simpify TabItem rendering using stroke flags.
May tend toward using _StrokeInside more but _StrokeCenterBiased is closer to current behavior.
2026-08-06 18:12:07 +02:00
ocornut
9aec6df4fd Checkbox, Menus: check marks use anti-aliased ends.
Currently not a satisfying resolution.
2026-08-06 18:12:07 +02:00
ocornut
b67ced86c0 DrawList: support altering RoundCorners flags in scope as an undocumented trick/hack. (9489)
Not documented because it could become troublesome if treated as a guaranteed styling feature.
2026-08-06 18:12:07 +02:00
ocornut
691ea3ff6d DrawList: removed AddPolylineLegacy(), AddConvexPolyFilledLegacy(). 2026-08-06 18:12:07 +02:00
ocornut
5f7012f7ac DrawList: removed g_LEGACY_STROKES. 2026-08-06 18:12:07 +02:00
ocornut
fe8acacdde DrawList: moved no-AA handling into _SelectFringeTexture(). 2026-08-06 18:12:06 +02:00
ocornut
4110aa1184 DrawList: tweak _SelectFringeTexture(). move more-unlikely screen_thickness tests within already-unlikely block. re-add removed asserts. 2026-08-06 18:12:06 +02:00
ocornut
b3aee2d810 Docs: update changelog. 2026-08-06 18:12:06 +02:00
ocornut
4694b50924 DrawList: moved _GetStrokePos() to a local inline function. 2026-08-06 18:12:06 +02:00
ocornut
fb9fd9a250 DrawList: added PushDrawFlag(), PopDrawFlag(), ImSmallStack_<> 2026-08-06 18:12:06 +02:00
ocornut
59014d15e7 DrawList: consistently support scope flags (ImDrawFlags::Flags) + primitive flags.
ImDrawFlags_AAEnds and ImDrawFlags_StrokeLegacy ok. (the most important ones).
ImDrawFlags_UseTexForRoundCorners ok.
ImDrawFlags_AAFill, ImDrawFlags_AAStrokes: for primitives: only for selected ones taking flags params. Haven't added the flag to all functions because it feels like a fringe use case.
ImDrawFlags_TextNoPixelSnap supported in RenderText(), per-prim (9417)
2026-08-06 18:12:05 +02:00
ocornut
e925e453ee Demo: amend test bed to exercices more flags. 2026-08-06 18:12:05 +02:00
ocornut
7a54e76cd1 DrawList: comment about ImFontAtlasFlags_NoBakedLines. 2026-08-06 18:12:05 +02:00
ocornut
d482fe328e (Breaking) Obsoleted style.AntiAliasedLinesUseTex which now only makes sense for legacy strokes. Added style.AntiAliasedLineEnds. 2026-08-06 18:12:05 +02:00
ocornut
c52b050489 (Breaking) DrawList: removed ImDrawListFlags_in favor of using ImDrawFlags. 2026-08-06 18:12:05 +02:00
ocornut
2c5adecc11 DrawList: new ImDrawFlags API (yet unused in this commit) 2026-08-06 18:12:04 +02:00
ocornut
873afffd8f DrawList: inverted ImDrawFlags_NoAAEnds into ImDrawFlags_AAEnds. 2026-08-06 18:12:04 +02:00
ocornut
f474f9cced DrawList: fixed warnings, added macro to facilitate visualizing rounded corner texture usage. 2026-08-06 18:12:04 +02:00
Mikko Mononen
b35777c58d DrawList: Optimize AddNgon()
- test overestimate before testing more expensive details when testing if stroked ngon is actualy filled
- Note: not a common function, but the test harness is using this to draw a triangle, which makes it show up in profiling
2026-08-06 18:12:04 +02:00
Mikko Mononen
c8867c72dc DrawList: Optimize AddRectFilled()
- detect and draw non-rounded non-AA rect with less branches and calculations
- improves new AddRectFilled() overhead from 30% to 5-10%
2026-08-06 18:12:04 +02:00
Mikko Mononen
9549b6ff7e DrawList: Optimize _SelectFringeTexture()
- store inverse line thickness in the spare texture uv component (same v was stord twice) to avoid division in _SelectFringeTexture
2026-08-06 18:12:04 +02:00
ocornut
9e2b8914c9 DrawList: surround _GetStrokePos() in IM_MSVC_RUNTIME_CHECKS_OFF macro. 2026-08-06 18:12:04 +02:00
ocornut
f9030f92af ImFontAtlas: moved TexUv buffers and configurable defines to internals. 2026-08-06 18:12:03 +02:00
Mikko Mononen
8c2d1befc6 DrawList: Added some comments and amended existing ones 2026-08-06 18:12:02 +02:00
Mikko Mononen
21930ad65c DrawList: Revert texture selection to simple round() in _SelectFringeTexture
- revert texture selection to use just (inlined) round()
- the values were tuned to hide texture selection pops on small thickness
- since we're using super sampling for the problematic range, the tweaks are not necessayr anymore
2026-08-05 21:24:56 +02:00
Mikko Mononen
fe6094886f DrawList: No AA ends when line AA is disabled 2026-08-05 21:24:56 +02:00
Mikko Mononen
4da24b1283 DrawList: merged _AddPolyline back into AddPolyline.
- AddPolyline used to call different versions of _AddPolyline, the separation is not needed anymore, one less function call in debug mode
2026-08-05 21:24:56 +02:00