Skip to content

Commit 2afdf67

Browse files
committed
Merge branch 'release/v0.8' into master
2 parents 8a5833b + 48176a2 commit 2afdf67

File tree

60 files changed

+991
-129
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

60 files changed

+991
-129
lines changed

.github/FUNDING.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# These are supported funding model platforms
2+
3+
ko_fi: aberus
4+
5+
custom: ["https://www.paypal.me/aberus"]

README.md

Lines changed: 14 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,32 @@
11
# Debugger Image Visualizer for Visual Studio
22

3+
[![Visual Studio Marketplace Version](https://vsmarketplacebadge.apphb.com/version/AleksanderBerus.DebuggerImageVisualizerPreview.svg)](https://marketplace.visualstudio.com/items?itemName=AleksanderBerus.DebuggerImageVisualizerPreview)
4+
[![Visual Studio Marketplace Install](https://vsmarketplacebadge.apphb.com/installs-short/AleksanderBerus.DebuggerImageVisualizerPreview.svg)](https://marketplace.visualstudio.com/items?itemName=AleksanderBerus.DebuggerImageVisualizerPreview)
5+
36
Debugger Image Visualizer is a debug visualizer for Visual Studio. It allows you to visually view the graphic content of WPF's images [BitmapImage](https://msdn.microsoft.com/en-us/library/system.windows.media.imaging.bitmapimage.aspx), [BitmapSource](https://docs.microsoft.com/en-us/dotnet/api/system.windows.media.imaging.bitmapsource), [ImageSource](https://docs.microsoft.com/en-us/dotnet/api/system.windows.media.imagesource), and WinForms' images [Bitmap](https://msdn.microsoft.com/en-us/library/system.drawing.bitmap.aspx) during debugging. Supports zooming and paning while previewing images.
47

5-
[Download this extension](https://marketplace.visualstudio.com/items?itemName=AleksanderBerus.DebuggerImageVisualizerPreview) on Visual Studio Marketplace.
8+
If you want to support the developement you could consider buying me a coffee.
9+
10+
[![ko-fi](https://www.ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/M4M32DOPK)
11+
12+
13+
![](https://aleksanderberus.gallerycdn.vsassets.io/extensions/aleksanderberus/debuggerimagevisualizerpreview/0.6.0/1556274284741/219157/1/Preview.gif)
614

7-
This extension works with:
15+
## Works with
816
* Visual Studio 2010
917
* Visual Studio 2012
1018
* Visual Studio 2013
1119
* Visual Studio 2015
1220
* Visual Studio 2017
1321
* Visual Studio 2019
1422

15-
![](https://aleksanderberus.gallerycdn.vsassets.io/extensions/aleksanderberus/debuggerimagevisualizerpreview/0.6.0/1556274284741/219157/1/Preview.gif)
16-
17-
## Changelog
18-
19-
These are the changes to each version that has been released.
20-
21-
### 0.6
23+
## Install
2224

23-
* Support for VS 2019
25+
Install the latest version of Debugger Image Visualizer for Visual Studio from the [Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=AleksanderBerus.DebuggerImageVisualizerPreview).
2426

25-
### 0.5
26-
27-
* Returned VS2010 support
28-
* Added support of WPF ImageSource / BitmapSource
29-
* Added support for custom ToBitmap() method
30-
31-
### 0.4
32-
33-
* VS Package (VS2010 support removed due to limitation on VSIX format)
34-
* UI fixes
35-
* Fixes for BitmapImage serialization
36-
37-
### 0.3
38-
39-
* Support for VS2017
40-
* Bug fixed (Visualizer only worked in VS2015)
41-
42-
### 0.2
43-
44-
* Support for VS 2013 and 15
45-
46-
### 0.1
27+
## Changelog
4728

48-
* First preview release
29+
All changes to each version that has been released are available in [Releases](../../releases).
4930

5031
## Contribute
5132

ImageVisualizer.sln renamed to src/ImageVisualizer.sln

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,9 @@ Global
109109
{FB4C20B3-659C-4D7E-9832-7BFB165DF2E0}.Release|x86.ActiveCfg = Release|Any CPU
110110
{FB4C20B3-659C-4D7E-9832-7BFB165DF2E0}.Release|x86.Build.0 = Release|Any CPU
111111
{49BAF40F-9365-482B-BC8E-43557931B415}.Debug|Any CPU.ActiveCfg = Debug|x86
112+
{49BAF40F-9365-482B-BC8E-43557931B415}.Debug|Any CPU.Build.0 = Debug|x86
112113
{49BAF40F-9365-482B-BC8E-43557931B415}.Debug|x86.ActiveCfg = Debug|x86
114+
{49BAF40F-9365-482B-BC8E-43557931B415}.Debug|x86.Build.0 = Debug|x86
113115
{49BAF40F-9365-482B-BC8E-43557931B415}.Release|Any CPU.ActiveCfg = Release|x86
114116
{49BAF40F-9365-482B-BC8E-43557931B415}.Release|Any CPU.Build.0 = Release|x86
115117
{49BAF40F-9365-482B-BC8E-43557931B415}.Release|x86.ActiveCfg = Release|x86

ImageVisualizer10/ImageVisualizer10.csproj renamed to src/ImageVisualizer10/ImageVisualizer10.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<ProjectGuid>{8377674C-A112-4DC9-9745-926434AE7B2E}</ProjectGuid>
88
<OutputType>Library</OutputType>
99
<AppDesignerFolder>Properties</AppDesignerFolder>
10-
<RootNamespace>ImageVisualizer</RootNamespace>
10+
<RootNamespace>Aberus.VisualStudio.Debugger.ImageVisualizer</RootNamespace>
1111
<AssemblyName>Aberus.VisualStudio.Debugger.ImageVisualizer</AssemblyName>
1212
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
1313
<FileAlignment>512</FileAlignment>
@@ -74,8 +74,8 @@
7474
<Compile Include="..\ImageVisualizer14\SerializableBitmapImage.cs">
7575
<Link>SerializableBitmapImage.cs</Link>
7676
</Compile>
77-
<Compile Include="..\ImageVisualizer14\Visualizer.cs">
78-
<Link>Visualizer.cs</Link>
77+
<Compile Include="..\ImageVisualizer14\ImageVisualizer.cs">
78+
<Link>ImageVisualizer.cs</Link>
7979
</Compile>
8080
</ItemGroup>
8181
<ItemGroup>

ImageVisualizer11/ImageVisualizer11.csproj renamed to src/ImageVisualizer11/ImageVisualizer11.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<ProjectGuid>{496B16D7-54D1-418B-951B-71DD377156A7}</ProjectGuid>
88
<OutputType>Library</OutputType>
99
<AppDesignerFolder>Properties</AppDesignerFolder>
10-
<RootNamespace>ImageVisualizer</RootNamespace>
10+
<RootNamespace>Aberus.VisualStudio.Debugger.ImageVisualizer</RootNamespace>
1111
<AssemblyName>Aberus.VisualStudio.Debugger.ImageVisualizer</AssemblyName>
1212
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
1313
<FileAlignment>512</FileAlignment>
@@ -74,8 +74,8 @@
7474
<Compile Include="..\ImageVisualizer14\SerializableBitmapImage.cs">
7575
<Link>SerializableBitmapImage.cs</Link>
7676
</Compile>
77-
<Compile Include="..\ImageVisualizer14\Visualizer.cs">
78-
<Link>Visualizer.cs</Link>
77+
<Compile Include="..\ImageVisualizer14\ImageVisualizer.cs">
78+
<Link>ImageVisualizer.cs</Link>
7979
</Compile>
8080
</ItemGroup>
8181
<ItemGroup>

ImageVisualizer12/ImageVisualizer12.csproj renamed to src/ImageVisualizer12/ImageVisualizer12.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<ProjectGuid>{2B4306BF-2E14-4E75-AA09-5423E906C5D8}</ProjectGuid>
88
<OutputType>Library</OutputType>
99
<AppDesignerFolder>Properties</AppDesignerFolder>
10-
<RootNamespace>ImageVisualizer</RootNamespace>
10+
<RootNamespace>Aberus.VisualStudio.Debugger.ImageVisualizer</RootNamespace>
1111
<AssemblyName>Aberus.VisualStudio.Debugger.ImageVisualizer</AssemblyName>
1212
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
1313
<FileAlignment>512</FileAlignment>
@@ -74,8 +74,8 @@
7474
<Compile Include="..\ImageVisualizer14\SerializableBitmapImage.cs">
7575
<Link>SerializableBitmapImage.cs</Link>
7676
</Compile>
77-
<Compile Include="..\ImageVisualizer14\Visualizer.cs">
78-
<Link>Visualizer.cs</Link>
77+
<Compile Include="..\ImageVisualizer14\ImageVisualizer.cs">
78+
<Link>ImageVisualizer.cs</Link>
7979
</Compile>
8080
</ItemGroup>
8181
<ItemGroup>

ImageVisualizer14/ImageControl.xaml renamed to src/ImageVisualizer14/ImageControl.xaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<UserControl x:Class="ImageVisualizer.ImageControl"
1+
<UserControl x:Class="Aberus.VisualStudio.Debugger.ImageVisualizer.ImageControl"
22
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
33
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
44
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

ImageVisualizer14/ImageControl.xaml.cs renamed to src/ImageVisualizer14/ImageControl.xaml.cs

Lines changed: 4 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
using System.Windows.Media;
88
using System.Windows.Media.Imaging;
99

10-
namespace ImageVisualizer
10+
namespace Aberus.VisualStudio.Debugger.ImageVisualizer
1111
{
1212
/// <summary>
1313
/// Interaction logic for ImageControl.xaml
@@ -17,66 +17,18 @@ public partial class ImageControl : UserControl
1717
Point? lastMousePositionOnTarget;
1818
Point? lastDragPoint;
1919

20-
[DllImport("gdi32")]
21-
[return: MarshalAs(UnmanagedType.Bool)]
22-
static extern bool DeleteObject(IntPtr hObject);
23-
2420
double _zoomValue = 1.0;
2521

2622
public ImageControl()
2723
{
2824
InitializeComponent();
2925
}
3026

31-
public void SetImage(object sourceBitmap)
27+
public void SetImage(ImageSource imageSource)
3228
{
33-
if (sourceBitmap != null)
29+
if (imageSource != null)
3430
{
35-
#if DEBUG
36-
string expression = sourceBitmap.ToString();
37-
#endif
38-
39-
var method = sourceBitmap.GetType().GetMethod("ToBitmap", new Type[] { });
40-
if (method != null)
41-
{
42-
sourceBitmap = method.Invoke(sourceBitmap, null);
43-
}
44-
45-
if (sourceBitmap is System.Drawing.Bitmap)
46-
{
47-
BitmapSource bitmap = null;
48-
49-
var hObject = ((System.Drawing.Bitmap)sourceBitmap).GetHbitmap();
50-
51-
try
52-
{
53-
bitmap = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
54-
hObject,
55-
IntPtr.Zero,
56-
Int32Rect.Empty,
57-
BitmapSizeOptions.FromEmptyOptions());
58-
}
59-
catch(Win32Exception)
60-
{
61-
bitmap = null;
62-
}
63-
finally
64-
{
65-
DeleteObject(hObject);
66-
}
67-
68-
if(bitmap != null)
69-
{
70-
DisplayImage.Width = bitmap.Width;
71-
DisplayImage.Height = bitmap.Height;
72-
73-
DisplayImage.Source = bitmap;
74-
}
75-
}
76-
else if (sourceBitmap is SerializableBitmapImage source)
77-
{
78-
DisplayImage.Source = source;
79-
}
31+
DisplayImage.Source = imageSource;
8032
}
8133
}
8234

ImageVisualizer14/ImageForm.Designer.cs renamed to src/ImageVisualizer14/ImageForm.Designer.cs

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ImageVisualizer14/ImageForm.cs renamed to src/ImageVisualizer14/ImageForm.cs

Lines changed: 58 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,20 @@
11
using System;
2+
using System.ComponentModel;
23
using System.Drawing;
4+
using System.Runtime.InteropServices;
5+
using System.Windows;
36
using System.Windows.Forms;
7+
using System.Windows.Media.Imaging;
48
using Microsoft.VisualStudio.DebuggerVisualizers;
59

6-
namespace ImageVisualizer
10+
namespace Aberus.VisualStudio.Debugger.ImageVisualizer
711
{
812
public partial class ImageForm : Form
913
{
14+
[DllImport("gdi32")]
15+
[return: MarshalAs(UnmanagedType.Bool)]
16+
static extern bool DeleteObject(IntPtr hObject);
17+
1018
public static Font UIFont
1119
{
1220
get
@@ -26,7 +34,7 @@ public static Font UIFont
2634
#elif VS16
2735
var dteProgID = "VisualStudio.DTE.16.0";
2836
#endif
29-
var dte = (EnvDTE.DTE)System.Runtime.InteropServices.Marshal.GetActiveObject(dteProgID);
37+
var dte = (EnvDTE.DTE)Marshal.GetActiveObject(dteProgID);
3038
var fontProperty = dte.Properties["FontsAndColors", "Dialogs and Tool Windows"];
3139
if (fontProperty != null)
3240
{
@@ -39,7 +47,7 @@ public static Font UIFont
3947
return font;
4048
}
4149

42-
return SystemFonts.DefaultFont;
50+
return System.Drawing.SystemFonts.DefaultFont;
4351
}
4452
}
4553

@@ -57,7 +65,53 @@ public ImageForm(IVisualizerObjectProvider objectProvider)
5765
this.txtExpression.Font = UIFont;
5866
this.btnClose.Font = UIFont;
5967

60-
imageControl.SetImage(objectProvider.GetObject());
68+
object objectBitmap = objectProvider.GetObject();
69+
if (objectBitmap != null)
70+
{
71+
#if DEBUG
72+
string expression = objectBitmap.ToString();
73+
#endif
74+
75+
var method = objectBitmap.GetType().GetMethod("ToBitmap", new Type[] { });
76+
if (method != null)
77+
{
78+
objectBitmap = method.Invoke(objectBitmap, null);
79+
}
80+
81+
BitmapSource bitmapSource = null;
82+
83+
if (objectBitmap is Bitmap)
84+
{
85+
var hObject = ((Bitmap)objectBitmap).GetHbitmap();
86+
87+
try
88+
{
89+
bitmapSource = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
90+
hObject,
91+
IntPtr.Zero,
92+
Int32Rect.Empty,
93+
BitmapSizeOptions.FromEmptyOptions());
94+
}
95+
catch (Win32Exception)
96+
{
97+
bitmapSource = null;
98+
}
99+
finally
100+
{
101+
DeleteObject(hObject);
102+
}
103+
}
104+
else if (objectBitmap is SerializableBitmapImage serializableBitmapImage)
105+
{
106+
bitmapSource = serializableBitmapImage;
107+
}
108+
109+
if (bitmapSource != null)
110+
{
111+
imageControl.SetImage(bitmapSource);
112+
}
113+
}
114+
61115
txtExpression.Text = objectProvider.GetObject().ToString();
62116
}
63117

0 commit comments

Comments
 (0)