From e768c452dbd40b26ff81c41b90430654435c3cc7 Mon Sep 17 00:00:00 2001 From: Subhransu Mohanty Date: Fri, 14 Aug 2020 18:10:56 +0900 Subject: [PATCH] render: keep a path object in solid and image layer for reuse --- src/lottie/lottieitem.cpp | 16 ++++++++-------- src/lottie/lottieitem.h | 2 ++ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/lottie/lottieitem.cpp b/src/lottie/lottieitem.cpp index ec7586f..4f93794 100644 --- a/src/lottie/lottieitem.cpp +++ b/src/lottie/lottieitem.cpp @@ -672,12 +672,12 @@ renderer::SolidLayer::SolidLayer(model::Layer *layerData) void renderer::SolidLayer::updateContent() { if (flag() & DirtyFlagBit::Matrix) { - VPath path; - path.addRect(VRectF(0, 0, mLayerData->layerSize().width(), + mPath.reset(); + mPath.addRect(VRectF(0, 0, mLayerData->layerSize().width(), mLayerData->layerSize().height())); - path.transform(combinedMatrix()); + mPath.transform(combinedMatrix()); mRenderNode.mFlag |= VDrawable::DirtyState::Path; - mRenderNode.mPath = path; + mRenderNode.mPath = mPath; } if (flag() & DirtyFlagBit::Alpha) { model::Color color = mLayerData->solidColor(); @@ -716,12 +716,12 @@ void renderer::ImageLayer::updateContent() if (!mLayerData->asset()) return; if (flag() & DirtyFlagBit::Matrix) { - VPath path; - path.addRect(VRectF(0, 0, mLayerData->asset()->mWidth, + mPath.reset(); + mPath.addRect(VRectF(0, 0, mLayerData->asset()->mWidth, mLayerData->asset()->mHeight)); - path.transform(combinedMatrix()); + mPath.transform(combinedMatrix()); mRenderNode.mFlag |= VDrawable::DirtyState::Path; - mRenderNode.mPath = path; + mRenderNode.mPath = mPath; mTexture.mMatrix = combinedMatrix(); } diff --git a/src/lottie/lottieitem.h b/src/lottie/lottieitem.h index 9969488..1fcb561 100644 --- a/src/lottie/lottieitem.h +++ b/src/lottie/lottieitem.h @@ -306,6 +306,7 @@ protected: private: Drawable mRenderNode; + VPath mPath; VDrawable *mDrawableList{nullptr}; // to work with the Span api }; @@ -348,6 +349,7 @@ protected: private: Drawable mRenderNode; VTexture mTexture; + VPath mPath; VDrawable *mDrawableList{nullptr}; // to work with the Span api }; -- 2.34.1