Chromium Code Reviews| Index: gm/drawfilter.cpp |
| diff --git a/gm/drawfilter.cpp b/gm/drawfilter.cpp |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..0fcd583ed6c1df6f49915b1012829e314cbf3b1b |
| --- /dev/null |
| +++ b/gm/drawfilter.cpp |
| @@ -0,0 +1,65 @@ |
| +/* |
| + * Copyright 2015 Google Inc. |
| + * |
| + * Use of this source code is governed by a BSD-style license that can be |
| + * found in the LICENSE file. |
| + */ |
| + |
| +#include "gm.h" |
| +#include "SkBlurMask.h" |
| +#include "SkBlurMaskFilter.h" |
| +#include "SkCanvas.h" |
| +#include "SkDrawFilter.h" |
| +#include "SkPaint.h" |
| + |
| + |
| +class TestFilter : public SkDrawFilter { |
| +public: |
| + bool filter(SkPaint* p, Type) SK_OVERRIDE { |
| + p->setColor(SK_ColorRED); |
| + p->setMaskFilter(NULL); |
| + return true; |
| + } |
| +}; |
| + |
| +class DrawFilterGM : public skiagm::GM { |
| + SkAutoTUnref<SkMaskFilter> fBlur; |
| + |
| +protected: |
| + SkISize onISize() SK_OVERRIDE { |
| + return SkISize::Make(320, 240); |
| + } |
| + |
| + SkString onShortName() SK_OVERRIDE { |
| + return SkString("drawfilter"); |
| + } |
| + |
| + void onOnceBeforeDraw() SK_OVERRIDE { |
| + fBlur.reset(SkBlurMaskFilter::Create(kNormal_SkBlurStyle, |
| + SkBlurMask::ConvertRadiusToSigma(10.0f), |
| + kLow_SkBlurQuality)); |
| + } |
| + |
| + void onDraw(SkCanvas* canvas) SK_OVERRIDE { |
| + SkPaint p; |
| + p.setColor(SK_ColorBLUE); |
| + p.setMaskFilter(fBlur.get()); |
| + SkRect r = { 20, 20, 100, 100 }; |
| + canvas->setDrawFilter(NULL); |
|
scroggo
2015/03/06 13:51:41
Is this line needed?
|
| + canvas->drawRect(r, p); |
| + TestFilter redNoBlur; |
| + canvas->setDrawFilter(&redNoBlur); |
| + canvas->translate(120.0f, 120.0f); |
| + canvas->drawRect(r, p); |
| + |
| + // Must unset if the DrawFilter is from the stack to avoid refcount errors! |
| + canvas->setDrawFilter(NULL); |
| + } |
| + |
| +private: |
| + typedef GM INHERITED; |
| +}; |
| + |
| +static skiagm::GM* MyFactory(void*) { return new DrawFilterGM; } |
| +static skiagm::GMRegistry reg(MyFactory); |
| + |