12095 Commits

Author SHA1 Message Date
ocornut
778992face Backends: Metal, Metal4: fixed build for multi-viewports. Amend 5cf9cef. (#9574) 2026-10-07 20:36:32 +02:00
ocornut
5cf9cefbe3 Backends: Metal, Metal4: fixed build for multi-viewports. Amend f502f9c. (#9574) 2026-10-07 20:08:13 +02:00
ocornut
0cb6f6501c Merge branch 'master' into docking
# Conflicts:
#	backends/imgui_impl_metal.mm
#	backends/imgui_impl_vulkan.cpp
#	imgui.cpp
2026-10-07 19:11:40 +02:00
ocornut
b2ade5f3ad DrawList: AddRectFilled: add support for ImDrawFlags_StrokeLegacy to handle inverted coordinates + non-AA path.
Fix cases 207 and 251 in testbed.
+ add braces near an IM_APPEND_TRI() to silence PVS-Studio reasonable warning "V640  The code's operational logic does not correspond with its formatting"
2026-10-07 19:07:18 +02:00
ocornut
75ac1ab2c3 DrawList: AddCircle: fixed issue not clearing path in unlikely case where Path.Size<3. 2026-10-07 18:53:55 +02:00
ocornut
cbf4f05419 DrawList: added io.ConfigDebugDrawListDefaultsToStrokeLegacy. (#9504) 2026-10-07 18:53:55 +02:00
Mikko Mononen
9e5e0bf9b2 DrawList: added explanation for IM_POLYLINE_CONVEX_POLY_MAX_BEVELS. 2026-10-07 18:53:55 +02:00
ocornut
d23a638613 Demo: Custom Rendering: added zig-zag concave shape, tweak color, tidy up section.
Demo: Custom Rendering: tweak animated rounding.
2026-10-07 18:53:55 +02:00
ocornut
f84d77c424 DrawList: changed _GetStrokePos() to a macro. 2026-10-07 18:53:55 +02:00
ocornut
cb66fcdaac DrawList: rename ImDrawFlags_MiterOnly->ImDrawFlags_JoinMiter, ImDrawFlags_SquareCap->ImDrawFlags_CapSquare. 2026-10-07 18:53:55 +02:00
ocornut
7bccc3bc1e DrawList: AddCircle, AddCircleFilled: fixed large circles being under-tessellated (when above ~140 with default CircleTessellationMaxError). 2026-10-07 18:53:55 +02:00
ocornut
475b793baa Docs: reworked Changelog, comments. 2026-10-07 18:53:55 +02:00
ocornut
0e756a649d (Breaking) DrawList: renamed ImDrawFlags_RoundCornersXXX to ImDrawFlags_RoundXXX. (#9504) 2026-10-07 18:53:55 +02:00
ocornut
c52f84c719 DrawList: rework _SelectFringeTexture() for use by third-party extensions + rename to _SelectLineTexture(). 2026-10-07 18:53:55 +02:00
ocornut
7415edbad1 DrawList: fixed ImFontAtlasBuildUpdateTexDataCorners() packing vs render to match. 2026-10-07 18:53:55 +02:00
ocornut
dee0e34504 DrawList: amend PushDrawFlag() to report reaching capacity. 2026-10-07 18:53:55 +02:00
ocornut
451e107b3f DrawList: removed ImDrawFlags_UseTexForStrokeLegacy as it doesn't have any use now that legacy code is out of the way. 2026-10-07 18:53:54 +02:00
ocornut
230cd6feb0 DrawList: simplify ImFontAtlasBuildUpdateTexDataCorners() by merging fill/strokes loops. 2026-10-07 18:53:54 +02:00
Mikko Mononen
3dbb849acf 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-10-07 18:53:54 +02:00
Mikko Mononen
c6c352f77d 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-10-07 18:53:54 +02:00
Mikko Mononen
91dc4f456a 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-10-07 18:53:54 +02:00
Mikko Mononen
475660f53c 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-10-07 18:53:54 +02:00
thedmd
640e931284 DrawList: fixed passing large thickness value (e.g. 1e20f) to thickness crashing the code. 2026-10-07 18:53:54 +02:00
ocornut
a547deed9b DrawList: fixed AddRectFilled() path for minimum dimension. 2026-10-07 18:53:54 +02:00
ocornut
059017188d DrawList: baking half-texel in TexUvLines[] now that AddPolylineLegacy() was removed. 2026-10-07 18:53:54 +02:00
ocornut
deb9c70ace DrawList: ImDrawFlags_AALineEnds also requires ImDrawFlags_AALine, which makes it easier for widgets to opt-in AAEnds. 2026-10-07 18:53:54 +02:00
ocornut
20f17eeb6f DrawList: fixed using ImDrawFlags_UseTexForRoundCorners when ImFontAtlasFlags_NoBakedRoundCorners has also been set. 2026-10-07 18:53:54 +02:00
ocornut
a597beaf95 DrawList: fixed dropping prim flags in some paths (most for ImDrawFlags_AAXXX flags). 2026-10-07 18:53:54 +02:00
Mikko Mononen
ba918bc45c 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-10-07 18:53:54 +02:00
ocornut
7a510274ce 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-10-07 18:53:54 +02:00
ocornut
ee66cfcdf3 TabBar: simpify TabItem rendering using stroke flags.
May tend toward using _StrokeInside more but _StrokeCenterBiased is closer to current behavior.
2026-10-07 18:53:54 +02:00
ocornut
b220bffdbb Checkbox, Menus: check marks use anti-aliased ends.
Currently not a satisfying resolution.
2026-10-07 18:53:54 +02:00
ocornut
eb02a7f24c 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-10-07 18:53:53 +02:00
ocornut
46e4c26095 DrawList: removed AddPolylineLegacy(), AddConvexPolyFilledLegacy(). 2026-10-07 18:53:53 +02:00
ocornut
5181e95a46 DrawList: removed g_LEGACY_STROKES. 2026-10-07 18:53:53 +02:00
ocornut
67bcd9d545 DrawList: moved no-AA handling into _SelectFringeTexture(). 2026-10-07 18:53:53 +02:00
ocornut
f511ce18f9 DrawList: tweak _SelectFringeTexture(). move more-unlikely screen_thickness tests within already-unlikely block. re-add removed asserts. 2026-10-07 18:53:53 +02:00
ocornut
bd0f638d8b Docs: update changelog. 2026-10-07 18:53:53 +02:00
ocornut
2fdcf895c8 DrawList: moved _GetStrokePos() to a local inline function. 2026-10-07 18:53:53 +02:00
ocornut
f2cd901be6 DrawList: added PushDrawFlag(), PopDrawFlag(), ImSmallStack_<>. (#9504) 2026-10-07 18:53:53 +02:00
ocornut
7e87cb984d 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-10-07 18:53:53 +02:00
ocornut
008e0990b3 DrawList: comment about ImFontAtlasFlags_NoBakedLines. Demo: amend test bed to exercices more flags. 2026-10-07 18:53:53 +02:00
ocornut
7ccc8348bc (Breaking) Obsoleted style.AntiAliasedLinesUseTex which now only makes sense for legacy strokes. Added style.AntiAliasedLineEnds.
# Conflicts:
#	imgui.cpp
2026-10-07 18:53:53 +02:00
ocornut
02adb46a9f (Breaking) DrawList: removed ImDrawListFlags_in favor of using ImDrawFlags.
# Conflicts:
#	imgui.cpp
2026-10-07 18:53:53 +02:00
ocornut
cf85b48e55 DrawList: new ImDrawFlags API (yet unused in this commit) 2026-10-07 18:53:52 +02:00
ocornut
eb75c8056e DrawList: inverted ImDrawFlags_NoAAEnds into ImDrawFlags_AAEnds. 2026-10-07 18:53:52 +02:00
ocornut
9b608ba079 DrawList: fixed warnings, added macro to facilitate visualizing rounded corner texture usage. 2026-10-07 18:53:52 +02:00
Mikko Mononen
10aa5d92e6 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-10-07 18:53:52 +02:00
Mikko Mononen
145b838818 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-10-07 18:53:52 +02:00
Mikko Mononen
c5c76dcda5 DrawList: Optimize _SelectFringeTexture()
- store inverse line thickness in the spare texture uv component (same v was stord twice) to avoid division in _SelectFringeTexture
2026-10-07 18:53:52 +02:00