| 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);
|
| }
|
|
|
|
|