downsamplebitmap.cpp revision bfefc7c95fc0e8ebd5000c68f6d16e1a3ea0e71e
19c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com/* 29c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com * Copyright 2013 Google Inc. 39c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com * 49c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com * Use of this source code is governed by a BSD-style license that can be 59c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com * found in the LICENSE file. 69c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com */ 79c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 89c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com#include "gm.h" 99c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com#include "SkGradientShader.h" 109c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 119c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com#include "SkTypeface.h" 129c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com#include "SkImageDecoder.h" 139c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com#include "SkStream.h" 14af42a03051e6a588cda01a988c31eb6493d7d299humper@google.com#include "SkPaint.h" 159c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 169c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.comstatic void setTypeface(SkPaint* paint, const char name[], SkTypeface::Style style) { 179c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com SkSafeUnref(paint->setTypeface(SkTypeface::CreateFromName(name, style))); 189c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com} 199c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 209c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.comclass DownsampleBitmapGM : public skiagm::GM { 219c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 229c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.compublic: 239c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com SkBitmap fBM; 249c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com SkString fName; 259c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com bool fBitmapMade; 26af42a03051e6a588cda01a988c31eb6493d7d299humper@google.com SkPaint::FilterLevel fFilterLevel; 279c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 28af42a03051e6a588cda01a988c31eb6493d7d299humper@google.com DownsampleBitmapGM(SkPaint::FilterLevel filterLevel) 29af42a03051e6a588cda01a988c31eb6493d7d299humper@google.com : fFilterLevel(filterLevel) 309c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com { 319c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com this->setBGColor(0xFFDDDDDD); 329c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com fBitmapMade = false; 339c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com } 349c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 35e2cf805e9ae57f259307ab0834dd23dfe468c316humper@google.com const char* filterLevelToString() { 36e2cf805e9ae57f259307ab0834dd23dfe468c316humper@google.com static const char *filterLevelNames[] = { 37e2cf805e9ae57f259307ab0834dd23dfe468c316humper@google.com "none", "low", "medium", "high" 38e2cf805e9ae57f259307ab0834dd23dfe468c316humper@google.com }; 39e2cf805e9ae57f259307ab0834dd23dfe468c316humper@google.com return filterLevelNames[fFilterLevel]; 40af42a03051e6a588cda01a988c31eb6493d7d299humper@google.com } 419c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 429c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.comprotected: 43a90c6803865766d28e92091f56f718f5e41fe80fcommit-bot@chromium.org virtual uint32_t onGetFlags() const SK_OVERRIDE { 44a90c6803865766d28e92091f56f718f5e41fe80fcommit-bot@chromium.org if (SkPaint::kHigh_FilterLevel != fFilterLevel) { 45a90c6803865766d28e92091f56f718f5e41fe80fcommit-bot@chromium.org return kSkipTiled_Flag; 46a90c6803865766d28e92091f56f718f5e41fe80fcommit-bot@chromium.org } 47a90c6803865766d28e92091f56f718f5e41fe80fcommit-bot@chromium.org return 0; 48a90c6803865766d28e92091f56f718f5e41fe80fcommit-bot@chromium.org } 49a90c6803865766d28e92091f56f718f5e41fe80fcommit-bot@chromium.org 509c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com virtual SkString onShortName() SK_OVERRIDE { 519c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com return fName; 529c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com } 539c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 549c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com virtual SkISize onISize() SK_OVERRIDE { 559c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com make_bitmap_wrapper(); 569c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com return SkISize::Make(4 * fBM.width(), fBM.height()); 579c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com } 589c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 599c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com void make_bitmap_wrapper() { 609c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com if (!fBitmapMade) { 619c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com fBitmapMade = true; 629c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com make_bitmap(); 639c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com } 649c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com } 659c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 669c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com virtual void make_bitmap() = 0; 679c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 689c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE { 699c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com make_bitmap_wrapper(); 709c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 719c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com int curX = 0; 729c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com int curWidth; 739c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com float curScale = 1; 749c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com do { 759c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 769c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com SkMatrix matrix; 779c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com matrix.setScale( curScale, curScale ); 789c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 799c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com SkPaint paint; 80af42a03051e6a588cda01a988c31eb6493d7d299humper@google.com paint.setFilterLevel(fFilterLevel); 819c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 829c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com canvas->save(); 839c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com canvas->translate( (SkScalar) curX, 0.f ); 849c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com canvas->drawBitmapMatrix( fBM, matrix, &paint ); 859c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com canvas->restore(); 869c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 879c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com curWidth = (int) (fBM.width() * curScale + 2); 889c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com curX += curWidth; 899c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com curScale *= 0.75f; 90138ebc3e4061cf533ea2f7f3717239670fdc6e43humper@google.com } while (curWidth >= 2 && curX < 4*fBM.width()); 919c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com } 929c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 939c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.comprivate: 949c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com typedef skiagm::GM INHERITED; 959c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com}; 969c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 979c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.comclass DownsampleBitmapTextGM: public DownsampleBitmapGM { 989c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com public: 99af42a03051e6a588cda01a988c31eb6493d7d299humper@google.com DownsampleBitmapTextGM(float textSize, SkPaint::FilterLevel filterLevel) 100af42a03051e6a588cda01a988c31eb6493d7d299humper@google.com : INHERITED(filterLevel), fTextSize(textSize) 1019c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com { 102e2cf805e9ae57f259307ab0834dd23dfe468c316humper@google.com fName.printf("downsamplebitmap_text_%s_%.2fpt", this->filterLevelToString(), fTextSize); 1039c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com } 1049c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 1059c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com protected: 1069c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com float fTextSize; 1079c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 1089c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com virtual void make_bitmap() SK_OVERRIDE { 109eb9a46cbbb475e862a084aa2224ec18d4ac5e95breed@google.com fBM.allocN32Pixels(int(fTextSize * 8), int(fTextSize * 6)); 1109c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com SkCanvas canvas(fBM); 1119c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com canvas.drawColor(SK_ColorWHITE); 1129c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 1139c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com SkPaint paint; 1149c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com paint.setAntiAlias(true); 1159c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com paint.setSubpixelText(true); 1169c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com paint.setTextSize(fTextSize); 1179c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 1189c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com setTypeface(&paint, "Times", SkTypeface::kNormal); 1199c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com canvas.drawText("Hamburgefons", 12, fTextSize/2, 1.2f*fTextSize, paint); 1209c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com setTypeface(&paint, "Times", SkTypeface::kBold); 1219c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com canvas.drawText("Hamburgefons", 12, fTextSize/2, 2.4f*fTextSize, paint); 1229c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com setTypeface(&paint, "Times", SkTypeface::kItalic); 1239c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com canvas.drawText("Hamburgefons", 12, fTextSize/2, 3.6f*fTextSize, paint); 1249c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com setTypeface(&paint, "Times", SkTypeface::kBoldItalic); 1259c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com canvas.drawText("Hamburgefons", 12, fTextSize/2, 4.8f*fTextSize, paint); 1269c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com } 1279c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com private: 1289c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com typedef DownsampleBitmapGM INHERITED; 1299c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com}; 1309c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 1319c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.comclass DownsampleBitmapCheckerboardGM: public DownsampleBitmapGM { 1329c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com public: 133af42a03051e6a588cda01a988c31eb6493d7d299humper@google.com DownsampleBitmapCheckerboardGM(int size, int numChecks, SkPaint::FilterLevel filterLevel) 134af42a03051e6a588cda01a988c31eb6493d7d299humper@google.com : INHERITED(filterLevel), fSize(size), fNumChecks(numChecks) 1359c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com { 136e2cf805e9ae57f259307ab0834dd23dfe468c316humper@google.com fName.printf("downsamplebitmap_checkerboard_%s_%d_%d", this->filterLevelToString(), fSize, fNumChecks); 1379c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com } 1389c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 1399c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com protected: 1409c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com int fSize; 1419c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com int fNumChecks; 1429c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 1439c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com virtual void make_bitmap() SK_OVERRIDE { 144eb9a46cbbb475e862a084aa2224ec18d4ac5e95breed@google.com fBM.allocN32Pixels(fSize, fSize); 1459c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com for (int y = 0; y < fSize; ++y) { 1469c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com for (int x = 0; x < fSize; ++x) { 1479c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com SkPMColor* s = fBM.getAddr32(x, y); 1489c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com int cx = (x * fNumChecks) / fSize; 1499c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com int cy = (y * fNumChecks) / fSize; 1509c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com if ((cx+cy)%2) { 1519c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com *s = 0xFFFFFFFF; 1529c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com } else { 1539c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com *s = 0xFF000000; 1549c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com } 1559c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com } 1569c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com } 1579c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com } 1589c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com private: 1599c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com typedef DownsampleBitmapGM INHERITED; 1609c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com}; 1619c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 1629c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.comclass DownsampleBitmapImageGM: public DownsampleBitmapGM { 1639c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com public: 164af42a03051e6a588cda01a988c31eb6493d7d299humper@google.com DownsampleBitmapImageGM(const char filename[], SkPaint::FilterLevel filterLevel) 165af42a03051e6a588cda01a988c31eb6493d7d299humper@google.com : INHERITED(filterLevel), fFilename(filename) 1669c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com { 167e2cf805e9ae57f259307ab0834dd23dfe468c316humper@google.com fName.printf("downsamplebitmap_image_%s_%s", this->filterLevelToString(), filename); 1689c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com } 1699c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 1709c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com protected: 1719c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com SkString fFilename; 1729c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com int fSize; 1739c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 1749c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com virtual void make_bitmap() SK_OVERRIDE { 1759c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com SkString path(skiagm::GM::gResourcePath); 1769c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com path.append("/"); 1779c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com path.append(fFilename); 1789c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 1799c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com SkImageDecoder *codec = NULL; 1809c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com SkFILEStream stream(path.c_str()); 1819c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com if (stream.isValid()) { 1829c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com codec = SkImageDecoder::Factory(&stream); 1839c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com } 1849c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com if (codec) { 1859c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com stream.rewind(); 186bfefc7c95fc0e8ebd5000c68f6d16e1a3ea0e71ereed codec->decode(&stream, &fBM, kN32_SkColorType, SkImageDecoder::kDecodePixels_Mode); 1879c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com SkDELETE(codec); 1889c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com } else { 189eb9a46cbbb475e862a084aa2224ec18d4ac5e95breed@google.com fBM.allocN32Pixels(1, 1); 1909c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com *(fBM.getAddr32(0,0)) = 0xFF0000FF; // red == bad 1919c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com } 1929c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com fSize = fBM.height(); 1939c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com } 1949c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com private: 1959c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com typedef DownsampleBitmapGM INHERITED; 1969c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com}; 1979c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 1989c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com////////////////////////////////////////////////////////////////////////////// 1999c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 200af42a03051e6a588cda01a988c31eb6493d7d299humper@google.comDEF_GM( return new DownsampleBitmapTextGM(72, SkPaint::kHigh_FilterLevel); ) 201af42a03051e6a588cda01a988c31eb6493d7d299humper@google.comDEF_GM( return new DownsampleBitmapCheckerboardGM(512,256, SkPaint::kHigh_FilterLevel); ) 202af42a03051e6a588cda01a988c31eb6493d7d299humper@google.comDEF_GM( return new DownsampleBitmapImageGM("mandrill_512.png", SkPaint::kHigh_FilterLevel); ) 203af42a03051e6a588cda01a988c31eb6493d7d299humper@google.com 204af42a03051e6a588cda01a988c31eb6493d7d299humper@google.comDEF_GM( return new DownsampleBitmapTextGM(72, SkPaint::kMedium_FilterLevel); ) 205af42a03051e6a588cda01a988c31eb6493d7d299humper@google.comDEF_GM( return new DownsampleBitmapCheckerboardGM(512,256, SkPaint::kMedium_FilterLevel); ) 206af42a03051e6a588cda01a988c31eb6493d7d299humper@google.comDEF_GM( return new DownsampleBitmapImageGM("mandrill_512.png", SkPaint::kMedium_FilterLevel); ) 207af42a03051e6a588cda01a988c31eb6493d7d299humper@google.com 208af42a03051e6a588cda01a988c31eb6493d7d299humper@google.comDEF_GM( return new DownsampleBitmapTextGM(72, SkPaint::kLow_FilterLevel); ) 209af42a03051e6a588cda01a988c31eb6493d7d299humper@google.comDEF_GM( return new DownsampleBitmapCheckerboardGM(512,256, SkPaint::kLow_FilterLevel); ) 210af42a03051e6a588cda01a988c31eb6493d7d299humper@google.comDEF_GM( return new DownsampleBitmapImageGM("mandrill_512.png", SkPaint::kLow_FilterLevel); ) 211af42a03051e6a588cda01a988c31eb6493d7d299humper@google.com 212af42a03051e6a588cda01a988c31eb6493d7d299humper@google.comDEF_GM( return new DownsampleBitmapTextGM(72, SkPaint::kNone_FilterLevel); ) 213af42a03051e6a588cda01a988c31eb6493d7d299humper@google.comDEF_GM( return new DownsampleBitmapCheckerboardGM(512,256, SkPaint::kNone_FilterLevel); ) 214af42a03051e6a588cda01a988c31eb6493d7d299humper@google.comDEF_GM( return new DownsampleBitmapImageGM("mandrill_512.png", SkPaint::kNone_FilterLevel); ) 215