using SA_LTT.Info.WaferInfo;
using System;
using System.Collections.Generic;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Shapes;
using static SA_LTT.Info.WaferInfo.WaferInfo;
using static SA_LTT.Info.WaferInfo.WaferInfoManager;
namespace SA_LTT_UI.Screen
{
///
/// Interaction logic for AnimationEquipment.xaml
///
public partial class AnimationEquipment : UserControl
{
SolidColorBrush _doorOpenColor;
SolidColorBrush _doorCloseColor;
SolidColorBrush _waferExistColor;
SolidColorBrush _waferEmptyColor;
SolidColorBrush _waferErrorColor;
SolidColorBrush _waferProcessCompleteColor;
public delegate void MouseDownDel(object sender, MouseButtonEventArgs e);
Dictionary WaferShapes = new Dictionary();
public AnimationEquipment()
{
InitializeComponent();
InitializeColor();
InitializeUI();
}
private void InitializeColor()
{
_doorOpenColor = new SolidColorBrush(Colors.Red);
_doorCloseColor = new SolidColorBrush(Colors.Lime);
_waferExistColor = new SolidColorBrush(Colors.Lime);
_waferEmptyColor = new SolidColorBrush(Colors.Transparent);
_waferErrorColor = new SolidColorBrush(Colors.Red);
_waferProcessCompleteColor = new SolidColorBrush(Colors.MediumPurple);
}
private void InitializeUI()
{
foreach(WaferNumbers info in Enum.GetValues(typeof(WaferNumbers)))
{
if (WaferNumbers.A1 <= info && info <= WaferNumbers.A25)
{
Rectangle rectangle = new Rectangle();
rectangle.Height = 7;
rectangle.Width = 113;
rectangle.Stroke = new SolidColorBrush(Colors.Black);
WaferShapes[info] = rectangle;
Port1.Children.Add(rectangle);
Canvas.SetBottom(rectangle, 6 * (int)info);
}
else if (WaferNumbers.B1 <= info && info <= WaferNumbers.B25)
{
Rectangle rectangle = new Rectangle();
rectangle = new Rectangle();
rectangle.Height = 7;
rectangle.Width = 113;
rectangle.Stroke = new SolidColorBrush(Colors.Black);
WaferShapes[info] = rectangle;
Port2.Children.Add(rectangle);
Canvas.SetBottom(rectangle, 6 * (int)(info - 25));
}
else if(info == WaferNumbers.Robot)
{
Rectangle rectangle = new Rectangle();
rectangle = new Rectangle();
rectangle.Height = 7;
rectangle.Width = 113;
rectangle.Stroke = new SolidColorBrush(Colors.Black);
WaferShapes[info] = rectangle;
}
else if (info == WaferNumbers.PreAligner)
{
Rectangle rectangle = new Rectangle();
rectangle = new Rectangle();
rectangle.Height = 7;
rectangle.Width = 113;
rectangle.Stroke = new SolidColorBrush(Colors.Black);
WaferShapes[info] = rectangle;
}
else if (info == WaferNumbers.Chamber)
{
Rectangle rectangle = new Rectangle();
rectangle = new Rectangle();
rectangle.Height = 7;
rectangle.Width = 113;
rectangle.Stroke = new SolidColorBrush(Colors.Black);
WaferShapes[info] = rectangle;
}
}
}
//X : -2 ~ 384
public void SetDoor1Status(bool open)
{
Door1.Fill = open ? _doorOpenColor : _doorCloseColor;
}
public void SetDoor2Status(bool open)
{
Door2.Fill = open ? _doorOpenColor : _doorCloseColor;
}
public void SetDoor3Status(bool open)
{
Door3.Fill = open ? _doorOpenColor : _doorCloseColor;
}
public void SetDoor4Status(bool open)
{
Door4.Fill = open ? _doorOpenColor : _doorCloseColor;
}
public void SetDoorCPStatus(bool open)
{
DoorCP.Fill = open ? _doorOpenColor : _doorCloseColor;
}
public void SetChamberGate(bool open)
{
ChamberGate.Fill = open ? _doorOpenColor : _doorCloseColor;
}
public void SetWaferExist(WaferNumbers waferNumber, WaferInfo waferInfo)
{
if(waferNumber == WaferNumbers.PreAligner)
{
if (waferInfo.IsStatus == WaferStatus.Empty)
{
PreAlignerWafer.Opacity = 0;
}
else if (waferInfo.IsStatus == WaferStatus.Exist)
{
PreAlignerWafer.Opacity = 100;
if (waferInfo.IsProcessComplete)
{
PreAlignerWaferStatus.Fill = _waferProcessCompleteColor;
}
else
{
PreAlignerWaferStatus.Fill = new SolidColorBrush(Colors.Silver);
}
}
}
else if(waferNumber == WaferNumbers.Chamber)
{
if (waferInfo.IsStatus == WaferStatus.Empty)
{
ChamberWafer.Opacity = 0;
}
else if (waferInfo.IsStatus == WaferStatus.Exist)
{
ChamberWafer.Opacity = 100;
if (waferInfo.IsProcessComplete)
{
ChamberWaferStatus.Fill = _waferProcessCompleteColor;
}
else
{
ChamberWaferStatus.Fill = new SolidColorBrush(Colors.Silver);
}
}
}
else if (waferNumber == WaferNumbers.Robot)
{
if (waferInfo.IsStatus == WaferStatus.Empty)
{
RobotWafer.Opacity = 0;
}
else if (waferInfo.IsStatus == WaferStatus.Exist)
{
RobotWafer.Opacity = 100;
if (waferInfo.IsProcessComplete)
{
RobotWaferStatus.Fill = _waferProcessCompleteColor;
}
else
{
RobotWaferStatus.Fill = new SolidColorBrush(Colors.Silver);
}
}
}
else
{
if (waferInfo.IsStatus == WaferStatus.Empty)
{
WaferShapes[waferNumber].Fill = _waferEmptyColor;
}
else if (waferInfo.IsStatus == WaferStatus.Exist)
{
if(waferInfo.IsProcessComplete)
{
WaferShapes[waferNumber].Fill = _waferProcessCompleteColor;
}
else
{
WaferShapes[waferNumber].Fill = _waferExistColor;
}
}
else if (waferInfo.IsStatus == WaferStatus.Leaning)
{
WaferShapes[waferNumber].Fill = _waferErrorColor;
}
else if (waferInfo.IsStatus == WaferStatus.Overlap)
{
WaferShapes[waferNumber].Fill = _waferErrorColor;
}
}
}
public void SetRobotPositionArm(double position)
{
position = position + 5.3;
//RobotArm1
RotateTransform rt = new RotateTransform();
rt.Angle = (position * 1.1);
TransformGroup tg1 = new TransformGroup();
tg1.Children.Add(rt);
RobotArm1.RenderTransform = tg1;
//RobotArm2
rt = new RotateTransform();
rt.Angle = -(position * 2.4);
tg1 = new TransformGroup();
tg1.Children.Add(rt);
RobotArm2.RenderTransform = tg1;
//Robot Hand
Thickness margin = RobotHand.Margin;
margin.Top = position * 3;
RobotHand.Margin = margin;
}
public void SetRobotPositionAngle(double position)
{
RotateTransform rt = new RotateTransform();
rt.Angle = 28 - position;
TransformGroup tg1 = new TransformGroup();
tg1.Children.Add(rt);
Robot.RenderTransform = tg1;
RotateTransform rt1 = new RotateTransform();
rt1.Angle = position - 28;
TransformGroup tg2 = new TransformGroup();
tg2.Children.Add(rt1);
RobotWafer.RenderTransform = tg2;
}
public void SetRobotPositionZ(double position)
{
double value = position;
if (value < 5)
{
value = 5;
}
else if (value > 244)
{
value = 244;
}
RobotZ.Value = value;
}
public void SetMotorPositionX(double position)
{
// 0 ~ 500
Thickness margin = Chamber.Margin;
margin.Top = - (position * 1.298);
Chamber.Margin = margin;
}
public void SetMotorPositionY(double position)
{
// 0 ~ 895
Thickness margin = Motor_Y.Margin;
margin.Left = - (position * 2.2375);
Motor_Y.Margin = margin;
}
public void SetMotorPositionT(double position)
{
RotateTransform rt = new RotateTransform();
rt.Angle = -(position * 10);
TransformGroup tg1 = new TransformGroup();
tg1.Children.Add(rt);
Chamber.RenderTransform = tg1;
RotateTransform rt1 = new RotateTransform();
rt1.Angle = (position * 10);
TransformGroup tg2 = new TransformGroup();
tg2.Children.Add(rt1);
ChamberWafer.RenderTransform = tg2;
}
public void SetRobotWaferNum(WaferNumbers waferNumber)
{
RobotWaferSourceName.Text = waferNumber.ToString();
}
public void SetPreAlignerWaferNum(WaferNumbers waferNumber)
{
PreAlignerWaferSourceName.Text = waferNumber.ToString();
}
public void SetChamberWaferNum(WaferNumbers waferNumber)
{
ChamberWaferSourceName.Text = waferNumber.ToString();
}
public void SetChamberLiftPin(bool up)
{
if(up)
{
LiftPin.Value = 1;
}
else
{
LiftPin.Value = 0;
}
}
public void SetIsAlignRun(bool run)
{
IsAlignRun.Fill = run ? _doorCloseColor : _doorOpenColor;
}
public void AddPortMouseDownEvent(MouseButtonEventHandler mouseButtonEventHandler)
{
Port1.MouseDown += mouseButtonEventHandler;
Port2.MouseDown += mouseButtonEventHandler;
}
public void AddChamberMouseDownEvent(MouseButtonEventHandler mouseButtonEventHandler)
{
Chamber.MouseDown += mouseButtonEventHandler;
}
public void AddPreAlignerMouseDownEvent(MouseButtonEventHandler mouseButtonEventHandler)
{
PreAlignerBody.MouseDown += mouseButtonEventHandler;
}
public void AddRobotMouseDownEvent(MouseButtonEventHandler mouseButtonEventHandler)
{
RobotBody.MouseDown += mouseButtonEventHandler;
}
public void AddUvLaserMouseDownEvent(MouseButtonEventHandler mouseButtonEventHandler)
{
UVLaser.MouseDown += mouseButtonEventHandler;
}
public void AddScannerMouseDownEvent(MouseButtonEventHandler mouseButtonEventHandler)
{
Scanner.MouseDown += mouseButtonEventHandler;
}
public void AddAttenuatorMouseDownEvent(MouseButtonEventHandler mouseButtonEventHandler)
{
Attenuator.MouseDown += mouseButtonEventHandler;
}
}
}