Example #1
0
        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());
        }
Example #2
0
        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());
        }
Example #3
0
 private FabricColor CreateFabricColor(Design.Primitives.Color color, string sku, string name)
 {
     return(new FabricColor()
     {
         Color = color,
         Sku = sku,
         Name = name
     });
 }
Example #4
0
 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"
     });
 }
Example #5
0
        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);
        }
Example #6
0
        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);
        }