Index: samplecode/SampleMipMap.cpp |
diff --git a/samplecode/SampleMipMap.cpp b/samplecode/SampleMipMap.cpp |
index e93636d472963239110bea462c17e6a9cbab0537..700235d025839e99c5db075270c8df772ed05647 100644 |
--- a/samplecode/SampleMipMap.cpp |
+++ b/samplecode/SampleMipMap.cpp |
@@ -67,84 +67,26 @@ protected: |
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); |
} |