Index: src/utils/SkPaintFilterCanvas.cpp |
diff --git a/src/utils/SkPaintFilterCanvas.cpp b/src/utils/SkPaintFilterCanvas.cpp |
index 1abebef8cad5e517da186c9dc945d7ed22a15a3f..98c89addb52b0a8f913347ea67213bd5b1c67c08 100644 |
--- a/src/utils/SkPaintFilterCanvas.cpp |
+++ b/src/utils/SkPaintFilterCanvas.cpp |
@@ -30,6 +30,18 @@ private: |
SkPaintFilterCanvas::SkPaintFilterCanvas(int width, int height) : INHERITED(width, height) { } |
+SkPaintFilterCanvas::SkPaintFilterCanvas(SkCanvas *canvas) |
+ : INHERITED(canvas->imageInfo().width(), canvas->imageInfo().height()) { |
+ |
+ // Transfer matrix & clip state before adding the target canvas. |
+ SkIRect devClip; |
+ canvas->getClipDeviceBounds(&devClip); |
+ this->clipRect(SkRect::Make(devClip)); |
+ this->setMatrix(canvas->getTotalMatrix()); |
+ |
+ this->addCanvas(canvas); |
+} |
+ |
void SkPaintFilterCanvas::onDrawPaint(const SkPaint& paint) { |
AutoPaintFilter apf(this, kPaint_Type, paint); |
this->INHERITED::onDrawPaint(*apf.paint()); |