Renamed stuff

This commit is contained in:
Claudio Schaad 2020-11-29 14:32:17 +01:00
parent 7beee13609
commit bd78a130ea
5 changed files with 84 additions and 65 deletions

View file

@ -30,26 +30,15 @@ namespace LegoArt
private void LoadImage(string path) private void LoadImage(string path)
{ {
var legoColorService = new LegoColorService(); var legoArtColorService = new LegoArtColorService();
var legoArtColors = legoArtColorService.ParseImage(path);
var bitmap = new System.Drawing.Bitmap(path); if (legoArtColors != null)
var width = bitmap.Width;
var height = bitmap.Height;
for (int h = 0; h < height; h++)
{ {
for (int w = 0; w < width; w++)
{
var clr = bitmap.GetPixel(h, w);
var legoColorInfo = legoColorService.GetColorInfo(clr);
legoColorInfo.NeedCount++;
}
}
parentStackPanel.Children.Clear(); parentStackPanel.Children.Clear();
AddLine(System.Drawing.Color.White, "Have", "Needed", "RGB", "#", "Difference", System.Drawing.Color.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 = legoArtColors.OrderBy(c => c.LegoNumber).ToList();
for (int i = 0; i < sortedColors.Count; i++) for (int i = 0; i < sortedColors.Count; i++)
{ {
var color = sortedColors[i].Color; var color = sortedColors[i].Color;
@ -59,10 +48,15 @@ namespace LegoArt
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 = legoArtColors.Sum(l => l.HaveCount);
var needed = legoColorService.LegoColors.Sum(l => l.NeedCount); var needed = legoArtColors.Sum(l => l.NeedCount);
AddLine(System.Drawing.Color.White, have.ToString(), needed.ToString(), "Total:", "", "", System.Drawing.Color.White); AddLine(System.Drawing.Color.White, have.ToString(), needed.ToString(), "Total:", "", "", System.Drawing.Color.White);
} }
else
{
MessageBox.Show("Image includes wrong colors", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
}
}
private void AddLine(System.Drawing.Color color, string textHave, string textNeed, string textRgb, string textNumber, string textDifference, System.Drawing.Color statusColor) private void AddLine(System.Drawing.Color color, string textHave, string textNeed, string textRgb, string textNumber, string textDifference, System.Drawing.Color statusColor)
{ {

View file

@ -2,14 +2,14 @@
namespace LegoArtTool namespace LegoArtTool
{ {
public class LegoColorInfo public class LegoArtColorInfo
{ {
public Color Color { get; private set; } public Color Color { get; private set; }
public int LegoNumber { get; private set; } public int LegoNumber { get; private set; }
public int HaveCount { get; private set; } public int HaveCount { get; private set; }
public int NeedCount { get; set; } public int NeedCount { get; set; }
public LegoColorInfo(Color color, int number, int haveCount) public LegoArtColorInfo(Color color, int number, int haveCount)
{ {
Color = color; Color = color;
LegoNumber = number; LegoNumber = number;

View file

@ -0,0 +1,58 @@
using System.Collections.Generic;
using System.Linq;
using System.Drawing;
namespace LegoArtTool
{
public class LegoArtColorService
{
public static readonly List<LegoArtColorInfo> LegoColors;
static LegoArtColorService()
{
LegoColors = new List<LegoArtColorInfo>();
LegoColors.Add(new LegoArtColorInfo(Color.FromArgb(0, 0, 0), 1, 698));
LegoColors.Add(new LegoArtColorInfo(Color.FromArgb(102, 101, 96), 2, 141));
LegoColors.Add(new LegoArtColorInfo(Color.FromArgb(167, 166, 162), 3, 51));
LegoColors.Add(new LegoArtColorInfo(Color.FromArgb(246, 246, 248), 4, 149));
LegoColors.Add(new LegoArtColorInfo(Color.FromArgb(0, 53, 94), 5, 121));
LegoColors.Add(new LegoArtColorInfo(Color.FromArgb(101, 135, 162), 6, 52));
LegoColors.Add(new LegoArtColorInfo(Color.FromArgb(121, 196, 236), 7, 57));
LegoColors.Add(new LegoArtColorInfo(Color.FromArgb(253, 104, 0), 8, 74));
LegoColors.Add(new LegoArtColorInfo(Color.FromArgb(255, 170, 0), 9, 65));
LegoColors.Add(new LegoArtColorInfo(Color.FromArgb(229, 205, 135), 10, 283));
LegoColors.Add(new LegoArtColorInfo(Color.FromArgb(163, 129, 93), 11, 137));
LegoColors.Add(new LegoArtColorInfo(Color.FromArgb(196, 115, 54), 12, 29));
LegoColors.Add(new LegoArtColorInfo(Color.FromArgb(206, 81, 0), 13, 85));
LegoColors.Add(new LegoArtColorInfo(Color.FromArgb(119, 40, 0), 14, 250));
LegoColors.Add(new LegoArtColorInfo(Color.FromArgb(66, 23, 3), 15, 554));
}
public List<LegoArtColorInfo> ParseImage(string imagePath)
{
var parsedLegoColors = new List<LegoArtColorInfo>(LegoColors);
var bitmap = new Bitmap(imagePath);
var width = bitmap.Width;
var height = bitmap.Height;
for (int h = 0; h < height; h++)
{
for (int w = 0; w < width; w++)
{
var clr = bitmap.GetPixel(h, w);
var legoColorInfo = parsedLegoColors.SingleOrDefault(l => l.Color == clr);
if (legoColorInfo != null)
{
legoColorInfo.NeedCount++;
}
else
{
return null;
}
}
}
return parsedLegoColors;
}
}
}

View file

@ -4,4 +4,8 @@
<TargetFramework>netcoreapp3.1</TargetFramework> <TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup> </PropertyGroup>
<ItemGroup>
<PackageReference Include="System.Drawing.Common" Version="5.0.0" />
</ItemGroup>
</Project> </Project>

View file

@ -1,37 +0,0 @@
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);
}
}
}