public static System.Drawing.Color GetColour(ColorLab c1, ColorLab c2, double countup, int speed = 7, int fadespeed = 15) { speed = 21 - speed; double alpha_seed = countup * fadespeed; if (alpha_seed > 255) alpha_seed = 255; int alpha = (int)Math.Max(0, 255 - alpha_seed); double step = 1.0 / speed; double ratio = (countup - 1) * step; if (ratio > 1) ratio = 1; if (ratio < 0) ratio = 0; double ratio2 = 1 - ratio; double L = ((c1.L * ratio2) + (c2.L * ratio)); double a = ((c1.a * ratio2) + (c2.a * ratio)); double b = ((c1.b * ratio2) + (c2.b * ratio)); //Console.WriteLine("Lab = " + L.ToString() + "," + a.ToString() + "," + b.ToString()); ColorManagment.ColorConverter Converter = new ColorManagment.ColorConverter(); //create a new instance of a ColorConverter ColorLab lab = new ColorLab(L, a, b); //create new Lab color ColorRGB rgb = Converter.ToRGB(lab); //convert to rgb ColorHSV hsv = Converter.ToHSV(rgb); //conver to HSL //Console.WriteLine("hsl.l = " + hsv.V.ToString()); hsv.V *= alpha / 255.0; //darken rgb = Converter.ToRGB(hsv); //convert to rgb //Console.WriteLine("RGB + " + rgb.R.ToString() + "," + rgb.G.ToString() + "," + rgb.B.ToString()); return System.Drawing.Color.FromArgb(255, (int)(rgb.R * 255), (int)(rgb.G * 255), (int)(rgb.B * 255)); }
private static System.Drawing.Color getColour(ColorLab c1, ColorLab c2, double ratio) { double ratio2 = 1 - ratio; double L = ((c1.L * ratio2) + (c2.L * ratio)); double a = ((c1.a * ratio2) + (c2.a * ratio)); double b = ((c1.b * ratio2) + (c2.b * ratio)); double alpha = 255 * (1 - (ratio * ratio)); //Console.WriteLine("Lab = " + L.ToString() + "," + a.ToString() + "," + b.ToString()); ColorManagment.ColorConverter Converter = new ColorManagment.ColorConverter(); //create a new instance of a ColorConverter ColorLab lab = new ColorLab(L, a, b); //create new Lab color ColorRGB rgb = Converter.ToRGB(lab); //convert to rgb ColorHSV hsv = Converter.ToHSV(rgb); //conver to HSL //Console.WriteLine("hsl.l = " + hsv.V.ToString()); hsv.V *= alpha / 255.0; //darken rgb = Converter.ToRGB(hsv); //convert to rgb //Console.WriteLine("RGB + " + rgb.R.ToString() + "," + rgb.G.ToString() + "," + rgb.B.ToString()); if (ratio2 == 1.0) { breatheTopPause = true; } if (alpha < 0.02) { return(System.Drawing.Color.FromArgb(0, (int)(rgb.R * 255), (int)(rgb.G * 255), (int)(rgb.B * 255))); } return(System.Drawing.Color.FromArgb(255, (int)(rgb.R * 255), (int)(rgb.G * 255), (int)(rgb.B * 255))); }
/// <summary> /// Create a new dye. /// </summary> /// <param name="name"></param> /// <param name="baseColor"></param> /// <param name="clothColor"></param> /// <param name="leatherColor"></param> /// <param name="metalColor"></param> public Dye(DyeSet parent, string name, int code, ColorRGB baseColor, ColorRGB clothColor, ColorRGB leatherColor, ColorRGB metalColor) { this.parent = parent; Name = name; Code = code; BaseColor = baseColor; ClothColor = clothColor; LeatherColor = leatherColor; MetalColor = metalColor; var cc = new ColorConverter(); var lab = cc.ToLab(MetalColor); }
private static System.Drawing.Color getColour(ColorLab c1, ColorLab c2, double countup, int speed = 7, int fadespeed = 15) { speed = 21 - speed; double alpha_seed = Math.Sqrt(countup) * fadespeed; if (alpha_seed > 255) { alpha_seed = 255; } int alpha = (int)Math.Max(0, 255 - alpha_seed); double step = 1.0 / speed; double ratio = (countup - 1) * step; if (ratio > 1) { ratio = 1; } if (ratio < 0) { ratio = 0; } double ratio2 = 1 - ratio; double L = ((c1.L * ratio2) + (c2.L * ratio)); double a = ((c1.a * ratio2) + (c2.a * ratio)); double b = ((c1.b * ratio2) + (c2.b * ratio)); //Console.WriteLine("Lab = " + L.ToString() + "," + a.ToString() + "," + b.ToString()); ColorManagment.ColorConverter Converter = new ColorManagment.ColorConverter(); //create a new instance of a ColorConverter ColorLab lab = new ColorLab(L, a, b); //create new Lab color ColorRGB rgb = Converter.ToRGB(lab); //convert to rgb ColorHSV hsv = Converter.ToHSV(rgb); //conver to HSL //Console.WriteLine("hsl.l = " + hsv.V.ToString()); hsv.V *= alpha / 255.0; //darken rgb = Converter.ToRGB(hsv); //convert to rgb //Console.WriteLine("RGB + " + rgb.R.ToString() + "," + rgb.G.ToString() + "," + rgb.B.ToString()); return(System.Drawing.Color.FromArgb(255, (int)(rgb.R * 255), (int)(rgb.G * 255), (int)(rgb.B * 255))); }
public static System.Drawing.Color GetColour(ColorLab c1, ColorLab c2, double ratio) { double ratio2 = 1 - ratio; double L = ((c1.L * ratio2) + (c2.L * ratio)); double a = ((c1.a * ratio2) + (c2.a * ratio)); double b = ((c1.b * ratio2) + (c2.b * ratio)); double alpha = 255 * (1 - (ratio * ratio)); //Console.WriteLine("Lab = " + L.ToString() + "," + a.ToString() + "," + b.ToString()); ColorManagment.ColorConverter Converter = new ColorManagment.ColorConverter(); //create a new instance of a ColorConverter ColorLab lab = new ColorLab(L, a, b); //create new Lab color ColorRGB rgb = Converter.ToRGB(lab); //convert to rgb ColorHSV hsv = Converter.ToHSV(rgb); //conver to HSL //Console.WriteLine("hsl.l = " + hsv.V.ToString()); hsv.V *= alpha / 255.0; //darken rgb = Converter.ToRGB(hsv); //convert to rgb //Console.WriteLine("RGB + " + rgb.R.ToString() + "," + rgb.G.ToString() + "," + rgb.B.ToString()); if (ratio2 == 1.0) Animations.breatheTopPause = true; if (alpha < 0.02) return System.Drawing.Color.FromArgb(0, (int)(rgb.R * 255), (int)(rgb.G * 255), (int)(rgb.B * 255)); return System.Drawing.Color.FromArgb(255, (int)(rgb.R * 255), (int)(rgb.G * 255), (int)(rgb.B * 255)); }
private void Measure(object Data) { int end = (int)((object[])Data)[0]; Color FromColor = (Color)((object[])Data)[1]; Color ToColor = (Color)((object[])Data)[2]; bool DoFast = (bool)((object[])Data)[3]; Stopwatch watch = new Stopwatch(); Color From2Color = FromColor; ColorConverter conv = new ColorConverter(); if (DoFast) { RGBSpaceName n = ColorConverter.StandardColorspace; YCbCrSpaceName m = ColorConverter.StandardYCbCrSpace; if (ToColor.Model == ColorModel.YCbCr) { n = ((ColorYCbCr)ToColor).BaseSpaceName; m = ((ColorYCbCr)ToColor).SpaceName; } else if (ToColor.Model == ColorModel.RGB) n = ((ColorRGB)ToColor).SpaceName; else if (ToColor.Model == ColorModel.HSV) n = ((ColorRGB)ToColor).SpaceName; else if (ToColor.Model == ColorModel.HSL) n = ((ColorRGB)ToColor).SpaceName; if (n != ColorConverter.StandardColorspace) conv.SetFast(FromColor, ToColor.Model, n, m); else conv.SetFast(FromColor, ToColor.Model, ToColor.ReferenceWhite); } for (int i = 0; i < end / Threadcount && !MainWorker.CancellationPending; i++) { if (DoFast) { watch.Start(); conv.ConvertFast(FromColor); watch.Stop(); } else { if (FromColor.IsICCcolor && !FromColor.IsPCScolor) { watch.Start(); From2Color = conv.ToICC(FromColor); watch.Stop(); } switch (ToColor.Model) { case ColorModel.CIELab: watch.Start(); conv.ToLab(From2Color, ToColor.ReferenceWhite); watch.Stop(); break; case ColorModel.CIELCHab: watch.Start(); conv.ToLCHab(From2Color, ToColor.ReferenceWhite); watch.Stop(); break; case ColorModel.CIELCHuv: watch.Start(); conv.ToLCHuv(From2Color, ToColor.ReferenceWhite); watch.Stop(); break; case ColorModel.CIELuv: watch.Start(); conv.ToLuv(From2Color, ToColor.ReferenceWhite); watch.Stop(); break; case ColorModel.CIEXYZ: watch.Start(); conv.ToXYZ(From2Color, ToColor.ReferenceWhite); watch.Stop(); break; case ColorModel.CIEYxy: watch.Start(); conv.ToYxy(From2Color, ToColor.ReferenceWhite); watch.Stop(); break; case ColorModel.Gray: watch.Start(); conv.ToGray(From2Color, ToColor.ReferenceWhite); watch.Stop(); break; case ColorModel.HSL: RGBSpaceName n = ((ColorHSL)ToColor).SpaceName; if (n == RGBSpaceName.ICC) goto default; watch.Start(); conv.ToHSL(From2Color, n); watch.Stop(); break; case ColorModel.HSV: n = ((ColorHSV)ToColor).SpaceName; if (n == RGBSpaceName.ICC) goto default; watch.Start(); conv.ToHSV(From2Color, n); watch.Stop(); break; case ColorModel.RGB: n = ((ColorRGB)ToColor).SpaceName; if (n == RGBSpaceName.ICC) goto default; watch.Start(); conv.ToRGB(From2Color, n); watch.Stop(); break; case ColorModel.YCbCr: n = ((ColorYCbCr)ToColor).BaseSpaceName; YCbCrSpaceName m = ((ColorYCbCr)ToColor).SpaceName; if (m == YCbCrSpaceName.ICC) goto default; watch.Start(); conv.ToYCbCr(From2Color, n, m); watch.Stop(); break; case ColorModel.LCH99: watch.Start(); conv.ToLCH99(From2Color); watch.Stop(); break; case ColorModel.LCH99b: watch.Start(); conv.ToLCH99b(From2Color); watch.Stop(); break; case ColorModel.LCH99c: watch.Start(); conv.ToLCH99c(From2Color); watch.Stop(); break; case ColorModel.LCH99d: watch.Start(); conv.ToLCH99d(From2Color); watch.Stop(); break; default: watch.Start(); conv.ToICC(conv.ToICC_PCS(From2Color, ToICC), ToICC); watch.Stop(); break; } } progress++; time += watch.ElapsedTicks; if (progress % 100 == 0) MainWorker.ReportProgress(progress * 100 / (end - 1)); } }
private ColorHSV getColorHSV() { var colorSRGB = GetColor(parent.CurrentMaterial); var colorHSV = new ColorConverter().ToHSV(colorSRGB); return colorHSV; }
/* DISTANCE */ public double Distance(System.Windows.Media.Color otherColor) { // var the LAB colors var cc = new ColorConverter(); var color1 = cc.ToLab(GetColor(parent.CurrentMaterial)); var color2 = cc.ToLab(new ColorRGB(otherColor.R, otherColor.G, otherColor.B)); // computer the difference using the CIEDE2000 algorithm // http://en.wikipedia.org/wiki/Color_difference#CIEDE2000 const double kC = 1.0, kH = 1.0, kL = 1.0; var dLp = color2.L - color1.L; var Ls = (color1.L + color2.L) / 2; var C1s = Math.Sqrt(color1.a * color1.a + color1.b * color1.b); var C2s = Math.Sqrt(color2.a * color2.a + color2.b * color2.b); var Cs = (C1s + C2s) / 2; var p7 = 1 - Math.Sqrt(Math.Pow(Cs, 7) / (Math.Pow(Cs, 7) + Math.Pow(25, 7))); var a1p = color1.a + color1.a / 2 * p7; var a2p = color2.a + color2.a / 2 * p7; var C1p = Math.Sqrt(a1p * a1p + color1.b * color1.b); var C2p = Math.Sqrt(a2p * a2p + color2.b * color2.b); var Cps = (C1p + C2p) / 2; var dCp = C2p - C1p; var h1p = color1.b == 0 && a1p == 0 ? 0 : normalize(Math.Atan2(color1.b, a1p) * 180 / Math.PI); var h2p = color2.b == 0 && a2p == 0 ? 0 : normalize(Math.Atan2(color2.b, a2p) * 180 / Math.PI); var dhp = Math.Abs(h1p - h2p) <= 180 ? h2p - h1p : h2p <= h1p ? h2p - h1p + 360 : h2p - h1p - 360; var dHp = 2 * Math.Sqrt(C1p * C2p) * Math.Sin(dhp * Math.PI / 180 / 2); var Hps = C1p == 0 || C2p == 0 ? h1p + h2p : Math.Abs(h1p - h2p) > 180 ? (h1p + h2p + 360) / 2 : (h1p + h2p) / 2; var T = 1 - 0.17 * Math.Cos((Hps - 30) * Math.PI / 180) + 0.24 * Math.Cos(2 * Hps * Math.PI / 180) + 0.32 * Math.Cos((3 * Hps + 6) * Math.PI / 180) - 0.20 * Math.Cos((4 * Hps - 63) * Math.PI / 180); var Lsm50sq = Sqr(Ls - 50); var SL = 1 + 0.015 * Lsm50sq / Math.Sqrt(20 + Lsm50sq); var SC = 1 + 0.045 * Cps; var SH = 1 + 0.015 * Cps * T; var RT = -1 * Math.Sqrt(Math.Pow(Cps, 7) / (Math.Pow(Cps, 7) + Math.Pow(25, 7))) * Math.Sin((60 * Math.Exp(- Sqr((Hps - 275) / 25))) * Math.PI / 180); var DEs00 = Math.Sqrt( Sqr(dLp / (kL * SL)) + Sqr(dCp / (kC * SC)) + Sqr(dHp / (kH * SH)) + RT * dCp * dHp / (kC * SC * kH * SH)); return DEs00; }
private static void AddKeyPress(int vkCode) { Debug.WriteLine("AddKeyPress at " + DateTime.Now.Minute.ToString() + ":" + DateTime.Now.Minute.ToString() + ":" + DateTime.Now.Second.ToString() + ":" + DateTime.Now.Millisecond.ToString()); KeysConverter kc = new KeysConverter(); string keyChar = kc.ConvertToString(vkCode).ToUpper(); string keyOut = ""; switch (keyChar) { case "1": keyOut = "ONE"; break; case "2": keyOut = "TWO"; break; case "3": keyOut = "THREE"; break; case "4": keyOut = "FOUR"; break; case "5": keyOut = "FIVE"; break; case "6": keyOut = "SIX"; break; case "7": keyOut = "SEVEN"; break; case "8": keyOut = "EIGHT"; break; case "9": keyOut = "NINE"; break; case "0": keyOut = "ZERO"; break; default: keyOut = keyChar; break; } try { //KeyCodes.ScanCode code = (KeyCodes.ScanCode)Enum.Parse(typeof(KeyCodes.ScanCode), keyOut); var query = from KeyCodes.keyPosition k in KeyCodes.keypositions where k.keyname == keyOut //(int)code select k; centroid c = new centroid(); c.point = new Point((int)query.First().x, (int)query.First().y); c.countup = 1; System.Drawing.Color c1 = Form1.m_startColour; System.Drawing.Color c2 = Form1.m_endColour; if (Form1.randomColours) { Random rndcol = new Random(); c1 = System.Drawing.Color.FromArgb(rndcol.Next(30, 255), rndcol.Next(30, 255), rndcol.Next(30, 255)); c2 = System.Drawing.Color.FromArgb(rndcol.Next(30, 255), rndcol.Next(30, 255), rndcol.Next(30, 255)); } ColorManagment.ColorConverter Converter = new ColorManagment.ColorConverter(); //create a new instance of a ColorConverter ColorRGB rgb1 = new ColorRGB(RGBSpaceName.sRGB, c1.R, c1.G, c1.B); //create an RGB color c.lab1 = Converter.ToLab(rgb1); ColorRGB rgb2 = new ColorRGB(RGBSpaceName.sRGB, c2.R, c2.G, c2.B); //create an RGB color c.lab2 = Converter.ToLab(rgb2); if (centroids.Count > 0) { for (int i = centroids.Count-1; i > -1; i--) { Debug.WriteLine(i); if (centroids[i].point == c.point) { centroids.RemoveAt(i); break; } } } centroids.Add(c); //DoAnimation(); } catch (Exception ex) { Debug.WriteLine("AddKeyPress: handled exception: " + ex.Message); } }
void bw_Keysave_DoWork(object sender, DoWorkEventArgs e) { LogitechGSDK.LogiLedSetLighting(0, 0, 0); DateTime inittime = DateTime.Now; int counter = 0; List<keysavePoint> points = new List<keysavePoint> { }; Random rnd = new Random(); while (true) { if (bw_Keysave.CancellationPending) return; TimeSpan elapsed = DateTime.Now - inittime; if (elapsed.TotalMilliseconds > 500) //change this namber to change speed new stars appear { //for (int c = 0; c < 2; c++) //{ int newx = rnd.Next(0,20); int newy = rnd.Next(0, 5); keysavePoint kp = new keysavePoint(); kp.point = new Point(newx, newy); kp.counter = 0; points.Add(kp); //} //Console.Write("."); inittime = DateTime.Now; } if (counter > 4) //change this number to change speed stars change { counter = 0; System.Drawing.Color c1 = Form1.m_startColour; System.Drawing.Color c2 = Form1.m_endColour; int fadespeed = Form1.m_fadespeed; int gradientspeed = Form1.m_gradientspeed; ColorManagment.ColorConverter Converter = new ColorManagment.ColorConverter(); //create a new instance of a ColorConverter ColorRGB rgb1 = new ColorRGB(RGBSpaceName.sRGB, c1.R, c1.G, c1.B); //create an RGB color ColorLab lab1 = Converter.ToLab(rgb1); ColorRGB rgb2 = new ColorRGB(RGBSpaceName.sRGB, c2.R, c2.G, c2.B); //create an RGB color ColorLab lab2 = Converter.ToLab(rgb2); bmp = new Bitmap(21, 6); LockBitmap lockBitmap = new LockBitmap(bmp); lockBitmap.LockBits(); for (int x = 0; x < 21; x++) for (int y = 0; y < 6; y++) { distances[x, y] = double.MaxValue; times[x, y] = int.MaxValue; } for (int i = 0; i < points.Count; i++) { keysavePoint c = points[i]; for (int x = 0; x < 21; x++) for (int y = 0; y < 6; y++) { double distance = Math.Sqrt(((x - c.point.X) * (x - c.point.X) + (y - c.point.Y) * (y - c.point.Y))); distance = Math.Abs(distance) / (Form1.m_distanceFalloff / 2); if (Form1.m_Wave) { distance -= c.counter; distance = Math.Abs(distance); } if (distance < Math.Abs(distances[x, y])) { distances[x, y] = distance; } if (c.counter < times[x, y]) times[x, y] = c.counter; } c.counter++; points[i] = c; } for (int x = 0; x < 21; x++) for (int y = 0; y < 6; y++) { double distance = distances[x, y]; System.Drawing.Color colour = System.Drawing.Color.White; if (Form1.m_Wave == true) colour = getColour(lab1, lab2, distance + times[x, y] + Math.Pow(distance, Form1.m_WaveSpeed), gradientspeed, fadespeed); else colour = getColour(lab1, lab2, distance + times[x, y], gradientspeed, fadespeed); lockBitmap.SetPixel(x, y, colour); } for (int k = points.Count - 1; k >= 0; k--) { if (points[k].counter > 20) points.RemoveAt(k); } lockBitmap.UnlockBits(); byte[] b = Form1.getLEDGridFromBitmap(bmp); //((Form1)Application.OpenForms[0]).pic1.Image = bmp; //bmp.Save(@"C:\temp\heatmap.png"); LogitechGSDK.LogiLedSetLightingFromBitmap(b); } counter++; System.Threading.Thread.Sleep(10); } }
void bw_Breathe_DoWork(object sender, DoWorkEventArgs e) { System.Drawing.Color c1 = Form1.m_startColour; System.Drawing.Color c2 = Form1.m_endColour; //System.Drawing.Color.Black;// Form1.m_endColour; bool donePause = false; int gradientspeed = Form1.m_gradientspeed; DateTime inittime = DateTime.Now; int counter = 1;// (int)(Math.PI * 2); List<keysavePoint> points = new List<keysavePoint> { }; Random rnd = new Random(); while (true) { if (bw_Breathe.CancellationPending) return; ColorManagment.ColorConverter Converter = new ColorManagment.ColorConverter(); //create a new instance of a ColorConverter ColorRGB rgb1 = new ColorRGB(RGBSpaceName.sRGB, c1.R, c1.G, c1.B); //create an RGB color ColorLab lab1 = Converter.ToLab(rgb1); ColorRGB rgb2 = new ColorRGB(RGBSpaceName.sRGB, c2.R, c2.G, c2.B); //create an RGB color ColorLab lab2 = Converter.ToLab(rgb2); System.Drawing.Color colour = System.Drawing.Color.White; colour = getColour(lab1, lab2, pulse(counter / 2000.0, 10, 5));//Form1.m_fadespeed)); LogitechGSDK.LogiLedSetLighting((int)(colour.R / 255.0 * 100.0), (int)(colour.G / 255.0 * 100.0), (int)(colour.B / 255.0 * 100.0)); double val = 2 * Math.PI * counter / 2000 * 10; if (breatheTopPause) { for (int i = 0; i < 50; i++) { if (bw_Breathe.CancellationPending) return; System.Threading.Thread.Sleep(28); } counter = (int)(Math.PI * 2); donePause = false; breatheTopPause = false; } else if (colour.A == 0 && !donePause) { donePause = true; for (int i = 0; i < 50; i++) { if (bw_Breathe.CancellationPending) return; System.Threading.Thread.Sleep(28); } } counter++; System.Threading.Thread.Sleep((int)(55)); } }
private static void AddKeyPress(int vkCode) { Debug.WriteLine("AddKeyPress at " + DateTime.Now.Minute.ToString() + ":" + DateTime.Now.Minute.ToString() + ":" + DateTime.Now.Second.ToString() + ":" + DateTime.Now.Millisecond.ToString()); KeysConverter kc = new KeysConverter(); string keyChar = kc.ConvertToString(vkCode).ToUpper(); string keyOut = ""; switch (keyChar) { case "1": keyOut = "ONE"; break; case "2": keyOut = "TWO"; break; case "3": keyOut = "THREE"; break; case "4": keyOut = "FOUR"; break; case "5": keyOut = "FIVE"; break; case "6": keyOut = "SIX"; break; case "7": keyOut = "SEVEN"; break; case "8": keyOut = "EIGHT"; break; case "9": keyOut = "NINE"; break; case "0": keyOut = "ZERO"; break; default: keyOut = keyChar; break; } try { //KeyCodes.ScanCode code = (KeyCodes.ScanCode)Enum.Parse(typeof(KeyCodes.ScanCode), keyOut); var query = from KeyCodes.keyPosition k in KeyCodes.keypositions where k.keyname == keyOut //(int)code select k; centroid c = new centroid(); c.point = new Point((int)query.First().x, (int)query.First().y); c.countup = 1; System.Drawing.Color c1 = Form1.m_startColour; System.Drawing.Color c2 = Form1.m_endColour; if (Form1.randomColours) { Random rndcol = new Random(); c1 = System.Drawing.Color.FromArgb(rndcol.Next(30, 255), rndcol.Next(30, 255), rndcol.Next(30, 255)); c2 = System.Drawing.Color.FromArgb(rndcol.Next(30, 255), rndcol.Next(30, 255), rndcol.Next(30, 255)); } ColorManagment.ColorConverter Converter = new ColorManagment.ColorConverter(); //create a new instance of a ColorConverter ColorRGB rgb1 = new ColorRGB(RGBSpaceName.sRGB, c1.R, c1.G, c1.B); //create an RGB color c.lab1 = Converter.ToLab(rgb1); ColorRGB rgb2 = new ColorRGB(RGBSpaceName.sRGB, c2.R, c2.G, c2.B); //create an RGB color c.lab2 = Converter.ToLab(rgb2); if (centroids.Count > 0) { for (int i = centroids.Count - 1; i > -1; i--) { Debug.WriteLine(i); if (centroids[i].point == c.point) { centroids.RemoveAt(i); break; } } } centroids.Add(c); //DoAnimation(); } catch (Exception ex) { Debug.WriteLine("AddKeyPress: handled exception: " + ex.Message); } }
void bw_Breathe_DoWork(object sender, DoWorkEventArgs e) { System.Drawing.Color c1 = Form1.m_startColour; System.Drawing.Color c2 = Form1.m_endColour; //System.Drawing.Color.Black;// Form1.m_endColour; bool donePause = false; int gradientspeed = Form1.m_gradientspeed; DateTime inittime = DateTime.Now; int counter = 1;// (int)(Math.PI * 2); List <keysavePoint> points = new List <keysavePoint> { }; Random rnd = new Random(); while (true) { if (bw_Breathe == null) { return; } if (bw_Breathe.CancellationPending) { return; } ColorManagment.ColorConverter Converter = new ColorManagment.ColorConverter(); //create a new instance of a ColorConverter ColorRGB rgb1 = new ColorRGB(RGBSpaceName.sRGB, c1.R, c1.G, c1.B); //create an RGB color ColorLab lab1 = Converter.ToLab(rgb1); ColorRGB rgb2 = new ColorRGB(RGBSpaceName.sRGB, c2.R, c2.G, c2.B); //create an RGB color ColorLab lab2 = Converter.ToLab(rgb2); System.Drawing.Color colour = System.Drawing.Color.White; colour = getColour(lab1, lab2, pulse(counter / 2000.0, 10, 5));//Form1.m_fadespeed)); LogitechGSDK.LogiLedSetLighting((int)(colour.R / 255.0 * 100.0), (int)(colour.G / 255.0 * 100.0), (int)(colour.B / 255.0 * 100.0)); double val = 2 * Math.PI * counter / 2000 * 10; if (breatheTopPause) { for (int i = 0; i < 50; i++) { if (bw_Breathe.CancellationPending) { return; } System.Threading.Thread.Sleep(28); } counter = (int)(Math.PI * 2); donePause = false; breatheTopPause = false; } else if (colour.A == 0 && !donePause) { donePause = true; for (int i = 0; i < 50; i++) { if (bw_Breathe.CancellationPending) { return; } System.Threading.Thread.Sleep(28); } } counter++; System.Threading.Thread.Sleep((int)(55)); } }
void bw_Keysave_DoWork(object sender, DoWorkEventArgs e) { LogitechGSDK.LogiLedSetLighting(0, 0, 0); DateTime inittime = DateTime.Now; int counter = 0; List <keysavePoint> points = new List <keysavePoint> { }; Random rnd = new Random(); System.Drawing.Color c1 = Form1.m_startColour; System.Drawing.Color c2 = Form1.m_endColour; while (true) { if (bw_Keysave.CancellationPending) { timerKeySaver.Start(); return; } TimeSpan elapsed = DateTime.Now - inittime; if (elapsed.TotalMilliseconds > Form1.m_KeysaveNewRippleInterval) //change this namber to change speed new stars appear { if (Form1.randomColours) { Random rndcol = new Random(); c1 = System.Drawing.Color.FromArgb(rndcol.Next(30, 255), rndcol.Next(30, 255), rndcol.Next(30, 255)); c2 = System.Drawing.Color.FromArgb(rndcol.Next(30, 255), rndcol.Next(30, 255), rndcol.Next(30, 255)); } //for (int c = 0; c < 2; c++) //{ int newx = rnd.Next(0, 20); int newy = rnd.Next(0, 5); keysavePoint kp = new keysavePoint(); kp.point = new Point(newx, newy); kp.counter = 0; points.Add(kp); //} //Console.Write("."); inittime = DateTime.Now; } if (counter > 4) //change this number to change speed stars change { counter = 0; int fadespeed = Form1.m_fadespeed; int gradientspeed = Form1.m_gradientspeed; ColorManagment.ColorConverter Converter = new ColorManagment.ColorConverter(); //create a new instance of a ColorConverter ColorRGB rgb1 = new ColorRGB(RGBSpaceName.sRGB, c1.R, c1.G, c1.B); //create an RGB color ColorLab lab1 = Converter.ToLab(rgb1); ColorRGB rgb2 = new ColorRGB(RGBSpaceName.sRGB, c2.R, c2.G, c2.B); //create an RGB color ColorLab lab2 = Converter.ToLab(rgb2); bmp = new Bitmap(21, 6); LockBitmap lockBitmap = new LockBitmap(bmp); lockBitmap.LockBits(); for (int x = 0; x < 21; x++) { for (int y = 0; y < 6; y++) { distances[x, y] = double.MaxValue; times[x, y] = int.MaxValue; } } for (int i = 0; i < points.Count; i++) { keysavePoint c = points[i]; for (int x = 0; x < 21; x++) { for (int y = 0; y < 6; y++) { double distance = Math.Sqrt(((x - c.point.X) * (x - c.point.X) + (y - c.point.Y) * (y - c.point.Y))); distance = Math.Abs(distance) / (Form1.m_distanceFalloff / 2); if (Form1.m_Wave) { distance -= c.counter; distance = Math.Abs(distance); } if (distance < Math.Abs(distances[x, y])) { distances[x, y] = distance; } if (c.counter < times[x, y]) { times[x, y] = c.counter; } } } c.counter++; points[i] = c; } for (int x = 0; x < 21; x++) { for (int y = 0; y < 6; y++) { double distance = distances[x, y]; System.Drawing.Color colour = System.Drawing.Color.White; if (Form1.m_Wave == true) { colour = getColour(lab1, lab2, distance + times[x, y] + Math.Pow(distance, Form1.m_WaveSpeed), gradientspeed, fadespeed); } else { colour = getColour(lab1, lab2, distance + times[x, y], gradientspeed, fadespeed); } lockBitmap.SetPixel(x, y, colour); } } for (int k = points.Count - 1; k >= 0; k--) { if (points[k].counter > 40) { points.RemoveAt(k); } } lockBitmap.UnlockBits(); byte[] b = Form1.getLEDGridFromBitmap(bmp); //((Form1)Application.OpenForms[0]).pic1.Image = bmp; //bmp.Save(@"C:\temp\heatmap.png"); LogitechGSDK.LogiLedSetLightingFromBitmap(b); } counter++; System.Threading.Thread.Sleep(10); } timerKeySaver.Start(); }