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 287 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
298 if (fPictureRefs[i]->willPlayBackBitmaps()) { | 298 if (fPictureRefs[i]->willPlayBackBitmaps()) { |
299 return true; | 299 return true; |
300 } | 300 } |
301 } | 301 } |
302 return false; | 302 return false; |
303 } | 303 } |
304 | 304 |
305 /////////////////////////////////////////////////////////////////////////////// | 305 /////////////////////////////////////////////////////////////////////////////// |
306 /////////////////////////////////////////////////////////////////////////////// | 306 /////////////////////////////////////////////////////////////////////////////// |
307 | 307 |
308 #define PICT_READER_TAG SkSetFourByteTag('r', 'e', 'a', 'd') | |
309 #define PICT_FACTORY_TAG SkSetFourByteTag('f', 'a', 'c', 't') | |
310 #define PICT_TYPEFACE_TAG SkSetFourByteTag('t', 'p', 'f', 'c') | |
311 #define PICT_PICTURE_TAG SkSetFourByteTag('p', 'c', 't', 'r') | |
312 | |
313 // This tag specifies the size of the ReadBuffer, needed for the following tags | |
314 #define PICT_BUFFER_SIZE_TAG SkSetFourByteTag('a', 'r', 'a', 'y') | |
315 // these are all inside the ARRAYS tag | |
316 #define PICT_BITMAP_BUFFER_TAG SkSetFourByteTag('b', 't', 'm', 'p') | |
317 #define PICT_PAINT_BUFFER_TAG SkSetFourByteTag('p', 'n', 't', ' ') | |
318 #define PICT_PATH_BUFFER_TAG SkSetFourByteTag('p', 't', 'h', ' ') | |
319 | |
320 // Always write this guy last (with no length field afterwards) | |
321 #define PICT_EOF_TAG SkSetFourByteTag('e', 'o', 'f', ' ') | |
322 | |
323 #include "SkStream.h" | 308 #include "SkStream.h" |
324 | 309 |
325 static void writeTagSize(SkWriteBuffer& buffer, uint32_t tag, | 310 static void writeTagSize(SkWriteBuffer& buffer, uint32_t tag, |
326 uint32_t size) { | 311 uint32_t size) { |
327 buffer.writeUInt(tag); | 312 buffer.writeUInt(tag); |
328 buffer.writeUInt(size); | 313 buffer.writeUInt(size); |
329 } | 314 } |
330 | 315 |
331 static void writeTagSize(SkWStream* stream, uint32_t tag, | 316 static void writeTagSize(SkWStream* stream, uint32_t tag, |
332 uint32_t size) { | 317 uint32_t size) { |
333 stream->write32(tag); | 318 stream->write32(tag); |
334 stream->write32(size); | 319 stream->write32(size); |
335 } | 320 } |
336 | 321 |
337 static void writeFactories(SkWStream* stream, const SkFactorySet& rec) { | 322 static void writeFactories(SkWStream* stream, const SkFactorySet& rec) { |
338 int count = rec.count(); | 323 int count = rec.count(); |
339 | 324 |
340 writeTagSize(stream, PICT_FACTORY_TAG, count); | 325 writeTagSize(stream, SK_PICT_FACTORY_TAG, count); |
341 | 326 |
342 SkAutoSTMalloc<16, SkFlattenable::Factory> storage(count); | 327 SkAutoSTMalloc<16, SkFlattenable::Factory> storage(count); |
343 SkFlattenable::Factory* array = (SkFlattenable::Factory*)storage.get(); | 328 SkFlattenable::Factory* array = (SkFlattenable::Factory*)storage.get(); |
344 rec.copyToArray(array); | 329 rec.copyToArray(array); |
345 | 330 |
346 for (int i = 0; i < count; i++) { | 331 for (int i = 0; i < count; i++) { |
347 const char* name = SkFlattenable::FactoryToName(array[i]); | 332 const char* name = SkFlattenable::FactoryToName(array[i]); |
348 // SkDebugf("---- write factories [%d] %p <%s>\n", i, array[i], name); | 333 // SkDebugf("---- write factories [%d] %p <%s>\n", i, array[i], name); |
349 if (NULL == name || 0 == *name) { | 334 if (NULL == name || 0 == *name) { |
350 stream->writePackedUInt(0); | 335 stream->writePackedUInt(0); |
351 } else { | 336 } else { |
352 uint32_t len = strlen(name); | 337 uint32_t len = strlen(name); |
353 stream->writePackedUInt(len); | 338 stream->writePackedUInt(len); |
354 stream->write(name, len); | 339 stream->write(name, len); |
355 } | 340 } |
356 } | 341 } |
357 } | 342 } |
358 | 343 |
359 static void writeTypefaces(SkWStream* stream, const SkRefCntSet& rec) { | 344 static void writeTypefaces(SkWStream* stream, const SkRefCntSet& rec) { |
360 int count = rec.count(); | 345 int count = rec.count(); |
361 | 346 |
362 writeTagSize(stream, PICT_TYPEFACE_TAG, count); | 347 writeTagSize(stream, SK_PICT_TYPEFACE_TAG, count); |
363 | 348 |
364 SkAutoSTMalloc<16, SkTypeface*> storage(count); | 349 SkAutoSTMalloc<16, SkTypeface*> storage(count); |
365 SkTypeface** array = (SkTypeface**)storage.get(); | 350 SkTypeface** array = (SkTypeface**)storage.get(); |
366 rec.copyToArray((SkRefCnt**)array); | 351 rec.copyToArray((SkRefCnt**)array); |
367 | 352 |
368 for (int i = 0; i < count; i++) { | 353 for (int i = 0; i < count; i++) { |
369 array[i]->serialize(stream); | 354 array[i]->serialize(stream); |
370 } | 355 } |
371 } | 356 } |
372 | 357 |
373 void SkPicturePlayback::flattenToBuffer(SkWriteBuffer& buffer) const { | 358 void SkPicturePlayback::flattenToBuffer(SkWriteBuffer& buffer) const { |
374 int i, n; | 359 int i, n; |
375 | 360 |
376 if ((n = SafeCount(fBitmaps)) > 0) { | 361 if ((n = SafeCount(fBitmaps)) > 0) { |
377 writeTagSize(buffer, PICT_BITMAP_BUFFER_TAG, n); | 362 writeTagSize(buffer, SK_PICT_BITMAP_BUFFER_TAG, n); |
378 for (i = 0; i < n; i++) { | 363 for (i = 0; i < n; i++) { |
379 buffer.writeBitmap((*fBitmaps)[i]); | 364 buffer.writeBitmap((*fBitmaps)[i]); |
380 } | 365 } |
381 } | 366 } |
382 | 367 |
383 if ((n = SafeCount(fPaints)) > 0) { | 368 if ((n = SafeCount(fPaints)) > 0) { |
384 writeTagSize(buffer, PICT_PAINT_BUFFER_TAG, n); | 369 writeTagSize(buffer, SK_PICT_PAINT_BUFFER_TAG, n); |
385 for (i = 0; i < n; i++) { | 370 for (i = 0; i < n; i++) { |
386 buffer.writePaint((*fPaints)[i]); | 371 buffer.writePaint((*fPaints)[i]); |
387 } | 372 } |
388 } | 373 } |
389 | 374 |
390 if ((n = SafeCount(fPathHeap.get())) > 0) { | 375 if ((n = SafeCount(fPathHeap.get())) > 0) { |
391 writeTagSize(buffer, PICT_PATH_BUFFER_TAG, n); | 376 writeTagSize(buffer, SK_PICT_PATH_BUFFER_TAG, n); |
392 fPathHeap->flatten(buffer); | 377 fPathHeap->flatten(buffer); |
393 } | 378 } |
394 } | 379 } |
395 | 380 |
396 void SkPicturePlayback::serialize(SkWStream* stream, | 381 void SkPicturePlayback::serialize(SkWStream* stream, |
397 SkPicture::EncodeBitmap encoder) const { | 382 SkPicture::EncodeBitmap encoder) const { |
398 writeTagSize(stream, PICT_READER_TAG, fOpData->size()); | 383 writeTagSize(stream, SK_PICT_READER_TAG, fOpData->size()); |
399 stream->write(fOpData->bytes(), fOpData->size()); | 384 stream->write(fOpData->bytes(), fOpData->size()); |
400 | 385 |
401 if (fPictureCount > 0) { | 386 if (fPictureCount > 0) { |
402 writeTagSize(stream, PICT_PICTURE_TAG, fPictureCount); | 387 writeTagSize(stream, SK_PICT_PICTURE_TAG, fPictureCount); |
403 for (int i = 0; i < fPictureCount; i++) { | 388 for (int i = 0; i < fPictureCount; i++) { |
404 fPictureRefs[i]->serialize(stream, encoder); | 389 fPictureRefs[i]->serialize(stream, encoder); |
405 } | 390 } |
406 } | 391 } |
407 | 392 |
408 // Write some of our data into a writebuffer, and then serialize that | 393 // Write some of our data into a writebuffer, and then serialize that |
409 // into our stream | 394 // into our stream |
410 { | 395 { |
411 SkRefCntSet typefaceSet; | 396 SkRefCntSet typefaceSet; |
412 SkFactorySet factSet; | 397 SkFactorySet factSet; |
413 | 398 |
414 SkWriteBuffer buffer(SkWriteBuffer::kCrossProcess_Flag); | 399 SkWriteBuffer buffer(SkWriteBuffer::kCrossProcess_Flag); |
415 buffer.setTypefaceRecorder(&typefaceSet); | 400 buffer.setTypefaceRecorder(&typefaceSet); |
416 buffer.setFactoryRecorder(&factSet); | 401 buffer.setFactoryRecorder(&factSet); |
417 buffer.setBitmapEncoder(encoder); | 402 buffer.setBitmapEncoder(encoder); |
418 | 403 |
419 this->flattenToBuffer(buffer); | 404 this->flattenToBuffer(buffer); |
420 | 405 |
421 // We have to write these to sets into the stream *before* we write | 406 // We have to write these to sets into the stream *before* we write |
422 // the buffer, since parsing that buffer will require that we already | 407 // the buffer, since parsing that buffer will require that we already |
423 // have these sets available to use. | 408 // have these sets available to use. |
424 writeFactories(stream, factSet); | 409 writeFactories(stream, factSet); |
425 writeTypefaces(stream, typefaceSet); | 410 writeTypefaces(stream, typefaceSet); |
426 | 411 |
427 writeTagSize(stream, PICT_BUFFER_SIZE_TAG, buffer.bytesWritten()); | 412 writeTagSize(stream, SK_PICT_BUFFER_SIZE_TAG, buffer.bytesWritten()); |
428 buffer.writeToStream(stream); | 413 buffer.writeToStream(stream); |
429 } | 414 } |
430 | 415 |
431 stream->write32(PICT_EOF_TAG); | 416 stream->write32(SK_PICT_EOF_TAG); |
432 } | 417 } |
433 | 418 |
434 void SkPicturePlayback::flatten(SkWriteBuffer& buffer) const { | 419 void SkPicturePlayback::flatten(SkWriteBuffer& buffer) const { |
435 writeTagSize(buffer, PICT_READER_TAG, fOpData->size()); | 420 writeTagSize(buffer, SK_PICT_READER_TAG, fOpData->size()); |
436 buffer.writeByteArray(fOpData->bytes(), fOpData->size()); | 421 buffer.writeByteArray(fOpData->bytes(), fOpData->size()); |
437 | 422 |
438 if (fPictureCount > 0) { | 423 if (fPictureCount > 0) { |
439 writeTagSize(buffer, PICT_PICTURE_TAG, fPictureCount); | 424 writeTagSize(buffer, SK_PICT_PICTURE_TAG, fPictureCount); |
440 for (int i = 0; i < fPictureCount; i++) { | 425 for (int i = 0; i < fPictureCount; i++) { |
441 fPictureRefs[i]->flatten(buffer); | 426 fPictureRefs[i]->flatten(buffer); |
442 } | 427 } |
443 } | 428 } |
444 | 429 |
445 // Write this picture playback's data into a writebuffer | 430 // Write this picture playback's data into a writebuffer |
446 this->flattenToBuffer(buffer); | 431 this->flattenToBuffer(buffer); |
447 buffer.write32(PICT_EOF_TAG); | 432 buffer.write32(SK_PICT_EOF_TAG); |
448 } | 433 } |
449 | 434 |
450 /////////////////////////////////////////////////////////////////////////////// | 435 /////////////////////////////////////////////////////////////////////////////// |
451 | 436 |
452 /** | 437 /** |
453 * Return the corresponding SkReadBuffer flags, given a set of | 438 * Return the corresponding SkReadBuffer flags, given a set of |
454 * SkPictInfo flags. | 439 * SkPictInfo flags. |
455 */ | 440 */ |
456 static uint32_t pictInfoFlagsToReadBufferFlags(uint32_t pictInfoFlags) { | 441 static uint32_t pictInfoFlagsToReadBufferFlags(uint32_t pictInfoFlags) { |
457 static const struct { | 442 static const struct { |
(...skipping 21 matching lines...) Expand all Loading... |
479 * its dependents: FACTORY_TAG and TYPEFACE_TAG. These two are not required | 464 * its dependents: FACTORY_TAG and TYPEFACE_TAG. These two are not required |
480 * but if they are present, they need to have been seen before the buffer. | 465 * but if they are present, they need to have been seen before the buffer. |
481 * | 466 * |
482 * We assert that if/when we see either of these, that we have not yet seen | 467 * We assert that if/when we see either of these, that we have not yet seen |
483 * the buffer tag, because if we have, then its too-late to deal with the | 468 * the buffer tag, because if we have, then its too-late to deal with the |
484 * factories or typefaces. | 469 * factories or typefaces. |
485 */ | 470 */ |
486 SkDEBUGCODE(bool haveBuffer = false;) | 471 SkDEBUGCODE(bool haveBuffer = false;) |
487 | 472 |
488 switch (tag) { | 473 switch (tag) { |
489 case PICT_READER_TAG: { | 474 case SK_PICT_READER_TAG: { |
490 SkAutoMalloc storage(size); | 475 SkAutoMalloc storage(size); |
491 if (stream->read(storage.get(), size) != size) { | 476 if (stream->read(storage.get(), size) != size) { |
492 return false; | 477 return false; |
493 } | 478 } |
494 SkASSERT(NULL == fOpData); | 479 SkASSERT(NULL == fOpData); |
495 fOpData = SkData::NewFromMalloc(storage.detach(), size); | 480 fOpData = SkData::NewFromMalloc(storage.detach(), size); |
496 } break; | 481 } break; |
497 case PICT_FACTORY_TAG: { | 482 case SK_PICT_FACTORY_TAG: { |
498 SkASSERT(!haveBuffer); | 483 SkASSERT(!haveBuffer); |
499 fFactoryPlayback = SkNEW_ARGS(SkFactoryPlayback, (size)); | 484 fFactoryPlayback = SkNEW_ARGS(SkFactoryPlayback, (size)); |
500 for (size_t i = 0; i < size; i++) { | 485 for (size_t i = 0; i < size; i++) { |
501 SkString str; | 486 SkString str; |
502 const size_t len = stream->readPackedUInt(); | 487 const size_t len = stream->readPackedUInt(); |
503 str.resize(len); | 488 str.resize(len); |
504 if (stream->read(str.writable_str(), len) != len) { | 489 if (stream->read(str.writable_str(), len) != len) { |
505 return false; | 490 return false; |
506 } | 491 } |
507 fFactoryPlayback->base()[i] = SkFlattenable::NameToFactory(str.c
_str()); | 492 fFactoryPlayback->base()[i] = SkFlattenable::NameToFactory(str.c
_str()); |
508 } | 493 } |
509 } break; | 494 } break; |
510 case PICT_TYPEFACE_TAG: { | 495 case SK_PICT_TYPEFACE_TAG: { |
511 SkASSERT(!haveBuffer); | 496 SkASSERT(!haveBuffer); |
512 fTFPlayback.setCount(size); | 497 fTFPlayback.setCount(size); |
513 for (size_t i = 0; i < size; i++) { | 498 for (size_t i = 0; i < size; i++) { |
514 SkAutoTUnref<SkTypeface> tf(SkTypeface::Deserialize(stream)); | 499 SkAutoTUnref<SkTypeface> tf(SkTypeface::Deserialize(stream)); |
515 if (!tf.get()) { // failed to deserialize | 500 if (!tf.get()) { // failed to deserialize |
516 // fTFPlayback asserts it never has a null, so we plop in | 501 // fTFPlayback asserts it never has a null, so we plop in |
517 // the default here. | 502 // the default here. |
518 tf.reset(SkTypeface::RefDefault()); | 503 tf.reset(SkTypeface::RefDefault()); |
519 } | 504 } |
520 fTFPlayback.set(i, tf); | 505 fTFPlayback.set(i, tf); |
521 } | 506 } |
522 } break; | 507 } break; |
523 case PICT_PICTURE_TAG: { | 508 case SK_PICT_PICTURE_TAG: { |
524 fPictureCount = size; | 509 fPictureCount = size; |
525 fPictureRefs = SkNEW_ARRAY(SkPicture*, fPictureCount); | 510 fPictureRefs = SkNEW_ARRAY(SkPicture*, fPictureCount); |
526 bool success = true; | 511 bool success = true; |
527 int i = 0; | 512 int i = 0; |
528 for ( ; i < fPictureCount; i++) { | 513 for ( ; i < fPictureCount; i++) { |
529 fPictureRefs[i] = SkPicture::CreateFromStream(stream, proc); | 514 fPictureRefs[i] = SkPicture::CreateFromStream(stream, proc); |
530 if (NULL == fPictureRefs[i]) { | 515 if (NULL == fPictureRefs[i]) { |
531 success = false; | 516 success = false; |
532 break; | 517 break; |
533 } | 518 } |
534 } | 519 } |
535 if (!success) { | 520 if (!success) { |
536 // Delete all of the pictures that were already created (up to b
ut excluding i): | 521 // Delete all of the pictures that were already created (up to b
ut excluding i): |
537 for (int j = 0; j < i; j++) { | 522 for (int j = 0; j < i; j++) { |
538 fPictureRefs[j]->unref(); | 523 fPictureRefs[j]->unref(); |
539 } | 524 } |
540 // Delete the array | 525 // Delete the array |
541 SkDELETE_ARRAY(fPictureRefs); | 526 SkDELETE_ARRAY(fPictureRefs); |
542 fPictureCount = 0; | 527 fPictureCount = 0; |
543 return false; | 528 return false; |
544 } | 529 } |
545 } break; | 530 } break; |
546 case PICT_BUFFER_SIZE_TAG: { | 531 case SK_PICT_BUFFER_SIZE_TAG: { |
547 SkAutoMalloc storage(size); | 532 SkAutoMalloc storage(size); |
548 if (stream->read(storage.get(), size) != size) { | 533 if (stream->read(storage.get(), size) != size) { |
549 return false; | 534 return false; |
550 } | 535 } |
551 | 536 |
552 SkReadBuffer buffer(storage.get(), size); | 537 SkReadBuffer buffer(storage.get(), size); |
553 buffer.setFlags(pictInfoFlagsToReadBufferFlags(info.fFlags)); | 538 buffer.setFlags(pictInfoFlagsToReadBufferFlags(info.fFlags)); |
554 | 539 |
555 fFactoryPlayback->setupBuffer(buffer); | 540 fFactoryPlayback->setupBuffer(buffer); |
556 fTFPlayback.setupBuffer(buffer); | 541 fTFPlayback.setupBuffer(buffer); |
557 buffer.setBitmapDecoder(proc); | 542 buffer.setBitmapDecoder(proc); |
558 | 543 |
559 while (!buffer.eof()) { | 544 while (!buffer.eof()) { |
560 tag = buffer.readUInt(); | 545 tag = buffer.readUInt(); |
561 size = buffer.readUInt(); | 546 size = buffer.readUInt(); |
562 if (!this->parseBufferTag(buffer, tag, size)) { | 547 if (!this->parseBufferTag(buffer, tag, size)) { |
563 return false; | 548 return false; |
564 } | 549 } |
565 } | 550 } |
566 SkDEBUGCODE(haveBuffer = true;) | 551 SkDEBUGCODE(haveBuffer = true;) |
567 } break; | 552 } break; |
568 } | 553 } |
569 return true; // success | 554 return true; // success |
570 } | 555 } |
571 | 556 |
572 bool SkPicturePlayback::parseBufferTag(SkReadBuffer& buffer, | 557 bool SkPicturePlayback::parseBufferTag(SkReadBuffer& buffer, |
573 uint32_t tag, size_t size) { | 558 uint32_t tag, size_t size) { |
574 switch (tag) { | 559 switch (tag) { |
575 case PICT_BITMAP_BUFFER_TAG: { | 560 case SK_PICT_BITMAP_BUFFER_TAG: { |
576 fBitmaps = SkTRefArray<SkBitmap>::Create(size); | 561 fBitmaps = SkTRefArray<SkBitmap>::Create(size); |
577 for (size_t i = 0; i < size; ++i) { | 562 for (size_t i = 0; i < size; ++i) { |
578 SkBitmap* bm = &fBitmaps->writableAt(i); | 563 SkBitmap* bm = &fBitmaps->writableAt(i); |
579 buffer.readBitmap(bm); | 564 buffer.readBitmap(bm); |
580 bm->setImmutable(); | 565 bm->setImmutable(); |
581 } | 566 } |
582 } break; | 567 } break; |
583 case PICT_PAINT_BUFFER_TAG: { | 568 case SK_PICT_PAINT_BUFFER_TAG: { |
584 fPaints = SkTRefArray<SkPaint>::Create(size); | 569 fPaints = SkTRefArray<SkPaint>::Create(size); |
585 for (size_t i = 0; i < size; ++i) { | 570 for (size_t i = 0; i < size; ++i) { |
586 buffer.readPaint(&fPaints->writableAt(i)); | 571 buffer.readPaint(&fPaints->writableAt(i)); |
587 } | 572 } |
588 } break; | 573 } break; |
589 case PICT_PATH_BUFFER_TAG: | 574 case SK_PICT_PATH_BUFFER_TAG: |
590 if (size > 0) { | 575 if (size > 0) { |
591 fPathHeap.reset(SkNEW_ARGS(SkPathHeap, (buffer))); | 576 fPathHeap.reset(SkNEW_ARGS(SkPathHeap, (buffer))); |
592 } | 577 } |
593 break; | 578 break; |
594 default: | 579 default: |
595 // The tag was invalid. | 580 // The tag was invalid. |
596 return false; | 581 return false; |
597 } | 582 } |
598 return true; // success | 583 return true; // success |
599 } | 584 } |
(...skipping 15 matching lines...) Expand all Loading... |
615 if (!playback->parseBuffer(buffer)) { | 600 if (!playback->parseBuffer(buffer)) { |
616 return NULL; | 601 return NULL; |
617 } | 602 } |
618 return playback.detach(); | 603 return playback.detach(); |
619 } | 604 } |
620 | 605 |
621 bool SkPicturePlayback::parseStream(SkStream* stream, const SkPictInfo& info, | 606 bool SkPicturePlayback::parseStream(SkStream* stream, const SkPictInfo& info, |
622 SkPicture::InstallPixelRefProc proc) { | 607 SkPicture::InstallPixelRefProc proc) { |
623 for (;;) { | 608 for (;;) { |
624 uint32_t tag = stream->readU32(); | 609 uint32_t tag = stream->readU32(); |
625 if (PICT_EOF_TAG == tag) { | 610 if (SK_PICT_EOF_TAG == tag) { |
626 break; | 611 break; |
627 } | 612 } |
628 | 613 |
629 uint32_t size = stream->readU32(); | 614 uint32_t size = stream->readU32(); |
630 if (!this->parseStreamTag(stream, info, tag, size, proc)) { | 615 if (!this->parseStreamTag(stream, info, tag, size, proc)) { |
631 return false; // we're invalid | 616 return false; // we're invalid |
632 } | 617 } |
633 } | 618 } |
634 return true; | 619 return true; |
635 } | 620 } |
636 | 621 |
637 bool SkPicturePlayback::parseBuffer(SkReadBuffer& buffer) { | 622 bool SkPicturePlayback::parseBuffer(SkReadBuffer& buffer) { |
638 for (;;) { | 623 for (;;) { |
639 uint32_t tag = buffer.readUInt(); | 624 uint32_t tag = buffer.readUInt(); |
640 if (PICT_EOF_TAG == tag) { | 625 if (SK_PICT_EOF_TAG == tag) { |
641 break; | 626 break; |
642 } | 627 } |
643 | 628 |
644 uint32_t size = buffer.readUInt(); | 629 uint32_t size = buffer.readUInt(); |
645 if (!this->parseBufferTag(buffer, tag, size)) { | 630 if (!this->parseBufferTag(buffer, tag, size)) { |
646 return false; // we're invalid | 631 return false; // we're invalid |
647 } | 632 } |
648 } | 633 } |
649 return true; | 634 return true; |
650 } | 635 } |
(...skipping 1012 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1663 for (index = 0; index < fPictureCount; index++) | 1648 for (index = 0; index < fPictureCount; index++) |
1664 bufferPtr += snprintf(bufferPtr, DUMP_BUFFER_SIZE - (bufferPtr - pBuffer
), | 1649 bufferPtr += snprintf(bufferPtr, DUMP_BUFFER_SIZE - (bufferPtr - pBuffer
), |
1665 "picture%p, ", fPictureRefs[index]); | 1650 "picture%p, ", fPictureRefs[index]); |
1666 if (fPictureCount > 0) | 1651 if (fPictureCount > 0) |
1667 SkDebugf("%s0};\n", pBuffer); | 1652 SkDebugf("%s0};\n", pBuffer); |
1668 | 1653 |
1669 const_cast<SkPicturePlayback*>(this)->dumpStream(); | 1654 const_cast<SkPicturePlayback*>(this)->dumpStream(); |
1670 } | 1655 } |
1671 | 1656 |
1672 #endif | 1657 #endif |
OLD | NEW |