// Copyright 2019 Google LLC
// Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.
#include "tools/fiddle/examples.h"
REG_FIDDLE(Path_quadTo, 256, 256, false, 0) {
void draw(SkCanvas* canvas) {
    SkPaint paint;
    paint.setAntiAlias(true);
    paint.setStyle(SkPaint::kStroke_Style);
    SkPathBuilder path;
    path.moveTo(0, -10);
    for (int i = 0; i < 128; i += 16) {
        path.quadTo( 10 + i, -10 - i,  10 + i,       0);
        path.quadTo( 14 + i,  14 + i,       0,  14 + i);
        path.quadTo(-18 - i,  18 + i, -18 - i,       0);
        path.quadTo(-22 - i, -22 - i,       0, -22 - i);
    }
    path.offset(128, 128);
    canvas->drawPath(path.detach(), paint);
}
}  // END FIDDLE
