diff options
author | fmalita <fmalita@chromium.org> | 2015-09-25 09:15:55 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-09-25 09:15:55 -0700 |
commit | 2f5891ea6460675b3c8d08684e1fa8b239bc0a14 (patch) | |
tree | b67a41b8f44935eb74ec797388e4021951b00bfc /src/effects/SkBitmapSource.cpp | |
parent | d114645d931d4e95a938597a45a270f211273c17 (diff) |
Remove SkBitmapSource
To avoid breaking existing SKPs, add a deserialization stub which
unflattens SkBitmapSource records to SkImageSources.
R=reed@google.com,mtklein@google.com,robertphillips@google.com
Review URL: https://codereview.chromium.org/1363913002
Diffstat (limited to 'src/effects/SkBitmapSource.cpp')
-rw-r--r-- | src/effects/SkBitmapSource.cpp | 110 |
1 files changed, 0 insertions, 110 deletions
diff --git a/src/effects/SkBitmapSource.cpp b/src/effects/SkBitmapSource.cpp deleted file mode 100644 index 5b1934f68a..0000000000 --- a/src/effects/SkBitmapSource.cpp +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright 2012 The Android Open Source Project - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#include "SkBitmapSource.h" -#include "SkDevice.h" -#include "SkCanvas.h" -#include "SkReadBuffer.h" -#include "SkWriteBuffer.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) - , fFilterQuality(kHigh_SkFilterQuality) { -} - -SkBitmapSource::SkBitmapSource(const SkBitmap& bitmap, - const SkRect& srcRect, const SkRect& dstRect, - SkFilterQuality filterQuality) - : INHERITED(0, 0) - , fBitmap(bitmap) - , fSrcRect(srcRect) - , fDstRect(dstRect) - , fFilterQuality(filterQuality) { -} - -SkFlattenable* SkBitmapSource::CreateProc(SkReadBuffer& buffer) { - SkFilterQuality filterQuality; - if (buffer.isVersionLT(SkReadBuffer::kBitmapSourceFilterQuality_Version)) { - filterQuality = kHigh_SkFilterQuality; - } else { - filterQuality = (SkFilterQuality)buffer.readInt(); - } - SkRect src, dst; - buffer.readRect(&src); - buffer.readRect(&dst); - SkBitmap bitmap; - if (!buffer.readBitmap(&bitmap)) { - return nullptr; - } - return SkBitmapSource::Create(bitmap, src, dst, filterQuality); -} - -void SkBitmapSource::flatten(SkWriteBuffer& buffer) const { - buffer.writeInt(fFilterQuality); - buffer.writeRect(fSrcRect); - buffer.writeRect(fDstRect); - buffer.writeBitmap(fBitmap); -} - -bool SkBitmapSource::onFilterImage(Proxy* proxy, const SkBitmap&, const Context& ctx, - SkBitmap* result, SkIPoint* offset) const { - SkRect bounds, dstRect; - fBitmap.getBounds(&bounds); - ctx.ctm().mapRect(&dstRect, fDstRect); - if (fSrcRect == bounds && dstRect == bounds) { - // No regions cropped out or resized; return entire bitmap. - *result = fBitmap; - offset->fX = offset->fY = 0; - return true; - } - - const SkIRect dstIRect = dstRect.roundOut(); - SkAutoTUnref<SkBaseDevice> device(proxy->createDevice(dstIRect.width(), dstIRect.height())); - if (nullptr == 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 drawBitmapRect asserts - // None filtering when it's translate-only - paint.setFilterQuality( - fSrcRect.width() == dstRect.width() && fSrcRect.height() == dstRect.height() ? - kNone_SkFilterQuality : fFilterQuality); - canvas.drawBitmapRect(fBitmap, fSrcRect, dstRect, &paint, SkCanvas::kStrict_SrcRectConstraint); - - *result = device.get()->accessBitmap(false); - offset->fX = dstIRect.fLeft; - offset->fY = dstIRect.fTop; - - return true; -} - -void SkBitmapSource::computeFastBounds(const SkRect&, SkRect* dst) const { - *dst = fDstRect; -} - -#ifndef SK_IGNORE_TO_STRING -void SkBitmapSource::toString(SkString* str) const { - str->appendf("SkBitmapSource: ("); - str->appendf("src: (%f,%f,%f,%f) dst: (%f,%f,%f,%f) ", - fSrcRect.fLeft, fSrcRect.fTop, fSrcRect.fRight, fSrcRect.fBottom, - fDstRect.fLeft, fDstRect.fTop, fDstRect.fRight, fDstRect.fBottom); - str->appendf("bitmap: (%d,%d)", - fBitmap.width(), fBitmap.height()); - str->append(")"); -} -#endif |