Add SkImage->draw() call with src and dst rects.

Committed: http://code.google.com/p/skia/source/detail?r=10237

R=junov@chromium.org, senorblanco@chromium.org, reed@google.com

Author: arbesfeld@chromium.org

Review URL: https://chromiumcodereview.appspot.com/19729007

git-svn-id: http://skia.googlecode.com/svn/trunk@10274 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/image/SkImage_Codec.cpp b/src/image/SkImage_Codec.cpp
index 61661de..b9a8990 100644
--- a/src/image/SkImage_Codec.cpp
+++ b/src/image/SkImage_Codec.cpp
@@ -19,6 +19,7 @@
     virtual ~SkImage_Codec();
 
     virtual void onDraw(SkCanvas*, SkScalar, SkScalar, const SkPaint*) SK_OVERRIDE;
+    virtual void onDrawRectToRect(SkCanvas*, const SkRect*, const SkRect&, const SkPaint*) SK_OVERRIDE;
 
 private:
     SkData*     fEncodedData;
@@ -48,6 +49,17 @@
     canvas->drawBitmap(fBitmap, x, y, paint);
 }
 
+void SkImage_Codec::onDrawRectToRect(SkCanvas* canvas, const SkRect* src, 
+                                     const SkRect& dst, const SkPaint* paint) {
+    if (!fBitmap.pixelRef()) {
+        if (!SkImageDecoder::DecodeMemory(fEncodedData->bytes(), fEncodedData->size(),
+                                          &fBitmap)) {
+            return;
+        }
+    }
+    canvas->drawBitmapRectToRect(fBitmap, src, dst, paint);
+}
+
 ///////////////////////////////////////////////////////////////////////////////
 
 SkImage* SkImage::NewEncodedData(SkData* data) {