From c63f9e29fff5c3485dceb19c1afb7d7fb4b87cd2 Mon Sep 17 00:00:00 2001 From: Mikael Sand Date: Sun, 6 Oct 2019 17:47:46 +0300 Subject: [PATCH] fix: improve native method spec conformance --- .../java/com/horcrux/svg/RNSVGRenderableManager.java | 11 +++++------ ios/ViewManagers/RNSVGRenderableManager.m | 10 +++------- 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/android/src/main/java/com/horcrux/svg/RNSVGRenderableManager.java b/android/src/main/java/com/horcrux/svg/RNSVGRenderableManager.java index d170d0ba8..064393dfb 100644 --- a/android/src/main/java/com/horcrux/svg/RNSVGRenderableManager.java +++ b/android/src/main/java/com/horcrux/svg/RNSVGRenderableManager.java @@ -159,6 +159,7 @@ public WritableMap getCTM(int tag) { return null; } + float scale = svg.mScale; Matrix ctm = new Matrix(svg.mCTM); Matrix invViewBoxMatrix = svg.getSvgView().mInvViewBoxMatrix; ctm.preConcat(invViewBoxMatrix); @@ -171,8 +172,8 @@ public WritableMap getCTM(int tag) { result.putDouble("b", values[Matrix.MSKEW_Y]); result.putDouble("c", values[Matrix.MSKEW_X]); result.putDouble("d", values[Matrix.MSCALE_Y]); - result.putDouble("e", values[Matrix.MTRANS_X]); - result.putDouble("f", values[Matrix.MTRANS_Y]); + result.putDouble("e", values[Matrix.MTRANS_X] / scale); + result.putDouble("f", values[Matrix.MTRANS_Y] / scale); return result; } @@ -186,8 +187,6 @@ public WritableMap getScreenCTM(int tag) { float[] values = new float[9]; svg.mCTM.getValues(values); - - SvgView root = svg.getSvgView(); float scale = svg.mScale; WritableMap result = Arguments.createMap(); @@ -195,8 +194,8 @@ public WritableMap getScreenCTM(int tag) { result.putDouble("b", values[Matrix.MSKEW_Y]); result.putDouble("c", values[Matrix.MSKEW_X]); result.putDouble("d", values[Matrix.MSCALE_Y]); - result.putDouble("e", values[Matrix.MTRANS_X] + root.getLeft() / scale); - result.putDouble("f", values[Matrix.MTRANS_Y] + root.getTop() / scale); + result.putDouble("e", values[Matrix.MTRANS_X] / scale); + result.putDouble("f", values[Matrix.MTRANS_Y] / scale); return result; } } diff --git a/ios/ViewManagers/RNSVGRenderableManager.m b/ios/ViewManagers/RNSVGRenderableManager.m index b6ee5320f..fee4ade23 100644 --- a/ios/ViewManagers/RNSVGRenderableManager.m +++ b/ios/ViewManagers/RNSVGRenderableManager.m @@ -228,18 +228,14 @@ - (RNSVGRenderable *)node } RNSVGRenderable *svg = (RNSVGRenderable *)view; - RNSVGSvgView* root = svg.svgView; - CGAffineTransform viewbox = [root getViewBoxTransform]; - CGAffineTransform ctm = CGAffineTransformConcat(svg.ctm, viewbox); - CGPoint offset = [root convertPoint:CGPointZero toView:svg.window]; - + CGAffineTransform ctm = svg.ctm; return @{ @"a":@(ctm.a), @"b":@(ctm.b), @"c":@(ctm.c), @"d":@(ctm.d), - @"e":@(ctm.tx + offset.x), - @"f":@(ctm.ty + offset.y) + @"e":@(ctm.tx), + @"f":@(ctm.ty) }; }