18500322537c5158a4632be6805b0c4210a20558bbsalomon@google.com
28500322537c5158a4632be6805b0c4210a20558bbsalomon@google.com/*
38500322537c5158a4632be6805b0c4210a20558bbsalomon@google.com * Copyright 2012 Google Inc.
48500322537c5158a4632be6805b0c4210a20558bbsalomon@google.com *
58500322537c5158a4632be6805b0c4210a20558bbsalomon@google.com * Use of this source code is governed by a BSD-style license that can be
68500322537c5158a4632be6805b0c4210a20558bbsalomon@google.com * found in the LICENSE file.
78500322537c5158a4632be6805b0c4210a20558bbsalomon@google.com */
88500322537c5158a4632be6805b0c4210a20558bbsalomon@google.com#include "SampleCode.h"
98500322537c5158a4632be6805b0c4210a20558bbsalomon@google.com#include "SkBlurMaskFilter.h"
108500322537c5158a4632be6805b0c4210a20558bbsalomon@google.com#include "SkColorPriv.h"
118500322537c5158a4632be6805b0c4210a20558bbsalomon@google.com#include "SkCanvas.h"
128500322537c5158a4632be6805b0c4210a20558bbsalomon@google.com#include "SkRandom.h"
138500322537c5158a4632be6805b0c4210a20558bbsalomon@google.com
148500322537c5158a4632be6805b0c4210a20558bbsalomon@google.comclass AnimBlurView : public SampleView {
158500322537c5158a4632be6805b0c4210a20558bbsalomon@google.compublic:
168500322537c5158a4632be6805b0c4210a20558bbsalomon@google.com    AnimBlurView() {
178500322537c5158a4632be6805b0c4210a20558bbsalomon@google.com    }
188500322537c5158a4632be6805b0c4210a20558bbsalomon@google.com
198500322537c5158a4632be6805b0c4210a20558bbsalomon@google.comprotected:
208500322537c5158a4632be6805b0c4210a20558bbsalomon@google.com    // overrides from SkEventSink
218500322537c5158a4632be6805b0c4210a20558bbsalomon@google.com    virtual bool onQuery(SkEvent* evt) {
228500322537c5158a4632be6805b0c4210a20558bbsalomon@google.com        if (SampleCode::TitleQ(*evt)) {
238500322537c5158a4632be6805b0c4210a20558bbsalomon@google.com            SampleCode::TitleR(evt, "AnimBlur");
248500322537c5158a4632be6805b0c4210a20558bbsalomon@google.com            return true;
258500322537c5158a4632be6805b0c4210a20558bbsalomon@google.com        }
268500322537c5158a4632be6805b0c4210a20558bbsalomon@google.com        return this->INHERITED::onQuery(evt);
278500322537c5158a4632be6805b0c4210a20558bbsalomon@google.com    }
288500322537c5158a4632be6805b0c4210a20558bbsalomon@google.com
298500322537c5158a4632be6805b0c4210a20558bbsalomon@google.com    virtual void onDrawContent(SkCanvas* canvas) {
308500322537c5158a4632be6805b0c4210a20558bbsalomon@google.com
31b7061176c7f414616fe2e79e832b3e0abe326af6robertphillips@google.com        SkScalar blurSigma = SampleCode::GetAnimSinScalar(100 * SK_Scalar1,
32b7061176c7f414616fe2e79e832b3e0abe326af6robertphillips@google.com                                                          4 * SK_Scalar1,
33b7061176c7f414616fe2e79e832b3e0abe326af6robertphillips@google.com                                                          5 * SK_Scalar1);
348500322537c5158a4632be6805b0c4210a20558bbsalomon@google.com
358500322537c5158a4632be6805b0c4210a20558bbsalomon@google.com        SkScalar circleRadius = 3 * SK_Scalar1 +
368500322537c5158a4632be6805b0c4210a20558bbsalomon@google.com                                SampleCode::GetAnimSinScalar(150 * SK_Scalar1,
378500322537c5158a4632be6805b0c4210a20558bbsalomon@google.com                                                             25 * SK_Scalar1,
388500322537c5158a4632be6805b0c4210a20558bbsalomon@google.com                                                             3 * SK_Scalar1);
398500322537c5158a4632be6805b0c4210a20558bbsalomon@google.com
40e396455d2d60ddf8e625b5037254f3c09fbcdcf5commit-bot@chromium.org        static const SkBlurStyle gStyles[] = {
41e396455d2d60ddf8e625b5037254f3c09fbcdcf5commit-bot@chromium.org            kNormal_SkBlurStyle,
42e396455d2d60ddf8e625b5037254f3c09fbcdcf5commit-bot@chromium.org            kInner_SkBlurStyle,
43e396455d2d60ddf8e625b5037254f3c09fbcdcf5commit-bot@chromium.org            kSolid_SkBlurStyle,
44e396455d2d60ddf8e625b5037254f3c09fbcdcf5commit-bot@chromium.org            kOuter_SkBlurStyle,
458500322537c5158a4632be6805b0c4210a20558bbsalomon@google.com        };
46e0e7cfe44bb9d66d76120a79e5275c294bacaa22commit-bot@chromium.org        SkRandom random;
478500322537c5158a4632be6805b0c4210a20558bbsalomon@google.com
487460b378d68217167013ca889a4cdcae742908e7robertphillips@google.com        for (size_t i = 0; i < SK_ARRAY_COUNT(gStyles); ++i) {
49b7061176c7f414616fe2e79e832b3e0abe326af6robertphillips@google.com            SkMaskFilter* mf = SkBlurMaskFilter::Create(
508500322537c5158a4632be6805b0c4210a20558bbsalomon@google.com                                       gStyles[i],
51b7061176c7f414616fe2e79e832b3e0abe326af6robertphillips@google.com                                       blurSigma,
528500322537c5158a4632be6805b0c4210a20558bbsalomon@google.com                                       SkBlurMaskFilter::kHighQuality_BlurFlag);
538500322537c5158a4632be6805b0c4210a20558bbsalomon@google.com            SkPaint paint;
5459ed2c22c032733c4cdaf12cc04e23bcf17f9331reed@google.com            SkSafeUnref(paint.setMaskFilter(mf));
558500322537c5158a4632be6805b0c4210a20558bbsalomon@google.com            paint.setColor(random.nextU() | 0xff000000);
568500322537c5158a4632be6805b0c4210a20558bbsalomon@google.com            canvas->drawCircle(200 * SK_Scalar1 + 400 * (i % 2) * SK_Scalar1,
578500322537c5158a4632be6805b0c4210a20558bbsalomon@google.com                               200 * SK_Scalar1 + i / 2 * 400 * SK_Scalar1,
588500322537c5158a4632be6805b0c4210a20558bbsalomon@google.com                               circleRadius, paint);
598500322537c5158a4632be6805b0c4210a20558bbsalomon@google.com        }
608500322537c5158a4632be6805b0c4210a20558bbsalomon@google.com        this->inval(NULL);
618500322537c5158a4632be6805b0c4210a20558bbsalomon@google.com    }
628500322537c5158a4632be6805b0c4210a20558bbsalomon@google.com
638500322537c5158a4632be6805b0c4210a20558bbsalomon@google.comprivate:
648500322537c5158a4632be6805b0c4210a20558bbsalomon@google.com    typedef SkView INHERITED;
658500322537c5158a4632be6805b0c4210a20558bbsalomon@google.com};
668500322537c5158a4632be6805b0c4210a20558bbsalomon@google.com
678500322537c5158a4632be6805b0c4210a20558bbsalomon@google.com//////////////////////////////////////////////////////////////////////////////
688500322537c5158a4632be6805b0c4210a20558bbsalomon@google.com
698500322537c5158a4632be6805b0c4210a20558bbsalomon@google.comstatic SkView* MyFactory() { return new AnimBlurView; }
708500322537c5158a4632be6805b0c4210a20558bbsalomon@google.comstatic SkViewRegister reg(MyFactory);
71