Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(838)

Unified Diff: samplecode/SampleMipMap.cpp

Issue 19789016: add mipmaps to scaledimagecache (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | src/core/SkBitmapProcState.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
}
« no previous file with comments | « no previous file | src/core/SkBitmapProcState.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698