| 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 "SkPictureRecord.h" | 8 #include "SkPictureRecord.h" |
| 9 #include "SkTSearch.h" | 9 #include "SkTSearch.h" |
| 10 #include "SkPixelRef.h" | 10 #include "SkPixelRef.h" |
| (...skipping 394 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 405 convert_command_to_noop(writer, saveLayerInfo.fOffset); | 405 convert_command_to_noop(writer, saveLayerInfo.fOffset); |
| 406 uint32_t* ptr = writer->peek32(dbmInfo.fOffset+dbmPaintOffset); | 406 uint32_t* ptr = writer->peek32(dbmInfo.fOffset+dbmPaintOffset); |
| 407 SkASSERT(dbmPaintId == *ptr); | 407 SkASSERT(dbmPaintId == *ptr); |
| 408 *ptr = data->index(); | 408 *ptr = data->index(); |
| 409 return true; | 409 return true; |
| 410 } | 410 } |
| 411 | 411 |
| 412 /* | 412 /* |
| 413 * Restore has just been called (but not recorded), look back at the | 413 * Restore has just been called (but not recorded), look back at the |
| 414 * matching save* and see if we are in the configuration: | 414 * matching save* and see if we are in the configuration: |
| 415 * SAVE_LAYER | 415 * SAVE_LAYER (with NULL == bounds) |
| 416 * SAVE | 416 * SAVE |
| 417 * CLIP_RECT | 417 * CLIP_RECT |
| 418 * DRAW_BITMAP|DRAW_BITMAP_MATRIX|DRAW_BITMAP_NINE|DRAW_BITMAP_RECT_TO_R
ECT | 418 * DRAW_BITMAP|DRAW_BITMAP_MATRIX|DRAW_BITMAP_NINE|DRAW_BITMAP_RECT_TO_R
ECT |
| 419 * RESTORE | 419 * RESTORE |
| 420 * RESTORE | 420 * RESTORE |
| 421 * where the saveLayer's color can be moved into the drawBitmap*'s paint | 421 * where the saveLayer's color can be moved into the drawBitmap*'s paint |
| 422 */ | 422 */ |
| 423 static bool remove_save_layer2(SkWriter32* writer, int32_t offset, | 423 static bool remove_save_layer2(SkWriter32* writer, int32_t offset, |
| 424 SkPaintDictionary* paintDict) { | 424 SkPaintDictionary* paintDict) { |
| 425 | 425 |
| (...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 558 if (fRestoreOffsetStack.count() == 0) { | 558 if (fRestoreOffsetStack.count() == 0) { |
| 559 return; | 559 return; |
| 560 } | 560 } |
| 561 | 561 |
| 562 if (fRestoreOffsetStack.count() == fFirstSavedLayerIndex) { | 562 if (fRestoreOffsetStack.count() == fFirstSavedLayerIndex) { |
| 563 fFirstSavedLayerIndex = kNoSavedLayerIndex; | 563 fFirstSavedLayerIndex = kNoSavedLayerIndex; |
| 564 } | 564 } |
| 565 | 565 |
| 566 uint32_t initialOffset, size; | 566 uint32_t initialOffset, size; |
| 567 size_t opt; | 567 size_t opt; |
| 568 for (opt = 0; opt < SK_ARRAY_COUNT(gPictureRecordOpts); ++opt) { | 568 if (!(fRecordFlags & SkPicture::kDisableRecordOptimizations_RecordingFlag))
{ |
| 569 if ((*gPictureRecordOpts[opt].fProc)(&fWriter, fRestoreOffsetStack.top()
, &fPaints)) { | 569 for (opt = 0; opt < SK_ARRAY_COUNT(gPictureRecordOpts); ++opt) { |
| 570 // Some optimization fired so don't add the RESTORE | 570 if ((*gPictureRecordOpts[opt].fProc)(&fWriter, fRestoreOffsetStack.t
op(), &fPaints)) { |
| 571 size = 0; | 571 // Some optimization fired so don't add the RESTORE |
| 572 initialOffset = fWriter.size(); | 572 size = 0; |
| 573 apply_optimization_to_bbh(gPictureRecordOpts[opt].fType, | 573 initialOffset = fWriter.size(); |
| 574 fStateTree, fBoundingHierarchy); | 574 apply_optimization_to_bbh(gPictureRecordOpts[opt].fType, |
| 575 break; | 575 fStateTree, fBoundingHierarchy); |
| 576 break; |
| 577 } |
| 576 } | 578 } |
| 577 } | 579 } |
| 578 | 580 |
| 579 if (SK_ARRAY_COUNT(gPictureRecordOpts) == opt) { | 581 if ((fRecordFlags & SkPicture::kDisableRecordOptimizations_RecordingFlag) || |
| 582 SK_ARRAY_COUNT(gPictureRecordOpts) == opt) { |
| 580 // No optimization fired so add the RESTORE | 583 // No optimization fired so add the RESTORE |
| 581 fillRestoreOffsetPlaceholdersForCurrentStackLevel((uint32_t)fWriter.size
()); | 584 fillRestoreOffsetPlaceholdersForCurrentStackLevel((uint32_t)fWriter.size
()); |
| 582 size = 1 * kUInt32Size; // RESTORE consists solely of 1 op code | 585 size = 1 * kUInt32Size; // RESTORE consists solely of 1 op code |
| 583 initialOffset = this->addDraw(RESTORE, &size); | 586 initialOffset = this->addDraw(RESTORE, &size); |
| 584 } | 587 } |
| 585 | 588 |
| 586 fRestoreOffsetStack.pop(); | 589 fRestoreOffsetStack.pop(); |
| 587 | 590 |
| 588 validate(initialOffset, size); | 591 validate(initialOffset, size); |
| 589 return this->INHERITED::restore(); | 592 return this->INHERITED::restore(); |
| (...skipping 857 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1447 void SkPictureRecord::validateRegions() const { | 1450 void SkPictureRecord::validateRegions() const { |
| 1448 int count = fRegions.count(); | 1451 int count = fRegions.count(); |
| 1449 SkASSERT((unsigned) count < 0x1000); | 1452 SkASSERT((unsigned) count < 0x1000); |
| 1450 for (int index = 0; index < count; index++) { | 1453 for (int index = 0; index < count; index++) { |
| 1451 const SkFlatData* region = fRegions[index]; | 1454 const SkFlatData* region = fRegions[index]; |
| 1452 SkASSERT(region); | 1455 SkASSERT(region); |
| 1453 // region->validate(); | 1456 // region->validate(); |
| 1454 } | 1457 } |
| 1455 } | 1458 } |
| 1456 #endif | 1459 #endif |
| OLD | NEW |