| Index: src/image/SkImagePriv.cpp
|
| diff --git a/src/image/SkImagePriv.cpp b/src/image/SkImagePriv.cpp
|
| index c44e439b72c8b29eb82837b6dae19797d4b9569b..75769a40f310e3cab8bf0deac3c89f4b6ef77bd6 100644
|
| --- a/src/image/SkImagePriv.cpp
|
| +++ b/src/image/SkImagePriv.cpp
|
| @@ -141,3 +141,31 @@ void SkImagePrivDrawPicture(SkCanvas* canvas, SkPicture* picture,
|
| canvas->drawPicture(*picture);
|
| canvas->restoreToCount(saveCount);
|
| }
|
| +
|
| +void SkImagePrivDrawPicture(SkCanvas* canvas, SkPicture* picture,
|
| + const SkRect* src, const SkRect& dst, const SkPaint* paint) {
|
| + int saveCount = canvas->getSaveCount();
|
| +
|
| + SkMatrix matrix;
|
| + SkRect pictureBounds, tmpSrc;
|
| +
|
| + pictureBounds.set(0, 0,
|
| + SkIntToScalar(picture->width()),
|
| + SkIntToScalar(picture->height()));
|
| + if (NULL != src) {
|
| + tmpSrc = *src;
|
| + } else {
|
| + tmpSrc = pictureBounds;
|
| + }
|
| +
|
| + matrix.setRectToRect(tmpSrc, dst, SkMatrix::kFill_ScaleToFit);
|
| + if (paint && needs_layer(*paint)) {
|
| + canvas->saveLayer(&dst, paint);
|
| + } else {
|
| + canvas->save();
|
| + canvas->clipRect(tmpSrc);
|
| + }
|
| + canvas->concat(matrix);
|
| + canvas->drawPicture(*picture);
|
| + canvas->restoreToCount(saveCount);
|
| +}
|
|
|