aboutsummaryrefslogtreecommitdiff
path: root/src/utils
diff options
context:
space:
mode:
Diffstat (limited to 'src/utils')
-rw-r--r--src/utils/SkLuaCanvas.cpp5
-rw-r--r--src/utils/SkNWayCanvas.cpp19
-rw-r--r--src/utils/SkPaintFilterCanvas.cpp7
3 files changed, 31 insertions, 0 deletions
diff --git a/src/utils/SkLuaCanvas.cpp b/src/utils/SkLuaCanvas.cpp
index 53e462af0d..aa8aba254c 100644
--- a/src/utils/SkLuaCanvas.cpp
+++ b/src/utils/SkLuaCanvas.cpp
@@ -100,6 +100,11 @@ SkCanvas::SaveLayerStrategy SkLuaCanvas::getSaveLayerStrategy(const SaveLayerRec
return kNoLayer_SaveLayerStrategy;
}
+bool SkLuaCanvas::onDoSaveBehind(const SkRect*) {
+ // TODO
+ return false;
+}
+
void SkLuaCanvas::willRestore() {
AUTO_LUA("restore");
this->INHERITED::willRestore();
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);
diff --git a/src/utils/SkPaintFilterCanvas.cpp b/src/utils/SkPaintFilterCanvas.cpp
index 668ebe37a9..7ea95b7845 100644
--- a/src/utils/SkPaintFilterCanvas.cpp
+++ b/src/utils/SkPaintFilterCanvas.cpp
@@ -48,6 +48,13 @@ void SkPaintFilterCanvas::onDrawPaint(const SkPaint& paint) {
}
}
+void SkPaintFilterCanvas::onDrawBehind(const SkPaint& paint) {
+ AutoPaintFilter apf(this, kPaint_Type, paint);
+ if (apf.shouldDraw()) {
+ this->SkNWayCanvas::onDrawBehind(*apf.paint());
+ }
+}
+
void SkPaintFilterCanvas::onDrawPoints(PointMode mode, size_t count, const SkPoint pts[],
const SkPaint& paint) {
AutoPaintFilter apf(this, kPoint_Type, paint);