Пример #1
0
        public Task ApplyAsync(IVirtualLedGrid virtualGrid, CancellationToken cancellationToken = default)
        {
            if (_sdk == null || this._notebookKeyboard == null)
            {
                return(Task.CompletedTask);
            }

            foreach (var key in virtualGrid.Where(x => x.Type != KeyType.Headset))
            {
                var color = ToRGBNetColor(key.Color);
                switch (key.FriendlyName)
                {
                case "Enter":
                    _notebookKeyboard.Lights[(int)RogStrixKeyboardMap.OemEnterLed0].Color = color;
                    _notebookKeyboard.Lights[(int)RogStrixKeyboardMap.OemEnterLed1].Color = color;
                    _notebookKeyboard.Lights[(int)RogStrixKeyboardMap.OemEnterLed2].Color = color;
                    break;

                case "RightShift":
                    _notebookKeyboard.Lights[(int)RogStrixKeyboardMap.RightShiftLed0].Color = color;
                    _notebookKeyboard.Lights[(int)RogStrixKeyboardMap.RightShiftLed1].Color = color;
                    _notebookKeyboard.Lights[(int)RogStrixKeyboardMap.RightShiftLed2].Color = color;
                    break;

                case "Backspace":
                    _notebookKeyboard.Lights[(int)RogStrixKeyboardMap.BackspaceLed0].Color = color;
                    _notebookKeyboard.Lights[(int)RogStrixKeyboardMap.BackspaceLed1].Color = color;
                    _notebookKeyboard.Lights[(int)RogStrixKeyboardMap.BackspaceLed2].Color = color;
                    break;

                case "Space":
                    _notebookKeyboard.Lights[(int)RogStrixKeyboardMap.SpaceLed0].Color = color;
                    _notebookKeyboard.Lights[(int)RogStrixKeyboardMap.SpaceLed1].Color = color;
                    _notebookKeyboard.Lights[(int)RogStrixKeyboardMap.SpaceLed2].Color = color;
                    _notebookKeyboard.Lights[(int)RogStrixKeyboardMap.SpaceLed3].Color = color;
                    break;

                default:
                    var asusKey = KeyConvert(key.FriendlyName);
                    if (asusKey == RogStrixKeyboardMap.GhostKey)
                    {
                        continue;
                    }

                    var led = _notebookKeyboard.Lights[(int)asusKey];
                    if (led == null)
                    {
                        continue;
                    }
                    led.Color = color;
                    break;
                }
            }
            _notebookKeyboard.Apply();
            return(Task.CompletedTask);
        }
Пример #2
0
 private void SetGridBackground(IVirtualLedGrid grid, Color[][] colorMap, double brightness)
 {
     for (var y = 0; y < colorMap.GetLength(0); y++)
     {
         var row = colorMap[y];
         for (var x = 0; x < row.Length; x++)
         {
             grid[x, y] = row[x].ChangeBrightnessLevel(brightness);
         }
     }
 }
Пример #3
0
 public static void Set(this IVirtualLedGrid grid, Listener.Plugin.ChromaEffect.Implementation.Color[][] colors, double brightness)
 {
     for (var y = 0; y < colors.GetLength(0); y++)
     {
         var row = colors[y];
         for (var x = 0; x < row.Length; x++)
         {
             grid[x, y] = row[x].ChangeBrightnessLevel(brightness);
         }
     }
 }
Пример #4
0
            internal VirtualGridRendererImpl(IVirtualLedGrid grid, int boxWidth, int boxHeight)
            {
                this.grid = grid;
                var totalWidth  = (grid.ColumnCount + 1) * boxWidth;
                var totalHeight = (grid.RowCount + 1) * boxHeight;
                var fontSize    = 13 * (boxWidth / 100.0f);

                font     = new Font("Microsoft Sans Serif", fontSize, System.Drawing.FontStyle.Regular);
                bitmap   = GetGridBoilerplate(totalWidth, totalHeight, boxWidth, boxHeight);
                graphics = System.Drawing.Graphics.FromImage(bitmap);
            }
Пример #5
0
        public void SetEffect(IVirtualLedGrid virtualGrid, Color firstColor, Color secondaryColor, ICollection <Color> albumColor, Color[][] albumArtworkColor, double[] spectrumValues, double position, double brightnessMultiplier)
        {
            if (double.IsNaN(position) || double.IsInfinity(position))
            {
                return;
            }

            for (var x = 0; x < virtualGrid.ColumnCount; x++)
            {
                var background = albumColor.ElementAt(x).ChangeBrightnessLevel(brightnessMultiplier);
                foreach (var key in virtualGrid.Where(e => e.Index.X == x))
                {
                    key.Color = background;
                }
            }

            var keyboardGrid     = virtualGrid.Where(x => x.Type == KeyType.Keyboard || x.Type == KeyType.Mousepad || x.Type == KeyType.Invalid);
            var keyboardRowCount = keyboardGrid.Max(e => e.Index.Y) + 1;

            for (var rowIdx = 0; rowIdx < keyboardRowCount; rowIdx++)
            {
                var row = keyboardGrid.Where(e => e.Index.Y == rowIdx && e.Index.X < 22).ToArray();
                var pos = (int)Math.Round(position * ((double)(row.Length - 1) / 10), 0);
                var key = row[pos];
                virtualGrid[key.Index.X, key.Index.Y] = firstColor;
                if (0 < pos - 1 && pos + 1 < row.Length)
                {
                    var leftKey  = row[pos - 1];
                    var rightKey = row[pos + 1];

                    var adjacentColor = firstColor.ChangeBrightnessLevel(0.5);
                    virtualGrid[leftKey.Index.X, leftKey.Index.Y]   = adjacentColor;
                    virtualGrid[rightKey.Index.X, rightKey.Index.Y] = adjacentColor;
                }
            }

            var maxMouseY           = virtualGrid.Where(x => 22 < x.Index.X && x.Index.X < 29).Max(x => x.Index.Y) + 1;
            var currentPlayPosition = (int)Math.Round(position * ((double)(maxMouseY - 1) / 10), 0);

            virtualGrid[22, currentPlayPosition] = firstColor;

            var vizColor = albumColor.First();

            for (var x = 23; x < 29; x++)
            {
                var volume      = spectrumValues[x - 23];
                var absPosition = maxMouseY - (int)Math.Round((volume / 100d) * maxMouseY, 0);
                for (var y = maxMouseY - 1; y >= absPosition; y--)
                {
                    virtualGrid[x, y] = vizColor;
                }
            }
        }
Пример #6
0
        public async Task ApplyAsync(IVirtualLedGrid virtualGrid, CancellationToken cancellationToken = default)
        {
            var keyboardGrid   = CustomKeyboardEffect.Create();
            var mouseGrid      = CustomMouseEffect.Create();
            var mousepadGrid   = CustomMousepadEffect.Create();
            var headsetGrid    = CustomHeadsetEffect.Create();
            var chromaLinkGrid = CustomChromaLinkEffect.Create();

            foreach (var k in virtualGrid)
            {
                switch (k.Type)
                {
                case KeyType.Invalid:
                    break;

                case KeyType.Keyboard:
                    var kbVal = (Key)Enum.Parse(typeof(Key), k.FriendlyName);
                    keyboardGrid[kbVal] = ToColoreColor(k.Color);
                    break;

                case KeyType.Mouse:
                    var mouseVal = (GridLed)Enum.Parse(typeof(GridLed), k.FriendlyName);
                    mouseGrid[mouseVal] = ToColoreColor(k.Color);
                    break;

                case KeyType.Mousepad:
                    mousepadGrid[k.KeyCode] = ToColoreColor(k.Color);
                    break;

                case KeyType.Headset:
                    headsetGrid[k.KeyCode] = ToColoreColor(k.Color);
                    break;

                case KeyType.ChromaLink:
                    chromaLinkGrid[k.KeyCode] = ToColoreColor(k.Color);
                    break;
                }
            }

            await this._chromaInterface.Keyboard.SetCustomAsync(keyboardGrid);

            await this._chromaInterface.Mouse.SetGridAsync(mouseGrid);

            await this._chromaInterface.Mousepad.SetCustomAsync(mousepadGrid);

            await this._chromaInterface.Headset.SetCustomAsync(headsetGrid);

            await this._chromaInterface.ChromaLink.SetCustomAsync(chromaLinkGrid);
        }
Пример #7
0
 private ChromaWorker()
 {
     this._albumColors  = AutoshiftCirculaQueue <ChromaColor> .Empty;
     this.FullGridArray = Listener.Plugin.ChromaEffect.Implementation.VirtualLedGrid.CreateDefaultGrid();
     try
     {
         var adapters = new List <IPhysicalDeviceAdapter>();
         adapters.Add(new RazerSdkAdapter());
         adapters.Add(new AsusSdkAdapter());
         this._deviceAdapters = adapters;
     }
     catch (Exception ex)
     {
         this.IsError = true;
         Debug.WriteLine(ex);
     }
 }
Пример #8
0
        public void SetEffect(IVirtualLedGrid virtualGrid, Color firstColor, Color secondaryColor, ICollection <Color> albumColor, Color[][] albumArtworkColor, double[] spectrumValues, double position, double brightnessMultiplier)
        {
            virtualGrid.Set(Color.Black);
            var fullLength       = virtualGrid.ColumnCount;
            var volume           = spectrumValues[0] / 100.0;
            var startPosition    = 0;
            var absolutePosition = Math.Round((volume * fullLength), 0) / 2;

            for (var row = 0; row < virtualGrid.RowCount; row++)
            {
                for (var col = startPosition; col < startPosition + absolutePosition; col++)
                {
                    var color = Listener.Plugin.ChromaEffect.Shared.SharedColors.RainbowColor.ElementAt(col).ChangeBrightnessLevel(volume);
                    virtualGrid[col, row] = color;
                    virtualGrid[fullLength - col - 1, row] = color;
                }
            }
        }
        public override Task ApplyAsync(IVirtualLedGrid virtualGrid, CancellationToken cancellationToken = default)
        {
            if (!this.Initialized)
            {
                return(Task.CompletedTask);
            }

            var chromaLinkGrid = CustomChromaLinkEffect.Create();

            var keyIdx = 0;

            foreach (var key in virtualGrid)
            {
                chromaLinkGrid[keyIdx++] = ToColoreColor(key.Color);
            }

            return(this.ChromaInterface !.ChromaLink.SetCustomAsync(chromaLinkGrid));
        }
Пример #10
0
        /// <inheritdoc/>
        public void SetEffect(IVirtualLedGrid virtualGrid, Color firstColor, Color secondaryColor, ICollection <Color> albumColor, Color[][] albumArtworkColor, double[] spectrumValues, double position, double brightnessMultiplier)
        {
            for (var x = 0; x < virtualGrid.ColumnCount; x++)
            {
                var foreground = albumColor.ElementAt(albumColor.Count - 1 - x);
                var background = foreground.ChangeBrightnessLevel(brightnessMultiplier);
                foreach (var key in virtualGrid.Where(e => e.Index.X == x))
                {
                    key.Color = background;
                }

                var c           = spectrumValues[x];
                var absSpectrum = virtualGrid.RowCount - (int)Math.Round((virtualGrid.RowCount * (c / 100.0d)), 0);
                for (var y = virtualGrid.RowCount - 1; y >= absSpectrum; y--)
                {
                    virtualGrid[x, y] = foreground;
                }
            }
        }
Пример #11
0
        public override Task ApplyAsync(IVirtualLedGrid virtualGrid, CancellationToken cancellationToken = default)
        {
            if (!this.Initialized)
            {
                return(Task.CompletedTask);
            }

            var mouseGrid = CustomMouseEffect.Create();

            for (var row = 0; row < virtualGrid.RowCount; row++)
            {
                for (var col = 0; col < virtualGrid.ColumnCount; col++)
                {
                    mouseGrid[row, col] = ToColoreColor(virtualGrid[col, row]);
                }
            }

            return(this.ChromaInterface !.Mouse.SetGridAsync(mouseGrid));
        }
Пример #12
0
        public void SetEffect(IVirtualLedGrid virtualGrid, Color firstColor, Color secondaryColor, ICollection <Color> albumColor, Color[][] albumArtworkColor, double[] spectrumValues, double position, double brightnessMultiplier)
        {
            if (albumArtworkColor == null)
            {
                return;
            }
            SetGridBackground(virtualGrid, albumArtworkColor, brightnessMultiplier);

            for (var x = 0; x < virtualGrid.ColumnCount; x++)
            {
                var foreground = albumColor.ElementAt(albumColor.Count - 1 - x);

                var c           = spectrumValues[x];
                var absSpectrum = virtualGrid.RowCount - (int)Math.Round((virtualGrid.RowCount * (c / 100.0d)), 0);
                for (var y = virtualGrid.RowCount - 1; y >= absSpectrum; y--)
                {
                    virtualGrid[x, y] = foreground;
                }
            }
        }
Пример #13
0
        public void SetEffect(IVirtualLedGrid virtualGrid, Color firstColor, Color secondaryColor, ICollection <Color> albumColor, Color[][] albumArtworkColor, double[] spectrumValues, double position, double brightnessMultiplier)
        {
            virtualGrid.Set(Color.Black);

            var keyboardGrid = virtualGrid.Where(x => x.Type == KeyType.Keyboard);

            foreach (var key in keyboardGrid)
            {
                key.Color = Color.Red;
            }

            var mouseGrid = virtualGrid.Where(x => x.Type == KeyType.Mouse);

            foreach (var key in mouseGrid)
            {
                key.Color = Color.Blue;
            }

            var mousepadGrid = virtualGrid.Where(x => x.Type == KeyType.Mousepad);

            foreach (var key in mousepadGrid)
            {
                key.Color = Color.Purple;
            }

            var chromaLinkGrid = virtualGrid.Where(x => x.Type == KeyType.ChromaLink);

            foreach (var key in chromaLinkGrid)
            {
                key.Color = Color.Green;
            }

            var headsetGrid = virtualGrid.Where(x => x.Type == KeyType.Headset);

            foreach (var key in headsetGrid)
            {
                key.Color = Color.White;
            }
        }
        /// <inheritdoc/>
        public Task ApplyAsync(IVirtualLedGrid virtualGrid, CancellationToken cancellationToken = default)
        {
            if (!this.Initialized)
            {
                return(Task.CompletedTask);
            }

            for (var row = 0; row < virtualGrid.RowCount; row++)
            {
                var physicalRow = _representor[row];

                for (var col = 0; col < virtualGrid.ColumnCount; col++)
                {
                    var cellColor = virtualGrid[col, row];

                    if (cellColor == null)
                    {
                        continue;
                    }

                    var key = physicalRow[col];

                    if (IsInvalidKey(key))
                    {
                        continue;
                    }

                    var color = ToUint(cellColor.Value);

                    _notebookKeyboard.Lights[(int)key].Color = color;
                }
            }

            _notebookKeyboard.Apply();

            return(Task.CompletedTask);
        }
Пример #15
0
        public override Task ApplyAsync(IVirtualLedGrid virtualGrid, CancellationToken cancellationToken = default)
        {
            if (!this.Initialized)
            {
                return(Task.CompletedTask);
            }

            var headset = CustomHeadsetEffect.Create();

            var actualIdx = 0;
            var keyIdx    = 0;

            foreach (var cell in virtualGrid)
            {
                if (keyIdx++ % 2 != 0)
                {
                    continue;
                }

                headset[actualIdx++] = ToColoreColor(cell.Color);
            }

            return(this.ChromaInterface !.Headset.SetCustomAsync(headset));
        }
Пример #16
0
        public void SetEffect(IVirtualLedGrid virtualGrid, Color firstColor, Color secondaryColor, ICollection <Color> albumColor, Color[][] albumArtworkColor, double[] spectrumValues, double position, double brightnessMultiplier)
        {
            var colors            = Listener.Plugin.ChromaEffect.Shared.SharedColors.RainbowColor;
            var visualizeRowCount = virtualGrid.RowCount - 1;

            for (var col = 0; col < virtualGrid.ColumnCount; col++)
            {
                var foreground = colors.ElementAt(colors.Count - 1 - col);
                var background = foreground.ChangeBrightnessLevel(brightnessMultiplier);
                foreach (var key in virtualGrid.Where(e => e.Index.X == col))
                {
                    key.Color = background;
                }

                var c           = spectrumValues[col];
                var absSpectrum = virtualGrid.RowCount - (int)Math.Round((visualizeRowCount * (c / 100.0d)), 0);
                for (var row = virtualGrid.RowCount - 1; row >= absSpectrum; row--)
                {
                    virtualGrid[col, row] = Color.White;
                }
            }

            var avgVolume        = spectrumValues.Average() / 100.0;
            var startPosition    = virtualGrid.ColumnCount / 2;
            var absolutePosition = (int)Math.Round((avgVolume * virtualGrid.ColumnCount), 0) / 2;
            var upperbound       = startPosition + absolutePosition;

            for (var col = startPosition; col < upperbound; col++)
            {
                var color = colors.ElementAt(upperbound - col).ChangeBrightnessLevel(1);
                var left  = col;
                var right = virtualGrid.ColumnCount - col - 1;
                virtualGrid[left, 0]  = color;
                virtualGrid[right, 0] = color;
            }
        }
Пример #17
0
 public Task ApplyAsync(IVirtualLedGrid virtualGrid, CancellationToken cancellationToken = default)
 {
     return(Task.CompletedTask);
 }
 /// <inheritdoc/>
 public abstract Task ApplyAsync(IVirtualLedGrid virtualGrid, CancellationToken cancellationToken = default);
Пример #19
0
 public static VirtualGridRendererImpl CreateGridRendererInstance(IVirtualLedGrid grid, int boxWidth, int boxHeight)
 {
     return(new VirtualGridRendererImpl(grid, boxWidth, boxHeight));
 }