Esempio n. 1
0
        internal virtual void UpdateWrapperLights(EffectFrame frame)
        {
            Queue <EffectLayer> layers = new Queue <EffectLayer>();

            EffectLayer colorfill_layer = new EffectLayer("Aurora Wrapper - Color Fill", GetBoostedColor(last_fill_color));

            layers.Enqueue(colorfill_layer);

            EffectLayer bitmap_layer = new EffectLayer("Aurora Wrapper - Bitmap");

            Devices.DeviceKeys[] allkeys = Enum.GetValues(typeof(Devices.DeviceKeys)).Cast <Devices.DeviceKeys>().ToArray();
            foreach (var key in allkeys)
            {
                if (key == Devices.DeviceKeys.LOGO)
                {
                    bitmap_layer.Set(key, GetBoostedColor(logo));
                }
                else if (key == Devices.DeviceKeys.Peripheral)
                {
                    bitmap_layer.Set(key, GetBoostedColor(peripheral));
                }
                else if (key == Devices.DeviceKeys.G1)
                {
                    bitmap_layer.Set(key, GetBoostedColor(g1));
                }
                else if (key == Devices.DeviceKeys.G2)
                {
                    bitmap_layer.Set(key, GetBoostedColor(g2));
                }
                else if (key == Devices.DeviceKeys.G3)
                {
                    bitmap_layer.Set(key, GetBoostedColor(g3));
                }
                else if (key == Devices.DeviceKeys.G4)
                {
                    bitmap_layer.Set(key, GetBoostedColor(g4));
                }
                else if (key == Devices.DeviceKeys.G5)
                {
                    bitmap_layer.Set(key, GetBoostedColor(g5));
                }
                else
                {
                    Devices.Logitech.Logitech_keyboardBitmapKeys logi_key = Devices.Logitech.LogitechDevice.ToLogitechBitmap(key);

                    if (logi_key != Devices.Logitech.Logitech_keyboardBitmapKeys.UNKNOWN && bitmap.Length > 0)
                    {
                        bitmap_layer.Set(key, GetBoostedColor(Utils.ColorUtils.GetColorFromInt(bitmap[(int)logi_key / 4])));
                    }
                }
            }

            layers.Enqueue(bitmap_layer);

            EffectLayer effects_layer = new EffectLayer("Aurora Wrapper - Effects");

            Devices.DeviceKeys[] effect_keys = key_effects.Keys.ToArray();
            long currentTime = Utils.Time.GetMillisecondsSinceEpoch();

            foreach (var key in effect_keys)
            {
                if (key_effects[key].duration != 0 && key_effects[key].timeStarted + key_effects[key].duration <= currentTime)
                {
                    key_effects.Remove(key);
                }
                else
                {
                    if (key_effects[key] is LogiFlashSingleKey)
                    {
                        effects_layer.Set((key_effects[key] as LogiFlashSingleKey).key, GetBoostedColor((key_effects[key] as LogiFlashSingleKey).GetColor(currentTime - (key_effects[key] as LogiFlashSingleKey).timeStarted)));
                    }
                    else if (key_effects[key] is LogiPulseSingleKey)
                    {
                        effects_layer.Set((key_effects[key] as LogiPulseSingleKey).key, GetBoostedColor((key_effects[key] as LogiPulseSingleKey).GetColor(currentTime - (key_effects[key] as LogiPulseSingleKey).timeStarted)));
                    }
                    else
                    {
                        effects_layer.Set((key_effects[key] as KeyEffect).key, GetBoostedColor((key_effects[key] as KeyEffect).GetColor(currentTime - (key_effects[key] as KeyEffect).timeStarted)));
                    }
                }
            }

            layers.Enqueue(effects_layer);

            EffectLayer entire_effect_layer = new EffectLayer("Aurora Wrapper - EntireKB effect");

            if (current_effect != null)
            {
                if (current_effect is LogiFlashLighting)
                {
                    (current_effect as LogiFlashLighting).SetEffect(entire_effect_layer, currentTime - (current_effect as LogiFlashLighting).timeStarted);
                }
                else if (current_effect is LogiPulseLighting)
                {
                    (current_effect as LogiPulseLighting).SetEffect(entire_effect_layer, currentTime - (current_effect as LogiPulseLighting).timeStarted);
                }
                else
                {
                    current_effect.SetEffect(entire_effect_layer, currentTime - current_effect.timeStarted);
                }
            }

            layers.Enqueue(entire_effect_layer);

            frame.AddLayers(layers.ToArray());
        }
        internal virtual void UpdateWrapperLights(EffectFrame frame)
        {
            Queue <EffectLayer> layers = new Queue <EffectLayer>();

            EffectLayer colorfill_layer = new EffectLayer("Aurora Wrapper - Color Fill", last_fill_color);

            layers.Enqueue(colorfill_layer);

            EffectLayer bitmap_layer = new EffectLayer("Aurora Wrapper - Bitmap");

            Devices.DeviceKeys[] allkeys = Enum.GetValues(typeof(Devices.DeviceKeys)).Cast <Devices.DeviceKeys>().ToArray();
            foreach (var key in allkeys)
            {
                if (key == Devices.DeviceKeys.LOGO && logo.Length == 4)
                {
                    bitmap_layer.Set(key, Color.FromArgb(logo[3], logo[2], logo[1], logo[0]));
                }
                else if (key == Devices.DeviceKeys.Peripheral && peripheral.Length == 4)
                {
                    bitmap_layer.Set(key, Color.FromArgb(peripheral[3], peripheral[2], peripheral[1], peripheral[0]));
                }
                else if (key == Devices.DeviceKeys.G1 && g1.Length == 4)
                {
                    bitmap_layer.Set(key, Color.FromArgb(g1[3], g1[2], g1[1], g1[0]));
                }
                else if (key == Devices.DeviceKeys.G2 && g2.Length == 4)
                {
                    bitmap_layer.Set(key, Color.FromArgb(g2[3], g2[2], g2[1], g2[0]));
                }
                else if (key == Devices.DeviceKeys.G3 && g3.Length == 4)
                {
                    bitmap_layer.Set(key, Color.FromArgb(g3[3], g3[2], g3[1], g3[0]));
                }
                else if (key == Devices.DeviceKeys.G4 && g4.Length == 4)
                {
                    bitmap_layer.Set(key, Color.FromArgb(g4[3], g4[2], g4[1], g4[0]));
                }
                else if (key == Devices.DeviceKeys.G5 && g5.Length == 4)
                {
                    bitmap_layer.Set(key, Color.FromArgb(g5[3], g5[2], g5[1], g5[0]));
                }
                else
                {
                    Devices.Logitech.Logitech_keyboardBitmapKeys logi_key = Devices.Logitech.LogitechDevice.ToLogitechBitmap(key);

                    if (logi_key != Devices.Logitech.Logitech_keyboardBitmapKeys.UNKNOWN)
                    {
                        int a, r, g, b;

                        b = bitmap[(int)logi_key];
                        g = bitmap[(int)logi_key + 1];
                        r = bitmap[(int)logi_key + 2];
                        a = bitmap[(int)logi_key + 3];

                        bitmap_layer.Set(key, Color.FromArgb(a, r, g, b));
                    }
                }
            }

            layers.Enqueue(bitmap_layer);

            EffectLayer effects_layer = new EffectLayer("Aurora Wrapper - Effects");

            Devices.DeviceKeys[] effect_keys = key_effects.Keys.ToArray();
            long currentTime = Utils.Time.GetMillisecondsSinceEpoch();

            foreach (var key in effect_keys)
            {
                if (key_effects[key].duration != 0 && key_effects[key].timeStarted + key_effects[key].duration <= currentTime)
                {
                    key_effects.Remove(key);
                }
                else
                {
                    if (key_effects[key] is LogiFlashSingleKey)
                    {
                        effects_layer.Set((key_effects[key] as LogiFlashSingleKey).key, (key_effects[key] as LogiFlashSingleKey).GetColor(currentTime - (key_effects[key] as LogiFlashSingleKey).timeStarted));
                    }
                    else if (key_effects[key] is LogiPulseSingleKey)
                    {
                        effects_layer.Set((key_effects[key] as LogiPulseSingleKey).key, (key_effects[key] as LogiPulseSingleKey).GetColor(currentTime - (key_effects[key] as LogiPulseSingleKey).timeStarted));
                    }
                    else
                    {
                        effects_layer.Set((key_effects[key] as KeyEffect).key, (key_effects[key] as KeyEffect).GetColor(currentTime - (key_effects[key] as KeyEffect).timeStarted));
                    }
                }
            }

            layers.Enqueue(effects_layer);

            EffectLayer entire_effect_layer = new EffectLayer("Aurora Wrapper - EntireKB effect");

            if (current_effect != null)
            {
                if (current_effect is LogiFlashLighting)
                {
                    (current_effect as LogiFlashLighting).SetEffect(entire_effect_layer, currentTime - (current_effect as LogiFlashLighting).timeStarted);
                }
                else if (current_effect is LogiPulseLighting)
                {
                    (current_effect as LogiPulseLighting).SetEffect(entire_effect_layer, currentTime - (current_effect as LogiPulseLighting).timeStarted);
                }
                else
                {
                    current_effect.SetEffect(entire_effect_layer, currentTime - current_effect.timeStarted);
                }
            }

            layers.Enqueue(entire_effect_layer);

            frame.AddLayers(layers.ToArray());
        }