skia2/gm/imageblur.cpp
senorblanco@chromium.org 1e95d715d0 Clean up the use of AutoScratchTexture in the gaussian blur and morphology
filters.  Instead of passing in AutoScratchTextures for temporaries, we allocate
them inside the function and detach() after rendering.  Since the functions now
return a ref()'ed texture, we no longer ref() the result in filter_texture().

Also, the imageblur gm was passing a paint with an image filter both to
saveLayer()/restore(), and to every text draw call.  Back when only restore()
was applying filters, this was fine, but since we're now applying filters on all
draw calls, this means we're double-blurring in this GM.

I've reverted the Mac baselines for the imageblur GM to their previous versions;
hopefully this will be correct.



git-svn-id: http://skia.googlecode.com/svn/trunk@4659 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-07-18 19:52:53 +00:00

60 lines
1.5 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"
#define WIDTH 500
#define HEIGHT 500
namespace skiagm {
class ImageBlurGM : public GM {
public:
ImageBlurGM() {
this->setBGColor(0xFF000000);
}
protected:
virtual SkString onShortName() {
return SkString("imageblur");
}
virtual SkISize onISize() {
return make_isize(WIDTH, HEIGHT);
}
virtual void onDraw(SkCanvas* canvas) {
SkPaint paint;
paint.setImageFilter(new SkBlurImageFilter(24.0f, 0.0f))->unref();
canvas->saveLayer(NULL, &paint);
const char* str = "The quick brown fox jumped over the lazy dog.";
srand(1234);
SkPaint textPaint;
textPaint.setAntiAlias(true);
for (int i = 0; i < 25; ++i) {
int x = rand() % WIDTH;
int y = rand() % HEIGHT;
textPaint.setColor(rand() % 0x1000000 | 0xFF000000);
textPaint.setTextSize(SkIntToScalar(rand() % 300));
canvas->drawText(str, strlen(str), SkIntToScalar(x),
SkIntToScalar(y), textPaint);
}
canvas->restore();
}
private:
typedef GM INHERITED;
};
//////////////////////////////////////////////////////////////////////////////
static GM* MyFactory(void*) { return new ImageBlurGM; }
static GMRegistry reg(MyFactory);
}