Loading core/jni/android_graphics_drawable_VectorDrawable.cpp +8 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,13 @@ static jlong createTree(JNIEnv*, jobject, jlong groupPtr) { return reinterpret_cast<jlong>(tree); } static jlong createTreeFromCopy(JNIEnv*, jobject, jlong treePtr, jlong groupPtr) { VectorDrawable::Group* rootGroup = reinterpret_cast<VectorDrawable::Group*>(groupPtr); VectorDrawable::Tree* treeToCopy = reinterpret_cast<VectorDrawable::Tree*>(treePtr); VectorDrawable::Tree* tree = new VectorDrawable::Tree(treeToCopy, rootGroup); return reinterpret_cast<jlong>(tree); } static jlong createEmptyFullPath(JNIEnv*, jobject) { VectorDrawable::FullPath* newPath = new VectorDrawable::FullPath(); return reinterpret_cast<jlong>(newPath); Loading Loading @@ -344,6 +351,7 @@ static void setTrimPathOffset(JNIEnv*, jobject, jlong fullPathPtr, jfloat trimPa static const JNINativeMethod gMethods[] = { {"nCreateTree", "!(J)J", (void*)createTree}, {"nCreateTreeFromCopy", "!(JJ)J", (void*)createTreeFromCopy}, {"nSetRendererViewportSize", "!(JFF)V", (void*)setTreeViewportSize}, {"nSetRootAlpha", "!(JF)Z", (void*)setRootAlpha}, {"nGetRootAlpha", "!(J)F", (void*)getRootAlpha}, Loading graphics/java/android/graphics/drawable/VectorDrawable.java +12 −1 Original line number Diff line number Diff line Loading @@ -804,7 +804,7 @@ public class VectorDrawable extends Drawable { mTintMode = copy.mTintMode; mAutoMirrored = copy.mAutoMirrored; mRootGroup = new VGroup(copy.mRootGroup, mVGTargetsMap); createNativeTree(mRootGroup); createNativeTreeFromCopy(copy, mRootGroup); mBaseWidth = copy.mBaseWidth; mBaseHeight = copy.mBaseHeight; Loading @@ -826,6 +826,16 @@ public class VectorDrawable extends Drawable { VMRuntime.getRuntime().registerNativeAllocation(NATIVE_ALLOCATION_SIZE); } // Create a new native tree with the given root group, and copy the properties from the // given VectorDrawableState's native tree. private void createNativeTreeFromCopy(VectorDrawableState copy, VGroup rootGroup) { mNativeTree = new VirtualRefBasePtr(nCreateTreeFromCopy( copy.mNativeTree.get(), rootGroup.mNativePtr)); // Register tree size VMRuntime.getRuntime().registerNativeAllocation(NATIVE_ALLOCATION_SIZE); } void onTreeConstructionFinished() { mRootGroup.setTree(mNativeTree); mAllocationOfAllNodes = mRootGroup.getNativeSize(); Loading Loading @@ -1777,6 +1787,7 @@ public class VectorDrawable extends Drawable { } private static native long nCreateTree(long rootGroupPtr); private static native long nCreateTreeFromCopy(long treeToCopy, long rootGroupPtr); private static native void nSetRendererViewportSize(long rendererPtr, float viewportWidth, float viewportHeight); private static native boolean nSetRootAlpha(long rendererPtr, float alpha); Loading libs/hwui/VectorDrawable.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -530,7 +530,7 @@ SkPaint* Tree::updatePaint(SkPaint* outPaint, TreeProperties* prop) { if (prop->getRootAlpha() == 1.0f && prop->getColorFilter() == nullptr) { return nullptr; } else { outPaint->setColorFilter(mStagingProperties.getColorFilter()); outPaint->setColorFilter(prop->getColorFilter()); outPaint->setFilterQuality(kLow_SkFilterQuality); outPaint->setAlpha(prop->getRootAlpha() * 255); return outPaint; Loading libs/hwui/VectorDrawable.h +7 −1 Original line number Diff line number Diff line Loading @@ -542,6 +542,12 @@ public: Tree(Group* rootNode) : mRootNode(rootNode) { mRootNode->setPropertyChangedListener(&mPropertyChangedListener); } // Copy properties from the tree and use the give node as the root node Tree(const Tree* copy, Group* rootNode) : Tree(rootNode) { mStagingProperties.syncAnimatableProperties(*copy->stagingProperties()); mStagingProperties.syncNonAnimatableProperties(*copy->stagingProperties()); } // Draws the VD onto a bitmap cache, then the bitmap cache will be rendered onto the input // canvas. Returns the number of pixels needed for the bitmap cache. int draw(Canvas* outCanvas, SkColorFilter* colorFilter, Loading Loading @@ -666,7 +672,7 @@ public: }; void onPropertyChanged(TreeProperties* prop); TreeProperties* mutateStagingProperties() { return &mStagingProperties; } const TreeProperties* stagingProperties() { return &mStagingProperties; } const TreeProperties* stagingProperties() const { return &mStagingProperties; } PushStagingFunctor* getFunctor() { return &mFunctor;} // This should only be called from animations on RT Loading Loading
core/jni/android_graphics_drawable_VectorDrawable.cpp +8 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,13 @@ static jlong createTree(JNIEnv*, jobject, jlong groupPtr) { return reinterpret_cast<jlong>(tree); } static jlong createTreeFromCopy(JNIEnv*, jobject, jlong treePtr, jlong groupPtr) { VectorDrawable::Group* rootGroup = reinterpret_cast<VectorDrawable::Group*>(groupPtr); VectorDrawable::Tree* treeToCopy = reinterpret_cast<VectorDrawable::Tree*>(treePtr); VectorDrawable::Tree* tree = new VectorDrawable::Tree(treeToCopy, rootGroup); return reinterpret_cast<jlong>(tree); } static jlong createEmptyFullPath(JNIEnv*, jobject) { VectorDrawable::FullPath* newPath = new VectorDrawable::FullPath(); return reinterpret_cast<jlong>(newPath); Loading Loading @@ -344,6 +351,7 @@ static void setTrimPathOffset(JNIEnv*, jobject, jlong fullPathPtr, jfloat trimPa static const JNINativeMethod gMethods[] = { {"nCreateTree", "!(J)J", (void*)createTree}, {"nCreateTreeFromCopy", "!(JJ)J", (void*)createTreeFromCopy}, {"nSetRendererViewportSize", "!(JFF)V", (void*)setTreeViewportSize}, {"nSetRootAlpha", "!(JF)Z", (void*)setRootAlpha}, {"nGetRootAlpha", "!(J)F", (void*)getRootAlpha}, Loading
graphics/java/android/graphics/drawable/VectorDrawable.java +12 −1 Original line number Diff line number Diff line Loading @@ -804,7 +804,7 @@ public class VectorDrawable extends Drawable { mTintMode = copy.mTintMode; mAutoMirrored = copy.mAutoMirrored; mRootGroup = new VGroup(copy.mRootGroup, mVGTargetsMap); createNativeTree(mRootGroup); createNativeTreeFromCopy(copy, mRootGroup); mBaseWidth = copy.mBaseWidth; mBaseHeight = copy.mBaseHeight; Loading @@ -826,6 +826,16 @@ public class VectorDrawable extends Drawable { VMRuntime.getRuntime().registerNativeAllocation(NATIVE_ALLOCATION_SIZE); } // Create a new native tree with the given root group, and copy the properties from the // given VectorDrawableState's native tree. private void createNativeTreeFromCopy(VectorDrawableState copy, VGroup rootGroup) { mNativeTree = new VirtualRefBasePtr(nCreateTreeFromCopy( copy.mNativeTree.get(), rootGroup.mNativePtr)); // Register tree size VMRuntime.getRuntime().registerNativeAllocation(NATIVE_ALLOCATION_SIZE); } void onTreeConstructionFinished() { mRootGroup.setTree(mNativeTree); mAllocationOfAllNodes = mRootGroup.getNativeSize(); Loading Loading @@ -1777,6 +1787,7 @@ public class VectorDrawable extends Drawable { } private static native long nCreateTree(long rootGroupPtr); private static native long nCreateTreeFromCopy(long treeToCopy, long rootGroupPtr); private static native void nSetRendererViewportSize(long rendererPtr, float viewportWidth, float viewportHeight); private static native boolean nSetRootAlpha(long rendererPtr, float alpha); Loading
libs/hwui/VectorDrawable.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -530,7 +530,7 @@ SkPaint* Tree::updatePaint(SkPaint* outPaint, TreeProperties* prop) { if (prop->getRootAlpha() == 1.0f && prop->getColorFilter() == nullptr) { return nullptr; } else { outPaint->setColorFilter(mStagingProperties.getColorFilter()); outPaint->setColorFilter(prop->getColorFilter()); outPaint->setFilterQuality(kLow_SkFilterQuality); outPaint->setAlpha(prop->getRootAlpha() * 255); return outPaint; Loading
libs/hwui/VectorDrawable.h +7 −1 Original line number Diff line number Diff line Loading @@ -542,6 +542,12 @@ public: Tree(Group* rootNode) : mRootNode(rootNode) { mRootNode->setPropertyChangedListener(&mPropertyChangedListener); } // Copy properties from the tree and use the give node as the root node Tree(const Tree* copy, Group* rootNode) : Tree(rootNode) { mStagingProperties.syncAnimatableProperties(*copy->stagingProperties()); mStagingProperties.syncNonAnimatableProperties(*copy->stagingProperties()); } // Draws the VD onto a bitmap cache, then the bitmap cache will be rendered onto the input // canvas. Returns the number of pixels needed for the bitmap cache. int draw(Canvas* outCanvas, SkColorFilter* colorFilter, Loading Loading @@ -666,7 +672,7 @@ public: }; void onPropertyChanged(TreeProperties* prop); TreeProperties* mutateStagingProperties() { return &mStagingProperties; } const TreeProperties* stagingProperties() { return &mStagingProperties; } const TreeProperties* stagingProperties() const { return &mStagingProperties; } PushStagingFunctor* getFunctor() { return &mFunctor;} // This should only be called from animations on RT Loading