summaryrefslogtreecommitdiffstats
path: root/skia
diff options
context:
space:
mode:
authorfmalita <fmalita@chromium.org>2016-01-12 11:29:10 -0800
committerCommit bot <commit-bot@chromium.org>2016-01-12 19:30:18 +0000
commit156b7e6ba4f6f804753d84a63e9cba72bbfb4776 (patch)
treeb51c43d725034b61f7e45234129c70eccbd92e54 /skia
parentf8b371d97fea01188d43596b62de620b88068fb1 (diff)
downloadchromium_src-156b7e6ba4f6f804753d84a63e9cba72bbfb4776.zip
chromium_src-156b7e6ba4f6f804753d84a63e9cba72bbfb4776.tar.gz
chromium_src-156b7e6ba4f6f804753d84a63e9cba72bbfb4776.tar.bz2
Update existing SkPaintFilterCanvas overrides.
Depends on https://codereview.chromium.org/1577933002/ BUG=skia:4782 R=reed@google.com,robertphillips@google.com Review URL: https://codereview.chromium.org/1577993004 Cr-Commit-Position: refs/heads/master@{#368947}
Diffstat (limited to 'skia')
-rw-r--r--skia/ext/opacity_filter_canvas.cc26
-rw-r--r--skia/ext/opacity_filter_canvas.h2
2 files changed, 16 insertions, 12 deletions
diff --git a/skia/ext/opacity_filter_canvas.cc b/skia/ext/opacity_filter_canvas.cc
index 53d3580..d786759 100644
--- a/skia/ext/opacity_filter_canvas.cc
+++ b/skia/ext/opacity_filter_canvas.cc
@@ -15,24 +15,28 @@ OpacityFilterCanvas::OpacityFilterCanvas(SkCanvas* canvas,
alpha_(SkScalarRoundToInt(opacity * 255)),
disable_image_filtering_(disable_image_filtering) { }
-void OpacityFilterCanvas::onFilterPaint(SkPaint* paint, Type) const {
- if (alpha_ < 255)
- paint->setAlpha(alpha_);
+bool OpacityFilterCanvas::onFilter(SkTCopyOnFirstWrite<SkPaint>* paint, Type) const {
+ // TODO(fmalita): with the new onFilter() API we could override alpha even
+ // when the original paint is null; is this something we should do?
+ if (*paint) {
+ if (alpha_ < 255)
+ paint->writable()->setAlpha(alpha_);
+
+ if (disable_image_filtering_)
+ paint->writable()->setFilterQuality(kNone_SkFilterQuality);
+ }
- if (disable_image_filtering_)
- paint->setFilterQuality(kNone_SkFilterQuality);
+ return true;
}
void OpacityFilterCanvas::onDrawPicture(const SkPicture* picture,
const SkMatrix* matrix,
const SkPaint* paint) {
- SkTLazy<SkPaint> filteredPaint;
- if (paint) {
- this->onFilterPaint(filteredPaint.set(*paint), kPicture_Type);
+ SkTCopyOnFirstWrite<SkPaint> filteredPaint(paint);
+ if (this->onFilter(&filteredPaint, kPicture_Type)) {
+ // Unfurl pictures in order to filter nested paints.
+ this->SkCanvas::onDrawPicture(picture, matrix, filteredPaint);
}
-
- // Unfurl pictures in order to filter nested paints.
- this->SkCanvas::onDrawPicture(picture, matrix, filteredPaint.getMaybeNull());
}
} // namespace skia
diff --git a/skia/ext/opacity_filter_canvas.h b/skia/ext/opacity_filter_canvas.h
index ee3eca6e..450e378 100644
--- a/skia/ext/opacity_filter_canvas.h
+++ b/skia/ext/opacity_filter_canvas.h
@@ -20,7 +20,7 @@ class SK_API OpacityFilterCanvas : public SkPaintFilterCanvas {
bool disable_image_filtering);
protected:
- void onFilterPaint(SkPaint* paint, Type type) const override;
+ bool onFilter(SkTCopyOnFirstWrite<SkPaint>* paint, Type type) const override;
void onDrawPicture(const SkPicture* picture,
const SkMatrix* matrix,