Skip to content

File BaseElement.cs

File List > Elements > BaseElement.cs

Go to the documentation of this file


using System.Drawing;
using LemonUI.Tools;

namespace LemonUI.Elements
{
    public abstract class BaseElement : I2Dimensional
    {
        #region Fields

        protected internal PointF literalPosition = PointF.Empty;
        protected internal PointF relativePosition = PointF.Empty;
        protected internal SizeF literalSize = SizeF.Empty;
        protected internal SizeF relativeSize = SizeF.Empty;

        #endregion

        #region Properties

        public virtual PointF Position
        {
            get => literalPosition;
            set
            {
                literalPosition = value;
                Recalculate();
            }
        }
        public virtual SizeF Size
        {
            get => literalSize;
            set
            {
                literalSize = value;
                Recalculate();
            }
        }
        public virtual Color Color { get; set; } = Color.FromArgb(255, 255, 255, 255);
        public virtual float Heading { get; set; } = 0;

        #endregion

        #region Constructors

        public BaseElement(PointF pos, SizeF size)
        {
            literalPosition = pos;
            literalSize = size;
            Recalculate();
        }

        #endregion

        #region Functions

        public virtual void Recalculate()
        {
            relativePosition = literalPosition.ToRelative();
            relativeSize = literalSize.ToRelative();
        }
        public abstract void Draw();

        #endregion
    }
}