mirror of
https://github.com/goatcorp/Dalamud.git
synced 2025-12-15 05:04:15 +01:00
Add minimum range rebuild test
This commit is contained in:
parent
d78667900f
commit
2bfddaae16
1 changed files with 42 additions and 15 deletions
|
|
@ -1,6 +1,7 @@
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Collections.Immutable;
|
using System.Collections.Immutable;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
using Dalamud.Interface.GameFonts;
|
using Dalamud.Interface.GameFonts;
|
||||||
using Dalamud.Interface.ManagedFontAtlas;
|
using Dalamud.Interface.ManagedFontAtlas;
|
||||||
|
|
@ -24,6 +25,7 @@ internal class GamePrebakedFontsTestWidget : IDataWindowWidget, IDisposable
|
||||||
private bool useWordWrap;
|
private bool useWordWrap;
|
||||||
private bool useItalic;
|
private bool useItalic;
|
||||||
private bool useBold;
|
private bool useBold;
|
||||||
|
private bool useMinimumBuild;
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
public string[]? CommandShortcuts { get; init; }
|
public string[]? CommandShortcuts { get; init; }
|
||||||
|
|
@ -80,6 +82,17 @@ internal class GamePrebakedFontsTestWidget : IDataWindowWidget, IDisposable
|
||||||
this.ClearAtlas();
|
this.ClearAtlas();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ImGui.SameLine();
|
||||||
|
fixed (byte* labelPtr = "Minimum Range"u8)
|
||||||
|
{
|
||||||
|
var v = (byte)(this.useMinimumBuild ? 1 : 0);
|
||||||
|
if (ImGuiNative.igCheckbox(labelPtr, &v) != 0)
|
||||||
|
{
|
||||||
|
this.useMinimumBuild = v != 0;
|
||||||
|
this.ClearAtlas();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ImGui.SameLine();
|
ImGui.SameLine();
|
||||||
if (ImGui.Button("Reset Text") || this.testStringBuffer.IsDisposed)
|
if (ImGui.Button("Reset Text") || this.testStringBuffer.IsDisposed)
|
||||||
|
|
@ -90,21 +103,6 @@ internal class GamePrebakedFontsTestWidget : IDataWindowWidget, IDisposable
|
||||||
minCapacity: 1024);
|
minCapacity: 1024);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.privateAtlas ??=
|
|
||||||
Service<FontAtlasFactory>.Get().CreateFontAtlas(
|
|
||||||
nameof(GamePrebakedFontsTestWidget),
|
|
||||||
FontAtlasAutoRebuildMode.Async,
|
|
||||||
this.useGlobalScale);
|
|
||||||
this.fontHandles ??=
|
|
||||||
Enum.GetValues<GameFontFamilyAndSize>()
|
|
||||||
.Where(x => x.GetAttribute<GameFontFamilyAndSizeAttribute>() is not null)
|
|
||||||
.Select(x => new GameFontStyle(x) { Italic = this.useItalic, Bold = this.useBold })
|
|
||||||
.GroupBy(x => x.Family)
|
|
||||||
.ToImmutableDictionary(
|
|
||||||
x => x.Key,
|
|
||||||
x => x.Select(y => (y, new Lazy<IFontHandle>(() => this.privateAtlas.NewGameFontHandle(y))))
|
|
||||||
.ToArray());
|
|
||||||
|
|
||||||
fixed (byte* labelPtr = "Test Input"u8)
|
fixed (byte* labelPtr = "Test Input"u8)
|
||||||
{
|
{
|
||||||
if (ImGuiNative.igInputTextMultiline(
|
if (ImGuiNative.igInputTextMultiline(
|
||||||
|
|
@ -124,9 +122,38 @@ internal class GamePrebakedFontsTestWidget : IDataWindowWidget, IDisposable
|
||||||
this.testStringBuffer.LengthUnsafe = len;
|
this.testStringBuffer.LengthUnsafe = len;
|
||||||
this.testStringBuffer.StorageSpan[len] = default;
|
this.testStringBuffer.StorageSpan[len] = default;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (this.useMinimumBuild)
|
||||||
|
_ = this.privateAtlas?.BuildFontsAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.privateAtlas ??=
|
||||||
|
Service<FontAtlasFactory>.Get().CreateFontAtlas(
|
||||||
|
nameof(GamePrebakedFontsTestWidget),
|
||||||
|
FontAtlasAutoRebuildMode.Async,
|
||||||
|
this.useGlobalScale);
|
||||||
|
this.fontHandles ??=
|
||||||
|
Enum.GetValues<GameFontFamilyAndSize>()
|
||||||
|
.Where(x => x.GetAttribute<GameFontFamilyAndSizeAttribute>() is not null)
|
||||||
|
.Select(x => new GameFontStyle(x) { Italic = this.useItalic, Bold = this.useBold })
|
||||||
|
.GroupBy(x => x.Family)
|
||||||
|
.ToImmutableDictionary(
|
||||||
|
x => x.Key,
|
||||||
|
x => x.Select(
|
||||||
|
y => (y, new Lazy<IFontHandle>(
|
||||||
|
() => this.useMinimumBuild
|
||||||
|
? this.privateAtlas.NewDelegateFontHandle(
|
||||||
|
e =>
|
||||||
|
e.OnPreBuild(
|
||||||
|
tk => tk.AddGameGlyphs(
|
||||||
|
y,
|
||||||
|
Encoding.UTF8.GetString(
|
||||||
|
this.testStringBuffer.DataSpan).ToGlyphRange(),
|
||||||
|
default)))
|
||||||
|
: this.privateAtlas.NewGameFontHandle(y))))
|
||||||
|
.ToArray());
|
||||||
|
|
||||||
var offsetX = ImGui.CalcTextSize("99.9pt").X + (ImGui.GetStyle().FramePadding.X * 2);
|
var offsetX = ImGui.CalcTextSize("99.9pt").X + (ImGui.GetStyle().FramePadding.X * 2);
|
||||||
foreach (var (family, items) in this.fontHandles)
|
foreach (var (family, items) in this.fontHandles)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue