diff --git a/Artemis/Artemis/Artemis.csproj b/Artemis/Artemis/Artemis.csproj
index 5b67a756b..cd4dbdab1 100644
--- a/Artemis/Artemis/Artemis.csproj
+++ b/Artemis/Artemis/Artemis.csproj
@@ -336,6 +336,8 @@
+
+
MarkdownDialog.xaml
diff --git a/Artemis/Artemis/DeviceProviders/Razer/BlackWidow.cs b/Artemis/Artemis/DeviceProviders/Razer/BlackWidow.cs
index aff9bfcf7..e2e89924f 100644
--- a/Artemis/Artemis/DeviceProviders/Razer/BlackWidow.cs
+++ b/Artemis/Artemis/DeviceProviders/Razer/BlackWidow.cs
@@ -57,7 +57,7 @@ namespace Artemis.DeviceProviders.Razer
public override void DrawBitmap(Bitmap bitmap)
{
- var razerArray = RazerUtilities.BitmapColorArray(bitmap, Height, Width);
+ var razerArray = RazerUtilities.BitmaptoKeyboardEffect(bitmap, Height, Width);
Chroma.Instance.Keyboard.SetCustom(razerArray);
}
diff --git a/Artemis/Artemis/DeviceProviders/Razer/Firefly.cs b/Artemis/Artemis/DeviceProviders/Razer/Firefly.cs
new file mode 100644
index 000000000..224783e2a
--- /dev/null
+++ b/Artemis/Artemis/DeviceProviders/Razer/Firefly.cs
@@ -0,0 +1,50 @@
+using Artemis.Settings;
+using Artemis.DAL;
+using System;
+using System.Drawing;
+using Corale.Colore.Core;
+using Corale.Colore.Razer;
+using Ninject.Extensions.Logging;
+using Artemis.DeviceProviders.Razer.Utilities;
+
+namespace Artemis.DeviceProviders.Razer
+{
+ public class Firefly : DeviceProvider
+ {
+ private GeneralSettings _generalSettings;
+ public ILogger Logger { get; set; }
+ public Firefly(ILogger logger)
+ {
+ Logger = logger;
+ Type = DeviceType.Mousemat;
+ _generalSettings = SettingsProvider.Load();
+ }
+
+ public override void Disable()
+ {
+ throw new NotSupportedException("Can only disable a keyboard");
+ }
+
+ public override bool TryEnable()
+ {
+ if (!Chroma.SdkAvailable)
+ return false;
+
+
+ // Some people have Synapse installed, but not a Chroma keyboard, deal with this
+ Chroma.Instance.Initialize();
+ CanUse = Chroma.Instance.Query(Devices.Firefly).Connected;
+ return CanUse;
+ }
+
+ public override void UpdateDevice(Bitmap bitmap)
+ {
+ if (Chroma.SdkAvailable && Chroma.Instance.Initialized)
+ {
+ var razerArray = RazerUtilities.BitmaptoMousePadEffect(bitmap);
+ Chroma.Instance.Mousepad.SetCustom(razerArray);
+ }
+ return;
+ }
+ }
+}
diff --git a/Artemis/Artemis/DeviceProviders/Razer/Mamba.cs b/Artemis/Artemis/DeviceProviders/Razer/Mamba.cs
new file mode 100644
index 000000000..f7054f682
--- /dev/null
+++ b/Artemis/Artemis/DeviceProviders/Razer/Mamba.cs
@@ -0,0 +1,50 @@
+using Artemis.Settings;
+using Artemis.DAL;
+using System;
+using System.Drawing;
+using Corale.Colore.Core;
+using Corale.Colore.Razer;
+using Ninject.Extensions.Logging;
+using Artemis.DeviceProviders.Razer.Utilities;
+
+namespace Artemis.DeviceProviders.Razer
+{
+ public class Mamba : DeviceProvider
+ {
+ private GeneralSettings _generalSettings;
+ public ILogger Logger { get; set; }
+ public Mamba(ILogger logger)
+ {
+ Logger = logger;
+ Type = DeviceType.Mouse;
+ _generalSettings = SettingsProvider.Load();
+ }
+
+ public override void Disable()
+ {
+ throw new NotSupportedException("Can only disable a keyboard");
+ }
+
+ public override bool TryEnable()
+ {
+ if (!Chroma.SdkAvailable)
+ return false;
+
+
+ // Some people have Synapse installed, but not a Chroma keyboard, deal with this
+ Chroma.Instance.Initialize();
+ CanUse = Chroma.Instance.Query(Devices.Mamba).Connected || Chroma.Instance.Query(Devices.MambaTe).Connected;
+ return CanUse;
+ }
+
+ public override void UpdateDevice(Bitmap bitmap)
+ {
+ if (Chroma.SdkAvailable && Chroma.Instance.Initialized)
+ {
+ var razerArray = RazerUtilities.BitmaptoMouseEffect(bitmap);
+ Chroma.Instance.Mouse.SetCustom(razerArray);
+ }
+ return;
+ }
+ }
+}
diff --git a/Artemis/Artemis/DeviceProviders/Razer/Utilities/RazerUtilities.cs b/Artemis/Artemis/DeviceProviders/Razer/Utilities/RazerUtilities.cs
index 44c7ae96a..2b2265b16 100644
--- a/Artemis/Artemis/DeviceProviders/Razer/Utilities/RazerUtilities.cs
+++ b/Artemis/Artemis/DeviceProviders/Razer/Utilities/RazerUtilities.cs
@@ -1,15 +1,16 @@
using System.Drawing;
using Artemis.Utilities;
-using Corale.Colore.Razer.Keyboard.Effects;
using Color = Corale.Colore.Core.Color;
+using Corale.Colore;
namespace Artemis.DeviceProviders.Razer.Utilities
{
public static class RazerUtilities
{
- public static Custom BitmapColorArray(Bitmap b, int height, int width)
+ public static Corale.Colore.Razer.Keyboard.Effects.Custom BitmaptoKeyboardEffect(Bitmap b, int height, int width)
{
- var keyboardGrid = Custom.Create();
+
+ var keyboardGrid = Corale.Colore.Razer.Keyboard.Effects.Custom.Create();
// Resize the bitmap
using (b = ImageUtilities.ResizeImage(b, width, height))
{
@@ -26,5 +27,60 @@ namespace Artemis.DeviceProviders.Razer.Utilities
return keyboardGrid;
}
}
+
+ public static Corale.Colore.Razer.Mousepad.Effects.Custom BitmaptoMousePadEffect(Bitmap b)
+ {
+ var mousePadGrid = Corale.Colore.Razer.Mousepad.Effects.Custom.Create();
+ int pos = 0;
+ using (b = ImageUtilities.ResizeImage(b, 5, 5))
+ {
+ b.RotateFlip(RotateFlipType.RotateNoneFlipX);
+ for (var x = 0; x < 5; x++)
+ {
+ var c = b.GetPixel(4, x);
+ mousePadGrid[pos++] = new Color(c.R, c.G, c.B);
+ }
+ for (var x = 0; x < 5; x++)
+ {
+ var c = b.GetPixel(x , 4);
+ mousePadGrid[pos++] = new Color(c.R, c.G, c.B);
+ }
+ for (var x = 0; x < 5; x++)
+ {
+ var c = b.GetPixel(0, x);
+ mousePadGrid[pos++] = new Color(c.R, c.G, c.B);
+ }
+ }
+
+ return mousePadGrid;
+ }
+
+ public static Corale.Colore.Razer.Mouse.Effects.Custom BitmaptoMouseEffect(Bitmap b)
+ {
+ var mouseGrid = Corale.Colore.Razer.Mouse.Effects.Custom.Create();
+ using (b = ImageUtilities.ResizeImage(b, 3, 7))
+ {
+ var c = b.GetPixel(1, 0);
+ int pos = 0;
+ mouseGrid[pos++] = new Color(c.R, c.G, c.B);
+ mouseGrid[pos++] = new Color(c.R, c.G, c.B);
+ mouseGrid[pos++] = new Color(c.R, c.G, c.B);
+ mouseGrid[pos++] = new Color(c.R, c.G, c.B);
+
+ for (var x = 0; x < 7; x++)
+ {
+ c = b.GetPixel(0, x);
+ mouseGrid[pos++] = new Color(c.R, c.G, c.B);
+ }
+ b.RotateFlip(RotateFlipType.RotateNoneFlipX);
+ for (var x = 0; x < 7; x++)
+ {
+ c = b.GetPixel(2, x);
+ mouseGrid[pos++] = new Color(c.R, c.G, c.B);
+ }
+
+ }
+ return mouseGrid;
+ }
}
}
\ No newline at end of file