54 constexpr SkScalar kMaxR = kMaxRadius + kMaxBlurRadius;
56 auto almostCircleMaker = [] (
SkScalar radius) {
74 SkPath almostCircle = almostCircleMaker(fAnimRadius);
76 canvas->
translate(size.fWidth / 2.f, size.fHeight / 4.f);
86 constexpr SkScalar kBlurRadiusSteps = 5;
88 kPad + kMinRadius + kMaxBlurRadius);
89 constexpr SkScalar kDeltaRadius = (kMaxRadius - kMinRadius) / kRadiusSteps;
90 constexpr SkScalar kDeltaBlurRadius = (kMaxBlurRadius - kMinBlurRadius) /
94 for (
int r = 0; r < kRadiusSteps - 1; ++r) {
95 const SkScalar radius = r * kDeltaRadius + kMinRadius;
96 lineWidth += 2 * (radius + kMaxBlurRadius) +
kPad;
99 for (
int br = 0; br < kBlurRadiusSteps; ++br) {
100 SkScalar blurRadius = br * kDeltaBlurRadius + kMinBlurRadius;
102 blurRadius += fRandom.
nextSScalar1() * kDeltaBlurRadius;
104 const SkScalar maxRowR = blurRadius + kMaxRadius;
105 paint.setMaskFilter(blurMaker(blurRadius));
107 for (
int r = 0; r < kRadiusSteps; ++r) {
108 SkScalar radius = r * kDeltaRadius + kMinRadius;
114 almostCircle = almostCircleMaker(radius);
123 const SkScalar maxColR = radius + kMaxBlurRadius;
131 if (br != kBlurRadiusSteps - 1) {
132 canvas->
drawLine(0, lineY, lineWidth, lineY, blackPaint);
142 fAnimRadius =
TimeUtils::PingPong(1e-9 * nanos, kRadiusPingPoingPeriod, kRadiusPingPoingShift, kMinRadius,
144 fAnimBlurRadius =
TimeUtils::PingPong(1e-9 * nanos, kBlurRadiusPingPoingPeriod, kBlurRadiusPingPoingShift,
145 kMinBlurRadius, kMaxBlurRadius);