aboutsummaryrefslogtreecommitdiffhomepage
path: root/gm/blurrect.cpp
diff options
context:
space:
mode:
authorGravatar reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-11-26 14:39:50 +0000
committerGravatar reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-11-26 14:39:50 +0000
commit53007a2b1724c15c170340658daac012f9d909be (patch)
treeeba91f8c887ebdc37ce5e760bb87a15ad1ba8700 /gm/blurrect.cpp
parent53ec73d1e663c781cf44def060b5e8f669709fdc (diff)
choose correct blitrow proc based on global alpha
fixes https://bugs.webkit.org/show_bug.cgi?id=103062 add gm to exercise this new fix git-svn-id: http://skia.googlecode.com/svn/trunk@6544 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'gm/blurrect.cpp')
-rw-r--r--gm/blurrect.cpp33
1 files changed, 28 insertions, 5 deletions
diff --git a/gm/blurrect.cpp b/gm/blurrect.cpp
index 36e59ead88..6c74497e82 100644
--- a/gm/blurrect.cpp
+++ b/gm/blurrect.cpp
@@ -59,18 +59,36 @@ static void draw_donut_skewed(SkCanvas* canvas, const SkRect& r, const SkPaint&
canvas->drawPath(path, p);
}
+#include "SkGradientShader.h"
+
+typedef void (*PaintProc)(SkPaint*, SkScalar width);
+
+static void setgrad(SkPaint* paint, SkScalar width) {
+ SkPoint pts[] = { { 0, 0 }, { width, 0 } };
+ SkColor colors[] = { SK_ColorRED, SK_ColorGREEN };
+ SkShader* s = SkGradientShader::CreateLinear(pts, colors, NULL, 2,
+ SkShader::kClamp_TileMode);
+ paint->setShader(s)->unref();
+}
+
class BlurRectGM : public skiagm::GM {
SkAutoTUnref<SkMaskFilter> fMaskFilter;
+ SkString fName;
+ PaintProc fPProc;
+ SkAlpha fAlpha;
public:
- BlurRectGM() :
+ BlurRectGM(const char name[], PaintProc pproc, U8CPU alpha) :
fMaskFilter(SkBlurMaskFilter::Create(STROKE_WIDTH/2,
SkBlurMaskFilter::kNormal_BlurStyle,
SkBlurMaskFilter::kHighQuality_BlurFlag))
+ , fName(name)
+ , fPProc(pproc)
+ , fAlpha(SkToU8(alpha))
{}
protected:
virtual SkString onShortName() {
- return SkString("blurrect");
+ return fName;
}
virtual SkISize onISize() {
@@ -80,15 +98,19 @@ protected:
virtual void onDraw(SkCanvas* canvas) {
canvas->translate(STROKE_WIDTH*3/2, STROKE_WIDTH*3/2);
+ SkRect r = { 0, 0, 250, 120 };
+
SkPaint paint;
paint.setMaskFilter(fMaskFilter);
+ if (fPProc) {
+ fPProc(&paint, r.width());
+ }
+ paint.setAlpha(fAlpha);
static const Proc procs[] = {
fill_rect, draw_donut, draw_donut_skewed
};
- SkRect r = { 0, 0, 250, 120 };
-
this->drawProcs(canvas, r, paint, false, procs, SK_ARRAY_COUNT(procs));
canvas->translate(r.width() * 4/3, 0);
this->drawProcs(canvas, r, paint, true, procs, SK_ARRAY_COUNT(procs));
@@ -120,5 +142,6 @@ private:
//////////////////////////////////////////////////////////////////////////////
-DEF_GM(return new BlurRectGM;)
+DEF_GM(return new BlurRectGM("blurrect", NULL, 0xFF);)
+DEF_GM(return new BlurRectGM("blurrect_grad_80", setgrad, 0x80);)