/* * 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 "SampleCode.h" #include "SkBitmap.h" #include "SkBlurMask.h" #include "SkCanvas.h" #include "SkColorPriv.h" #include "SkGradientShader.h" #include "SkMaskFilter.h" #include "SkUtils.h" #include "SkView.h" class BlurView : public SampleView { 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 onDrawContent(SkCanvas* canvas) { drawBG(canvas); SkBlurStyle NONE = SkBlurStyle(-999); static const struct { SkBlurStyle fStyle; int fCx, fCy; } gRecs[] = { { NONE, 0, 0 }, { kInner_SkBlurStyle, -1, 0 }, { kNormal_SkBlurStyle, 0, 1 }, { kSolid_SkBlurStyle, 0, -1 }, { kOuter_SkBlurStyle, 1, 0 }, }; SkPaint paint; paint.setAntiAlias(true); paint.setTextSize(25); canvas->translate(-40, 0); paint.setColor(SK_ColorBLUE); for (size_t i = 0; i < SK_ARRAY_COUNT(gRecs); i++) { if (gRecs[i].fStyle != NONE) { paint.setMaskFilter(SkMaskFilter::MakeBlur(gRecs[i].fStyle, SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(20)))); } else { paint.setMaskFilter(nullptr); } canvas->drawCircle(200 + gRecs[i].fCx*100.f, 200 + gRecs[i].fCy*100.f, 50, paint); } // draw text { paint.setMaskFilter(SkMaskFilter::MakeBlur(kNormal_SkBlurStyle, SkBlurMask::ConvertRadiusToSigma(4))); SkScalar x = SkIntToScalar(70); SkScalar y = SkIntToScalar(400); paint.setColor(SK_ColorBLACK); canvas->drawString("Hamburgefons Style", x, y, paint); canvas->drawString("Hamburgefons Style", x, y + SkIntToScalar(50), paint); paint.setMaskFilter(nullptr); paint.setColor(SK_ColorWHITE); x -= SkIntToScalar(2); y -= SkIntToScalar(2); canvas->drawString("Hamburgefons Style", x, y, paint); } } private: typedef SkView INHERITED; }; ////////////////////////////////////////////////////////////////////////////// static SkView* MyFactory() { return new BlurView; } static SkViewRegister reg(MyFactory);