using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;

namespace ComeCapture.Controls
{
    public class LineTool : StackPanel
    {
        static LineTool()
        {
            DefaultStyleKeyProperty.OverrideMetadata(typeof(LineTool), new FrameworkPropertyMetadata(typeof(LineTool)));
        }

        public LineTool()
        {
            _Current = this;
        }

        #region 属性 Current

        private static LineTool _Current = null;

        public static LineTool Current => _Current;

        #endregion 属性 Current

        #region LineThickness DependencyProperty

        public double LineThickness
        {
            get => (double)GetValue(LineThicknessProperty);
            set => SetValue(LineThicknessProperty, value);
        }

        public static readonly DependencyProperty LineThicknessProperty =
                DependencyProperty.Register("LineThickness", typeof(double), typeof(LineTool),
                new PropertyMetadata(5.0, new PropertyChangedCallback(LineTool.OnLineThicknessPropertyChanged)));

        private static void OnLineThicknessPropertyChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e)
        {
            if (obj is LineTool)
            {
                (obj as LineTool).OnLineThicknessValueChanged();
            }
        }

        protected void OnLineThicknessValueChanged()
        {
        }

        #endregion LineThickness DependencyProperty

        #region LineBrush DependencyProperty

        public SolidColorBrush LineBrush
        {
            get => (SolidColorBrush)GetValue(LineBrushProperty);
            set => SetValue(LineBrushProperty, value);
        }

        public static readonly DependencyProperty LineBrushProperty =
                DependencyProperty.Register("LineBrush", typeof(SolidColorBrush), typeof(LineTool),
                new PropertyMetadata(new SolidColorBrush(Colors.Red), new PropertyChangedCallback(LineTool.OnLineBrushPropertyChanged)));

        private static void OnLineBrushPropertyChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e)
        {
            if (obj is LineTool)
            {
                (obj as LineTool).OnLineBrushValueChanged();
            }
        }

        protected void OnLineBrushValueChanged()
        {
        }

        #endregion LineBrush DependencyProperty
    }
}