Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/xamarin/Xamarin.PropertyEditing.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLarry Ewing <lewing@xamarin.com>2018-05-16 18:58:34 +0300
committerLarry Ewing <lewing@microsoft.com>2018-07-16 22:05:49 +0300
commit8d88963577cb32072ba4e039250aaf6da0f2afac (patch)
tree600149ff9707957ae7d33a8b6f0f480e39bdc2ce
parentf5f245d7bbf156e87d117a158698533036e73331 (diff)
Add hex string display
-rw-r--r--Xamarin.PropertyEditing.Mac/Controls/BrushEditorControl.cs6
-rw-r--r--Xamarin.PropertyEditing.Mac/Controls/Custom/BrushTabViewController.cs2
-rw-r--r--Xamarin.PropertyEditing.Mac/Controls/Custom/ColorComponentEditor.cs32
-rw-r--r--Xamarin.PropertyEditing/Drawing/CommonColor.cs61
4 files changed, 55 insertions, 46 deletions
diff --git a/Xamarin.PropertyEditing.Mac/Controls/BrushEditorControl.cs b/Xamarin.PropertyEditing.Mac/Controls/BrushEditorControl.cs
index 33ead00..3b3aaef 100644
--- a/Xamarin.PropertyEditing.Mac/Controls/BrushEditorControl.cs
+++ b/Xamarin.PropertyEditing.Mac/Controls/BrushEditorControl.cs
@@ -45,7 +45,7 @@ namespace Xamarin.PropertyEditing.Mac
this.popover = new NSPopover ();
popover.Behavior = NSPopoverBehavior.Transient;
popover.ContentViewController = brushTabViewController = new BrushTabViewController {
- PreferredContentSize = new CGSize (300, 280)
+ PreferredContentSize = new CGSize (250, 300)
};
RowHeight = 230 + 28;
@@ -54,7 +54,6 @@ namespace Xamarin.PropertyEditing.Mac
TranslatesAutoresizingMaskIntoConstraints = false,
ControlSize = NSControlSize.Small,
Font = NSFont.FromFontName (DefaultFontName, DefaultFontSize),
- Popover = this.popover
};
popupButtonList = new NSMenu ();
@@ -82,7 +81,7 @@ namespace Xamarin.PropertyEditing.Mac
set => base.ViewModel = value;
}
- readonly NSPopUpButton popUpButton;
+ readonly ColorPopUpButton popUpButton;
readonly BrushTabViewController colorEditor;
readonly NSPopover popover;
readonly BrushTabViewController brushTabViewController;
@@ -134,6 +133,7 @@ namespace Xamarin.PropertyEditing.Mac
{
this.colorEditor.ViewModel = ViewModel;
this.brushTabViewController.ViewModel = ViewModel;
+ this.popUpButton.Popover = ViewModel.Property.CanWrite ? popover : null;
if (ViewModel.Solid != null) {
var title = GetTitle ();
diff --git a/Xamarin.PropertyEditing.Mac/Controls/Custom/BrushTabViewController.cs b/Xamarin.PropertyEditing.Mac/Controls/Custom/BrushTabViewController.cs
index 65b8562..078f7d7 100644
--- a/Xamarin.PropertyEditing.Mac/Controls/Custom/BrushTabViewController.cs
+++ b/Xamarin.PropertyEditing.Mac/Controls/Custom/BrushTabViewController.cs
@@ -120,7 +120,7 @@ namespace Xamarin.PropertyEditing.Mac
inhibitSelection = false;
old = View.Frame;
- old.Height = 230;
+ //old.Height = 230;
View.Frame = old;
}
}
diff --git a/Xamarin.PropertyEditing.Mac/Controls/Custom/ColorComponentEditor.cs b/Xamarin.PropertyEditing.Mac/Controls/Custom/ColorComponentEditor.cs
index 5fa9d2d..865c91f 100644
--- a/Xamarin.PropertyEditing.Mac/Controls/Custom/ColorComponentEditor.cs
+++ b/Xamarin.PropertyEditing.Mac/Controls/Custom/ColorComponentEditor.cs
@@ -114,17 +114,19 @@ namespace Xamarin.PropertyEditing.Mac
Alignment = NSTextAlignment.Right
};
AddSubview (StringLabel);
- StringEditor = new NSTextField ();
+ StringEditor = new NSTextField {
+ Alignment = NSTextAlignment.Right
+ };
StringEditor.EditingEnded += (o, e) => {
- if (CommonColor.TryParse (StringEditor.StringValue, out CommonColor c)) {
+ if (CommonColor.TryParseRgbaHex (StringEditor.StringValue, out CommonColor c)) {
ViewModel.Color = c;
- StringEditor.StringValue = c.ToString ();
+ StringEditor.StringValue = c.ToRgbaHex ();
}
};
AddSubview (StringEditor);
}
- void UpdateComponent (object sender, EventArgs args)
+ void UpdateComponent (object sender, EventArgs args)
{
if (ViewModel == null)
return;
@@ -135,21 +137,21 @@ namespace Xamarin.PropertyEditing.Mac
ViewModel.CommitLastColor ();
}
- protected override void OnPropertyChanged(object sender, PropertyChangedEventArgs e)
- {
- base.OnPropertyChanged(sender, e);
+ protected override void OnPropertyChanged (object sender, PropertyChangedEventArgs e)
+ {
+ base.OnPropertyChanged (sender, e);
switch (e.PropertyName) {
case nameof (SolidBrushViewModel.Color):
- foreach (var channelGroup in Editors) {
- var editor = channelGroup.Editor;
- editor.Value = editor.ComponentEditor.ValueFromColor(ViewModel.Color);
- editor.ComponentEditor.UpdateGradientLayer (channelGroup.Gradient, ViewModel.Color);
- }
- StringEditor.StringValue = ViewModel.Color.ToString ();
- break;
+ foreach (var channelGroup in Editors) {
+ var editor = channelGroup.Editor;
+ editor.Value = editor.ComponentEditor.ValueFromColor (ViewModel.Color);
+ editor.ComponentEditor.UpdateGradientLayer (channelGroup.Gradient, ViewModel.Color);
+ }
+ StringEditor.StringValue = ViewModel.Color.ToString ();
+ break;
}
- }
+ }
public override void UpdateConstraints()
{
diff --git a/Xamarin.PropertyEditing/Drawing/CommonColor.cs b/Xamarin.PropertyEditing/Drawing/CommonColor.cs
index a4bdaa8..aa7aa6f 100644
--- a/Xamarin.PropertyEditing/Drawing/CommonColor.cs
+++ b/Xamarin.PropertyEditing/Drawing/CommonColor.cs
@@ -362,6 +362,40 @@ namespace Xamarin.PropertyEditing.Drawing
return delta == 0 ? highest : (component - lowest) * 255 / delta;
}
+ public string ToRgbaHex ()
+ {
+ return $"#{R:X2}{G:X2}{B:X2}{A:X2}";
+ }
+
+ public static bool TryParseRgbaHex (string value, out CommonColor color)
+ {
+ if (Regex.IsMatch (value, @"^#(([A-Fa-f0-9]{2}){3}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{4}|([A-Fa-f0-9]{2}){4})$")) {
+ var hex = value.Substring (1);
+ switch (hex.Length) {
+ case 3:
+ hex = hex.Select (c => $"{c}{c}").Aggregate ((a, b) => (a + b));
+ goto case 6;
+ case 6:
+ hex = hex + "ff";
+ goto case 8;
+ case 4:
+ hex = hex.Select (c => $"{c}{c}").Aggregate ((a, b) => (a + b));
+ goto case 8;
+ case 8:
+ var v = Convert.ToInt32 (hex, 16);
+ color = new CommonColor (
+ r: (byte)(v >> 24),
+ g: (byte)(v >> 16),
+ b: (byte)(v >> 8),
+ a: (byte)v);
+
+ return true;
+ }
+ }
+ color = CommonColor.Black;
+ return false;
+ }
+
/// <summary>
/// Creates a color from cyan, magenta, yellow, and black components
/// </summary>
@@ -524,34 +558,7 @@ namespace Xamarin.PropertyEditing.Drawing
+ (left.g - right.g) * (left.g - right.g)
+ (left.b - right.b) * (left.b - right.b);
- public static bool TryParse (string value, out CommonColor color)
- {
- if (Regex.IsMatch(value, @"^#(([A-Fa-f0-9]{2}){3}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{4}|([A-Fa-f0-9]{2}){4})$")) {
- var hex = value.Substring (1);
- switch (hex.Length) {
- case 3:
- hex = hex.Select (c => $"{c}{c}").Aggregate ((a, b) => (a + b));
- goto case 6;
- case 6:
- hex = hex + "ff";
- goto case 8;
- case 4:
- hex = hex.Select (c => $"{c}{c}").Aggregate ((a, b) => (a + b));
- goto case 8;
- case 8:
- var v = Convert.ToInt32 (hex, 16);
- color = new CommonColor (
- r: (byte)(v >> 24),
- g: (byte)(v >> 16),
- b: (byte)(v >> 8),
- a: (byte) v);
- return true;
- }
- }
- color = CommonColor.Black;
- return false;
- }
public override int GetHashCode ()
{