// ClassicalSharp copyright 2014-2016 UnknownShadow200 | Licensed under MIT using System; using System.Drawing; using OpenTK.Input; namespace ClassicalSharp.Gui.Widgets { /// Represents an individual 2D gui component. public abstract class Widget : GuiElement { public Widget(Game game) : base(game) { HorizontalAnchor = Anchor.LeftOrTop; VerticalAnchor = Anchor.LeftOrTop; } /// Whether this widget is currently being moused over. public bool Active; /// Whether this widget is prevented from being interacted with. public bool Disabled; /// Invoked when this widget is clicked on. Can be null. public ClickHandler OnClick; /// Horizontal coordinate of top left corner in pixels. public int X; /// Vertical coordinate of top left corner in pixels. public int Y; /// Horizontal length of widget's bounds in pixels. public int Width; /// Vertical length of widget's bounds in pixels. public int Height; /// Specifies the horizontal reference point for when the widget is resized. public Anchor HorizontalAnchor; /// Specifies the vertical reference point for when the widget is resized. public Anchor VerticalAnchor; /// Horizontal offset from the reference point in pixels. public int XOffset; /// Vertical offset from the reference point in pixels. public int YOffset; /// Width and height of widget in pixels. public Size Size { get { return new Size(Width, Height); } } /// Coordinate of top left corner of widget's bounds in pixels. public Point TopLeft { get { return new Point(X, Y); } } /// Coordinate of bottom right corner of widget's bounds in pixels. public Point BottomRight { get { return new Point(X + Width, Y + Height); } } /// Specifies the boundaries of the widget in pixels. public Rectangle Bounds { get { return new Rectangle(X, Y, Width, Height); } } public virtual void CalculatePosition() { X = CalcPos(HorizontalAnchor, XOffset, Width, game.Width); Y = CalcPos(VerticalAnchor, YOffset, Height, game.Height); } } }