Loading libs/hwui/RenderNode.cpp +5 −2 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ #include "Debug.h" #include "DisplayListOp.h" #include "DisplayListLogBuffer.h" #include "utils/MathUtils.h" namespace android { namespace uirenderer { Loading Loading @@ -217,7 +218,9 @@ void RenderNode::applyViewPropertyTransforms(mat4& matrix, bool true3dTransform) mat4 anim(*properties().getAnimationMatrix()); matrix.multiply(anim); } if (properties().hasTransformMatrix()) { bool applyTranslationZ = true3dTransform && !MathUtils::isZero(properties().getTranslationZ()); if (properties().hasTransformMatrix() || applyTranslationZ) { if (properties().isTransformTranslateOnly()) { matrix.translate(properties().getTranslationX(), properties().getTranslationY(), true3dTransform ? properties().getTranslationZ() : 0.0f); Loading Loading @@ -391,7 +394,7 @@ void RenderNode::buildZSortedChildList(Vector<ZDrawDisplayListOpPair>& zTranslat RenderNode* child = childOp->mDisplayList; float childZ = child->properties().getTranslationZ(); if (childZ != 0.0f) { if (!MathUtils::isZero(childZ)) { zTranslatedNodes.add(ZDrawDisplayListOpPair(childZ, childOp)); childOp->mSkipInOrderDraw = true; } else if (!child->properties().getProjectBackwards()) { Loading libs/hwui/RenderProperties.cpp +2 −11 Original line number Diff line number Diff line Loading @@ -26,16 +26,7 @@ #include <SkPathOps.h> #include "Matrix.h" /** * Convenience value to check for float values that are close enough to zero to be considered * zero. */ #define NONZERO_EPSILON .001f static inline bool is_zero(float value) { return (value >= -NONZERO_EPSILON) && (value <= NONZERO_EPSILON); } #include "utils/MathUtils.h" namespace android { namespace uirenderer { Loading Loading @@ -151,7 +142,7 @@ void RenderProperties::updateMatrix() { } SkMatrix* transform = mComputedFields.mTransformMatrix; transform->reset(); if (is_zero(getRotationX()) && is_zero(getRotationY())) { if (MathUtils::isZero(getRotationX()) && MathUtils::isZero(getRotationY())) { transform->setTranslate(getTranslationX(), getTranslationY()); transform->preRotate(getRotation(), getPivotX(), getPivotY()); transform->preScale(getScaleX(), getScaleY(), getPivotX(), getPivotY()); Loading libs/hwui/utils/MathUtils.h 0 → 100644 +37 −0 Original line number Diff line number Diff line /* * Copyright (C) 2014 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef MATHUTILS_H #define MATHUTILS_H namespace android { namespace uirenderer { class MathUtils { private: static const float gNonZeroEpsilon = 0.001f; public: /** * Check for floats that are close enough to zero. */ inline static bool isZero(float value) { return (value >= -gNonZeroEpsilon) && (value <= gNonZeroEpsilon); } }; // class MathUtils } /* namespace uirenderer */ } /* namespace android */ #endif /* RENDERNODE_H */ Loading
libs/hwui/RenderNode.cpp +5 −2 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ #include "Debug.h" #include "DisplayListOp.h" #include "DisplayListLogBuffer.h" #include "utils/MathUtils.h" namespace android { namespace uirenderer { Loading Loading @@ -217,7 +218,9 @@ void RenderNode::applyViewPropertyTransforms(mat4& matrix, bool true3dTransform) mat4 anim(*properties().getAnimationMatrix()); matrix.multiply(anim); } if (properties().hasTransformMatrix()) { bool applyTranslationZ = true3dTransform && !MathUtils::isZero(properties().getTranslationZ()); if (properties().hasTransformMatrix() || applyTranslationZ) { if (properties().isTransformTranslateOnly()) { matrix.translate(properties().getTranslationX(), properties().getTranslationY(), true3dTransform ? properties().getTranslationZ() : 0.0f); Loading Loading @@ -391,7 +394,7 @@ void RenderNode::buildZSortedChildList(Vector<ZDrawDisplayListOpPair>& zTranslat RenderNode* child = childOp->mDisplayList; float childZ = child->properties().getTranslationZ(); if (childZ != 0.0f) { if (!MathUtils::isZero(childZ)) { zTranslatedNodes.add(ZDrawDisplayListOpPair(childZ, childOp)); childOp->mSkipInOrderDraw = true; } else if (!child->properties().getProjectBackwards()) { Loading
libs/hwui/RenderProperties.cpp +2 −11 Original line number Diff line number Diff line Loading @@ -26,16 +26,7 @@ #include <SkPathOps.h> #include "Matrix.h" /** * Convenience value to check for float values that are close enough to zero to be considered * zero. */ #define NONZERO_EPSILON .001f static inline bool is_zero(float value) { return (value >= -NONZERO_EPSILON) && (value <= NONZERO_EPSILON); } #include "utils/MathUtils.h" namespace android { namespace uirenderer { Loading Loading @@ -151,7 +142,7 @@ void RenderProperties::updateMatrix() { } SkMatrix* transform = mComputedFields.mTransformMatrix; transform->reset(); if (is_zero(getRotationX()) && is_zero(getRotationY())) { if (MathUtils::isZero(getRotationX()) && MathUtils::isZero(getRotationY())) { transform->setTranslate(getTranslationX(), getTranslationY()); transform->preRotate(getRotation(), getPivotX(), getPivotY()); transform->preScale(getScaleX(), getScaleY(), getPivotX(), getPivotY()); Loading
libs/hwui/utils/MathUtils.h 0 → 100644 +37 −0 Original line number Diff line number Diff line /* * Copyright (C) 2014 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef MATHUTILS_H #define MATHUTILS_H namespace android { namespace uirenderer { class MathUtils { private: static const float gNonZeroEpsilon = 0.001f; public: /** * Check for floats that are close enough to zero. */ inline static bool isZero(float value) { return (value >= -gNonZeroEpsilon) && (value <= gNonZeroEpsilon); } }; // class MathUtils } /* namespace uirenderer */ } /* namespace android */ #endif /* RENDERNODE_H */