Path: blob/master/osu.Game/Graphics/Containers/OsuTextFlowContainer.cs
4397 views
// Copyright (c) ppy Pty Ltd <[email protected]>. 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; } } } }