blurcircles.cpp 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. /*
  2. * Copyright 2014 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. */
  7. #include "gm/gm.h"
  8. #include "include/core/SkBlurTypes.h"
  9. #include "include/core/SkCanvas.h"
  10. #include "include/core/SkColor.h"
  11. #include "include/core/SkMaskFilter.h"
  12. #include "include/core/SkPaint.h"
  13. #include "include/core/SkRefCnt.h"
  14. #include "include/core/SkScalar.h"
  15. #include "include/core/SkSize.h"
  16. #include "include/core/SkString.h"
  17. #include "include/core/SkTypes.h"
  18. #include "src/core/SkBlurMask.h"
  19. class BlurCirclesGM : public skiagm::GM {
  20. public:
  21. BlurCirclesGM() { }
  22. protected:
  23. bool runAsBench() const override { return true; }
  24. SkString onShortName() override {
  25. return SkString("blurcircles");
  26. }
  27. SkISize onISize() override {
  28. return SkISize::Make(950, 950);
  29. }
  30. void onOnceBeforeDraw() override {
  31. const float blurRadii[kNumBlurs] = { 1,5,10,20 };
  32. for (int i = 0; i < kNumBlurs; ++i) {
  33. fBlurFilters[i] = SkMaskFilter::MakeBlur(
  34. kNormal_SkBlurStyle,
  35. SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(blurRadii[i])));
  36. }
  37. }
  38. void onDraw(SkCanvas* canvas) override {
  39. canvas->scale(1.5f, 1.5f);
  40. canvas->translate(50,50);
  41. const int circleRadii[] = { 5,10,25,50 };
  42. for (size_t i = 0; i < kNumBlurs; ++i) {
  43. SkAutoCanvasRestore autoRestore(canvas, true);
  44. canvas->translate(0, SkIntToScalar(150*i));
  45. for (size_t j = 0; j < SK_ARRAY_COUNT(circleRadii); ++j) {
  46. SkPaint paint;
  47. paint.setColor(SK_ColorBLACK);
  48. paint.setMaskFilter(fBlurFilters[i]);
  49. canvas->drawCircle(SkIntToScalar(50),SkIntToScalar(50),SkIntToScalar(circleRadii[j]),paint);
  50. canvas->translate(SkIntToScalar(150), 0);
  51. }
  52. }
  53. }
  54. private:
  55. static constexpr int kNumBlurs = 4;
  56. sk_sp<SkMaskFilter> fBlurFilters[kNumBlurs];
  57. typedef skiagm::GM INHERITED;
  58. };
  59. DEF_GM(return new BlurCirclesGM();)