using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Media;
namespace VisionUI.ProcTest {
///
/// 모양 타입
/// Rectangle | Circle | TextBox | Path
///
public enum eShapeType {
Rectangle = 0,
Circle,
TextBox,
Path
}
///
/// 자재공차 테스트 모델 추상 클래스
///
public abstract class MaterialToleranceTestModel {
private static int _nextId = 1;
/// ID
public int ID { get; private set; }
/// 이름
public string Name { get; set; }
/// 툴팁
public string Tooltip { get; set; }
/// 모양 타입
public eShapeType shapeType { get; set; }
/// 설명
public string Description { get; set; }
/// Shape Visibility
public System.Windows.Visibility ShapeVisible { get; set; }
/// Item이 선택되었는지 여부
public bool ItemSelected { get; set; }
/// 캔버스 왼쪽위치
public double Left { get; set; }
/// 캔버스 상부쪽 위치
public double Top { get; set; }
/// 불투명도 0~1
public double Opacity { get; set; } = 1;
/// 선 두께
public double StrokeThick { get; set; }
/// 선 색상
public Brush StrokeColor { get; set; }
/// 도형 내부 채우는 색상
public Brush FillColor { get; set; }
/// 도형들의 Z 인덱스 (layer)
public int ZIndex { get; set; } = 0;
///
/// 생성자
///
public MaterialToleranceTestModel() {
ID = _nextId++;
}
///
/// 생성자
///
/// 이름
public MaterialToleranceTestModel(string name) : this() {
Name = name;
}
}
///
/// 원 모델
///
public class CircleModel : MaterialToleranceTestModel {
///
/// 생성자
///
/// 이름
/// 센터 X
/// 센터 Y
/// 반지름
public CircleModel(string name, double cx, double cy, double r) : base(name) {
R = r;
Top = cy - R;
Left = cx - R;
EllipseWidth = R * 2;
EllipseHeight = R * 2;
FillColor = new SolidColorBrush(Colors.LightGreen);
shapeType = eShapeType.Circle;
}
/// 원 높이
public double EllipseHeight { get; set; }
/// 원 너비
public double EllipseWidth { get; set; }
/// 반지름
public double R { get; set; }
/// 위치변경
public void SetTopLeft(double top, double left) {
Top = top - R;
Left = left - R;
}
}
///
/// Path 모델
///
public class PathModel : MaterialToleranceTestModel {
///
/// 생성자
///
/// 이름
///
public PathModel(string name, string path) : base(name) {
StrokeThick = 2;
StrokeColor = new SolidColorBrush(Colors.LightGreen);
FillColor = new SolidColorBrush(Colors.Transparent);
PathData = path;
shapeType = eShapeType.Path;
}
///
/// Path 데이터
///
public string PathData { get; set; }
}
}