From 524b734fc11d34c8f04a750a0eb3ff459fa1d59c Mon Sep 17 00:00:00 2001 From: Yuriy Kashnikov Date: Wed, 13 Sep 2017 11:54:54 +0300 Subject: [PATCH] Improve SVG Serializer - Support transform and placing - Expose height and width --- Source/svg/SVGSerializer.swift | 45 +++++++++++++++++----------------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/Source/svg/SVGSerializer.swift b/Source/svg/SVGSerializer.swift index 4f864c61..11e9f74c 100644 --- a/Source/svg/SVGSerializer.swift +++ b/Source/svg/SVGSerializer.swift @@ -25,29 +25,14 @@ open class SVGSerializer { self.indent = indent } - fileprivate init(indent:Int) { - self.width = SVGDefaultWidth - self.height = SVGDefaultHeight - self.id = SVGDefaultId - self.indent = indent - } - - fileprivate init() { - self.width = SVGDefaultWidth - self.height = SVGDefaultHeight - self.id = SVGDefaultId - self.indent = 1 - } - // header and footer fileprivate let SVGDefaultHeader = " String { - var result = [SVGDefaultHeader, "id=\"\(self.id)\"", "width=\"\(self.width)\"", "height=\"\(self.height)\"", SVGGenericEndTag].joined(separator: " ") + var sizes = "" + if width != -1 { + sizes += "width=\"\(self.width)\"" + } + if height != -1 { + sizes += "height=\"\(self.height)\"" + } + var result = [SVGDefaultHeader, "id=\"\(self.id)\"", sizes, SVGGenericEndTag].joined(separator: " ") result += serialize(node: node, offset: 1) result += indentTextWithOffset(SVGFooter, 0) return result } - open class func serialize(node: Node, indent: Int = 1) -> String { - return SVGSerializer(indent:indent).serialize(node: node) + open class func serialize(node: Node, width: Int = SVGUndefinedSize, height: Int = SVGUndefinedSize, id: String = SVGDefaultId, indent: Int = 1) -> String { + return SVGSerializer(width: width, height:height, id: id, indent:indent).serialize(node: node) } - + }