1
1
mirror of https://github.com/exyte/Macaw.git synced 2024-09-21 01:47:44 +03:00

Perform requested changes

This commit is contained in:
Alisa Mylnikova 2018-05-07 15:26:05 +07:00
parent a98f9e2f3a
commit ba9cdbc902
4 changed files with 22 additions and 13 deletions

View File

@ -7,10 +7,10 @@
class SVGCanvas: Group {
let contentLayout: ContentLayout
let layout: ContentLayout
public init(contentLayout: ContentLayout, contents: [Node] = []) {
self.contentLayout = contentLayout
public init(layout: ContentLayout, contents: [Node] = []) {
self.layout = layout
super.init(contents: contents)
}

View File

@ -69,11 +69,11 @@ open class SVGParser {
fileprivate func parse() -> Group {
let parsedXml = SWXMLHash.parse(xmlString)
var contentLayout: ContentLayout?
var layout: ContentLayout?
for child in parsedXml.children {
if let element = child.element {
if element.name == "svg" {
contentLayout = parseViewBox(element)
layout = parseViewBox(element)
prepareSvg(child.children)
break
}
@ -81,8 +81,8 @@ open class SVGParser {
}
parseSvg(parsedXml.children)
if let contentLayout = contentLayout {
return SVGCanvas(contentLayout: contentLayout, contents: nodes)
if let layout = layout {
return SVGCanvas(layout: layout, contents: nodes)
}
return Group(contents: nodes)
}

View File

@ -1,5 +1,5 @@
public enum Dimension {
enum Dimension {
case percent(Double)
case pixels(Double)
@ -12,7 +12,7 @@ public enum Dimension {
}
}
public class Dimensions {
class Dimensions {
let width: Dimension
let height: Dimension
@ -30,13 +30,22 @@ public protocol ContentLayout {
open class SvgContentLayout: ContentLayout {
public let svgDimensions: Dimensions?
public let viewBox: Rect?
public let scalingMode: AspectRatio
public let xAligningMode: Align
public let yAligningMode: Align
public init(svgDimensions: Dimensions? = .none, viewBox: Rect? = .none, scalingMode: AspectRatio? = .meet, xAligningMode: Align? = .mid, yAligningMode: Align? = .mid) {
let svgDimensions: Dimensions?
let viewBox: Rect?
public init(scalingMode: AspectRatio? = .meet, xAligningMode: Align? = .mid, yAligningMode: Align? = .mid) {
self.svgDimensions = .none
self.viewBox = .none
self.scalingMode = scalingMode ?? .meet
self.xAligningMode = xAligningMode ?? .mid
self.yAligningMode = yAligningMode ?? .mid
}
init(svgDimensions: Dimensions? = .none, viewBox: Rect? = .none, scalingMode: AspectRatio? = .meet, xAligningMode: Align? = .mid, yAligningMode: Align? = .mid) {
self.svgDimensions = svgDimensions
self.viewBox = viewBox
self.scalingMode = scalingMode ?? .meet

View File

@ -18,7 +18,7 @@ open class MacawView: MView, MGestureRecognizerDelegate {
}
didSet {
if let canvas = node as? SVGCanvas, let params = canvas.contentLayout as? SvgContentLayout, let dimensions = params.svgDimensions {
if let canvas = node as? SVGCanvas, let params = canvas.layout as? SvgContentLayout, let dimensions = params.svgDimensions {
let width = dimensionToPixels(dimensions.width, framePixels: Double(frame.width))
let height = dimensionToPixels(dimensions.height, framePixels: Double(frame.height))