1ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com 2ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com/* 3ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Copyright 2011 Google Inc. 4ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * 5ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Use of this source code is governed by a BSD-style license that can be 6ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * found in the LICENSE file. 7ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com */ 8c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.com#include "gm.h" 9b7061176c7f414616fe2e79e832b3e0abe326af6robertphillips@google.com#include "SkBlurMask.h" 10c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.com#include "SkBlurMaskFilter.h" 11c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.com 12c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.comnamespace skiagm { 13c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.com 14c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.comclass BlursGM : public GM { 15c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.compublic: 1648dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com BlursGM() { 1748dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com this->setBGColor(0xFFDDDDDD); 1848dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com } 19c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.com 20c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.comprotected: 21a90c6803865766d28e92091f56f718f5e41fe80fcommit-bot@chromium.org virtual uint32_t onGetFlags() const SK_OVERRIDE { 22a90c6803865766d28e92091f56f718f5e41fe80fcommit-bot@chromium.org return kSkipTiled_Flag; 23a90c6803865766d28e92091f56f718f5e41fe80fcommit-bot@chromium.org } 24a90c6803865766d28e92091f56f718f5e41fe80fcommit-bot@chromium.org 25c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.com virtual SkString onShortName() { 26c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.com return SkString("blurs"); 27c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.com } 28c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.com 293c14d0f3d1b467dc3776669b0fc48cb463a20d41bungeman@google.com virtual SkISize onISize() { 30f539318f0d3dba743ec1886d5d9df0fb1be628a1tfarina return SkISize::Make(700, 500); 31c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.com } 32c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.com 33c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.com virtual void onDraw(SkCanvas* canvas) { 34e396455d2d60ddf8e625b5037254f3c09fbcdcf5commit-bot@chromium.org SkBlurStyle NONE = SkBlurStyle(-999); 35c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.com static const struct { 36e396455d2d60ddf8e625b5037254f3c09fbcdcf5commit-bot@chromium.org SkBlurStyle fStyle; 37e396455d2d60ddf8e625b5037254f3c09fbcdcf5commit-bot@chromium.org int fCx, fCy; 38c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.com } gRecs[] = { 39e396455d2d60ddf8e625b5037254f3c09fbcdcf5commit-bot@chromium.org { NONE, 0, 0 }, 40e396455d2d60ddf8e625b5037254f3c09fbcdcf5commit-bot@chromium.org { kInner_SkBlurStyle, -1, 0 }, 41e396455d2d60ddf8e625b5037254f3c09fbcdcf5commit-bot@chromium.org { kNormal_SkBlurStyle, 0, 1 }, 42e396455d2d60ddf8e625b5037254f3c09fbcdcf5commit-bot@chromium.org { kSolid_SkBlurStyle, 0, -1 }, 43e396455d2d60ddf8e625b5037254f3c09fbcdcf5commit-bot@chromium.org { kOuter_SkBlurStyle, 1, 0 }, 44c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.com }; 45c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.com 46c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.com SkPaint paint; 47c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.com paint.setAntiAlias(true); 483c14d0f3d1b467dc3776669b0fc48cb463a20d41bungeman@google.com paint.setTextSize(SkIntToScalar(25)); 493c14d0f3d1b467dc3776669b0fc48cb463a20d41bungeman@google.com canvas->translate(SkIntToScalar(-40), SkIntToScalar(0)); 50c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.com 51c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.com SkBlurMaskFilter::BlurFlags flags = SkBlurMaskFilter::kNone_BlurFlag; 52c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.com for (int j = 0; j < 2; j++) { 53c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.com canvas->save(); 54c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.com paint.setColor(SK_ColorBLUE); 55c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.com for (size_t i = 0; i < SK_ARRAY_COUNT(gRecs); i++) { 56c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.com if (gRecs[i].fStyle != NONE) { 57b7061176c7f414616fe2e79e832b3e0abe326af6robertphillips@google.com SkMaskFilter* mf = SkBlurMaskFilter::Create(gRecs[i].fStyle, 58b7061176c7f414616fe2e79e832b3e0abe326af6robertphillips@google.com SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(20)), 59b7061176c7f414616fe2e79e832b3e0abe326af6robertphillips@google.com flags); 60c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.com paint.setMaskFilter(mf)->unref(); 61c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.com } else { 62c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.com paint.setMaskFilter(NULL); 63c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.com } 647ce661d19c5cf4484305a1b20c44bd111f129847robertphillips@google.com canvas->drawCircle(SkIntToScalar(200 + gRecs[i].fCx*100), 657ce661d19c5cf4484305a1b20c44bd111f129847robertphillips@google.com SkIntToScalar(200 + gRecs[i].fCy*100), 667ce661d19c5cf4484305a1b20c44bd111f129847robertphillips@google.com SkIntToScalar(50), 677ce661d19c5cf4484305a1b20c44bd111f129847robertphillips@google.com paint); 68c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.com } 69c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.com // draw text 70c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.com { 71e396455d2d60ddf8e625b5037254f3c09fbcdcf5commit-bot@chromium.org SkMaskFilter* mf = SkBlurMaskFilter::Create(kNormal_SkBlurStyle, 72b7061176c7f414616fe2e79e832b3e0abe326af6robertphillips@google.com SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(4)), 73b7061176c7f414616fe2e79e832b3e0abe326af6robertphillips@google.com flags); 74c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.com paint.setMaskFilter(mf)->unref(); 75c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.com SkScalar x = SkIntToScalar(70); 76c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.com SkScalar y = SkIntToScalar(400); 77c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.com paint.setColor(SK_ColorBLACK); 78c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.com canvas->drawText("Hamburgefons Style", 18, x, y, paint); 797ce661d19c5cf4484305a1b20c44bd111f129847robertphillips@google.com canvas->drawText("Hamburgefons Style", 18, 807ce661d19c5cf4484305a1b20c44bd111f129847robertphillips@google.com x, y + SkIntToScalar(50), paint); 81c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.com paint.setMaskFilter(NULL); 82c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.com paint.setColor(SK_ColorWHITE); 83c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.com x -= SkIntToScalar(2); 84c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.com y -= SkIntToScalar(2); 85c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.com canvas->drawText("Hamburgefons Style", 18, x, y, paint); 86c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.com } 87c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.com canvas->restore(); 8811a5ff376be94d15daf5bc66cdf857f5f2f297afreed@google.com flags = SkBlurMaskFilter::kHighQuality_BlurFlag; 893c14d0f3d1b467dc3776669b0fc48cb463a20d41bungeman@google.com canvas->translate(SkIntToScalar(350), SkIntToScalar(0)); 90c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.com } 91c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.com } 92c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.com 93c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.comprivate: 94c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.com typedef GM INHERITED; 95c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.com}; 96c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.com 97c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.com////////////////////////////////////////////////////////////////////////////// 98c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.com 99c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.comstatic GM* MyFactory(void*) { return new BlursGM; } 100c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.comstatic GMRegistry reg(MyFactory); 101c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.com 102c96e5c2720e03dbcad6cd9eb55073fb2f40e89e3reed@google.com} 103