aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/effects/SkBitmapSource.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/effects/SkBitmapSource.cpp')
-rw-r--r--src/effects/SkBitmapSource.cpp110
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