diff --git a/Artemis/Artemis/App.config b/Artemis/Artemis/App.config index ab387ef0f..d50a7a65e 100644 --- a/Artemis/Artemis/App.config +++ b/Artemis/Artemis/App.config @@ -4,6 +4,7 @@ +
@@ -25,6 +26,17 @@ + + + #FFFF2900 + + + #FF26F600 + + + True + + 4 diff --git a/Artemis/Artemis/Artemis.csproj b/Artemis/Artemis/Artemis.csproj index ba59376e9..c1317196e 100644 --- a/Artemis/Artemis/Artemis.csproj +++ b/Artemis/Artemis/Artemis.csproj @@ -207,6 +207,11 @@ True TypeWave.settings + + True + True + VolumeDisplay.settings + @@ -286,6 +291,10 @@ + + SettingsSingleFileGenerator + VolumeDisplay.Designer.cs + SettingsSingleFileGenerator diff --git a/Artemis/Artemis/Modules/Overlays/VolumeDisplay/VolumeDisplay.cs b/Artemis/Artemis/Modules/Overlays/VolumeDisplay/VolumeDisplay.cs index 4f5f8f8fb..f97a72a9d 100644 --- a/Artemis/Artemis/Modules/Overlays/VolumeDisplay/VolumeDisplay.cs +++ b/Artemis/Artemis/Modules/Overlays/VolumeDisplay/VolumeDisplay.cs @@ -2,18 +2,22 @@ using System.Collections.Generic; using System.Drawing; using System.Drawing.Drawing2D; +using Artemis.Utilities; using Artemis.Utilities.Keyboard; namespace Artemis.Modules.Overlays.VolumeDisplay { public class VolumeDisplay { - public VolumeDisplay() + public VolumeDisplay(VolumeDisplaySettings settings) { + Settings = settings; Transparancy = 255; Scale = 4; } + public VolumeDisplaySettings Settings { get; set; } + public int Scale { get; set; } public int Ttl { get; set; } @@ -23,10 +27,12 @@ namespace Artemis.Modules.Overlays.VolumeDisplay public void Draw(Graphics g) { - var mainColor = Color.FromArgb(Transparancy, 0, 191, 255); - var secondaryColor = Color.FromArgb(Transparancy, 255, 0, 0); - var volumeRect = new KeyboardRectangle(Scale, 0, 0, (int) Math.Ceiling(((Scale*21)/100.00)*Volume), - 8*Scale, new List {mainColor, secondaryColor}, LinearGradientMode.Horizontal); + var volumeRect = new KeyboardRectangle(Scale, 0, 0, (int) Math.Ceiling(((Scale*21)/100.00)*Volume), 8*Scale, + new List + { + ColorHelpers.MediaColorToDrawingColor(Settings.MainColor), + ColorHelpers.MediaColorToDrawingColor(Settings.SecondaryColor) + }, LinearGradientMode.Horizontal); volumeRect.Draw(g); } } diff --git a/Artemis/Artemis/Modules/Overlays/VolumeDisplay/VolumeDisplayModel.cs b/Artemis/Artemis/Modules/Overlays/VolumeDisplay/VolumeDisplayModel.cs index 09b7ee7da..eb2e8ecfe 100644 --- a/Artemis/Artemis/Modules/Overlays/VolumeDisplay/VolumeDisplayModel.cs +++ b/Artemis/Artemis/Modules/Overlays/VolumeDisplay/VolumeDisplayModel.cs @@ -22,7 +22,7 @@ namespace Artemis.Modules.Overlays.VolumeDisplay Enabled = Settings.Enabled; - VolumeDisplay = new VolumeDisplay(); + VolumeDisplay = new VolumeDisplay(settings); } public VolumeDisplay VolumeDisplay { get; set; } diff --git a/Artemis/Artemis/Modules/Overlays/VolumeDisplay/VolumeDisplaySettings.cs b/Artemis/Artemis/Modules/Overlays/VolumeDisplay/VolumeDisplaySettings.cs index 8714ac832..374db4313 100644 --- a/Artemis/Artemis/Modules/Overlays/VolumeDisplay/VolumeDisplaySettings.cs +++ b/Artemis/Artemis/Modules/Overlays/VolumeDisplay/VolumeDisplaySettings.cs @@ -1,4 +1,5 @@ -using Artemis.Models; +using System.Windows.Media; +using Artemis.Models; namespace Artemis.Modules.Overlays.VolumeDisplay { @@ -10,27 +11,30 @@ namespace Artemis.Modules.Overlays.VolumeDisplay } public bool Enabled { get; set; } - public bool DisplayVolume { get; set; } - public bool DisplayPlayPause { get; set; } - public bool DisplayPreviousNext { get; set; } - public bool DisplayStop { get; set; } + public Color MainColor { get; set; } + public Color SecondaryColor { get; set; } public override sealed void Load() { - ToDefault(); + Enabled = Settings.VolumeDisplay.Default.Enabled; + MainColor = Settings.VolumeDisplay.Default.MainColor; + SecondaryColor = Settings.VolumeDisplay.Default.SecondaryColor; } public override sealed void Save() { + Settings.VolumeDisplay.Default.Enabled = Enabled; + Settings.VolumeDisplay.Default.MainColor = MainColor; + Settings.VolumeDisplay.Default.SecondaryColor = SecondaryColor; + + Settings.VolumeDisplay.Default.Save(); } public override sealed void ToDefault() { Enabled = true; - DisplayVolume = true; - DisplayPlayPause = true; - DisplayPreviousNext = true; - DisplayStop = true; + MainColor = Color.FromArgb(255, 38, 246, 0); + SecondaryColor = Color.FromArgb(255, 255, 41, 0); } } } \ No newline at end of file diff --git a/Artemis/Artemis/Modules/Overlays/VolumeDisplay/VolumeDisplayView.xaml b/Artemis/Artemis/Modules/Overlays/VolumeDisplay/VolumeDisplayView.xaml index bd8d3317a..1636a37b3 100644 --- a/Artemis/Artemis/Modules/Overlays/VolumeDisplay/VolumeDisplayView.xaml +++ b/Artemis/Artemis/Modules/Overlays/VolumeDisplay/VolumeDisplayView.xaml @@ -40,16 +40,18 @@ - - diff --git a/Artemis/Artemis/Settings/VolumeDisplay.Designer.cs b/Artemis/Artemis/Settings/VolumeDisplay.Designer.cs new file mode 100644 index 000000000..9d4a388a9 --- /dev/null +++ b/Artemis/Artemis/Settings/VolumeDisplay.Designer.cs @@ -0,0 +1,62 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace Artemis.Settings { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")] + internal sealed partial class VolumeDisplay : global::System.Configuration.ApplicationSettingsBase { + + private static VolumeDisplay defaultInstance = ((VolumeDisplay)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new VolumeDisplay()))); + + public static VolumeDisplay Default { + get { + return defaultInstance; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("#FFFF2900")] + public global::System.Windows.Media.Color MainColor { + get { + return ((global::System.Windows.Media.Color)(this["MainColor"])); + } + set { + this["MainColor"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("#FF26F600")] + public global::System.Windows.Media.Color SecondaryColor { + get { + return ((global::System.Windows.Media.Color)(this["SecondaryColor"])); + } + set { + this["SecondaryColor"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("True")] + public bool Enabled { + get { + return ((bool)(this["Enabled"])); + } + set { + this["Enabled"] = value; + } + } + } +} diff --git a/Artemis/Artemis/Settings/VolumeDisplay.settings b/Artemis/Artemis/Settings/VolumeDisplay.settings new file mode 100644 index 000000000..cf7e06a65 --- /dev/null +++ b/Artemis/Artemis/Settings/VolumeDisplay.settings @@ -0,0 +1,15 @@ + + + + + + #FFFF2900 + + + #FF26F600 + + + True + + + \ No newline at end of file diff --git a/Artemis/Artemis/Utilities/Keyboard/KeyboardRectangle.cs b/Artemis/Artemis/Utilities/Keyboard/KeyboardRectangle.cs index f63821fe1..b11b6e356 100644 --- a/Artemis/Artemis/Utilities/Keyboard/KeyboardRectangle.cs +++ b/Artemis/Artemis/Utilities/Keyboard/KeyboardRectangle.cs @@ -130,10 +130,14 @@ namespace Artemis.Utilities.Keyboard var baseRect = new Rectangle(X, Y, Width, Height); var brushRect = new Rectangle((int) _rotationProgress, Y, baseRect.Width*2, baseRect.Height*2); - var baseBrush = new LinearGradientBrush(brushRect, Colors.First(), Colors.Last(), GradientMode) - {InterpolationColors = colorBlend}; - g.FillRectangle(baseBrush, baseRect); + LinearGradientBrush baseBrush; + if (Colors.Count > 5) + baseBrush = new LinearGradientBrush(brushRect, Colors.First(), Colors.Skip(1).FirstOrDefault(), + GradientMode) {InterpolationColors = colorBlend}; + else + baseBrush = new LinearGradientBrush(baseRect, Colors[0], Colors[1], GradientMode); + g.FillRectangle(baseBrush, baseRect); if (!Rotate) return;