diff options
author | Larry Ewing <lewing@xamarin.com> | 2018-05-19 00:55:22 +0300 |
---|---|---|
committer | Larry Ewing <lewing@microsoft.com> | 2018-07-16 22:05:49 +0300 |
commit | 64ac72c40263f936d7d63286fac2c035c6afbe1c (patch) | |
tree | 10c9524340f9ea2713ebb023c0e4ac6bfb346d22 /Xamarin.PropertyEditing.Mac/Controls | |
parent | 331ec7c82d92fb658d1db7a0ffd1db51522a34f1 (diff) |
If the color has a cached hue value, use it
Diffstat (limited to 'Xamarin.PropertyEditing.Mac/Controls')
5 files changed, 47 insertions, 15 deletions
diff --git a/Xamarin.PropertyEditing.Mac/Controls/Custom/BrushTabViewController.cs b/Xamarin.PropertyEditing.Mac/Controls/Custom/BrushTabViewController.cs index 73785e2..09623c0 100644 --- a/Xamarin.PropertyEditing.Mac/Controls/Custom/BrushTabViewController.cs +++ b/Xamarin.PropertyEditing.Mac/Controls/Custom/BrushTabViewController.cs @@ -118,10 +118,6 @@ namespace Xamarin.PropertyEditing.Mac inhibitSelection = true; base.ViewDidLoad (); inhibitSelection = false; - - old = View.Frame; - //old.Height = 230; - View.Frame = old; } } } diff --git a/Xamarin.PropertyEditing.Mac/Controls/Custom/ChannelEditor.cs b/Xamarin.PropertyEditing.Mac/Controls/Custom/ChannelEditor.cs index e8b6837..1991c90 100644 --- a/Xamarin.PropertyEditing.Mac/Controls/Custom/ChannelEditor.cs +++ b/Xamarin.PropertyEditing.Mac/Controls/Custom/ChannelEditor.cs @@ -231,6 +231,19 @@ namespace Xamarin.PropertyEditing.Mac => color.UpdateHSB (brightness: Clamp (value)); } + class HsbAlphaChannelEditor : ChannelEditor + { + public HsbAlphaChannelEditor () : base ("A", 0d, 255d, 1d) + { + } + + public override double ValueFromColor (CommonColor color) + => (double)color.A; + + public override CommonColor UpdateColorFromValue (CommonColor color, double value) + => color.UpdateHSB (alpha: (byte)Clamp (value)); + } + class HlsHueChannelEditor : ChannelEditor { public HlsHueChannelEditor () : base ("H", 0d, 360d, 1d) @@ -269,4 +282,17 @@ namespace Xamarin.PropertyEditing.Mac public override CommonColor UpdateColorFromValue (CommonColor color, double value) => color.UpdateHLS (saturation: Clamp (value)); } + + class HlsAlphaChannelEditor : ChannelEditor + { + public HlsAlphaChannelEditor () : base ("A", 0d, 255d, 1d) + { + } + + public override double ValueFromColor (CommonColor color) + => (double)color.A; + + public override CommonColor UpdateColorFromValue (CommonColor color, double value) + => color.UpdateHLS (alpha: (byte)Clamp (value)); + } } diff --git a/Xamarin.PropertyEditing.Mac/Controls/Custom/ColorComponentEditor.cs b/Xamarin.PropertyEditing.Mac/Controls/Custom/ColorComponentEditor.cs index 0a17a23..8ea4f1d 100644 --- a/Xamarin.PropertyEditing.Mac/Controls/Custom/ColorComponentEditor.cs +++ b/Xamarin.PropertyEditing.Mac/Controls/Custom/ColorComponentEditor.cs @@ -79,14 +79,14 @@ namespace Xamarin.PropertyEditing.Mac CreateEditor (new HsbHueChannelEditor ()), CreateEditor (new HsbSaturationChannelEditor ()), CreateEditor (new HsbBrightnessChannelEditor ()), - CreateEditor (new AlphaChannelEditor ()) + CreateEditor (new HsbAlphaChannelEditor ()) }; case ChannelEditorType.HLS: return new [] { CreateEditor (new HlsHueChannelEditor ()), CreateEditor (new HlsLightnessChannelEditor ()), CreateEditor (new HlsSaturationChannelEditor ()), - CreateEditor (new AlphaChannelEditor ()) + CreateEditor (new HlsAlphaChannelEditor ()) }; case ChannelEditorType.RGB: return new [] { @@ -148,6 +148,9 @@ namespace Xamarin.PropertyEditing.Mac { base.OnPropertyChanged (sender, e); + if (ViewModel == null) + return; + switch (e.PropertyName) { case nameof (SolidBrushViewModel.Color): foreach (var channelGroup in Editors) { diff --git a/Xamarin.PropertyEditing.Mac/Controls/Custom/ColorComponentViewController.cs b/Xamarin.PropertyEditing.Mac/Controls/Custom/ColorComponentViewController.cs index c5173de..027c69a 100644 --- a/Xamarin.PropertyEditing.Mac/Controls/Custom/ColorComponentViewController.cs +++ b/Xamarin.PropertyEditing.Mac/Controls/Custom/ColorComponentViewController.cs @@ -24,17 +24,21 @@ namespace Xamarin.PropertyEditing.Mac editor.ViewModel = ViewModel; } - public override void OnPropertyChanged (object sender, PropertyChangedEventArgs args) + public override void ViewWillDisappear () { - switch (args.PropertyName) { - case nameof (SolidBrushViewModel.Color): - break; - } + base.ViewWillDisappear (); + editor.ViewModel = null; } - public override void LoadView () - { + public override void ViewWillAppear () + { + base.ViewWillAppear (); + editor.ViewModel = ViewModel; + } + + public override void LoadView () + { View = editor = new ColorComponentEditor (this.EditorType); - } - } + } + } } diff --git a/Xamarin.PropertyEditing.Mac/Controls/Custom/NotifyingViewAdaptor.cs b/Xamarin.PropertyEditing.Mac/Controls/Custom/NotifyingViewAdaptor.cs index 2a64af3..0cda4ff 100644 --- a/Xamarin.PropertyEditing.Mac/Controls/Custom/NotifyingViewAdaptor.cs +++ b/Xamarin.PropertyEditing.Mac/Controls/Custom/NotifyingViewAdaptor.cs @@ -32,6 +32,9 @@ namespace Xamarin.PropertyEditing.Mac viewModel = value; OnViewModelChanged (oldModel); + if (viewModel == null) + return; + viewModel.PropertyChanged += OnPropertyChanged; } } |