From 47ca036e29aa44f93d2300f5ed0109b3845d30d6 Mon Sep 17 00:00:00 2001 From: "reed@android.com" Date: Wed, 2 Sep 2009 02:07:45 +0000 Subject: add git-svn-id: http://skia.googlecode.com/svn/trunk@349 2bbb7eff-a529-9590-31e7-b0007b416f81 --- samplecode/SampleBlur.cpp | 84 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 samplecode/SampleBlur.cpp (limited to 'samplecode/SampleBlur.cpp') diff --git a/samplecode/SampleBlur.cpp b/samplecode/SampleBlur.cpp new file mode 100644 index 0000000000..13bf10ad19 --- /dev/null +++ b/samplecode/SampleBlur.cpp @@ -0,0 +1,84 @@ +#include "SampleCode.h" +#include "SkBlurMaskFilter.h" +#include "SkColorPriv.h" +#include "SkGradientShader.h" +#include "SkView.h" +#include "SkCanvas.h" +#include "SkUtils.h" + +static SkBitmap make_bitmap() { + SkBitmap bm; + SkColorTable* ctable = new SkColorTable(256); + + SkPMColor* c = ctable->lockColors(); + for (int i = 0; i < 256; i++) { + c[i] = SkPackARGB32(255 - i, 0, 0, 0); + } + ctable->unlockColors(true); + bm.setConfig(SkBitmap::kIndex8_Config, 256, 256); + bm.allocPixels(ctable); + ctable->unref(); + + bm.lockPixels(); + const float cx = bm.width() * 0.5f; + const float cy = bm.height() * 0.5f; + for (int y = 0; y < bm.height(); y++) { + float dy = y - cy; + dy *= dy; + uint8_t* p = bm.getAddr8(0, y); + for (int x = 0; x < 256; x++) { + float dx = x - cx; + dx *= dx; + float d = (dx + dy) / (cx/2); + int id = (int)d; + if (id > 255) { + id = 255; + } + p[x] = id; + } + } + bm.unlockPixels(); + return bm; +} + +class BlurView : public SkView { + SkBitmap fBM; +public: + BlurView() { + } + +protected: + // overrides from SkEventSink + virtual bool onQuery(SkEvent* evt) { + if (SampleCode::TitleQ(*evt)) { + SampleCode::TitleR(evt, "Blur"); + return true; + } + return this->INHERITED::onQuery(evt); + } + + void drawBG(SkCanvas* canvas) { + canvas->drawColor(0xFFDDDDDD); + } + + virtual void onDraw(SkCanvas* canvas) { + drawBG(canvas); + + SkMaskFilter* mf = SkBlurMaskFilter::Create(20, SkBlurMaskFilter::kOuter_BlurStyle); + SkPaint paint; + paint.setAntiAlias(true); + + canvas->drawCircle(100, 100, 50, paint); + paint.setMaskFilter(mf)->unref(); + canvas->drawCircle(200, 100, 50, paint); + } + +private: + typedef SkView INHERITED; +}; + +////////////////////////////////////////////////////////////////////////////// + +static SkView* MyFactory() { return new BlurView; } +static SkViewRegister reg(MyFactory); + -- cgit v1.2.3