2 * Copyright 2014 Google Inc.
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
15 static const SkScalar SH = SkIntToScalar(H);
17 static void rnd_quad(SkPath* p, SkPaint* paint, SkRandom& rand) {
18 p->moveTo(rand.nextRangeScalar(0, W), rand.nextRangeScalar(0, H));
19 for (int x = 0; x < 2; ++x) {
20 p->quadTo(rand.nextRangeScalar(W / 4, W), rand.nextRangeScalar(0, H),
21 rand.nextRangeScalar(0, W), rand.nextRangeScalar(H / 4, H));
23 paint->setColor(rand.nextU());
24 SkScalar width = rand.nextRangeScalar(1, 5);
26 paint->setStrokeWidth(width);
27 paint->setAlpha(0xFF);
30 static void rnd_cubic(SkPath* p, SkPaint* paint, SkRandom& rand) {
31 p->moveTo(rand.nextRangeScalar(0, W), rand.nextRangeScalar(0, H));
32 for (int x = 0; x < 2; ++x) {
33 p->cubicTo(rand.nextRangeScalar(W / 4, W), rand.nextRangeScalar(0, H),
34 rand.nextRangeScalar(0, W), rand.nextRangeScalar(H / 4, H),
35 rand.nextRangeScalar(W / 4, W), rand.nextRangeScalar(H / 4, H));
37 paint->setColor(rand.nextU());
38 SkScalar width = rand.nextRangeScalar(1, 5);
40 paint->setStrokeWidth(width);
41 paint->setAlpha(0xFF);
44 class BeziersGM : public skiagm::GM {
50 SkString onShortName() SK_OVERRIDE {
51 return SkString("beziers");
54 SkISize onISize() SK_OVERRIDE {
55 return SkISize::Make(W, H*2);
58 void onDraw(SkCanvas* canvas) SK_OVERRIDE {
60 paint.setStyle(SkPaint::kStroke_Style);
61 paint.setStrokeWidth(SkIntToScalar(9)/2);
62 paint.setAntiAlias(true);
65 for (int i = 0; i < N; i++) {
67 rnd_quad(&p, &paint, rand);
68 canvas->drawPath(p, paint);
70 canvas->translate(0, SH);
71 for (int i = 0; i < N; i++) {
73 rnd_cubic(&p, &paint, rand);
74 canvas->drawPath(p, paint);
79 typedef skiagm::GM INHERITED;
82 static skiagm::GM* F0(void*) { return new BeziersGM; }
83 static skiagm::GMRegistry R0(F0);