aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkCanvas.cpp
diff options
context:
space:
mode:
authorGravatar Brian Salomon <bsalomon@google.com>2018-05-21 14:37:49 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-05-21 19:10:08 +0000
commit969be1c98b32addb03d075fde11a76a7942c4c6c (patch)
treea5689c06e3fcd0bb94101104c7ae3286a2636090 /src/core/SkCanvas.cpp
parent8e3bf09e8eb73a7377c41cd833482465c0d14562 (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.cpp40
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);
}