add mipmaps to scaledimagecache

BUG=

Review URL: https://codereview.chromium.org/19789016

git-svn-id: http://skia.googlecode.com/svn/trunk@10305 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/samplecode/SampleMipMap.cpp b/samplecode/SampleMipMap.cpp
index e93636d..700235d 100644
--- a/samplecode/SampleMipMap.cpp
+++ b/samplecode/SampleMipMap.cpp
@@ -67,84 +67,26 @@
         return this->INHERITED::onQuery(evt);
     }
 
-    void drawN(SkCanvas* canvas, const SkBitmap& bitmap) {
-        SkAutoCanvasRestore acr(canvas, true);
-        for (int i = N; i > 1; i >>= 1) {
-            canvas->drawBitmap(bitmap, 0, 0, NULL);
-            canvas->translate(SkIntToScalar(N + 8), 0);
-            canvas->scale(SK_ScalarHalf, SK_ScalarHalf);
-        }
-    }
-
-    void drawN2(SkCanvas* canvas, const SkBitmap& bitmap) {
-        SkBitmap bg;
-        bg.setConfig(SkBitmap::kARGB_8888_Config, N, N);
-        bg.allocPixels();
-
-        SkAutoCanvasRestore acr(canvas, true);
-        for (int i = 0; i < 6; i++) {
-            bg.eraseColor(SK_ColorTRANSPARENT);
-            SkCanvas c(bg);
-            c.scale(SK_Scalar1 / (1 << i), SK_Scalar1 / (1 << i));
-            c.drawBitmap(bitmap, 0, 0, NULL);
-
-            canvas->save();
-            canvas->scale(SkIntToScalar(1 << i), SkIntToScalar(1 << i));
-            canvas->drawBitmap(bg, 0, 0, NULL);
-            canvas->restore();
-            canvas->translate(SkIntToScalar(N + 8), 0);
-        }
-    }
-
     virtual void onDrawContent(SkCanvas* canvas) {
         this->init();
-        canvas->translate(SkIntToScalar(10), SkIntToScalar(10));
-
-        canvas->scale(1.00000001f, 0.9999999f);
-
-        drawN2(canvas, fBitmap);
-
-        canvas->translate(0, SkIntToScalar(N + 8));
-        SkBitmap bitmap(fBitmap);
-        bitmap.buildMipMap();
-        drawN2(canvas, bitmap);
-
-        SkScalar time = SampleCode::GetAnimScalar(SkIntToScalar(1)/4,
-                                                  SkIntToScalar(2));
-        if (time >= SK_Scalar1) {
-            time = SkIntToScalar(2) - time;
-        }
-        fWidth = 8 + SkScalarRound(N * time);
-
-        SkRect dst;
-        dst.set(0, 0, SkIntToScalar(fWidth), SkIntToScalar(fWidth));
+        
+        static const SkPaint::FilterLevel gLevel[] = {
+            SkPaint::kNone_FilterLevel,
+            SkPaint::kLow_FilterLevel,
+            SkPaint::kMedium_FilterLevel,
+            SkPaint::kHigh_FilterLevel,
+        };
 
         SkPaint paint;
-        paint.setFilterBitmap(true);
-        paint.setAntiAlias(true);
-
-        canvas->translate(0, SkIntToScalar(N + 8));
-        canvas->drawBitmapRect(fBitmap, NULL, dst, NULL);
-        canvas->translate(SkIntToScalar(N + 8), 0);
-        canvas->drawBitmapRect(fBitmap, NULL, dst, &paint);
-        canvas->translate(-SkIntToScalar(N + 8), SkIntToScalar(N + 8));
-        canvas->drawBitmapRect(bitmap, NULL, dst, NULL);
-        canvas->translate(SkIntToScalar(N + 8), 0);
-        canvas->drawBitmapRect(bitmap, NULL, dst, &paint);
-
-        SkShader* s = SkShader::CreateBitmapShader(bitmap,
-                                                   SkShader::kRepeat_TileMode,
-                                                   SkShader::kRepeat_TileMode);
-        paint.setShader(s)->unref();
-        SkMatrix m;
-        m.setScale(SkIntToScalar(fWidth) / N,
-                   SkIntToScalar(fWidth) / N);
-        s->setLocalMatrix(m);
-        SkRect r;
-        r.set(0, 0, SkIntToScalar(4*N), SkIntToScalar(5*N/2));
-        r.offset(SkIntToScalar(N + 12), -SkIntToScalar(N + 4));
-        canvas->drawRect(r, paint);
-
+        
+        for (size_t i = 0; i < SK_ARRAY_COUNT(gLevel); ++i) {
+            SkScalar x = 10 + i * 100;
+            SkScalar y = 10;
+            
+            paint.setFilterLevel(gLevel[i]);
+            
+            canvas->drawBitmap(fBitmap, x, y, &paint);
+        }
         this->inval(NULL);
     }