Skip to content

Commit 1bc8a9b

Browse files
committed
Change to visualizer target to more narrow type BitmapSource instead of broader type ImageSource
1 parent 87ac9bb commit 1bc8a9b

File tree

3 files changed

+18
-20
lines changed

3 files changed

+18
-20
lines changed

src/ImageVisualizer14/ImageVisualizer.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,17 @@
1616
Target = typeof(System.Drawing.Bitmap),
1717
Description = "Image Visualizer")]
1818

19-
// System.Windows.Media.ImageSource, System.Windows.Media.Imaging.BitmapImage, System.Windows.Media.Imaging.BitmapSource
19+
// System.Windows.Media.Imaging.BitmapImage, System.Windows.Media.Imaging.BitmapSource
2020
[assembly: System.Diagnostics.DebuggerVisualizer(
2121
typeof(ImageVisualizer),
2222
typeof(ImageVisualizerObjectSource),
23-
Target = typeof(System.Windows.Media.ImageSource),
23+
Target = typeof(System.Windows.Media.Imaging.BitmapSource),
2424
Description = "Image Visualizer")]
2525

2626
namespace Aberus.VisualStudio.Debugger.ImageVisualizer
2727
{
2828
/// <summary>
29-
/// A Visualizer for <see cref="System.Windows.Media.ImageSource"/> and <see cref="System.Drawing.Bitmap"/>.
29+
/// A Visualizer for <see cref="System.Windows.Media.Imaging.BitmapSource"/> and <see cref="System.Drawing.Bitmap"/>.
3030
/// </summary>
3131
public class ImageVisualizer : DialogDebuggerVisualizer
3232
{

src/ImageVisualizer14/ImageVisualizerObjectSource.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ public class ImageVisualizerObjectSource : VisualizerObjectSource
99
{
1010
public override void GetData(object target, Stream outgoingData)
1111
{
12-
if (target is ImageSource image)
13-
base.GetData(new SerializableBitmapImage((BitmapSource)image), outgoingData);
12+
if (target is BitmapSource image)
13+
base.GetData(new SerializableBitmapImage(image), outgoingData);
1414
else
1515
base.GetData(target, outgoingData);
1616
}

src/ImageVisualizer14/SerializableBitmapImage.cs

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,9 @@ public class SerializableBitmapImage : ISerializable
1212
public BitmapSource bitmapSource;
1313
private readonly string expression;
1414

15-
public BitmapImage Image { get; private set; }
16-
1715
public SerializableBitmapImage(BitmapImage image)
1816
{
19-
this.Image = image;
17+
bitmapSource = image;
2018
}
2119

2220
public SerializableBitmapImage(BitmapSource source)
@@ -37,12 +35,14 @@ protected SerializableBitmapImage(SerializationInfo info, StreamingContext conte
3735
var stream = new MemoryStream(array);
3836
stream.Seek(0, SeekOrigin.Begin);
3937

40-
Image = new BitmapImage();
41-
Image.CacheOption = BitmapCacheOption.OnLoad;
42-
Image.BeginInit();
43-
Image.StreamSource = stream;
44-
Image.EndInit();
45-
Image.Freeze();
38+
var bitmapImage = new BitmapImage();
39+
bitmapImage.CacheOption = BitmapCacheOption.OnLoad;
40+
bitmapImage.BeginInit();
41+
bitmapImage.StreamSource = stream;
42+
bitmapImage.EndInit();
43+
bitmapImage.Freeze();
44+
45+
bitmapSource = bitmapImage;
4646
}
4747
}
4848
catch (ExternalException)
@@ -78,28 +78,26 @@ public static implicit operator SerializableBitmapImage(BitmapImage bitmapImage)
7878

7979
public static implicit operator BitmapImage(SerializableBitmapImage serializableBitmapImage)
8080
{
81-
return serializableBitmapImage.Image;
81+
return (BitmapImage)serializableBitmapImage.bitmapSource;
8282
}
8383

8484
//[SecurityPermission(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.SerializationFormatter)]
8585
void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context)
8686
{
87-
var source = Image ?? bitmapSource;
88-
89-
if (source != null)
87+
if (bitmapSource != null)
9088
{
9189
using (var memoryStream = new MemoryStream())
9290
{
9391
var encoder = new PngBitmapEncoder();
9492
//TODO try/catch
95-
encoder.Frames.Add(BitmapFrame.Create(source));
93+
encoder.Frames.Add(BitmapFrame.Create(bitmapSource));
9694
encoder.Save(memoryStream);
9795
memoryStream.Seek(0, SeekOrigin.Begin);
9896

9997
info.AddValue("Image", memoryStream.ToArray(), typeof(byte[]));
10098
}
10199

102-
info.AddValue("Name", source.ToString());
100+
info.AddValue("Name", bitmapSource.ToString());
103101
}
104102
}
105103

0 commit comments

Comments
 (0)