diff --git a/.gitignore b/.gitignore
index 0cb0e60..7244ea4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,3 +5,6 @@
/LegoArt/obj
/LegoArt/bin/Debug/netcoreapp3.1
/.vs/LegoArt/v16/TestStore/0
+/.vs/LegoArt
+/LegoArtTool/bin/Debug/netcoreapp3.1
+/LegoArtTool/obj
diff --git a/LegoArt.sln b/LegoArt.sln
index 2e1c214..f08d864 100644
--- a/LegoArt.sln
+++ b/LegoArt.sln
@@ -3,7 +3,9 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.30621.155
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LegoArt", "LegoArt\LegoArt.csproj", "{1D754A7E-DB2F-4A79-83B8-BF64A7130CCC}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LegoArt", "LegoArt\LegoArt.csproj", "{1D754A7E-DB2F-4A79-83B8-BF64A7130CCC}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LegoArtTool", "LegoArtTool\LegoArtTool.csproj", "{3FD681B9-FFDD-4906-B8C3-39B5EDAF3AD1}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -15,6 +17,10 @@ Global
{1D754A7E-DB2F-4A79-83B8-BF64A7130CCC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1D754A7E-DB2F-4A79-83B8-BF64A7130CCC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1D754A7E-DB2F-4A79-83B8-BF64A7130CCC}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3FD681B9-FFDD-4906-B8C3-39B5EDAF3AD1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3FD681B9-FFDD-4906-B8C3-39B5EDAF3AD1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3FD681B9-FFDD-4906-B8C3-39B5EDAF3AD1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3FD681B9-FFDD-4906-B8C3-39B5EDAF3AD1}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/LegoArt/LegoArt.csproj b/LegoArt/LegoArt.csproj
index 5425b37..0fe4663 100644
--- a/LegoArt/LegoArt.csproj
+++ b/LegoArt/LegoArt.csproj
@@ -10,4 +10,8 @@
+
+
+
+
\ No newline at end of file
diff --git a/LegoArt/LegoColorService.cs b/LegoArt/LegoColorService.cs
deleted file mode 100644
index 6e604de..0000000
--- a/LegoArt/LegoColorService.cs
+++ /dev/null
@@ -1,37 +0,0 @@
-using System.Collections.Generic;
-using System.Linq;
-using System.Windows.Media;
-
-namespace LegoArt
-{
- public class LegoColorService
- {
- public List LegoColors { get; private set; }
-
- public LegoColorService()
- {
- LegoColors = new List();
-
- LegoColors.Add(new LegoColorInfo(Color.FromRgb(0, 0, 0), 1, 698));
- LegoColors.Add(new LegoColorInfo(Color.FromRgb(102, 101, 96), 2, 141));
- LegoColors.Add(new LegoColorInfo(Color.FromRgb(167, 166, 162), 3, 51));
- LegoColors.Add(new LegoColorInfo(Color.FromRgb(246, 246, 248), 4, 149));
- LegoColors.Add(new LegoColorInfo(Color.FromRgb(0, 53, 94), 5, 121));
- LegoColors.Add(new LegoColorInfo(Color.FromRgb(101, 135, 162), 6, 52));
- LegoColors.Add(new LegoColorInfo(Color.FromRgb(121, 196, 236), 7, 57));
- LegoColors.Add(new LegoColorInfo(Color.FromRgb(253, 104, 0), 8, 74));
- LegoColors.Add(new LegoColorInfo(Color.FromRgb(255, 170, 0), 9, 65));
- LegoColors.Add(new LegoColorInfo(Color.FromRgb(229, 205, 135), 10, 283));
- LegoColors.Add(new LegoColorInfo(Color.FromRgb(163, 129, 93), 11, 137));
- LegoColors.Add(new LegoColorInfo(Color.FromRgb(196, 115, 54), 12, 29));
- LegoColors.Add(new LegoColorInfo(Color.FromRgb(206, 81, 0), 13, 85));
- LegoColors.Add(new LegoColorInfo(Color.FromRgb(119, 40, 0), 14, 250));
- LegoColors.Add(new LegoColorInfo(Color.FromRgb(66, 23, 3), 15, 554));
- }
-
- public LegoColorInfo GetColorInfo(Color color)
- {
- return LegoColors.Single(l => l.Color == color);
- }
- }
-}
diff --git a/LegoArt/MainWindow.xaml.cs b/LegoArt/MainWindow.xaml.cs
index 39844ec..43258ef 100644
--- a/LegoArt/MainWindow.xaml.cs
+++ b/LegoArt/MainWindow.xaml.cs
@@ -1,4 +1,5 @@
-using Microsoft.Win32;
+using LegoArtTool;
+using Microsoft.Win32;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
@@ -39,15 +40,14 @@ namespace LegoArt
for (int w = 0; w < width; w++)
{
var clr = bitmap.GetPixel(h, w);
- var legoColor = ConvertDrawingToWindowsMediaColor(clr);
- var legoColorInfo = legoColorService.GetColorInfo(legoColor);
+ var legoColorInfo = legoColorService.GetColorInfo(clr);
legoColorInfo.NeedCount++;
}
}
parentStackPanel.Children.Clear();
- AddLine(Colors.White, "Have", "Needed", "RGB", "#", "Difference", Colors.White);
+ AddLine(System.Drawing.Color.White, "Have", "Needed", "RGB", "#", "Difference", System.Drawing.Color.White);
var sortedColors = legoColorService.LegoColors.OrderBy(c => c.LegoNumber).ToList();
for (int i = 0; i < sortedColors.Count; i++)
@@ -55,21 +55,22 @@ namespace LegoArt
var color = sortedColors[i].Color;
var textRgb = $"{color.R};{color.G};{color.B}";
var difference = sortedColors[i].HaveCount - sortedColors[i].NeedCount;
- var statusColor = difference < 0 ? Colors.Red : Colors.Green;
+ var statusColor = difference < 0 ? System.Drawing.Color.Red : System.Drawing.Color.Green;
AddLine(color, sortedColors[i].HaveCount.ToString(), sortedColors[i].NeedCount.ToString(), textRgb, sortedColors[i].LegoNumber.ToString(), difference.ToString(), statusColor);
}
var have = legoColorService.LegoColors.Sum(l => l.HaveCount);
var needed = legoColorService.LegoColors.Sum(l => l.NeedCount);
- AddLine(Colors.White, have.ToString(), needed.ToString(), "Total:", "", "", Colors.White);
+ AddLine(System.Drawing.Color.White, have.ToString(), needed.ToString(), "Total:", "", "", System.Drawing.Color.White);
}
- private void AddLine(Color color, string textHave, string textNeed, string textRgb, string textNumber, string textDifference, Color statusColor)
+ private void AddLine(System.Drawing.Color color, string textHave, string textNeed, string textRgb, string textNumber, string textDifference, System.Drawing.Color statusColor)
{
+ var displayColor = ConvertDrawingToWindowsMediaColor(color);
var rect = new Rectangle();
rect.Width = 20;
rect.Height = 20;
- rect.Fill = new SolidColorBrush(color);
+ rect.Fill = new SolidColorBrush(displayColor);
var textBlockHave = new TextBlock();
textBlockHave.Width = 40;
@@ -101,10 +102,11 @@ namespace LegoArt
differenceTextBlock.TextAlignment = TextAlignment.Center;
differenceTextBlock.Text = textDifference;
+ var displayStatusColor = ConvertDrawingToWindowsMediaColor(statusColor);
var status = new Rectangle();
status.Width = 20;
status.Height = 20;
- status.Fill = new SolidColorBrush(statusColor);
+ status.Fill = new SolidColorBrush(displayStatusColor);
var stackPanel = new StackPanel();
stackPanel.Orientation = Orientation.Horizontal;
diff --git a/LegoArtTool/LegoArtTool.csproj b/LegoArtTool/LegoArtTool.csproj
new file mode 100644
index 0000000..cb63190
--- /dev/null
+++ b/LegoArtTool/LegoArtTool.csproj
@@ -0,0 +1,7 @@
+
+
+
+ netcoreapp3.1
+
+
+
diff --git a/LegoArt/LegoColorInfo.cs b/LegoArtTool/LegoColorInfo.cs
similarity index 89%
rename from LegoArt/LegoColorInfo.cs
rename to LegoArtTool/LegoColorInfo.cs
index 7a0b9b1..c27a91a 100644
--- a/LegoArt/LegoColorInfo.cs
+++ b/LegoArtTool/LegoColorInfo.cs
@@ -1,6 +1,6 @@
-using System.Windows.Media;
+using System.Drawing;
-namespace LegoArt
+namespace LegoArtTool
{
public class LegoColorInfo
{
diff --git a/LegoArtTool/LegoColorService.cs b/LegoArtTool/LegoColorService.cs
new file mode 100644
index 0000000..6850d9c
--- /dev/null
+++ b/LegoArtTool/LegoColorService.cs
@@ -0,0 +1,37 @@
+using System.Collections.Generic;
+using System.Linq;
+using System.Drawing;
+
+namespace LegoArtTool
+{
+ public class LegoColorService
+ {
+ public List LegoColors { get; private set; }
+
+ public LegoColorService()
+ {
+ LegoColors = new List();
+
+ LegoColors.Add(new LegoColorInfo(Color.FromArgb(0, 0, 0), 1, 698));
+ LegoColors.Add(new LegoColorInfo(Color.FromArgb(102, 101, 96), 2, 141));
+ LegoColors.Add(new LegoColorInfo(Color.FromArgb(167, 166, 162), 3, 51));
+ LegoColors.Add(new LegoColorInfo(Color.FromArgb(246, 246, 248), 4, 149));
+ LegoColors.Add(new LegoColorInfo(Color.FromArgb(0, 53, 94), 5, 121));
+ LegoColors.Add(new LegoColorInfo(Color.FromArgb(101, 135, 162), 6, 52));
+ LegoColors.Add(new LegoColorInfo(Color.FromArgb(121, 196, 236), 7, 57));
+ LegoColors.Add(new LegoColorInfo(Color.FromArgb(253, 104, 0), 8, 74));
+ LegoColors.Add(new LegoColorInfo(Color.FromArgb(255, 170, 0), 9, 65));
+ LegoColors.Add(new LegoColorInfo(Color.FromArgb(229, 205, 135), 10, 283));
+ LegoColors.Add(new LegoColorInfo(Color.FromArgb(163, 129, 93), 11, 137));
+ LegoColors.Add(new LegoColorInfo(Color.FromArgb(196, 115, 54), 12, 29));
+ LegoColors.Add(new LegoColorInfo(Color.FromArgb(206, 81, 0), 13, 85));
+ LegoColors.Add(new LegoColorInfo(Color.FromArgb(119, 40, 0), 14, 250));
+ LegoColors.Add(new LegoColorInfo(Color.FromArgb(66, 23, 3), 15, 554));
+ }
+
+ public LegoColorInfo GetColorInfo(Color color)
+ {
+ return LegoColors.Single(l => l.Color == color);
+ }
+ }
+}