public Color Extract(Core.Light led, Core.PixelReader pixelReader)
        {
            //Region might not be set if the whole screen is black
            if (led.Region == null || led.Region == Rectangle.Empty)
            {
                return(Color.Black);
            }
            else
            {
                // Average the pixels
                int r = 0, g = 0, b = 0, pixelCount = 0;
                foreach (var pixel in pixelReader.GetEveryNthPixel(this.PixelSkip.Value))
                {
                    r += pixel.R;
                    g += pixel.G;
                    b += pixel.B;
                    pixelCount++;
                }

                int redAvg = r / pixelCount;

                int greenAvg = g / pixelCount;

                int blueAvg = b / pixelCount;

                return(Color.FromArgb(redAvg, greenAvg, blueAvg));
            }
        }
Exemple #2
0
        public void Process(Core.Light led)
        {
            double red   = led.LEDColour.R;
            double green = led.LEDColour.G;
            double blue  = led.LEDColour.B;

            bool coloursChanged = false;

            //Change brightness first
            if (this.Brightness != null && this.Brightness != 100)
            {
                double percent = Brightness.Value / 100.00;
                red   = red * percent;
                green = green * percent;
                blue  = blue * percent;

                coloursChanged = true;
            }

            if (this.RedSaturation != null && this.RedSaturation != 100)
            {
                double percent = RedSaturation.Value / 100.00;
                red = red * percent;

                coloursChanged = true;
            }

            if (this.GreenSaturation != null && this.GreenSaturation != 100)
            {
                double percent = GreenSaturation.Value / 100.00;
                green = green * percent;

                coloursChanged = true;
            }

            if (this.BlueSaturation != null && this.BlueSaturation != 100)
            {
                double percent = BlueSaturation.Value / 100.00;
                blue = blue * percent;

                coloursChanged = true;
            }


            if (coloursChanged)
            {
                int resultRed   = led.LEDColour.R;
                int resultGreen = led.LEDColour.G;
                int resultBlue  = led.LEDColour.B;

                resultRed   = Convert.ToInt32(red);
                resultGreen = Convert.ToInt32(green);
                resultBlue  = Convert.ToInt32(blue);

                led.LEDColour = Color.FromArgb(resultRed, resultGreen, resultBlue);
            }
        }