diff options
author | robertphillips@google.com <robertphillips@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2013-12-06 17:44:15 +0000 |
---|---|---|
committer | robertphillips@google.com <robertphillips@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2013-12-06 17:44:15 +0000 |
commit | 40757703bdfac89ff1399443cd39a48fd39913b4 (patch) | |
tree | b4c23563a2148996f99eaca44d6685f057e01aff /src/effects/SkBitmapSource.cpp | |
parent | 86b82767bd9bcd3739086b381745842ae10f50f4 (diff) |
Reverting 12528 & 12533 (Implement srcRect and dstRect functionality in SkBitmapSource) due to image differences on N4
https://codereview.chromium.org/108623002/
git-svn-id: http://skia.googlecode.com/svn/trunk@12534 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/effects/SkBitmapSource.cpp')
-rw-r--r-- | src/effects/SkBitmapSource.cpp | 53 |
1 files changed, 3 insertions, 50 deletions
diff --git a/src/effects/SkBitmapSource.cpp b/src/effects/SkBitmapSource.cpp index 5e19744a26..72f51f8423 100644 --- a/src/effects/SkBitmapSource.cpp +++ b/src/effects/SkBitmapSource.cpp @@ -6,71 +6,24 @@ */ #include "SkBitmapSource.h" -#include "SkDevice.h" -#include "SkCanvas.h" -#include "SkFlattenableBuffers.h" -#include "SkValidationUtils.h" SkBitmapSource::SkBitmapSource(const SkBitmap& bitmap) : INHERITED(0, 0), - fBitmap(bitmap), - fSrcRect(SkRect::MakeWH(SkIntToScalar(bitmap.width()), - SkIntToScalar(bitmap.height()))), - fDstRect(fSrcRect) { -} - -SkBitmapSource::SkBitmapSource(const SkBitmap& bitmap, const SkRect& srcRect, const SkRect& dstRect) - : INHERITED(0, 0), - fBitmap(bitmap), - fSrcRect(srcRect), - fDstRect(dstRect) { + fBitmap(bitmap) { } SkBitmapSource::SkBitmapSource(SkFlattenableReadBuffer& buffer) : INHERITED(0, buffer) { fBitmap.unflatten(buffer); - buffer.readRect(&fSrcRect); - buffer.readRect(&fDstRect); - buffer.validate(SkIsValidRect(fSrcRect) && SkIsValidRect(fDstRect)); } void SkBitmapSource::flatten(SkFlattenableWriteBuffer& buffer) const { this->INHERITED::flatten(buffer); fBitmap.flatten(buffer); - buffer.writeRect(fSrcRect); - buffer.writeRect(fDstRect); } -bool SkBitmapSource::onFilterImage(Proxy* proxy, const SkBitmap&, const SkMatrix& matrix, +bool SkBitmapSource::onFilterImage(Proxy*, const SkBitmap&, const SkMatrix&, SkBitmap* result, SkIPoint* offset) { - SkRect bounds, dstRect; - fBitmap.getBounds(&bounds); - matrix.mapRect(&dstRect, fDstRect); - if (fSrcRect == bounds && dstRect == bounds) { - *result = fBitmap; - return true; - } - SkIRect dstIRect; - dstRect.roundOut(&dstIRect); - - SkAutoTUnref<SkBaseDevice> device(proxy->createDevice(dstIRect.width(), dstIRect.height())); - if (NULL == device.get()) { - return false; - } - - SkCanvas canvas(device.get()); - SkPaint paint; - - // Subtract off the integer component of the translation (will be applied in loc, below). - dstRect.offset(-SkIntToScalar(dstIRect.fLeft), -SkIntToScalar(dstIRect.fTop)); - paint.setXfermodeMode(SkXfermode::kSrc_Mode); - // FIXME: this probably shouldn't be necessary, but drawBitmapRectToRect asserts - // None filtering when it's translate-only - paint.setFilterLevel(fSrcRect.width() == dstRect.width() && fSrcRect.height() == dstRect.height() ? SkPaint::kNone_FilterLevel : SkPaint::kMedium_FilterLevel); - canvas.drawBitmapRectToRect(fBitmap, &fSrcRect, dstRect, &paint); - - *result = device.get()->accessBitmap(false); - offset->fX += dstIRect.fLeft; - offset->fY += dstIRect.fTop; + *result = fBitmap; return true; } |