Revert "deprecate replayClips"
This reverts commit 82d3b17f6dff9372ec531d90b5d9180671e0ee2c.
Bug: 35831173
Change-Id: I467e7204a5e4bcbab1c12d3fcf52e52188830ed5
diff --git a/libs/hwui/SkiaCanvas.cpp b/libs/hwui/SkiaCanvas.cpp
index 7cab11a..c57b1b3 100644
--- a/libs/hwui/SkiaCanvas.cpp
+++ b/libs/hwui/SkiaCanvas.cpp
@@ -73,6 +73,24 @@
// Canvas state operations: Replace Bitmap
// ----------------------------------------------------------------------------
+class ClipCopier : public SkCanvas::ClipVisitor {
+public:
+ explicit ClipCopier(SkCanvas* dstCanvas) : m_dstCanvas(dstCanvas) {}
+
+ virtual void clipRect(const SkRect& rect, SkClipOp op, bool antialias) {
+ m_dstCanvas->clipRect(rect, op, antialias);
+ }
+ virtual void clipRRect(const SkRRect& rrect, SkClipOp op, bool antialias) {
+ m_dstCanvas->clipRRect(rrect, op, antialias);
+ }
+ virtual void clipPath(const SkPath& path, SkClipOp op, bool antialias) {
+ m_dstCanvas->clipPath(path, op, antialias);
+ }
+
+private:
+ SkCanvas* m_dstCanvas;
+};
+
void SkiaCanvas::setBitmap(const SkBitmap& bitmap) {
SkCanvas* newCanvas = new SkCanvas(bitmap);
@@ -80,9 +98,8 @@
// Copy the canvas matrix & clip state.
newCanvas->setMatrix(mCanvas->getTotalMatrix());
- SkRegion rgn;
- mCanvas->temporary_internal_getRgnClip(&rgn);
- newCanvas->clipRegion(rgn, SkClipOp::kIntersect);
+ ClipCopier copier(newCanvas);
+ mCanvas->replayClips(&copier);
}
// deletes the previously owned canvas (if any)