Moved to lib

This commit is contained in:
Claudio Schaad 2020-11-29 14:10:13 +01:00
parent 9f9cf46c26
commit 7551c28bc5
8 changed files with 71 additions and 49 deletions

3
.gitignore vendored
View file

@ -5,3 +5,6 @@
/LegoArt/obj /LegoArt/obj
/LegoArt/bin/Debug/netcoreapp3.1 /LegoArt/bin/Debug/netcoreapp3.1
/.vs/LegoArt/v16/TestStore/0 /.vs/LegoArt/v16/TestStore/0
/.vs/LegoArt
/LegoArtTool/bin/Debug/netcoreapp3.1
/LegoArtTool/obj

View file

@ -3,7 +3,9 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16 # Visual Studio Version 16
VisualStudioVersion = 16.0.30621.155 VisualStudioVersion = 16.0.30621.155
MinimumVisualStudioVersion = 10.0.40219.1 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 EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution 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}.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.ActiveCfg = Release|Any CPU
{1D754A7E-DB2F-4A79-83B8-BF64A7130CCC}.Release|Any CPU.Build.0 = 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 EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE

View file

@ -10,4 +10,8 @@
<PackageReference Include="System.Drawing.Common" Version="5.0.0" /> <PackageReference Include="System.Drawing.Common" Version="5.0.0" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<ProjectReference Include="..\LegoArtTool\LegoArtTool.csproj" />
</ItemGroup>
</Project> </Project>

View file

@ -1,37 +0,0 @@
using System.Collections.Generic;
using System.Linq;
using System.Windows.Media;
namespace LegoArt
{
public class LegoColorService
{
public List<LegoColorInfo> LegoColors { get; private set; }
public LegoColorService()
{
LegoColors = new List<LegoColorInfo>();
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);
}
}
}

View file

@ -1,4 +1,5 @@
using Microsoft.Win32; using LegoArtTool;
using Microsoft.Win32;
using System.Linq; using System.Linq;
using System.Windows; using System.Windows;
using System.Windows.Controls; using System.Windows.Controls;
@ -39,15 +40,14 @@ namespace LegoArt
for (int w = 0; w < width; w++) for (int w = 0; w < width; w++)
{ {
var clr = bitmap.GetPixel(h, w); var clr = bitmap.GetPixel(h, w);
var legoColor = ConvertDrawingToWindowsMediaColor(clr); var legoColorInfo = legoColorService.GetColorInfo(clr);
var legoColorInfo = legoColorService.GetColorInfo(legoColor);
legoColorInfo.NeedCount++; legoColorInfo.NeedCount++;
} }
} }
parentStackPanel.Children.Clear(); 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(); var sortedColors = legoColorService.LegoColors.OrderBy(c => c.LegoNumber).ToList();
for (int i = 0; i < sortedColors.Count; i++) for (int i = 0; i < sortedColors.Count; i++)
@ -55,21 +55,22 @@ namespace LegoArt
var color = sortedColors[i].Color; var color = sortedColors[i].Color;
var textRgb = $"{color.R};{color.G};{color.B}"; var textRgb = $"{color.R};{color.G};{color.B}";
var difference = sortedColors[i].HaveCount - sortedColors[i].NeedCount; 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); 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 have = legoColorService.LegoColors.Sum(l => l.HaveCount);
var needed = legoColorService.LegoColors.Sum(l => l.NeedCount); 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(); var rect = new Rectangle();
rect.Width = 20; rect.Width = 20;
rect.Height = 20; rect.Height = 20;
rect.Fill = new SolidColorBrush(color); rect.Fill = new SolidColorBrush(displayColor);
var textBlockHave = new TextBlock(); var textBlockHave = new TextBlock();
textBlockHave.Width = 40; textBlockHave.Width = 40;
@ -101,10 +102,11 @@ namespace LegoArt
differenceTextBlock.TextAlignment = TextAlignment.Center; differenceTextBlock.TextAlignment = TextAlignment.Center;
differenceTextBlock.Text = textDifference; differenceTextBlock.Text = textDifference;
var displayStatusColor = ConvertDrawingToWindowsMediaColor(statusColor);
var status = new Rectangle(); var status = new Rectangle();
status.Width = 20; status.Width = 20;
status.Height = 20; status.Height = 20;
status.Fill = new SolidColorBrush(statusColor); status.Fill = new SolidColorBrush(displayStatusColor);
var stackPanel = new StackPanel(); var stackPanel = new StackPanel();
stackPanel.Orientation = Orientation.Horizontal; stackPanel.Orientation = Orientation.Horizontal;

View file

@ -0,0 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
</Project>

View file

@ -1,6 +1,6 @@
using System.Windows.Media; using System.Drawing;
namespace LegoArt namespace LegoArtTool
{ {
public class LegoColorInfo public class LegoColorInfo
{ {

View file

@ -0,0 +1,37 @@
using System.Collections.Generic;
using System.Linq;
using System.Drawing;
namespace LegoArtTool
{
public class LegoColorService
{
public List<LegoColorInfo> LegoColors { get; private set; }
public LegoColorService()
{
LegoColors = new List<LegoColorInfo>();
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);
}
}
}