diff --git a/StructureHelper/Infrastructure/Enums/PrimitiveType.cs b/StructureHelper/Infrastructure/Enums/PrimitiveType.cs index 7cf1ab0..596226c 100644 --- a/StructureHelper/Infrastructure/Enums/PrimitiveType.cs +++ b/StructureHelper/Infrastructure/Enums/PrimitiveType.cs @@ -3,6 +3,7 @@ public enum PrimitiveType { Point, - Rectangle + Rectangle, + Circle } } \ No newline at end of file diff --git a/StructureHelper/Infrastructure/UI/DataContexts/CircleViewPrimitive.cs b/StructureHelper/Infrastructure/UI/DataContexts/CircleViewPrimitive.cs new file mode 100644 index 0000000..f94a001 --- /dev/null +++ b/StructureHelper/Infrastructure/UI/DataContexts/CircleViewPrimitive.cs @@ -0,0 +1,56 @@ +using StructureHelper.Infrastructure.UI.Converters.Units; +using StructureHelperCommon.Infrastructures.Exceptions; +using StructureHelperCommon.Infrastructures.Strings; +using StructureHelperLogics.NdmCalculations.Primitives; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StructureHelper.Infrastructure.UI.DataContexts +{ + public class CircleViewPrimitive : PrimitiveBase, IHasDivision, IHasCenter + { + ICirclePrimitive primitive; + public double Diameter + { get + { + return primitive.Diameter; + } + set + { + primitive.Diameter = value; + RefreshPlacement(); + } + } + public int NdmMinDivision { get; set; } + public double NdmMaxSize { get; set; } + + public double PrimitiveLeft => DeltaX - Diameter / 2d; + public double PrimitiveTop => DeltaY - Diameter / 2d; + + public CircleViewPrimitive(INdmPrimitive primitive) : base(primitive) + { + if (primitive is not ICirclePrimitive) + { + throw new StructureHelperException(ErrorStrings.DataIsInCorrect + $"\nExpected: {nameof(ICirclePrimitive)}, But was: {nameof(primitive)}"); + } + this.primitive = primitive as ICirclePrimitive; + } + + public override INdmPrimitive GetNdmPrimitive() + { + return primitive; + } + + private void RefreshPlacement() + { + OnPropertyChanged(nameof(Diameter)); + OnPropertyChanged(nameof(CenterX)); + OnPropertyChanged(nameof(CenterY)); + OnPropertyChanged(nameof(PrimitiveLeft)); + OnPropertyChanged(nameof(PrimitiveTop)); + } + } +} diff --git a/StructureHelper/Infrastructure/UI/DataContexts/PrimitiveOperations.cs b/StructureHelper/Infrastructure/UI/DataContexts/PrimitiveOperations.cs index 7e3c315..719c60c 100644 --- a/StructureHelper/Infrastructure/UI/DataContexts/PrimitiveOperations.cs +++ b/StructureHelper/Infrastructure/UI/DataContexts/PrimitiveOperations.cs @@ -19,16 +19,21 @@ namespace StructureHelper.Infrastructure.UI.DataContexts ObservableCollection viewItems = new ObservableCollection(); foreach (var item in primitives) { - if (item is IPointPrimitive) - { - var point = item as IPointPrimitive; - viewItems.Add(new PointViewPrimitive(point)); - } - else if (item is IRectanglePrimitive) + if (item is IRectanglePrimitive) { var rect = item as IRectanglePrimitive; viewItems.Add(new RectangleViewPrimitive(rect)); } + else if (item is ICirclePrimitive) + { + var circle = item as ICirclePrimitive; + viewItems.Add(new CircleViewPrimitive(circle)); + } + else if (item is IPointPrimitive) + { + var point = item as IPointPrimitive; + viewItems.Add(new PointViewPrimitive(point)); + } else throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknown); } return viewItems; diff --git a/StructureHelper/Infrastructure/UI/DataTemplates/EllipseTemplate.xaml b/StructureHelper/Infrastructure/UI/DataTemplates/EllipseTemplate.xaml index d974201..ce12680 100644 --- a/StructureHelper/Infrastructure/UI/DataTemplates/EllipseTemplate.xaml +++ b/StructureHelper/Infrastructure/UI/DataTemplates/EllipseTemplate.xaml @@ -10,7 +10,7 @@ xmlns:userControls="clr-namespace:StructureHelper.Infrastructure.UI.UserControls" mc:Ignorable="d"> - + @@ -43,6 +43,5 @@ - diff --git a/StructureHelper/Infrastructure/UI/DataTemplates/RectangleTemplate.xaml b/StructureHelper/Infrastructure/UI/DataTemplates/RectangleTemplate.xaml index dc410d2..89eb81a 100644 --- a/StructureHelper/Infrastructure/UI/DataTemplates/RectangleTemplate.xaml +++ b/StructureHelper/Infrastructure/UI/DataTemplates/RectangleTemplate.xaml @@ -52,6 +52,5 @@ - diff --git a/StructureHelper/Libraries/LoaderCalculator.dll b/StructureHelper/Libraries/LoaderCalculator.dll index fc4e080..16ad4e5 100644 Binary files a/StructureHelper/Libraries/LoaderCalculator.dll and b/StructureHelper/Libraries/LoaderCalculator.dll differ diff --git a/StructureHelper/Windows/MainWindow/MainView.xaml b/StructureHelper/Windows/MainWindow/MainView.xaml index 53028ca..0234fdb 100644 --- a/StructureHelper/Windows/MainWindow/MainView.xaml +++ b/StructureHelper/Windows/MainWindow/MainView.xaml @@ -18,6 +18,9 @@ + + + @@ -97,23 +100,24 @@ - + -