From ac8e533e30395f0e0a46226d63b93a053aa64cba Mon Sep 17 00:00:00 2001 From: Anton Marunko Date: Thu, 16 Apr 2020 15:04:52 +0600 Subject: [PATCH 1/2] respects scale on rendering --- Source/model/scene/Shape.swift | 4 ++-- Source/render/NodeRenderer.swift | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Source/model/scene/Shape.swift b/Source/model/scene/Shape.swift index a86aae74..66817800 100644 --- a/Source/model/scene/Shape.swift +++ b/Source/model/scene/Shape.swift @@ -84,10 +84,10 @@ open class Shape: Node { } fileprivate func createContext() -> CGContext? { - + let screenScale: CGFloat = MMainScreen()?.scale ?? 1.0 let smallSize = CGSize(width: 1.0, height: 1.0) - MGraphicsBeginImageContextWithOptions(smallSize, false, 1.0) + MGraphicsBeginImageContextWithOptions(smallSize, false, screenScale) return MGraphicsGetCurrentContext() } diff --git a/Source/render/NodeRenderer.swift b/Source/render/NodeRenderer.swift index 4f5a7cd6..98284817 100644 --- a/Source/render/NodeRenderer.swift +++ b/Source/render/NodeRenderer.swift @@ -254,7 +254,8 @@ class NodeRenderer { } func renderToImage(bounds: Rect, inset: Double = 0, coloringMode: ColoringMode = .rgb) -> MImage { - MGraphicsBeginImageContextWithOptions(CGSize(width: bounds.w + inset, height: bounds.h + inset), false, 1) + let screenScale: CGFloat = MMainScreen()?.scale ?? 1.0 + MGraphicsBeginImageContextWithOptions(CGSize(width: bounds.w + inset, height: bounds.h + inset), false, screenScale) let tempContext = MGraphicsGetCurrentContext()! // flip y-axis and leave space for the blur From 72fe01040a961404fd7868671263f16291fcab7d Mon Sep 17 00:00:00 2001 From: Anton Marunko Date: Thu, 16 Apr 2020 16:41:04 +0600 Subject: [PATCH 2/2] Fix for mac os version building --- Source/model/scene/Shape.swift | 2 +- Source/render/GroupRenderer.swift | 2 +- Source/render/NodeRenderer.swift | 2 +- Source/views/MacawView.swift | 10 +++++----- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Source/model/scene/Shape.swift b/Source/model/scene/Shape.swift index 66817800..dc41af4c 100644 --- a/Source/model/scene/Shape.swift +++ b/Source/model/scene/Shape.swift @@ -84,7 +84,7 @@ open class Shape: Node { } fileprivate func createContext() -> CGContext? { - let screenScale: CGFloat = MMainScreen()?.scale ?? 1.0 + let screenScale: CGFloat = MMainScreen()?.mScale ?? 1.0 let smallSize = CGSize(width: 1.0, height: 1.0) MGraphicsBeginImageContextWithOptions(smallSize, false, screenScale) diff --git a/Source/render/GroupRenderer.swift b/Source/render/GroupRenderer.swift index 420c9628..76f02504 100644 --- a/Source/render/GroupRenderer.swift +++ b/Source/render/GroupRenderer.swift @@ -69,7 +69,7 @@ class GroupRenderer: NodeRenderer { renderers.removeAll() renderers = group.contents.compactMap { child -> NodeRenderer? in - return RenderUtils.createNodeRenderer(child, view: view, parentRenderer: self) + RenderUtils.createNodeRenderer(child, view: view, parentRenderer: self) } var parent: NodeRenderer = self diff --git a/Source/render/NodeRenderer.swift b/Source/render/NodeRenderer.swift index 98284817..957f3445 100644 --- a/Source/render/NodeRenderer.swift +++ b/Source/render/NodeRenderer.swift @@ -254,7 +254,7 @@ class NodeRenderer { } func renderToImage(bounds: Rect, inset: Double = 0, coloringMode: ColoringMode = .rgb) -> MImage { - let screenScale: CGFloat = MMainScreen()?.scale ?? 1.0 + let screenScale: CGFloat = MMainScreen()?.mScale ?? 1.0 MGraphicsBeginImageContextWithOptions(CGSize(width: bounds.w + inset, height: bounds.h + inset), false, screenScale) let tempContext = MGraphicsGetCurrentContext()! diff --git a/Source/views/MacawView.swift b/Source/views/MacawView.swift index 0b918eb9..2b208498 100644 --- a/Source/views/MacawView.swift +++ b/Source/views/MacawView.swift @@ -101,12 +101,12 @@ open class MacawView: MView, MGestureRecognizerDelegate { #if os(OSX) open override var layer: CALayer? { didSet { - guard self.layer != nil else { - return - } - initializeView() + guard self.layer != nil else { + return + } + initializeView() - self.renderer = RenderUtils.createNodeRenderer(node, view: self) + self.renderer = RenderUtils.createNodeRenderer(node, view: self) } } #endif