Exemplo n.º 1
0
        public override IDictionary <PortIdentifier, List <LedColor> > GenerateColors(List <PortIdentifier> ports, ICacheProvider cache)
        {
            _fill += Config.FillStep;
            if (_fill >= 1)
            {
                _fill       = 0;
                _lastHue    = _currentHue;
                _currentHue = ((_currentHue + Config.HueStep) % 360 + 360) % 360;
            }

            var lastColor    = LedColor.FromHsv(_lastHue, Config.Saturation, Config.Brightness);
            var currentColor = LedColor.FromHsv(_currentHue, Config.Saturation, Config.Brightness);

            if (Config.ColorGenerationMethod == ColorGenerationMethod.PerPort)
            {
                return(EffectUtils.GenerateColorsPerPort(ports, cache, (port, ledCount) => GenerateColors(ledCount, currentColor, lastColor)));
            }
            else if (Config.ColorGenerationMethod == ColorGenerationMethod.SpanPorts)
            {
                var totalLedCount = ports.Select(p => cache.GetDeviceConfig(p).LedCount).Sum();
                var colors        = GenerateColors(totalLedCount, currentColor, lastColor);
                return(EffectUtils.SplitColorsPerPort(colors, ports, cache));
            }

            return(null);
        }
Exemplo n.º 2
0
        public override IDictionary <PortIdentifier, List <LedColor> > GenerateColors(List <PortIdentifier> ports, ICacheProvider cache)
        {
            _fill += Config.FillStep;
            if (_fill >= 1)
            {
                _fill       = 0;
                _lastHue    = _currentHue;
                _currentHue = (_currentHue + Config.HueStep) % 360;
            }

            var result = new Dictionary <PortIdentifier, List <LedColor> >();

            foreach (var port in ports)
            {
                var config = cache.GetPortConfig(port);
                if (config == null)
                {
                    continue;
                }

                var lastColor    = LedColor.FromHsv(_lastHue, Config.Saturation, Config.Brightness);
                var currentColor = LedColor.FromHsv(_currentHue, Config.Saturation, Config.Brightness);

                var colors = Enumerable.Range(0, config.LedCount).Select(x => lastColor).ToList();
                for (var i = 0; i < (int)Math.Round(config.LedCount * _fill); i++)
                {
                    colors[i] = currentColor;
                }

                result.Add(port, colors);
            }

            return(result);
        }
Exemplo n.º 3
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ReaderLedControl"/> class.
 /// </summary>
 /// <param name="readerNumber">The reader number starting at 0.</param>
 /// <param name="ledNumber">The LED number.</param>
 /// <param name="temporaryMode">The temporary mode.</param>
 /// <param name="temporaryOnTime">The temporary on time in units of 100ms.</param>
 /// <param name="temporaryOffTime">The temporary off time in units of 100ms.</param>
 /// <param name="temporaryOnColor">Color of the temporary on.</param>
 /// <param name="temporaryOffColor">Color of the temporary off.</param>
 /// <param name="temporaryTimer">The temporary timer in units of 100ms.</param>
 /// <param name="permanentMode">The permanent mode.</param>
 /// <param name="permanentOnTime">The permanent on time in units of 100ms.</param>
 /// <param name="permanentOffTime">The permanent off time in units of 100ms.</param>
 /// <param name="permanentOnColor">Color of the permanent on.</param>
 /// <param name="permanentOffColor">Color of the permanent off.</param>
 public ReaderLedControl(
     byte readerNumber,
     byte ledNumber,
     TemporaryReaderControlCode temporaryMode,
     byte temporaryOnTime,
     byte temporaryOffTime,
     LedColor temporaryOnColor,
     LedColor temporaryOffColor,
     ushort temporaryTimer,
     PermanentReaderControlCode permanentMode,
     byte permanentOnTime,
     byte permanentOffTime,
     LedColor permanentOnColor,
     LedColor permanentOffColor)
 {
     ReaderNumber      = readerNumber;
     LedNumber         = ledNumber;
     TemporaryMode     = temporaryMode;
     TemporaryOnTime   = temporaryOnTime;
     TemporaryOffTime  = temporaryOffTime;
     TemporaryOnColor  = temporaryOnColor;
     TemporaryOffColor = temporaryOffColor;
     TemporaryTimer    = temporaryTimer;
     PermanentMode     = permanentMode;
     PermanentOnTime   = permanentOnTime;
     PermanentOffTime  = permanentOffTime;
     PermanentOnColor  = permanentOnColor;
     PermanentOffColor = permanentOffColor;
 }
Exemplo n.º 4
0
        public Led(LedColor color, LedPosition position) : base($"leds/ev3:{position.ToString().ToLower()}:{color.ToString().ToLower()}:ev3dev")
        {
            Color    = color;
            Position = position;

            brightness = new ClassProperty(Folder, "brightness");
        }
Exemplo n.º 5
0
        public void SetRgb([FromBody] LedColor ledColor)
        {
            var color = Color.FromArgb(ledColor.r, ledColor.b, ledColor.g);

            Program.KillAllThreads();
            Program.ClearLeds();
            Program.SetAllLeds(color);
        }
 private void OnColorUpdate(object sender, RzBroadcastColorChangedEventArgs e)
 {
     Logger.Trace("Razer broadcast colors updated");
     for (var i = 0; i < _colors.Length; i++)
     {
         _colors[i] = LedColor.Unpack(e.Colors[i]);
     }
 }
Exemplo n.º 7
0
        /// <summary>
        /// Sets the Color of one of the system leds
        /// </summary>
        /// <param name="led">Led to set</param>
        /// <param name="col">Color to set</param>
        public void SetLedColor(SystemLed led, LedColor col)
        {
            var data = new byte[1];

            data    = _control.Read(_byteAddr, 1);
            data[0] = (byte)((data[0] & ~(0x03 << (int)led)) | ((byte)col << (int)led));
            _control.Write(_byteAddr, data, 1);
        }
Exemplo n.º 8
0
        public void LedPattern(LedColor color, LedEffect effect)
        {
            int pattern = (int)color + (int)effect;

            byte[] cmd = new byte[2];
            cmd [0] = (byte)('0' + pattern);
            dev.Write(cmd);
        }
Exemplo n.º 9
0
 /// <summary>
 /// Sets state of an LED
 /// </summary>
 /// <param name="ledIndex">Index of the Led - use 0 for standard Movesense sensor</param>
 /// <param name="ledOn">Set on or off</param>
 /// <param name="ledColor">[optional]value from LedColor enumeration - default is LedColor.Red</param>
 public async Task SetLedStateAsync(int ledIndex, bool ledOn, LedColor ledColor = LedColor.Red)
 {
     string datapath     = String.Format(LED_PATH, ledIndex);
     string led_On_Body  = $"{{ \"LedState\": {{ \"IsOn\": true, \"LedColor\": {(int)ledColor}}} }}";
     string led_Off_Body = @"{ ""LedState"": { ""IsOn"": false, ""LedColor"": 0} }";
     var    op           = new ApiCallAsync <LedState>(this, MdsOp.PUT, datapath, ledOn ? led_On_Body : led_Off_Body);
     await op.CallAsync();
 }
Exemplo n.º 10
0
        public void SetColor(LedColor color)
        {
            switch (color)
            {
            case LedColor.White:
                R = 100; G = 255; B = 95;
                break;

            case LedColor.Red:
                R = 255; G = 0; B = 0;
                break;

            case LedColor.Blue:
                R = 0; G = 0; B = 255;
                break;

            case LedColor.Green:
                R = 0; G = 255; B = 0;
                break;

            case LedColor.Yellow:
                R = 132; G = 255; B = 0;
                break;

            case LedColor.Orange:
                R = 180; G = 255; B = 0;
                break;

            case LedColor.Pink:
                R = 255; G = 100; B = 50;
                break;

            case LedColor.IceBlue:
                R = 0; G = 160; B = 255;
                break;

            case LedColor.IceGreen:
                R = 18; G = 255; B = 18;
                break;

            case LedColor.Off:
                R = 0; G = 0; B = 0;
                break;

            case LedColor.Active:
                R = 0; G = 32; B = 16;
                break;

            case LedColor.InActive:
                R = 9; G = 24; B = 9;
                break;

            default:
                break;
            }
            mInterface.WriteMessage(new SerialMessage(Command.LED_ACT, (byte)mBoardId, 0));
        }
Exemplo n.º 11
0
 public AuroraEffect(AuroraEffectConfig config) : base(config)
 {
     if (Config.Gradient == null)
     {
         var colors = Enumerable.Range(0, Config.Length)
                      .Select(x => LedColor.FromHsv(x / (Config.Length - 1f) * 360, Config.Saturation, Config.Brightness));
         Config.Gradient = new LedColorGradient(colors);
     }
 }
Exemplo n.º 12
0
        public override IDictionary <PortIdentifier, List <LedColor> > GenerateColors(List <PortIdentifier> ports, ICacheProvider cache)
        {
            _hue = (_hue + Config.HueStep) % 360;
            var color = LedColor.FromHsv(_hue, Config.Saturation, Config.Brightness);

            return(ports.ToDictionary(p => p, _ => new List <LedColor>()
            {
                color
            }));
        }
Exemplo n.º 13
0
 public PulseEffect(PulseEffectConfig config) : base(config)
 {
     _direction     = -1;
     _t             = 1d;
     _maxBrightness = config.Colors.Select(c =>
     {
         var(h, s, v) = LedColor.ToHsv(c);
         return(v);
     }).ToArray();
 }
Exemplo n.º 14
0
        public RippleEffect(RippleEffectConfig config) : base(config)
        {
            _tick         = Config.TickInterval;
            _rippleColors = new LedColor[Config.Length];

            var(hue, saturation, value) = LedColor.ToHsv(Config.Color);
            for (var i = 0; i < Config.Length; i++)
            {
                _rippleColors[i] = LedColor.FromHsv(hue, saturation, value * (Config.Length - i - 1) / (Config.Length - 1));
            }
        }
Exemplo n.º 15
0
        public void Led(LedColor color, LedMode mode)
        {
            WebRequest  cidpsid = WebRequest.Create("http://" + ip + "/led.ps3mapi?color=" + color + "&mode=" + mode);
            WebResponse rsp     = cidpsid.GetResponse();

            using (Stream dataStream = rsp.GetResponseStream())
            {
                StreamReader rd = new StreamReader(dataStream);
                rd.ReadToEnd();
            }
            rsp.Close();
        }
Exemplo n.º 16
0
        private List <LedColor> GenerateColors(int ledCount, LedColor currentColor, LedColor lastColor)
        {
            var fillIndex = (int)Math.Round(ledCount * _fill);
            var colors    = new List <LedColor>();

            for (var i = 0; i < ledCount; i++)
            {
                colors.Add((i < fillIndex) ? currentColor : lastColor);
            }

            return(colors);
        }
Exemplo n.º 17
0
        public void SetColor(LedColor color)
        {
            switch (color)
            {
            case LedColor.Black:
                redPin.TurnOff();
                greenPin.TurnOff();
                bluePin.TurnOff();
                break;

            case LedColor.Red:
                redPin.TurnOn();
                greenPin.TurnOff();
                bluePin.TurnOff();
                break;

            case LedColor.Green:
                redPin.TurnOff();
                greenPin.TurnOn();
                bluePin.TurnOff();
                break;

            case LedColor.Blue:
                redPin.TurnOff();
                greenPin.TurnOff();
                bluePin.TurnOn();
                break;

            case LedColor.Violet:
                redPin.TurnOn();
                greenPin.TurnOff();
                bluePin.TurnOn();
                break;

            case LedColor.Yellow:
                redPin.TurnOn();
                greenPin.TurnOn();
                bluePin.TurnOff();
                break;

            case LedColor.Purple:
                redPin.TurnOff();
                greenPin.TurnOn();
                bluePin.TurnOn();
                break;

            case LedColor.White:
                redPin.TurnOn();
                greenPin.TurnOn();
                bluePin.TurnOn();
                break;
            }
        }
Exemplo n.º 18
0
        public void SetColor(LedColor color)
        {
            switch(color)
            {
                case LedColor.Black:
                    redPin.TurnOff();
                    greenPin.TurnOff();
                    bluePin.TurnOff();
                    break;

                case LedColor.Red:
                    redPin.TurnOn();
                    greenPin.TurnOff();
                    bluePin.TurnOff();
                    break;

                case LedColor.Green:
                    redPin.TurnOff();
                    greenPin.TurnOn();
                    bluePin.TurnOff();
                    break;

                case LedColor.Blue:
                    redPin.TurnOff();
                    greenPin.TurnOff();
                    bluePin.TurnOn();
                    break;

                case LedColor.Violet:
                    redPin.TurnOn();
                    greenPin.TurnOff();
                    bluePin.TurnOn();
                    break;

                case LedColor.Yellow:
                    redPin.TurnOn();
                    greenPin.TurnOn();
                    bluePin.TurnOff();
                    break;

                case LedColor.Purple:
                    redPin.TurnOff();
                    greenPin.TurnOn();
                    bluePin.TurnOn();
                    break;

                case LedColor.White:
                    redPin.TurnOn();
                    greenPin.TurnOn();
                    bluePin.TurnOn();
                    break;
            }
        }
Exemplo n.º 19
0
        public Led(LedColor color)
        {
            _controller = GpioControllerFactory.GetController();

            _pinNumber = color switch
            {
                LedColor.Red => Constants.PIN_LEDRED,
                LedColor.Green => Constants.PIN_LEDGREEN,
                LedColor.Blue => Constants.PIN_LEDBLUE,
                _ => throw new NotImplementedException(),
            };

            _controller.OpenPin(_pinNumber, PinMode.Output);
        }
Exemplo n.º 20
0
        public override IDictionary <PortIdentifier, List <LedColor> > GenerateColors(List <PortIdentifier> ports, ICacheProvider cache)
        {
            var temperatures = Config.Sensors.Select(cache.GetTemperature);
            var temperature  = float.NaN;

            if (Config.SensorMixFunction == SensorMixFunction.Average)
            {
                temperature = temperatures.Average();
            }
            else if (Config.SensorMixFunction == SensorMixFunction.Minimum)
            {
                temperature = temperatures.Min();
            }
            else if (Config.SensorMixFunction == SensorMixFunction.Maximum)
            {
                temperature = temperatures.Max();
            }

            if (temperature < _minTemperature)
            {
                temperature = _minTemperature;
            }
            if (temperature > _maxTemperature)
            {
                temperature = _maxTemperature;
            }

            if (float.IsNaN(temperature))
            {
                _r = Config.ColorGradient.Start.Color.R;
                _g = Config.ColorGradient.Start.Color.G;
                _b = Config.ColorGradient.Start.Color.B;
            }
            else
            {
                var(rr, gg, bb) = Config.ColorGradient.ColorAtDeconstruct(temperature);

                var t = 0.05f;
                _r = _r * (1 - t) + rr * t;
                _g = _g * (1 - t) + gg * t;
                _b = _b * (1 - t) + bb * t;
            }

            var color = new LedColor((byte)_r, (byte)_g, (byte)_b);

            return(ports.ToDictionary(p => p, p => new List <LedColor> {
                color
            }));
        }
Exemplo n.º 21
0
        private List <LedColor> GenerateColors(int ledCount, double portStart, double portEnd, double radius = 0.95, bool oddDivide = true)
        {
            var colors = Enumerable.Range(0, ledCount).Select(_ => new LedColor()).ToList();

            var tBottom    = _t - Config.Height / 2;
            var tTop       = _t + Config.Height / 2;
            var localStart = (tBottom - portStart) / (portEnd - portStart);
            var localEnd   = (tTop - portStart) / (portEnd - portStart);

            var isOdd     = ledCount % 2 != 0;
            var halfCount = ledCount / 2 + (oddDivide || isOdd ? 0 : -1);

            for (var j = 0; j <= halfCount; j++)
            {
                var a = (0.5 + j / (double)halfCount) * Math.PI;
                var x = -Math.Cos(a) / 2 * radius;
                var y = 1 - (1 + Math.Sin(a) * radius) / 2;

                if (x > Config.Width / 2)
                {
                    continue;
                }

                if (y >= localStart && y <= localEnd)
                {
                    var color = Config.ColorGradient.GetColor(portStart + (portEnd - portStart) * y);
                    if (Config.EnableSmoothing)
                    {
                        var dist    = Math.Abs(Math.Min(y - localStart, localEnd - y));
                        var falloff = (2 * dist) / (localEnd - localStart);

                        var(h, s, v) = LedColor.ToHsv(color);
                        color        = LedColor.FromHsv(h, s, v * falloff);
                    }

                    colors[j] = color;
                    if (!oddDivide && !isOdd)
                    {
                        colors[ledCount - j - 1] = color;
                    }
                    else if (j != 0 && (j != ledCount / 2 || isOdd))
                    {
                        colors[ledCount - j] = color;
                    }
                }
            }

            return(colors);
        }
Exemplo n.º 22
0
        public override List <LedColor> GenerateColors(int count, ICacheProvider cache)
        {
            var lastColor    = LedColor.FromHsv(_lastHue, Config.Saturation, Config.Brightness);
            var currentColor = LedColor.FromHsv(_currentHue, Config.Saturation, Config.Brightness);

            var fillIndex = (int)Math.Round(count * _fill);
            var colors    = new List <LedColor>();

            for (var i = 0; i < count; i++)
            {
                colors.Add((i < fillIndex) ? currentColor : lastColor);
            }

            return(colors);
        }
Exemplo n.º 23
0
        public override IDictionary <PortIdentifier, List <LedColor> > GenerateColors(List <PortIdentifier> ports, ICacheProvider cache)
        {
            var values = Config.Sensors.Select(cache.GetSensorValue);
            var value  = float.NaN;

            if (Config.SensorMixFunction == SensorMixFunction.Average)
            {
                value = values.Average();
            }
            else if (Config.SensorMixFunction == SensorMixFunction.Minimum)
            {
                value = values.Min();
            }
            else if (Config.SensorMixFunction == SensorMixFunction.Maximum)
            {
                value = values.Max();
            }

            if (value < _minValue)
            {
                value = _minValue;
            }
            if (value > _maxValue)
            {
                value = _maxValue;
            }

            if (float.IsNaN(value))
            {
                _r = Config.ColorGradient.Start.Color.R;
                _g = Config.ColorGradient.Start.Color.G;
                _b = Config.ColorGradient.Start.Color.B;
            }
            else
            {
                var(rr, gg, bb) = Config.ColorGradient.ColorAtDeconstruct(value);

                const float t = 0.05f;
                _r = _r * (1 - t) + rr * t;
                _g = _g * (1 - t) + gg * t;
                _b = _b * (1 - t) + bb * t;
            }

            var color = new LedColor((byte)_r, (byte)_g, (byte)_b);

            return(ports.ToDictionary(p => p, p => Enumerable.Repeat(color, cache.GetPortConfig(p).LedCount).ToList()));
        }
        protected override void WriteLed(AnalysisResult result)
        {
            var theme = Theme;

            if (theme == null)
            {
                return;
            }

            var colors = new LedColor[_controller.LEDCount];

            foreach (var colorRange in theme.ColorRanges)
            {
                ConfigureColors(result, colors, colorRange);
            }

            for (var i = 0; i < colors.Length; i++)
            {
                var color = colors[i] * Brightness;
                color.Red   = Limit(color.Red);
                color.Green = Limit(color.Green);
                color.Blue  = Limit(color.Blue);
                colors[i]   = color;
                var col = color.AsColor();
                _controller.SetLED(i, col);
            }

            var log = Log;

            if (log != null && _lastColors != null)
            {
                int index = 0;
                foreach (var colorPair in colors.Zip(_lastColors))
                {
                    if (colorPair.First != colorPair.Second)
                    {
                        var col = colorPair.First.AsColor();
                        log.Verbose($"[{index.ToString("000")}] R:{col.R} G:{col.G} B:{col.B}");
                    }
                    index++;
                }
            }

            _lastColors = colors;
            _device.Render();
        }
Exemplo n.º 25
0
        public override IDictionary <PortIdentifier, List <LedColor> > GenerateColors(List <PortIdentifier> ports, ICacheProvider cache)
        {
            var values = Config.Sensors.Select(cache.GetSensorValue);
            var value  = float.NaN;

            if (Config.SensorMixFunction == SensorMixFunction.Average)
            {
                value = values.Average();
            }
            else if (Config.SensorMixFunction == SensorMixFunction.Minimum)
            {
                value = values.Min();
            }
            else if (Config.SensorMixFunction == SensorMixFunction.Maximum)
            {
                value = values.Max();
            }

            if (value < _minValue)
            {
                value = _minValue;
            }
            if (value > _maxValue)
            {
                value = _maxValue;
            }

            if (float.IsNaN(value))
            {
                _r = Config.ColorGradient.Start.Color.R;
                _g = Config.ColorGradient.Start.Color.G;
                _b = Config.ColorGradient.Start.Color.B;
            }
            else
            {
                var(rr, gg, bb) = Config.ColorGradient.GetColorSmooth(value);

                _r = _r * (1 - Config.SmoothingFactor) + rr * Config.SmoothingFactor;
                _g = _g * (1 - Config.SmoothingFactor) + gg * Config.SmoothingFactor;
                _b = _b * (1 - Config.SmoothingFactor) + bb * Config.SmoothingFactor;
            }

            var color = new LedColor((byte)_r, (byte)_g, (byte)_b);

            return(EffectUtils.GenerateColorsPerPort(ports, cache, (port, ledCount) => Enumerable.Repeat(color, ledCount).ToList()));
        }
Exemplo n.º 26
0
        public override IDictionary <PortIdentifier, List <LedColor> > GenerateColors(List <PortIdentifier> ports, ICacheProvider cache)
        {
            _t += Config.BrightnessStep * _direction;
            if (_t < 0)
            {
                _direction = 1;
                _t         = 0;
            }
            else if (_t > 1)
            {
                _direction = -1;
                _t         = 1;
            }

            for (var i = 0; i < Config.Colors.Count; i++)
            {
                var(h, s, v) = LedColor.ToHsv(Config.Colors[i]);
                _colors[i]   = LedColor.FromHsv(h, s, v * _t);
            }

            if (Config.ColorGenerationMethod == ColorGenerationMethod.PerPort)
            {
                return(ports.ToDictionary(p => p, _ => _colors.ToList()));
            }
            else if (Config.ColorGenerationMethod == ColorGenerationMethod.SpanPorts)
            {
                var result = new Dictionary <PortIdentifier, List <LedColor> >();

                var offset = 0;
                foreach (var port in ports)
                {
                    var config = cache.GetPortConfig(port);
                    if (config == null)
                    {
                        continue;
                    }

                    result.Add(port, _colors.Skip(offset).Take(config.LedCount).ToList());
                    offset += config.LedCount;
                }

                return(result);
            }

            return(null);
        }
Exemplo n.º 27
0
        public override List <LedColor> GenerateColors(int count, ICacheProvider cache)
        {
            var current = Config.Sequence[_sequenceIndex];

            if (_state == SequenceState.Hold)
            {
                return(current.Color.Get(count).ToList());
            }
            else if (_state == SequenceState.Transition)
            {
                int Wrap(int a, int b) => (a % b + b) % b;

                var prev = Config.Sequence[Wrap(_sequenceIndex - 1, Config.Sequence.Count)];
                var t    = (Environment.TickCount - _stateStart) / (float)current.TransitionTime;
                return(LedColor.Lerp(t, prev.Color.Get(count), current.Color.Get(count)).ToList());
            }

            return(null);
        }
Exemplo n.º 28
0
        public static Color ToUnityColor(this LedColor ledColor)
        {
            switch (ledColor)
            {
            case LedColor.Yellow:
                return(YellowColor);

            case LedColor.Orange:
                return(OrangeColor);

            case LedColor.Red:
                return(RedColor);

            case LedColor.Green:
                return(GreenColor);

            default:
                throw new ArgumentOutOfRangeException(ledColor.ToString());
            }
        }
Exemplo n.º 29
0
        public override IDictionary <PortIdentifier, List <LedColor> > GenerateColors(List <PortIdentifier> ports, ICacheProvider cache)
        {
            int Wrap(int a, int b) => (a % b + b) % b;

            if (_tick++ >= Config.TickInterval)
            {
                _tick = 0;
                _rotation++;
            }

            var result = new Dictionary <PortIdentifier, List <LedColor> >();

            foreach (var port in ports)
            {
                var config = cache.GetPortConfig(port);
                if (config == null)
                {
                    continue;
                }

                var off    = new LedColor(0, 0, 0);
                var colors = Enumerable.Range(0, config.LedCount).Select(_ => off).ToList();
                var(hue, saturation, value) = LedColor.ToHsv(Config.Color);
                var length = Config.Length == 0 ? config.LedCount : Config.Length;

                for (var i = 0; i < length; i++)
                {
                    var idx = Wrap(_rotation - i, config.LedCount);
                    colors[idx] = LedColor.FromHsv(hue, saturation, value * (length - i) / length);
                }

                result.Add(port, colors);
            }

            return(result);
        }
Exemplo n.º 30
0
        public override IDictionary <PortIdentifier, List <LedColor> > GenerateColors(List <PortIdentifier> ports, ICacheProvider cache)
        {
            _t += Config.BrightnessStep * _direction;
            if (_t < 0 || _t > 1)
            {
                _direction = -_direction;
            }

            if (Config.ColorGenerationMethod == ColorGenerationMethod.PerPort)
            {
                return(EffectUtils.GenerateColorsPerPort(ports, cache,
                                                         (port, ledCount) => Config.Color.Get(ledCount).Select(c => LedColor.ChangeValue(c, c.GetValue() * _t)).ToList()
                                                         ));
            }

            if (Config.ColorGenerationMethod == ColorGenerationMethod.SpanPorts)
            {
                var totalLedCount = ports.Sum(p => cache.GetDeviceConfig(p).LedCount);
                var colors        = Config.Color.Get(totalLedCount).Select(c => LedColor.ChangeValue(c, c.GetValue() * _t)).ToList();
                return(EffectUtils.SplitColorsPerPort(colors, ports, cache));
            }

            return(null);
        }
Exemplo n.º 31
0
        public override IDictionary <PortIdentifier, List <LedColor> > GenerateColors(List <PortIdentifier> ports, ICacheProvider cache)
        {
            _t += Config.BrightnessStep * _direction;
            if (_t < 0)
            {
                _direction = 1;
                _t         = 0;
            }
            else if (_t > 1)
            {
                _direction = -1;
                _t         = 1;
            }

            var colors = new List <LedColor>();

            for (var i = 0; i < Config.Colors.Count; i++)
            {
                var(h, s, v) = LedColor.ToHsv(Config.Colors[i]);
                colors.Add(LedColor.FromHsv(h, s, _maxBrightness[i] * _t));
            }

            return(ports.ToDictionary(p => p, p => colors.ToList()));
        }