Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(722)

Unified Diff: skia/sgl/SkBitmap_scroll.cpp

Issue 113827: Remove the remainder of the skia source code from the Chromium repo.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 11 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « skia/sgl/SkBitmapShaderTemplate.h ('k') | skia/sgl/SkBlitBWMaskTemplate.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: skia/sgl/SkBitmap_scroll.cpp
===================================================================
--- skia/sgl/SkBitmap_scroll.cpp (revision 16859)
+++ skia/sgl/SkBitmap_scroll.cpp (working copy)
@@ -1,107 +0,0 @@
-#include "SkBitmap.h"
-#include "SkRegion.h"
-
-bool SkBitmap::scrollRect(const SkIRect* subset, int dx, int dy,
- SkRegion* inval) const
-{
- if (NULL != subset) {
- SkBitmap tmp;
-
- return this->extractSubset(&tmp, *subset) &&
- // now call again with no rectangle
- tmp.scrollRect(NULL, dx, dy, inval);
- }
-
- int shift;
-
- switch (this->config()) {
- case kIndex8_Config:
- case kA8_Config:
- shift = 0;
- break;
- case kARGB_4444_Config:
- case kRGB_565_Config:
- shift = 1;
- break;
- case kARGB_8888_Config:
- shift = 2;
- break;
- default:
- // can't scroll this config
- return false;
- }
-
- int width = this->width();
- int height = this->height();
-
- // check if there's nothing to do
- if ((dx | dy) == 0 || width <= 0 || height <= 0) {
- if (NULL != inval) {
- inval->setEmpty();
- }
- return true;
- }
-
- // compute the inval region now, before we see if there are any pixels
- if (NULL != 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;
- }
-
- // if we get this far, then we need to shift the pixels
-
- char* dst = (char*)this->getPixels();
- const char* src = dst;
- int rowBytes = 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;
- }
-
- width <<= shift; // now width is the number of bytes to move per line
- while (--height >= 0) {
- memmove(dst, src, width);
- dst += rowBytes;
- src += rowBytes;
- }
- return true;
-}
-
« no previous file with comments | « skia/sgl/SkBitmapShaderTemplate.h ('k') | skia/sgl/SkBlitBWMaskTemplate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698