From 2f5891ea6460675b3c8d08684e1fa8b239bc0a14 Mon Sep 17 00:00:00 2001 From: fmalita Date: Fri, 25 Sep 2015 09:15:55 -0700 Subject: 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 --- src/effects/SkBitmapSource.cpp | 110 ----------------------------------------- 1 file changed, 110 deletions(-) delete mode 100644 src/effects/SkBitmapSource.cpp (limited to 'src/effects/SkBitmapSource.cpp') 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 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 -- cgit v1.2.3