Files
MonoGame.Extended/source/MonoGame.Extended.Gui/Controls/LayoutControl.cs
T
2024-05-18 19:59:41 -04:00

40 lines
1.2 KiB
C#

using Microsoft.Xna.Framework;
namespace MonoGame.Extended.Gui.Controls
{
public abstract class LayoutControl : ItemsControl
{
protected LayoutControl()
{
HorizontalAlignment = HorizontalAlignment.Stretch;
VerticalAlignment = VerticalAlignment.Stretch;
BackgroundColor = Color.Transparent;
}
private bool _isLayoutValid;
public override void InvalidateMeasure()
{
base.InvalidateMeasure();
_isLayoutValid = false;
}
public override void Update(IGuiContext context, float deltaSeconds)
{
base.Update(context, deltaSeconds);
if (!_isLayoutValid)
{
Layout(context, new Rectangle(Padding.Left, Padding.Top, ContentRectangle.Width, ContentRectangle.Height));
_isLayoutValid = true;
}
}
protected abstract void Layout(IGuiContext context, Rectangle rectangle);
protected static void PlaceControl(IGuiContext context, Control control, float x, float y, float width, float height)
{
LayoutHelper.PlaceControl(context, control, x, y, width, height);
}
}
}