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

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Karlaš <david.karlas@xamarin.com>2014-06-30 13:06:14 +0400
committerDavid Karlaš <david.karlas@xamarin.com>2014-06-30 13:06:14 +0400
commitc44768e2963ea21035bf3f8e73bd4696d77b8008 (patch)
tree536e13241eda8b3f08dbb130b034a525fe865257 /main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.Converters
parente7872760072c03ee447ae25de3cc0974f639e172 (diff)
[Debugger] Converters for UIColor and CGColor
Diffstat (limited to 'main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.Converters')
-rw-r--r--main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.Converters/ColorsConverters.cs61
1 files changed, 32 insertions, 29 deletions
diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.Converters/ColorsConverters.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.Converters/ColorsConverters.cs
index 1e4cb5135f..6e606481ad 100644
--- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.Converters/ColorsConverters.cs
+++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.Converters/ColorsConverters.cs
@@ -29,46 +29,49 @@ using Xwt.Drawing;
namespace MonoDevelop.Debugger.Converters
{
- class SystemDrawingColorConverter : DebugValueConverter<Color>
+ class ColorsConverters : DebugValueConverter<Color>
{
#region ColorConverter implementation
public override bool CanGetValue (ObjectValue val)
{
- return val.TypeName == "System.Drawing.Color";
+ return val.TypeName == "System.Drawing.Color" ||
+ val.TypeName == "Gdk.Color" ||
+ val.TypeName.EndsWith ("UIKit.UIColor") ||
+ val.TypeName.EndsWith ("CoreGraphics.CGColor");
}
public override Color GetValue (ObjectValue val)
{
var ops = DebuggingService.DebuggerSession.EvaluationOptions.Clone ();
ops.AllowTargetInvoke = true;
- var r = (byte)val.GetChild ("R", ops).GetRawValue (ops);
- var g = (byte)val.GetChild ("G", ops).GetRawValue (ops);
- var b = (byte)val.GetChild ("B", ops).GetRawValue (ops);
- var a = (byte)val.GetChild ("A", ops).GetRawValue (ops);
- return Color.FromBytes (r, g, b, a);
- }
-
- #endregion
- }
-
- class GdkColorConverter : DebugValueConverter<Color>
- {
- #region ColorConverter implementation
-
- public override bool CanGetValue (ObjectValue val)
- {
- return val.TypeName == "Gdk.Color";
- }
-
- public override Color GetValue (ObjectValue val)
- {
- var ops = DebuggingService.DebuggerSession.EvaluationOptions.Clone ();
- ops.AllowTargetInvoke = true;
- return new Color (
- ((ushort)val.GetChild ("Red", ops).GetRawValue (ops) / 65535.0),
- ((ushort)val.GetChild ("Green", ops).GetRawValue (ops) / 65535.0),
- ((ushort)val.GetChild ("Blue", ops).GetRawValue (ops) / 65535.0));
+ if (val.TypeName == "System.Drawing.Color") {
+ return Color.FromBytes (
+ (byte)val.GetChild ("R", ops).GetRawValue (ops),
+ (byte)val.GetChild ("G", ops).GetRawValue (ops),
+ (byte)val.GetChild ("B", ops).GetRawValue (ops),
+ (byte)val.GetChild ("A", ops).GetRawValue (ops));
+ } else if (val.TypeName == "Gdk.Color") {
+ return new Color (
+ ((ushort)val.GetChild ("Red", ops).GetRawValue (ops) / 65535.0),
+ ((ushort)val.GetChild ("Green", ops).GetRawValue (ops) / 65535.0),
+ ((ushort)val.GetChild ("Blue", ops).GetRawValue (ops) / 65535.0));
+ } else if (val.TypeName.EndsWith ("UIKit.UIColor")) {
+ var arrayObject = (RawValueArray)val.GetChild ("CGColor", ops).GetChild ("Components").GetRawValue (ops);
+ var components = (float[])(arrayObject).GetValues (0, arrayObject.Length);
+ if (components.Length == 4)
+ return new Color (components [0], components [1], components [2], components [3]);
+ else
+ return new Color (components [0], components [0], components [0], components [1]);
+ } else if (val.TypeName.EndsWith ("CoreGraphics.CGColor")) {
+ var arrayObject = (RawValueArray)val.GetChild ("Components").GetRawValue (ops);
+ var components = (float[])(arrayObject).GetValues (0, arrayObject.Length);
+ if (components.Length == 4)
+ return new Color (components [0], components [1], components [2], components [3]);
+ else
+ return new Color (components [0], components [0], components [0], components [1]);
+ }
+ throw new NotSupportedException ();
}
#endregion