diff options
author | David Karlaš <david.karlas@xamarin.com> | 2014-06-30 11:35:41 +0400 |
---|---|---|
committer | David Karlaš <david.karlas@xamarin.com> | 2014-06-30 11:35:41 +0400 |
commit | e7872760072c03ee447ae25de3cc0974f639e172 (patch) | |
tree | 03bbad31a806eaef9e81a4de40717d2c09b9e03a /main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.Converters | |
parent | 3a04588fc03e125dc591596b1ce519ebd4b26007 (diff) |
[Debugger] Preview now supports UIImage
Diffstat (limited to 'main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.Converters')
-rw-r--r-- | main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.Converters/ImageConverter.cs | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.Converters/ImageConverter.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.Converters/ImageConverter.cs index 7122cb19fe..24e1062704 100644 --- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.Converters/ImageConverter.cs +++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.Converters/ImageConverter.cs @@ -36,18 +36,29 @@ namespace MonoDevelop.Debugger.Converters public override bool CanGetValue (ObjectValue val) { - return val.TypeName == "Gdk.Pixbuf"; + return val.TypeName == "Gdk.Pixbuf" || + val.TypeName.EndsWith ("UIKit.UIImage"); } public override Image GetValue (ObjectValue val) { var ops = DebuggingService.DebuggerSession.EvaluationOptions.Clone (); ops.AllowTargetInvoke = true; - var pix = (RawValue)val.GetRawValue (ops); - var arrayObject = (RawValueArray)pix.CallMethod ("SaveToBuffer", "png"); - var bytes = (byte[])(arrayObject).GetValues (0, arrayObject.Length); - var ms = new MemoryStream (bytes, false); - return Image.FromStream (ms); + var rawVal = (RawValue)val.GetRawValue (ops); + if (val.TypeName == "Gdk.Pixbuf") { + var arrayObject = (RawValueArray)rawVal.CallMethod ("SaveToBuffer", "png"); + var bytes = (byte[])(arrayObject).GetValues (0, arrayObject.Length); + var ms = new MemoryStream (bytes, false); + return Image.FromStream (ms); + } else if (val.TypeName.EndsWith ("UIKit.UIImage")) { + RawValue nsData = (RawValue)rawVal.CallMethod ("AsPNG"); + var arrayObject = (RawValueArray)nsData.CallMethod ("ToArray"); + var bytes = (byte[])(arrayObject).GetValues (0, arrayObject.Length); + var ms = new MemoryStream (bytes, false); + return Image.FromStream (ms); + } else { + throw new NotSupportedException (); + } } #endregion |