We had zero coverage for SkDrawFilter. This new GM draws two rectangles.

If SkDrawFilter is working, they will not match (have different colors
and one will be blurred). If SkDrawFilter is broken, they will match.

R=scroggo@google.com

Review URL: https://codereview.chromium.org/984883003
This commit is contained in:
tomhudson 2015-03-06 06:15:20 -08:00 committed by Commit bot
parent 4ab3dbb636
commit cdf34cdfb9
2 changed files with 72 additions and 0 deletions

71
gm/drawfilter.cpp Normal file
View File

@ -0,0 +1,71 @@
/*
* 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"
/**
* Initial test coverage for SkDrawFilter.
* Draws two rectangles; if draw filters are broken, they will match.
* If draw filters are working correctly, the first will be blue and blurred,
* the second red and sharp.
*/
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);
canvas->drawRect(r, p);
TestFilter redNoBlur;
canvas->setDrawFilter(&redNoBlur);
canvas->translate(120.0f, 40.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);

View File

@ -77,6 +77,7 @@
'../gm/displacement.cpp',
'../gm/downsamplebitmap.cpp',
'../gm/drawbitmaprect.cpp',
'../gm/drawfilter.cpp',
'../gm/drawlooper.cpp',
'../gm/dropshadowimagefilter.cpp',
'../gm/drrect.cpp',