xref: /aosp_15_r20/external/skia/docs/examples/drawarcs.cpp (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1  // Copyright 2020 Google LLC.
2  // Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.
3  #include "tools/fiddle/examples.h"
4  
5  #include <random>
6  
7  REG_FIDDLE(drawarcs, 256, 256, false, 0) {
draw(SkCanvas * canvas)8  void draw(SkCanvas* canvas) {
9      SkPaint paint;
10      paint.setAntiAlias(true);
11      paint.setStyle(SkPaint::kStroke_Style);
12      paint.setStrokeWidth(8);
13  
14      std::default_random_engine rng;
15      const auto randScalar = [&rng](SkScalar min, SkScalar max) -> SkScalar {
16          return std::uniform_real_distribution<SkScalar>(min, max)(rng);
17      };
18      const auto randOpaqueColor = [&rng]() -> SkColor {
19          return std::uniform_int_distribution<uint32_t>(0, 0xFFFFFF)(rng) | 0xFF000000;
20      };
21      SkPath path;
22  
23      for (int i = 0; i < 100; ++i) {
24          SkScalar x = randScalar(0, 200);
25          SkScalar y = randScalar(0, 200);
26  
27          path.rewind();
28          path.addArc(SkRect::MakeXYWH(x, y, 70, 70), randScalar(0, 360),
29                      randScalar(0, 360));
30          paint.setColor(randOpaqueColor());
31          canvas->drawPath(path, paint);
32      }
33  }
34  }  // END FIDDLE
35