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); + } + } +}