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:
parent
4ab3dbb636
commit
cdf34cdfb9
71
gm/drawfilter.cpp
Normal file
71
gm/drawfilter.cpp
Normal 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);
|
||||
|
@ -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',
|
||||
|
Loading…
Reference in New Issue
Block a user