From 8842094e21d9a76e03dd201c05ee702c2d703c03 Mon Sep 17 00:00:00 2001 From: Demian Davidov Date: Sun, 6 Oct 2019 14:38:53 +0300 Subject: [PATCH 1/3] Added methods for rendering Node on CGContext --- Source/utils/CGMappings.swift | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/Source/utils/CGMappings.swift b/Source/utils/CGMappings.swift index e3acc84b..42d75c23 100644 --- a/Source/utils/CGMappings.swift +++ b/Source/utils/CGMappings.swift @@ -152,4 +152,20 @@ public extension Node { return img! } + func renderOn(ctx: CGContext) { + let renderer = RenderUtils.createNodeRenderer(self, view: nil, animationCache: nil) + renderer.render(in: ctx, force: false, opacity: self.opacity) + renderer.dispose() // have leaks without it + } + + func renderOn(ctx: CGContext, size: Size, layout: ContentLayout = .of()) { + let rect = size.rect() + ctx.clear(rect.toCG()) + let transform = LayoutHelper.calcTransform(self, layout, size) + ctx.saveGState() + ctx.concatenate(transform.toCG()) + renderOn(ctx: ctx) + ctx.restoreGState() + } + } From 9366cf5b46ebe7ed506f30835f9ac99896e26add Mon Sep 17 00:00:00 2001 From: Demian Davidov Date: Mon, 7 Oct 2019 09:30:59 +0300 Subject: [PATCH 2/3] reuse renderOn() --- Source/utils/CGMappings.swift | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/Source/utils/CGMappings.swift b/Source/utils/CGMappings.swift index 42d75c23..5c823712 100644 --- a/Source/utils/CGMappings.swift +++ b/Source/utils/CGMappings.swift @@ -136,7 +136,6 @@ public extension CGAffineTransform { public extension Node { func toNativeImage(size: Size, layout: ContentLayout = .of()) -> MImage { - let renderer = RenderUtils.createNodeRenderer(self, view: nil) let rect = size.rect() MGraphicsBeginImageContextWithOptions(size.toCG(), false, 1) @@ -145,7 +144,7 @@ public extension Node { let transform = LayoutHelper.calcTransform(self, layout, size) ctx.concatenate(transform.toCG()) - renderer.render(in: ctx, force: false, opacity: self.opacity) + rendererOn(ctx: ctx) let img = MGraphicsGetImageFromCurrentImageContext() MGraphicsEndImageContext() @@ -157,15 +156,5 @@ public extension Node { renderer.render(in: ctx, force: false, opacity: self.opacity) renderer.dispose() // have leaks without it } - - func renderOn(ctx: CGContext, size: Size, layout: ContentLayout = .of()) { - let rect = size.rect() - ctx.clear(rect.toCG()) - let transform = LayoutHelper.calcTransform(self, layout, size) - ctx.saveGState() - ctx.concatenate(transform.toCG()) - renderOn(ctx: ctx) - ctx.restoreGState() - } } From 93608e5af487319e03301105424710a3852aff41 Mon Sep 17 00:00:00 2001 From: Demian Davidov Date: Mon, 7 Oct 2019 09:49:49 +0300 Subject: [PATCH 3/3] typo 2 --- Source/utils/CGMappings.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Source/utils/CGMappings.swift b/Source/utils/CGMappings.swift index 5c823712..9976a25d 100644 --- a/Source/utils/CGMappings.swift +++ b/Source/utils/CGMappings.swift @@ -144,7 +144,7 @@ public extension Node { let transform = LayoutHelper.calcTransform(self, layout, size) ctx.concatenate(transform.toCG()) - rendererOn(ctx: ctx) + renderOn(ctx: ctx) let img = MGraphicsGetImageFromCurrentImageContext() MGraphicsEndImageContext() @@ -152,7 +152,7 @@ public extension Node { } func renderOn(ctx: CGContext) { - let renderer = RenderUtils.createNodeRenderer(self, view: nil, animationCache: nil) + let renderer = RenderUtils.createNodeRenderer(self, view: nil) renderer.render(in: ctx, force: false, opacity: self.opacity) renderer.dispose() // have leaks without it }