Chromium Code Reviews| Index: src/core/SkPictureRecord.cpp |
| diff --git a/src/core/SkPictureRecord.cpp b/src/core/SkPictureRecord.cpp |
| index 72c537bd755b9f1f8e9cdc035323dfa91089365f..2006e5ebb50299ecdfb7f2a632b0f6066c2b0d18 100644 |
| --- a/src/core/SkPictureRecord.cpp |
| +++ b/src/core/SkPictureRecord.cpp |
| @@ -1400,7 +1400,8 @@ void SkPictureRecord::onDrawTextOnPath(const void* text, size_t byteLength, cons |
| this->validate(initialOffset, size); |
| } |
| -void SkPictureRecord::onDrawPicture(const SkPicture* picture) { |
| +void SkPictureRecord::onDrawPicture(const SkPicture* picture, const SkMatrix* matrix, |
| + const SkPaint* paint) { |
| #ifdef SK_COLLAPSE_MATRIX_CLIP_STATE |
| fMCMgr.call(SkMatrixClipStateMgr::kOther_CallType); |
| @@ -1408,8 +1409,20 @@ void SkPictureRecord::onDrawPicture(const SkPicture* picture) { |
| // op + picture index |
| size_t size = 2 * kUInt32Size; |
| - size_t initialOffset = this->addDraw(DRAW_PICTURE, &size); |
| - this->addPicture(picture); |
| + size_t initialOffset; |
| + |
| + if (NULL == matrix && NULL == paint) { |
| + initialOffset = this->addDraw(DRAW_PICTURE, &size); |
| + this->addPicture(picture); |
| + } else { |
| + const SkMatrix& m = matrix ? *matrix : SkMatrix::I(); |
| + size += m.writeToMemory(NULL) + kUInt32Size; // matrix + paint |
| + initialOffset = this->addDraw(DRAW_PICTURE_MATRIX_PAINT, &size); |
| + this->addPicture(picture); |
| + this->addMatrix(m); |
| + this->addPaintPtr(paint); |
|
robertphillips
2014/08/08 14:59:53
Don't need this next line.
|
| + this->validate(initialOffset, size); |
| + } |
| this->validate(initialOffset, size); |
| } |