using MainShell.Recipe.Models;
using MainShell.Models.Wafer;
using System;
using System.Collections.Generic;
using System.Threading;
using System.Windows;

namespace MainShell.Process
{
    public class WaferDiePositionContext
    {
        public WaferDiePositionContext()
        {
            CaptureFrames = new List<WaferCaptureFrame>();
            FrameResults = new List<WaferRecognitionFrameResult>();
            MapDies = new Die[0, 0];
            PatchDies = new List<Die>();
            ExceptDies = new List<Die>();
        }

        public string WorkflowName { get; set; }

        public string RecipeName { get; set; }

        public WaferRecipe WaferRecipe { get; set; }

        public WaferScanSettings ScanSettings { get; set; }

        public int RowCount { get; set; }

        public int ColumnCount { get; set; }

        public double PitchX { get; set; }

        public double PitchY { get; set; }

        public WaferScanArea ScanArea { get; set; }

        public CancellationToken CancellationToken { get; set; }

        public List<WaferCaptureFrame> CaptureFrames { get; set; }

        public List<WaferRecognitionFrameResult> FrameResults { get; set; }

        public WaferRecognitionSnapshot RecognitionSnapshot { get; set; }

        public WaferScanExecutionSummary ExecutionSummary { get; set; }

        public bool IsManualMode { get; set; }

        public bool IsVisionCheckMode { get; set; }

        public string ErrorMessage { get; set; }

        public string OutputDirectory { get; set; }

        public WaferScanPlan ScanPlan { get; set; }

        public double MapAngleThreshold { get; set; }

        public double MapRotateAngle { get; set; }

        public double MapDistanceThreshold { get; set; }

        public Die[,] MapDies { get; set; }

        public List<Die> PatchDies { get; set; }

        public List<Die> ExceptDies { get; set; }
    }
}
