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

Side by Side Diff: src/core/SkMallocPixelRef.cpp

Issue 134163010: Refactor read and write buffers. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: original write flags were fine Created 6 years, 10 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
OLDNEW
1 /* 1 /*
2 * Copyright 2011 Google Inc. 2 * Copyright 2011 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #include "SkMallocPixelRef.h" 8 #include "SkMallocPixelRef.h"
9 #include "SkBitmap.h" 9 #include "SkBitmap.h"
10 #include "SkFlattenableBuffers.h" 10 #include "SkReadBuffer.h"
11 #include "SkWriteBuffer.h"
11 12
12 // assumes ptr was allocated via sk_malloc 13 // assumes ptr was allocated via sk_malloc
13 static void sk_free_releaseproc(void* ptr, void*) { 14 static void sk_free_releaseproc(void* ptr, void*) {
14 sk_free(ptr); 15 sk_free(ptr);
15 } 16 }
16 17
17 static bool is_valid(const SkImageInfo& info, SkColorTable* ctable) { 18 static bool is_valid(const SkImageInfo& info, SkColorTable* ctable) {
18 if (info.fWidth < 0 || 19 if (info.fWidth < 0 ||
19 info.fHeight < 0 || 20 info.fHeight < 0 ||
20 (unsigned)info.fColorType > (unsigned)kLastEnum_SkColorType || 21 (unsigned)info.fColorType > (unsigned)kLastEnum_SkColorType ||
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after
194 } 195 }
195 196
196 void SkMallocPixelRef::onUnlockPixels() { 197 void SkMallocPixelRef::onUnlockPixels() {
197 // nothing to do 198 // nothing to do
198 } 199 }
199 200
200 size_t SkMallocPixelRef::getAllocatedSizeInBytes() const { 201 size_t SkMallocPixelRef::getAllocatedSizeInBytes() const {
201 return this->info().getSafeSize(fRB); 202 return this->info().getSafeSize(fRB);
202 } 203 }
203 204
204 void SkMallocPixelRef::flatten(SkFlattenableWriteBuffer& buffer) const { 205 void SkMallocPixelRef::flatten(SkWriteBuffer& buffer) const {
205 this->INHERITED::flatten(buffer); 206 this->INHERITED::flatten(buffer);
206 207
207 buffer.write32(SkToU32(fRB)); 208 buffer.write32(SkToU32(fRB));
208 209
209 // TODO: replace this bulk write with a chunky one that can trim off any 210 // TODO: replace this bulk write with a chunky one that can trim off any
210 // trailing bytes on each scanline (in case rowbytes > width*size) 211 // trailing bytes on each scanline (in case rowbytes > width*size)
211 size_t size = this->info().getSafeSize(fRB); 212 size_t size = this->info().getSafeSize(fRB);
212 buffer.writeByteArray(fStorage, size); 213 buffer.writeByteArray(fStorage, size);
213 buffer.writeBool(fCTable != NULL); 214 buffer.writeBool(fCTable != NULL);
214 if (fCTable) { 215 if (fCTable) {
215 fCTable->writeToBuffer(buffer); 216 fCTable->writeToBuffer(buffer);
216 } 217 }
217 } 218 }
218 219
219 SkMallocPixelRef::SkMallocPixelRef(SkFlattenableReadBuffer& buffer) 220 SkMallocPixelRef::SkMallocPixelRef(SkReadBuffer& buffer)
220 : INHERITED(buffer, NULL) 221 : INHERITED(buffer, NULL)
221 , fReleaseProc(sk_free_releaseproc) 222 , fReleaseProc(sk_free_releaseproc)
222 , fReleaseProcContext(NULL) 223 , fReleaseProcContext(NULL)
223 { 224 {
224 fRB = buffer.read32(); 225 fRB = buffer.read32();
225 size_t size = buffer.isValid() ? this->info().getSafeSize(fRB) : 0; 226 size_t size = buffer.isValid() ? this->info().getSafeSize(fRB) : 0;
226 if (buffer.validateAvailable(size)) { 227 if (buffer.validateAvailable(size)) {
227 fStorage = sk_malloc_throw(size); 228 fStorage = sk_malloc_throw(size);
228 buffer.readByteArray(fStorage, size); 229 buffer.readByteArray(fStorage, size);
229 } else { 230 } else {
230 fStorage = NULL; 231 fStorage = NULL;
231 } 232 }
232 233
233 if (buffer.readBool()) { 234 if (buffer.readBool()) {
234 fCTable = SkNEW_ARGS(SkColorTable, (buffer)); 235 fCTable = SkNEW_ARGS(SkColorTable, (buffer));
235 } else { 236 } else {
236 fCTable = NULL; 237 fCTable = NULL;
237 } 238 }
238 239
239 this->setPreLocked(fStorage, fRB, fCTable); 240 this->setPreLocked(fStorage, fRB, fCTable);
240 } 241 }
241 242
242 /////////////////////////////////////////////////////////////////////////////// 243 ///////////////////////////////////////////////////////////////////////////////
243 244
244 SkPixelRef* SkMallocPixelRef::PRFactory::create(const SkImageInfo& info, 245 SkPixelRef* SkMallocPixelRef::PRFactory::create(const SkImageInfo& info,
245 SkColorTable* ctable) { 246 SkColorTable* ctable) {
246 return SkMallocPixelRef::NewAllocate(info, info.minRowBytes(), ctable); 247 return SkMallocPixelRef::NewAllocate(info, info.minRowBytes(), ctable);
247 } 248 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698