diff options
author | Brian Salomon <bsalomon@google.com> | 2018-05-21 14:37:49 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-05-21 19:10:08 +0000 |
commit | 969be1c98b32addb03d075fde11a76a7942c4c6c (patch) | |
tree | a5689c06e3fcd0bb94101104c7ae3286a2636090 /src/core/SkCanvas.cpp | |
parent | 8e3bf09e8eb73a7377c41cd833482465c0d14562 (diff) |
Remove mask-filters and aa from SkPaint in SkCanvas for nine-patch/lattice.
Remove GPU fallback code which would have applied AA and mask filter
separately to each lattice cell.
Change-Id: I43d50f337d24bb34b94f3d0ea6cca686a2e11a50
Reviewed-on: https://skia-review.googlesource.com/129318
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Leon Scroggins <scroggo@google.com>
Diffstat (limited to 'src/core/SkCanvas.cpp')
-rw-r--r-- | src/core/SkCanvas.cpp | 40 |
1 files changed, 22 insertions, 18 deletions
diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp index 00bbdf418e..8230fb3928 100644 --- a/src/core/SkCanvas.cpp +++ b/src/core/SkCanvas.cpp @@ -1745,15 +1745,20 @@ void SkCanvas::drawImageRect(const SkImage* image, const SkRect& dst, const SkPa } namespace { -class NoneOrLowQualityFilterPaint : SkNoncopyable { +class LatticePaint : SkNoncopyable { public: - NoneOrLowQualityFilterPaint(const SkPaint* origPaint) { - if (origPaint && origPaint->getFilterQuality() > kLow_SkFilterQuality) { - fLazyPaint.set(*origPaint); - fLazyPaint.get()->setFilterQuality(kLow_SkFilterQuality); - fPaint = fLazyPaint.get(); - } else { - fPaint = origPaint; + LatticePaint(const SkPaint* origPaint) : fPaint(origPaint) { + if (!origPaint) { + return; + } + if (origPaint->getFilterQuality() > kLow_SkFilterQuality) { + fPaint.writable()->setFilterQuality(kLow_SkFilterQuality); + } + if (origPaint->getMaskFilter()) { + fPaint.writable()->setMaskFilter(nullptr); + } + if (origPaint->isAntiAlias()) { + fPaint.writable()->setAntiAlias(false); } } @@ -1762,8 +1767,7 @@ public: } private: - const SkPaint* fPaint; - SkLazyPaint fLazyPaint; + SkTCopyOnFirstWrite<SkPaint> fPaint; }; } // namespace @@ -1775,8 +1779,8 @@ void SkCanvas::drawImageNine(const SkImage* image, const SkIRect& center, const return; } if (SkLatticeIter::Valid(image->width(), image->height(), center)) { - NoneOrLowQualityFilterPaint lowPaint(paint); - this->onDrawImageNine(image, center, dst, lowPaint.get()); + LatticePaint latticePaint(paint); + this->onDrawImageNine(image, center, dst, latticePaint.get()); } else { this->drawImageRect(image, dst, paint); } @@ -1798,8 +1802,8 @@ void SkCanvas::drawImageLattice(const SkImage* image, const Lattice& lattice, co } if (SkLatticeIter::Valid(image->width(), image->height(), latticePlusBounds)) { - NoneOrLowQualityFilterPaint lowPaint(paint); - this->onDrawImageLattice(image, latticePlusBounds, dst, lowPaint.get()); + LatticePaint latticePaint(paint); + this->onDrawImageLattice(image, latticePlusBounds, dst, latticePaint.get()); } else { this->drawImageRect(image, dst, paint); } @@ -1840,8 +1844,8 @@ void SkCanvas::drawBitmapNine(const SkBitmap& bitmap, const SkIRect& center, con return; } if (SkLatticeIter::Valid(bitmap.width(), bitmap.height(), center)) { - NoneOrLowQualityFilterPaint lowPaint(paint); - this->onDrawBitmapNine(bitmap, center, dst, lowPaint.get()); + LatticePaint latticePaint(paint); + this->onDrawBitmapNine(bitmap, center, dst, latticePaint.get()); } else { this->drawBitmapRect(bitmap, dst, paint); } @@ -1862,8 +1866,8 @@ void SkCanvas::drawBitmapLattice(const SkBitmap& bitmap, const Lattice& lattice, } if (SkLatticeIter::Valid(bitmap.width(), bitmap.height(), latticePlusBounds)) { - NoneOrLowQualityFilterPaint lowPaint(paint); - this->onDrawBitmapLattice(bitmap, latticePlusBounds, dst, lowPaint.get()); + LatticePaint latticePaint(paint); + this->onDrawBitmapLattice(bitmap, latticePlusBounds, dst, latticePaint.get()); } else { this->drawBitmapRect(bitmap, dst, paint); } |