mirror of
https://github.com/AlexMacocian/MonoGame.Extended.git
synced 2026-07-15 15:09:29 +00:00
40 lines
1.2 KiB
C#
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);
|
|
}
|
|
}
|
|
} |