using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Media; namespace AIStudio.Wpf.DiagramDesigner { public class PointInfoBase : BindableBase { public PointInfoBase() { ColorViewModel = new ColorViewModel() { LineColor = new ColorObject() { Color = Color.FromArgb(0xAA, 0x00, 0x00, 0x80) }, FillColor = new ColorObject() { Color = Colors.Lavender }, }; } public PointInfoBase(Point point) : this() { X = point.X; Y = point.Y; } private double _x; public double X { get { return _x; } set { if(SetProperty(ref _x, value)) { RaisePropertyChanged(nameof(Left)); } } } private double _y; public double Y { get { return _y; } set { if (SetProperty(ref _y, value)) { RaisePropertyChanged(nameof(Top)); } } } public double Left { get { return X - ConnectorWidth / 2; } } public double Top { get { return Y - ConnectorHeight / 2; } } private double connectorWidth = 8; public double ConnectorWidth { get { return connectorWidth; } set { connectorWidth = value; } } private double connectorHeight = 8; public double ConnectorHeight { get { return connectorHeight; } set { connectorHeight = value; } } private IColorViewModel _colorViewModel; public IColorViewModel ColorViewModel { get { return _colorViewModel; } set { SetProperty(ref _colorViewModel, value); } } public static implicit operator PointInfoBase(Point point) { return new PointInfoBase(point); } public static implicit operator Point(PointInfoBase pointInfoBase) { return new Point(pointInfoBase.X, pointInfoBase.Y); } public static List ToList(List lst) { return lst.Select(p => (PointInfoBase)p).ToList(); } } }