Make SkNWayCanvas use conservative clipping.
authorMike Klein <mtklein@chromium.org>
Tue, 29 Nov 2016 18:46:06 +0000 (13:46 -0500)
committerSkia Commit-Bot <skia-commit-bot@chromium.org>
Tue, 29 Nov 2016 20:59:38 +0000 (20:59 +0000)
Like most other canvas subclasses, its clips don't need to be perfect.

BUG=chromium:668925

Change-Id: I107f8ed6fa60654426fd52c066b1018d5801850d
Reviewed-on: https://skia-review.googlesource.com/5308
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Mike Reed <reed@google.com>
include/core/SkCanvas.h
src/utils/SkNWayCanvas.cpp
tests/CanvasTest.cpp

index aabc7d8..23e1c9f 100644 (file)
@@ -1623,6 +1623,7 @@ private:
     friend class SkRecorder;        // InitFlags
     friend class SkLiteRecorder;        // InitFlags
     friend class SkNoSaveLayerCanvas;   // InitFlags
+    friend class SkNWayCanvas;          // InitFlags
     friend class SkPictureImageFilter;  // SkCanvas(SkBaseDevice*, SkSurfaceProps*, InitFlags)
     friend class SkPictureRecord;   // predrawNotify (why does it need it? <reed>)
     friend class SkPicturePlayback; // SaveFlagsToSaveLayerFlags
index a910284..d81a8ef 100644 (file)
@@ -7,7 +7,7 @@
 #include "SkNWayCanvas.h"
 
 SkNWayCanvas::SkNWayCanvas(int width, int height)
-        : INHERITED(width, height) {}
+        : INHERITED(SkIRect::MakeWH(width, height), SkCanvas::kConservativeRasterClip_InitFlag) {}
 
 SkNWayCanvas::~SkNWayCanvas() {
     this->removeAll();
index 1824c25..f460ab6 100644 (file)
@@ -694,7 +694,7 @@ DEF_TEST(PaintFilterCanvas_ConsistentState, reporter) {
     filterCanvas.scale(0.75f, 0.5f);
     REPORTER_ASSERT(reporter, canvas.getTotalMatrix() == filterCanvas.getTotalMatrix());
     REPORTER_ASSERT(reporter, canvas.getClipBounds(&clip1) == filterCanvas.getClipBounds(&clip2));
-    REPORTER_ASSERT(reporter, clip1 == clip2);
+    REPORTER_ASSERT(reporter, clip2.contains(clip1));
 
 #ifdef SK_EXPERIMENTAL_SHADOWING
     SkShadowTestCanvas* tCanvas = new SkShadowTestCanvas(100,100, reporter);