diff options
author | senorblanco@chromium.org <senorblanco@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2013-12-05 23:06:07 +0000 |
---|---|---|
committer | senorblanco@chromium.org <senorblanco@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2013-12-05 23:06:07 +0000 |
commit | 899b22ab97eea75914bc2fe81a89b1e15c258264 (patch) | |
tree | eb46789cc2e280a1138b361a52d1c32d56b8ce77 /src/effects/SkBitmapSource.cpp | |
parent | af35920e6d37035c052864bcf254a267a529dbd2 (diff) |
Revert "Implement srcRect and dstRect functionality in SkBitmapSource. This is required for the "preserveAspectRatio" options of SVG's feImage. Covered by new GM "bitmapsource"." until I can sort out the xfermodeimagefilter and tileimagefilter failures.
This reverts commit b26725c8c9755415284c34399e76be098868e01a, aka r12522.
BUG=
TBR=reed@google.com
Review URL: https://codereview.chromium.org/107093005
git-svn-id: http://skia.googlecode.com/svn/trunk@12523 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; } |