aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools/debugger/SkDebugCanvas.cpp
diff options
context:
space:
mode:
authorGravatar Mike Reed <reed@google.com>2017-03-08 21:42:37 +0000
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-03-08 21:42:51 +0000
commit8310f0e051e5cb19206428336720bd9988190416 (patch)
treebb25e8894c83ec124742e23f886fbd6d81d4291a /tools/debugger/SkDebugCanvas.cpp
parent4749b8c1b899f9f4e440f60c88c880a8765e6dee (diff)
Revert "remove SkClipVisitor"
This reverts commit 91b961d33d1d3e78c212be8738c1c7c468c358ca. Reason for revert: need to update caller in android Original change's description: > remove SkClipVisitor > > With new device clipping, this is unsupported on SkCanvas > > BUG=skia: > > Change-Id: I39443f213be1005b8b9208d604e4bfb31cbda424 > Reviewed-on: https://skia-review.googlesource.com/9349 > Commit-Queue: Mike Reed <reed@google.com> > Reviewed-by: Brian Salomon <bsalomon@google.com> > Reviewed-by: Robert Phillips <robertphillips@google.com> > TBR=bsalomon@google.com,robertphillips@google.com,reed@google.com,reviews@skia.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia: Change-Id: I22df0c66ec564ca32355179d2ee5ea14bff7b1d5 Reviewed-on: https://skia-review.googlesource.com/9456 Reviewed-by: Mike Reed <reed@google.com> Commit-Queue: Mike Reed <reed@google.com>
Diffstat (limited to 'tools/debugger/SkDebugCanvas.cpp')
-rw-r--r--tools/debugger/SkDebugCanvas.cpp38
1 files changed, 38 insertions, 0 deletions
diff --git a/tools/debugger/SkDebugCanvas.cpp b/tools/debugger/SkDebugCanvas.cpp
index ace39a471b..522f4edbeb 100644
--- a/tools/debugger/SkDebugCanvas.cpp
+++ b/tools/debugger/SkDebugCanvas.cpp
@@ -149,6 +149,39 @@ int SkDebugCanvas::getCommandAtPoint(int x, int y, int index) {
return layer;
}
+class SkDebugClipVisitor : public SkCanvas::ClipVisitor {
+public:
+ SkDebugClipVisitor(SkCanvas* canvas) : fCanvas(canvas) {}
+
+ void clipRect(const SkRect& r, SkClipOp, bool doAA) override {
+ SkPaint p;
+ p.setColor(SK_ColorRED);
+ p.setStyle(SkPaint::kStroke_Style);
+ p.setAntiAlias(doAA);
+ fCanvas->drawRect(r, p);
+ }
+ void clipRRect(const SkRRect& rr, SkClipOp, bool doAA) override {
+ SkPaint p;
+ p.setColor(SK_ColorGREEN);
+ p.setStyle(SkPaint::kStroke_Style);
+ p.setAntiAlias(doAA);
+ fCanvas->drawRRect(rr, p);
+ }
+ void clipPath(const SkPath& path, SkClipOp, bool doAA) override {
+ SkPaint p;
+ p.setColor(SK_ColorBLUE);
+ p.setStyle(SkPaint::kStroke_Style);
+ p.setAntiAlias(doAA);
+ fCanvas->drawPath(path, p);
+ }
+
+protected:
+ SkCanvas* fCanvas;
+
+private:
+ typedef SkCanvas::ClipVisitor INHERITED;
+};
+
// set up the saveLayer commands so that the active ones
// return true in their 'active' method
void SkDebugCanvas::markActiveCommands(int index) {
@@ -265,6 +298,11 @@ void SkDebugCanvas::drawTo(SkCanvas* originalCanvas, int index, int m) {
r.outset(SK_Scalar1, SK_Scalar1);
filterCanvas.clipRect(r, kReplace_SkClipOp);
}
+ // visualize existing clips
+ SkDebugClipVisitor visitor(&filterCanvas);
+
+ filterCanvas.replayClips(&visitor);
+
filterCanvas.restore();
}
if (pathOpsMode) {