├── .editorconfig ├── .gitattributes ├── .gitignore ├── Doc ├── DetailView.PNG ├── DetailViewXaml.PNG ├── Icons in WPF.docx ├── MainView.PNG └── SvgToXaml.docx ├── IconResources ├── BrushProps.cs ├── IconResources.csproj ├── Images │ ├── Icons.cs │ ├── Icons.tt │ ├── Icons.xaml │ └── Svg │ │ ├── 3d-view-icon.svg │ │ ├── Icons.html │ │ ├── JOG.svg │ │ ├── Update.cmd │ │ ├── cloud-3-icon.svg │ │ └── images.html ├── Properties │ └── AssemblyInfo.cs └── Themes │ └── Generic.xaml ├── Licence.txt ├── README.md ├── SvgConverter ├── CmdLineHandler.cs ├── CmdLineTarget.cs ├── ConvertedSvgData.cs ├── ConverterLogic.cs ├── FileUtils.cs ├── Properties │ └── AssemblyInfo.cs ├── ResKeyInfo.cs ├── SvgConverter.csproj ├── app.config └── packages.config ├── SvgConverterTest ├── CommandLineTests.cs ├── ConverterTests.cs ├── FileUtilsTests.cs ├── Properties │ └── AssemblyInfo.cs ├── SvgConverterTest.csproj ├── SvgzTest.cs ├── T4Methods.cs ├── TestFiles │ ├── 3d-view-icon.svg │ ├── Expected │ │ ├── ConvertFileToDrawingGroup2.xaml │ │ ├── ConvertFileToDrawingGroupWithRuntime_JOG.svg.xaml │ │ ├── ConvertFileToDrawingGroupWithRuntime_cloud-3-icon.svg.xaml │ │ ├── ConvertFileToDrawingGroup_3d-view-icon.svg.xaml │ │ ├── ConvertFileToDrawingGroup_JOG.svg.xaml │ │ ├── ConvertFileToDrawingGroup_cloud-3-icon.svg.xaml │ │ ├── ConvertFileToDrawingImage_3d-view-icon.svg.xaml │ │ ├── ConvertFileToDrawingImage_JOG.svg.xaml │ │ ├── ConvertFileToDrawingImage_cloud-3-icon.svg.xaml │ │ ├── Handwheel.xaml │ │ ├── Handwheel1.xaml │ │ ├── Handwheel2.xaml │ │ ├── Handwheel3.xaml │ │ ├── SvgDirToXamlTest_withNamePrefix.xaml │ │ ├── SvgDirToXamlTest_withUseCompResKey.xaml │ │ └── SvgDirToXaml_with_defaultSettingsTest.xaml │ ├── Handwheel.svg │ ├── Images.html │ ├── JOG.svg │ ├── Readme.txt │ ├── Subfolder1 │ │ ├── 3d-view-b-icon.svg │ │ ├── Handwheel.svg │ │ ├── Subfolder2 │ │ │ └── cloud-3-a-icon.svg │ │ └── images.html │ ├── cloud-3-icon.svg │ ├── example.svgz │ └── xamlUntidy.xaml ├── app.config └── packages.config ├── SvgToXaml.sln ├── SvgToXaml.sln.DotSettings ├── SvgToXaml ├── App.xaml ├── App.xaml.cs ├── Command │ ├── DelegateCommand.cs │ ├── DelegateCommandBase.cs │ ├── IActiveAware.cs │ └── WeakEventHandlerManager.cs ├── CustomDefined.targets ├── DetailWindow.xaml ├── DetailWindow.xaml.cs ├── Explorer │ ├── FolderTree.xaml │ ├── FolderTree.xaml.cs │ ├── Images │ │ ├── diskdrive.png │ │ └── folder.png │ └── TreeViewItemProps.cs ├── Images │ ├── icon.ico │ ├── icon.png │ ├── icon.svg │ └── icon16.png ├── Infrastructure │ ├── DispatcherExtensions.cs │ ├── HConsoleHelper.cs │ ├── InvertableBooleanToVisibilityConverter.cs │ └── ObservableCollectionSafe.cs ├── MainWindow.xaml ├── MainWindow.xaml.cs ├── Payload │ └── T4Template.tt ├── Program.cs ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings ├── SvgToXaml.csproj ├── SvgToXaml.csproj.DotSettings ├── TestBatch.cmd ├── TextViewer │ └── XmlViewer.cs ├── ViewModels │ ├── BindableBase.cs │ ├── GraphicImageViewModel.cs │ ├── ImageBaseViewModel.cs │ ├── SvgImageViewModel.cs │ ├── SvgImagesViewModel.cs │ └── ViewModelBase.cs ├── WrapPanel │ └── VirtualizingWrapPanel.cs ├── app.config ├── icon.ico └── packages.config ├── WpfDemoApp ├── App.xaml ├── App.xaml.cs ├── MainWindow.xaml ├── MainWindow.xaml.cs ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings ├── WpfDemoApp.csproj └── app.config └── packages ├── AvalonEdit.5.0.2 ├── AvalonEdit.5.0.2.nupkg └── lib │ ├── .gitignore │ └── Net40 │ ├── ICSharpCode.AvalonEdit.dll │ └── ICSharpCode.AvalonEdit.xml ├── BKEDV.CommandLineParser.1.0.4.0 ├── BKEDV.CommandLineParser.1.0.4.0.nupkg └── lib │ └── net40 │ └── CommandLineParser.dll ├── FluentAssertions.3.3.0 ├── FluentAssertions.3.3.0.nupkg └── lib │ ├── net40 │ ├── FluentAssertions.Core.dll │ ├── FluentAssertions.Core.xml │ ├── FluentAssertions.dll │ └── FluentAssertions.xml │ ├── net45 │ ├── FluentAssertions.Core.dll │ ├── FluentAssertions.Core.xml │ ├── FluentAssertions.dll │ └── FluentAssertions.xml │ ├── portable-monotouch+monoandroid+xamarin.ios │ ├── FluentAssertions.Core.dll │ └── FluentAssertions.Core.xml │ ├── portable-net40+sl5+win8+wp8+wpa81 │ ├── FluentAssertions.Core.dll │ ├── FluentAssertions.Core.xml │ ├── FluentAssertions.XML │ └── FluentAssertions.dll │ ├── portable-win81+wpa81 │ ├── FluentAssertions.Core.dll │ ├── FluentAssertions.Core.xml │ ├── FluentAssertions.dll │ └── FluentAssertions.xml │ ├── sl5 │ ├── FluentAssertions.Core.dll │ ├── FluentAssertions.Core.xml │ ├── FluentAssertions.dll │ ├── FluentAssertions.xml │ ├── Microsoft.CSharp.dll │ ├── Microsoft.CSharp.xml │ ├── Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll │ ├── Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.xml │ ├── System.Xml.Linq.dll │ ├── System.Xml.Linq.xml │ ├── de │ │ ├── Microsoft.CSharp.resources.dll │ │ └── System.Xml.Linq.resources.dll │ ├── es │ │ ├── Microsoft.CSharp.resources.dll │ │ └── System.Xml.Linq.resources.dll │ ├── fr │ │ ├── Microsoft.CSharp.resources.dll │ │ └── System.Xml.Linq.resources.dll │ ├── it │ │ ├── Microsoft.CSharp.resources.dll │ │ └── System.Xml.Linq.resources.dll │ ├── ja │ │ ├── Microsoft.CSharp.resources.dll │ │ └── System.Xml.Linq.resources.dll │ ├── ko │ │ ├── Microsoft.CSharp.resources.dll │ │ └── System.Xml.Linq.resources.dll │ ├── ru │ │ ├── Microsoft.CSharp.resources.dll │ │ └── System.Xml.Linq.resources.dll │ ├── zh-Hans │ │ ├── Microsoft.CSharp.resources.dll │ │ └── System.Xml.Linq.resources.dll │ └── zh-Hant │ │ ├── Microsoft.CSharp.resources.dll │ │ └── System.Xml.Linq.resources.dll │ ├── win8 │ ├── FluentAssertions.Core.dll │ ├── FluentAssertions.Core.xml │ ├── FluentAssertions.XML │ └── FluentAssertions.dll │ └── wp8 │ ├── FluentAssertions.Core.dll │ ├── FluentAssertions.Core.xml │ ├── FluentAssertions.dll │ └── FluentAssertions.xml ├── NUnit.2.6.4 ├── NUnit.2.6.4.nupkg ├── lib │ ├── nunit.framework.dll │ └── nunit.framework.xml └── license.txt ├── SharpVectors.Reloaded.1.2.0 ├── .signature.p7s ├── SharpVectors.Reloaded.1.2.0.nupkg └── lib │ └── net40 │ ├── SharpVectors.Converters.Wpf.dll │ ├── SharpVectors.Converters.Wpf.xml │ ├── SharpVectors.Core.dll │ ├── SharpVectors.Core.xml │ ├── SharpVectors.Css.dll │ ├── SharpVectors.Css.xml │ ├── SharpVectors.Dom.dll │ ├── SharpVectors.Dom.xml │ ├── SharpVectors.Model.dll │ ├── SharpVectors.Model.xml │ ├── SharpVectors.Rendering.Gdi.dll │ ├── SharpVectors.Rendering.Gdi.xml │ ├── SharpVectors.Rendering.Wpf.dll │ ├── SharpVectors.Rendering.Wpf.xml │ ├── SharpVectors.Runtime.Wpf.dll │ └── SharpVectors.Runtime.Wpf.xml └── repositories.config /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig is awesome: http://EditorConfig.org 2 | 3 | # top-most EditorConfig file 4 | root = true 5 | 6 | # 4 space indentation 7 | [*.cs] 8 | indent_style = space 9 | indent_size = 4 -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | # Set default behavior to DISABLE normalizing line endings. 3 | # No matter which setting the core.autocrlf on each machine has. (BK) 4 | ############################################################################### 5 | * -text 6 | 7 | 8 | 9 | 10 | ############################################################################### 11 | # Set default behavior for command prompt diff. 12 | # 13 | # This is need for earlier builds of msysgit that does not have it on by 14 | # default for csharp files. 15 | # Note: This is only used by command line 16 | ############################################################################### 17 | #*.cs diff=csharp 18 | 19 | ############################################################################### 20 | # Set the merge driver for project and solution files 21 | # 22 | # Merging from the command prompt will add diff markers to the files if there 23 | # are conflicts (Merging from VS is not affected by the settings below, in VS 24 | # the diff markers are never inserted). Diff markers may cause the following 25 | # file extensions to fail to load in VS. An alternative would be to treat 26 | # these files as binary and thus will always conflict and require user 27 | # intervention with every merge. To do so, just uncomment the entries below 28 | ############################################################################### 29 | #*.sln merge=binary 30 | #*.csproj merge=binary 31 | #*.vbproj merge=binary 32 | #*.vcxproj merge=binary 33 | #*.vcproj merge=binary 34 | #*.dbproj merge=binary 35 | #*.fsproj merge=binary 36 | #*.lsproj merge=binary 37 | #*.wixproj merge=binary 38 | #*.modelproj merge=binary 39 | #*.sqlproj merge=binary 40 | #*.wwaproj merge=binary 41 | 42 | ############################################################################### 43 | # behavior for image files 44 | # 45 | # image files are treated as binary by default. 46 | ############################################################################### 47 | #*.jpg binary 48 | #*.png binary 49 | #*.gif binary 50 | 51 | ############################################################################### 52 | # diff behavior for common document formats 53 | # 54 | # Convert binary document formats to text before diffing them. This feature 55 | # is only available from the command line. Turn it on by uncommenting the 56 | # entries below. 57 | ############################################################################### 58 | #*.doc diff=astextplain 59 | #*.DOC diff=astextplain 60 | #*.docx diff=astextplain 61 | #*.DOCX diff=astextplain 62 | #*.dot diff=astextplain 63 | #*.DOT diff=astextplain 64 | #*.pdf diff=astextplain 65 | #*.PDF diff=astextplain 66 | #*.rtf diff=astextplain 67 | #*.RTF diff=astextplain 68 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/.gitignore -------------------------------------------------------------------------------- /Doc/DetailView.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/Doc/DetailView.PNG -------------------------------------------------------------------------------- /Doc/DetailViewXaml.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/Doc/DetailViewXaml.PNG -------------------------------------------------------------------------------- /Doc/Icons in WPF.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/Doc/Icons in WPF.docx -------------------------------------------------------------------------------- /Doc/MainView.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/Doc/MainView.PNG -------------------------------------------------------------------------------- /IconResources/IconResources.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {618E080B-86D8-4F12-B141-EFFE222D6E9F} 8 | Library 9 | Properties 10 | IconResources 11 | IconResources 12 | v4.5 13 | 512 14 | 15 | 16 | true 17 | full 18 | false 19 | bin\Debug\ 20 | DEBUG;TRACE 21 | prompt 22 | 4 23 | 24 | 25 | pdbonly 26 | true 27 | bin\Release\ 28 | TRACE 29 | prompt 30 | 4 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | True 50 | True 51 | Icons.tt 52 | 53 | 54 | 55 | 56 | 57 | TextTemplatingFileGenerator 58 | Icons.cs 59 | 60 | 61 | 62 | 63 | MSBuild:Compile 64 | Designer 65 | 66 | 67 | MSBuild:Compile 68 | Designer 69 | 70 | 71 | 72 | 73 | 74 | 75 | 82 | -------------------------------------------------------------------------------- /IconResources/Images/Icons.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Diagnostics.CodeAnalysis; 3 | using System.Windows; 4 | 5 | namespace IconResources.Images 6 | { 7 | [SuppressMessage("ReSharper", "InconsistentNaming")] 8 | public static class Icons 9 | { 10 | private static readonly ComponentResourceKey cloud_3_iconGeometryKeyCompResKey = MakeKey("Icons.cloud_3_iconGeometryKey"); 11 | public static ResourceKey cloud_3_iconGeometryKey => cloud_3_iconGeometryKeyCompResKey; 12 | 13 | private static readonly ComponentResourceKey cloud_3_iconDrawingGroupKeyCompResKey = MakeKey("Icons.cloud_3_iconDrawingGroupKey"); 14 | public static ResourceKey cloud_3_iconDrawingGroupKey => cloud_3_iconDrawingGroupKeyCompResKey; 15 | 16 | private static readonly ComponentResourceKey cloud_3_iconDrawingImageKeyCompResKey = MakeKey("Icons.cloud_3_iconDrawingImageKey"); 17 | public static ResourceKey cloud_3_iconDrawingImageKey => cloud_3_iconDrawingImageKeyCompResKey; 18 | 19 | private static readonly ComponentResourceKey _3d_view_iconGeometryKeyCompResKey = MakeKey("Icons._3d_view_iconGeometryKey"); 20 | public static ResourceKey _3d_view_iconGeometryKey => _3d_view_iconGeometryKeyCompResKey; 21 | 22 | private static readonly ComponentResourceKey _3d_view_iconDrawingGroupKeyCompResKey = MakeKey("Icons._3d_view_iconDrawingGroupKey"); 23 | public static ResourceKey _3d_view_iconDrawingGroupKey => _3d_view_iconDrawingGroupKeyCompResKey; 24 | 25 | private static readonly ComponentResourceKey _3d_view_iconDrawingImageKeyCompResKey = MakeKey("Icons._3d_view_iconDrawingImageKey"); 26 | public static ResourceKey _3d_view_iconDrawingImageKey => _3d_view_iconDrawingImageKeyCompResKey; 27 | 28 | private static readonly ComponentResourceKey JOGGeometry1KeyCompResKey = MakeKey("Icons.JOGGeometry1Key"); 29 | public static ResourceKey JOGGeometry1Key => JOGGeometry1KeyCompResKey; 30 | 31 | private static readonly ComponentResourceKey JOGGeometry2KeyCompResKey = MakeKey("Icons.JOGGeometry2Key"); 32 | public static ResourceKey JOGGeometry2Key => JOGGeometry2KeyCompResKey; 33 | 34 | private static readonly ComponentResourceKey JOGDrawingGroupKeyCompResKey = MakeKey("Icons.JOGDrawingGroupKey"); 35 | public static ResourceKey JOGDrawingGroupKey => JOGDrawingGroupKeyCompResKey; 36 | 37 | private static readonly ComponentResourceKey JOGDrawingImageKeyCompResKey = MakeKey("Icons.JOGDrawingImageKey"); 38 | public static ResourceKey JOGDrawingImageKey => JOGDrawingImageKeyCompResKey; 39 | 40 | private static ComponentResourceKey MakeKey(object id) 41 | { 42 | return new ComponentResourceKey(typeof(Icons), id); 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /IconResources/Images/Icons.tt: -------------------------------------------------------------------------------- 1 | <#@ template debug="true" hostSpecific="true" #> 2 | <#@ output extension=".cs" #> 3 | <#@ Assembly Name="System.Core.dll" #> 4 | <#@ Assembly Name="System.Xml.dll" #> 5 | <#@ Assembly Name="System.Xml.Linq.dll" #> 6 | <#@ Assembly Name="System.Windows.Forms.dll" #> 7 | <#@ import namespace="System" #> 8 | <#@ import namespace="System.IO" #> 9 | <#@ import namespace="System.Diagnostics" #> 10 | <#@ import namespace="System.Linq" #> 11 | <#@ import namespace="System.Xml.Linq" #> 12 | <#@ import namespace="System.Collections" #> 13 | <#@ import namespace="System.Collections.Generic" #><# 14 | string xamlFile = Path.ChangeExtension(this.Host.TemplateFile, ".xaml"); 15 | string nameSpace; 16 | string prefix; 17 | var keyNames = KeysFromXaml(xamlFile, out nameSpace, out prefix); 18 | 19 | #>using System.Diagnostics.CodeAnalysis; 20 | using System.Windows; 21 | 22 | namespace <#= nameSpace #> 23 | { 24 | [SuppressMessage("ReSharper", "InconsistentNaming")] 25 | public static class <#= prefix #> 26 | { 27 | <# BuildComponentKeys(keyNames, prefix); 28 | #> 29 | private static ComponentResourceKey MakeKey(object id) 30 | { 31 | return new ComponentResourceKey(typeof(<#= prefix #>), id); 32 | } 33 | } 34 | } 35 | <#+ 36 | void BuildComponentKeys(IEnumerable keyNames, string prefix) 37 | { 38 | foreach (var name in keyNames) 39 | { 40 | #> private static readonly ComponentResourceKey <#= name #>CompResKey = MakeKey("<#= prefix #>.<#= name #>"); 41 | public static ResourceKey <#= name #> => <#= name #>CompResKey; 42 | 43 | <#+ } 44 | } 45 | 46 | public static IEnumerable KeysFromXaml(string fileName, out string nameSpace, out string prefix) 47 | { 48 | var doc = XDocument.Load(fileName); 49 | XNamespace xamlNs = "http://schemas.microsoft.com/winfx/2006/xaml"; 50 | 51 | nameSpace = doc.Root.LastAttribute.Value; 52 | nameSpace = nameSpace.Remove(0, "clr-namespace:".Length); 53 | 54 | var keys = doc.Root.Elements().Attributes(xamlNs + "Key").Select(a => a.Value).ToArray(); 55 | //keys have this form: { x: Static NameSpaceName:XamlName.Color1} 56 | 57 | //get Prefix 58 | prefix = "unknownPrefix"; 59 | var first = keys.FirstOrDefault(); 60 | if (first != null) 61 | { 62 | var p1 = first.LastIndexOf(":"); 63 | var p2 = first.LastIndexOf("}"); 64 | if (p1 < p2) 65 | prefix = first.Substring(p1 + 1, p2 - p1 - 1).Split('.').FirstOrDefault(); 66 | } 67 | 68 | //keynames 69 | return keys.Select(key => 70 | { 71 | var p1 = key.LastIndexOf("."); 72 | var p2 = key.LastIndexOf("}"); 73 | if (p1 < p2) 74 | return key.Substring(p1 + 1, p2 - p1 - 1); 75 | else 76 | return key; 77 | }).ToArray(); 78 | } 79 | 80 | #> -------------------------------------------------------------------------------- /IconResources/Images/Svg/3d-view-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 13 | 14 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /IconResources/Images/Svg/Icons.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Browse svg images 5 | 6 | Images in file: .\Icons
7 | -------------------------------------------------------------------------------- /IconResources/Images/Svg/Update.cmd: -------------------------------------------------------------------------------- 1 | ..\..\..\SvgToXaml\bin\Debug\SvgToXaml.exe BuildDict /inputdir "." /outputdir ".." /outputname Icons /useComponentResKeys=true /compResKeyNSName=nsImages /compResKeyNS=IconResources.Images /filterPixelsPerDip=true 2 | pause -------------------------------------------------------------------------------- /IconResources/Images/Svg/cloud-3-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 9 | 15 | 16 | -------------------------------------------------------------------------------- /IconResources/Images/Svg/images.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Browse svg images 5 | 6 | Images in file: .\images
7 | -------------------------------------------------------------------------------- /IconResources/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | using System.Windows; 5 | 6 | // General Information about an assembly is controlled through the following 7 | // set of attributes. Change these attribute values to modify the information 8 | // associated with an assembly. 9 | [assembly: AssemblyTitle("IconResources")] 10 | [assembly: AssemblyDescription("")] 11 | [assembly: AssemblyConfiguration("")] 12 | [assembly: AssemblyCompany("")] 13 | [assembly: AssemblyProduct("IconResources")] 14 | [assembly: AssemblyCopyright("Copyright © 2017")] 15 | [assembly: AssemblyTrademark("")] 16 | [assembly: AssemblyCulture("")] 17 | 18 | // Setting ComVisible to false makes the types in this assembly not visible 19 | // to COM components. If you need to access a type in this assembly from 20 | // COM, set the ComVisible attribute to true on that type. 21 | [assembly: ComVisible(false)] 22 | 23 | // The following GUID is for the ID of the typelib if this project is exposed to COM 24 | [assembly: Guid("618e080b-86d8-4f12-b141-effe222d6e9f")] 25 | 26 | // Version information for an assembly consists of the following four values: 27 | // 28 | // Major Version 29 | // Minor Version 30 | // Build Number 31 | // Revision 32 | // 33 | // You can specify all the values or you can default the Build and Revision Numbers 34 | // by using the '*' as shown below: 35 | // [assembly: AssemblyVersion("1.0.*")] 36 | [assembly: AssemblyVersion("1.0.0.0")] 37 | [assembly: AssemblyFileVersion("1.0.0.0")] 38 | 39 | [assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)] -------------------------------------------------------------------------------- /IconResources/Themes/Generic.xaml: -------------------------------------------------------------------------------- 1 |  3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Licence.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2015, Bernd Klaiber, bk@bkedv.de 2 | 3 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 4 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 5 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 6 | PURPOSE ARE DISCLAIMED. 7 | IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY 8 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 9 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 10 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 11 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 12 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 13 | THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # SvgToXaml 2 | Smart tool to view svg-files and convert them to xaml for use in .NET 3 | There are 3 major use cases: 4 | View many svg-files, examine single files closer (see additional Info, svg sources, xaml code) 5 | Convert svg-file to xaml 6 | Batch conversion of many svg-files 7 | # View 8 | Just start SvgToXaml and drag a folder into the view, this folder will open and you'll see a list of all the svgs located in that folder. Sure there is a button to open also a "open folder" dialog. Double click a icon see the detail view. 9 | 10 | ![Main View](/Doc/MainView.PNG) 11 | 12 | Just drag a file into the view and the detail view will open. 13 | 14 | ![Detail View](/Doc/DetailView.PNG) 15 | 16 | # Convert 17 | You can open the detail view by double-clicking an icon. Here you can inspect the icon closer and can also see the converted xaml-code. 18 | 19 | ![Detail View Xaml](/Doc/DetailViewXaml.PNG) 20 | # Batch conversion 21 | The idea is that you collect some svgs and want to use them in your .net app. So just put them in a folder and use SvgToXaml to batch convert them into one xaml-file. 22 | The SvgToXaml exe file is designed as a "hybrid" app. Just call it without params and it will start as a WPF app, when you specify params, it will change to a console app. Provide "/?" to see the help, there is only one command rigth now: "BuildDict" 23 | ``` 24 | >SvgToXaml.exe /? BuildDict 25 | SvgToXaml - Tool to convert SVGs to a Dictionary 26 | (c) 2015 Bernd Klaiber 27 | BuildDict Creates a ResourceDictionary with the svg-Images of a folder 28 | Needed Arguments: 29 | /inputdir: specify folder of the graphic files to process 30 | /outputname: Name for the xaml outputfile 31 | Optional Params: 32 | /outputdir: folder for the xaml-Output, optional, default: folder of svgs 33 | /buildhtmlfile: Builds a htmlfile to browse the svgs, optional,default true 34 | ``` 35 | Example: 36 | `..\..\SvgToXaml\bin\Debug\SvgToXaml.exe BuildDict /inputdir:.\svg /outputname:images /outputdir:.` 37 | This is the content of the cmd file included in the sample app. It will produce a xaml file named "images.xaml" in the current folder, including all svg-files from folder ".\svg". 38 | That's it, after that, include the file "images.xaml" into your app, merge it into resourcedictionaries in the app.xaml and you can use the icons in e.g. a button like this: 39 | ``` 40 | 43 | ``` 44 | after adding more new icons, just run the command again and the new icons will appear in the updated xaml-file. 45 | For each Icon the colors, paths, a drawingimage are created (with resource-keys) so you can use them as you like. 46 | You can change the color of all icons at once (like theming your app) or you can change all the color of the icons separately (see the sample app included in the sources). 47 | -------------------------------------------------------------------------------- /SvgConverter/CmdLineHandler.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using BKLib.CommandLineParser; 3 | 4 | namespace SvgConverter 5 | { 6 | public static class CmdLineHandler 7 | { 8 | public static int HandleCommandLine(string arg) 9 | { 10 | string[] args = arg != null ? arg.Split(' ') : new string[0]; 11 | return HandleCommandLine(args); 12 | } 13 | public static int HandleCommandLine(string[] args) 14 | { 15 | var clp = new CommandLineParser { SkipCommandsWhenHelpRequested = true }; 16 | 17 | clp.Target = new CmdLineTarget(); 18 | clp.Header = "SvgToXaml - Tool to convert SVGs to a Dictionary\r\n(c) 2015 Bernd Klaiber"; 19 | clp.LogErrorsToConsole = true; 20 | try 21 | { 22 | return clp.ParseArgs(args, true); 23 | } 24 | catch (Exception) 25 | { 26 | //nothing to do, the errors are hopefully already reported via CommandLineParser 27 | Console.WriteLine("Error while handling Commandline."); 28 | return -1; 29 | } 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /SvgConverter/CmdLineTarget.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Linq; 5 | using System.Windows; 6 | using System.Xml.Linq; 7 | using BKLib.CommandLineParser; 8 | 9 | namespace SvgConverter 10 | { 11 | public class CmdLineTarget : SimpleBaseTarget 12 | { 13 | [ArgumentCommand(LongDesc = "Creates a ResourceDictionary with the svg-Images of a folder")] 14 | public int BuildDict( 15 | [ArgumentParam(Aliases = "i", Desc = "dir to the SVGs", LongDesc = "specify folder of the graphic files to process")] 16 | string inputdir, 17 | [ArgumentParam(Aliases = "o", LongDesc = "Name for the xaml outputfile")] 18 | string outputname, 19 | [ArgumentParam(DefaultValue = null, ExplicitNeeded = false, LongDesc = "folder for the xaml-Output, optional, default: folder of svgs")] 20 | string outputdir = null, 21 | [ArgumentParam(LongDesc = "Builds a htmlfile to browse the svgs, optional, default true")] 22 | bool buildhtmlfile = true, 23 | [ArgumentParam(DefaultValue = null, ExplicitNeeded = false, LongDesc = "Prefix to name all items of this file, optional, default: no prefix")] 24 | string nameprefix = null, 25 | [ArgumentParam(DefaultValue = false, ExplicitNeeded = false, LongDesc = "If true, es explicit ResourceKey File is created, default: false", ExplicitWantedArguments = "resKeyNS,resKeyNSName")] 26 | bool useComponentResKeys = false, 27 | [ArgumentParam(DefaultValue = null, ExplicitNeeded = false, LongDesc = "Namespace to use with UseResKey")] 28 | string compResKeyNS = null, 29 | [ArgumentParam(DefaultValue = null, ExplicitNeeded = false, LongDesc = "name of Namespace to use with UseResKey" )] 30 | string compResKeyNSName = null, 31 | [ArgumentParam(DefaultValue = false, ExplicitNeeded = false, LongDesc = "If true, PixelsPerDip is filtered to ensure compatibility for < 4.6.2, default: false")] 32 | bool filterPixelsPerDip = false, 33 | [ArgumentParam(DefaultValue = false, ExplicitNeeded = false, LongDesc = "Recursive goes through inputdir subfolders")] 34 | bool handleSubFolders = false 35 | ) 36 | { 37 | Console.WriteLine("Building resource dictionary..."); 38 | var outFileName = Path.Combine(outputdir ?? inputdir, outputname); 39 | if (!Path.HasExtension(outFileName)) 40 | outFileName = Path.ChangeExtension(outFileName, ".xaml"); 41 | 42 | var resKeyInfo = new ResKeyInfo 43 | { 44 | Name = null, 45 | XamlName = Path.GetFileNameWithoutExtension(outputname), 46 | Prefix = nameprefix, 47 | UseComponentResKeys = useComponentResKeys, 48 | NameSpace = compResKeyNS, 49 | NameSpaceName = compResKeyNSName, 50 | }; 51 | 52 | File.WriteAllText(outFileName, ConverterLogic.SvgDirToXaml(inputdir, resKeyInfo, null, filterPixelsPerDip, handleSubFolders)); 53 | Console.WriteLine("xaml written to: {0}", Path.GetFullPath(outFileName)); 54 | 55 | if (buildhtmlfile) 56 | { 57 | var htmlFilePath = Path.Combine(inputdir, 58 | Path.GetFileNameWithoutExtension(outputname)); 59 | var files = ConverterLogic.SvgFilesFromFolder(inputdir); 60 | BuildHtmlBrowseFile(files, htmlFilePath); 61 | } 62 | return 0; //no Error 63 | } 64 | 65 | private static void BuildHtmlBrowseFile(IEnumerable files, string outputFilename, int size = 128) 66 | { 67 | // 68 | // 69 | // Browse Images 70 | // 71 | // 72 | // Images in file xyz
73 | // 74 | // 75 | // 76 | // 77 | // 78 | // 79 | // 80 | // 81 | // 82 | // 83 | var doc = new XDocument( 84 | new XElement("html", 85 | new XElement("head", 86 | new XElement("title", "Browse svg images")), 87 | new XElement("body", $"Images in file: {outputFilename}", 88 | new XElement("br"), 89 | files.Select( 90 | f => new XElement("img", 91 | new XAttribute("src", Path.GetFileName(f) ?? ""), 92 | new XAttribute("title", Path.GetFileNameWithoutExtension(f) ?? ""), 93 | new XAttribute("height", size), 94 | new XAttribute("width", size) 95 | ) 96 | ) 97 | ) 98 | )); 99 | var filename = Path.ChangeExtension(outputFilename, ".html"); 100 | doc.Save(filename); 101 | Console.WriteLine("Html overview written to {0}", filename); 102 | } 103 | } 104 | } 105 | -------------------------------------------------------------------------------- /SvgConverter/ConvertedSvgData.cs: -------------------------------------------------------------------------------- 1 | using System.IO; 2 | using System.Windows; 3 | 4 | namespace SvgConverter 5 | { 6 | public class ConvertedSvgData 7 | { 8 | private string _filepath; 9 | private string _xaml; 10 | private string _svg; 11 | private string _objectName; 12 | private DependencyObject _convertedObj; 13 | 14 | public string Filepath 15 | { 16 | get { return _filepath; } 17 | set { _filepath = value; } 18 | } 19 | 20 | public string Xaml 21 | { 22 | get { return _xaml ?? (_xaml = ConverterLogic.SvgObjectToXaml(ConvertedObj, false, _objectName, false)); } 23 | set { _xaml = value; } 24 | } 25 | 26 | public string Svg 27 | { 28 | get { return _svg ?? (_svg = File.ReadAllText(_filepath)); } 29 | set { _svg = value; } 30 | } 31 | 32 | public DependencyObject ConvertedObj 33 | { 34 | get 35 | { 36 | if (_convertedObj == null) 37 | { 38 | _convertedObj = ConverterLogic.ConvertSvgToObject(_filepath, ResultMode.DrawingImage, null, out _objectName, new ResKeyInfo()) as DependencyObject; 39 | } 40 | return _convertedObj; 41 | } 42 | set { _convertedObj = value; } 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /SvgConverter/FileUtils.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | 4 | namespace SvgConverter 5 | { 6 | public enum PathIs 7 | { 8 | Folder, 9 | File 10 | } 11 | 12 | public static class FileUtils 13 | { 14 | /// 15 | /// Creates a relative path from one file or folder to another. 16 | /// 17 | /// Contains the directory that defines the start of the relative path. 18 | /// Is the fromPath a File or a Folder 19 | /// Contains the path that defines the endpoint of the relative path. 20 | /// Is the toPath a File or a Folder 21 | /// The relative path from the start directory to the end path or toPath if the paths are not related. 22 | /// 23 | /// 24 | /// 25 | public static string MakeRelativePath(string fromPath, PathIs fromIs, string toPath, PathIs toIs) 26 | { 27 | if (string.IsNullOrEmpty(fromPath)) throw new ArgumentNullException(nameof(fromPath)); 28 | if (string.IsNullOrEmpty(toPath)) throw new ArgumentNullException(nameof(toPath)); 29 | 30 | //Slash am Ende anfügen, damit Uri damit klarkommt und weiß, was ein Folder ist, und was nicht 31 | if (!fromPath.EndsWith(Path.DirectorySeparatorChar.ToString()) && 32 | !fromPath.EndsWith(Path.AltDirectorySeparatorChar.ToString()) && 33 | fromIs == PathIs.Folder) 34 | fromPath += Path.DirectorySeparatorChar; 35 | if (!toPath.EndsWith(Path.DirectorySeparatorChar.ToString()) && 36 | !toPath.EndsWith(Path.AltDirectorySeparatorChar.ToString()) && 37 | toIs == PathIs.Folder) 38 | toPath += Path.DirectorySeparatorChar; 39 | 40 | Uri fromUri = new Uri(fromPath); 41 | Uri toUri = new Uri(toPath); 42 | 43 | if (fromUri.Scheme != toUri.Scheme) { return toPath; } // path can't be made relative. 44 | 45 | Uri relativeUri = fromUri.MakeRelativeUri(toUri); 46 | string relativePath = Uri.UnescapeDataString(relativeUri.ToString()); 47 | 48 | if (toUri.Scheme.ToUpperInvariant() == "FILE") 49 | { 50 | relativePath = relativePath.Replace(Path.AltDirectorySeparatorChar, Path.DirectorySeparatorChar); 51 | } 52 | if (relativePath == string.Empty) 53 | relativePath = ".\\"; 54 | //ein \ am Ende entfernen, dies macht Probleme, insbesondere in CommandLine wenn quoted 55 | //zudem scheint der .Net - Standard zu sein, kein \ am Ende zu haben vgl. Path.GetDirectoryname() 56 | return relativePath.TrimEnd(Path.DirectorySeparatorChar); 57 | } 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /SvgConverter/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("SvgConverter")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("SvgConverter")] 13 | [assembly: AssemblyCopyright("Copyright © 2015")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("c86f2400-f443-489c-ac68-3c48f70cff02")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.2.0.0")] 36 | [assembly: AssemblyFileVersion("1.2.0.0")] 37 | 38 | [assembly: InternalsVisibleTo("SvgConverterTest")] -------------------------------------------------------------------------------- /SvgConverter/ResKeyInfo.cs: -------------------------------------------------------------------------------- 1 | namespace SvgConverter 2 | { 3 | public class ResKeyInfo 4 | { 5 | public string Name { get; set; } 6 | public string XamlName { get; set; } 7 | public string Prefix { get; set; } 8 | public bool UseComponentResKeys { get; set; } 9 | public string NameSpace { get; set; } 10 | public string NameSpaceName { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /SvgConverter/SvgConverter.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {D1B291FE-A21B-4C27-930D-39CC2C963E13} 8 | Library 9 | Properties 10 | SvgConverter 11 | SvgConverter 12 | v4.6.2 13 | 512 14 | 15 | 16 | 17 | true 18 | full 19 | false 20 | bin\Debug\ 21 | DEBUG;TRACE 22 | prompt 23 | 4 24 | false 25 | 26 | 27 | pdbonly 28 | true 29 | bin\Release\ 30 | TRACE 31 | prompt 32 | 4 33 | false 34 | 35 | 36 | 37 | ..\packages\BKEDV.CommandLineParser.1.0.4.0\lib\net40\CommandLineParser.dll 38 | 39 | 40 | 41 | 42 | ..\packages\SharpVectors.Reloaded.1.2.0\lib\net40\SharpVectors.Converters.Wpf.dll 43 | 44 | 45 | ..\packages\SharpVectors.Reloaded.1.2.0\lib\net40\SharpVectors.Core.dll 46 | 47 | 48 | ..\packages\SharpVectors.Reloaded.1.2.0\lib\net40\SharpVectors.Css.dll 49 | 50 | 51 | ..\packages\SharpVectors.Reloaded.1.2.0\lib\net40\SharpVectors.Dom.dll 52 | 53 | 54 | ..\packages\SharpVectors.Reloaded.1.2.0\lib\net40\SharpVectors.Model.dll 55 | 56 | 57 | ..\packages\SharpVectors.Reloaded.1.2.0\lib\net40\SharpVectors.Rendering.Gdi.dll 58 | 59 | 60 | ..\packages\SharpVectors.Reloaded.1.2.0\lib\net40\SharpVectors.Rendering.Wpf.dll 61 | 62 | 63 | ..\packages\SharpVectors.Reloaded.1.2.0\lib\net40\SharpVectors.Runtime.Wpf.dll 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 96 | -------------------------------------------------------------------------------- /SvgConverter/app.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /SvgConverter/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /SvgConverterTest/CommandLineTests.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Linq; 5 | using System.Text; 6 | using FluentAssertions; 7 | using NUnit.Framework; 8 | using SvgConverter; 9 | 10 | namespace SvgConverterTest 11 | { 12 | [TestFixture] 13 | public class CommandLineTests 14 | { 15 | [Test] 16 | public void EmptyArgsTest1() 17 | { 18 | string arg = null; 19 | CmdLineHandler.HandleCommandLine(arg).Should().Be(0); 20 | } 21 | [Test] 22 | public void EmptyArgsTest2() 23 | { 24 | CmdLineHandler.HandleCommandLine("").Should().NotBe(0); 25 | } 26 | [Test] 27 | public void HelpTest() 28 | { 29 | CmdLineHandler.HandleCommandLine("-H").Should().Be(0); 30 | } 31 | 32 | [Test] 33 | public void DirTest() 34 | { 35 | var resultFile = ".\\images.xaml"; 36 | if (File.Exists(resultFile)) 37 | File.Delete(resultFile); 38 | CmdLineHandler.HandleCommandLine("BuildDict /inputdir:\"..\\..\\TestFiles\\\" /outputname:images /outputdir:.").Should().Be(0); 39 | File.Exists(resultFile).Should().BeTrue(); 40 | } 41 | 42 | [Test] 43 | public void SubDirTest() 44 | { 45 | var resultFile = ".\\images.xaml"; 46 | if (File.Exists(resultFile)) 47 | File.Delete(resultFile); 48 | CmdLineHandler.HandleCommandLine("BuildDict /inputdir:\"..\\..\\TestFiles\\Subfolder1\\\" /handleSubFolders:true /outputname:images /outputdir:.").Should().Be(0); 49 | File.Exists(resultFile).Should().BeTrue(); 50 | } 51 | 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /SvgConverterTest/FileUtilsTests.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using FluentAssertions; 6 | using NUnit.Framework; 7 | using SvgConverter; 8 | 9 | namespace SvgConverterTest 10 | { 11 | public class FileUtilsTests 12 | { 13 | [TestCase(@"C:\Temp\", PathIs.Folder, @"C:\Temp\Sub", PathIs.Folder, @"Sub")] 14 | [TestCase(@"C:\Temp", PathIs.Folder, @"C:\Temp\Sub", PathIs.Folder, @"Sub")] 15 | [TestCase(@"C:\Temp", PathIs.Folder, @"C:\Temp\", PathIs.Folder, @".")] 16 | [TestCase(@"C:\Temp", PathIs.Folder, @"C:\", PathIs.Folder, @"..")] 17 | [TestCase(@"D:\Projects\SvgToXaml\WpfDemoApp\ImagesC\Svg", PathIs.Folder, @"D:\Projects\SvgToXaml\WpfDemoApp\ImagesC", PathIs.Folder, @"..")] 18 | [TestCase(@"C:\Temp\", PathIs.Folder, @"C:\Temp\Sub", PathIs.File, @"Sub")] 19 | [TestCase(@"C:\Temp", PathIs.File, @"C:\Temp\Sub", PathIs.Folder, @"Temp\Sub")] 20 | [TestCase(@"C:\Temp\Sub", PathIs.Folder, @"C:\Temp\file", PathIs.File, @"..\file")] 21 | [TestCase(@"C:\Temp", PathIs.File, @"C:\Temp", PathIs.File, @".")] 22 | [TestCase(@"C:\Temp", PathIs.Folder, @"C:\Temp", PathIs.Folder, @".")] 23 | public void MakeRelativePath(string fromPath, PathIs fromIs, string toPath, PathIs toIs, string result) 24 | { 25 | FileUtils.MakeRelativePath(fromPath, fromIs, toPath, toIs).Should().Be(result); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /SvgConverterTest/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("SvgConverterTest")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("SvgConverterTest")] 13 | [assembly: AssemblyCopyright("Copyright © 2013")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("0fa9b914-9eea-4b68-a56c-6692e6c745ae")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /SvgConverterTest/SvgzTest.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.IO.Compression; 5 | using System.Linq; 6 | using System.Net; 7 | using System.Text; 8 | using System.Threading.Tasks; 9 | using NUnit.Framework; 10 | 11 | namespace SvgConverterTest 12 | { 13 | public class SvgzTest 14 | { 15 | [Test] 16 | public void TestUnzip() 17 | { 18 | var fs = File.OpenRead(@".\TestFiles\example.svgz"); 19 | var stream = new System.IO.Compression.GZipStream(fs, CompressionMode.Decompress); 20 | var destination = File.OpenWrite(@".\TestFiles\example.svg"); 21 | stream.CopyTo(destination); 22 | 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /SvgConverterTest/T4Methods.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Xml.Linq; 6 | using NUnit.Framework; 7 | 8 | namespace SvgConverterTest 9 | { 10 | public class T4Methods 11 | { 12 | [Test] 13 | public void Test_KeysFromXaml() 14 | { 15 | string nameSpaceName; 16 | string prefix; 17 | var keys = KeysFromXaml(@"TestFiles\Expected\SvgDirToXamlTest_withUseCompResKey.xaml", out nameSpaceName, out prefix); 18 | Console.WriteLine($"NS:{nameSpaceName}, Prefix:{prefix}"); 19 | foreach (var key in keys) 20 | { 21 | Console.WriteLine(key); 22 | } 23 | } 24 | 25 | public static IEnumerable KeysFromXaml(string fileName, out string nameSpace, out string prefix) 26 | { 27 | var doc = XDocument.Load(fileName); 28 | //var allElems = doc.Root.Elements(); //doc.Descendants(); das wären alle samt SubNodes 29 | XNamespace xamlNs = "http://schemas.microsoft.com/winfx/2006/xaml"; 30 | //var keyAttrs = allElems.Attributes(xamlNs+"Key"); 31 | 32 | 33 | //Console.WriteLine(keyAttrs.Count()); 34 | //foreach (var attr in keyAttrs) 35 | //{ 36 | // Console.WriteLine(attr.Name); 37 | //} 38 | nameSpace = doc.Root.LastAttribute.Value; //hoffentlich ist es immer das letzte, aber nach Namen suchen is nich, und andere ausschließen ist auch nicht besser 39 | var keys = doc.Root.Elements().Attributes(xamlNs + "Key").Select(a => a.Value).ToArray(); 40 | //keys liegen in dieser Form vor: { x: Static NameSpaceName:XamlName.Color1} 41 | 42 | prefix = "unknownPrefix"; 43 | var first = keys.FirstOrDefault(); 44 | if (first != null) 45 | { 46 | var p1 = first.LastIndexOf(":"); 47 | var p2 = first.LastIndexOf("}"); 48 | if (p1 < p2) 49 | prefix = first.Substring(p1 + 1, p2 - p1 - 1).Split('.').FirstOrDefault(); 50 | } 51 | 52 | var names = keys.Select(key => 53 | { 54 | var p1 = key.LastIndexOf("."); 55 | var p2 = key.LastIndexOf("}"); 56 | if (p1 < p2) 57 | return key.Substring(p1 + 1, p2 - p1 - 1); 58 | else 59 | return key; 60 | }).ToArray(); 61 | 62 | 63 | return names; 64 | } 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /SvgConverterTest/TestFiles/3d-view-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 13 | 14 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /SvgConverterTest/TestFiles/Expected/ConvertFileToDrawingGroup2.xaml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /SvgConverterTest/TestFiles/Expected/ConvertFileToDrawingGroupWithRuntime_JOG.svg.xaml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /SvgConverterTest/TestFiles/Expected/ConvertFileToDrawingGroupWithRuntime_cloud-3-icon.svg.xaml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /SvgConverterTest/TestFiles/Expected/ConvertFileToDrawingGroup_3d-view-icon.svg.xaml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /SvgConverterTest/TestFiles/Expected/ConvertFileToDrawingGroup_JOG.svg.xaml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /SvgConverterTest/TestFiles/Expected/ConvertFileToDrawingGroup_cloud-3-icon.svg.xaml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /SvgConverterTest/TestFiles/Expected/ConvertFileToDrawingImage_3d-view-icon.svg.xaml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /SvgConverterTest/TestFiles/Expected/ConvertFileToDrawingImage_JOG.svg.xaml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /SvgConverterTest/TestFiles/Expected/ConvertFileToDrawingImage_cloud-3-icon.svg.xaml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /SvgConverterTest/TestFiles/Expected/Handwheel.xaml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /SvgConverterTest/TestFiles/Expected/Handwheel1.xaml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | -------------------------------------------------------------------------------- /SvgConverterTest/TestFiles/Expected/Handwheel2.xaml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | -------------------------------------------------------------------------------- /SvgConverterTest/TestFiles/Expected/Handwheel3.xaml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /SvgConverterTest/TestFiles/Images.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Browse svg images 5 | 6 | Images in file: ..\..\TestFiles\images
7 | -------------------------------------------------------------------------------- /SvgConverterTest/TestFiles/Readme.txt: -------------------------------------------------------------------------------- 1 | some of these icons are copyrighted by iconmonstr.com 2 | Please respect copyright! -------------------------------------------------------------------------------- /SvgConverterTest/TestFiles/Subfolder1/3d-view-b-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 13 | 14 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /SvgConverterTest/TestFiles/Subfolder1/Subfolder2/cloud-3-a-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 9 | 15 | 16 | -------------------------------------------------------------------------------- /SvgConverterTest/TestFiles/Subfolder1/images.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Browse svg images 5 | 6 | Images in file: ..\..\TestFiles\Subfolder1\images
7 | -------------------------------------------------------------------------------- /SvgConverterTest/TestFiles/cloud-3-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 9 | 15 | 16 | -------------------------------------------------------------------------------- /SvgConverterTest/TestFiles/example.svgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/SvgConverterTest/TestFiles/example.svgz -------------------------------------------------------------------------------- /SvgConverterTest/app.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /SvgConverterTest/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /SvgToXaml.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 14 4 | VisualStudioVersion = 14.0.25123.0 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SvgConverter", "SvgConverter\SvgConverter.csproj", "{D1B291FE-A21B-4C27-930D-39CC2C963E13}" 7 | EndProject 8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SvgConverterTest", "SvgConverterTest\SvgConverterTest.csproj", "{B4508A49-AE03-4427-980F-15FAF7B0CC8F}" 9 | EndProject 10 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SvgToXaml", "SvgToXaml\SvgToXaml.csproj", "{0CAF3717-683D-45D3-94A1-CFA4828EF67B}" 11 | EndProject 12 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IconResources", "IconResources\IconResources.csproj", "{618E080B-86D8-4F12-B141-EFFE222D6E9F}" 13 | EndProject 14 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfDemoApp", "WpfDemoApp\WpfDemoApp.csproj", "{1582B923-7D2E-446E-9871-F7E1DB8D911F}" 15 | EndProject 16 | Global 17 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 18 | Debug|Any CPU = Debug|Any CPU 19 | Release|Any CPU = Release|Any CPU 20 | EndGlobalSection 21 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 22 | {D1B291FE-A21B-4C27-930D-39CC2C963E13}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 23 | {D1B291FE-A21B-4C27-930D-39CC2C963E13}.Debug|Any CPU.Build.0 = Debug|Any CPU 24 | {D1B291FE-A21B-4C27-930D-39CC2C963E13}.Release|Any CPU.ActiveCfg = Release|Any CPU 25 | {D1B291FE-A21B-4C27-930D-39CC2C963E13}.Release|Any CPU.Build.0 = Release|Any CPU 26 | {B4508A49-AE03-4427-980F-15FAF7B0CC8F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 27 | {B4508A49-AE03-4427-980F-15FAF7B0CC8F}.Debug|Any CPU.Build.0 = Debug|Any CPU 28 | {B4508A49-AE03-4427-980F-15FAF7B0CC8F}.Release|Any CPU.ActiveCfg = Release|Any CPU 29 | {B4508A49-AE03-4427-980F-15FAF7B0CC8F}.Release|Any CPU.Build.0 = Release|Any CPU 30 | {0CAF3717-683D-45D3-94A1-CFA4828EF67B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 31 | {0CAF3717-683D-45D3-94A1-CFA4828EF67B}.Debug|Any CPU.Build.0 = Debug|Any CPU 32 | {0CAF3717-683D-45D3-94A1-CFA4828EF67B}.Release|Any CPU.ActiveCfg = Release|Any CPU 33 | {0CAF3717-683D-45D3-94A1-CFA4828EF67B}.Release|Any CPU.Build.0 = Release|Any CPU 34 | {618E080B-86D8-4F12-B141-EFFE222D6E9F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 35 | {618E080B-86D8-4F12-B141-EFFE222D6E9F}.Debug|Any CPU.Build.0 = Debug|Any CPU 36 | {618E080B-86D8-4F12-B141-EFFE222D6E9F}.Release|Any CPU.ActiveCfg = Release|Any CPU 37 | {618E080B-86D8-4F12-B141-EFFE222D6E9F}.Release|Any CPU.Build.0 = Release|Any CPU 38 | {1582B923-7D2E-446E-9871-F7E1DB8D911F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 39 | {1582B923-7D2E-446E-9871-F7E1DB8D911F}.Debug|Any CPU.Build.0 = Debug|Any CPU 40 | {1582B923-7D2E-446E-9871-F7E1DB8D911F}.Release|Any CPU.ActiveCfg = Release|Any CPU 41 | {1582B923-7D2E-446E-9871-F7E1DB8D911F}.Release|Any CPU.Build.0 = Release|Any CPU 42 | EndGlobalSection 43 | GlobalSection(SolutionProperties) = preSolution 44 | HideSolutionNode = FALSE 45 | EndGlobalSection 46 | EndGlobal 47 | -------------------------------------------------------------------------------- /SvgToXaml.sln.DotSettings: -------------------------------------------------------------------------------- 1 |  2 | NS 3 | False 4 | False -------------------------------------------------------------------------------- /SvgToXaml/App.xaml: -------------------------------------------------------------------------------- 1 |  6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /SvgToXaml/App.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace SvgToXaml 2 | { 3 | /// 4 | /// Interaction logic for App.xaml 5 | /// 6 | public partial class App 7 | { 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /SvgToXaml/Command/IActiveAware.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace SvgToXaml.Command 4 | { 5 | /// 6 | /// Interface that defines if the object instance is active 7 | /// and notifies when the activity changes. 8 | /// 9 | /// 10 | public interface IActiveAware 11 | { 12 | /// 13 | /// Gets or sets a value indicating whether the object is active. 14 | /// 15 | /// 16 | /// 17 | /// 18 | /// if the object is active; otherwise . 19 | /// 20 | bool IsActive { get; set; } 21 | 22 | /// 23 | /// Notifies that the value for property has changed. 24 | /// 25 | /// 26 | event EventHandler IsActiveChanged; 27 | } 28 | } -------------------------------------------------------------------------------- /SvgToXaml/Command/WeakEventHandlerManager.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Threading; 4 | 5 | namespace SvgToXaml.Command 6 | { 7 | /// 8 | /// Handles management and dispatching of EventHandlers in a weak way. 9 | /// 10 | /// 11 | public static class WeakEventHandlerManager 12 | { 13 | private static readonly SynchronizationContext SyncContext = SynchronizationContext.Current; 14 | 15 | /// 16 | /// Invokes the handlers 17 | /// 18 | /// 19 | /// 20 | public static void CallWeakReferenceHandlers(object sender, List handlers) 21 | { 22 | if (handlers == null) 23 | return; 24 | EventHandler[] callees = new EventHandler[handlers.Count]; 25 | int count = 0; 26 | int num = CleanupOldHandlers(handlers, callees, count); 27 | for (int index = 0; index < num; ++index) 28 | CallHandler(sender, callees[index]); 29 | } 30 | 31 | private static void CallHandler(object sender, EventHandler eventHandler) 32 | { 33 | if (eventHandler == null) 34 | return; 35 | if (SyncContext != null) 36 | SyncContext.Post(o => eventHandler(sender, EventArgs.Empty), null); 37 | else 38 | eventHandler(sender, EventArgs.Empty); 39 | } 40 | 41 | private static int CleanupOldHandlers(List handlers, EventHandler[] callees, int count) 42 | { 43 | for (int index = handlers.Count - 1; index >= 0; --index) 44 | { 45 | EventHandler eventHandler = handlers[index].Target as EventHandler; 46 | if (eventHandler == null) 47 | { 48 | handlers.RemoveAt(index); 49 | } 50 | else 51 | { 52 | callees[count] = eventHandler; 53 | ++count; 54 | } 55 | } 56 | return count; 57 | } 58 | 59 | /// 60 | /// Adds a handler to the supplied list in a weak way. 61 | /// 62 | /// 63 | /// Existing handler list. It will be created if null.Handler to add.Default list size. 64 | public static void AddWeakReferenceHandler(ref List handlers, EventHandler handler, int defaultListSize) 65 | { 66 | if (handlers == null) 67 | handlers = defaultListSize > 0 ? new List(defaultListSize) : new List(); 68 | handlers.Add(new WeakReference(handler)); 69 | } 70 | 71 | /// 72 | /// Removes an event handler from the reference list. 73 | /// 74 | /// 75 | /// Handler list to remove reference from.Handler to remove. 76 | public static void RemoveWeakReferenceHandler(List handlers, EventHandler handler) 77 | { 78 | if (handlers == null) 79 | return; 80 | for (int index = handlers.Count - 1; index >= 0; --index) 81 | { 82 | EventHandler eventHandler = handlers[index].Target as EventHandler; 83 | if (eventHandler == null || eventHandler == handler) 84 | handlers.RemoveAt(index); 85 | } 86 | } 87 | } 88 | } -------------------------------------------------------------------------------- /SvgToXaml/CustomDefined.targets: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | %(ReferenceCopyLocalPaths.DestinationSubDirectory)%(ReferenceCopyLocalPaths.Filename)%(ReferenceCopyLocalPaths.Extension) 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /SvgToXaml/DetailWindow.xaml: -------------------------------------------------------------------------------- 1 |  11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | -------------------------------------------------------------------------------- /SvgToXaml/DetailWindow.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Linq; 3 | using System.Windows; 4 | using System.Windows.Input; 5 | using System.Windows.Media; 6 | 7 | namespace SvgToXaml 8 | { 9 | /// 10 | /// Interaction logic for DetailWindow.xaml 11 | /// 12 | public partial class DetailWindow 13 | { 14 | public DetailWindow() 15 | { 16 | InitializeComponent(); 17 | } 18 | 19 | private void CopyToClipboardClick(object sender, RoutedEventArgs e) 20 | { 21 | Clipboard.SetText(XmlViewer.Text); 22 | } 23 | 24 | private void ToggleStretchClicked(object sender, MouseButtonEventArgs e) 25 | { 26 | var values = Enum.GetValues(typeof(Stretch)).OfType().ToList(); 27 | var idx = values.IndexOf(Image.Stretch); 28 | idx = (idx + 1) % values.Count; 29 | Image.Stretch = values[idx]; 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /SvgToXaml/Explorer/FolderTree.xaml: -------------------------------------------------------------------------------- 1 |  9 | 10 | 11 | 12 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /SvgToXaml/Explorer/FolderTree.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Collections.ObjectModel; 4 | using System.IO; 5 | using System.Linq; 6 | using System.Windows; 7 | using System.Windows.Controls; 8 | using System.Windows.Input; 9 | 10 | namespace SvgToXaml.Explorer 11 | { 12 | /// 13 | /// Interaction logic for FolderTree.xaml 14 | /// 15 | public partial class FolderTree 16 | { 17 | public static readonly DependencyProperty CurrentFolderProperty = DependencyProperty.Register( 18 | "CurrentFolder", typeof (string), typeof (FolderTree), new PropertyMetadata(default(string), CurrentFolderChanged)); 19 | 20 | private static void CurrentFolderChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs dependencyPropertyChangedEventArgs) 21 | { 22 | FolderTree folderTree = (FolderTree)dependencyObject; 23 | var item = folderTree.FindItem(folderTree.FoldersTree, (string)dependencyPropertyChangedEventArgs.NewValue); 24 | if (item!=null) 25 | folderTree.SelectItem(item); 26 | } 27 | 28 | public string CurrentFolder 29 | { 30 | get { return (string) GetValue(CurrentFolderProperty); } 31 | set { SetValue(CurrentFolderProperty, value); } 32 | } 33 | private readonly object _dummyNode = null; 34 | 35 | public FolderTree() 36 | { 37 | InitializeComponent(); 38 | FillRootLevel(); 39 | FoldersTree.SelectedItemChanged += FoldersTreeOnSelectedItemChanged; 40 | } 41 | 42 | public static readonly DependencyProperty ContextMenuCommandsProperty = DependencyProperty.Register( 43 | "ContextMenuCommands", typeof (ObservableCollection>), typeof (FolderTree), new PropertyMetadata(default(ObservableCollection>))); 44 | 45 | public ObservableCollection> ContextMenuCommands 46 | { 47 | get { return (ObservableCollection>) GetValue(ContextMenuCommandsProperty); } 48 | set { SetValue(ContextMenuCommandsProperty, value); } 49 | } 50 | 51 | private void FoldersTreeOnSelectedItemChanged(object sender, RoutedPropertyChangedEventArgs routedPropertyChangedEventArgs) 52 | { 53 | if (routedPropertyChangedEventArgs.NewValue is TreeViewItem) 54 | CurrentFolder = (string)((routedPropertyChangedEventArgs.NewValue as TreeViewItem).Tag); 55 | } 56 | 57 | private void FillRootLevel() 58 | { 59 | foreach (var drive in Directory.GetLogicalDrives()) 60 | { 61 | var item = new TreeViewItem(); 62 | item.Header = drive; 63 | item.Tag = drive; 64 | item.Items.Add(_dummyNode); 65 | item.Expanded += folder_Expanded; 66 | 67 | // Apply the attached property so that 68 | // the triggers know that this is root item. 69 | TreeViewItemProps.SetIsRootLevel(item, true); 70 | 71 | FoldersTree.Items.Add(item); 72 | } 73 | } 74 | 75 | private void folder_Expanded(object sender, RoutedEventArgs e) 76 | { 77 | var item = (TreeViewItem) sender; 78 | if (item.Items.Count == 1 && item.Items[0] == _dummyNode) 79 | { 80 | item.Items.Clear(); 81 | try 82 | { 83 | if (item.Tag != null) 84 | foreach (var dir in Directory.GetDirectories((string) item.Tag)) 85 | { 86 | var subitem = new TreeViewItem(); 87 | subitem.Header = new DirectoryInfo(dir).Name; 88 | subitem.Tag = dir; 89 | subitem.Items.Add(_dummyNode); 90 | subitem.Expanded += folder_Expanded; 91 | item.Items.Add(subitem); 92 | } 93 | } 94 | catch (Exception) 95 | { 96 | // ignored 97 | } 98 | } 99 | } 100 | 101 | public void SelectItem(TreeViewItem item) 102 | { 103 | item.Focus(); 104 | item.IsSelected = true; 105 | item.BringIntoView(); 106 | } 107 | 108 | public TreeViewItem FindItem(TreeView tv, string path) 109 | { 110 | if (string.IsNullOrWhiteSpace(path)) 111 | return null; 112 | var parts = GetDirParts(path); 113 | var currItems = tv.Items; 114 | TreeViewItem found = null; 115 | foreach (var part in parts) 116 | { 117 | var newFound = currItems.Cast() 118 | .FirstOrDefault( 119 | e => string.Equals(e.Header.ToString(), part, StringComparison.InvariantCultureIgnoreCase)); 120 | if (newFound != null) 121 | { 122 | found = newFound; 123 | found.IsExpanded = true; 124 | currItems = found.Items; 125 | } 126 | } 127 | return found; 128 | } 129 | 130 | private IEnumerable GetDirParts(string path) 131 | { 132 | path = Path.GetFullPath(path); 133 | //yield return Path.GetPathRoot(path); 134 | var parts = path.Split(Path.DirectorySeparatorChar).ToArray(); 135 | if (parts.Length > 0 && parts[0].Length == 2) 136 | parts[0] += @"\"; 137 | return parts; 138 | } 139 | 140 | public event RoutedPropertyChangedEventHandler SelectedItemChanged 141 | { 142 | add 143 | { 144 | FoldersTree.SelectedItemChanged += value; 145 | } 146 | remove 147 | { 148 | FoldersTree.SelectedItemChanged -= value; 149 | } 150 | } 151 | 152 | 153 | } 154 | } -------------------------------------------------------------------------------- /SvgToXaml/Explorer/Images/diskdrive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/SvgToXaml/Explorer/Images/diskdrive.png -------------------------------------------------------------------------------- /SvgToXaml/Explorer/Images/folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/SvgToXaml/Explorer/Images/folder.png -------------------------------------------------------------------------------- /SvgToXaml/Explorer/TreeViewItemProps.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | namespace SvgToXaml.Explorer 4 | { 5 | 6 | public static class TreeViewItemProps 7 | { 8 | public static bool GetIsRootLevel(DependencyObject obj) 9 | { 10 | return (bool)obj.GetValue(IsRootLevelProperty); 11 | } 12 | 13 | public static void SetIsRootLevel( 14 | DependencyObject obj, bool value) 15 | { 16 | obj.SetValue(IsRootLevelProperty, value); 17 | } 18 | 19 | public static readonly DependencyProperty IsRootLevelProperty = 20 | DependencyProperty.RegisterAttached( 21 | "IsRootLevel", 22 | typeof(bool), 23 | typeof(TreeViewItemProps), 24 | new UIPropertyMetadata(false)); 25 | } 26 | 27 | } -------------------------------------------------------------------------------- /SvgToXaml/Images/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/SvgToXaml/Images/icon.ico -------------------------------------------------------------------------------- /SvgToXaml/Images/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/SvgToXaml/Images/icon.png -------------------------------------------------------------------------------- /SvgToXaml/Images/icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | image/svg+xml 52 | 58 | -------------------------------------------------------------------------------- /SvgToXaml/Images/icon16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/SvgToXaml/Images/icon16.png -------------------------------------------------------------------------------- /SvgToXaml/Infrastructure/DispatcherExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Threading.Tasks; 3 | using System.Windows; 4 | using System.Windows.Threading; 5 | 6 | namespace SvgToXaml.Infrastructure 7 | { 8 | public static class DispatcherExtensions 9 | { 10 | /// 11 | /// Führt die Action über den UI-Dispatcher aus. 12 | /// 13 | /// Auszuführende Aktion 14 | public static void InUi(Action action) 15 | { 16 | if (Application.Current == null) 17 | { 18 | action(); 19 | return; 20 | } 21 | 22 | Application.Current.Dispatcher.Do(action); 23 | } 24 | 25 | public static Task InUiAsync(Action action) 26 | { 27 | if (Application.Current == null) 28 | { 29 | return RunSynchronously(action); 30 | } 31 | 32 | return Application.Current.Dispatcher.DoAsync(action); 33 | } 34 | 35 | private static void Do(this Dispatcher dispatcher, Action action) 36 | { 37 | if (!dispatcher.CheckAccess()) 38 | { 39 | dispatcher.BeginInvoke(action, DispatcherPriority.Background); 40 | return; 41 | } 42 | 43 | action(); 44 | } 45 | 46 | private static Task DoAsync(this Dispatcher dispatcher, Action action) 47 | { 48 | if (!dispatcher.CheckAccess()) 49 | { 50 | return RunAsync(dispatcher, action); 51 | } 52 | 53 | return RunSynchronously(action); 54 | } 55 | 56 | private static Task RunAsync(Dispatcher dispatcher, Action action) 57 | { 58 | var completionSource = new TaskCompletionSource(); 59 | var dispatcherOperation = dispatcher.BeginInvoke(new Action(() => 60 | { 61 | try 62 | { 63 | action(); 64 | } 65 | catch (Exception ex) 66 | { 67 | completionSource.SetException(ex); 68 | } 69 | }), DispatcherPriority.Background); 70 | dispatcherOperation.Aborted += (s, e) => completionSource.SetCanceled(); 71 | dispatcherOperation.Completed += (s, e) => completionSource.SetResult(null); 72 | return completionSource.Task; 73 | } 74 | 75 | private static Task RunSynchronously(Action action) 76 | { 77 | var completionSource = new TaskCompletionSource(); 78 | try 79 | { 80 | action(); 81 | completionSource.SetResult(null); 82 | } 83 | catch (Exception ex) 84 | { 85 | completionSource.SetException(ex); 86 | } 87 | return completionSource.Task; 88 | } 89 | } 90 | 91 | } 92 | -------------------------------------------------------------------------------- /SvgToXaml/Infrastructure/InvertableBooleanToVisibilityConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Globalization; 3 | using System.IO; 4 | using System.Windows; 5 | using System.Windows.Data; 6 | 7 | namespace SvgToXaml.Infrastructure 8 | { 9 | [ValueConversion(typeof(bool), typeof(Visibility))] 10 | public class InvertableBooleanToVisibilityConverter : IValueConverter 11 | { 12 | private enum InvertEnum 13 | { 14 | // ReSharper disable once UnusedMember.Local 15 | Normal, Invert 16 | } 17 | 18 | /// 19 | /// converts boolean to Visibility (false = Collapsed, true = Visible) 20 | /// usage: Visibility="{Binding HasError, Converter={StaticResource InvertableBooleanToVisibilityConverter}, ConverterParameter=Invert}" 21 | /// 22 | /// boolean value to convert 23 | /// not used 24 | /// Inverts the boolean value 25 | /// possible values: Invert/Normal, true/false (also as strings) 26 | /// optional (default false) 27 | /// not used 28 | /// 29 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 30 | { 31 | var boolValue = value == null 32 | ? false ^ InvertParam(parameter) 33 | : (bool)value ^ InvertParam(parameter); 34 | return boolValue ? Visibility.Visible : Visibility.Collapsed; 35 | } 36 | 37 | public object ConvertBack(object value, Type targetType, 38 | object parameter, CultureInfo culture) 39 | { 40 | return ((value is Visibility) && (((Visibility)value) == Visibility.Visible)) ^ InvertParam(parameter); 41 | } 42 | 43 | private bool InvertParam(object param) 44 | { 45 | if (param is bool?) 46 | return ((bool?)param).GetValueOrDefault(); 47 | if (param == null) 48 | return false; 49 | 50 | if (param is InvertEnum) 51 | return (InvertEnum)param == InvertEnum.Invert; 52 | if (param is string) 53 | { 54 | InvertEnum invert; 55 | if (Enum.TryParse((string)param, true, out invert)) 56 | return invert == InvertEnum.Invert; 57 | bool aBool; 58 | if (bool.TryParse((string)param, out aBool)) 59 | return aBool; 60 | } 61 | throw new InvalidDataException($"{GetType().Name}: not able to convert the ConverterParameter to InvertEnum or Boolean [{param}]"); 62 | } 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /SvgToXaml/MainWindow.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel; 2 | using System.IO; 3 | using System.Windows; 4 | using SvgToXaml.Properties; 5 | using SvgToXaml.ViewModels; 6 | 7 | namespace SvgToXaml 8 | { 9 | //todo: github oder codeplex anlegen 10 | //todo: Fehlerbehandlung beim Laden 11 | 12 | /// 13 | /// Interaction logic for MainWindow.xaml 14 | /// 15 | public partial class MainWindow 16 | { 17 | public MainWindow() 18 | { 19 | InitializeComponent(); 20 | DataContext = new SvgImagesViewModel(); 21 | ((SvgImagesViewModel) DataContext).CurrentDir = Settings.Default.LastDir; 22 | } 23 | 24 | 25 | protected override void OnClosing(CancelEventArgs e) 26 | { 27 | //Save current Dir for next Start 28 | Settings.Default.LastDir = ((SvgImagesViewModel) DataContext).CurrentDir; 29 | Settings.Default.Save(); 30 | 31 | base.OnClosing(e); 32 | } 33 | 34 | private void MainWindow_OnDrop(object sender, DragEventArgs e) 35 | { 36 | if (e.Data.GetDataPresent(DataFormats.FileDrop)) 37 | { 38 | string[] paths = (string[])e.Data.GetData(DataFormats.FileDrop); 39 | 40 | foreach (var path in paths) 41 | { 42 | if (Directory.Exists(path)) 43 | { 44 | ((SvgImagesViewModel) DataContext).CurrentDir = path; 45 | } 46 | else 47 | { 48 | if (File.Exists(path)) 49 | { 50 | ImageBaseViewModel.OpenDetailWindow(new SvgImageViewModel(path)); 51 | } 52 | } 53 | } 54 | } 55 | } 56 | } 57 | 58 | 59 | } 60 | -------------------------------------------------------------------------------- /SvgToXaml/Payload/T4Template.tt: -------------------------------------------------------------------------------- 1 | <#@ template debug="true" hostSpecific="true" #> 2 | <#@ output extension=".cs" #> 3 | <#@ Assembly Name="System.Core.dll" #> 4 | <#@ Assembly Name="System.Xml.dll" #> 5 | <#@ Assembly Name="System.Xml.Linq.dll" #> 6 | <#@ Assembly Name="System.Windows.Forms.dll" #> 7 | <#@ import namespace="System" #> 8 | <#@ import namespace="System.IO" #> 9 | <#@ import namespace="System.Diagnostics" #> 10 | <#@ import namespace="System.Linq" #> 11 | <#@ import namespace="System.Xml.Linq" #> 12 | <#@ import namespace="System.Collections" #> 13 | <#@ import namespace="System.Collections.Generic" #><# 14 | string xamlFile = Path.ChangeExtension(this.Host.TemplateFile, ".xaml"); 15 | string nameSpace; 16 | string prefix; 17 | var keyNames = KeysFromXaml(xamlFile, out nameSpace, out prefix); 18 | 19 | #>using System.Diagnostics.CodeAnalysis; 20 | using System.Windows; 21 | 22 | namespace <#= nameSpace #> 23 | { 24 | [SuppressMessage("ReSharper", "InconsistentNaming")] 25 | public static class <#= prefix #> 26 | { 27 | <# BuildComponentKeys(keyNames, prefix); 28 | #> 29 | private static ComponentResourceKey MakeKey(object id) 30 | { 31 | return new ComponentResourceKey(typeof(<#= prefix #>), id); 32 | } 33 | } 34 | } 35 | <#+ 36 | void BuildComponentKeys(IEnumerable keyNames, string prefix) 37 | { 38 | foreach (var name in keyNames) 39 | { 40 | #> private static readonly ComponentResourceKey <#= name #>CompResKey = MakeKey("<#= prefix #>.<#= name #>"); 41 | public static ResourceKey <#= name #> => <#= name #>CompResKey; 42 | 43 | <#+ } 44 | } 45 | 46 | public static IEnumerable KeysFromXaml(string fileName, out string nameSpace, out string prefix) 47 | { 48 | var doc = XDocument.Load(fileName); 49 | XNamespace xamlNs = "http://schemas.microsoft.com/winfx/2006/xaml"; 50 | 51 | nameSpace = doc.Root.LastAttribute.Value; 52 | nameSpace = nameSpace.Remove(0, "clr-namespace:".Length); 53 | 54 | var keys = doc.Root.Elements().Attributes(xamlNs + "Key").Select(a => a.Value).ToArray(); 55 | //keys have this form: { x: Static NameSpaceName:XamlName.Color1} 56 | 57 | //get Prefix 58 | prefix = "unknownPrefix"; 59 | var first = keys.FirstOrDefault(); 60 | if (first != null) 61 | { 62 | var p1 = first.LastIndexOf(":"); 63 | var p2 = first.LastIndexOf("}"); 64 | if (p1 < p2) 65 | prefix = first.Substring(p1 + 1, p2 - p1 - 1).Split('.').FirstOrDefault(); 66 | } 67 | 68 | //keynames 69 | return keys.Select(key => 70 | { 71 | var p1 = key.LastIndexOf("."); 72 | var p2 = key.LastIndexOf("}"); 73 | if (p1 < p2) 74 | return key.Substring(p1 + 1, p2 - p1 - 1); 75 | else 76 | return key; 77 | }).ToArray(); 78 | } 79 | 80 | #> -------------------------------------------------------------------------------- /SvgToXaml/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Globalization; 4 | using System.IO; 5 | using System.Reflection; 6 | using SvgConverter; 7 | using SvgToXaml.Infrastructure; 8 | 9 | namespace SvgToXaml 10 | { 11 | static class Program 12 | { 13 | [STAThread] 14 | static int Main(string[] args) 15 | { 16 | AppDomain.CurrentDomain.AssemblyResolve += OnResolveAssembly; 17 | 18 | int exitCode = 0; 19 | if (args.Length > 0) 20 | { 21 | RunConsole(args); 22 | } 23 | else 24 | { //normale WPF-Applikationslogik 25 | var app = new App(); 26 | app.InitializeComponent(); 27 | app.Run(); 28 | } 29 | return exitCode; 30 | } 31 | 32 | private static void RunConsole(string[] args) 33 | { 34 | HConsoleHelper.InitConsoleHandles(); 35 | 36 | CmdLineHandler.HandleCommandLine(args); 37 | 38 | HConsoleHelper.ReleaseConsoleHandles(); 39 | } 40 | 41 | private static readonly Dictionary LoadedAsmsCache = new Dictionary(StringComparer.InvariantCultureIgnoreCase); 42 | private static Assembly OnResolveAssembly(object sender, ResolveEventArgs args) 43 | { 44 | Assembly cachedAsm; 45 | if (LoadedAsmsCache.TryGetValue(args.Name, out cachedAsm)) 46 | return cachedAsm; 47 | 48 | Assembly executingAssembly = Assembly.GetExecutingAssembly(); 49 | AssemblyName assemblyName = new AssemblyName(args.Name); 50 | 51 | string path = assemblyName.Name + ".dll"; 52 | if (assemblyName.CultureInfo != null && assemblyName.CultureInfo.Equals(CultureInfo.InvariantCulture) == false) 53 | { 54 | path = $@"{assemblyName.CultureInfo}\{path}"; 55 | } 56 | 57 | using (Stream stream = executingAssembly.GetManifestResourceStream(path)) 58 | { 59 | if (stream == null) 60 | return null; 61 | 62 | byte[] assemblyRawBytes = new byte[stream.Length]; 63 | stream.Read(assemblyRawBytes, 0, assemblyRawBytes.Length); 64 | var loadedAsm = Assembly.Load(assemblyRawBytes); 65 | LoadedAsmsCache.Add(args.Name, loadedAsm); 66 | return loadedAsm; 67 | } 68 | } 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /SvgToXaml/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | using System.Windows; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("SvgToXaml")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("SvgToXaml")] 13 | [assembly: AssemblyCopyright("Copyright © 2015")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | //In order to begin building localizable applications, set 23 | //CultureYouAreCodingWith in your .csproj file 24 | //inside a . For example, if you are using US english 25 | //in your source files, set the to en-US. Then uncomment 26 | //the NeutralResourceLanguage attribute below. Update the "en-US" in 27 | //the line below to match the UICulture setting in the project file. 28 | 29 | //[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] 30 | 31 | 32 | [assembly: ThemeInfo( 33 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located 34 | //(used if a resource is not found in the page, 35 | // or application resource dictionaries) 36 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located 37 | //(used if a resource is not found in the page, 38 | // app, or any theme specific resource dictionaries) 39 | )] 40 | 41 | 42 | // Version information for an assembly consists of the following four values: 43 | // 44 | // Major Version 45 | // Minor Version 46 | // Build Number 47 | // Revision 48 | // 49 | // You can specify all the values or you can default the Build and Revision Numbers 50 | // by using the '*' as shown below: 51 | // [assembly: AssemblyVersion("1.0.*")] 52 | [assembly: AssemblyVersion("1.3.0.0")] 53 | [assembly: AssemblyFileVersion("1.3.0.0")] 54 | -------------------------------------------------------------------------------- /SvgToXaml/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace SvgToXaml.Properties { 12 | using System; 13 | 14 | 15 | /// 16 | /// A strongly-typed resource class, for looking up localized strings, etc. 17 | /// 18 | // This class was auto-generated by the StronglyTypedResourceBuilder 19 | // class via a tool like ResGen or Visual Studio. 20 | // To add or remove a member, edit your .ResX file then rerun ResGen 21 | // with the /str option, or rebuild your VS project. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal Resources() { 33 | } 34 | 35 | /// 36 | /// Returns the cached ResourceManager instance used by this class. 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | internal static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SvgToXaml.Properties.Resources", typeof(Resources).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// Overrides the current thread's CurrentUICulture property for all 51 | /// resource lookups using this strongly typed resource class. 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | internal static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /SvgToXaml/Properties/Resources.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | text/microsoft-resx 107 | 108 | 109 | 2.0 110 | 111 | 112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 113 | 114 | 115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | -------------------------------------------------------------------------------- /SvgToXaml/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace SvgToXaml.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.9.0.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | 26 | [global::System.Configuration.UserScopedSettingAttribute()] 27 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 28 | [global::System.Configuration.DefaultSettingValueAttribute("")] 29 | public string LastDir { 30 | get { 31 | return ((string)(this["LastDir"])); 32 | } 33 | set { 34 | this["LastDir"] = value; 35 | } 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /SvgToXaml/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /SvgToXaml/SvgToXaml.csproj.DotSettings: -------------------------------------------------------------------------------- 1 |  2 | No -------------------------------------------------------------------------------- /SvgToXaml/TestBatch.cmd: -------------------------------------------------------------------------------- 1 | SvgToXaml BuildDict /inputdir D:\OpenSource\SharpVectors\SvgToXaml\SvgConverterTest\TestFiles /outName Images 2 | pause 3 | -------------------------------------------------------------------------------- /SvgToXaml/TextViewer/XmlViewer.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | using ICSharpCode.AvalonEdit; 3 | using ICSharpCode.AvalonEdit.Highlighting; 4 | 5 | namespace SvgToXaml.TextViewer 6 | { 7 | public class XmlViewer: TextEditor 8 | { 9 | public static readonly DependencyProperty TextProperty = DependencyProperty.Register( 10 | "Text", typeof (string), typeof (XmlViewer), new PropertyMetadata(default(string), TextChanged)); 11 | 12 | private new static void TextChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs args) 13 | { 14 | var xmlViewer = (XmlViewer) dependencyObject; 15 | xmlViewer.Document.Text = (string)args.NewValue; 16 | } 17 | 18 | public new string Text 19 | { 20 | get { return Document.Text; } 21 | set { SetValue(TextProperty, value); } 22 | } 23 | 24 | public XmlViewer() 25 | { 26 | SyntaxHighlighting = HighlightingManager.Instance.GetDefinition("XML"); 27 | //Options.AllowScrollBelowDocument = true; 28 | Options.EnableHyperlinks = true; 29 | Options.EnableEmailHyperlinks = true; 30 | //Options.ShowSpaces = true; 31 | //Options.ShowTabs = true; 32 | //Options.ShowEndOfLine = true; 33 | 34 | ShowLineNumbers = true; 35 | 36 | //_foldingManager = FoldingManager.Install(TextArea); 37 | //_foldingStrategy = new XmlFoldingStrategy(); 38 | //Document.TextChanged += DocumentTextChanged; 39 | } 40 | 41 | //der ganze Folding Quatsch funktioniert nicht richtig -> bleiben lassen 42 | //private XmlFoldingStrategy _foldingStrategy; 43 | //private FoldingManager _foldingManager; 44 | //private volatile bool _updateFoldingRequested; 45 | //private async void DocumentTextChanged(object sender, EventArgs eventArgs) 46 | //{ 47 | // if (!_updateFoldingRequested) 48 | // { 49 | // _updateFoldingRequested = true; 50 | // await Task.Delay(1000); 51 | // } 52 | // _updateFoldingRequested = false; 53 | // _foldingStrategy.UpdateFoldings(_foldingManager, Document); 54 | //} 55 | 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /SvgToXaml/ViewModels/BindableBase.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.ComponentModel; 3 | using System.Linq.Expressions; 4 | using System.Reflection; 5 | using System.Runtime.CompilerServices; 6 | 7 | namespace SvgToXaml.ViewModels 8 | { 9 | /// 10 | /// Implementation of to simplify models. 11 | /// 12 | /// 13 | public abstract class BindableBase : INotifyPropertyChanged 14 | { 15 | /// 16 | /// Occurs when a property value changes. 17 | /// 18 | /// 19 | public event PropertyChangedEventHandler PropertyChanged; 20 | 21 | /// 22 | /// Checks if a property already matches a desired value. Sets the property and 23 | /// notifies listeners only when necessary. 24 | /// 25 | /// 26 | /// Type of the property.Reference to a property with both getter and setter.Desired value for the property.Name of the property used to notify listeners. This 27 | /// value is optional and can be provided automatically when invoked from compilers that 28 | /// support CallerMemberName. 29 | /// 30 | /// True if the value was changed, false if the existing value matched the 31 | /// desired value. 32 | /// 33 | protected virtual bool SetProperty(ref T storage, T value, [CallerMemberName] string propertyName = null) 34 | { 35 | if (Equals(storage, value)) 36 | return false; 37 | storage = value; 38 | OnPropertyChanged(propertyName); 39 | return true; 40 | } 41 | 42 | /// 43 | /// Notifies listeners that a property value has changed. 44 | /// 45 | /// 46 | /// Name of the property used to notify listeners. This 47 | /// value is optional and can be provided automatically when invoked from compilers 48 | /// that support . 49 | protected void OnPropertyChanged(string propertyName) 50 | { 51 | PropertyChangedEventHandler changedEventHandler = PropertyChanged; 52 | changedEventHandler?.Invoke(this, new PropertyChangedEventArgs(propertyName)); 53 | } 54 | 55 | /// 56 | /// Raises this object's PropertyChanged event. 57 | /// 58 | /// 59 | /// The type of the property that has a new valueA Lambda expression representing the property that has a new value. 60 | protected void OnPropertyChanged(Expression> propertyExpression) 61 | { 62 | OnPropertyChanged(ExtractPropertyName(propertyExpression)); 63 | } 64 | 65 | /// 66 | /// Extracts the property name from a property expression. 67 | /// 68 | /// 69 | /// The object type containing the property specified in the expression.The property expression (e.g. p => p.PropertyName) 70 | /// 71 | /// The name of the property. 72 | /// 73 | /// Thrown if the is null.Thrown when the expression is:
74 | /// Not a
75 | /// The does not represent a property.
76 | /// Or, the property is static. 77 | ///
78 | public static string ExtractPropertyName(Expression> propertyExpression) 79 | { 80 | if (propertyExpression == null) 81 | throw new ArgumentNullException(nameof(propertyExpression)); 82 | MemberExpression memberExpression = propertyExpression.Body as MemberExpression; 83 | if (memberExpression == null) 84 | throw new ArgumentException("PropertySupport NotMemberAccessExpression", nameof(propertyExpression)); 85 | PropertyInfo propertyInfo = memberExpression.Member as PropertyInfo; 86 | if (propertyInfo == null) 87 | throw new ArgumentException("PropertySupport ExpressionNotProperty", nameof(propertyExpression)); 88 | if (propertyInfo.GetMethod.IsStatic) 89 | throw new ArgumentException("PropertySupport StaticExpression", nameof(propertyExpression)); 90 | return memberExpression.Member.Name; 91 | } 92 | 93 | } 94 | } 95 | -------------------------------------------------------------------------------- /SvgToXaml/ViewModels/GraphicImageViewModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Media; 3 | using System.Windows.Media.Imaging; 4 | 5 | namespace SvgToXaml.ViewModels 6 | { 7 | class GraphicImageViewModel: ImageBaseViewModel 8 | { 9 | public GraphicImageViewModel(string filepath) : base(filepath) 10 | { 11 | } 12 | protected override ImageSource GetImageSource() 13 | { 14 | return new BitmapImage(new Uri(Filepath, UriKind.RelativeOrAbsolute)); 15 | } 16 | 17 | public static string SupportedFormats => "*.jpg|*.jpeg|*.png|*.bmp|*.tiff|*.gif"; 18 | 19 | protected override string GetSvgDesignInfo() 20 | { 21 | if (PreviewSource is BitmapImage) 22 | { 23 | var bi = (BitmapImage)PreviewSource; 24 | return $"{bi.PixelWidth}x{bi.PixelHeight}"; 25 | } 26 | return null; 27 | } 28 | 29 | public override bool HasXaml => false; 30 | public override bool HasSvg => false; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /SvgToXaml/ViewModels/ImageBaseViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using System.IO; 3 | using System.Windows.Input; 4 | using System.Windows.Media; 5 | using SvgToXaml.Command; 6 | 7 | namespace SvgToXaml.ViewModels 8 | { 9 | public abstract class ImageBaseViewModel : ViewModelBase 10 | { 11 | protected ImageBaseViewModel(string filepath) 12 | { 13 | Filepath = filepath; 14 | OpenDetailCommand = new DelegateCommand(OpenDetailExecute); 15 | OpenFileCommand = new DelegateCommand(OpenFileExecute); 16 | } 17 | 18 | public string Filepath { get; } 19 | public string Filename => Path.GetFileName(Filepath); 20 | public ImageSource PreviewSource => GetImageSource(); 21 | public ICommand OpenDetailCommand { get; set; } 22 | public ICommand OpenFileCommand { get; set; } 23 | protected abstract ImageSource GetImageSource(); 24 | public abstract bool HasXaml { get; } 25 | public abstract bool HasSvg { get; } 26 | public string SvgDesignInfo => GetSvgDesignInfo(); 27 | 28 | private void OpenDetailExecute() 29 | { 30 | OpenDetailWindow(this); 31 | } 32 | 33 | public static void OpenDetailWindow(ImageBaseViewModel imageBaseViewModel) 34 | { 35 | new DetailWindow { DataContext = imageBaseViewModel }.Show(); 36 | } 37 | 38 | private void OpenFileExecute() 39 | { 40 | Process.Start(Filepath); 41 | } 42 | 43 | protected abstract string GetSvgDesignInfo(); 44 | } 45 | } -------------------------------------------------------------------------------- /SvgToXaml/ViewModels/SvgImageViewModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows; 3 | using System.Windows.Media; 4 | using SvgConverter; 5 | 6 | namespace SvgToXaml.ViewModels 7 | { 8 | public class SvgImageViewModel : ImageBaseViewModel 9 | { 10 | private ConvertedSvgData _convertedSvgData; 11 | 12 | 13 | public SvgImageViewModel(string filepath) : base(filepath) 14 | { 15 | } 16 | 17 | public SvgImageViewModel(ConvertedSvgData convertedSvgData) 18 | : this(convertedSvgData.Filepath) 19 | { 20 | _convertedSvgData = convertedSvgData; 21 | } 22 | 23 | public static SvgImageViewModel DesignInstance 24 | { 25 | get 26 | { 27 | var imageSource = new DrawingImage(new GeometryDrawing(Brushes.Black, null, new RectangleGeometry(new Rect(new Size(10, 10)), 1, 1))); 28 | var data = new ConvertedSvgData { ConvertedObj = imageSource, Filepath = "FilePath", Svg = "", Xaml = "" }; 29 | return new SvgImageViewModel(data); 30 | } 31 | } 32 | 33 | protected override ImageSource GetImageSource() 34 | { 35 | return SvgData?.ConvertedObj as ImageSource; 36 | } 37 | 38 | protected override string GetSvgDesignInfo() 39 | { 40 | if (PreviewSource is DrawingImage) 41 | { 42 | var di = (DrawingImage) PreviewSource; 43 | if (di.Drawing is DrawingGroup) 44 | { 45 | var dg = (DrawingGroup) di.Drawing; 46 | var bounds = dg.ClipGeometry?.Bounds ?? dg.Bounds; 47 | return $"{bounds.Width:#.##}x{bounds.Height:#.##}"; 48 | } 49 | } 50 | return null; 51 | } 52 | 53 | public override bool HasXaml => true; 54 | public override bool HasSvg => true; 55 | 56 | public string Svg => SvgData?.Svg; 57 | 58 | public string Xaml => SvgData?.Xaml; 59 | 60 | 61 | public ConvertedSvgData SvgData 62 | { 63 | get 64 | { 65 | if (_convertedSvgData == null) 66 | { 67 | try 68 | { 69 | _convertedSvgData = ConverterLogic.ConvertSvg(Filepath, ResultMode.DrawingImage); 70 | } 71 | catch (Exception) 72 | { 73 | return null; 74 | } 75 | 76 | //verzögertes Laden: ist scheiß lahm 77 | //InUi(DispatcherPriority.Loaded, () => 78 | //{ 79 | // _convertedSvgData = ConverterLogic.ConvertSvg(_filepath, ResultMode.DrawingImage); 80 | // OnPropertyChanged(""); 81 | //}); 82 | //return null; 83 | } 84 | return _convertedSvgData; 85 | } 86 | } 87 | } 88 | } 89 | -------------------------------------------------------------------------------- /SvgToXaml/ViewModels/ViewModelBase.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.ComponentModel; 3 | using System.Linq.Expressions; 4 | using System.Runtime.CompilerServices; 5 | using System.Windows; 6 | using System.Windows.Threading; 7 | 8 | namespace SvgToXaml.ViewModels 9 | { 10 | public abstract class ViewModelBase : BindableBase 11 | { 12 | protected static bool InDesignMode => DesignerProperties.GetIsInDesignMode(new DependencyObject()); 13 | 14 | /// 15 | /// Führt die Action über den UI-Dispatcher aus. 16 | /// 17 | /// Auszuführende Aktion 18 | public void InUi(Action action) 19 | { 20 | Application.Current.Dispatcher.BeginInvoke(action, DispatcherPriority.Background); 21 | } 22 | 23 | /// 24 | /// Führt die Action über den UI-Dispatcher aus. 25 | /// 26 | /// Priority 27 | /// Auszuführende Aktion 28 | public void InUi(DispatcherPriority priority, Action action) 29 | { 30 | Application.Current.Dispatcher.BeginInvoke(action, priority); 31 | } 32 | 33 | /// 34 | /// Sofern ungleich dem Wert in ist, wird das Member-Feld auf den Wert gesetzt und ein PropertyChanged-Event für die in beschriebene Property ausgelöst. 35 | /// 36 | /// Type-Parameter, wird inferiert und kann ignoriert werden 37 | /// Member-Variable, deren Wert gesetzt werden soll 38 | /// der zu setzende neue Wert 39 | /// Lambda-Ausdruck, der die Property aufruft, deren Name in übergeben werden soll. Beispiel: ()=>Name 40 | /// Liefert , wenn der Wert des Feldes geändert wurde. 41 | protected bool SetProperty(ref T field, T value, Expression> propertyExpression) 42 | { 43 | if (Equals(field, value)) return false; 44 | 45 | field = value; 46 | OnPropertyChanged(propertyExpression); 47 | 48 | return true; 49 | } 50 | 51 | protected new void OnPropertyChanged([CallerMemberName] string propertyName = null) 52 | { 53 | base.OnPropertyChanged(propertyName); 54 | } 55 | 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /SvgToXaml/app.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |
6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /SvgToXaml/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/SvgToXaml/icon.ico -------------------------------------------------------------------------------- /SvgToXaml/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /WpfDemoApp/App.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /WpfDemoApp/App.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Configuration; 4 | using System.Data; 5 | using System.Linq; 6 | using System.Windows; 7 | 8 | namespace WpfDemoApp 9 | { 10 | /// 11 | /// Interaction logic for App.xaml 12 | /// 13 | public partial class App : Application 14 | { 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /WpfDemoApp/MainWindow.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | using System.Windows.Media; 3 | using RelativeBrushes; 4 | 5 | namespace WpfDemoApp 6 | { 7 | /// 8 | /// Interaction logic for MainWindow.xaml 9 | /// 10 | public partial class MainWindow 11 | { 12 | public MainWindow() 13 | { 14 | InitializeComponent(); 15 | } 16 | 17 | private void ChangeColor_OnClick(object sender, RoutedEventArgs e) 18 | { 19 | Props.SetContentBrush(ButtonImage1, Brushes.Yellow); 20 | Button2.Foreground = Brushes.Yellow; 21 | } 22 | 23 | private void ChangeMiddleColor_OnClick(object sender, RoutedEventArgs e) 24 | { 25 | BrushCollection[2] = Brushes.Green; 26 | } 27 | 28 | private void BtnChangeMiddleColors_OnClick(object sender, RoutedEventArgs e) 29 | { 30 | //Many icons have same Color (application wide) 31 | var brushes = FindResource("BrushCollectionRes") as BrushCollection; 32 | if (brushes != null) 33 | brushes[2] = Brushes.Green; 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /WpfDemoApp/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Resources; 3 | using System.Runtime.CompilerServices; 4 | using System.Runtime.InteropServices; 5 | using System.Windows; 6 | 7 | // General Information about an assembly is controlled through the following 8 | // set of attributes. Change these attribute values to modify the information 9 | // associated with an assembly. 10 | [assembly: AssemblyTitle("WpfDemoApp")] 11 | [assembly: AssemblyDescription("")] 12 | [assembly: AssemblyConfiguration("")] 13 | [assembly: AssemblyCompany("")] 14 | [assembly: AssemblyProduct("WpfDemoApp")] 15 | [assembly: AssemblyCopyright("Copyright © 2015")] 16 | [assembly: AssemblyTrademark("")] 17 | [assembly: AssemblyCulture("")] 18 | 19 | // Setting ComVisible to false makes the types in this assembly not visible 20 | // to COM components. If you need to access a type in this assembly from 21 | // COM, set the ComVisible attribute to true on that type. 22 | [assembly: ComVisible(false)] 23 | 24 | //In order to begin building localizable applications, set 25 | //CultureYouAreCodingWith in your .csproj file 26 | //inside a . For example, if you are using US english 27 | //in your source files, set the to en-US. Then uncomment 28 | //the NeutralResourceLanguage attribute below. Update the "en-US" in 29 | //the line below to match the UICulture setting in the project file. 30 | 31 | //[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] 32 | 33 | 34 | [assembly: ThemeInfo( 35 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located 36 | //(used if a resource is not found in the page, 37 | // or application resource dictionaries) 38 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located 39 | //(used if a resource is not found in the page, 40 | // app, or any theme specific resource dictionaries) 41 | )] 42 | 43 | 44 | // Version information for an assembly consists of the following four values: 45 | // 46 | // Major Version 47 | // Minor Version 48 | // Build Number 49 | // Revision 50 | // 51 | // You can specify all the values or you can default the Build and Revision Numbers 52 | // by using the '*' as shown below: 53 | // [assembly: AssemblyVersion("1.0.*")] 54 | [assembly: AssemblyVersion("1.0.0.0")] 55 | [assembly: AssemblyFileVersion("1.0.0.0")] 56 | -------------------------------------------------------------------------------- /WpfDemoApp/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace WpfDemoApp.Properties { 12 | using System; 13 | 14 | 15 | /// 16 | /// A strongly-typed resource class, for looking up localized strings, etc. 17 | /// 18 | // This class was auto-generated by the StronglyTypedResourceBuilder 19 | // class via a tool like ResGen or Visual Studio. 20 | // To add or remove a member, edit your .ResX file then rerun ResGen 21 | // with the /str option, or rebuild your VS project. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal Resources() { 33 | } 34 | 35 | /// 36 | /// Returns the cached ResourceManager instance used by this class. 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | internal static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("WpfDemoApp.Properties.Resources", typeof(Resources).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// Overrides the current thread's CurrentUICulture property for all 51 | /// resource lookups using this strongly typed resource class. 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | internal static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /WpfDemoApp/Properties/Resources.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | text/microsoft-resx 107 | 108 | 109 | 2.0 110 | 111 | 112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 113 | 114 | 115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | -------------------------------------------------------------------------------- /WpfDemoApp/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace WpfDemoApp.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /WpfDemoApp/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /WpfDemoApp/WpfDemoApp.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {1582B923-7D2E-446E-9871-F7E1DB8D911F} 8 | WinExe 9 | Properties 10 | WpfDemoApp 11 | WpfDemoApp 12 | v4.5 13 | 512 14 | {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 15 | 4 16 | 17 | 18 | 19 | AnyCPU 20 | true 21 | full 22 | false 23 | bin\Debug\ 24 | DEBUG;TRACE 25 | prompt 26 | 4 27 | false 28 | 29 | 30 | AnyCPU 31 | pdbonly 32 | true 33 | bin\Release\ 34 | TRACE 35 | prompt 36 | 4 37 | false 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 4.0 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | MSBuild:Compile 57 | Designer 58 | 59 | 60 | MSBuild:Compile 61 | Designer 62 | 63 | 64 | App.xaml 65 | Code 66 | 67 | 68 | MainWindow.xaml 69 | Code 70 | 71 | 72 | 73 | 74 | Code 75 | 76 | 77 | True 78 | True 79 | Resources.resx 80 | 81 | 82 | True 83 | Settings.settings 84 | True 85 | 86 | 87 | ResXFileCodeGenerator 88 | Resources.Designer.cs 89 | 90 | 91 | 92 | SettingsSingleFileGenerator 93 | Settings.Designer.cs 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | {618e080b-86d8-4f12-b141-effe222d6e9f} 103 | IconResources 104 | 105 | 106 | 107 | 114 | -------------------------------------------------------------------------------- /WpfDemoApp/app.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/AvalonEdit.5.0.2/AvalonEdit.5.0.2.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/packages/AvalonEdit.5.0.2/AvalonEdit.5.0.2.nupkg -------------------------------------------------------------------------------- /packages/AvalonEdit.5.0.2/lib/.gitignore: -------------------------------------------------------------------------------- 1 | /Net35/ 2 | -------------------------------------------------------------------------------- /packages/AvalonEdit.5.0.2/lib/Net40/ICSharpCode.AvalonEdit.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/packages/AvalonEdit.5.0.2/lib/Net40/ICSharpCode.AvalonEdit.dll -------------------------------------------------------------------------------- /packages/BKEDV.CommandLineParser.1.0.4.0/BKEDV.CommandLineParser.1.0.4.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/packages/BKEDV.CommandLineParser.1.0.4.0/BKEDV.CommandLineParser.1.0.4.0.nupkg -------------------------------------------------------------------------------- /packages/BKEDV.CommandLineParser.1.0.4.0/lib/net40/CommandLineParser.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/packages/BKEDV.CommandLineParser.1.0.4.0/lib/net40/CommandLineParser.dll -------------------------------------------------------------------------------- /packages/FluentAssertions.3.3.0/FluentAssertions.3.3.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/packages/FluentAssertions.3.3.0/FluentAssertions.3.3.0.nupkg -------------------------------------------------------------------------------- /packages/FluentAssertions.3.3.0/lib/net40/FluentAssertions.Core.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/packages/FluentAssertions.3.3.0/lib/net40/FluentAssertions.Core.dll -------------------------------------------------------------------------------- /packages/FluentAssertions.3.3.0/lib/net40/FluentAssertions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/packages/FluentAssertions.3.3.0/lib/net40/FluentAssertions.dll -------------------------------------------------------------------------------- /packages/FluentAssertions.3.3.0/lib/net45/FluentAssertions.Core.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/packages/FluentAssertions.3.3.0/lib/net45/FluentAssertions.Core.dll -------------------------------------------------------------------------------- /packages/FluentAssertions.3.3.0/lib/net45/FluentAssertions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/packages/FluentAssertions.3.3.0/lib/net45/FluentAssertions.dll -------------------------------------------------------------------------------- /packages/FluentAssertions.3.3.0/lib/portable-monotouch+monoandroid+xamarin.ios/FluentAssertions.Core.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/packages/FluentAssertions.3.3.0/lib/portable-monotouch+monoandroid+xamarin.ios/FluentAssertions.Core.dll -------------------------------------------------------------------------------- /packages/FluentAssertions.3.3.0/lib/portable-net40+sl5+win8+wp8+wpa81/FluentAssertions.Core.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/packages/FluentAssertions.3.3.0/lib/portable-net40+sl5+win8+wp8+wpa81/FluentAssertions.Core.dll -------------------------------------------------------------------------------- /packages/FluentAssertions.3.3.0/lib/portable-net40+sl5+win8+wp8+wpa81/FluentAssertions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/packages/FluentAssertions.3.3.0/lib/portable-net40+sl5+win8+wp8+wpa81/FluentAssertions.dll -------------------------------------------------------------------------------- /packages/FluentAssertions.3.3.0/lib/portable-win81+wpa81/FluentAssertions.Core.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/packages/FluentAssertions.3.3.0/lib/portable-win81+wpa81/FluentAssertions.Core.dll -------------------------------------------------------------------------------- /packages/FluentAssertions.3.3.0/lib/portable-win81+wpa81/FluentAssertions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/packages/FluentAssertions.3.3.0/lib/portable-win81+wpa81/FluentAssertions.dll -------------------------------------------------------------------------------- /packages/FluentAssertions.3.3.0/lib/sl5/FluentAssertions.Core.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/packages/FluentAssertions.3.3.0/lib/sl5/FluentAssertions.Core.dll -------------------------------------------------------------------------------- /packages/FluentAssertions.3.3.0/lib/sl5/FluentAssertions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/packages/FluentAssertions.3.3.0/lib/sl5/FluentAssertions.dll -------------------------------------------------------------------------------- /packages/FluentAssertions.3.3.0/lib/sl5/Microsoft.CSharp.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/packages/FluentAssertions.3.3.0/lib/sl5/Microsoft.CSharp.dll -------------------------------------------------------------------------------- /packages/FluentAssertions.3.3.0/lib/sl5/Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/packages/FluentAssertions.3.3.0/lib/sl5/Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll -------------------------------------------------------------------------------- /packages/FluentAssertions.3.3.0/lib/sl5/System.Xml.Linq.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/packages/FluentAssertions.3.3.0/lib/sl5/System.Xml.Linq.dll -------------------------------------------------------------------------------- /packages/FluentAssertions.3.3.0/lib/sl5/de/Microsoft.CSharp.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/packages/FluentAssertions.3.3.0/lib/sl5/de/Microsoft.CSharp.resources.dll -------------------------------------------------------------------------------- /packages/FluentAssertions.3.3.0/lib/sl5/de/System.Xml.Linq.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/packages/FluentAssertions.3.3.0/lib/sl5/de/System.Xml.Linq.resources.dll -------------------------------------------------------------------------------- /packages/FluentAssertions.3.3.0/lib/sl5/es/Microsoft.CSharp.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/packages/FluentAssertions.3.3.0/lib/sl5/es/Microsoft.CSharp.resources.dll -------------------------------------------------------------------------------- /packages/FluentAssertions.3.3.0/lib/sl5/es/System.Xml.Linq.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/packages/FluentAssertions.3.3.0/lib/sl5/es/System.Xml.Linq.resources.dll -------------------------------------------------------------------------------- /packages/FluentAssertions.3.3.0/lib/sl5/fr/Microsoft.CSharp.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/packages/FluentAssertions.3.3.0/lib/sl5/fr/Microsoft.CSharp.resources.dll -------------------------------------------------------------------------------- /packages/FluentAssertions.3.3.0/lib/sl5/fr/System.Xml.Linq.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/packages/FluentAssertions.3.3.0/lib/sl5/fr/System.Xml.Linq.resources.dll -------------------------------------------------------------------------------- /packages/FluentAssertions.3.3.0/lib/sl5/it/Microsoft.CSharp.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/packages/FluentAssertions.3.3.0/lib/sl5/it/Microsoft.CSharp.resources.dll -------------------------------------------------------------------------------- /packages/FluentAssertions.3.3.0/lib/sl5/it/System.Xml.Linq.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/packages/FluentAssertions.3.3.0/lib/sl5/it/System.Xml.Linq.resources.dll -------------------------------------------------------------------------------- /packages/FluentAssertions.3.3.0/lib/sl5/ja/Microsoft.CSharp.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/packages/FluentAssertions.3.3.0/lib/sl5/ja/Microsoft.CSharp.resources.dll -------------------------------------------------------------------------------- /packages/FluentAssertions.3.3.0/lib/sl5/ja/System.Xml.Linq.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/packages/FluentAssertions.3.3.0/lib/sl5/ja/System.Xml.Linq.resources.dll -------------------------------------------------------------------------------- /packages/FluentAssertions.3.3.0/lib/sl5/ko/Microsoft.CSharp.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/packages/FluentAssertions.3.3.0/lib/sl5/ko/Microsoft.CSharp.resources.dll -------------------------------------------------------------------------------- /packages/FluentAssertions.3.3.0/lib/sl5/ko/System.Xml.Linq.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/packages/FluentAssertions.3.3.0/lib/sl5/ko/System.Xml.Linq.resources.dll -------------------------------------------------------------------------------- /packages/FluentAssertions.3.3.0/lib/sl5/ru/Microsoft.CSharp.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/packages/FluentAssertions.3.3.0/lib/sl5/ru/Microsoft.CSharp.resources.dll -------------------------------------------------------------------------------- /packages/FluentAssertions.3.3.0/lib/sl5/ru/System.Xml.Linq.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/packages/FluentAssertions.3.3.0/lib/sl5/ru/System.Xml.Linq.resources.dll -------------------------------------------------------------------------------- /packages/FluentAssertions.3.3.0/lib/sl5/zh-Hans/Microsoft.CSharp.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/packages/FluentAssertions.3.3.0/lib/sl5/zh-Hans/Microsoft.CSharp.resources.dll -------------------------------------------------------------------------------- /packages/FluentAssertions.3.3.0/lib/sl5/zh-Hans/System.Xml.Linq.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/packages/FluentAssertions.3.3.0/lib/sl5/zh-Hans/System.Xml.Linq.resources.dll -------------------------------------------------------------------------------- /packages/FluentAssertions.3.3.0/lib/sl5/zh-Hant/Microsoft.CSharp.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/packages/FluentAssertions.3.3.0/lib/sl5/zh-Hant/Microsoft.CSharp.resources.dll -------------------------------------------------------------------------------- /packages/FluentAssertions.3.3.0/lib/sl5/zh-Hant/System.Xml.Linq.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/packages/FluentAssertions.3.3.0/lib/sl5/zh-Hant/System.Xml.Linq.resources.dll -------------------------------------------------------------------------------- /packages/FluentAssertions.3.3.0/lib/win8/FluentAssertions.Core.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/packages/FluentAssertions.3.3.0/lib/win8/FluentAssertions.Core.dll -------------------------------------------------------------------------------- /packages/FluentAssertions.3.3.0/lib/win8/FluentAssertions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/packages/FluentAssertions.3.3.0/lib/win8/FluentAssertions.dll -------------------------------------------------------------------------------- /packages/FluentAssertions.3.3.0/lib/wp8/FluentAssertions.Core.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/packages/FluentAssertions.3.3.0/lib/wp8/FluentAssertions.Core.dll -------------------------------------------------------------------------------- /packages/FluentAssertions.3.3.0/lib/wp8/FluentAssertions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/packages/FluentAssertions.3.3.0/lib/wp8/FluentAssertions.dll -------------------------------------------------------------------------------- /packages/NUnit.2.6.4/NUnit.2.6.4.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/packages/NUnit.2.6.4/NUnit.2.6.4.nupkg -------------------------------------------------------------------------------- /packages/NUnit.2.6.4/lib/nunit.framework.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/packages/NUnit.2.6.4/lib/nunit.framework.dll -------------------------------------------------------------------------------- /packages/NUnit.2.6.4/license.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/packages/NUnit.2.6.4/license.txt -------------------------------------------------------------------------------- /packages/SharpVectors.Reloaded.1.2.0/.signature.p7s: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/packages/SharpVectors.Reloaded.1.2.0/.signature.p7s -------------------------------------------------------------------------------- /packages/SharpVectors.Reloaded.1.2.0/SharpVectors.Reloaded.1.2.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/packages/SharpVectors.Reloaded.1.2.0/SharpVectors.Reloaded.1.2.0.nupkg -------------------------------------------------------------------------------- /packages/SharpVectors.Reloaded.1.2.0/lib/net40/SharpVectors.Converters.Wpf.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/packages/SharpVectors.Reloaded.1.2.0/lib/net40/SharpVectors.Converters.Wpf.dll -------------------------------------------------------------------------------- /packages/SharpVectors.Reloaded.1.2.0/lib/net40/SharpVectors.Core.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/packages/SharpVectors.Reloaded.1.2.0/lib/net40/SharpVectors.Core.dll -------------------------------------------------------------------------------- /packages/SharpVectors.Reloaded.1.2.0/lib/net40/SharpVectors.Css.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/packages/SharpVectors.Reloaded.1.2.0/lib/net40/SharpVectors.Css.dll -------------------------------------------------------------------------------- /packages/SharpVectors.Reloaded.1.2.0/lib/net40/SharpVectors.Dom.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/packages/SharpVectors.Reloaded.1.2.0/lib/net40/SharpVectors.Dom.dll -------------------------------------------------------------------------------- /packages/SharpVectors.Reloaded.1.2.0/lib/net40/SharpVectors.Model.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/packages/SharpVectors.Reloaded.1.2.0/lib/net40/SharpVectors.Model.dll -------------------------------------------------------------------------------- /packages/SharpVectors.Reloaded.1.2.0/lib/net40/SharpVectors.Rendering.Gdi.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/packages/SharpVectors.Reloaded.1.2.0/lib/net40/SharpVectors.Rendering.Gdi.dll -------------------------------------------------------------------------------- /packages/SharpVectors.Reloaded.1.2.0/lib/net40/SharpVectors.Rendering.Wpf.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/packages/SharpVectors.Reloaded.1.2.0/lib/net40/SharpVectors.Rendering.Wpf.dll -------------------------------------------------------------------------------- /packages/SharpVectors.Reloaded.1.2.0/lib/net40/SharpVectors.Runtime.Wpf.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BerndK/SvgToXaml/87e6fcc39012620e759f83257a3900faf11e87d9/packages/SharpVectors.Reloaded.1.2.0/lib/net40/SharpVectors.Runtime.Wpf.dll -------------------------------------------------------------------------------- /packages/repositories.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | --------------------------------------------------------------------------------