Index: src/effects/SkBitmapSource.cpp |
diff --git a/src/effects/SkBitmapSource.cpp b/src/effects/SkBitmapSource.cpp |
deleted file mode 100644 |
index 5b1934f68a4d1433d85d44c779ede363d33a683c..0000000000000000000000000000000000000000 |
--- 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 |