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

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

Issue 176863004: Add new skpinfo tool (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: Next round of review changes Created 6 years, 9 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
« no previous file with comments | « src/core/SkPicturePlayback.h ('k') | tools/skpinfo.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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
OLDNEW
« no previous file with comments | « src/core/SkPicturePlayback.h ('k') | tools/skpinfo.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698