Index: src/core/SkBitmap_scroll.cpp |
diff --git a/src/core/SkBitmap_scroll.cpp b/src/core/SkBitmap_scroll.cpp |
deleted file mode 100644 |
index 54158c2bec1182de89fe612b0feb1d5c459ddf24..0000000000000000000000000000000000000000 |
--- a/src/core/SkBitmap_scroll.cpp |
+++ /dev/null |
@@ -1,105 +0,0 @@ |
- |
-/* |
- * Copyright 2011 Google Inc. |
- * |
- * Use of this source code is governed by a BSD-style license that can be |
- * found in the LICENSE file. |
- */ |
-#include "SkBitmap.h" |
-#include "SkRegion.h" |
- |
-bool SkBitmap::scrollRect(const SkIRect* subset, int dx, int dy, |
- SkRegion* inval) const |
-{ |
- if (this->isImmutable() || kUnknown_SkColorType == this->colorType()) { |
- return false; |
- } |
- |
- if (subset) { |
- SkBitmap tmp; |
- |
- return this->extractSubset(&tmp, *subset) && |
- // now call again with no rectangle |
- tmp.scrollRect(NULL, dx, dy, inval); |
- } |
- |
- int shift = this->bytesPerPixel() >> 1; |
- int width = this->width(); |
- int height = this->height(); |
- |
- // check if there's nothing to do |
- if ((dx | dy) == 0 || width <= 0 || height <= 0) { |
- if (inval) { |
- inval->setEmpty(); |
- } |
- return true; |
- } |
- |
- // compute the inval region now, before we see if there are any pixels |
- if (inval) { |
- SkIRect r; |
- |
- r.set(0, 0, width, height); |
- // initial the region with the entire bounds |
- inval->setRect(r); |
- // do the "scroll" |
- r.offset(dx, dy); |
- |
- // check if we scrolled completely away |
- if (!SkIRect::Intersects(r, inval->getBounds())) { |
- // inval has already been updated... |
- return true; |
- } |
- |
- // compute the dirty area |
- inval->op(r, SkRegion::kDifference_Op); |
- } |
- |
- SkAutoLockPixels alp(*this); |
- // if we have no pixels, just return (inval is already updated) |
- // don't call readyToDraw(), since we don't require a colortable per se |
- if (this->getPixels() == NULL) { |
- return true; |
- } |
- |
- char* dst = (char*)this->getPixels(); |
- const char* src = dst; |
- int rowBytes = (int)this->rowBytes(); // need rowBytes to be signed |
- |
- if (dy <= 0) { |
- src -= dy * rowBytes; |
- height += dy; |
- } else { |
- dst += dy * rowBytes; |
- height -= dy; |
- // now jump src/dst to the last scanline |
- src += (height - 1) * rowBytes; |
- dst += (height - 1) * rowBytes; |
- // now invert rowbytes so we copy backwards in the loop |
- rowBytes = -rowBytes; |
- } |
- |
- if (dx <= 0) { |
- src -= dx << shift; |
- width += dx; |
- } else { |
- dst += dx << shift; |
- width -= dx; |
- } |
- |
- // If the X-translation would push it completely beyond the region, |
- // then there's nothing to draw. |
- if (width <= 0) { |
- return true; |
- } |
- |
- width <<= shift; // now width is the number of bytes to move per line |
- while (--height >= 0) { |
- memmove(dst, src, width); |
- dst += rowBytes; |
- src += rowBytes; |
- } |
- |
- this->notifyPixelsChanged(); |
- return true; |
-} |