mirror of
https://github.com/goatcorp/Dalamud.git
synced 2025-12-11 01:37:24 +01:00
Also add fallback for SeStringDrawState.ScreenOffset for now, make sure that it is populated
This commit is contained in:
parent
652ff59672
commit
2029a0f8a6
3 changed files with 23 additions and 2 deletions
|
|
@ -25,7 +25,9 @@ public record struct SeStringDrawParams
|
||||||
public SeStringReplacementEntity.GetEntityDelegate? GetEntity { get; set; }
|
public SeStringReplacementEntity.GetEntityDelegate? GetEntity { get; set; }
|
||||||
|
|
||||||
/// <summary>Gets or sets the screen offset of the left top corner.</summary>
|
/// <summary>Gets or sets the screen offset of the left top corner.</summary>
|
||||||
/// <value>Screen offset to draw at, or <c>null</c> to use <see cref="ImGui.GetCursorScreenPos()"/>.</value>
|
/// <value>Screen offset to draw at, or <c>null</c> to use <see cref="ImGui.GetCursorScreenPos()"/>, if no <see cref="TargetDrawList"/>
|
||||||
|
/// is specified. Otherwise, you must specify it (for example, by passing <see cref="ImGui.GetCursorScreenPos()"/> when passing the window
|
||||||
|
/// draw list.</value>
|
||||||
public Vector2? ScreenOffset { get; set; }
|
public Vector2? ScreenOffset { get; set; }
|
||||||
|
|
||||||
/// <summary>Gets or sets the font to use.</summary>
|
/// <summary>Gets or sets the font to use.</summary>
|
||||||
|
|
|
||||||
|
|
@ -63,11 +63,12 @@ public unsafe ref struct SeStringDrawState
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this.drawList = ssdp.TargetDrawList.Value;
|
this.drawList = ssdp.TargetDrawList.Value;
|
||||||
this.ScreenOffset = Vector2.Zero;
|
this.ScreenOffset = ssdp.ScreenOffset ?? Vector2.Zero;
|
||||||
|
|
||||||
// API14: Remove, always throw
|
// API14: Remove, always throw
|
||||||
if (ThreadSafety.IsMainThread)
|
if (ThreadSafety.IsMainThread)
|
||||||
{
|
{
|
||||||
|
this.ScreenOffset = ssdp.ScreenOffset ?? ImGui.GetCursorScreenPos();
|
||||||
this.FontSize = ssdp.FontSize ?? ImGui.GetFontSize();
|
this.FontSize = ssdp.FontSize ?? ImGui.GetFontSize();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
||||||
|
|
@ -177,6 +177,24 @@ internal unsafe class SeStringRendererTestWidget : IDataWindowWidget
|
||||||
ImGuiHelpers.SeStringWrapped(this.logkind.Value.Data.Span, this.style);
|
ImGuiHelpers.SeStringWrapped(this.logkind.Value.Data.Span, this.style);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ImGui.CollapsingHeader("Draw into drawlist"))
|
||||||
|
{
|
||||||
|
ImGuiHelpers.ScaledDummy(100);
|
||||||
|
ImGui.SetCursorScreenPos(ImGui.GetItemRectMin() + ImGui.GetStyle().FramePadding);
|
||||||
|
var clipMin = ImGui.GetItemRectMin() + ImGui.GetStyle().FramePadding;
|
||||||
|
var clipMax = ImGui.GetItemRectMax() - ImGui.GetStyle().FramePadding;
|
||||||
|
clipMin.Y = MathF.Max(clipMin.Y, ImGui.GetWindowPos().Y);
|
||||||
|
clipMax.Y = MathF.Min(clipMax.Y, ImGui.GetWindowPos().Y + ImGui.GetWindowHeight());
|
||||||
|
|
||||||
|
var dl = ImGui.GetWindowDrawList();
|
||||||
|
dl.PushClipRect(clipMin, clipMax);
|
||||||
|
ImGuiHelpers.CompileSeStringWrapped(
|
||||||
|
"<icon(1)>Test test<icon(1)>",
|
||||||
|
new SeStringDrawParams
|
||||||
|
{ Color = 0xFFFFFFFF, WrapWidth = float.MaxValue, TargetDrawList = dl });
|
||||||
|
dl.PopClipRect();
|
||||||
|
}
|
||||||
|
|
||||||
if (ImGui.CollapsingHeader("Addon Table"u8))
|
if (ImGui.CollapsingHeader("Addon Table"u8))
|
||||||
{
|
{
|
||||||
if (ImGui.BeginTable("Addon Sheet"u8, 3))
|
if (ImGui.BeginTable("Addon Sheet"u8, 3))
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue