Skip to content

Commit 87ef2a1

Browse files
committed
Fixed ImageShape rendering
- Correctly handle unresolved resources. - Issue: Tests/Images/example4.8.svg - Added missing image file: CodeProjectLogo.jpg - All exceptions in /Test/Images are now resolved. Three files are still not rendered.
1 parent d92772e commit 87ef2a1

File tree

4 files changed

+29
-13
lines changed

4 files changed

+29
-13
lines changed

Samples/ClipArtViewer/MainWindow.xaml.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,8 +93,6 @@ protected override void OnContentRendered(EventArgs e)
9393

9494
ListFiles();
9595
DataContext = this;
96-
97-
tabPages.SelectedIndex = 0;
9896
}
9997

10098
private void OnMainWindowLoaded(object sender, RoutedEventArgs e)
@@ -109,6 +107,9 @@ private void OnMainWindowLoaded(object sender, RoutedEventArgs e)
109107
}
110108

111109
Trace.WriteLine("");
110+
111+
m_filelist.SelectedIndex = 0;
112+
tabPages.SelectedIndex = 0;
112113
}
113114

114115
private void OnMainWindowClosing(object sender, System.ComponentModel.CancelEventArgs e)

Source/SVGImage/SVG/FileLoaders/FileSystemLoader.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.IO;
3+
using System.Diagnostics;
34

45
namespace DotNetProjects.SVGImage.SVG.FileLoaders
56
{
@@ -22,6 +23,9 @@ public Stream LoadFile(string hRef, string svgFilename)
2223
string filename = Path.Combine(path, hRef);
2324
if (File.Exists(filename))
2425
return File.OpenRead(filename);
26+
27+
Trace.TraceWarning("Unresolved URI: " + hRef);
28+
2529
return null;
2630
}
2731
}

Source/SVGImage/SVG/Shapes/ImageShape.cs

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,33 +22,44 @@ public class ImageShape : Shape
2222

2323
public ImageShape(SVG svg, XmlNode node) : base(svg, node)
2424
{
25-
this.X = XmlUtil.AttrValue(node, "x", 0, svg.Size.Width);
26-
this.Y = XmlUtil.AttrValue(node, "y", 0, svg.Size.Height);
27-
this.Width = XmlUtil.AttrValue(node, "width", 0, svg.Size.Width);
25+
this.X = XmlUtil.AttrValue(node, "x", 0, svg.Size.Width);
26+
this.Y = XmlUtil.AttrValue(node, "y", 0, svg.Size.Height);
27+
this.Width = XmlUtil.AttrValue(node, "width", 0, svg.Size.Width);
2828
this.Height = XmlUtil.AttrValue(node, "height", 0, svg.Size.Height);
2929
string hRef = XmlUtil.AttrValue(node, "xlink:href", string.Empty);
3030
if (hRef.Length > 0)
3131
{
3232
try
3333
{
34-
BitmapImage b = new BitmapImage();
35-
b.BeginInit();
36-
if (hRef.StartsWith("data:image/png;base64"))
34+
Stream imageStream = null;
35+
if (hRef.StartsWith("data:image/png;base64", StringComparison.OrdinalIgnoreCase))
3736
{
38-
b.StreamSource = new MemoryStream(Convert.FromBase64String(hRef.Substring("data:image/png;base64,".Length)));
37+
var embeddedImage = hRef.Substring("data:image/png;base64,".Length);
38+
if (!string.IsNullOrWhiteSpace(embeddedImage))
39+
{
40+
imageStream = new MemoryStream(Convert.FromBase64String(embeddedImage));
41+
}
3942
}
4043
else
4144
{
4245
if (svg.ExternalFileLoader != null)
43-
b.StreamSource = svg.ExternalFileLoader.LoadFile(hRef, svg.Filename);
46+
{
47+
imageStream = svg.ExternalFileLoader.LoadFile(hRef, svg.Filename);
48+
}
4449
}
50+
if (imageStream != null)
51+
{
52+
BitmapImage b = new BitmapImage();
53+
b.BeginInit();
54+
b.StreamSource = imageStream;
55+
b.EndInit();
4556

46-
b.EndInit();
47-
this.ImageSource = b;
57+
this.ImageSource = b;
58+
}
4859
}
4960
catch (Exception ex)
5061
{
51-
Trace.TraceError(ex.Message);
62+
Trace.TraceError(ex.ToString());
5263
}
5364
}
5465
}

Tests/Images/CodeProjectLogo.jpg

8.18 KB
Loading

0 commit comments

Comments
 (0)