diff --git a/Tests/LottieMetalTest/SoftwareLottieRenderer/Sources/Canvas.h b/Tests/LottieMetalTest/SoftwareLottieRenderer/Sources/Canvas.h index 88eaf678fb..1aa1c930bb 100644 --- a/Tests/LottieMetalTest/SoftwareLottieRenderer/Sources/Canvas.h +++ b/Tests/LottieMetalTest/SoftwareLottieRenderer/Sources/Canvas.h @@ -67,6 +67,7 @@ public: virtual void setAlpha(float alpha) = 0; virtual void concatenate(lottie::CATransform3D const &transform) = 0; + virtual lottie::CATransform3D currentTransform() = 0; virtual void draw(std::shared_ptr const &other, lottie::CGRect const &rect) = 0; }; diff --git a/Tests/LottieMetalTest/SoftwareLottieRenderer/Sources/CoreGraphicsCanvasImpl.h b/Tests/LottieMetalTest/SoftwareLottieRenderer/Sources/CoreGraphicsCanvasImpl.h index dbc9ad5814..de7c1f39dd 100644 --- a/Tests/LottieMetalTest/SoftwareLottieRenderer/Sources/CoreGraphicsCanvasImpl.h +++ b/Tests/LottieMetalTest/SoftwareLottieRenderer/Sources/CoreGraphicsCanvasImpl.h @@ -41,6 +41,7 @@ public: virtual void setBlendMode(BlendMode blendMode) override; virtual void setAlpha(float alpha) override; virtual void concatenate(lottie::CATransform3D const &transform) override; + virtual lottie::CATransform3D currentTransform() override; virtual std::shared_ptr makeImage() const; virtual void draw(std::shared_ptr const &other, lottie::CGRect const &rect) override; diff --git a/Tests/LottieMetalTest/SoftwareLottieRenderer/Sources/CoreGraphicsCanvasImpl.mm b/Tests/LottieMetalTest/SoftwareLottieRenderer/Sources/CoreGraphicsCanvasImpl.mm index 2eb352c5c9..db48fd2f4b 100644 --- a/Tests/LottieMetalTest/SoftwareLottieRenderer/Sources/CoreGraphicsCanvasImpl.mm +++ b/Tests/LottieMetalTest/SoftwareLottieRenderer/Sources/CoreGraphicsCanvasImpl.mm @@ -467,6 +467,10 @@ void CanvasImpl::concatenate(lottie::CATransform3D const &transform) { CGContextConcatCTM(_context, CATransform3DGetAffineTransform(nativeTransform(transform))); } +lottie::CATransform3D CanvasImpl::currentTransform() { + return lottie::fromNativeTransform(CATransform3DMakeAffineTransform(CGContextGetCTM(_context))); +} + std::shared_ptr CanvasImpl::makeImage() const { ::CGImageRef nativeImage = CGBitmapContextCreateImage(_context); if (nativeImage) { diff --git a/Tests/LottieMetalTest/SoftwareLottieRenderer/Sources/ThorVGCanvasImpl.h b/Tests/LottieMetalTest/SoftwareLottieRenderer/Sources/ThorVGCanvasImpl.h index 5c5bcba396..39126f6036 100644 --- a/Tests/LottieMetalTest/SoftwareLottieRenderer/Sources/ThorVGCanvasImpl.h +++ b/Tests/LottieMetalTest/SoftwareLottieRenderer/Sources/ThorVGCanvasImpl.h @@ -33,6 +33,7 @@ public: virtual void setAlpha(float alpha) override; virtual void concatenate(lottie::CATransform3D const &transform) override; + virtual lottie::CATransform3D currentTransform() override; virtual void draw(std::shared_ptr const &other, lottie::CGRect const &rect) override; diff --git a/Tests/LottieMetalTest/SoftwareLottieRenderer/Sources/ThorVGCanvasImpl.mm b/Tests/LottieMetalTest/SoftwareLottieRenderer/Sources/ThorVGCanvasImpl.mm index f2d642f1c7..a6561c587a 100644 --- a/Tests/LottieMetalTest/SoftwareLottieRenderer/Sources/ThorVGCanvasImpl.mm +++ b/Tests/LottieMetalTest/SoftwareLottieRenderer/Sources/ThorVGCanvasImpl.mm @@ -271,6 +271,10 @@ void ThorVGCanvasImpl::concatenate(lottie::CATransform3D const &transform) { ));*/ } +lottie::CATransform3D ThorVGCanvasImpl::currentTransform() { + return _transform; +} + void ThorVGCanvasImpl::draw(std::shared_ptr const &other, lottie::CGRect const &rect) { /*ThorVGCanvasImpl *impl = (ThorVGCanvasImpl *)other.get(); auto image = impl->surface()->makeImageSnapshot();