Пример #1
0
		public static LightCommand SetColor(this LightCommand lightCommand, RGBColor color)
		{
			if (lightCommand == null)
				throw new ArgumentNullException(nameof(lightCommand));

			var hsb = color.GetHSB();
			lightCommand.Brightness = (byte)hsb.Brightness;
			lightCommand.Hue = hsb.Hue;
			lightCommand.Saturation = hsb.Saturation;

			return lightCommand;
		}
        public void ColorConversionDarkSeaGreenPoint()
        {
            string color = "8FBC8B";

            RGBColor rgbColor = new RGBColor(color);
            var      hsb      = rgbColor.GetHSB();
            State    state    = new State()
            {
                Hue        = hsb.Hue,
                Brightness = (byte)hsb.Brightness,
                Saturation = hsb.Saturation
            };

            var rgb = state.ToRgb();
        }
Пример #3
0
        public static LightCommand SetColor(this LightCommand lightCommand, RGBColor color)
        {
            if (lightCommand == null)
            {
                throw new ArgumentNullException(nameof(lightCommand));
            }

            var hsb = color.GetHSB();

            lightCommand.Brightness = (byte)hsb.Brightness;
            lightCommand.Hue        = hsb.Hue;
            lightCommand.Saturation = hsb.Saturation;

            return(lightCommand);
        }
        public void ColorConversionRedPoint()
        {
            string color = "FF0000";

            RGBColor rgbColor = new RGBColor(color);
            var      hsb      = rgbColor.GetHSB();
            State    state    = new State()
            {
                Hue        = hsb.Hue,
                Brightness = (byte)hsb.Brightness,
                Saturation = hsb.Saturation
            };

            var rgb = state.ToRgb();

            Assert.AreEqual(1, rgb.R);
            Assert.AreEqual(0, rgb.G);
            Assert.AreEqual(0, rgb.B);
        }
Пример #5
0
        public void ColorConversionDarkSeaGreenPoint()
        {
            string color = "8FBC8B";

            RGBColor rgbColor = new RGBColor(color);
            var      hsb      = rgbColor.GetHSB();
            State    state    = new State()
            {
                Hue        = hsb.Hue,
                Brightness = (byte)hsb.Brightness,
                Saturation = hsb.Saturation
            };

            var rgb = state.ToRgb();

            Assert.AreEqual(143d / 255d, rgb.R, 0.002d);
            Assert.AreEqual(188d / 255d, rgb.G, 0.002d);
            Assert.AreEqual(139d / 255d, rgb.B, 0.002d);
        }
Пример #6
0
        public async Task Run(CancellationToken token, string ip = null)
        {
            try
            {
                if (ip == null)
                {
                    ip = await FindBridge();
                }
                token.ThrowIfCancellationRequested();
                var appKey    = prefs.GetString("HueSaber", "appKey");
                var clientKey = prefs.GetString("HueSaber", "clientKey");
                log.Info("Connecting to bridge...");
                var client = new StreamingHueClient(ip, appKey, clientKey);
                token.ThrowIfCancellationRequested();
                log.Info("Connected! Getting entertainment group...");
                var group = (await client.LocalHueClient.GetEntertainmentGroups()).ElementAtOrDefault(prefs.GetInt("HueSaber", "overrideRoom", 0));
                if (group == null)
                {
                    log.Error("Group is missing!");
                    return;
                }
                token.ThrowIfCancellationRequested();
                var entGroup = new StreamingGroup(group.Locations);
                log.Info("Found group! Connecting to lightbulbs...");
                await client.Connect(group.Id);

                token.ThrowIfCancellationRequested();
                log.Info("Connected to bulbs! Tracking background color...");
                _ = client.AutoUpdate(entGroup, token);
                var layer = entGroup.GetNewLayer(true);
                while (!token.IsCancellationRequested)
                {
                    //log.Info($"Color is {currentColor}");
                    var color = (Color)currentColor;
                    var miss  = DateTimeOffset.UtcNow - (DateTimeOffset)missTime;
                    var cut   = DateTimeOffset.UtcNow - (DateTimeOffset)cutTime;

                    var rgbColor = new RGBColor(color.r, color.g, color.b);
                    var hsbColor = rgbColor.GetHSB();
                    if (hsbColor.Saturation > 35)
                    {
                        hsbColor.Saturation = 200;
                    }

                    var brightness = 0.7;
                    if (miss < TimeSpan.FromMilliseconds(100))
                    {
                        brightness = 0.5;
                    }
                    else if (cut < TimeSpan.FromMilliseconds(100))
                    {
                        brightness = 1;
                    }

                    layer.SetState(token, hsbColor.GetRGB(), brightness, TimeSpan.FromMilliseconds(50));
                    await Task.Delay(TimeSpan.FromMilliseconds(1000.0 / 30.0), token);
                }
            } catch (Exception ex)
            {
                log.Error(ex);
                throw;
            }
        }
Пример #7
0
        public static async Task ProcessEvent(BeatmapEventData data, Color?raw = null, dynamic gradientObject = null)
        {
            double r  = 0;
            double g  = 0;
            double b  = 0;
            double ir = 0;
            double ig = 0;
            double ib = 0;
            double er = 0;
            double eg = 0;
            double eb = 0;
            double brightness;
            float  duration = 0;
            bool   gradient = false;
            Color  initcolor;
            Color  endcolor;
            var    initrgbColor = new RGBColor(ir, ig, ib);
            var    inithsbColor = initrgbColor.GetHSB();
            var    endrgbColor  = new RGBColor(er, eg, eb);
            var    endhsbColor  = endrgbColor.GetHSB();

            if (gradientObject != null)
            {
                duration     = (float)Trees.at(gradientObject, DURATION);
                initcolor    = Utils.ChromaUtils.GetColorFromData(gradientObject, STARTCOLOR);
                endcolor     = Utils.ChromaUtils.GetColorFromData(gradientObject, ENDCOLOR);
                ir           = initcolor.r;
                ig           = initcolor.g;
                ib           = initcolor.b;
                er           = endcolor.r;
                eg           = endcolor.g;
                eb           = endcolor.b;
                initrgbColor = new RGBColor(ir, ig, ib);
                inithsbColor = initrgbColor.GetHSB();
                endrgbColor  = new RGBColor(er, eg, eb);
                endhsbColor  = endrgbColor.GetHSB();
                if (Settings.ChromaConfig.Instance.LowLight == true)
                {
                    if (inithsbColor.Brightness < 127)
                    {
                        inithsbColor.Brightness = 127;
                    }
                    if (endhsbColor.Brightness < 127)
                    {
                        endhsbColor.Brightness = 127;
                    }
                }
                else
                {
                }
                gradient = true;
            }
            if (raw.HasValue)
            {
                Color color = (Color)raw;
                r = color.r;
                g = color.g;
                b = color.b;
            }
            else if (data.value == 5 || data.value == 6 || data.value == 7)
            {
                r = origLeft.r;
                g = origLeft.g;
                b = origLeft.b;
            }
            else
            {
                r = origRight.r;
                g = origRight.g;
                b = origRight.b;
            }

            var rgbColor = new RGBColor(r, g, b);
            var hsbColor = rgbColor.GetHSB();

            if (Settings.ChromaConfig.Instance.LowLight == true)
            {
                brightness = 0.5f;

                if (hsbColor.Brightness < 127)
                {
                    hsbColor.Brightness = 127;
                }
            }
            else
            {
                brightness = 0;
            }

            if (data.type == BeatmapEventType.Event0)
            {
                if (Settings.ChromaConfig.Instance.BackLaserGroup == BackLaserGroup.NONE)
                {
                }
                if (Settings.ChromaConfig.Instance.BackLaserGroup == BackLaserGroup.LEFT)
                {
                    await SendCommandL(data, hsbColor, brightness, inithsbColor, endhsbColor, duration, gradient);
                }
                if (Settings.ChromaConfig.Instance.BackLaserGroup == BackLaserGroup.RIGHT)
                {
                    await SendCommandR(data, hsbColor, brightness, inithsbColor, endhsbColor, duration, gradient);
                }
                if (Settings.ChromaConfig.Instance.BackLaserGroup == BackLaserGroup.FRONT)
                {
                    await SendCommandF(data, hsbColor, brightness, inithsbColor, endhsbColor, duration, gradient);
                }
                if (Settings.ChromaConfig.Instance.BackLaserGroup == BackLaserGroup.BACK)
                {
                    await SendCommandB(data, hsbColor, brightness, inithsbColor, endhsbColor, duration, gradient);
                }
                if (Settings.ChromaConfig.Instance.BackLaserGroup == BackLaserGroup.CENTER)
                {
                    await SendCommandC(data, hsbColor, brightness, inithsbColor, endhsbColor, duration, gradient);
                }
                if (Settings.ChromaConfig.Instance.BackLaserGroup == BackLaserGroup.ALL)
                {
                    await SendCommandA(data, hsbColor, brightness, inithsbColor, endhsbColor, duration, gradient);
                }
            }

            if (data.type == BeatmapEventType.Event1)
            {
                if (Settings.ChromaConfig.Instance.BigRingsGroup == BigRingsGroup.NONE)
                {
                }
                if (Settings.ChromaConfig.Instance.BigRingsGroup == BigRingsGroup.LEFT)
                {
                    await SendCommandL(data, hsbColor, brightness, inithsbColor, endhsbColor, duration, gradient);
                }
                if (Settings.ChromaConfig.Instance.BigRingsGroup == BigRingsGroup.RIGHT)
                {
                    await SendCommandR(data, hsbColor, brightness, inithsbColor, endhsbColor, duration, gradient);
                }
                if (Settings.ChromaConfig.Instance.BigRingsGroup == BigRingsGroup.FRONT)
                {
                    await SendCommandF(data, hsbColor, brightness, inithsbColor, endhsbColor, duration, gradient);
                }
                if (Settings.ChromaConfig.Instance.BigRingsGroup == BigRingsGroup.BACK)
                {
                    await SendCommandB(data, hsbColor, brightness, inithsbColor, endhsbColor, duration, gradient);
                }
                if (Settings.ChromaConfig.Instance.BigRingsGroup == BigRingsGroup.CENTER)
                {
                    await SendCommandC(data, hsbColor, brightness, inithsbColor, endhsbColor, duration, gradient);
                }
                if (Settings.ChromaConfig.Instance.BigRingsGroup == BigRingsGroup.ALL)
                {
                    await SendCommandA(data, hsbColor, brightness, inithsbColor, endhsbColor, duration, gradient);
                }
            }
            if (data.type == BeatmapEventType.Event2)
            {
                if (Settings.ChromaConfig.Instance.LeftRotatingLaserGroup == LeftRotatingLaserGroup.NONE)
                {
                }
                if (Settings.ChromaConfig.Instance.LeftRotatingLaserGroup == LeftRotatingLaserGroup.LEFT)
                {
                    await SendCommandL(data, hsbColor, brightness, inithsbColor, endhsbColor, duration, gradient);
                }
                if (Settings.ChromaConfig.Instance.LeftRotatingLaserGroup == LeftRotatingLaserGroup.RIGHT)
                {
                    await SendCommandR(data, hsbColor, brightness, inithsbColor, endhsbColor, duration, gradient);
                }
                if (Settings.ChromaConfig.Instance.LeftRotatingLaserGroup == LeftRotatingLaserGroup.FRONT)
                {
                    await SendCommandF(data, hsbColor, brightness, inithsbColor, endhsbColor, duration, gradient);
                }
                if (Settings.ChromaConfig.Instance.LeftRotatingLaserGroup == LeftRotatingLaserGroup.BACK)
                {
                    await SendCommandB(data, hsbColor, brightness, inithsbColor, endhsbColor, duration, gradient);
                }
                if (Settings.ChromaConfig.Instance.LeftRotatingLaserGroup == LeftRotatingLaserGroup.CENTER)
                {
                    await SendCommandC(data, hsbColor, brightness, inithsbColor, endhsbColor, duration, gradient);
                }
                if (Settings.ChromaConfig.Instance.LeftRotatingLaserGroup == LeftRotatingLaserGroup.ALL)
                {
                    await SendCommandA(data, hsbColor, brightness, inithsbColor, endhsbColor, duration, gradient);
                }
            }
            if (data.type == BeatmapEventType.Event3)
            {
                if (Settings.ChromaConfig.Instance.RightRotatingLaserGroup == RightRotatingLaserGroup.NONE)
                {
                }
                if (Settings.ChromaConfig.Instance.RightRotatingLaserGroup == RightRotatingLaserGroup.LEFT)
                {
                    await SendCommandL(data, hsbColor, brightness, inithsbColor, endhsbColor, duration, gradient);
                }
                if (Settings.ChromaConfig.Instance.RightRotatingLaserGroup == RightRotatingLaserGroup.RIGHT)
                {
                    await SendCommandR(data, hsbColor, brightness, inithsbColor, endhsbColor, duration, gradient);
                }
                if (Settings.ChromaConfig.Instance.RightRotatingLaserGroup == RightRotatingLaserGroup.FRONT)
                {
                    await SendCommandF(data, hsbColor, brightness, inithsbColor, endhsbColor, duration, gradient);
                }
                if (Settings.ChromaConfig.Instance.RightRotatingLaserGroup == RightRotatingLaserGroup.BACK)
                {
                    await SendCommandB(data, hsbColor, brightness, inithsbColor, endhsbColor, duration, gradient);
                }
                if (Settings.ChromaConfig.Instance.RightRotatingLaserGroup == RightRotatingLaserGroup.CENTER)
                {
                    await SendCommandC(data, hsbColor, brightness, inithsbColor, endhsbColor, duration, gradient);
                }
                if (Settings.ChromaConfig.Instance.RightRotatingLaserGroup == RightRotatingLaserGroup.ALL)
                {
                    await SendCommandA(data, hsbColor, brightness, inithsbColor, endhsbColor, duration, gradient);
                }
            }
            if (data.type == BeatmapEventType.Event4)
            {
                if (Settings.ChromaConfig.Instance.CenterLightGroup == CenterLightGroup.NONE)
                {
                }
                if (Settings.ChromaConfig.Instance.CenterLightGroup == CenterLightGroup.LEFT)
                {
                    await SendCommandL(data, hsbColor, brightness, inithsbColor, endhsbColor, duration, gradient);
                }
                if (Settings.ChromaConfig.Instance.CenterLightGroup == CenterLightGroup.RIGHT)
                {
                    await SendCommandR(data, hsbColor, brightness, inithsbColor, endhsbColor, duration, gradient);
                }
                if (Settings.ChromaConfig.Instance.CenterLightGroup == CenterLightGroup.FRONT)
                {
                    await SendCommandF(data, hsbColor, brightness, inithsbColor, endhsbColor, duration, gradient);
                }
                if (Settings.ChromaConfig.Instance.CenterLightGroup == CenterLightGroup.BACK)
                {
                    await SendCommandB(data, hsbColor, brightness, inithsbColor, endhsbColor, duration, gradient);
                }
                if (Settings.ChromaConfig.Instance.CenterLightGroup == CenterLightGroup.CENTER)
                {
                    await SendCommandC(data, hsbColor, brightness, inithsbColor, endhsbColor, duration, gradient);
                }
                if (Settings.ChromaConfig.Instance.CenterLightGroup == CenterLightGroup.ALL)
                {
                    await SendCommandA(data, hsbColor, brightness, inithsbColor, endhsbColor, duration, gradient);
                }
            }
        }
Пример #8
0
        static void Main(string[] args)
        {
            #region Startup
            var versionInfo = FileVersionInfo.GetVersionInfo(Assembly.GetEntryAssembly().Location);
            var attribute   = Assembly.GetExecutingAssembly()
                              .GetCustomAttributes(typeof(AssemblyDescriptionAttribute), false)
                              .Cast <AssemblyDescriptionAttribute>().FirstOrDefault();
            var appName = string.Format("{0} v{1}", typeof(Program).Assembly.GetName().Name, versionInfo.ProductVersion);

            Console.Title        = appName;
            Console.WindowWidth  = 81;
            Console.BufferWidth  = 81;
            Console.WindowHeight = 36;


            Console.WriteLine();
            Console.BackgroundColor = ConsoleColor.Gray;
            Console.ForegroundColor = ConsoleColor.Black;
            Console.WriteLine(appName);
            Console.ResetColor();
            if (attribute != null)
            {
                Console.WriteLine(attribute.Description);
            }
            Console.WriteLine();
            Console.WriteLine(versionInfo.LegalCopyright);
            Console.WriteLine(String.Empty.PadLeft(80, '-'));
            Console.WriteLine();

            #endregion

Start:

            Console.WriteLine("Converters:");
            Console.WriteLine("1. RGB hexvalue to HSB (hue, sat, bri)");
            Console.WriteLine("2. RGB (red, green, blue) to HSB (hue, sat, bri)");
            Console.WriteLine("3. HSB (hue, sat, bri) to RGB hexvalue");
            Console.WriteLine();
            Console.Write("Enter number of converter you wan't to use: ");
            var converterSelection = Console.ReadKey();
            Console.WriteLine();
            Console.WriteLine(String.Empty.PadLeft(80, '-'));
            Console.WriteLine();

            switch (converterSelection.KeyChar)
            {
            case '1':
                Console.WriteLine("Convert RGB hexvalue to HSB (hue, sat, bri)");
                Console.WriteLine(String.Empty.PadLeft(80, '-'));
                Console.WriteLine("Enter RGB hexcode (6 digits):");
                Console.Write("#");
                var input = Console.ReadLine();
                Console.WriteLine();
                var rgbInput = new RGBColor();
                try
                {
                    rgbInput = new RGBColor(input);
                }
                catch (Exception ex)
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine("Invalid input!");
                    Console.WriteLine(ex.Message);
                    Console.ReadKey();
                    return;
                }

                var hsb = rgbInput.GetHSB();
                Console.WriteLine("Hue: {0}", hsb.Hue);
                Console.WriteLine("Sat: {0}", hsb.Saturation);
                Console.WriteLine("Bri: {0}", hsb.Brightness);

                break;

            case '2':
                Console.WriteLine("Convert RGB (red, green, blue) to HSB (hue, sat, bri)");
                Console.WriteLine(String.Empty.PadLeft(80, '-'));
                Console.WriteLine("Enter the RGB values (0-255):");
                Console.Write("R: ");
                var r = Console.ReadLine().ToByte();
                Console.Write("G: ");
                var g = Console.ReadLine().ToByte();
                Console.Write("B: ");
                var b = Console.ReadLine().ToByte();

                Console.WriteLine();
                var rgbInput2 = new RGBColor(r, g, b);

                var hsb2 = rgbInput2.GetHSB();
                Console.WriteLine("Hue: {0}", hsb2.Hue);
                Console.WriteLine("Sat: {0}", hsb2.Saturation);
                Console.WriteLine("Bri: {0}", hsb2.Brightness);

                break;

            case '3':
                Console.WriteLine("Convert HSB (hue, sat, bri) to RGB hexvalue");
                Console.WriteLine(String.Empty.PadLeft(80, '-'));
                Console.WriteLine("Enter the HSB values:");
                Console.Write("Hue: ");
                var hue = Console.ReadLine().ToUInt16();     //This is a wrapping value between 0 and 65535
                Console.Write("Sat: ");
                var sat = Console.ReadLine().ToByte();
                Console.Write("Bri: ");
                var bri = Console.ReadLine().ToByte();

                Console.WriteLine();
                var hsbInput = new HSB(hue, sat, bri);

                Console.WriteLine("RGB: #{0}", hsbInput.GetRGB().ToHex());

                break;

            default:
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("Invalid input!");
                break;
            }

            Console.WriteLine();
            Console.WriteLine(String.Empty.PadLeft(80, '-'));
            Console.Write("Press [Space] for next conversion or any key for exit ");

            switch (Console.ReadKey().Key)
            {
            case ConsoleKey.Spacebar:
                Console.WriteLine();
                Console.WriteLine();
                goto Start;

            default:
                return;
            }
        }