diff options
author | robertphillips <robertphillips@google.com> | 2015-04-09 06:47:12 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-04-09 06:47:12 -0700 |
commit | e275fdf812b1dc09beaa3b14570eb0b641a07e6a (patch) | |
tree | 248ed71d69d11bb80b90d37ce51bfd340eafb944 /src | |
parent | f57546ec7f9ab116d80044e19aa5e72060dbff09 (diff) |
Add GM to repro crbug.com/472795
This CL also adds a new parameter to SkBitmapSource which gives the user control of the filter quality.
BUG=472795
Review URL: https://codereview.chromium.org/1072603002
Diffstat (limited to 'src')
-rw-r--r-- | src/effects/SkBitmapSource.cpp | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/effects/SkBitmapSource.cpp b/src/effects/SkBitmapSource.cpp index 87c6053cc4..ee8b798936 100644 --- a/src/effects/SkBitmapSource.cpp +++ b/src/effects/SkBitmapSource.cpp @@ -18,13 +18,18 @@ SkBitmapSource::SkBitmapSource(const SkBitmap& bitmap) , fSrcRect(SkRect::MakeWH(SkIntToScalar(bitmap.width()), SkIntToScalar(bitmap.height()))) , fDstRect(fSrcRect) -{} + , fFilterQuality(kHigh_SkFilterQuality) { +} -SkBitmapSource::SkBitmapSource(const SkBitmap& bitmap, const SkRect& srcRect, const SkRect& dstRect) +SkBitmapSource::SkBitmapSource(const SkBitmap& bitmap, + const SkRect& srcRect, const SkRect& dstRect, + SkFilterQuality filterQuality) : INHERITED(0, 0) , fBitmap(bitmap) , fSrcRect(srcRect) - , fDstRect(dstRect) {} + , fDstRect(dstRect) + , fFilterQuality(filterQuality) { +} SkFlattenable* SkBitmapSource::CreateProc(SkReadBuffer& buffer) { SkRect src, dst; @@ -71,12 +76,13 @@ bool SkBitmapSource::onFilterImage(Proxy* proxy, const SkBitmap&, const Context& // None filtering when it's translate-only paint.setFilterQuality( fSrcRect.width() == dstRect.width() && fSrcRect.height() == dstRect.height() ? - kNone_SkFilterQuality : kHigh_SkFilterQuality); + kNone_SkFilterQuality : fFilterQuality); canvas.drawBitmapRectToRect(fBitmap, &fSrcRect, dstRect, &paint); *result = device.get()->accessBitmap(false); offset->fX = dstIRect.fLeft; offset->fY = dstIRect.fTop; + return true; } |