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