summaryrefslogtreecommitdiff
path: root/libs/hwui/SkiaCanvas.cpp
diff options
context:
space:
mode:
author Derek Sollenberger <djsollen@google.com> 2017-04-11 13:58:45 -0400
committer Derek Sollenberger <djsollen@google.com> 2017-04-11 14:00:25 -0400
commiteb69cbbe22d993a9ba88a1206853c660f8f43628 (patch)
tree686051fef2cbea3e73a140ab82de7dd2c3e32986 /libs/hwui/SkiaCanvas.cpp
parent2d008a5fc11f607943235cacfaf523eb403b52f2 (diff)
Change behavior of setBitmap to cleanly reset the canvas
- identity matrix - no save stack - wide-open clip This reverts commit 4f641d1e4586b027969052cc0ad6b65c1158e72e Test: bit CtsGraphicsTestCases:.CanvasTest Bug: 36218535 Change-Id: Id11deb06e37d6df61f1f171d424ab150d812a7a8
Diffstat (limited to 'libs/hwui/SkiaCanvas.cpp')
-rw-r--r--libs/hwui/SkiaCanvas.cpp26
1 files changed, 0 insertions, 26 deletions
diff --git a/libs/hwui/SkiaCanvas.cpp b/libs/hwui/SkiaCanvas.cpp
index 9f649ead2b52..c1cad7dd4923 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);