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

Side by Side Diff: src/utils/SkBitmapTransformer.cpp

Issue 14265010: Make SkSHA1 and SkM5 use common SkDigestHash result type (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: hash_one_row_of_pixels_at_a_time Created 7 years, 8 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 1
2 /* 2 /*
3 * Copyright 2012 Google Inc. 3 * Copyright 2012 Google Inc.
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 8
9 #include "SkBitmap.h" 9 #include "SkBitmap.h"
10 #include "SkBitmapTransformer.h" 10 #include "SkBitmapTransformer.h"
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 const char *srcBytes = const_cast<const char *>(static_cast<char*>(fBitmap.g etPixels())); 78 const char *srcBytes = const_cast<const char *>(static_cast<char*>(fBitmap.g etPixels()));
79 char *dstBytes = static_cast<char *>(dstBuffer); 79 char *dstBytes = static_cast<char *>(dstBuffer);
80 for (int y = 0; y < fBitmap.height(); y++) { 80 for (int y = 0; y < fBitmap.height(); y++) {
81 transform_scanline(srcBytes, width, dstBytes); 81 transform_scanline(srcBytes, width, dstBytes);
82 srcBytes += srcRowBytes; 82 srcBytes += srcRowBytes;
83 dstBytes += dstRowBytes; 83 dstBytes += dstRowBytes;
84 } 84 }
85 fBitmap.unlockPixels(); 85 fBitmap.unlockPixels();
86 return true; 86 return true;
87 } 87 }
88
89 bool SkBitmapTransformer::copyRowToPixelBuffer(int row, void *dstBuffer,
90 size_t dstBufferSize) const {
91 if (!this->isValid(true)) {
92 return false;
93 }
94 if ((row < 0) || (row >= this->numRows())) {
95 // EPOGER: add unit test for this check
96 SkDEBUGF(("row %d must be within range [0,%d]\n", row, numRows()-1));
97 return false;
98 }
99 size_t bytesNeeded = this->bytesNeededPerRow();
100 if (dstBufferSize < bytesNeeded) {
101 SkDEBUGF(("dstBufferSize %d must be >= %d\n", dstBufferSize, bytesNeeded ));
102 return false;
103 }
104
105 fBitmap.lockPixels();
bungeman-skia 2013/04/22 05:14:02 This isn't cheap as it involves taking a mutex, as
106 int width = fBitmap.width();
107 size_t srcRowBytes = fBitmap.rowBytes();
108 const char *srcBytes = const_cast<const char *>(static_cast<char*>(fBitmap.g etPixels()));
109 char *dstBytes = static_cast<char *>(dstBuffer);
110 srcBytes += srcRowBytes * row;
111 transform_scanline(srcBytes, width, dstBytes);
112 fBitmap.unlockPixels();
113 return true;
114 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698