using System;
using System.Text;
using System.Drawing;
using System.ComponentModel;
namespace DevComponents.WinForms.Drawing
{
    /// 
    /// Defines a visual shape.
    /// 
    internal abstract class Shape
    {
        #region Internal Implementation
        /// 
        /// Renders shape on canvas.
        /// 
        /// Target graphics to render shape on.
        /// Shape bounds.
        public abstract void Paint(Graphics g, Rectangle bounds);
        private Shape _Content = null;
        /// 
        /// Gets or sets the single piece of content inside of the shape.
        /// 
        [DefaultValue(null)]
        public Shape Content
        {
            get { return _Content; }
            set { _Content = value; }
        }
        private bool _ClipToBounds = false;
        /// 
        /// Gets or sets whether to clip the Content of this shape. Default value is false.
        /// 
        [DefaultValue(false)]
        public bool ClipToBounds
        {
            get { return _ClipToBounds; }
            set
            {
                _ClipToBounds = value;
            }
        }
        
        #endregion
    }
}