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; }
|
||||
|
||||
/// <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; }
|
||||
|
||||
/// <summary>Gets or sets the font to use.</summary>
|
||||
|
|
|
|||
|
|
@ -63,11 +63,12 @@ public unsafe ref struct SeStringDrawState
|
|||
else
|
||||
{
|
||||
this.drawList = ssdp.TargetDrawList.Value;
|
||||
this.ScreenOffset = Vector2.Zero;
|
||||
this.ScreenOffset = ssdp.ScreenOffset ?? Vector2.Zero;
|
||||
|
||||
// API14: Remove, always throw
|
||||
if (ThreadSafety.IsMainThread)
|
||||
{
|
||||
this.ScreenOffset = ssdp.ScreenOffset ?? ImGui.GetCursorScreenPos();
|
||||
this.FontSize = ssdp.FontSize ?? ImGui.GetFontSize();
|
||||
}
|
||||
else
|
||||
|
|
|
|||
|
|
@ -177,6 +177,24 @@ internal unsafe class SeStringRendererTestWidget : IDataWindowWidget
|
|||
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.BeginTable("Addon Sheet"u8, 3))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue