Files
Ez2Lazer/osu.Game/Graphics/Containers/OsuTextFlowContainer.cs

41 lines
1.5 KiB
C#

// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
// See the LICENCE file in the repository root for full licence text.
using System;
using osu.Framework.Extensions.IEnumerableExtensions;
using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers;
using osu.Framework.Graphics.Sprites;
using osu.Game.Graphics.Sprites;
namespace osu.Game.Graphics.Containers
{
public partial class OsuTextFlowContainer : TextFlowContainer
{
public OsuTextFlowContainer(Action<SpriteText>? defaultCreationParameters = null)
: base(defaultCreationParameters)
{
}
protected override SpriteText CreateSpriteText() => new OsuSpriteText();
public ITextPart AddArbitraryDrawable(Drawable drawable) => AddPart(new TextPartManual(new ArbitraryDrawableWrapper(drawable).Yield()));
public ITextPart AddIcon(IconUsage icon, Action<SpriteText>? creationParameters = null) => AddText(icon.Icon.ToString(), creationParameters);
private partial class ArbitraryDrawableWrapper : Container, IHasLineBaseHeight
{
private readonly IHasLineBaseHeight? lineBaseHeightSource;
public float LineBaseHeight => lineBaseHeightSource?.LineBaseHeight ?? DrawHeight;
public ArbitraryDrawableWrapper(Drawable drawable)
{
Child = drawable;
lineBaseHeightSource = drawable as IHasLineBaseHeight;
AutoSizeAxes = Axes.Both;
}
}
}
}