using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace GraphingCalculator { public class Bounds { private double left, right, top, bottom; #region Public properties public double Left { get { return left; } set { left = value; if (BoundsChanged != null) BoundsChanged(this, new EventArgs()); } } public double Right { get { return right; } set { right = value; if (BoundsChanged != null) BoundsChanged(this, new EventArgs()); } } public double Top { get { return top; } set { top = value; if (BoundsChanged != null) BoundsChanged(this, new EventArgs()); } } public double Bottom { get { return bottom; } set { bottom = value; if (BoundsChanged != null) BoundsChanged(this, new EventArgs()); } } public double Width { get { return Right - Left; } set { Right = Left + value; } } public double Height { get { return Top - Bottom; } set { Top = Bottom + Height; } } #endregion public event EventHandler BoundsChanged; #region Constructors public Bounds() { Left = Right = Top = Bottom = 0; } public Bounds(double w, double h) { Left = Bottom = 0; Width = w; Height = h; } public Bounds(double l, double t, double r, double b) { Left = l; Top = t; Right = r; Bottom = b; } #endregion #region IsInBounds public bool IsInBounds(double x, double y) { return (x >= Math.Min(Left, Right) && x <= Math.Max(Left, Right) && y >= Math.Min(Top, Bottom) && y <= Math.Max(Top, Bottom)); } public bool IsInBounds(System.Windows.Point point) { return IsInBounds(point.X, point.Y); } #endregion } }