diff options
Diffstat (limited to 'src/utils')
| -rw-r--r-- | src/utils/SkLuaCanvas.cpp | 5 | ||||
| -rw-r--r-- | src/utils/SkNWayCanvas.cpp | 19 | ||||
| -rw-r--r-- | src/utils/SkPaintFilterCanvas.cpp | 7 |
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); |
