Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(67)

Unified Diff: tests/CanvasTest.cpp

Issue 2127233002: Added the framework for having canvas/recorder/picture record depth_set's. (Closed) Base URL: https://skia.googlesource.com/skia@master
Patch Set: updated tests to be more rigorous about translateZ in playback Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/core/SkRecorder.cpp ('k') | tools/debugger/SkDebugCanvas.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
}
« no previous file with comments | « src/core/SkRecorder.cpp ('k') | tools/debugger/SkDebugCanvas.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698