diff options
author | 2016-08-04 16:21:07 -0700 | |
---|---|---|
committer | 2016-08-04 17:08:26 -0700 | |
commit | 89561e6e4201aebc78a76ac055071ad2149db704 (patch) | |
tree | 7542873756c907d67c45483b7c5dd504833f4bb1 | |
parent | d93b9bde90522a7da6a0875a9f33ef9361088449 (diff) |
HWUI: Fix snapping in path rendering
bug:30444274
Change-Id: Ib10058659af47625b366c26e0b872fa3f1854cd0
-rw-r--r-- | libs/hwui/PathCache.cpp | 4 | ||||
-rw-r--r-- | libs/hwui/tests/unit/BakedOpDispatcherTests.cpp | 15 |
2 files changed, 17 insertions, 2 deletions
diff --git a/libs/hwui/PathCache.cpp b/libs/hwui/PathCache.cpp index b5c43ffb2916..1c298b16154d 100644 --- a/libs/hwui/PathCache.cpp +++ b/libs/hwui/PathCache.cpp @@ -127,8 +127,8 @@ static void computePathBounds(const SkPath* path, const SkPaint* paint, PathText const float pathWidth = std::max(bounds.width(), 1.0f); const float pathHeight = std::max(bounds.height(), 1.0f); - texture->left = bounds.fLeft; - texture->top = bounds.fTop; + texture->left = floorf(bounds.fLeft); + texture->top = floorf(bounds.fTop); texture->offset = (int) floorf(std::max(paint->getStrokeWidth(), 1.0f) * 1.5f + 0.5f); diff --git a/libs/hwui/tests/unit/BakedOpDispatcherTests.cpp b/libs/hwui/tests/unit/BakedOpDispatcherTests.cpp index eb236c47baf6..9deb441c6e1c 100644 --- a/libs/hwui/tests/unit/BakedOpDispatcherTests.cpp +++ b/libs/hwui/tests/unit/BakedOpDispatcherTests.cpp @@ -27,6 +27,7 @@ #include <SkBlurDrawLooper.h> #include <SkDashPathEffect.h> +#include <SkPath.h> using namespace android::uirenderer; @@ -273,3 +274,17 @@ RENDERTHREAD_TEST(BakedOpDispatcher, layerUpdateProperties) { } } } + +RENDERTHREAD_TEST(BakedOpDispatcher, pathTextureSnapping) { + Rect bounds(10, 15, 20, 25); + SkPaint paint; + SkPath path; + path.addRect(SkRect::MakeXYWH(1.5, 3.8, 100, 90)); + PathOp op(bounds, Matrix4::identity(), nullptr, &paint, &path); + testUnmergedGlopDispatch(renderThread, &op, [] (const Glop& glop) { + auto texture = glop.fill.texture.texture; + ASSERT_NE(nullptr, texture); + EXPECT_EQ(1, reinterpret_cast<PathTexture*>(texture)->left); + EXPECT_EQ(3, reinterpret_cast<PathTexture*>(texture)->top); + }); +}
\ No newline at end of file |