From 734f146c1ebf43816d5a3c8e82c726ab09489cb9 Mon Sep 17 00:00:00 2001 From: Chris Craik Date: Thu, 24 Mar 2016 11:10:08 -0700 Subject: [PATCH] Add refBitmap tests Change-Id: I769457ff8934689bf425bab34a65d2a743959f9d --- libs/hwui/tests/unit/RecordingCanvasTests.cpp | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/libs/hwui/tests/unit/RecordingCanvasTests.cpp b/libs/hwui/tests/unit/RecordingCanvasTests.cpp index 6ab5110aaa9aa..ca726732f75f2 100644 --- a/libs/hwui/tests/unit/RecordingCanvasTests.cpp +++ b/libs/hwui/tests/unit/RecordingCanvasTests.cpp @@ -23,6 +23,9 @@ #include #include +#include +#include + namespace android { namespace uirenderer { @@ -599,6 +602,45 @@ TEST(RecordingCanvas, refPaint) { EXPECT_NE(&paint, ops[3]->paint); } +TEST(RecordingCanvas, refBitmapInShader_bitmapShader) { + SkBitmap bitmap = TestUtils::createSkBitmap(100, 100); + auto dl = TestUtils::createDisplayList(100, 100, [&bitmap](RecordingCanvas& canvas) { + SkPaint paint; + SkAutoTUnref shader(SkShader::CreateBitmapShader(bitmap, + SkShader::TileMode::kClamp_TileMode, + SkShader::TileMode::kClamp_TileMode)); + paint.setShader(shader); + canvas.drawRoundRect(0, 0, 100, 100, 20.0f, 20.0f, paint); + }); + auto& bitmaps = dl->getBitmapResources(); + EXPECT_EQ(1u, bitmaps.size()); +} + +TEST(RecordingCanvas, refBitmapInShader_composeShader) { + SkBitmap bitmap = TestUtils::createSkBitmap(100, 100); + auto dl = TestUtils::createDisplayList(100, 100, [&bitmap](RecordingCanvas& canvas) { + SkPaint paint; + SkAutoTUnref shader1(SkShader::CreateBitmapShader(bitmap, + SkShader::TileMode::kClamp_TileMode, + SkShader::TileMode::kClamp_TileMode)); + + SkPoint center; + center.set(50, 50); + SkColor colors[2]; + colors[0] = Color::Black; + colors[1] = Color::White; + SkAutoTUnref shader2(SkGradientShader::CreateRadial(center, 50, colors, nullptr, 2, + SkShader::TileMode::kRepeat_TileMode)); + + SkAutoTUnref composeShader(SkShader::CreateComposeShader(shader1, shader2, + SkXfermode::Mode::kMultiply_Mode)); + paint.setShader(composeShader); + canvas.drawRoundRect(0, 0, 100, 100, 20.0f, 20.0f, paint); + }); + auto& bitmaps = dl->getBitmapResources(); + EXPECT_EQ(1u, bitmaps.size()); +} + TEST(RecordingCanvas, drawText) { auto dl = TestUtils::createDisplayList(200, 200, [](RecordingCanvas& canvas) { Paint paint;