public override void update(ref VideoBuffer videoBuffer) { for (int y = 0; y < videoBuffer.Height; y++) { for (int x = 0; x < videoBuffer.Width; x++) { int r = BitConverter.GetBytes(videoBuffer.getPixel(x, y))[0]; int g = BitConverter.GetBytes(videoBuffer.getPixel(x, y))[1]; int b = BitConverter.GetBytes(videoBuffer.getPixel(x, y))[2]; //Color color = Color.FromArgb(r, g, b); //TODO: replace all this for ControlPaint.Light/ControlPaint.Darken using System.Drawing.Color instead double h = 0; double l = 0; double s = 0; RgbToHls(r, g, b, out h, out l, out s); //TODO: This is a quick way to get around transparency. Need a better way. if (videoBuffer.getPixel(x, y) != 0x000000) { l = Brightness; } HlsToRgb(h, l, s, out r, out g, out b); int rgb = b << 8 | g; rgb = rgb << 8 | r; videoBuffer.setPixel(x, y, (uint)rgb); } } }