mirror of
https://github.com/goatcorp/Dalamud.git
synced 2026-01-03 06:13:40 +01:00
Update Lumina and use MacroStringParser (#2033)
No longer requires hook and main thread requirements on compiling macro strings. Needs lookup table fixing on Lumina; using reflection to fix for the time being.
This commit is contained in:
parent
4b4227d127
commit
1f74293de4
5 changed files with 40 additions and 123 deletions
|
|
@ -1,4 +1,4 @@
|
|||
using Dalamud.Interface.ImGuiSeStringRenderer.Internal;
|
||||
using Lumina.Text.Parse;
|
||||
|
||||
using DSeString = Dalamud.Game.Text.SeStringHandling.SeString;
|
||||
using DSeStringBuilder = Dalamud.Game.Text.SeStringHandling.SeStringBuilder;
|
||||
|
|
@ -24,44 +24,44 @@ public static class SeStringExtensions
|
|||
/// <param name="ssb">Target SeString builder.</param>
|
||||
/// <param name="macroString">Macro string in UTF-8 to compile and append to <paramref name="ssb"/>.</param>
|
||||
/// <returns><c>this</c> for method chaining.</returns>
|
||||
/// <remarks>Must be called from the main thread.</remarks>
|
||||
public static LSeStringBuilder AppendMacroString(this LSeStringBuilder ssb, ReadOnlySpan<byte> macroString)
|
||||
{
|
||||
ThreadSafety.AssertMainThread();
|
||||
return ssb.Append(Service<SeStringRenderer>.Get().Compile(macroString));
|
||||
}
|
||||
[Obsolete($"Use {nameof(LSeStringBuilder)}.{nameof(LSeStringBuilder.AppendMacroString)} directly instead.")]
|
||||
[Api11ToDo("Remove")]
|
||||
public static LSeStringBuilder AppendMacroString(this LSeStringBuilder ssb, ReadOnlySpan<byte> macroString) =>
|
||||
ssb.AppendMacroString(macroString, new() { ExceptionMode = MacroStringParseExceptionMode.EmbedError });
|
||||
|
||||
/// <summary>Compiles and appends a macro string.</summary>
|
||||
/// <param name="ssb">Target SeString builder.</param>
|
||||
/// <param name="macroString">Macro string in UTF-16 to compile and append to <paramref name="ssb"/>.</param>
|
||||
/// <returns><c>this</c> for method chaining.</returns>
|
||||
/// <remarks>Must be called from the main thread.</remarks>
|
||||
public static LSeStringBuilder AppendMacroString(this LSeStringBuilder ssb, ReadOnlySpan<char> macroString)
|
||||
{
|
||||
ThreadSafety.AssertMainThread();
|
||||
return ssb.Append(Service<SeStringRenderer>.Get().Compile(macroString));
|
||||
}
|
||||
[Obsolete($"Use {nameof(LSeStringBuilder)}.{nameof(LSeStringBuilder.AppendMacroString)} directly instead.")]
|
||||
[Api11ToDo("Remove")]
|
||||
public static LSeStringBuilder AppendMacroString(this LSeStringBuilder ssb, ReadOnlySpan<char> macroString) =>
|
||||
ssb.AppendMacroString(macroString, new() { ExceptionMode = MacroStringParseExceptionMode.EmbedError });
|
||||
|
||||
/// <summary>Compiles and appends a macro string.</summary>
|
||||
/// <param name="ssb">Target SeString builder.</param>
|
||||
/// <param name="macroString">Macro string in UTF-8 to compile and append to <paramref name="ssb"/>.</param>
|
||||
/// <returns><c>this</c> for method chaining.</returns>
|
||||
/// <remarks>Must be called from the main thread.</remarks>
|
||||
public static DSeStringBuilder AppendMacroString(this DSeStringBuilder ssb, ReadOnlySpan<byte> macroString)
|
||||
{
|
||||
ThreadSafety.AssertMainThread();
|
||||
return ssb.Append(DSeString.Parse(Service<SeStringRenderer>.Get().Compile(macroString)));
|
||||
var lssb = LSeStringBuilder.SharedPool.Get();
|
||||
lssb.AppendMacroString(macroString, new() { ExceptionMode = MacroStringParseExceptionMode.EmbedError });
|
||||
ssb.Append(DSeString.Parse(lssb.ToReadOnlySeString().Data.Span));
|
||||
LSeStringBuilder.SharedPool.Return(lssb);
|
||||
return ssb;
|
||||
}
|
||||
|
||||
/// <summary>Compiles and appends a macro string.</summary>
|
||||
/// <param name="ssb">Target SeString builder.</param>
|
||||
/// <param name="macroString">Macro string in UTF-16 to compile and append to <paramref name="ssb"/>.</param>
|
||||
/// <returns><c>this</c> for method chaining.</returns>
|
||||
/// <remarks>Must be called from the main thread.</remarks>
|
||||
public static DSeStringBuilder AppendMacroString(this DSeStringBuilder ssb, ReadOnlySpan<char> macroString)
|
||||
{
|
||||
ThreadSafety.AssertMainThread();
|
||||
return ssb.Append(DSeString.Parse(Service<SeStringRenderer>.Get().Compile(macroString)));
|
||||
var lssb = LSeStringBuilder.SharedPool.Get();
|
||||
lssb.AppendMacroString(macroString, new() { ExceptionMode = MacroStringParseExceptionMode.EmbedError });
|
||||
ssb.Append(DSeString.Parse(lssb.ToReadOnlySeString().Data.Span));
|
||||
LSeStringBuilder.SharedPool.Return(lssb);
|
||||
return ssb;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue