| Index: src/utils/SkDeferredCanvas.cpp
|
| diff --git a/src/utils/SkDeferredCanvas.cpp b/src/utils/SkDeferredCanvas.cpp
|
| index 06f7bb089ab07ebebfd9ad7a99c9f8af0a5e11d9..826865feed54943bc7f127343792721ad1e89900 100644
|
| --- a/src/utils/SkDeferredCanvas.cpp
|
| +++ b/src/utils/SkDeferredCanvas.cpp
|
| @@ -866,6 +866,35 @@ void SkDeferredCanvas::drawBitmapNine(const SkBitmap& bitmap,
|
| this->recordedDrawCommand();
|
| }
|
|
|
| +void SkDeferredCanvas::drawImage(const SkImage* image, SkScalar left, SkScalar top,
|
| + const SkPaint* paint) {
|
| + SkRect imageRect = SkRect::MakeXYWH(left, top,
|
| + SkIntToScalar(image->width()), SkIntToScalar(image->height()));
|
| + if (fDeferredDrawing &&
|
| + this->isFullFrame(&imageRect, paint) &&
|
| + (image->isOpaque() || isPaintOpaque(paint, 0))) {
|
| + this->getDeferredDevice()->skipPendingCommands();
|
| + }
|
| +
|
| + AutoImmediateDrawIfNeeded autoDraw(*this, paint);
|
| + this->drawingCanvas()->drawImage(image, left, top, paint);
|
| + this->recordedDrawCommand();
|
| +}
|
| +
|
| +void SkDeferredCanvas::drawImageRect(const SkImage* image, const SkRect* src,
|
| + const SkRect& dst,
|
| + const SkPaint* paint) {
|
| + if (fDeferredDrawing &&
|
| + this->isFullFrame(&dst, paint) &&
|
| + (image->isOpaque() || isPaintOpaque(paint, 0))) {
|
| + this->getDeferredDevice()->skipPendingCommands();
|
| + }
|
| +
|
| + AutoImmediateDrawIfNeeded autoDraw(*this, paint);
|
| + this->drawingCanvas()->drawImageRect(image, src, dst, paint);
|
| + this->recordedDrawCommand();
|
| +}
|
| +
|
| void SkDeferredCanvas::drawSprite(const SkBitmap& bitmap, int left, int top,
|
| const SkPaint* paint) {
|
| SkRect bitmapRect = SkRect::MakeXYWH(
|
|
|