From 2edd7e4157ae3929fb3341f766785664395f4044 Mon Sep 17 00:00:00 2001 From: robloo Date: Mon, 21 Mar 2022 00:49:13 -0400 Subject: [PATCH] Add initial ColorSpectrum Fluent style/template --- .../ColorSpectrum/ColorSpectrum.cs | 41 ++-- .../Controls/ColorSpectrum.xaml | 183 ++++++++++++++++++ .../Controls/FluentControls.xaml | 5 +- 3 files changed, 208 insertions(+), 21 deletions(-) create mode 100644 src/Avalonia.Themes.Fluent/Controls/ColorSpectrum.xaml diff --git a/src/Avalonia.Controls/ColorPicker/ColorSpectrum/ColorSpectrum.cs b/src/Avalonia.Controls/ColorPicker/ColorSpectrum/ColorSpectrum.cs index e4096bcfda..47b113b0de 100644 --- a/src/Avalonia.Controls/ColorPicker/ColorSpectrum/ColorSpectrum.cs +++ b/src/Avalonia.Controls/ColorPicker/ColorSpectrum/ColorSpectrum.cs @@ -104,15 +104,15 @@ namespace Avalonia.Controls.Primitives UnregisterEvents(); - _layoutRoot = e.NameScope.Find("LayoutRoot"); - _sizingGrid = e.NameScope.Find("SizingGrid"); - _spectrumRectangle = e.NameScope.Find("SpectrumRectangle"); - _spectrumEllipse = e.NameScope.Find("SpectrumEllipse"); - _spectrumOverlayRectangle = e.NameScope.Find("SpectrumOverlayRectangle"); - _spectrumOverlayEllipse = e.NameScope.Find("SpectrumOverlayEllipse"); - _inputTarget = e.NameScope.Find("InputTarget"); - _selectionEllipsePanel = e.NameScope.Find("SelectionEllipsePanel"); - _colorNameToolTip = e.NameScope.Find("ColorNameToolTip"); + _layoutRoot = e.NameScope.Find("PART_LayoutRoot"); + _sizingGrid = e.NameScope.Find("PART_SizingGrid"); + _spectrumRectangle = e.NameScope.Find("PART_SpectrumRectangle"); + _spectrumEllipse = e.NameScope.Find("PART_SpectrumEllipse"); + _spectrumOverlayRectangle = e.NameScope.Find("PART_SpectrumOverlayRectangle"); + _spectrumOverlayEllipse = e.NameScope.Find("PART_SpectrumOverlayEllipse"); + _inputTarget = e.NameScope.Find("PART_InputTarget"); + _selectionEllipsePanel = e.NameScope.Find("PART_SelectionEllipsePanel"); + _colorNameToolTip = e.NameScope.Find("PART_ColorNameToolTip"); if (_layoutRoot != null) { @@ -149,7 +149,7 @@ namespace Avalonia.Controls.Primitives } UpdateEllipse(); - UpdateVisualState(useTransitions: false); + UpdatePseudoClasses(); } /// @@ -290,7 +290,7 @@ namespace Avalonia.Controls.Primitives } } - UpdateVisualState(useTransitions: true); + UpdatePseudoClasses(); } /// @@ -305,7 +305,7 @@ namespace Avalonia.Controls.Primitives } } - UpdateVisualState(useTransitions: true); + UpdatePseudoClasses(); } /// @@ -508,7 +508,10 @@ namespace Avalonia.Controls.Primitives CreateBitmapsAndColorMap(); } - private void UpdateVisualState(bool useTransitions) + /// + /// Updates the visual state of the control by applying latest PseudoClasses. + /// + private void UpdatePseudoClasses() { //if (m_isPointerPressed) //{ @@ -555,7 +558,7 @@ namespace Avalonia.Controls.Primitives HsvColor = newHsv.ToHsvColor(alpha); UpdateEllipse(); - UpdateVisualState(useTransitions: true); + UpdatePseudoClasses(); _updatingHsvColor = false; _updatingColor = false; @@ -822,7 +825,7 @@ namespace Avalonia.Controls.Primitives } } - UpdateVisualState(useTransitions: true); + UpdatePseudoClasses(); } private void OnLayoutRootSizeChanged() @@ -833,14 +836,14 @@ namespace Avalonia.Controls.Primitives private void OnInputTargetPointerEnter(object? sender, PointerEventArgs args) { _isPointerOver = true; - UpdateVisualState(useTransitions: true); + UpdatePseudoClasses(); args.Handled = true; } private void OnInputTargetPointerLeave(object? sender, PointerEventArgs args) { _isPointerOver = false; - UpdateVisualState(useTransitions: true); + UpdatePseudoClasses(); args.Handled = true; } @@ -858,7 +861,7 @@ namespace Avalonia.Controls.Primitives args.Pointer.Capture(inputTarget); UpdateColorFromPoint(args.GetCurrentPoint(inputTarget)); - UpdateVisualState(useTransitions: true); + UpdatePseudoClasses(); UpdateEllipse(); args.Handled = true; @@ -881,7 +884,7 @@ namespace Avalonia.Controls.Primitives _shouldShowLargeSelection = false; args.Pointer.Capture(null); - UpdateVisualState(useTransitions: true); + UpdatePseudoClasses(); UpdateEllipse(); args.Handled = true; diff --git a/src/Avalonia.Themes.Fluent/Controls/ColorSpectrum.xaml b/src/Avalonia.Themes.Fluent/Controls/ColorSpectrum.xaml new file mode 100644 index 0000000000..c4ca09d439 --- /dev/null +++ b/src/Avalonia.Themes.Fluent/Controls/ColorSpectrum.xaml @@ -0,0 +1,183 @@ + + + + + + + + + + + + + diff --git a/src/Avalonia.Themes.Fluent/Controls/FluentControls.xaml b/src/Avalonia.Themes.Fluent/Controls/FluentControls.xaml index 16a6cc9c14..921826bab1 100644 --- a/src/Avalonia.Themes.Fluent/Controls/FluentControls.xaml +++ b/src/Avalonia.Themes.Fluent/Controls/FluentControls.xaml @@ -9,6 +9,7 @@ + @@ -59,8 +60,8 @@ - - + +