| 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;
|
| -}
|
|
|