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)); } }
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); } }