60014ca387
SkBlurImageFilter, sets it on an SkPaint, passes that paint to saveLayer(), draws the primitives which are to be blurred, then calls restore(), which applies the blur. The blurs have separate sizes in the horizontal and vertical direction. This feature is GPU-only for now. NB: Due to the clipping change, there are slight pixel differences on the blurs_gpu and shadows_gpu tests, so those will require rebaselining on all platforms, as will some of the WebKit layout tests (TBD). Review URL: http://codereview.appspot.com/5322068/ git-svn-id: http://skia.googlecode.com/svn/trunk@2643 2bbb7eff-a529-9590-31e7-b0007b416f81
58 lines
1.4 KiB
C++
58 lines
1.4 KiB
C++
/*
|
|
* Copyright 2011 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 "SkBlurImageFilter.h"
|
|
|
|
namespace skiagm {
|
|
|
|
class ImageBlurGM : public GM {
|
|
public:
|
|
ImageBlurGM() {
|
|
this->setBGColor(0xFF000000);
|
|
}
|
|
|
|
protected:
|
|
virtual SkString onShortName() {
|
|
return SkString("imageblur");
|
|
}
|
|
|
|
virtual SkISize onISize() {
|
|
return make_isize(500, 500);
|
|
}
|
|
|
|
virtual void onDraw(SkCanvas* canvas) {
|
|
SkPaint paint;
|
|
paint.setImageFilter(new SkBlurImageFilter(24.0f, 0.0f))->unref();
|
|
canvas->saveLayer(NULL, &paint);
|
|
paint.setColor(0xFFFFFFFF);
|
|
paint.setTextSize(100);
|
|
paint.setAntiAlias(true);
|
|
const char* str = "The quick brown fox jumped over the lazy dog.";
|
|
srand(1234);
|
|
SkISize size = canvas->getDeviceSize();
|
|
for (int i = 0; i < 25; ++i) {
|
|
int x = rand() % size.fWidth;
|
|
int y = rand() % size.fHeight;
|
|
paint.setColor(rand() % 0x1000000 | 0xFF000000);
|
|
paint.setTextSize(rand() % 300);
|
|
canvas->drawText(str, strlen(str), x, y, paint);
|
|
}
|
|
canvas->restore();
|
|
}
|
|
|
|
private:
|
|
typedef GM INHERITED;
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
static GM* MyFactory(void*) { return new ImageBlurGM; }
|
|
static GMRegistry reg(MyFactory);
|
|
|
|
}
|