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:
parent
a98f9e2f3a
commit
ba9cdbc902
@ -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)
|
||||
}
|
||||
|
||||
|
@ -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)
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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))
|
||||
|
Loading…
Reference in New Issue
Block a user