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