aboutsummaryrefslogtreecommitdiff
path: root/src/utils/SkNWayCanvas.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/utils/SkNWayCanvas.cpp')
-rw-r--r--src/utils/SkNWayCanvas.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/utils/SkNWayCanvas.cpp b/src/utils/SkNWayCanvas.cpp
index c612c7d7e1..687413d765 100644
--- a/src/utils/SkNWayCanvas.cpp
+++ b/src/utils/SkNWayCanvas.cpp
@@ -4,7 +4,9 @@
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
+
#include "SkNWayCanvas.h"
+#include "SkCanvasPriv.h"
SkNWayCanvas::SkNWayCanvas(int width, int height) : INHERITED(width, height) {}
@@ -45,6 +47,7 @@ public:
return false;
}
SkCanvas* operator->() { return fCanvas; }
+ SkCanvas* get() const { return fCanvas; }
private:
const SkTDArray<SkCanvas*>& fList;
@@ -72,6 +75,15 @@ SkCanvas::SaveLayerStrategy SkNWayCanvas::getSaveLayerStrategy(const SaveLayerRe
return kNoLayer_SaveLayerStrategy;
}
+bool SkNWayCanvas::onDoSaveBehind(const SkRect* bounds) {
+ Iter iter(fList);
+ while (iter.next()) {
+ SkCanvasPriv::SaveBehind(iter.get(), bounds);
+ }
+ this->INHERITED::onDoSaveBehind(bounds);
+ return false;
+}
+
void SkNWayCanvas::willRestore() {
Iter iter(fList);
while (iter.next()) {
@@ -135,6 +147,13 @@ void SkNWayCanvas::onDrawPaint(const SkPaint& paint) {
}
}
+void SkNWayCanvas::onDrawBehind(const SkPaint& paint) {
+ Iter iter(fList);
+ while (iter.next()) {
+ SkCanvasPriv::DrawBehind(iter.get(), paint);
+ }
+}
+
void SkNWayCanvas::onDrawPoints(PointMode mode, size_t count, const SkPoint pts[],
const SkPaint& paint) {
Iter iter(fList);