10316 Commits

Author SHA1 Message Date
Mikko Mononen
c1f781d7af DrawList: manually fix cases from merge, added missing cases of ImDrawFlags_StrokeCenterPixelAligned. 2026-10-07 18:53:50 +02:00
ocornut
5d9b691248 DrawList: misc fixes, amends (replace uses of GetColorU32, macros fixes, default flags). Demo: added rotating square, added MiterOnly checkbox. 2026-10-07 18:53:50 +02:00
Mikko Mononen
5782f4e0ee DrawList: path rendering optimizations.
- added ImRsqrtPrecise() which adds Newton-Raphson iteration for more precision
- change calculation of miter_scale_factor so that it does not have a branch
- renamed IM_POLYLINE_APPEND_* macros to IM_APPEND_* and also use them in fill convex poly
- changed the convex poly miter calculation to match the polyline to make debugging and changes easier
- split the convex poly to separate loop when ImDrawFlags_MiterOnly is specified for less branches in common case

# Conflicts:
#	imgui_draw.cpp
2026-10-07 18:53:50 +02:00
Mikko Mononen
c2e029fb98 DrawList: added stroke position to path rendering.
- added generic stroke position to all path rendering
- removed stroke folding in favor of limiting the miter width (simplifies the geometry cases)
- removed fractional stroke rendering in favor of using the integer sized rendering for everything
  - the rationale is that the in-between sizes are a bit blurry anyways, and the error we get from scaling is visually acceptable
- added stroke position option for the demo
- updated the degenerate shape handling
- remove AddLine() stroke pos handling
- removed up commented out code.
2026-10-07 18:53:50 +02:00
Mikko Mononen
d1d2f5aead DrawList: use dedicated larger texture for fractional thickness lines. 2026-10-07 18:53:50 +02:00
Mikko Mononen
ea2e5c79c0 DrawList: added square cap rendering.
- Added square cap rendering to the DrawPolyline, which can be turned on by ImDrawFlags_SquareCap
- Added draw flags to AddBezierCubic() and AddBezierQuadratic()
2026-10-07 18:53:50 +02:00
Mikko Mononen
858b2b2952 DrawList: added more robust AddConvexPolyFilled(). (#2183, #7972)
- add bevel handling for sharp corners
- add limit to the miter distance to avoid inner shape spikes
- add support for ImDrawFlags_MiterOnly to keep well behaved rendering fast
2026-10-07 18:53:50 +02:00
Mikko Mononen
049f1a799a DrawList: added special case rendering for the stroked rects when the raounding radius gets really small compared to the stroke thickness. 2026-10-07 18:53:50 +02:00
Mikko Mononen
6c7b083e0e DrawList: improved handling of rounded stroked rectangles, where rounding is less than stroke thickness. 2026-10-07 18:53:50 +02:00
Mikko Mononen
a5b8a920c3 DrawList: added better handling for rendering degenerate geometry. (#2183, #7972)
- Add ImDrawFlags_MiterOnly which is used to indicate that a path contains simple geometry and can be rendered using mitered corners
- Added handling of degenerated shapes for stroked rectangle, circle, ngon, and ellipse
- Render shapes filled when outline covers the whole shape
- Clamp very small circles and ngons, and use alpha fade below one pixel
- Added correct offset for ellipse
2026-10-07 18:53:50 +02:00
Mikko Mononen
c98d220e6f DrawList: added improved polyline rendering. (#2183, #7972)
- added 2 variants of polyline rendering
- one handles integer-sized thickness using one strip of triangles along the line
- second handles any thickness using 2 strips of triangles long the line
2026-10-07 18:53:50 +02:00
ocornut
60a934afd9 DrawList: fixed build/warnings + added pretty theorical support for _StrokeLegacy in AddLineV/AddLineH
(Squash) Various zealous warning fixes.
2026-10-07 18:53:50 +02:00
Mikko Mononen
442834a428 DrawList: changed CenterPixelAligned growth to be smoother, added stroke pos to AddLine()
- changed vertical AddLine() to be consistent with AddLineV()
- changed CenterPixelAligned growth to be smoother
- added (temporary) specialized stroke pos support for AddLine()
2026-10-07 18:53:50 +02:00
ocornut
5a5a16da4d DrawList: added _GetStrokePos() helper indirection, made flags=0 select default at runtime. 2026-10-07 18:53:50 +02:00
ocornut
2361f61526 DrawList: fixed is_truncated checks in AddRect() and AddRectFilled(). 2026-10-07 18:53:50 +02:00
ocornut
d6fee823b4 Demo: Custom Rendering: expose Stroke Position.
Demo: Custom Rendering: amend tests (to include legacy AddLine() for vertical/horizontal lines to compare.
2026-10-07 18:53:50 +02:00
Mikko Mononen
789f0d7140 DrawList: optimize non-AA non-rounded case of AddRect() 2026-10-07 18:53:50 +02:00
Mikko Mononen
9199934a7f DrawList: added ImDrawFlags_StrokeCenterPixelAligned
- added ImDrawFlags_StrokeCenterPixelAligned which center aligns stroke so that outside of the stroke is pixel aligned
- fixed AddRect() non-rounded pixel aligned case to use correnct min/max
- fixed AddRect() default case to not adjust rounding for non-rounded rects
- fixed lineV() centered offset
- renamed ImDrawFlags_StrokeCenterPixelAligned to ImDrawFlags_StrokeCenterAligned.
- reduced debug build indirections.
2026-10-07 18:53:50 +02:00
ocornut
80096045d9 DrawList: AddRect: avoid altering rounding on StrokeOutside when initial value if 0 + comments 2026-10-07 18:53:50 +02:00
ocornut
b9707d72ab DrawList: Textured Round Corners: use macros + rename locals. (#1962)
Squashed: Rename macros to IM_APPEND_VTX(), IM_APPEND_TRI()
2026-10-07 18:53:49 +02:00
Mikko Mononen
237a498c2d DrawList: Textured Round Corners: Added flags to disable textured rounded corners (#1962)
- added ImFontAtlasFlags_NoBakedRoundCorners which controls if rounded corners should be baked to texture
- added ImDrawListFlags_RoundCornersUseTex which controls if we should try to use textured roudned corners
- fixed how _FringeScaleIsInteger is calculated (we want to detect integer pixel scale)
- fixed how _FringeScale is used with textured rounded corners
2026-10-07 18:53:49 +02:00
Mikko Mononen
2665220409 DrawList: Textured Round Corners: implemented faster render path for stroked rectangles. (#1962)
- added check to render simpler geometry when (stroked) rectangle has integer coords
- render non.rounded with 4 non-AA rectangles
- added textures for corners of 1-3 thickness and 1-16 rounding
- use textured corners when possible, or fallback to generic one
2026-10-07 18:53:49 +02:00
Mikko Mononen
ae06573c9a DrawList: Textured Round Corners: first version. (#1962) 2026-10-07 18:53:49 +02:00
Mikko Mononen
37f16412d5 Fixed layout/pixel-perfect issues in various widgets (w/ g_LEGACY_STROKES toggle). (#9504) 2026-10-07 18:53:49 +02:00
ocornut
43d829885e DrawList: added ImDrawFlags_StrokeLegacy support to AddLine(). 2026-10-07 18:53:49 +02:00
Mikko Mononen
f73d8f4029 DrawList: added StrokePos flags: ImDrawFlags_StrokeInside, ImDrawFlags_StrokeOutside, ImDrawFlags_StrokeCenter, ImDrawFlags_StrokeLegacy. (#9504) 2026-10-07 18:53:49 +02:00
Mikko Mononen
6335dfb19c (Breaking) DrawList: removed half pixel offset from ImDrawList::AddLine(). (#9504) 2026-10-07 18:53:48 +02:00
tqjxlm
f502f9c980 Backends: Metal, Metal4: support rendering inside passes with multiple color attachments. (#9574)
Key the pipeline cache on all color attachment pixel formats of the render pass descriptor passed to backend's NewFrame().
2026-10-06 16:12:42 +02:00
tqjxlm
71fc553bc4 Backends: Vulkan: support rendering inside passes with multiple color attachments. (#9574)
We render to the first color attachment and leave the other ones untouched (color write mask 0).
With dynamic rendering, create one blend attachment state per PipelineRenderingCreateInfo::colorAttachmentCount. Requires the independentBlend device feature.
2026-10-06 15:57:31 +02:00
ocornut
4989b4c754 Fonts: added IMGUI_DISABLE_STB_TRUETYPE. (#9573) 2026-10-05 19:41:20 +02:00
ocornut
68bd43b2b4 Tables: fixed a bug tracking topology changes (insert new columns in the middle) when the table is not Reorderable. (#9570, #9108, #9572) 2026-10-05 18:00:45 +02:00
ocornut
ed73ef4e84 Backends: OpenGL3: fixed build for WebGL, ES2/ES3. (#2186, #3998, #3146, #3143, #8640)
Amend fe33b77
2026-10-01 19:20:39 +02:00
ocornut
a3f3e4944a (Breaking) Backends: OpenGL3: added ImGui_ImplOpenGL3_SetClipOrigin. Default to GL_LOWER_LEFT. (#2186, #3998, #3146, #3143, #8640) 2026-10-01 17:36:59 +02:00
ocornut
fe33b77f64 Backends: OpenGL3: Avoid querying glGetIntegerv(GL_CLIP_ORIGIN) again when using DrawCallback_ResetRenderState. (#2186, #3998, #3146, #3143, #8640) 2026-10-01 12:59:30 +02:00
ocornut
3f00c0d0f4 Examples: GLFW+Metal: fixed mistakenly calling ImGui_ImplGlfw_InitForOpenGL(), which broke multi-viewport support. (#9564) 2026-09-30 19:13:56 +02:00
ocornut
a9fd325ca5 Docs: add Changelog entries.
Amend 7263a23.
2026-09-30 18:51:32 +02:00
ocornut
7263a23f1b Fonts: added ImFont::AddRemapCodepointToGlyphIndex(). (#9559, #5647, #609, #5748, #8466) 2026-09-30 18:41:31 +02:00
ocornut
dfa3c0c0bb (Breaking) Fonts: rename AddRemapChar() to AddRemapCodepoint(). (#609, #5748, #9559) 2026-09-30 18:39:11 +02:00
ocornut
09d740ba32 (Breaking) Fonts: refactor ImFontLoader to allow loading from glyph_index. (#9559, #5647)
cc #9540, #8466, #8465
2026-09-30 18:39:11 +02:00
ocornut
46ff5a7aab Fonts: shallow refactor of ImFontBaked_BuildLoadGlyph() mostly to reduce an upcoming diff. (#9559) 2026-09-29 22:10:14 +02:00
ocornut
580c00c316 InputText: fixed a crash using Home key with WordWrap+ReadOnly. (#9561)
Only the change in STB_TEXTEDIT_MOVELINESTART_IMPL() is required. The others are just for nicer semantic.
2026-09-28 17:47:39 +02:00
Stanislaw Halik
db436a15bc Misc: fixed strict aliasing violation in ImHashData() affecting Clang 23 + SSE 4.2 + -flto. (#9557, #9560) 2026-09-28 17:19:42 +02:00
ocornut
09f7a0f062 Docs: tweak PR template. 2026-09-28 15:12:49 +02:00
ocornut
aa0181478b imgui_freetype: tweak rounding code. (#9348, #9233) 2026-09-25 14:22:08 +02:00
ocornut
5c6a86a9d2 imgui_freetype: fixed ExtraSizeScale (used by embedded ProggyForever) leading to non-pixel aligned vertical offset. (#9348, #9233) + Added ImRoundPositive64(), ImRoundSigned64(). 2026-09-25 14:22:08 +02:00
Brenton Bostick
e728936797 Docs: fixed typos/repeated words. (#9555) 2026-09-24 14:33:24 +02:00
Daniel Castonguay
623ba46120 DrawList: fixed dangling ImDrawList::_OwnerName when using animated label. (#9552) 2026-09-23 16:04:56 +02:00
ocornut
cc072ca90e Tables: comments for saving fix when using ImGuiTableFlags_Sortable and no user changes were made. (#9519, #9108)
Because SortOrder save is gated, it doesn't guarantee every column gets an .ini entry. Amend 1d7b37dc9b.
We set ImGuiTableFlags_Reorderable but technically any other field would work, tho ImGuiTableFlags_Reorderable makes more sense.
2026-09-22 17:13:16 +02:00
ocornut
a6784c378f Tables: fixed reconcile path being needlessly taken on first frame of every table. (#9108) 2026-09-22 16:54:13 +02:00
ocornut
7bfc192814 Tables: tweak struct packing. 2026-09-22 16:48:51 +02:00