using MainShell.Common;
using MwFramework.ManagerService;
using Stylet;

namespace MainShell.Recipe.Models
{
    public class WaferScanSettings : PropertyChangedBase, IParameterItem
    {
        private double _startPointX;

        public double StartPointX
        {
            get { return _startPointX; }
            set { SetAndNotify(ref _startPointX, value); }
        }

        private double _startPointY;

        public double StartPointY
        {
            get { return _startPointY; }
            set { SetAndNotify(ref _startPointY, value); }
        }

        private TransPathDirection _scanDirectionX;

        public TransPathDirection ScanDirectionX
        {
            get { return _scanDirectionX; }
            set { SetAndNotify(ref _scanDirectionX, value); }
        }

        private TransPathDirection _scanDirectionY;

        public TransPathDirection ScanDirectionY
        {
            get { return _scanDirectionY; }
            set { SetAndNotify(ref _scanDirectionY, value); }
        }

        private double _overlapRateX;

        public double OverlapRateX
        {
            get { return _overlapRateX; }
            set { SetAndNotify(ref _overlapRateX, value); }
        }

        private double _overlapRateY;

        public double OverlapRateY
        {
            get { return _overlapRateY; }
            set { SetAndNotify(ref _overlapRateY, value); }
        }

        private double _softLimitOffsetMm;

        public double SoftLimitOffsetMm
        {
            get { return _softLimitOffsetMm; }
            set { SetAndNotify(ref _softLimitOffsetMm, value); }
        }

        private int _consumerCount = 2;

        public int ConsumerCount
        {
            get { return _consumerCount; }
            set { SetAndNotify(ref _consumerCount, value); }
        }

        private int _frameChannelCapacity = 8;

        public int FrameChannelCapacity
        {
            get { return _frameChannelCapacity; }
            set { SetAndNotify(ref _frameChannelCapacity, value); }
        }

        public IParameterItem Clone()
        {
            return this.MemberwiseClone() as IParameterItem;
        }
    }
}