| OLD | NEW |
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2011 Google Inc. | 3 * Copyright 2011 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 #include "SkPicturePlayback.h" | 8 #include "SkPicturePlayback.h" |
| 9 #include "SkPictureRecord.h" | 9 #include "SkPictureRecord.h" |
| 10 #include "SkTypeface.h" | 10 #include "SkTypeface.h" |
| (...skipping 327 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 338 int count = rec.count(); | 338 int count = rec.count(); |
| 339 | 339 |
| 340 SkAutoSTMalloc<16, SkFlattenable::Factory> storage(count); | 340 SkAutoSTMalloc<16, SkFlattenable::Factory> storage(count); |
| 341 SkFlattenable::Factory* array = (SkFlattenable::Factory*)storage.get(); | 341 SkFlattenable::Factory* array = (SkFlattenable::Factory*)storage.get(); |
| 342 rec.copyToArray(array); | 342 rec.copyToArray(array); |
| 343 | 343 |
| 344 size_t size = compute_chunk_size(array, count); | 344 size_t size = compute_chunk_size(array, count); |
| 345 | 345 |
| 346 // TODO: write_tag_size should really take a size_t | 346 // TODO: write_tag_size should really take a size_t |
| 347 write_tag_size(stream, SK_PICT_FACTORY_TAG, (uint32_t) size); | 347 write_tag_size(stream, SK_PICT_FACTORY_TAG, (uint32_t) size); |
| 348 SkDEBUGCODE(size_t start = stream->bytesWritten()); |
| 348 stream->write32(count); | 349 stream->write32(count); |
| 349 | 350 |
| 350 for (int i = 0; i < count; i++) { | 351 for (int i = 0; i < count; i++) { |
| 351 const char* name = SkFlattenable::FactoryToName(array[i]); | 352 const char* name = SkFlattenable::FactoryToName(array[i]); |
| 352 // SkDebugf("---- write factories [%d] %p <%s>\n", i, array[i], name); | 353 // SkDebugf("---- write factories [%d] %p <%s>\n", i, array[i], name); |
| 353 if (NULL == name || 0 == *name) { | 354 if (NULL == name || 0 == *name) { |
| 354 stream->writePackedUInt(0); | 355 stream->writePackedUInt(0); |
| 355 } else { | 356 } else { |
| 356 uint32_t len = strlen(name); | 357 uint32_t len = strlen(name); |
| 357 stream->writePackedUInt(len); | 358 stream->writePackedUInt(len); |
| 358 stream->write(name, len); | 359 stream->write(name, len); |
| 359 } | 360 } |
| 360 } | 361 } |
| 361 | 362 |
| 362 | 363 SkASSERT(size == (stream->bytesWritten() - start)); |
| 363 } | 364 } |
| 364 | 365 |
| 365 static void writeTypefaces(SkWStream* stream, const SkRefCntSet& rec) { | 366 static void write_typefaces(SkWStream* stream, const SkRefCntSet& rec) { |
| 366 int count = rec.count(); | 367 int count = rec.count(); |
| 367 | 368 |
| 368 write_tag_size(stream, SK_PICT_TYPEFACE_TAG, count); | 369 write_tag_size(stream, SK_PICT_TYPEFACE_TAG, count); |
| 369 | 370 |
| 370 SkAutoSTMalloc<16, SkTypeface*> storage(count); | 371 SkAutoSTMalloc<16, SkTypeface*> storage(count); |
| 371 SkTypeface** array = (SkTypeface**)storage.get(); | 372 SkTypeface** array = (SkTypeface**)storage.get(); |
| 372 rec.copyToArray((SkRefCnt**)array); | 373 rec.copyToArray((SkRefCnt**)array); |
| 373 | 374 |
| 374 for (int i = 0; i < count; i++) { | 375 for (int i = 0; i < count; i++) { |
| 375 array[i]->serialize(stream); | 376 array[i]->serialize(stream); |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 421 buffer.setTypefaceRecorder(&typefaceSet); | 422 buffer.setTypefaceRecorder(&typefaceSet); |
| 422 buffer.setFactoryRecorder(&factSet); | 423 buffer.setFactoryRecorder(&factSet); |
| 423 buffer.setBitmapEncoder(encoder); | 424 buffer.setBitmapEncoder(encoder); |
| 424 | 425 |
| 425 this->flattenToBuffer(buffer); | 426 this->flattenToBuffer(buffer); |
| 426 | 427 |
| 427 // We have to write these two sets into the stream *before* we write | 428 // We have to write these two sets into the stream *before* we write |
| 428 // the buffer, since parsing that buffer will require that we already | 429 // the buffer, since parsing that buffer will require that we already |
| 429 // have these sets available to use. | 430 // have these sets available to use. |
| 430 write_factories(stream, factSet); | 431 write_factories(stream, factSet); |
| 431 writeTypefaces(stream, typefaceSet); | 432 write_typefaces(stream, typefaceSet); |
| 432 | 433 |
| 433 write_tag_size(stream, SK_PICT_BUFFER_SIZE_TAG, buffer.bytesWritten()); | 434 write_tag_size(stream, SK_PICT_BUFFER_SIZE_TAG, buffer.bytesWritten()); |
| 434 buffer.writeToStream(stream); | 435 buffer.writeToStream(stream); |
| 435 } | 436 } |
| 436 | 437 |
| 437 stream->write32(SK_PICT_EOF_TAG); | 438 stream->write32(SK_PICT_EOF_TAG); |
| 438 } | 439 } |
| 439 | 440 |
| 440 void SkPicturePlayback::flatten(SkWriteBuffer& buffer) const { | 441 void SkPicturePlayback::flatten(SkWriteBuffer& buffer) const { |
| 441 write_tag_size(buffer, SK_PICT_READER_TAG, fOpData->size()); | 442 write_tag_size(buffer, SK_PICT_READER_TAG, fOpData->size()); |
| (...skipping 1238 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1680 for (index = 0; index < fPictureCount; index++) | 1681 for (index = 0; index < fPictureCount; index++) |
| 1681 bufferPtr += snprintf(bufferPtr, DUMP_BUFFER_SIZE - (bufferPtr - pBuffer
), | 1682 bufferPtr += snprintf(bufferPtr, DUMP_BUFFER_SIZE - (bufferPtr - pBuffer
), |
| 1682 "picture%p, ", fPictureRefs[index]); | 1683 "picture%p, ", fPictureRefs[index]); |
| 1683 if (fPictureCount > 0) | 1684 if (fPictureCount > 0) |
| 1684 SkDebugf("%s0};\n", pBuffer); | 1685 SkDebugf("%s0};\n", pBuffer); |
| 1685 | 1686 |
| 1686 const_cast<SkPicturePlayback*>(this)->dumpStream(); | 1687 const_cast<SkPicturePlayback*>(this)->dumpStream(); |
| 1687 } | 1688 } |
| 1688 | 1689 |
| 1689 #endif | 1690 #endif |
| OLD | NEW |