blob: 6b5481e9a6c413cf1795a12005b6764e7f48ce0b [file] [log] [blame]
epoger@google.comec3ed6a2011-07-28 14:26:00 +00001/*
2 * Copyright 2011 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
Mike Reed6b3155c2017-04-03 14:41:44 -04007
Ben Wagnerb2c4ea62018-08-08 11:36:17 -04008#include "Sample.h"
Mike Reed75ae4212018-01-23 11:24:08 -05009#include "SkBitmap.h"
robertphillips@google.comb7061172013-09-06 14:16:12 +000010#include "SkBlurMask.h"
robertphillips@google.comb7061172013-09-06 14:16:12 +000011#include "SkCanvas.h"
reed@android.com47ca0362009-09-02 02:07:45 +000012#include "SkColorPriv.h"
13#include "SkGradientShader.h"
Mike Reed1be1f8d2018-03-14 13:01:17 -040014#include "SkMaskFilter.h"
Hal Canaryea60b952018-08-21 11:45:46 -040015#include "SkUTF.h"
reed@android.com47ca0362009-09-02 02:07:45 +000016
Ben Wagnerb2c4ea62018-08-08 11:36:17 -040017class BlurView : public Sample {
reed@android.com47ca0362009-09-02 02:07:45 +000018 SkBitmap fBM;
19public:
Mike Reeda920d362017-07-03 13:36:17 -040020 BlurView() {}
reed@google.com0ecc2b792011-02-16 13:06:15 +000021
reed@android.com47ca0362009-09-02 02:07:45 +000022protected:
Ben Wagnerb2c4ea62018-08-08 11:36:17 -040023 virtual bool onQuery(Sample::Event* evt) {
24 if (Sample::TitleQ(*evt)) {
25 Sample::TitleR(evt, "Blur");
reed@android.com47ca0362009-09-02 02:07:45 +000026 return true;
27 }
28 return this->INHERITED::onQuery(evt);
29 }
reed@google.com0ecc2b792011-02-16 13:06:15 +000030
reed@android.com47ca0362009-09-02 02:07:45 +000031 void drawBG(SkCanvas* canvas) {
32 canvas->drawColor(0xFFDDDDDD);
33 }
reed@google.com0ecc2b792011-02-16 13:06:15 +000034
senorblanco@chromium.orge36ddf02011-07-15 14:28:16 +000035 virtual void onDrawContent(SkCanvas* canvas) {
reed@android.com47ca0362009-09-02 02:07:45 +000036 drawBG(canvas);
reed@google.com0ecc2b792011-02-16 13:06:15 +000037
commit-bot@chromium.orge3964552014-04-28 16:25:35 +000038 SkBlurStyle NONE = SkBlurStyle(-999);
reed@android.comda449a32009-09-18 20:57:05 +000039 static const struct {
commit-bot@chromium.orge3964552014-04-28 16:25:35 +000040 SkBlurStyle fStyle;
41 int fCx, fCy;
reed@android.comda449a32009-09-18 20:57:05 +000042 } gRecs[] = {
43 { NONE, 0, 0 },
commit-bot@chromium.orge3964552014-04-28 16:25:35 +000044 { kInner_SkBlurStyle, -1, 0 },
45 { kNormal_SkBlurStyle, 0, 1 },
46 { kSolid_SkBlurStyle, 0, -1 },
47 { kOuter_SkBlurStyle, 1, 0 },
reed@android.comda449a32009-09-18 20:57:05 +000048 };
reed@android.com47ca0362009-09-02 02:07:45 +000049
reed@android.com47ca0362009-09-02 02:07:45 +000050 SkPaint paint;
51 paint.setAntiAlias(true);
reed@google.com0ecc2b792011-02-16 13:06:15 +000052 paint.setTextSize(25);
53 canvas->translate(-40, 0);
reed@android.comda449a32009-09-18 20:57:05 +000054
Mike Reed1be1f8d2018-03-14 13:01:17 -040055 paint.setColor(SK_ColorBLUE);
56 for (size_t i = 0; i < SK_ARRAY_COUNT(gRecs); i++) {
57 if (gRecs[i].fStyle != NONE) {
58 paint.setMaskFilter(SkMaskFilter::MakeBlur(gRecs[i].fStyle,
59 SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(20))));
60 } else {
halcanary96fcdcc2015-08-27 07:41:13 -070061 paint.setMaskFilter(nullptr);
reed@google.com0ecc2b792011-02-16 13:06:15 +000062 }
Mike Reed1be1f8d2018-03-14 13:01:17 -040063 canvas->drawCircle(200 + gRecs[i].fCx*100.f,
64 200 + gRecs[i].fCy*100.f, 50, paint);
65 }
66 // draw text
67 {
68 paint.setMaskFilter(SkMaskFilter::MakeBlur(kNormal_SkBlurStyle,
69 SkBlurMask::ConvertRadiusToSigma(4)));
70 SkScalar x = SkIntToScalar(70);
71 SkScalar y = SkIntToScalar(400);
72 paint.setColor(SK_ColorBLACK);
73 canvas->drawString("Hamburgefons Style", x, y, paint);
74 canvas->drawString("Hamburgefons Style", x, y + SkIntToScalar(50), paint);
75 paint.setMaskFilter(nullptr);
76 paint.setColor(SK_ColorWHITE);
77 x -= SkIntToScalar(2);
78 y -= SkIntToScalar(2);
79 canvas->drawString("Hamburgefons Style", x, y, paint);
reed@android.comda449a32009-09-18 20:57:05 +000080 }
reed@android.com47ca0362009-09-02 02:07:45 +000081 }
reed@google.com0ecc2b792011-02-16 13:06:15 +000082
reed@android.com47ca0362009-09-02 02:07:45 +000083private:
Ben Wagnerb2c4ea62018-08-08 11:36:17 -040084 typedef Sample INHERITED;
reed@android.com47ca0362009-09-02 02:07:45 +000085};
86
87//////////////////////////////////////////////////////////////////////////////
88
Ben Wagnerb2c4ea62018-08-08 11:36:17 -040089DEF_SAMPLE( return new BlurView(); )