mirror of
https://github.com/ocornut/imgui.git
synced 2026-06-02 11:06:51 +08:00
Fonts: ImFontAtlasBuildInit() is always called with atlas->Builder == NULL.
This commit is contained in:
+2
-10
@@ -3552,6 +3552,7 @@ static void ImFontAtlasBuildUpdateLinesTexData(ImFontAtlas* atlas)
|
|||||||
|
|
||||||
//-----------------------------------------------------------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
// Was tempted to lazily init FontSrc but wouldn't save much + makes it more complicated to detect invalid data at AddFont()
|
||||||
bool ImFontAtlasBuildInitFontOutput(ImFontAtlas* atlas, ImFont* font)
|
bool ImFontAtlasBuildInitFontOutput(ImFontAtlas* atlas, ImFont* font)
|
||||||
{
|
{
|
||||||
bool ret = true;
|
bool ret = true;
|
||||||
@@ -4157,15 +4158,9 @@ void ImFontAtlasBuildInit(ImFontAtlas* atlas)
|
|||||||
if (atlas->TexData == NULL || atlas->TexData->Pixels == NULL)
|
if (atlas->TexData == NULL || atlas->TexData->Pixels == NULL)
|
||||||
ImFontAtlasBuildAddTexture(atlas, ImUpperPowerOfTwo(atlas->TexMinWidth), ImUpperPowerOfTwo(atlas->TexMinHeight));
|
ImFontAtlasBuildAddTexture(atlas, ImUpperPowerOfTwo(atlas->TexMinWidth), ImUpperPowerOfTwo(atlas->TexMinHeight));
|
||||||
|
|
||||||
ImFontAtlasBuilder* builder = atlas->Builder; // Do not move above
|
atlas->Builder = IM_NEW(ImFontAtlasBuilder)();
|
||||||
const bool builder_is_new = (builder == NULL);
|
|
||||||
if (builder_is_new)
|
|
||||||
{
|
|
||||||
IM_ASSERT(atlas->Builder == NULL);
|
|
||||||
builder = atlas->Builder = IM_NEW(ImFontAtlasBuilder)();
|
|
||||||
if (atlas->FontLoader->LoaderInit)
|
if (atlas->FontLoader->LoaderInit)
|
||||||
atlas->FontLoader->LoaderInit(atlas);
|
atlas->FontLoader->LoaderInit(atlas);
|
||||||
}
|
|
||||||
|
|
||||||
ImFontAtlasBuildUpdateRendererHasTexturesFromContext(atlas);
|
ImFontAtlasBuildUpdateRendererHasTexturesFromContext(atlas);
|
||||||
|
|
||||||
@@ -4176,12 +4171,9 @@ void ImFontAtlasBuildInit(ImFontAtlas* atlas)
|
|||||||
ImFontAtlasBuildUpdateBasicTexData(atlas);
|
ImFontAtlasBuildUpdateBasicTexData(atlas);
|
||||||
|
|
||||||
// Register fonts
|
// Register fonts
|
||||||
if (builder_is_new)
|
|
||||||
{
|
|
||||||
ImFontAtlasBuildUpdatePointers(atlas);
|
ImFontAtlasBuildUpdatePointers(atlas);
|
||||||
for (ImFontConfig& cfg : atlas->Sources)
|
for (ImFontConfig& cfg : atlas->Sources)
|
||||||
ImFontAtlasBuildAddFont(atlas, &cfg);
|
ImFontAtlasBuildAddFont(atlas, &cfg);
|
||||||
}
|
|
||||||
|
|
||||||
// Update UV coordinates etc. stored in bound ImDrawListSharedData instance
|
// Update UV coordinates etc. stored in bound ImDrawListSharedData instance
|
||||||
ImFontAtlasUpdateDrawListsSharedData(atlas);
|
ImFontAtlasUpdateDrawListsSharedData(atlas);
|
||||||
|
|||||||
+1
-1
@@ -3753,7 +3753,7 @@ struct ImFontAtlasBuilder
|
|||||||
|
|
||||||
// Cache of all ImFontBaked
|
// Cache of all ImFontBaked
|
||||||
ImStableVector<ImFontBaked,32> BakedPool;
|
ImStableVector<ImFontBaked,32> BakedPool;
|
||||||
ImGuiStorage BakedMap;
|
ImGuiStorage BakedMap; // BakedId --> ImFontBaked*
|
||||||
int BakedDiscardedCount;
|
int BakedDiscardedCount;
|
||||||
|
|
||||||
// Custom rectangle identifiers
|
// Custom rectangle identifiers
|
||||||
|
|||||||
Reference in New Issue
Block a user