mirror of
https://github.com/DarthAffe/RGB.NET.git
synced 2025-12-13 10:08:31 +00:00
Changed color to be an immutable value-type
This commit is contained in:
parent
b9e443b3b6
commit
50cfd296be
@ -37,10 +37,7 @@ namespace RGB.NET.Brushes
|
|||||||
#region Methods
|
#region Methods
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
protected override Color GetColorAtPoint(Rectangle rectangle, BrushRenderTarget renderTarget)
|
protected override Color GetColorAtPoint(Rectangle rectangle, BrushRenderTarget renderTarget) => Color;
|
||||||
{
|
|
||||||
return Color;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
@ -50,19 +47,13 @@ namespace RGB.NET.Brushes
|
|||||||
/// Converts a <see cref="Color" /> to a <see cref="SolidColorBrush" />.
|
/// Converts a <see cref="Color" /> to a <see cref="SolidColorBrush" />.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="color">The <see cref="Color"/> to convert.</param>
|
/// <param name="color">The <see cref="Color"/> to convert.</param>
|
||||||
public static explicit operator SolidColorBrush(Color color)
|
public static explicit operator SolidColorBrush(Color color) => new SolidColorBrush(color);
|
||||||
{
|
|
||||||
return new SolidColorBrush(color);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Converts a <see cref="SolidColorBrush" /> to a <see cref="Color" />.
|
/// Converts a <see cref="SolidColorBrush" /> to a <see cref="Color" />.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="brush">The <see cref="Color"/> to convert.</param>
|
/// <param name="brush">The <see cref="Color"/> to convert.</param>
|
||||||
public static implicit operator Color(SolidColorBrush brush)
|
public static implicit operator Color(SolidColorBrush brush) => brush.Color;
|
||||||
{
|
|
||||||
return brush.Color;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|||||||
@ -53,7 +53,7 @@ namespace RGB.NET.Brushes.Gradients
|
|||||||
public override Color GetColor(double offset)
|
public override Color GetColor(double offset)
|
||||||
{
|
{
|
||||||
if (GradientStops.Count == 0) return Color.Transparent;
|
if (GradientStops.Count == 0) return Color.Transparent;
|
||||||
if (GradientStops.Count == 1) return new Color(GradientStops[0].Color);
|
if (GradientStops.Count == 1) return GradientStops[0].Color;
|
||||||
|
|
||||||
(GradientStop gsBefore, GradientStop gsAfter) = GetEnclosingGradientStops(offset, GradientStops, WrapGradient);
|
(GradientStop gsBefore, GradientStop gsAfter) = GetEnclosingGradientStops(offset, GradientStops, WrapGradient);
|
||||||
|
|
||||||
|
|||||||
@ -56,7 +56,7 @@ namespace RGB.NET.Brushes.Gradients
|
|||||||
double hue = (StartHue + (range * offset)) % 360f;
|
double hue = (StartHue + (range * offset)) % 360f;
|
||||||
if (hue < 0)
|
if (hue < 0)
|
||||||
hue += 360;
|
hue += 360;
|
||||||
return new Color(hue, 1f, 1f);
|
return Color.FromHSV(hue, 1, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
|
|||||||
@ -64,8 +64,8 @@ namespace RGB.NET.Core
|
|||||||
|
|
||||||
foreach (BrushRenderTarget renderTarget in renderTargets)
|
foreach (BrushRenderTarget renderTarget in renderTargets)
|
||||||
{
|
{
|
||||||
Color color = new Color(GetColorAtPoint(rectangle, renderTarget)); // Clone the color, we don't want to have reference issues here and brushes might return the same color multiple times!}
|
Color color = GetColorAtPoint(rectangle, renderTarget);
|
||||||
ApplyDecorators(rectangle, renderTarget, ref color);
|
color = ApplyDecorators(rectangle, renderTarget, color);
|
||||||
RenderedTargets[renderTarget] = color;
|
RenderedTargets[renderTarget] = color;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -76,11 +76,13 @@ namespace RGB.NET.Core
|
|||||||
/// <param name="rectangle">The rectangle in which the brush should be drawn.</param>
|
/// <param name="rectangle">The rectangle in which the brush should be drawn.</param>
|
||||||
/// <param name="renderTarget">The target (key/point) from which the color should be taken.</param>
|
/// <param name="renderTarget">The target (key/point) from which the color should be taken.</param>
|
||||||
/// <param name="color">The <see cref="Color"/> to be modified.</param>
|
/// <param name="color">The <see cref="Color"/> to be modified.</param>
|
||||||
protected virtual void ApplyDecorators(Rectangle rectangle, BrushRenderTarget renderTarget, ref Color color)
|
protected virtual Color ApplyDecorators(Rectangle rectangle, BrushRenderTarget renderTarget, Color color)
|
||||||
{
|
{
|
||||||
foreach (IBrushDecorator decorator in Decorators)
|
foreach (IBrushDecorator decorator in Decorators)
|
||||||
if (decorator.IsEnabled)
|
if (decorator.IsEnabled)
|
||||||
decorator.ManipulateColor(rectangle, renderTarget, ref color);
|
color = decorator.ManipulateColor(rectangle, renderTarget, color);
|
||||||
|
|
||||||
|
return color;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
@ -88,7 +90,7 @@ namespace RGB.NET.Core
|
|||||||
{
|
{
|
||||||
List<BrushRenderTarget> renderTargets = RenderedTargets.Keys.ToList();
|
List<BrushRenderTarget> renderTargets = RenderedTargets.Keys.ToList();
|
||||||
foreach (BrushRenderTarget renderTarget in renderTargets)
|
foreach (BrushRenderTarget renderTarget in renderTargets)
|
||||||
FinalizeColor(RenderedTargets[renderTarget]); // Cloning here again shouldn't be needed since we did this above.
|
RenderedTargets[renderTarget] = FinalizeColor(RenderedTargets[renderTarget]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -102,20 +104,19 @@ namespace RGB.NET.Core
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Finalizes the color by appliing the overall brightness and opacity.<br/>
|
/// Finalizes the color by appliing the overall brightness and opacity.<br/>
|
||||||
/// This method should always be the last call of a <see cref="GetColorAtPoint" /> implementation.
|
/// This method should always be the last call of a <see cref="GetColorAtPoint" /> implementation.
|
||||||
/// If you overwrite this method please make sure that you never return the same color-object twice to prevent reference-issues!
|
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="color">The color to finalize.</param>
|
/// <param name="color">The color to finalize.</param>
|
||||||
/// <returns>The finalized color.</returns>
|
/// <returns>The finalized color.</returns>
|
||||||
protected virtual void FinalizeColor(Color color)
|
protected virtual Color FinalizeColor(Color color)
|
||||||
{
|
{
|
||||||
foreach (IColorCorrection colorCorrection in ColorCorrections)
|
foreach (IColorCorrection colorCorrection in ColorCorrections)
|
||||||
colorCorrection.ApplyTo(color);
|
color = colorCorrection.ApplyTo(color);
|
||||||
|
|
||||||
// Since we use HSV to calculate there is no way to make a color 'brighter' than 100%
|
// Since we use HSV to calculate there is no way to make a color 'brighter' than 100%
|
||||||
// Be carefull with the naming: Since we use HSV the correct term is 'value' but outside we call it 'brightness'
|
// Be carefull with the naming: Since we use HSV the correct term is 'value' but outside we call it 'brightness'
|
||||||
// THIS IS NOT A HSB CALCULATION!!!
|
// THIS IS NOT A HSB CALCULATION!!!
|
||||||
color.Value *= Brightness <= 0 ? 0 : (Brightness >= 1.0 ? 1.0 : Brightness);
|
return color.MultiplyValue(Brightness.Clamp(0, 1))
|
||||||
color.A = (byte)(color.A * (Opacity <= 0 ? 0 : (Opacity >= 1.0 ? 1.0 : Opacity)));
|
.MultiplyA(Opacity.Clamp(0, 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|||||||
@ -11,6 +11,6 @@ namespace RGB.NET.Core
|
|||||||
/// Applies the <see cref="IColorCorrection"/> to the given <see cref="Color"/>.
|
/// Applies the <see cref="IColorCorrection"/> to the given <see cref="Color"/>.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="color">The <see cref="Color"/> to correct.</param>
|
/// <param name="color">The <see cref="Color"/> to correct.</param>
|
||||||
void ApplyTo(Color color);
|
Color ApplyTo(Color color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -12,6 +12,6 @@
|
|||||||
/// <param name="rectangle">The rectangle in which the <see cref="IBrush"/> should be drawn.</param>
|
/// <param name="rectangle">The rectangle in which the <see cref="IBrush"/> should be drawn.</param>
|
||||||
/// <param name="renderTarget">The target (key/point) from which the <see cref="Color"/> should be taken.</param>
|
/// <param name="renderTarget">The target (key/point) from which the <see cref="Color"/> should be taken.</param>
|
||||||
/// <param name="color">The <see cref="Color"/> to be modified.</param>
|
/// <param name="color">The <see cref="Color"/> to be modified.</param>
|
||||||
void ManipulateColor(Rectangle rectangle, BrushRenderTarget renderTarget, ref Color color);
|
Color ManipulateColor(Rectangle rectangle, BrushRenderTarget renderTarget, Color color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,49 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Runtime.CompilerServices;
|
|
||||||
|
|
||||||
namespace RGB.NET.Core
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Offers some extensions and helper-methods for the work with doubles
|
|
||||||
/// </summary>
|
|
||||||
public static class DoubleExtensions
|
|
||||||
{
|
|
||||||
#region Constants
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Defines the precision RGB.NET processes floating point comparisons in.
|
|
||||||
/// </summary>
|
|
||||||
public const double TOLERANCE = 1E-10;
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Methods
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Checks if two values are equal respecting the <see cref="TOLERANCE"/>.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="value1">The first value to compare.</param>
|
|
||||||
/// <param name="value2">The first value to compare.</param>
|
|
||||||
/// <returns><c>true</c> if the difference is smaller than the <see cref="TOLERANCE"/>; otherwise, <c>false</c>.</returns>
|
|
||||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
||||||
public static bool EqualsInTolerance(this double value1, double value2)
|
|
||||||
{
|
|
||||||
return Math.Abs(value1 - value2) < TOLERANCE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Camps the provided value to be bigger or equal min and smaller or equal max.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="value">The value to clamp.</param>
|
|
||||||
/// <param name="min">The lower value of the range the value is clamped to.</param>
|
|
||||||
/// <param name="max">The higher value of the range the value is clamped to.</param>
|
|
||||||
/// <returns></returns>
|
|
||||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
||||||
public static double Clamp(this double value, double min, double max)
|
|
||||||
{
|
|
||||||
return Math.Max(min, Math.Min(max, value));
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
}
|
|
||||||
}
|
|
||||||
87
RGB.NET.Core/Extensions/MathExtensions.cs
Normal file
87
RGB.NET.Core/Extensions/MathExtensions.cs
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
using System;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
|
||||||
|
namespace RGB.NET.Core
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Offers some extensions and helper-methods for the work with doubles
|
||||||
|
/// </summary>
|
||||||
|
public static class DoubleExtensions
|
||||||
|
{
|
||||||
|
#region Constants
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Defines the precision RGB.NET processes floating point comparisons in.
|
||||||
|
/// </summary>
|
||||||
|
public const double TOLERANCE = 1E-10;
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Methods
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Checks if two values are equal respecting the <see cref="TOLERANCE"/>.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="value1">The first value to compare.</param>
|
||||||
|
/// <param name="value2">The first value to compare.</param>
|
||||||
|
/// <returns><c>true</c> if the difference is smaller than the <see cref="TOLERANCE"/>; otherwise, <c>false</c>.</returns>
|
||||||
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
|
public static bool EqualsInTolerance(this double value1, double value2) => Math.Abs(value1 - value2) < TOLERANCE;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Clamps the provided value to be bigger or equal min and smaller or equal max.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="value">The value to clamp.</param>
|
||||||
|
/// <param name="min">The lower value of the range the value is clamped to.</param>
|
||||||
|
/// <param name="max">The higher value of the range the value is clamped to.</param>
|
||||||
|
/// <returns>The clamped value.</returns>
|
||||||
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
|
public static double Clamp(this double value, double min, double max) => Math.Max(min, Math.Min(max, value));
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Clamps the provided value to be bigger or equal min and smaller or equal max.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="value">The value to clamp.</param>
|
||||||
|
/// <param name="min">The lower value of the range the value is clamped to.</param>
|
||||||
|
/// <param name="max">The higher value of the range the value is clamped to.</param>
|
||||||
|
/// <returns>The clamped value.</returns>
|
||||||
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
|
public static int Clamp(this int value, int min, int max) => Math.Max(min, Math.Min(max, value));
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Enforces the provided value to be in the specified range by wrapping it around the edges if it exceeds them.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="value">The value to wrap.</param>
|
||||||
|
/// <param name="min">The lower value of the range the value is wrapped into.</param>
|
||||||
|
/// <param name="max">The higher value of the range the value is wrapped into.</param>
|
||||||
|
/// <returns>The wrapped value.</returns>
|
||||||
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
|
public static double Wrap(this double value, double min, double max)
|
||||||
|
{
|
||||||
|
double range = max - min;
|
||||||
|
|
||||||
|
while (value > max)
|
||||||
|
value -= range;
|
||||||
|
|
||||||
|
while (value < min)
|
||||||
|
value += range;
|
||||||
|
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Internal
|
||||||
|
|
||||||
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
|
internal static byte GetByteValueFromPercentage(this double percentage)
|
||||||
|
{
|
||||||
|
if (double.IsNaN(percentage)) return 0;
|
||||||
|
|
||||||
|
percentage = percentage.Clamp(0, 1.0);
|
||||||
|
return (byte)(percentage.Equals(1.0) ? 255 : percentage * 256.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
@ -60,7 +60,7 @@ namespace RGB.NET.Core
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public Color RequestedColor
|
public Color RequestedColor
|
||||||
{
|
{
|
||||||
get => new Color(_requestedColor);
|
get => _requestedColor;
|
||||||
private set
|
private set
|
||||||
{
|
{
|
||||||
SetProperty(ref _requestedColor, value);
|
SetProperty(ref _requestedColor, value);
|
||||||
@ -80,15 +80,7 @@ namespace RGB.NET.Core
|
|||||||
set
|
set
|
||||||
{
|
{
|
||||||
if (!IsLocked)
|
if (!IsLocked)
|
||||||
{
|
RequestedColor += value;
|
||||||
// DarthAffe 26.01.2017: DON'T USE THE PROPERTY HERE! Working on the copy doesn't work!
|
|
||||||
_requestedColor.Blend(value);
|
|
||||||
|
|
||||||
// ReSharper disable ExplicitCallerInfoArgument
|
|
||||||
OnPropertyChanged(nameof(RequestedColor));
|
|
||||||
OnPropertyChanged(nameof(IsDirty));
|
|
||||||
// ReSharper restore ExplicitCallerInfoArgument
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -168,19 +160,13 @@ namespace RGB.NET.Core
|
|||||||
/// Converts a <see cref="Led" /> to a <see cref="Core.Color" />.
|
/// Converts a <see cref="Led" /> to a <see cref="Core.Color" />.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="led">The <see cref="Led"/> to convert.</param>
|
/// <param name="led">The <see cref="Led"/> to convert.</param>
|
||||||
public static implicit operator Color(Led led)
|
public static implicit operator Color(Led led) => led?.Color ?? Color.Transparent;
|
||||||
{
|
|
||||||
return led?.Color;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Converts a <see cref="Led" /> to a <see cref="Rectangle" />.
|
/// Converts a <see cref="Led" /> to a <see cref="Rectangle" />.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="led">The <see cref="Led"/> to convert.</param>
|
/// <param name="led">The <see cref="Led"/> to convert.</param>
|
||||||
public static implicit operator Rectangle(Led led)
|
public static implicit operator Rectangle(Led led) => led?.LedRectangle;
|
||||||
{
|
|
||||||
return led?.LedRectangle;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|||||||
@ -140,11 +140,11 @@ namespace RGB.NET.Core
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns a new <see cref="Point"/> representing the substraction of the two provided <see cref="Point"/>.
|
/// Returns a new <see cref="Point"/> representing the subtraction of the two provided <see cref="Point"/>.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="point1">The first <see cref="Point"/>.</param>
|
/// <param name="point1">The first <see cref="Point"/>.</param>
|
||||||
/// <param name="point2">The second <see cref="Point"/>.</param>
|
/// <param name="point2">The second <see cref="Point"/>.</param>
|
||||||
/// <returns>A new <see cref="Point"/> representing the substraction of the two provided <see cref="Point"/>.</returns>
|
/// <returns>A new <see cref="Point"/> representing the subtraction of the two provided <see cref="Point"/>.</returns>
|
||||||
public static Point operator -(Point point1, Point point2)
|
public static Point operator -(Point point1, Point point2)
|
||||||
{
|
{
|
||||||
return new Point(point1.X - point2.X, point1.Y - point2.Y);
|
return new Point(point1.X - point2.X, point1.Y - point2.Y);
|
||||||
|
|||||||
@ -149,11 +149,11 @@ namespace RGB.NET.Core
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns a new <see cref="Size"/> representing the substraction of the two provided <see cref="Size"/>.
|
/// Returns a new <see cref="Size"/> representing the subtraction of the two provided <see cref="Size"/>.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="size1">The first <see cref="Size"/>.</param>
|
/// <param name="size1">The first <see cref="Size"/>.</param>
|
||||||
/// <param name="size2">The second <see cref="Size"/>.</param>
|
/// <param name="size2">The second <see cref="Size"/>.</param>
|
||||||
/// <returns>A new <see cref="Size"/> representing the substraction of the two provided <see cref="Size"/>.</returns>
|
/// <returns>A new <see cref="Size"/> representing the subtraction of the two provided <see cref="Size"/>.</returns>
|
||||||
public static Size operator -(Size size1, Size size2)
|
public static Size operator -(Size size1, Size size2)
|
||||||
{
|
{
|
||||||
return new Size(size1.Width - size2.Width, size1.Height - size2.Height);
|
return new Size(size1.Width - size2.Width, size1.Height - size2.Height);
|
||||||
|
|||||||
@ -80,7 +80,7 @@
|
|||||||
<Compile Include="Leds\ILedId.cs" />
|
<Compile Include="Leds\ILedId.cs" />
|
||||||
<Compile Include="MVVM\AbstractBindable.cs" />
|
<Compile Include="MVVM\AbstractBindable.cs" />
|
||||||
<Compile Include="Leds\Color.cs" />
|
<Compile Include="Leds\Color.cs" />
|
||||||
<Compile Include="Extensions\DoubleExtensions.cs" />
|
<Compile Include="Extensions\MathExtensions.cs" />
|
||||||
<Compile Include="Devices\IRGBDevice.cs" />
|
<Compile Include="Devices\IRGBDevice.cs" />
|
||||||
<Compile Include="Leds\Led.cs" />
|
<Compile Include="Leds\Led.cs" />
|
||||||
<Compile Include="MVVM\IBindable.cs" />
|
<Compile Include="MVVM\IBindable.cs" />
|
||||||
|
|||||||
@ -72,7 +72,7 @@ namespace RGB.NET.Decorators.Brush
|
|||||||
#region Methods
|
#region Methods
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public void ManipulateColor(Rectangle rectangle, BrushRenderTarget renderTarget, ref Color color) => color.APercent = _currentValue;
|
public Color ManipulateColor(Rectangle rectangle, BrushRenderTarget renderTarget, Color color) => color.SetAPercent(_currentValue);
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
protected override void Update(double deltaTime)
|
protected override void Update(double deltaTime)
|
||||||
|
|||||||
@ -151,7 +151,7 @@ namespace RGB.NET.Devices.Corsair
|
|||||||
for (int i = 0; i < LedMapping.Count; i++)
|
for (int i = 0; i < LedMapping.Count; i++)
|
||||||
{
|
{
|
||||||
_CorsairLedColor ledColor = (_CorsairLedColor)Marshal.PtrToStructure(readPtr, typeof(_CorsairLedColor));
|
_CorsairLedColor ledColor = (_CorsairLedColor)Marshal.PtrToStructure(readPtr, typeof(_CorsairLedColor));
|
||||||
colorData.Add((CorsairLedIds)ledColor.ledId, new Color((byte)ledColor.r, (byte)ledColor.g, (byte)ledColor.b));
|
colorData.Add((CorsairLedIds)ledColor.ledId, new Color(ledColor.r, ledColor.g, ledColor.b));
|
||||||
|
|
||||||
readPtr = new IntPtr(readPtr.ToInt64() + structSize);
|
readPtr = new IntPtr(readPtr.ToInt64() + structSize);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -15,8 +15,7 @@ namespace RGB.NET.WPF.Converter
|
|||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
||||||
{
|
{
|
||||||
Core.Color color = value as Core.Color;
|
return new SolidColorBrush(!(value is Core.Color color)
|
||||||
return new SolidColorBrush(color == null
|
|
||||||
? Color.FromArgb(0, 0, 0, 0)
|
? Color.FromArgb(0, 0, 0, 0)
|
||||||
: Color.FromArgb(color.A, color.R, color.G, color.B));
|
: Color.FromArgb(color.A, color.R, color.G, color.B));
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user