/* * Copyright (c) 2025 LG Electronics Inc. * SPDX-License-Identifier: LicenseRef-LGE-Proprietary */ 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; } } }