private XColor_Color[] CreateRelatedHues(Design.Primitives.Color hueColor, int hueDegrees, IList <FabricColor> fabricColors) { var selectedFabricColors = new List <FabricColor>(); foreach (var color in fabricColors) { if (Math.Abs(color.Color.Hue - hueColor.Hue) < hueDegrees) { selectedFabricColors.Add(color); } } selectedFabricColors.Sort((lhs, rhs) => { var d1 = Design.Primitives.Color.DistanceSquared(lhs.Color, hueColor); var d2 = Design.Primitives.Color.DistanceSquared(rhs.Color, hueColor); return(d1.CompareTo(d2)); }); var selectedColorModels = new List <XColor_Color>(); foreach (var relatedHue in selectedFabricColors) { selectedColorModels.Add(CreateColorData(relatedHue)); } return(selectedColorModels.ToArray()); }
private XColor_Color[] CreateLighterSaturatedHues(Design.Primitives.Color hueColor, IList <FabricColor> fabricColors) { var selectedFabricColors = new List <FabricColor>(); foreach (var fabricColor in fabricColors) { if (fabricColor.Color.Brightness >= hueColor.Brightness && fabricColor.Color.Saturation >= hueColor.Saturation) { selectedFabricColors.Add(fabricColor); } } selectedFabricColors.Sort((lhs, rhs) => lhs.Color.Brightness.CompareTo(rhs.Color.Brightness)); //var d1 = Design.Primitives.Color.DistanceSquared(lhs, hueColor); //var d2 = Design.Primitives.Color.DistanceSquared(rhs, hueColor); //return d1.CompareTo(d2); var selectedColorModels = new List <XColor_Color>(); foreach (var saturatedColor in selectedFabricColors) { selectedColorModels.Add(CreateColorData(saturatedColor)); } return(selectedColorModels.ToArray()); }
private FabricColor CreateFabricColor(Design.Primitives.Color color, string sku, string name) { return(new FabricColor() { Color = color, Sku = sku, Name = name }); }
private XColor_Color CreateColorData(Design.Primitives.Color color) { return(new XColor_Color() { WebColor = color.WebColor, Hue = color.Hue, Saturation = color.Saturation, Lightness = color.Brightness, Sku = "Unknown", Name = "Unknown" }); }
private async Task <List <FabricColor> > GetFabricColors(Design.Primitives.Color color) { var fabricColors = new List <FabricColor>(); var inventoryItems = await InventoryService.GetItemsAsync().ConfigureAwait(false); foreach (var inventoryItem in inventoryItems) { var fabricColor = Design.Primitives.Color.FromWebColor(inventoryItem.Color.WebColor); var fabricHue = fabricColor.Hue; var hueDelta = Math.Abs(color.Hue - fabricHue); if (hueDelta < 8 || (360 - hueDelta) < 8) { fabricColors.Add(CreateFabricColor(fabricColor, inventoryItem.Sku, inventoryItem.Name)); } } return(fabricColors); }
private async Task <XColor_ColorPalette> CreateColorPaletteModelAsync(Design.Primitives.Color hueColor, int rowCount, int columnCount) { var fabricColors = await GetFabricColors(hueColor).ConfigureAwait(false); var hueCount = 45; var hueDegrees = 8; var model = new XColor_ColorPalette() { SelectedHue = hueColor.WebColor, PreviousHue = Design.Primitives.Color.FromAhsb(255, RoundHue((int)hueColor.Hue - hueDegrees), 0.5, 1.0).WebColor, NextHue = Design.Primitives.Color.FromAhsb(255, RoundHue((int)hueColor.Hue + hueDegrees), 0.5, 1.0).WebColor, SelectedColor = CreateColorData(hueColor), AllColors = CreateAllHues(hueCount, hueDegrees), RelatedColors = CreateRelatedHues(hueColor, hueDegrees, fabricColors), Palette = CreatePalette((int)hueColor.Hue, rowCount, columnCount, fabricColors), LighterSaturatedColors = CreateLighterSaturatedHues(hueColor, fabricColors), LighterDesaturatedColors = CreateLighterDesaturatedHues(hueColor, fabricColors), DarkerSaturatedColors = CreateDarkerSaturatedHues(hueColor, fabricColors), DarkerDesaturatedColors = CreateDarkerDesaturatedHues(hueColor, fabricColors) }; return(model); }