diff --git a/Artemis/Artemis/App.config b/Artemis/Artemis/App.config index 1dceb70cb..d4dc18237 100644 --- a/Artemis/Artemis/App.config +++ b/Artemis/Artemis/App.config @@ -4,12 +4,24 @@ -
-
-
-
-
-
+
+
+
+
+
+
@@ -192,7 +204,7 @@ TypeWave - Logitech G910 Orion Spark RGB + Razer BlackWidow Chroma True diff --git a/Artemis/Artemis/Artemis.csproj b/Artemis/Artemis/Artemis.csproj index 8126e7061..7e9fbbbfc 100644 --- a/Artemis/Artemis/Artemis.csproj +++ b/Artemis/Artemis/Artemis.csproj @@ -23,7 +23,7 @@ false - publish\ + C:\Users\spoin\Desktop\Artemis builds\ true Disk false @@ -33,8 +33,8 @@ false false true - 2 - 1.0.0.%2a + 0 + 1.0.0.0 false true true @@ -71,6 +71,9 @@ false + + logo.ico + ..\packages\Caliburn.Micro.Core.2.0.2\lib\net45\Caliburn.Micro.dll @@ -80,6 +83,14 @@ ..\packages\Caliburn.Micro.2.0.2\lib\net45\Caliburn.Micro.Platform.dll True + + ..\packages\Colore.3.0.2\lib\net35\Corale.Colore.dll + True + + + ..\packages\log4net.2.0.4\lib\net45-full\log4net.dll + True + ..\packages\MahApps.Metro.1.1.2.0\lib\net45\MahApps.Metro.dll True @@ -171,6 +182,8 @@ + + @@ -411,6 +424,7 @@ PreserveNewest + diff --git a/Artemis/Artemis/KeyboardProviders/KeyboardProvider.cs b/Artemis/Artemis/KeyboardProviders/KeyboardProvider.cs index 5158a0fc9..d86958c33 100644 --- a/Artemis/Artemis/KeyboardProviders/KeyboardProvider.cs +++ b/Artemis/Artemis/KeyboardProviders/KeyboardProvider.cs @@ -5,6 +5,8 @@ namespace Artemis.KeyboardProviders public abstract class KeyboardProvider { public string Name { get; set; } + public int Height { get; set; } + public int Width { get; set; } public abstract void Enable(); public abstract void Disable(); diff --git a/Artemis/Artemis/KeyboardProviders/Logitech/Orion.cs b/Artemis/Artemis/KeyboardProviders/Logitech/Orion.cs index 1f2ad0ab2..a8ef91b11 100644 --- a/Artemis/Artemis/KeyboardProviders/Logitech/Orion.cs +++ b/Artemis/Artemis/KeyboardProviders/Logitech/Orion.cs @@ -9,6 +9,8 @@ namespace Artemis.KeyboardProviders.Logitech public Orion() { Name = "Logitech G910 Orion Spark RGB"; + Height = 6; + Width = 21; } public override void Enable() diff --git a/Artemis/Artemis/KeyboardProviders/ProviderHelper.cs b/Artemis/Artemis/KeyboardProviders/ProviderHelper.cs index 29c175ef2..01cdba72c 100644 --- a/Artemis/Artemis/KeyboardProviders/ProviderHelper.cs +++ b/Artemis/Artemis/KeyboardProviders/ProviderHelper.cs @@ -1,6 +1,7 @@ using System.Collections.Generic; using Artemis.KeyboardProviders.Corsair; using Artemis.KeyboardProviders.Logitech; +using Artemis.KeyboardProviders.Razer; namespace Artemis.KeyboardProviders { @@ -12,7 +13,8 @@ namespace Artemis.KeyboardProviders { new Orion(), new K70(), - new K95() + new K95(), + new BlackWidow() }; } } diff --git a/Artemis/Artemis/KeyboardProviders/Razer/BlackWidow.cs b/Artemis/Artemis/KeyboardProviders/Razer/BlackWidow.cs new file mode 100644 index 000000000..7fa77342e --- /dev/null +++ b/Artemis/Artemis/KeyboardProviders/Razer/BlackWidow.cs @@ -0,0 +1,33 @@ +using System.Drawing; +using Artemis.KeyboardProviders.Razer.Utilities; +using Corale.Colore.Core; +using Corale.Colore.Razer.Keyboard; + +namespace Artemis.KeyboardProviders.Razer +{ + public class BlackWidow : KeyboardProvider + { + public BlackWidow() + { + Name = "Razer BlackWidow Chroma"; + Height = (int) Constants.MaxRows; + Width = (int) Constants.MaxColumns; + } + + public override void Enable() + { + Chroma.Instance.Initialize(); + } + + public override void Disable() + { + Chroma.Instance.Uninitialize(); + } + + public override void DrawBitmap(Bitmap bitmap) + { + var razerArray = RazerUtilities.BitmapColorArray(bitmap, Height, Width); + Chroma.Instance.Keyboard.SetGrid(razerArray); + } + } +} \ No newline at end of file diff --git a/Artemis/Artemis/KeyboardProviders/Razer/Utilities/RazerUtilities.cs b/Artemis/Artemis/KeyboardProviders/Razer/Utilities/RazerUtilities.cs new file mode 100644 index 000000000..b0fe17fda --- /dev/null +++ b/Artemis/Artemis/KeyboardProviders/Razer/Utilities/RazerUtilities.cs @@ -0,0 +1,57 @@ +using System.Drawing; +using System.Drawing.Drawing2D; +using System.Drawing.Imaging; +using Color = Corale.Colore.Core.Color; + +namespace Artemis.KeyboardProviders.Razer.Utilities +{ + public static class RazerUtilities + { + public static Color[][] BitmapColorArray(Bitmap b, int height, int width) + { + var res = new Color[height][]; + if (b.Width > width || b.Height > height) + b = ResizeImage(b, width, height); + + for (var y = 0; y < b.Height - 1; y++) + { + res[y] = new Color[width]; + for (var x = 0; x < b.Width - 1; x++) + res[y][x] = b.GetPixel(x, y); + } + return res; + } + + /// + /// Resize the image to the specified width and height. + /// + /// The image to resize. + /// The width to resize to. + /// The height to resize to. + /// The resized image. + public static Bitmap ResizeImage(Image image, int width, int height) + { + var destRect = new Rectangle(0, 0, width, height); + var destImage = new Bitmap(width, height); + + destImage.SetResolution(image.HorizontalResolution, image.VerticalResolution); + + using (var graphics = Graphics.FromImage(destImage)) + { + graphics.CompositingMode = CompositingMode.SourceCopy; + graphics.CompositingQuality = CompositingQuality.HighQuality; + graphics.InterpolationMode = InterpolationMode.HighQualityBicubic; + graphics.SmoothingMode = SmoothingMode.HighQuality; + graphics.PixelOffsetMode = PixelOffsetMode.HighQuality; + + using (var wrapMode = new ImageAttributes()) + { + wrapMode.SetWrapMode(WrapMode.TileFlipXY); + graphics.DrawImage(image, destRect, 0, 0, image.Width, image.Height, GraphicsUnit.Pixel, wrapMode); + } + } + + return destImage; + } + } +} \ No newline at end of file diff --git a/Artemis/Artemis/Models/GamePointersCollectionModel.cs b/Artemis/Artemis/Models/GamePointersCollectionModel.cs index 6a5d4ace4..35279db50 100644 --- a/Artemis/Artemis/Models/GamePointersCollectionModel.cs +++ b/Artemis/Artemis/Models/GamePointersCollectionModel.cs @@ -16,9 +16,11 @@ namespace Artemis.Models public string Description { get; set; } public IntPtr BasePointer { get; set; } public int[] Offsets { get; set; } + public override string ToString() { - return Offsets.Aggregate(BasePointer.ToString("X"), (current, offset) => current + $"+{offset.ToString("X")}"); + return Offsets.Aggregate(BasePointer.ToString("X"), + (current, offset) => current + $"+{offset.ToString("X")}"); } } } \ No newline at end of file diff --git a/Artemis/Artemis/Models/MainModel.cs b/Artemis/Artemis/Models/MainModel.cs index 614b73feb..28cf42823 100644 --- a/Artemis/Artemis/Models/MainModel.cs +++ b/Artemis/Artemis/Models/MainModel.cs @@ -4,7 +4,6 @@ using System.ComponentModel; using System.Diagnostics; using System.Linq; using System.Threading; -using System.Threading.Tasks; using Artemis.Events; using Artemis.KeyboardProviders; using Artemis.Settings; diff --git a/Artemis/Artemis/Modules/Effects/AudioVisualizer/AudioVisualization.settings b/Artemis/Artemis/Modules/Effects/AudioVisualizer/AudioVisualization.settings index c1a1916ce..345bfd3a7 100644 --- a/Artemis/Artemis/Modules/Effects/AudioVisualizer/AudioVisualization.settings +++ b/Artemis/Artemis/Modules/Effects/AudioVisualizer/AudioVisualization.settings @@ -1,5 +1,7 @@  - + + diff --git a/Artemis/Artemis/Modules/Effects/AudioVisualizer/AudioVisualizerModel.cs b/Artemis/Artemis/Modules/Effects/AudioVisualizer/AudioVisualizerModel.cs index f16dcbb09..800f7d0e6 100644 --- a/Artemis/Artemis/Modules/Effects/AudioVisualizer/AudioVisualizerModel.cs +++ b/Artemis/Artemis/Modules/Effects/AudioVisualizer/AudioVisualizerModel.cs @@ -17,8 +17,8 @@ namespace Artemis.Modules.Effects.AudioVisualizer private const int FftLength = 2048; private readonly SampleAggregator _sampleAggregator = new SampleAggregator(FftLength); private bool _generating; - private IWaveIn _waveIn; private bool _previousFromBottom; + private IWaveIn _waveIn; public AudioVisualizerModel(AudioVisualizerSettings settings) { diff --git a/Artemis/Artemis/Modules/Effects/AudioVisualizer/AudioVisualizerSettings.cs b/Artemis/Artemis/Modules/Effects/AudioVisualizer/AudioVisualizerSettings.cs index ae12499c2..318febb9f 100644 --- a/Artemis/Artemis/Modules/Effects/AudioVisualizer/AudioVisualizerSettings.cs +++ b/Artemis/Artemis/Modules/Effects/AudioVisualizer/AudioVisualizerSettings.cs @@ -1,6 +1,5 @@ using System.Windows.Media; using Artemis.Models; -using Artemis.Settings; namespace Artemis.Modules.Effects.AudioVisualizer { diff --git a/Artemis/Artemis/Modules/Games/CounterStrike/CounterStrikeModel.cs b/Artemis/Artemis/Modules/Games/CounterStrike/CounterStrikeModel.cs index 98e98cb7b..c7a5c8f51 100644 --- a/Artemis/Artemis/Modules/Games/CounterStrike/CounterStrikeModel.cs +++ b/Artemis/Artemis/Modules/Games/CounterStrike/CounterStrikeModel.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using System.Diagnostics; using System.Drawing; using System.Drawing.Drawing2D; using System.Linq; diff --git a/Artemis/Artemis/Modules/Games/CounterStrike/CounterStrikeView.xaml b/Artemis/Artemis/Modules/Games/CounterStrike/CounterStrikeView.xaml index 57ea3b8a9..60414df55 100644 --- a/Artemis/Artemis/Modules/Games/CounterStrike/CounterStrikeView.xaml +++ b/Artemis/Artemis/Modules/Games/CounterStrike/CounterStrikeView.xaml @@ -43,9 +43,12 @@