diff --git a/.gitignore b/.gitignore
index d596b37..95c0a05 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,3 +2,4 @@
*\bin
*\packages
*\.vs
+**\publish
diff --git a/App.xaml b/App.xaml
deleted file mode 100644
index 6c920ed..0000000
--- a/App.xaml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/App.xaml.cs b/App.xaml.cs
deleted file mode 100644
index a696ce9..0000000
--- a/App.xaml.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-using System.Windows;
-
-namespace StructureHelper
-{
- ///
- /// Логика взаимодействия для App.xaml
- ///
- public partial class App : Application
- {
- }
-}
diff --git a/FieldVisualizer/Entities/ColorMaps/ColorMap.cs b/FieldVisualizer/Entities/ColorMaps/ColorMap.cs
new file mode 100644
index 0000000..faf1a80
--- /dev/null
+++ b/FieldVisualizer/Entities/ColorMaps/ColorMap.cs
@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Windows.Media;
+using System.Text;
+
+namespace FieldVisualizer.Entities.ColorMaps
+{
+ public class ColorMap : IColorMap
+ {
+ public string Name { get; set; }
+ public List Colors { get; set; }
+ }
+}
diff --git a/FieldVisualizer/Entities/ColorMaps/Factories/ColorMapFactory.cs b/FieldVisualizer/Entities/ColorMaps/Factories/ColorMapFactory.cs
new file mode 100644
index 0000000..b5c0010
--- /dev/null
+++ b/FieldVisualizer/Entities/ColorMaps/Factories/ColorMapFactory.cs
@@ -0,0 +1,89 @@
+using FieldVisualizer.InfraStructures.Enums;
+using FieldVisualizer.InfraStructures.Exceptions;
+using FieldVisualizer.InfraStructures.Strings;
+using System;
+using System.Collections.Generic;
+using System.Windows.Media;
+
+namespace FieldVisualizer.Entities.ColorMaps.Factories
+{
+ ///
+ /// Factory for creating of different color maps
+ ///
+ public static class ColorMapFactory
+ {
+ public static IColorMap GetColorMap(ColorMapsTypes mapsTypes)
+ {
+ if (mapsTypes == ColorMapsTypes.FullSpectrum) { return GetFullSpectrum(); }
+ if (mapsTypes == ColorMapsTypes.RedToWhite) { return GetRedToWhite(); }
+ if (mapsTypes == ColorMapsTypes.RedToBlue) { return GetRedToBlue(); }
+ if (mapsTypes == ColorMapsTypes.BlueToWhite) { return GetBlueToWhite(); }
+ else { throw new FieldVisulizerException(ErrorStrings.ColorMapTypeIsUnknown); }
+ }
+
+ private static IColorMap GetFullSpectrum()
+ {
+ ColorMap colorMap = new ColorMap();
+ colorMap.Name = "FullSpectrumColorMap";
+ List colors = new List();
+ byte Alpha = 0xff;
+ colors.AddRange(new Color[]{
+ Color.FromArgb(Alpha, 0xFF, 0x80, 0x80) ,//
+ Color.FromArgb(Alpha, 0xFF, 0, 0x80) ,//
+ Color.FromArgb(Alpha, 0xFF, 0, 0) ,//Red
+ Color.FromArgb(Alpha, 0xFF, 0x45, 0) ,//Orange Red
+ Color.FromArgb(Alpha, 0xFF, 0xD7, 0) ,//Gold
+ Color.FromArgb(Alpha, 0xFF, 0xFF, 0) ,//Yellow
+ Color.FromArgb(Alpha, 0x9A, 0xCD, 0x32) ,//Yellow Green
+ Color.FromArgb(Alpha, 0, 0x80, 0) ,//Green
+ Color.FromArgb(Alpha, 0, 0x64, 0) ,//Dark Green
+ Color.FromArgb(Alpha, 0x2F, 0x4F, 0x4F) ,//Dark Slate Gray
+ Color.FromArgb(Alpha, 0, 0, 0xFF) ,//Blue
+ });
+ colorMap.Colors = colors;
+ return colorMap;
+ }
+
+ private static IColorMap GetRedToWhite()
+ {
+ ColorMap colorMap = new ColorMap();
+ colorMap.Name = "FullSpectrumColorMap";
+ List colors = new List();
+ byte Alpha = 0xff;
+ colors.AddRange(new Color[]{
+ Color.FromArgb(Alpha, 0xFF, 0, 0) ,//Red
+ Color.FromArgb(Alpha, 0xFF, 0xFF, 0xFF) ,//White
+ });
+ colorMap.Colors = colors;
+ return colorMap;
+ }
+
+ private static IColorMap GetRedToBlue()
+ {
+ ColorMap colorMap = new ColorMap();
+ colorMap.Name = "FullSpectrumColorMap";
+ List colors = new List();
+ byte Alpha = 0xff;
+ colors.AddRange(new Color[]{
+ Color.FromArgb(Alpha, 0xFF, 0, 0) ,//Red
+ Color.FromArgb(Alpha, 0, 0, 0xFF) ,//Blue
+ });
+ colorMap.Colors = colors;
+ return colorMap;
+ }
+
+ private static IColorMap GetBlueToWhite()
+ {
+ ColorMap colorMap = new ColorMap();
+ colorMap.Name = "FullSpectrumColorMap";
+ List colors = new List();
+ byte Alpha = 0xff;
+ colors.AddRange(new Color[]{
+ Color.FromArgb(Alpha, 0, 0, 0xFF) ,//Blue
+ Color.FromArgb(Alpha, 0xFF, 0xFF, 0xFF) ,//White
+ });
+ colorMap.Colors = colors;
+ return colorMap;
+ }
+ }
+}
diff --git a/FieldVisualizer/Entities/ColorMaps/IColorMap.cs b/FieldVisualizer/Entities/ColorMaps/IColorMap.cs
new file mode 100644
index 0000000..0d77ae3
--- /dev/null
+++ b/FieldVisualizer/Entities/ColorMaps/IColorMap.cs
@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Windows.Media;
+using System.Text;
+
+namespace FieldVisualizer.Entities.ColorMaps
+{
+ public interface IColorMap
+ {
+ string Name { get;}
+ List Colors { get; }
+ }
+}
diff --git a/FieldVisualizer/Entities/ColorMaps/IValueColorRange.cs b/FieldVisualizer/Entities/ColorMaps/IValueColorRange.cs
new file mode 100644
index 0000000..d4da2bc
--- /dev/null
+++ b/FieldVisualizer/Entities/ColorMaps/IValueColorRange.cs
@@ -0,0 +1,19 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Media;
+
+namespace FieldVisualizer.Entities.ColorMaps
+{
+ public interface IValueColorRange
+ {
+ bool IsActive { get; set; }
+ double BottomValue { get; set; }
+ double AverageValue { get; set; }
+ double TopValue {get;set;}
+ Color BottomColor { get; set; }
+ Color TopColor { get; set; }
+ }
+}
diff --git a/FieldVisualizer/Entities/ColorMaps/ValueColorRange.cs b/FieldVisualizer/Entities/ColorMaps/ValueColorRange.cs
new file mode 100644
index 0000000..92eaff5
--- /dev/null
+++ b/FieldVisualizer/Entities/ColorMaps/ValueColorRange.cs
@@ -0,0 +1,19 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Media;
+
+namespace FieldVisualizer.Entities.ColorMaps
+{
+ public class ValueColorRange : IValueColorRange
+ {
+ public bool IsActive { get; set; }
+ public double BottomValue { get; set; }
+ public double AverageValue { get; set; }
+ public double TopValue { get; set; }
+ public Color BottomColor { get; set; }
+ public Color TopColor { get; set; }
+ }
+}
diff --git a/FieldVisualizer/Entities/Values/IValueRange.cs b/FieldVisualizer/Entities/Values/IValueRange.cs
new file mode 100644
index 0000000..976e436
--- /dev/null
+++ b/FieldVisualizer/Entities/Values/IValueRange.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace FieldVisualizer.Entities.Values
+{
+ public interface IValueRange
+ {
+ double TopValue { get; set; }
+ double BottomValue { get; set; }
+ }
+}
diff --git a/FieldVisualizer/Entities/Values/Primitives/CirclePrimitive.cs b/FieldVisualizer/Entities/Values/Primitives/CirclePrimitive.cs
new file mode 100644
index 0000000..b44a723
--- /dev/null
+++ b/FieldVisualizer/Entities/Values/Primitives/CirclePrimitive.cs
@@ -0,0 +1,17 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FieldVisualizer.Entities.Values.Primitives
+{
+ public class CirclePrimitive : ICirclePrimitive
+ {
+ public double Diameter { get; set; }
+ public double Value { get; set; }
+ public double CenterX { get; set; }
+ public double CenterY { get; set; }
+ public double Area => Math.PI * Math.Pow(Diameter, 2) / 4;
+ }
+}
diff --git a/FieldVisualizer/Entities/Values/Primitives/ICenter.cs b/FieldVisualizer/Entities/Values/Primitives/ICenter.cs
new file mode 100644
index 0000000..fcaa228
--- /dev/null
+++ b/FieldVisualizer/Entities/Values/Primitives/ICenter.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FieldVisualizer.Entities.Values.Primitives
+{
+ public interface ICenter
+ {
+ double CenterX { get;}
+ double CenterY { get;}
+ }
+}
diff --git a/FieldVisualizer/Entities/Values/Primitives/ICirclePrimitive.cs b/FieldVisualizer/Entities/Values/Primitives/ICirclePrimitive.cs
new file mode 100644
index 0000000..af9d2d5
--- /dev/null
+++ b/FieldVisualizer/Entities/Values/Primitives/ICirclePrimitive.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FieldVisualizer.Entities.Values.Primitives
+{
+ ///
+ /// Represent circle primitive
+ ///
+ public interface ICirclePrimitive : IValuePrimitive
+ {
+ double Diameter { get; set; }
+ }
+}
diff --git a/FieldVisualizer/Entities/Values/Primitives/IPrimitiveSet.cs b/FieldVisualizer/Entities/Values/Primitives/IPrimitiveSet.cs
new file mode 100644
index 0000000..8cefb5f
--- /dev/null
+++ b/FieldVisualizer/Entities/Values/Primitives/IPrimitiveSet.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FieldVisualizer.Entities.Values.Primitives
+{
+ public interface IPrimitiveSet
+ {
+ string Name { get; }
+ IEnumerable ValuePrimitives { get; }
+
+ }
+}
diff --git a/FieldVisualizer/Entities/Values/Primitives/IRectanglePrimitive.cs b/FieldVisualizer/Entities/Values/Primitives/IRectanglePrimitive.cs
new file mode 100644
index 0000000..6d4db3f
--- /dev/null
+++ b/FieldVisualizer/Entities/Values/Primitives/IRectanglePrimitive.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FieldVisualizer.Entities.Values.Primitives
+{
+ internal interface IRectanglePrimitive : IValuePrimitive
+ {
+ double Height { get; set; }
+ double Width { get; set; }
+ }
+}
diff --git a/FieldVisualizer/Entities/Values/Primitives/IValuePrimitive.cs b/FieldVisualizer/Entities/Values/Primitives/IValuePrimitive.cs
new file mode 100644
index 0000000..57cbda4
--- /dev/null
+++ b/FieldVisualizer/Entities/Values/Primitives/IValuePrimitive.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FieldVisualizer.Entities.Values.Primitives
+{
+ public interface IValuePrimitive
+ {
+ double Value { get; }
+ double CenterX { get; }
+ double CenterY { get; }
+ double Area { get; }
+ }
+}
diff --git a/FieldVisualizer/Entities/Values/Primitives/PrimitiveSet.cs b/FieldVisualizer/Entities/Values/Primitives/PrimitiveSet.cs
new file mode 100644
index 0000000..732a515
--- /dev/null
+++ b/FieldVisualizer/Entities/Values/Primitives/PrimitiveSet.cs
@@ -0,0 +1,20 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FieldVisualizer.Entities.Values.Primitives
+{
+ public class PrimitiveSet : IPrimitiveSet
+ {
+ public string Name { get; set; }
+ public IEnumerable ValuePrimitives { get; set;}
+
+ public PrimitiveSet()
+ {
+ Name = "New set of primitives";
+ ValuePrimitives = new List();
+ }
+ }
+}
diff --git a/FieldVisualizer/Entities/Values/Primitives/RectanglePrimitive.cs b/FieldVisualizer/Entities/Values/Primitives/RectanglePrimitive.cs
new file mode 100644
index 0000000..d4d2ae5
--- /dev/null
+++ b/FieldVisualizer/Entities/Values/Primitives/RectanglePrimitive.cs
@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FieldVisualizer.Entities.Values.Primitives
+{
+ public class RectanglePrimitive : IRectanglePrimitive
+ {
+ public double Height { get; set; }
+ public double Width { get; set; }
+ public double Value { get; set; }
+ public double CenterX { get; set; }
+ public double CenterY { get; set; }
+ public double Area => Height * Width;
+ }
+}
diff --git a/FieldVisualizer/Entities/Values/ValueRange.cs b/FieldVisualizer/Entities/Values/ValueRange.cs
new file mode 100644
index 0000000..bc0c379
--- /dev/null
+++ b/FieldVisualizer/Entities/Values/ValueRange.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace FieldVisualizer.Entities.Values
+{
+ public class ValueRange : IValueRange
+ {
+ public double TopValue { get; set; }
+ public double BottomValue { get; set; }
+ }
+}
diff --git a/FieldVisualizer/FieldVisualizer.csproj b/FieldVisualizer/FieldVisualizer.csproj
new file mode 100644
index 0000000..0a3b622
--- /dev/null
+++ b/FieldVisualizer/FieldVisualizer.csproj
@@ -0,0 +1,11 @@
+
+
+
+ net6.0-windows7.0
+ enable
+ true
+ disable
+ 7.0
+
+
+
diff --git a/FieldVisualizer/FieldVisualizer.csproj.user b/FieldVisualizer/FieldVisualizer.csproj.user
new file mode 100644
index 0000000..88a5509
--- /dev/null
+++ b/FieldVisualizer/FieldVisualizer.csproj.user
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/FieldVisualizer/InfraStructures/Comands/RelayCommand.cs b/FieldVisualizer/InfraStructures/Comands/RelayCommand.cs
new file mode 100644
index 0000000..130de8f
--- /dev/null
+++ b/FieldVisualizer/InfraStructures/Comands/RelayCommand.cs
@@ -0,0 +1,27 @@
+using System;
+using System.Windows.Input;
+
+namespace FieldVisualizer.Infrastructure.Commands
+{
+ public class RelayCommand : ICommand
+ {
+ private Action