Chromium Code Reviews| Index: src/image/SkImagePriv.cpp |
| diff --git a/src/image/SkImagePriv.cpp b/src/image/SkImagePriv.cpp |
| index c44e439b72c8b29eb82837b6dae19797d4b9569b..0ac33dda8f3045f0fe8a865695581a51c40fa59a 100644 |
| --- a/src/image/SkImagePriv.cpp |
| +++ b/src/image/SkImagePriv.cpp |
| @@ -141,3 +141,34 @@ 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, |
|
reed1
2013/07/19 20:28:52
minor, but might move the initialization of pictur
|
| + 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->concat(matrix); |
| + if (!paint || !needs_layer(*paint)) { |
| + canvas->clipRect(tmpSrc); |
| + } |
| + |
| + canvas->drawPicture(*picture); |
| + canvas->restoreToCount(saveCount); |
| +} |