diff options
author | fmalita <fmalita@chromium.org> | 2016-01-12 11:29:10 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-01-12 19:30:18 +0000 |
commit | 156b7e6ba4f6f804753d84a63e9cba72bbfb4776 (patch) | |
tree | b51c43d725034b61f7e45234129c70eccbd92e54 /skia | |
parent | f8b371d97fea01188d43596b62de620b88068fb1 (diff) | |
download | chromium_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.cc | 26 | ||||
-rw-r--r-- | skia/ext/opacity_filter_canvas.h | 2 |
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, |