From b0928faccc5eee75c4b7ef25cc6bebe27e229c54 Mon Sep 17 00:00:00 2001 From: Diogo Trindade Date: Fri, 2 Oct 2020 03:59:07 +0100 Subject: [PATCH 1/2] Added a data binding modifier that rotates the hue of a color --- .../Colors/SKColorRotateHueModifierType.cs | 27 +++++++++++++++++++ .../Registration/DataBindingService.cs | 1 + 2 files changed, 28 insertions(+) create mode 100644 src/Artemis.Core/DefaultTypes/DataBindings/Modifiers/Colors/SKColorRotateHueModifierType.cs diff --git a/src/Artemis.Core/DefaultTypes/DataBindings/Modifiers/Colors/SKColorRotateHueModifierType.cs b/src/Artemis.Core/DefaultTypes/DataBindings/Modifiers/Colors/SKColorRotateHueModifierType.cs new file mode 100644 index 000000000..f8d21ce20 --- /dev/null +++ b/src/Artemis.Core/DefaultTypes/DataBindings/Modifiers/Colors/SKColorRotateHueModifierType.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using SkiaSharp; + +namespace Artemis.Core.DefaultTypes +{ + internal class SKColorRotateHueModifierType : DataBindingModifierType + { + public override IReadOnlyCollection CompatibleTypes => new List {typeof(SKColor)}; + public override Type ParameterType => typeof(float); + + public override string Name => "Rotate Hue by"; + public override string Icon => "RotateRight"; + public override string Description => "Rotates the hue of the color by the amount in degrees"; + + public override object Apply(object currentValue, object parameterValue) + { + ((SKColor) currentValue).ToHsl(out var h, out var s, out var l); + + h += (float)parameterValue; + + var a = SKColor.FromHsl(h % 360, s, l); + + return a; + } + } +} \ No newline at end of file diff --git a/src/Artemis.Core/Services/Registration/DataBindingService.cs b/src/Artemis.Core/Services/Registration/DataBindingService.cs index f3e9fa623..9b39cd61b 100644 --- a/src/Artemis.Core/Services/Registration/DataBindingService.cs +++ b/src/Artemis.Core/Services/Registration/DataBindingService.cs @@ -74,6 +74,7 @@ namespace Artemis.Core.Services RegisterModifierType(Constants.CorePluginInfo, new SKColorSumModifierType()); RegisterModifierType(Constants.CorePluginInfo, new SKColorBrightenModifierType()); RegisterModifierType(Constants.CorePluginInfo, new SKColorDarkenModifierType()); + RegisterModifierType(Constants.CorePluginInfo, new SKColorRotateHueModifierType()); } } } \ No newline at end of file From dd1d9fe6fefdf73b870a1c55001d0a531276f685 Mon Sep 17 00:00:00 2001 From: Diogo Trindade Date: Mon, 5 Oct 2020 21:49:15 +0100 Subject: [PATCH 2/2] explicitly identify out variables, removed debugging temp variable --- .../Modifiers/Colors/SKColorRotateHueModifierType.cs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/Artemis.Core/DefaultTypes/DataBindings/Modifiers/Colors/SKColorRotateHueModifierType.cs b/src/Artemis.Core/DefaultTypes/DataBindings/Modifiers/Colors/SKColorRotateHueModifierType.cs index f8d21ce20..3591efacc 100644 --- a/src/Artemis.Core/DefaultTypes/DataBindings/Modifiers/Colors/SKColorRotateHueModifierType.cs +++ b/src/Artemis.Core/DefaultTypes/DataBindings/Modifiers/Colors/SKColorRotateHueModifierType.cs @@ -15,13 +15,11 @@ namespace Artemis.Core.DefaultTypes public override object Apply(object currentValue, object parameterValue) { - ((SKColor) currentValue).ToHsl(out var h, out var s, out var l); + ((SKColor) currentValue).ToHsl(out float h, out float s, out float l); h += (float)parameterValue; - var a = SKColor.FromHsl(h % 360, s, l); - - return a; + return SKColor.FromHsl(h % 360, s, l); } } } \ No newline at end of file