From 91ec928358563b671c565fc7b031f52b9473ce33 Mon Sep 17 00:00:00 2001 From: chinboy Date: Thu, 7 May 2026 13:12:52 +0800 Subject: [PATCH] refactor(ColorPicker): replace MathUtilities.Clamp with Math.Clamp for consistency --- AtomUI.slnx | 1 + .../AbstractColorPicker.cs | 45 ++++--------------- .../AbstractColorPickerFlyout.cs | 10 ++++- .../ColorPicker.cs | 1 - .../ColorPickerFlyout.cs | 3 +- .../AbstractColorPickerSliderTrack.cs | 5 +-- .../ColorSlider/AbstractColorSlider.cs | 5 +-- .../ColorSlider/ColorSlider.cs | 5 +-- .../ColorSlider/ColorSliderThumb.cs | 6 +-- .../ColorView/ColorSpectrum.cs | 19 ++++---- .../GradientColorPicker.cs | 3 +- .../GradientColorPickerFlyout.cs | 3 +- .../PaletteColorItem.cs | 5 +-- .../Themes/ColorPickerPaletteGroupTheme.axaml | 4 +- .../Utils/ColorPickerHelpers.cs | 19 ++++---- .../Utils/Rgb.cs | 17 ++++--- 16 files changed, 62 insertions(+), 89 deletions(-) diff --git a/AtomUI.slnx b/AtomUI.slnx index 3eb54fde7..3d86f6473 100644 --- a/AtomUI.slnx +++ b/AtomUI.slnx @@ -4,6 +4,7 @@ + diff --git a/src/AtomUI.Desktop.Controls.ColorPicker/AbstractColorPicker.cs b/src/AtomUI.Desktop.Controls.ColorPicker/AbstractColorPicker.cs index 164b12fb9..2a7d058a1 100644 --- a/src/AtomUI.Desktop.Controls.ColorPicker/AbstractColorPicker.cs +++ b/src/AtomUI.Desktop.Controls.ColorPicker/AbstractColorPicker.cs @@ -5,14 +5,12 @@ using AtomUI.Theme; using Avalonia; using Avalonia.Controls; using Avalonia.Controls.Converters; -using Avalonia.Controls.Diagnostics; using Avalonia.Controls.Primitives; using Avalonia.Controls.Primitives.PopupPositioning; using Avalonia.Input.Raw; using Avalonia.Interactivity; using Avalonia.Layout; using Avalonia.Media; -using Avalonia.Threading; using Avalonia.VisualTree; namespace AtomUI.Desktop.Controls; @@ -294,9 +292,6 @@ public abstract class AbstractColorPicker : AvaloniaButton, _flyoutStateHelper.FlyoutAboutToClose += HandleFlyoutAboutToClose; _flyoutStateHelper.FlyoutOpened += HandleFlyoutOpened; _flyoutStateHelper.FlyoutClosed += HandleFlyoutClosed; - _flyoutStateHelper.OpenFlyoutPredicate = FlyoutOpenPredicate; - _flyoutStateHelper.ClickHideFlyoutPredicate = ClickHideFlyoutPredicate; - _flyoutStateHelper[!FlyoutStateHelper.TriggerTypeProperty] = this[!TriggerTypeProperty]; _flyoutStateHelper[!FlyoutStateHelper.MouseEnterDelayProperty] = this[!MouseEnterDelayProperty]; _flyoutStateHelper[!FlyoutStateHelper.MouseLeaveDelayProperty] = this[!MouseLeaveDelayProperty]; @@ -341,7 +336,10 @@ public abstract class AbstractColorPicker : AvaloniaButton, PickerFlyout = CreatePickerFlyout(); PickerFlyout.Opened += HandlePickerFlyoutOpened; PickerFlyout.Closed += HandlePickerFlyoutClosed; - PickerFlyout.PresenterCreated += HandlePickerFlyoutPresenterCreated; + if (PickerFlyout is AbstractColorPickerFlyout colorPickerFlyout) + { + colorPickerFlyout.PresenterCreated += HandlePickerFlyoutPresenterCreated; + } _flyoutStateHelper.Flyout = PickerFlyout; } _flyoutStateHelper.AnchorTarget = this; @@ -392,9 +390,9 @@ public abstract class AbstractColorPicker : AvaloniaButton, UpdatePseudoClasses(); } - private void HandlePickerFlyoutPresenterCreated(object? sender, FlyoutPresenterCreatedEventArgs args) + private void HandlePickerFlyoutPresenterCreated(object? sender, Control presenter) { - NotifyFlyoutPresenterCreated(args.Presenter); + NotifyFlyoutPresenterCreated(presenter); } protected virtual void NotifyFlyoutOpened() @@ -440,33 +438,6 @@ public abstract class AbstractColorPicker : AvaloniaButton, return region.Contains(args.Position); } - protected virtual bool ClickHideFlyoutPredicate(IPopupHostProvider hostProvider, RawPointerEventArgs args) - { - if (hostProvider.PopupHost != args.Root) - { - if (args.Root is PopupRoot root) - { - var parent = root.Parent; - while (parent != null) - { - if (parent == hostProvider.PopupHost) - { - return false; - } - - if (parent is Control parentControl && parentControl.GetVisualRoot() == hostProvider.PopupHost) - { - return false; - } - parent = parent.Parent; - } - } - - return true; - } - return false; - } - protected virtual void UpdatePseudoClasses() { PseudoClasses.Set(StdPseudoClass.FlyoutOpen, IsFlyoutOpen); @@ -571,6 +542,6 @@ public abstract class AbstractColorPicker : AvaloniaButton, protected override void OnLoaded(RoutedEventArgs e) { base.OnLoaded(e); - Dispatcher.UIThread.Post(this.EnableTransitions); + Dispatcher.Post(this.EnableTransitions); } -} \ No newline at end of file +} diff --git a/src/AtomUI.Desktop.Controls.ColorPicker/AbstractColorPickerFlyout.cs b/src/AtomUI.Desktop.Controls.ColorPicker/AbstractColorPickerFlyout.cs index 6dd7d8388..4e6138777 100644 --- a/src/AtomUI.Desktop.Controls.ColorPicker/AbstractColorPickerFlyout.cs +++ b/src/AtomUI.Desktop.Controls.ColorPicker/AbstractColorPickerFlyout.cs @@ -1,4 +1,5 @@ using Avalonia; +using Avalonia.Controls; namespace AtomUI.Desktop.Controls; @@ -57,5 +58,12 @@ internal abstract class AbstractColorPickerFlyout : Flyout get => GetValue(IsPaletteGroupEnabledProperty); set => SetValue(IsPaletteGroupEnabledProperty, value); } + + internal event EventHandler? PresenterCreated; + + protected void NotifyPresenterCreated(Control presenter) + { + PresenterCreated?.Invoke(this, presenter); + } -} \ No newline at end of file +} diff --git a/src/AtomUI.Desktop.Controls.ColorPicker/ColorPicker.cs b/src/AtomUI.Desktop.Controls.ColorPicker/ColorPicker.cs index 9a13a08e1..61bbf1b30 100644 --- a/src/AtomUI.Desktop.Controls.ColorPicker/ColorPicker.cs +++ b/src/AtomUI.Desktop.Controls.ColorPicker/ColorPicker.cs @@ -169,7 +169,6 @@ public class ColorPicker : AbstractColorPicker protected override Flyout CreatePickerFlyout() { var flyout = new ColorPickerFlyout(); - flyout.IsDetectMouseClickEnabled = false; flyout[!ColorPickerFlyout.IsMotionEnabledProperty] = this[!IsMotionEnabledProperty]; flyout[!ColorPickerFlyout.IsClearEnabledProperty] = this[!IsClearEnabledProperty]; flyout[!ColorPickerFlyout.FormatProperty] = this[!FormatProperty]; diff --git a/src/AtomUI.Desktop.Controls.ColorPicker/ColorPickerFlyout.cs b/src/AtomUI.Desktop.Controls.ColorPicker/ColorPickerFlyout.cs index 28f78fa30..b80d8256c 100644 --- a/src/AtomUI.Desktop.Controls.ColorPicker/ColorPickerFlyout.cs +++ b/src/AtomUI.Desktop.Controls.ColorPicker/ColorPickerFlyout.cs @@ -34,6 +34,7 @@ internal class ColorPickerFlyout : AbstractColorPickerFlyout Presenter[!ColorPickerView.PaletteGroupProperty] = this[!PaletteGroupProperty]; flyoutPresenter.Content = Presenter; + NotifyPresenterCreated(flyoutPresenter); return flyoutPresenter; } -} \ No newline at end of file +} diff --git a/src/AtomUI.Desktop.Controls.ColorPicker/ColorSlider/AbstractColorPickerSliderTrack.cs b/src/AtomUI.Desktop.Controls.ColorPicker/ColorSlider/AbstractColorPickerSliderTrack.cs index a354ee5c2..2b13db75c 100644 --- a/src/AtomUI.Desktop.Controls.ColorPicker/ColorSlider/AbstractColorPickerSliderTrack.cs +++ b/src/AtomUI.Desktop.Controls.ColorPicker/ColorSlider/AbstractColorPickerSliderTrack.cs @@ -2,7 +2,6 @@ using Avalonia; using Avalonia.Controls.Metadata; using Avalonia.Controls.Primitives; using Avalonia.Input; -using Avalonia.Utilities; using Thumb = AtomUI.Controls.Primitives.Thumb; namespace AtomUI.Desktop.Controls; @@ -130,7 +129,7 @@ internal abstract class AbstractColorPickerSliderTrack : TemplatedControl var factor = e.Vector / delta; var oldValue = Value; - SetCurrentValue(ValueProperty, MathUtilities.Clamp( + SetCurrentValue(ValueProperty, Math.Clamp( Value + delta, Minimum, Maximum)); @@ -176,4 +175,4 @@ internal abstract class AbstractColorPickerSliderTrack : TemplatedControl ApplyThumbDrag(e); } } -} \ No newline at end of file +} diff --git a/src/AtomUI.Desktop.Controls.ColorPicker/ColorSlider/AbstractColorSlider.cs b/src/AtomUI.Desktop.Controls.ColorPicker/ColorSlider/AbstractColorSlider.cs index 30ffa5021..42391dc45 100644 --- a/src/AtomUI.Desktop.Controls.ColorPicker/ColorSlider/AbstractColorSlider.cs +++ b/src/AtomUI.Desktop.Controls.ColorPicker/ColorSlider/AbstractColorSlider.cs @@ -7,7 +7,6 @@ using Avalonia.Data; using Avalonia.Input; using Avalonia.Interactivity; using Avalonia.Media; -using Avalonia.Utilities; using Avalonia.VisualTree; using Thumb = AtomUI.Controls.Primitives.Thumb; @@ -174,7 +173,7 @@ internal abstract class AbstractColorSlider : RangeBase var thumbLength = ThumbSize + double.Epsilon; var trackLength = Track.Bounds.Width - thumbLength; var trackPos = posOnTrack.Position.X; - var logicalPos = MathUtilities.Clamp((trackPos - thumbLength * 0.5) / trackLength, 0.0d, 1.0d); + var logicalPos = Math.Clamp((trackPos - thumbLength * 0.5) / trackLength, 0.0d, 1.0d); var calcVal = Math.Abs(-logicalPos); var range = Maximum - Minimum; var finalValue = calcVal * range + Minimum; @@ -190,4 +189,4 @@ internal abstract class AbstractColorSlider : RangeBase IsDragging = true; } } -} \ No newline at end of file +} diff --git a/src/AtomUI.Desktop.Controls.ColorPicker/ColorSlider/ColorSlider.cs b/src/AtomUI.Desktop.Controls.ColorPicker/ColorSlider/ColorSlider.cs index 809a86d8a..0df2cc9d6 100644 --- a/src/AtomUI.Desktop.Controls.ColorPicker/ColorSlider/ColorSlider.cs +++ b/src/AtomUI.Desktop.Controls.ColorPicker/ColorSlider/ColorSlider.cs @@ -10,7 +10,6 @@ using Avalonia.Interactivity; using Avalonia.Layout; using Avalonia.Media; using Avalonia.Media.Imaging; -using Avalonia.Utilities; using Avalonia.VisualTree; using AvaloniaButton = Avalonia.Controls.Button; @@ -401,7 +400,7 @@ internal class ColorSlider : AbstractColorSlider { var baseRgbColor = Color; - byte componentValue = Convert.ToByte(MathUtilities.Clamp(sliderPercent * 255, 0, 255)); + byte componentValue = Convert.ToByte(Math.Clamp(sliderPercent * 255, 0, 255)); switch (component) { @@ -644,4 +643,4 @@ internal class ColorSlider : AbstractColorSlider } return size; } -} \ No newline at end of file +} diff --git a/src/AtomUI.Desktop.Controls.ColorPicker/ColorSlider/ColorSliderThumb.cs b/src/AtomUI.Desktop.Controls.ColorPicker/ColorSlider/ColorSliderThumb.cs index 531049e91..42e47ba2f 100644 --- a/src/AtomUI.Desktop.Controls.ColorPicker/ColorSlider/ColorSliderThumb.cs +++ b/src/AtomUI.Desktop.Controls.ColorPicker/ColorSlider/ColorSliderThumb.cs @@ -1,10 +1,10 @@ using System.Diagnostics; using AtomUI.Desktop.Controls.Themes; +using AtomUI.Utils; using Avalonia; using Avalonia.Controls; using Avalonia.Controls.Primitives; using Avalonia.Media; -using Avalonia.Utilities; using Thumb = AtomUI.Controls.Primitives.Thumb; namespace AtomUI.Desktop.Controls; @@ -38,7 +38,7 @@ internal class ColorSliderThumb : Thumb protected override void OnSizeChanged(SizeChangedEventArgs e) { base.OnSizeChanged(e); - Debug.Assert(MathUtilities.AreClose(e.NewSize.Width, e.NewSize.Height)); + Debug.Assert(MathUtils.AreClose(e.NewSize.Width, e.NewSize.Height)); CornerRadius = new CornerRadius(e.NewSize.Width / 2); } @@ -60,4 +60,4 @@ internal class ColorSliderThumb : Thumb { InnerCornerRadius = new CornerRadius(args.NewSize.Width / 2); } -} \ No newline at end of file +} diff --git a/src/AtomUI.Desktop.Controls.ColorPicker/ColorView/ColorSpectrum.cs b/src/AtomUI.Desktop.Controls.ColorPicker/ColorView/ColorSpectrum.cs index cdde0a9b2..43cfc75e4 100644 --- a/src/AtomUI.Desktop.Controls.ColorPicker/ColorView/ColorSpectrum.cs +++ b/src/AtomUI.Desktop.Controls.ColorPicker/ColorView/ColorSpectrum.cs @@ -15,7 +15,6 @@ using Avalonia.Layout; using Avalonia.Media; using Avalonia.Media.Imaging; using Avalonia.Threading; -using Avalonia.Utilities; namespace AtomUI.Desktop.Controls; @@ -383,7 +382,7 @@ internal class ColorSpectrum : TemplatedControl // See discussion: https://github.com/AvaloniaUI/Avalonia/discussions/9077 // // To work-around this issue the selection ellipse is refreshed here. - Dispatcher.UIThread.Post(UpdateEllipse); + Dispatcher.Post(UpdateEllipse); // OnAttachedToVisualTree is called after OnApplyTemplate so events cannot be connected here } @@ -539,7 +538,7 @@ internal class ColorSpectrum : TemplatedControl } /// - protected override void OnGotFocus(GotFocusEventArgs e) + protected override void OnGotFocus(FocusChangedEventArgs e) { // We only want to bother with the color name tool tip if we can provide color names. if (_selectionEllipsePanel != null && @@ -554,7 +553,7 @@ internal class ColorSpectrum : TemplatedControl } /// - protected override void OnLostFocus(RoutedEventArgs e) + protected override void OnLostFocus(FocusChangedEventArgs e) { // We only want to bother with the color name tool tip if we can provide color names. if (_selectionEllipsePanel != null && @@ -943,7 +942,7 @@ internal class ColorSpectrum : TemplatedControl // The gradient image contains two dimensions of HSL information, but not the third. // We should keep the third where it already was. // Note: This can sometimes cause a crash -- possibly due to differences in c# rounding. Therefore, index is now clamped. - Hsv hsvAtPoint = _hsvValues[MathUtilities.Clamp((y * width + x), 0, _hsvValues.Count - 1)]; + Hsv hsvAtPoint = _hsvValues[Math.Clamp((y * width + x), 0, _hsvValues.Count - 1)]; var hsvColor = HsvColor; @@ -992,9 +991,9 @@ internal class ColorSpectrum : TemplatedControl Hsv hsvColor = new Hsv(HsvColor); - hsvColor.H = MathUtilities.Clamp(hsvColor.H, _minHueFromLastBitmapCreation, _maxHueFromLastBitmapCreation); - hsvColor.S = MathUtilities.Clamp(hsvColor.S, _minSaturationFromLastBitmapCreation / 100.0, _maxSaturationFromLastBitmapCreation / 100.0); - hsvColor.V = MathUtilities.Clamp(hsvColor.V, _minValueFromLastBitmapCreation / 100.0, _maxValueFromLastBitmapCreation / 100.0); + hsvColor.H = Math.Clamp(hsvColor.H, _minHueFromLastBitmapCreation, _maxHueFromLastBitmapCreation); + hsvColor.S = Math.Clamp(hsvColor.S, _minSaturationFromLastBitmapCreation / 100.0, _maxSaturationFromLastBitmapCreation / 100.0); + hsvColor.V = Math.Clamp(hsvColor.V, _minValueFromLastBitmapCreation / 100.0, _maxValueFromLastBitmapCreation / 100.0); double xPercent = 0; double yPercent = 0; @@ -1239,7 +1238,7 @@ internal class ColorSpectrum : TemplatedControl } }); - await Dispatcher.UIThread.InvokeAsync(() => + await Dispatcher.InvokeAsync(() => { ColorSpectrumComponents components2 = Components; _minBitmap = ColorPickerHelpers.CreateBitmapFromPixelData(bgraMinPixelData, pixelWidth, pixelHeight); @@ -1607,4 +1606,4 @@ internal class ColorSpectrum : TemplatedControl return lum <= 0.5; } -} \ No newline at end of file +} diff --git a/src/AtomUI.Desktop.Controls.ColorPicker/GradientColorPicker.cs b/src/AtomUI.Desktop.Controls.ColorPicker/GradientColorPicker.cs index 130b1c445..b90afb554 100644 --- a/src/AtomUI.Desktop.Controls.ColorPicker/GradientColorPicker.cs +++ b/src/AtomUI.Desktop.Controls.ColorPicker/GradientColorPicker.cs @@ -227,7 +227,6 @@ public class GradientColorPicker : AbstractColorPicker protected override Flyout CreatePickerFlyout() { var flyout = new GradientColorPickerFlyout(); - flyout.IsDetectMouseClickEnabled = false; flyout[!GradientColorPickerFlyout.IsMotionEnabledProperty] = this[!IsMotionEnabledProperty]; flyout[!GradientColorPickerFlyout.IsClearEnabledProperty] = this[!IsClearEnabledProperty]; @@ -357,4 +356,4 @@ public class GradientColorPicker : AbstractColorPicker ClearColor(); } #endregion -} \ No newline at end of file +} diff --git a/src/AtomUI.Desktop.Controls.ColorPicker/GradientColorPickerFlyout.cs b/src/AtomUI.Desktop.Controls.ColorPicker/GradientColorPickerFlyout.cs index f73ae70ec..9a1227d28 100644 --- a/src/AtomUI.Desktop.Controls.ColorPicker/GradientColorPickerFlyout.cs +++ b/src/AtomUI.Desktop.Controls.ColorPicker/GradientColorPickerFlyout.cs @@ -34,6 +34,7 @@ internal class GradientColorPickerFlyout : AbstractColorPickerFlyout Presenter[!GradientColorPickerView.PaletteGroupProperty] = this[!PaletteGroupProperty]; flyoutPresenter.Content = Presenter; + NotifyPresenterCreated(flyoutPresenter); return flyoutPresenter; } -} \ No newline at end of file +} diff --git a/src/AtomUI.Desktop.Controls.ColorPicker/PaletteColorItem.cs b/src/AtomUI.Desktop.Controls.ColorPicker/PaletteColorItem.cs index 78168a8f9..830aff0de 100644 --- a/src/AtomUI.Desktop.Controls.ColorPicker/PaletteColorItem.cs +++ b/src/AtomUI.Desktop.Controls.ColorPicker/PaletteColorItem.cs @@ -4,7 +4,6 @@ using Avalonia; using Avalonia.Controls.Primitives; using Avalonia.Interactivity; using Avalonia.Media; -using Avalonia.Threading; namespace AtomUI.Desktop.Controls; @@ -88,6 +87,6 @@ internal class PaletteColorItem : AvaloniaRadioButton protected override void OnLoaded(RoutedEventArgs e) { base.OnLoaded(e); - Dispatcher.UIThread.Post(this.EnableTransitions); + Dispatcher.Post(this.EnableTransitions); } -} \ No newline at end of file +} diff --git a/src/AtomUI.Desktop.Controls.ColorPicker/Themes/ColorPickerPaletteGroupTheme.axaml b/src/AtomUI.Desktop.Controls.ColorPicker/Themes/ColorPickerPaletteGroupTheme.axaml index 4b716e1cd..e46c508b1 100644 --- a/src/AtomUI.Desktop.Controls.ColorPicker/Themes/ColorPickerPaletteGroupTheme.axaml +++ b/src/AtomUI.Desktop.Controls.ColorPicker/Themes/ColorPickerPaletteGroupTheme.axaml @@ -13,7 +13,7 @@ IsGhostStyle="True" IsMotionEnabled="{TemplateBinding IsMotionEnabled}"> - + @@ -41,4 +41,4 @@ Value="{atom:ColorPickerTokenResource ColorPickerPresetPanelWidth}" /> - \ No newline at end of file + diff --git a/src/AtomUI.Desktop.Controls.ColorPicker/Utils/ColorPickerHelpers.cs b/src/AtomUI.Desktop.Controls.ColorPicker/Utils/ColorPickerHelpers.cs index 76d614900..7927ea253 100644 --- a/src/AtomUI.Desktop.Controls.ColorPicker/Utils/ColorPickerHelpers.cs +++ b/src/AtomUI.Desktop.Controls.ColorPicker/Utils/ColorPickerHelpers.cs @@ -9,7 +9,6 @@ using Avalonia.Layout; using Avalonia.Media; using Avalonia.Media.Imaging; using Avalonia.Platform; -using Avalonia.Utilities; namespace AtomUI.Desktop.Controls.Primitives; @@ -223,7 +222,7 @@ internal static class ColorPickerHelpers { // Sweep hue newRgbColor = HsvColor.ToRgb( - MathUtilities.Clamp(componentValue, 0.0, 360.0), + Math.Clamp(componentValue, 0.0, 360.0), baseHsvColor.S, baseHsvColor.V, baseHsvColor.A); @@ -233,7 +232,7 @@ internal static class ColorPickerHelpers // Sweep red newRgbColor = new Color( baseRgbColor.A, - Convert.ToByte(MathUtilities.Clamp(componentValue, 0.0, 255.0)), + Convert.ToByte(Math.Clamp(componentValue, 0.0, 255.0)), baseRgbColor.G, baseRgbColor.B); } @@ -247,7 +246,7 @@ internal static class ColorPickerHelpers // Sweep saturation newRgbColor = HsvColor.ToRgb( baseHsvColor.H, - MathUtilities.Clamp(componentValue, 0.0, 1.0), + Math.Clamp(componentValue, 0.0, 1.0), baseHsvColor.V, baseHsvColor.A); } @@ -257,7 +256,7 @@ internal static class ColorPickerHelpers newRgbColor = new Color( baseRgbColor.A, baseRgbColor.R, - Convert.ToByte(MathUtilities.Clamp(componentValue, 0.0, 255.0)), + Convert.ToByte(Math.Clamp(componentValue, 0.0, 255.0)), baseRgbColor.B); } @@ -271,7 +270,7 @@ internal static class ColorPickerHelpers newRgbColor = HsvColor.ToRgb( baseHsvColor.H, baseHsvColor.S, - MathUtilities.Clamp(componentValue, 0.0, 1.0), + Math.Clamp(componentValue, 0.0, 1.0), baseHsvColor.A); } else @@ -281,7 +280,7 @@ internal static class ColorPickerHelpers baseRgbColor.A, baseRgbColor.R, baseRgbColor.G, - Convert.ToByte(MathUtilities.Clamp(componentValue, 0.0, 255.0))); + Convert.ToByte(Math.Clamp(componentValue, 0.0, 255.0))); } break; @@ -295,13 +294,13 @@ internal static class ColorPickerHelpers baseHsvColor.H, baseHsvColor.S, baseHsvColor.V, - MathUtilities.Clamp(componentValue, 0.0, 1.0)); + Math.Clamp(componentValue, 0.0, 1.0)); } else { // Sweep alpha newRgbColor = new Color( - Convert.ToByte(MathUtilities.Clamp(componentValue, 0.0, 255.0)), + Convert.ToByte(Math.Clamp(componentValue, 0.0, 255.0)), baseRgbColor.R, baseRgbColor.G, baseRgbColor.B); @@ -627,4 +626,4 @@ internal static class ColorPickerHelpers new Vector(96, 96), pixelWidth * 4); } } -} \ No newline at end of file +} diff --git a/src/AtomUI.Desktop.Controls.ColorPicker/Utils/Rgb.cs b/src/AtomUI.Desktop.Controls.ColorPicker/Utils/Rgb.cs index 56bcf2f38..d8bcbb80b 100644 --- a/src/AtomUI.Desktop.Controls.ColorPicker/Utils/Rgb.cs +++ b/src/AtomUI.Desktop.Controls.ColorPicker/Utils/Rgb.cs @@ -3,7 +3,6 @@ using AtomUI.Media; using Avalonia.Media; -using Avalonia.Utilities; namespace AtomUI.Desktop.Controls.Primitives; @@ -68,10 +67,10 @@ internal struct Rgb public Color ToColor(double alpha = 1.0) { return Color.FromArgb( - (byte)MathUtilities.Clamp(alpha * 255.0, 0x00, 0xFF), - (byte)MathUtilities.Clamp(R * 255.0, 0x00, 0xFF), - (byte)MathUtilities.Clamp(G * 255.0, 0x00, 0xFF), - (byte)MathUtilities.Clamp(B * 255.0, 0x00, 0xFF)); + (byte)Math.Clamp(alpha * 255.0, 0x00, 0xFF), + (byte)Math.Clamp(R * 255.0, 0x00, 0xFF), + (byte)Math.Clamp(G * 255.0, 0x00, 0xFF), + (byte)Math.Clamp(B * 255.0, 0x00, 0xFF)); } /// @@ -83,10 +82,10 @@ internal struct Rgb // Instantiating an HsvColor is unfortunately necessary to use existing conversions // Clamping must be done here as it isn't done in the conversion method (internal-use only) HsvColor hsvColor = ColorUtils.ToHsv( - MathUtilities.Clamp(R, 0.0, 1.0), - MathUtilities.Clamp(G, 0.0, 1.0), - MathUtilities.Clamp(B, 0.0, 1.0)); + Math.Clamp(R, 0.0, 1.0), + Math.Clamp(G, 0.0, 1.0), + Math.Clamp(B, 0.0, 1.0)); return new Hsv(hsvColor); } -} \ No newline at end of file +}