ocornut
ea756ede16
Fonts: reorder ImFontFlags according likelihood of being useful.
2025-06-11 15:59:20 +02:00
ocornut
1b51a88bba
Fonts: moved compare operators to internal. Removed commented out ones aimed legacy backends: not needed anymore since we didn't rename ImTextureID.
2025-06-11 15:59:20 +02:00
ocornut
91ed6e67b4
Fonts: fixed support for multiple atlases.
...
Moved FontAtlasOwnedByContext to OwnerContext
# Conflicts:
# imgui.cpp
# imgui_internal.h
2025-06-11 15:58:29 +02:00
ocornut
65e6039979
Fonts: remove unnecessary ImDrawListSharedData::FontAtlas which is actually getting in the way of using multiple atlases.
2025-06-11 15:57:44 +02:00
ocornut
46fa9e8efb
Fonts: Debug display status. Fixed truncated raw texture id. Fixed FormatTextureIDForDebugDisplay(). Comments.
2025-06-11 15:57:35 +02:00
ocornut
f6735c223c
Fonts: remove ImFontHooks in favor of a AddRemapChar() implementation.
2025-06-11 15:57:35 +02:00
ocornut
89e880dfd1
Fonts: adding ImFontHooks for codepoint remapping.
2025-06-11 15:57:35 +02:00
ocornut
8523cbdf58
Fonts: rework ImFontLoader::FontBakedLoadGlyph() interface
2025-06-11 15:57:35 +02:00
ocornut
b32ef3c05d
Fonts: make RasterizerDensity a dynamic field. (temporarily exposed as SetFontRasterizerDensity()).
...
# Conflicts:
# imgui.cpp
# imgui.h
2025-06-11 15:57:35 +02:00
ocornut
5310f5fba3
Fonts: rework toward reducing reliance on ImFontConfig::DstFont since we ought to separate them.
2025-06-11 15:57:23 +02:00
ocornut
2b0d49a905
Fonts: make ImFont::Sources a vector.
...
Later it should become a ImSpan<>
2025-06-11 15:57:23 +02:00
ocornut
e7efe94fd2
Fonts: shallow rework of ImFontAtlasBakedAddFontGlyph() to facilitate upcoming change.
2025-06-11 15:57:23 +02:00
ocornut
890fff92fd
Fonts: rename many internal functions for consistency. No other changes.
2025-06-11 15:57:23 +02:00
ocornut
c4fa9bb61f
Fonts: add ImFontGlyph::SourceIdx. Extract code out of DebugNodeFont() into DebugNodeFontGlyphesForSrcMask().
...
(src_mask unused in this commit)
2025-06-11 15:57:23 +02:00
ocornut
bcd1a94b89
Fonts: Extract ImFontAtlasBuildGetFontBaked() out of ImFont::GetFontBaked() mostly for consistency with upcoming changes + tweak locals in AddFont().
2025-06-11 15:57:23 +02:00
ocornut
7840e453b5
Fonts: ImFontAtlasBuildInit() is always called with atlas->Builder == NULL.
2025-06-11 15:57:23 +02:00
ocornut
eb650c468a
Fonts: fixed unused variable warning.
2025-06-11 15:57:00 +02:00
ocornut
c43b138a69
Fonts: no need to load current baked on SkipItems window? + removed unused field.
...
Avoid baked staying active after GC. Might cause issues.
# Conflicts:
# imgui.cpp
2025-06-11 15:56:59 +02:00
ocornut
cdfa537adf
Fonts: packing of shared basic/line/cursor data uses more public API.
2025-06-11 15:56:39 +02:00
ocornut
ed2bb2cff0
Fonts: encode additional data in ImFontAtlasRectId to detect invalid id + added Rects debug browser.
2025-06-11 15:56:39 +02:00
ocornut
0436fba13c
Fonts: fixed compaction gc-ing baked fonts used in the current frame + rename.
2025-06-11 15:56:39 +02:00
ocornut
e8035b94e5
Fonts: misc tidying up.
2025-06-11 15:56:38 +02:00
ocornut
d789263e08
Fonts: internal rendering uses higher level functions.
2025-06-11 15:56:38 +02:00
ocornut
12599da53d
Fonts: do not mark whole ImTextureData struct as IMGUI_API to fix warning when used in ImVector<> (8559)
2025-06-11 15:56:38 +02:00
ocornut
fb5c537080
Fonts: changing loader/backend or loader flags may be done without losing custom rects. Sharing more code.
2025-06-11 15:56:38 +02:00
ocornut
526a5d0f8a
Fonts: tidying up.
2025-06-11 15:56:24 +02:00
ocornut
1ea9ff3677
Fonts: add optional out parameter to AddCustomRect()
2025-06-11 15:56:24 +02:00
ocornut
074bf39e40
Fonts: GC Compact All exposed in Metrics->Memory Allocations includes compacting texture data.
2025-06-11 15:56:24 +02:00
ocornut
23dc46c4f8
Fonts: added RemoveCustomRect().
...
+ internally add ImFontAtlasPackReuseRectEntry()
2025-06-11 15:56:24 +02:00
ocornut
e9cf3de58f
Fonts: moved ImFontAtlasRectId back to public API.
2025-06-11 15:56:24 +02:00
ocornut
69d28f867c
Fonts: added ImFontAtlasRectId_Invalid == -1
2025-06-11 15:56:24 +02:00
ocornut
db30e1b5b6
(Breaking) Fonts: rework GetCustomRect() api. Reintroduce ImFontAtlasRect.
2025-06-11 15:55:51 +02:00
ocornut
f40274702d
(Breaking) Fonts: renamed AddCustomRectRegular() -> AddCustomRect().
2025-06-11 15:55:51 +02:00
ocornut
253dff7656
Fonts: Comments.
2025-06-11 15:55:38 +02:00
ocornut
9324961cd2
Fonts: fixed calling AddFontXXX not invalidating texture for legacy backends.
2025-06-11 15:55:28 +02:00
ocornut
44498825cd
(Breaking) Fonts: PushFont() default to preserve current font size.
2025-06-11 15:54:53 +02:00
ocornut
168b97c291
Fonts: removed size rounding in AddFont() which breaks relative sizing of merged fonts (8502)
...
# Conflicts:
# imgui.cpp
2025-06-11 15:54:52 +02:00
ocornut
2de15dc64b
Fonts: fixed legacy backend path preloading all sources sizes erroneously + failing to use ellipsis.
2025-06-11 15:54:26 +02:00
ocornut
5460903f96
Fonts: awkwardly alias old TexID name to TexRef using an union (may backtrack and just keep old name)
2025-06-11 15:54:26 +02:00
ocornut
cb4c03756a
Fonts: detect if backend assign to texture on creation but doesn't update Status.
2025-06-11 15:54:26 +02:00
ocornut
a548cd9934
Fonts: avoid both ImTextureRef fields being set simultaneously.
2025-06-11 15:54:12 +02:00
ocornut
0fff7ceda4
Fonts: comments, tweaks, minor amends.
...
Comments, tweaks
2025-06-11 15:53:42 +02:00
ocornut
8bd1fc4f04
Textures: Added ImTextureRef::GetTexID() mostly for consistency.
...
Without it the logic may seem more confusing to grok for end-user.
2025-06-11 15:53:42 +02:00
ocornut
cc65015e4e
Fonts: fixed crashing password fields.
...
# Conflicts:
# imgui_internal.h
2025-06-11 15:53:41 +02:00
ocornut
41517bca0c
(Breaking) Fonts: renamed CalcCustomRectUV() to GetCustomRectUV() for simplicity.
2025-06-11 15:52:21 +02:00
ocornut
4048494aa1
Fonts: rename ImFontAtlasBuildClearTexture() to ImFontAtlasBuildClear().
2025-06-11 15:52:21 +02:00
ocornut
f816b861fc
(Breaking) Fonts: rename GetCustomRectByIndex() to GetCustomRect(). Made return struct const.
2025-06-11 15:52:12 +02:00
ocornut
85d0507580
Fonts: narrowed invalid value for ImFontAtlasRectId to -1 a we will change implementation.
2025-06-11 15:52:12 +02:00
ocornut
b12c42e75d
Fonts: change uses of ImFontAtlasRect to ImTextureRect for simplicity.
2025-06-11 15:52:12 +02:00
ocornut
e76cfe5aad
Fonts: fixed implicit init when calling AddCustomRectRegular(). LoaderShutdown match BuildDestroy.
2025-06-11 15:52:12 +02:00
ocornut
52a6863771
Textures: ImTextureData pixels are not immediately destroyed on setting ImTextureStatus_WantDestroy.
2025-06-11 15:52:12 +02:00
ocornut
735d31e54a
Demo: Exposed some basic UI in demo for sanity.
2025-06-11 15:52:04 +02:00
ocornut
41a0e991f0
Fonts: Added UI to edit FreeType loader flags. Added ImFontAtlasBuildReloadAll() / ImFontAtlasBuildReloadFont()
2025-06-11 15:51:56 +02:00
ocornut
40f988ce2a
Fonts: in ShowFontAtlas() preserve open-state for latest texture. Improve debug display.
2025-06-11 15:51:56 +02:00
ocornut
c98e3c0eff
Fonts: ImFontConfig::GlyphExcludeRanges is owner and copied.
2025-06-11 15:51:56 +02:00
ocornut
da51485e17
Fonts: Obsolete GetGlyphRangesXXX() functions. Update font documentation.
2025-06-11 15:51:56 +02:00
ocornut
93410c47e1
Fonts: Fixed various small warnings / build issues.
2025-06-11 15:51:56 +02:00
ocornut
dec8d3863a
Fonts: Added a ImFontFlags_NoLoadError flag to let user code try file paths. (3611)
2025-06-11 15:51:56 +02:00
ocornut
131f5c57ab
Textures: Detect when using a texture that's about to be destroyed.
2025-06-11 15:51:56 +02:00
ocornut
0b71339122
Demo: Add a "Fonts" section for visibility.
2025-06-11 15:51:33 +02:00
ocornut
161e222322
Fonts: GetFontBaked() default to searching for closest size font.
2025-06-11 15:51:30 +02:00
ocornut
ef6beaeff6
Fonts: removed LockSingleSrcConfigIdx which isn't needed anymore since we don't load glyphs in ImFontAtlasBuildAddFont().
2025-06-11 15:47:49 +02:00
ocornut
d8a612f73b
Fonts: Fallback glyph is now lazily loaded on demand (yay!). Moving ImFontBaked:: functions outside of class.
2025-06-11 15:47:49 +02:00
ocornut
78a17038c2
imgui_freetype: no need to store metrics locally.
2025-06-11 15:47:49 +02:00
ocornut
18c8a93cca
Fonts: Rework ImFontLoader signatures.
...
InitBaked may return false to signify this size is not supported.
2025-06-11 15:47:49 +02:00
ocornut
c06a7585a3
Fonts: A font source can specify its own loader/backend.
2025-06-11 15:47:41 +02:00
ocornut
1cfc0de31d
Fonts: Core allocates per-baked-per-src backend buffers, to allow having custom backend per font source. Backend BakedInit/Destroy/AddGlyph process a single source.
2025-06-11 15:47:41 +02:00
ocornut
d59f10d7f5
Fonts: reinstated ImFontAtlasBuildSetupFontCreateEllipsisFromDot() compatible with baked system, lazily baked.
2025-06-11 15:47:41 +02:00
ocornut
76b252f80a
Fonts: Added ImFontAtlasBakedSetFontGlyphBitmap().
2025-06-11 15:47:41 +02:00
ocornut
92993e68c8
Fonts: Baked system, fix subsequent sources overriding shared font metrics.
2025-06-11 15:47:41 +02:00
ocornut
dc1320df64
Fonts: ImFontFlags: ImFontFlags_NoLoadGlyphs + add ImFontFlags_LockBakedSizes
2025-06-11 15:47:41 +02:00
ocornut
8a8d8a7b38
Fonts: Exposed CompactCache(). Hide ClearCache().
2025-06-11 15:47:35 +02:00
ocornut
eb79e3ab3d
Fonts: Restore a functional AddCustomRectFontGlyph().
2025-06-11 15:47:35 +02:00
ocornut
815553c4b4
Fonts: ImFontConfig: added GlyphExcludeRanges[].
2025-06-11 15:47:35 +02:00
ocornut
96786a183b
Fonts: Create a fallback glyph if none is available (fix crash on fonts with no fallback)
2025-06-11 15:47:34 +02:00
ocornut
82b81fce68
Fonts: PushFontSize() with -1 uses sources[0]'s size for now (backward compat design)
2025-06-11 15:47:34 +02:00
ocornut
6580590226
Fonts: Allow PushFont/NewFrame/PopFont idioms to function.
2025-06-11 15:47:29 +02:00
ocornut
842c313db2
Fonts: Reordered ImFont fields.
2025-06-11 15:47:25 +02:00
ocornut
99f6b305c1
Fonts: Baked system, v12: support GlyphOffset / GlyphMinAdvanceX / GlyphMaxAdvanceX by scaling from ref value.
...
Overwriting cfg->PixelSnapH = true; in imgui_freetype is weird.
2025-06-11 15:47:21 +02:00
ocornut
df694c89b0
Fonts: Baked system, v11.
2025-06-11 15:47:17 +02:00
ocornut
57d345ff80
Textures: Comments around ImTextureID type.
2025-06-11 15:47:00 +02:00
ocornut
3ce753c489
Fonts: Debug dump to disk, debug log.
2025-06-11 15:47:00 +02:00
ocornut
be151977ca
Fonts: Texture resizing favor growing height, halve pack nodes.
2025-06-11 15:46:28 +02:00
ocornut
daaf0e4ef3
Fonts: Added PushFontSize(), PopFontSize() api. Added font_size param to PushFont() as well.
...
Fonts: Fixed PopFont() recovery.
(To squash into "Added PushFontSize(), PopFontSize() api."
2025-06-11 15:46:28 +02:00
ocornut
80404fae30
Fonts: clarify ClearTexData() as not supported with dynamic atlases.
2025-06-11 15:46:28 +02:00
ocornut
093d01269a
Fonts: Baked system, with auto-bind, v10.
...
# Conflicts:
# imgui_internal.h
2025-06-11 15:46:27 +02:00
ocornut
7aba8da551
(Breaking) Fonts: CalcWordWrapPositionA() -> CalcWordWrapPosition(), takes size instead of scale as this will be needed.
2025-06-11 15:45:22 +02:00
ocornut
a2371ef90b
Internals: added ImStableVector<> helper.
2025-06-11 15:45:14 +02:00
ocornut
fb69a09d6e
Fonts: Fixed leak due to indirectly recursing ImFontAtlasPackInit().
2025-06-11 15:45:14 +02:00
ocornut
c5653d5f34
Fonts: stb_truetype loader: Reworked scale handling to suggest this is not required caching.
2025-06-11 15:45:14 +02:00
ocornut
b203ac1e0d
Fonts: Reduced reliance on ImFontConfig::DstFont.
2025-06-11 15:45:14 +02:00
ocornut
722f6013ff
Fonts: Added a bit of user facing tooling.
2025-06-11 15:45:14 +02:00
ocornut
bd19bc5085
Fonts: Removed BuildClearGlyphs(), conflated with ClearOutputData()
2025-06-11 15:45:14 +02:00
ocornut
2bf6552f2f
Fonts: Fixed/improved support for legacy backend. SetTexID() writes into our ImTextureData to keep the indirection, clear TexIsBuilt.
...
The idea is that a legacy backend can somehow add a if (!atlas->IsBuilt()) ImGui_ImplXXXXX_CreateFontsTexture() call _after_ Render() and some features are supported.
2025-06-11 15:45:14 +02:00
ocornut
ba62becb7d
(Breaking) Fonts: remove ImFontAtlasCustomRect which is now the same as ImTextureRect
2025-06-11 15:45:08 +02:00
ocornut
a509790a1c
Fonts: Added back support for AddCustomRectFontGlyph()
...
Legacy path naturally works.
2025-06-11 15:45:08 +02:00
ocornut
953ce90d27
Fonts: ImFontAtlasBuildInit() uses the occasion to sync HasTexUpdates from imgui context, narrowing the scope where it isn't set.
2025-06-11 15:45:07 +02:00
ocornut
288055180e
Fonts: Comments, remove ImFontAtlas facing BuildGrowTexture(), BuildCompactTexture(). Make IsBuilt() obsolete.
2025-06-11 15:45:07 +02:00
ocornut
8ed4e2dde7
Fonts: Basic heuristic to repack instead of growing. Moved rects count/surface to internals.
2025-06-11 15:45:07 +02:00
ocornut
2137b3448b
Textures: Added atlas's TexMinWidth/TexMinHeight/TexMaxWidth/TexMaxHeight.
...
Fixed ImFontAtlasBuildGetTextureSizeEstimate().
Basic error handling on OOM.
2025-06-11 15:45:01 +02:00