downsamplebitmap.cpp revision c54d8db4d169ea5f2af2a9a2349df007bd428475
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 10bcbc1788b478b1e54079318ad073e8490aa66faetfarina#include "Resources.h" 11bcbc1788b478b1e54079318ad073e8490aa66faetfarina#include "SkGradientShader.h" 129c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com#include "SkTypeface.h" 139c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com#include "SkImageDecoder.h" 149c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com#include "SkStream.h" 15af42a03051e6a588cda01a988c31eb6493d7d299humper@google.com#include "SkPaint.h" 169c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 179c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.comstatic void setTypeface(SkPaint* paint, const char name[], SkTypeface::Style style) { 18992c7b03ef7914a18bfd78e965b0b4c99a5f5672Cary Clark sk_tool_utils::set_portable_typeface(paint, name, style); 199c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com} 209c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 219c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.comclass DownsampleBitmapGM : public skiagm::GM { 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 { 44d73c169637f1ab0b96bae43269da7216bb93a7e1humper return kSkipTiled_Flag; 45a90c6803865766d28e92091f56f718f5e41fe80fcommit-bot@chromium.org } 46a90c6803865766d28e92091f56f718f5e41fe80fcommit-bot@chromium.org 479c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com virtual SkString onShortName() SK_OVERRIDE { 489c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com return fName; 499c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com } 509c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 519c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com virtual SkISize onISize() SK_OVERRIDE { 529c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com make_bitmap_wrapper(); 536a2f5fe8677f27d737da0e4e6dd1f814fbdbb6fcmtklein return SkISize::Make(fBM.width(), 4 * fBM.height()); 549c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com } 559c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 569c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com void make_bitmap_wrapper() { 579c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com if (!fBitmapMade) { 589c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com fBitmapMade = true; 599c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com make_bitmap(); 609c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com } 619c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com } 629c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 639c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com virtual void make_bitmap() = 0; 649c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 659c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE { 669c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com make_bitmap_wrapper(); 679c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 686a2f5fe8677f27d737da0e4e6dd1f814fbdbb6fcmtklein int curY = 0; 696a2f5fe8677f27d737da0e4e6dd1f814fbdbb6fcmtklein int curHeight; 709c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com float curScale = 1; 719c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com do { 729c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 739c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com SkMatrix matrix; 749c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com matrix.setScale( curScale, curScale ); 759c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 769c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com SkPaint paint; 77af42a03051e6a588cda01a988c31eb6493d7d299humper@google.com paint.setFilterLevel(fFilterLevel); 789c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 799c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com canvas->save(); 806a2f5fe8677f27d737da0e4e6dd1f814fbdbb6fcmtklein canvas->translate(0, (SkScalar)curY); 81c54d8db4d169ea5f2af2a9a2349df007bd428475Florin Malita canvas->concat(matrix); 82c54d8db4d169ea5f2af2a9a2349df007bd428475Florin Malita canvas->drawBitmap(fBM, 0, 0, &paint); 839c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com canvas->restore(); 849c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 856a2f5fe8677f27d737da0e4e6dd1f814fbdbb6fcmtklein curHeight = (int) (fBM.height() * curScale + 2); 866a2f5fe8677f27d737da0e4e6dd1f814fbdbb6fcmtklein curY += curHeight; 879c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com curScale *= 0.75f; 886a2f5fe8677f27d737da0e4e6dd1f814fbdbb6fcmtklein } while (curHeight >= 2 && curY < 4*fBM.height()); 899c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com } 909c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 919c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.comprivate: 929c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com typedef skiagm::GM INHERITED; 939c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com}; 949c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 959c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.comclass DownsampleBitmapTextGM: public DownsampleBitmapGM { 969c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com public: 97af42a03051e6a588cda01a988c31eb6493d7d299humper@google.com DownsampleBitmapTextGM(float textSize, SkPaint::FilterLevel filterLevel) 98af42a03051e6a588cda01a988c31eb6493d7d299humper@google.com : INHERITED(filterLevel), fTextSize(textSize) 999c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com { 100e2cf805e9ae57f259307ab0834dd23dfe468c316humper@google.com fName.printf("downsamplebitmap_text_%s_%.2fpt", this->filterLevelToString(), fTextSize); 1019c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com } 1029c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 1039c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com protected: 1049c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com float fTextSize; 1059c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 1069c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com virtual void make_bitmap() SK_OVERRIDE { 107eb9a46cbbb475e862a084aa2224ec18d4ac5e95breed@google.com fBM.allocN32Pixels(int(fTextSize * 8), int(fTextSize * 6)); 1089c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com SkCanvas canvas(fBM); 1099c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com canvas.drawColor(SK_ColorWHITE); 1109c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 1119c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com SkPaint paint; 1129c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com paint.setAntiAlias(true); 1139c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com paint.setSubpixelText(true); 1149c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com paint.setTextSize(fTextSize); 1159c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 1169c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com setTypeface(&paint, "Times", SkTypeface::kNormal); 1179c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com canvas.drawText("Hamburgefons", 12, fTextSize/2, 1.2f*fTextSize, paint); 1189c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com setTypeface(&paint, "Times", SkTypeface::kBold); 1199c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com canvas.drawText("Hamburgefons", 12, fTextSize/2, 2.4f*fTextSize, paint); 1209c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com setTypeface(&paint, "Times", SkTypeface::kItalic); 1219c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com canvas.drawText("Hamburgefons", 12, fTextSize/2, 3.6f*fTextSize, paint); 1229c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com setTypeface(&paint, "Times", SkTypeface::kBoldItalic); 1239c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com canvas.drawText("Hamburgefons", 12, fTextSize/2, 4.8f*fTextSize, paint); 1249c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com } 1259c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com private: 1269c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com typedef DownsampleBitmapGM INHERITED; 1279c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com}; 1289c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 1299c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.comclass DownsampleBitmapCheckerboardGM: public DownsampleBitmapGM { 1309c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com public: 131af42a03051e6a588cda01a988c31eb6493d7d299humper@google.com DownsampleBitmapCheckerboardGM(int size, int numChecks, SkPaint::FilterLevel filterLevel) 132af42a03051e6a588cda01a988c31eb6493d7d299humper@google.com : INHERITED(filterLevel), fSize(size), fNumChecks(numChecks) 1339c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com { 134e2cf805e9ae57f259307ab0834dd23dfe468c316humper@google.com fName.printf("downsamplebitmap_checkerboard_%s_%d_%d", this->filterLevelToString(), fSize, fNumChecks); 1359c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com } 1369c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 1379c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com protected: 1389c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com int fSize; 1399c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com int fNumChecks; 1409c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 1419c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com virtual void make_bitmap() SK_OVERRIDE { 142eb9a46cbbb475e862a084aa2224ec18d4ac5e95breed@google.com fBM.allocN32Pixels(fSize, fSize); 1439c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com for (int y = 0; y < fSize; ++y) { 1449c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com for (int x = 0; x < fSize; ++x) { 1459c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com SkPMColor* s = fBM.getAddr32(x, y); 1469c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com int cx = (x * fNumChecks) / fSize; 1479c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com int cy = (y * fNumChecks) / fSize; 1489c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com if ((cx+cy)%2) { 1499c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com *s = 0xFFFFFFFF; 1509c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com } else { 1519c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com *s = 0xFF000000; 1529c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com } 1539c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com } 1549c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com } 1559c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com } 1569c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com private: 1579c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com typedef DownsampleBitmapGM INHERITED; 1589c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com}; 1599c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 1609c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.comclass DownsampleBitmapImageGM: public DownsampleBitmapGM { 1619c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com public: 162af42a03051e6a588cda01a988c31eb6493d7d299humper@google.com DownsampleBitmapImageGM(const char filename[], SkPaint::FilterLevel filterLevel) 163af42a03051e6a588cda01a988c31eb6493d7d299humper@google.com : INHERITED(filterLevel), fFilename(filename) 1649c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com { 165e2cf805e9ae57f259307ab0834dd23dfe468c316humper@google.com fName.printf("downsamplebitmap_image_%s_%s", this->filterLevelToString(), filename); 1669c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com } 1679c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 1689c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com protected: 1699c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com SkString fFilename; 1709c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com int fSize; 1719c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 1729c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com virtual void make_bitmap() SK_OVERRIDE { 173bcbc1788b478b1e54079318ad073e8490aa66faetfarina SkImageDecoder* codec = NULL; 174c846f4a96bcde1ffeaf17afc1469db6f2cbd1ad3tfarina SkString resourcePath = GetResourcePath(fFilename.c_str()); 175bcbc1788b478b1e54079318ad073e8490aa66faetfarina SkFILEStream stream(resourcePath.c_str()); 1769c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com if (stream.isValid()) { 1779c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com codec = SkImageDecoder::Factory(&stream); 1789c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com } 1799c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com if (codec) { 1809c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com stream.rewind(); 181bfefc7c95fc0e8ebd5000c68f6d16e1a3ea0e71ereed codec->decode(&stream, &fBM, kN32_SkColorType, SkImageDecoder::kDecodePixels_Mode); 1829c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com SkDELETE(codec); 1839c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com } else { 184eb9a46cbbb475e862a084aa2224ec18d4ac5e95breed@google.com fBM.allocN32Pixels(1, 1); 1859c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com *(fBM.getAddr32(0,0)) = 0xFF0000FF; // red == bad 1869c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com } 1879c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com fSize = fBM.height(); 1889c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com } 1899c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com private: 1909c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com typedef DownsampleBitmapGM INHERITED; 1919c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com}; 1929c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 1939c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com////////////////////////////////////////////////////////////////////////////// 1949c96d4b5ffdbf8c82f55b2058a2fea7225fe11d6humper@google.com 195af42a03051e6a588cda01a988c31eb6493d7d299humper@google.comDEF_GM( return new DownsampleBitmapTextGM(72, SkPaint::kHigh_FilterLevel); ) 196af42a03051e6a588cda01a988c31eb6493d7d299humper@google.comDEF_GM( return new DownsampleBitmapCheckerboardGM(512,256, SkPaint::kHigh_FilterLevel); ) 197af42a03051e6a588cda01a988c31eb6493d7d299humper@google.comDEF_GM( return new DownsampleBitmapImageGM("mandrill_512.png", SkPaint::kHigh_FilterLevel); ) 198efd7d45fc0fc5f2b924c774c5d38ce546f35f3cabsalomonDEF_GM( return new DownsampleBitmapImageGM("mandrill_132x132_12x12.astc", 199efd7d45fc0fc5f2b924c774c5d38ce546f35f3cabsalomon SkPaint::kHigh_FilterLevel); ) 200af42a03051e6a588cda01a988c31eb6493d7d299humper@google.com 201af42a03051e6a588cda01a988c31eb6493d7d299humper@google.comDEF_GM( return new DownsampleBitmapTextGM(72, SkPaint::kMedium_FilterLevel); ) 202af42a03051e6a588cda01a988c31eb6493d7d299humper@google.comDEF_GM( return new DownsampleBitmapCheckerboardGM(512,256, SkPaint::kMedium_FilterLevel); ) 203af42a03051e6a588cda01a988c31eb6493d7d299humper@google.comDEF_GM( return new DownsampleBitmapImageGM("mandrill_512.png", SkPaint::kMedium_FilterLevel); ) 204efd7d45fc0fc5f2b924c774c5d38ce546f35f3cabsalomonDEF_GM( return new DownsampleBitmapImageGM("mandrill_132x132_12x12.astc", 205efd7d45fc0fc5f2b924c774c5d38ce546f35f3cabsalomon SkPaint::kMedium_FilterLevel); ) 206af42a03051e6a588cda01a988c31eb6493d7d299humper@google.com 207af42a03051e6a588cda01a988c31eb6493d7d299humper@google.comDEF_GM( return new DownsampleBitmapTextGM(72, SkPaint::kLow_FilterLevel); ) 208af42a03051e6a588cda01a988c31eb6493d7d299humper@google.comDEF_GM( return new DownsampleBitmapCheckerboardGM(512,256, SkPaint::kLow_FilterLevel); ) 209af42a03051e6a588cda01a988c31eb6493d7d299humper@google.comDEF_GM( return new DownsampleBitmapImageGM("mandrill_512.png", SkPaint::kLow_FilterLevel); ) 210efd7d45fc0fc5f2b924c774c5d38ce546f35f3cabsalomonDEF_GM( return new DownsampleBitmapImageGM("mandrill_132x132_12x12.astc", 211efd7d45fc0fc5f2b924c774c5d38ce546f35f3cabsalomon SkPaint::kLow_FilterLevel); ) 212af42a03051e6a588cda01a988c31eb6493d7d299humper@google.com 213af42a03051e6a588cda01a988c31eb6493d7d299humper@google.comDEF_GM( return new DownsampleBitmapTextGM(72, SkPaint::kNone_FilterLevel); ) 214af42a03051e6a588cda01a988c31eb6493d7d299humper@google.comDEF_GM( return new DownsampleBitmapCheckerboardGM(512,256, SkPaint::kNone_FilterLevel); ) 215af42a03051e6a588cda01a988c31eb6493d7d299humper@google.comDEF_GM( return new DownsampleBitmapImageGM("mandrill_512.png", SkPaint::kNone_FilterLevel); ) 216efd7d45fc0fc5f2b924c774c5d38ce546f35f3cabsalomonDEF_GM( return new DownsampleBitmapImageGM("mandrill_132x132_12x12.astc", 217efd7d45fc0fc5f2b924c774c5d38ce546f35f3cabsalomon SkPaint::kNone_FilterLevel); ) 218