Chromium Code Reviews| Index: gm/imagefiltersbase.cpp |
| diff --git a/gm/imagefiltersbase.cpp b/gm/imagefiltersbase.cpp |
| index ea32769d4d697b799f1fb63b1716ec2238245683..b21f83d6f1a557f76521d0cb445e5798f516bcef 100644 |
| --- a/gm/imagefiltersbase.cpp |
| +++ b/gm/imagefiltersbase.cpp |
| @@ -36,8 +36,8 @@ public: |
| protected: |
| FailImageFilter() : INHERITED(0, NULL) {} |
| - virtual bool onFilterImage(Proxy*, const SkBitmap& src, const Context&, |
| - SkBitmap* result, SkIPoint* offset) const SK_OVERRIDE { |
| + bool onFilterImage(Proxy*, const SkBitmap& src, const Context&, |
| + SkBitmap* result, SkIPoint* offset) const SK_OVERRIDE { |
| return false; |
| } |
| @@ -78,8 +78,8 @@ public: |
| protected: |
| IdentityImageFilter(SkImageFilter* input) : INHERITED(1, &input) {} |
| - virtual bool onFilterImage(Proxy*, const SkBitmap& src, const Context&, |
| - SkBitmap* result, SkIPoint* offset) const SK_OVERRIDE { |
| + bool onFilterImage(Proxy*, const SkBitmap& src, const Context&, |
| + SkBitmap* result, SkIPoint* offset) const SK_OVERRIDE { |
| *result = src; |
| offset->set(0, 0); |
| return true; |
| @@ -194,11 +194,11 @@ public: |
| ImageFiltersBaseGM () {} |
| protected: |
| - virtual SkString onShortName() { |
| + SkString onShortName() SK_OVERRIDE { |
| return SkString("imagefiltersbase"); |
| } |
| - virtual SkISize onISize() { return SkISize::Make(700, 500); } |
| + SkISize onISize() SK_OVERRIDE { return SkISize::Make(700, 500); } |
| void draw_frame(SkCanvas* canvas, const SkRect& r) { |
| SkPaint paint; |
| @@ -207,7 +207,7 @@ protected: |
| canvas->drawRect(r, paint); |
| } |
| - virtual void onDraw(SkCanvas* canvas) { |
| + void onDraw(SkCanvas* canvas) SK_OVERRIDE { |
| void (*drawProc[])(SkCanvas*, const SkRect&, SkImageFilter*) = { |
| draw_paint, |
| draw_line, draw_rect, draw_path, draw_text, |
| @@ -254,8 +254,96 @@ protected: |
| private: |
| typedef GM INHERITED; |
| }; |
| +DEF_GM( return new ImageFiltersBaseGM; ) |
| /////////////////////////////////////////////////////////////////////////////// |
| -static skiagm::GM* MyFactory(void*) { return new ImageFiltersBaseGM; } |
| -static skiagm::GMRegistry reg(MyFactory); |
| +/* |
| + * Want to test combos of filter and LCD text, to be sure we disable LCD in the presence of |
| + * a filter. |
| + */ |
| +class ImageFiltersTextBaseGM : public skiagm::GM { |
| + SkString fSuffix; |
| +public: |
| + ImageFiltersTextBaseGM(const char suffix[]) : fSuffix(suffix) {} |
| + |
| +protected: |
| + SkString onShortName() SK_OVERRIDE { |
| + SkString name; |
| + name.printf("%s_%s", "textfilter", fSuffix.c_str()); |
| + return name; |
| + } |
| + |
| + SkISize onISize() SK_OVERRIDE { return SkISize::Make(512, 342); } |
| + |
| + void drawWaterfall(SkCanvas* canvas, const SkPaint& origPaint) { |
| + const uint32_t flags[] = { |
| + 0, |
| + SkPaint::kAntiAlias_Flag, |
| + SkPaint::kAntiAlias_Flag | SkPaint::kLCDRenderText_Flag, |
| + }; |
| + SkPaint paint(origPaint); |
| + paint.setTextSize(30); |
| + |
| + SkAutoCanvasRestore acr(canvas, true); |
| + for (size_t i = 0; i < SK_ARRAY_COUNT(flags); ++i) { |
| + paint.setFlags(flags[i]); |
| + canvas->drawText("Hamburgefons", 11, 0, 0, paint); |
| + canvas->translate(0, 40); |
| + } |
| + } |
| + |
| + virtual void installFilter(SkPaint* paint) = 0; |
| + |
| + void onDraw(SkCanvas* canvas) SK_OVERRIDE { |
| + SkPaint paint; |
| + |
| + canvas->translate(20, 40); |
| + |
| + for (int doSaveLayer = 0; doSaveLayer <= 1; ++doSaveLayer) { |
| + SkAutoCanvasRestore acr(canvas, true); |
| + for (int useFilter = 0; useFilter <= 1; ++useFilter) { |
| + SkAutoCanvasRestore acr2(canvas, true); |
| + |
| + SkPaint paint; |
| + if (useFilter) { |
| + this->installFilter(&paint); |
| + } |
| + if (doSaveLayer) { |
| + canvas->saveLayer(NULL, &paint); |
| + paint.setImageFilter(NULL); |
| + } |
| + this->drawWaterfall(canvas, paint); |
| + |
| + acr2.restore(); |
| + canvas->translate(250, 0); |
| + } |
| + acr.restore(); |
| + canvas->translate(0, 200); |
| + } |
| + } |
| + |
| +private: |
| + typedef GM INHERITED; |
| +}; |
| + |
| +class ImageFiltersText_IF : public ImageFiltersTextBaseGM { |
| +public: |
| + ImageFiltersText_IF() : ImageFiltersTextBaseGM("image") {} |
| + |
| + void installFilter(SkPaint* paint) SK_OVERRIDE { |
| + paint->setImageFilter(SkBlurImageFilter::Create(1.5f, 1.5f))->unref(); |
| + } |
|
robertphillips
2015/03/20 12:30:17
private:
typedef ImageFiltersTextBaseGM INHERI
|
| +}; |
| +DEF_GM( return new ImageFiltersText_IF; ) |
| + |
| +class ImageFiltersText_CF : public ImageFiltersTextBaseGM { |
| +public: |
| + ImageFiltersText_CF() : ImageFiltersTextBaseGM("color") {} |
| + |
| + void installFilter(SkPaint* paint) SK_OVERRIDE { |
| + paint->setColorFilter(SkColorFilter::CreateModeFilter(SK_ColorBLUE, SkXfermode::kSrcIn_Mode))->unref(); |
| + } |
|
robertphillips
2015/03/20 12:30:17
private:
typedef ImageFiltersTextBaseGM INHERI
|
| +}; |
| +DEF_GM( return new ImageFiltersText_CF; ) |
| + |