diff options
author | 2017-04-12 17:59:18 +0000 | |
---|---|---|
committer | 2017-04-12 17:59:18 +0000 | |
commit | 86a1c30a113df5be95b27d6c1b80fb9f78a2ac58 (patch) | |
tree | 4461f64f32bb8eea32d366f5eb18ac868bfb5a8f /libs/hwui/SkiaCanvas.cpp | |
parent | 7bb1c18b583325ba4e2b88b01c544e6fe734bbce (diff) | |
parent | 43844db75d1214586a95b0449167c27bc51ca697 (diff) |
Merge "Change behavior of setBitmap to cleanly reset the canvas" into oc-dev am: 7944962b7e
am: 43844db75d
Change-Id: I8e362993a2fc51ce93015924d4819884301aa0c1
Diffstat (limited to 'libs/hwui/SkiaCanvas.cpp')
-rw-r--r-- | libs/hwui/SkiaCanvas.cpp | 26 |
1 files changed, 0 insertions, 26 deletions
diff --git a/libs/hwui/SkiaCanvas.cpp b/libs/hwui/SkiaCanvas.cpp index 5c7d8d8b8b77..c902a7333f2f 100644 --- a/libs/hwui/SkiaCanvas.cpp +++ b/libs/hwui/SkiaCanvas.cpp @@ -80,38 +80,12 @@ void SkiaCanvas::reset(SkCanvas* skiaCanvas) { // 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) { sk_sp<SkColorSpace> cs = bitmap.refColorSpace(); std::unique_ptr<SkCanvas> newCanvas = std::unique_ptr<SkCanvas>(new SkCanvas(bitmap)); std::unique_ptr<SkCanvas> newCanvasWrapper = SkCreateColorSpaceXformCanvas(newCanvas.get(), cs == nullptr ? SkColorSpace::MakeSRGB() : std::move(cs)); - if (!bitmap.isNull()) { - // Copy the canvas matrix & clip state. - newCanvasWrapper->setMatrix(mCanvas->getTotalMatrix()); - - ClipCopier copier(newCanvasWrapper.get()); - mCanvas->replayClips(&copier); - } - // deletes the previously owned canvas (if any) mCanvasOwned = std::move(newCanvas); mCanvasWrapper = std::move(newCanvasWrapper); |