| Index: tests/CanvasTest.cpp
|
| diff --git a/tests/CanvasTest.cpp b/tests/CanvasTest.cpp
|
| index 70c2c04ffabf511239239fe8fe3cf91ab78582af..c85fc1d4083e7af82034c9a8bead7070d22bf73e 100644
|
| --- a/tests/CanvasTest.cpp
|
| +++ b/tests/CanvasTest.cpp
|
| @@ -779,6 +779,45 @@ DEF_TEST(Canvas_ClipEmptyPath, reporter) {
|
| canvas.restore();
|
| }
|
|
|
| +#define SHADOW_TEST_CANVAS_CONST 10
|
| +
|
| +class SkShadowTestCanvas : public SkPaintFilterCanvas {
|
| +public:
|
| +
|
| + SkShadowTestCanvas(int x, int y, skiatest::Reporter* reporter)
|
| + : INHERITED(x,y)
|
| + , fReporter(reporter) {}
|
| +
|
| + bool onFilter(SkTCopyOnFirstWrite<SkPaint>* paint, Type type) const {
|
| + REPORTER_ASSERT(this->fReporter, this->getZ() == SHADOW_TEST_CANVAS_CONST);
|
| +
|
| + return true;
|
| + }
|
| +
|
| + void testUpdateDepth(skiatest::Reporter *reporter) {
|
| + // set some depths (with picture enabled), then check them as they get set
|
| +
|
| + REPORTER_ASSERT(reporter, this->getZ() == 0);
|
| + this->translateZ(-10);
|
| + REPORTER_ASSERT(reporter, this->getZ() == -10);
|
| +
|
| + this->save();
|
| + this->translateZ(20);
|
| + REPORTER_ASSERT(reporter, this->getZ() == 10);
|
| +
|
| + this->restore();
|
| + REPORTER_ASSERT(reporter, this->getZ() == -10);
|
| +
|
| + this->translateZ(13.14f);
|
| + REPORTER_ASSERT(reporter, SkScalarNearlyEqual(this->getZ(), 3.14f));
|
| + }
|
| +
|
| +private:
|
| + skiatest::Reporter* fReporter;
|
| +
|
| + typedef SkPaintFilterCanvas INHERITED;
|
| +};
|
| +
|
| namespace {
|
|
|
| class MockFilterCanvas : public SkPaintFilterCanvas {
|
| @@ -812,4 +851,18 @@ DEF_TEST(PaintFilterCanvas_ConsistentState, reporter) {
|
| REPORTER_ASSERT(reporter, canvas.getTotalMatrix() == filterCanvas.getTotalMatrix());
|
| REPORTER_ASSERT(reporter, canvas.getClipBounds(&clip1) == filterCanvas.getClipBounds(&clip2));
|
| REPORTER_ASSERT(reporter, clip1 == clip2);
|
| +
|
| + SkShadowTestCanvas* tCanvas = new SkShadowTestCanvas(100,100, reporter);
|
| + tCanvas->testUpdateDepth(reporter);
|
| + delete(tCanvas);
|
| +
|
| + SkPictureRecorder recorder;
|
| + SkShadowTestCanvas *tSCanvas = new SkShadowTestCanvas(100, 100, reporter);
|
| + SkCanvas *tPCanvas = recorder.beginRecording(SkRect::MakeIWH(100, 100));
|
| +
|
| + tPCanvas->translateZ(SHADOW_TEST_CANVAS_CONST);
|
| + sk_sp<SkPicture> pic = recorder.finishRecordingAsPicture();
|
| + tSCanvas->drawPicture(pic);
|
| +
|
| + delete(tSCanvas);
|
| }
|
|
|