diff options
Diffstat (limited to 'tests/LayerDrawLooperTest.cpp')
-rw-r--r-- | tests/LayerDrawLooperTest.cpp | 31 |
1 files changed, 19 insertions, 12 deletions
diff --git a/tests/LayerDrawLooperTest.cpp b/tests/LayerDrawLooperTest.cpp index 68dd5e06e7..1facb23b51 100644 --- a/tests/LayerDrawLooperTest.cpp +++ b/tests/LayerDrawLooperTest.cpp @@ -15,6 +15,7 @@ #include "SkRect.h" #include "SkRefCnt.h" #include "SkScalar.h" +#include "SkSmallAllocator.h" #include "SkXfermode.h" #include "Test.h" @@ -57,10 +58,12 @@ static void test_frontToBack(skiatest::Reporter* reporter) { SkCanvas canvas(&device); SkPaint paint; SkAutoTUnref<SkLayerDrawLooper> looper(looperBuilder.detachLooper()); - looper->init(&canvas); + SkSmallAllocator<1, 32> allocator; + void* buffer = allocator.reserveT<SkDrawLooper::Context>(looper->contextSize()); + SkDrawLooper::Context* context = looper->createContext(&canvas, buffer); // The back layer should come first. - REPORTER_ASSERT(reporter, looper->next(&canvas, &paint)); + REPORTER_ASSERT(reporter, context->next(&canvas, &paint)); REPORTER_ASSERT(reporter, SkXfermode::IsMode(paint.getXfermode(), SkXfermode::kSrc_Mode)); canvas.drawRect(SkRect::MakeWH(50.0f, 50.0f), paint); REPORTER_ASSERT(reporter, 10.0f == device.fLastMatrix.getTranslateX()); @@ -68,14 +71,14 @@ static void test_frontToBack(skiatest::Reporter* reporter) { paint.reset(); // Then the front layer. - REPORTER_ASSERT(reporter, looper->next(&canvas, &paint)); + REPORTER_ASSERT(reporter, context->next(&canvas, &paint)); REPORTER_ASSERT(reporter, SkXfermode::IsMode(paint.getXfermode(), SkXfermode::kSrcOver_Mode)); canvas.drawRect(SkRect::MakeWH(50.0f, 50.0f), paint); REPORTER_ASSERT(reporter, 0.0f == device.fLastMatrix.getTranslateX()); REPORTER_ASSERT(reporter, 0.0f == device.fLastMatrix.getTranslateY()); // Only two layers were added, so that should be the end. - REPORTER_ASSERT(reporter, !looper->next(&canvas, &paint)); + REPORTER_ASSERT(reporter, !context->next(&canvas, &paint)); } static void test_backToFront(skiatest::Reporter* reporter) { @@ -95,10 +98,12 @@ static void test_backToFront(skiatest::Reporter* reporter) { SkCanvas canvas(&device); SkPaint paint; SkAutoTUnref<SkLayerDrawLooper> looper(looperBuilder.detachLooper()); - looper->init(&canvas); + SkSmallAllocator<1, 32> allocator; + void* buffer = allocator.reserveT<SkDrawLooper::Context>(looper->contextSize()); + SkDrawLooper::Context* context = looper->createContext(&canvas, buffer); // The back layer should come first. - REPORTER_ASSERT(reporter, looper->next(&canvas, &paint)); + REPORTER_ASSERT(reporter, context->next(&canvas, &paint)); REPORTER_ASSERT(reporter, SkXfermode::IsMode(paint.getXfermode(), SkXfermode::kSrcOver_Mode)); canvas.drawRect(SkRect::MakeWH(50.0f, 50.0f), paint); REPORTER_ASSERT(reporter, 0.0f == device.fLastMatrix.getTranslateX()); @@ -106,14 +111,14 @@ static void test_backToFront(skiatest::Reporter* reporter) { paint.reset(); // Then the front layer. - REPORTER_ASSERT(reporter, looper->next(&canvas, &paint)); + REPORTER_ASSERT(reporter, context->next(&canvas, &paint)); REPORTER_ASSERT(reporter, SkXfermode::IsMode(paint.getXfermode(), SkXfermode::kSrc_Mode)); canvas.drawRect(SkRect::MakeWH(50.0f, 50.0f), paint); REPORTER_ASSERT(reporter, 10.0f == device.fLastMatrix.getTranslateX()); REPORTER_ASSERT(reporter, 20.0f == device.fLastMatrix.getTranslateY()); // Only two layers were added, so that should be the end. - REPORTER_ASSERT(reporter, !looper->next(&canvas, &paint)); + REPORTER_ASSERT(reporter, !context->next(&canvas, &paint)); } static void test_mixed(skiatest::Reporter* reporter) { @@ -133,10 +138,12 @@ static void test_mixed(skiatest::Reporter* reporter) { SkCanvas canvas(&device); SkPaint paint; SkAutoTUnref<SkLayerDrawLooper> looper(looperBuilder.detachLooper()); - looper->init(&canvas); + SkSmallAllocator<1, 32> allocator; + void* buffer = allocator.reserveT<SkDrawLooper::Context>(looper->contextSize()); + SkDrawLooper::Context* context = looper->createContext(&canvas, buffer); // The back layer should come first. - REPORTER_ASSERT(reporter, looper->next(&canvas, &paint)); + REPORTER_ASSERT(reporter, context->next(&canvas, &paint)); REPORTER_ASSERT(reporter, SkXfermode::IsMode(paint.getXfermode(), SkXfermode::kSrcOver_Mode)); canvas.drawRect(SkRect::MakeWH(50.0f, 50.0f), paint); REPORTER_ASSERT(reporter, 0.0f == device.fLastMatrix.getTranslateX()); @@ -144,14 +151,14 @@ static void test_mixed(skiatest::Reporter* reporter) { paint.reset(); // Then the front layer. - REPORTER_ASSERT(reporter, looper->next(&canvas, &paint)); + REPORTER_ASSERT(reporter, context->next(&canvas, &paint)); REPORTER_ASSERT(reporter, SkXfermode::IsMode(paint.getXfermode(), SkXfermode::kSrc_Mode)); canvas.drawRect(SkRect::MakeWH(50.0f, 50.0f), paint); REPORTER_ASSERT(reporter, 10.0f == device.fLastMatrix.getTranslateX()); REPORTER_ASSERT(reporter, 20.0f == device.fLastMatrix.getTranslateY()); // Only two layers were added, so that should be the end. - REPORTER_ASSERT(reporter, !looper->next(&canvas, &paint)); + REPORTER_ASSERT(reporter, !context->next(&canvas, &paint)); } DEF_TEST(LayerDrawLooper, reporter) { |