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