aboutsummaryrefslogtreecommitdiffhomepage
path: root/samplecode
diff options
context:
space:
mode:
authorGravatar reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-07-24 14:31:33 +0000
committerGravatar reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-07-24 14:31:33 +0000
commitd94697c21ae479df4190a1afbf08d85ce244a4ef (patch)
tree3a8170934ed3aa549e0d9a2a3f8eb22f2c9640e7 /samplecode
parent58c856a54a75e703aa3c82a0cd4e1affd9bd8ffc (diff)
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
Diffstat (limited to 'samplecode')
-rw-r--r--samplecode/SampleMipMap.cpp90
1 files changed, 16 insertions, 74 deletions
diff --git a/samplecode/SampleMipMap.cpp b/samplecode/SampleMipMap.cpp
index e93636d472..700235d025 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);
}