diff --git a/Samples.bundle/base64.svg b/Samples.bundle/base64.svg new file mode 100644 index 0000000..69e2958 --- /dev/null +++ b/Samples.bundle/base64.svg @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/Samples.bundle/shapes.svg b/Samples.bundle/shapes.svg index 5f78f35..5125e25 100644 --- a/Samples.bundle/shapes.svg +++ b/Samples.bundle/shapes.svg @@ -93,4 +93,6 @@ + + \ No newline at end of file diff --git a/SwiftDraw/Renderer.CGText.swift b/SwiftDraw/Renderer.CGText.swift index 623995a..209f83b 100644 --- a/SwiftDraw/Renderer.CGText.swift +++ b/SwiftDraw/Renderer.CGText.swift @@ -557,7 +557,11 @@ public final class CGTextRenderer: Renderer { } func draw(image: LayerTree.Image) { + lines.append("ctx.saveGState()") + lines.append("ctx.translateBy(x: 0, y: image.height)") + lines.append("ctx.scaleBy(x: 1, y: -1)") lines.append("ctx.draw(image, in: CGRect(x: 0, y: 0, width: image.width, height: image.height)") + lines.append("ctx.restoreGState()") } func draw(linear gradient: LayerTree.Gradient, from start: String, to end: String) { diff --git a/SwiftDraw/Renderer.CoreGraphics.swift b/SwiftDraw/Renderer.CoreGraphics.swift index e186d0c..e09ca19 100644 --- a/SwiftDraw/Renderer.CoreGraphics.swift +++ b/SwiftDraw/Renderer.CoreGraphics.swift @@ -77,6 +77,7 @@ final class CGTransformingPattern: Equatable { } struct CGProvider: RendererTypeProvider { + typealias Types = CGTypes func createFloat(from float: LayerTree.Float) -> CGFloat { @@ -412,8 +413,12 @@ struct CGRenderer: Renderer { } func draw(image: CGImage) { - let rect = CGRect(x: 0, y: 0, width: image.width, height: image.height) - ctx.draw(image, in: rect) + let rect = CGRect(x: 0, y: 0, width: image.width, height: image.height) + pushState() + translate(tx: 0, ty: rect.height) + scale(sx: 1, sy: -1) + ctx.draw(image, in: rect) + popState() } func draw(linear gradient: CGGradient, from start: CGPoint, to end: CGPoint) {