xref: /aosp_15_r20/external/skia/docs/examples/FillPathWithPaint.cpp (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1 // Copyright 2019 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 REG_FIDDLE(FillPathWithPaint, 256, 192, false, 0) {
draw(SkCanvas * canvas)5 void draw(SkCanvas* canvas) {
6     SkPaint strokePaint;
7     strokePaint.setAntiAlias(true);
8     strokePaint.setStyle(SkPaint::kStroke_Style);
9     strokePaint.setStrokeWidth(.1f);
10     SkPath strokePath;
11     strokePath.moveTo(.08f, .08f);
12     strokePath.quadTo(.09f, .08f, .17f, .17f);
13     SkPath fillPath;
14     SkPaint outlinePaint(strokePaint);
15     outlinePaint.setStrokeWidth(2);
16     SkMatrix scale = SkMatrix::Scale(300, 300);
17     for (SkScalar precision : { 0.01f, .1f, 1.f, 10.f, 100.f } ) {
18         skpathutils::FillPathWithPaint(strokePath, strokePaint, &fillPath, nullptr, precision);
19         fillPath.transform(scale);
20         canvas->drawPath(fillPath, outlinePaint);
21         canvas->translate(60, 0);
22         if (1.f == precision) canvas->translate(-180, 100);
23     }
24     strokePath.transform(scale);
25     strokePaint.setStrokeWidth(30);
26     canvas->drawPath(strokePath, strokePaint);
27 }
28 }  // END FIDDLE
29