OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2011 Google Inc. | 2 * Copyright 2011 Google Inc. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 | 7 |
8 #include "gm.h" | 8 #include "gm.h" |
9 #include "SkPath.h" | 9 #include "SkPath.h" |
10 #include "SkRandom.h" | 10 #include "SkRandom.h" |
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
229 path.lineTo(60, 30); | 229 path.lineTo(60, 30); |
230 canvas->drawPath(path, paint); | 230 canvas->drawPath(path, paint); |
231 | 231 |
232 path.reset(); | 232 path.reset(); |
233 path.moveTo(30, 60); | 233 path.moveTo(30, 60); |
234 path.lineTo(30, 60); | 234 path.lineTo(30, 60); |
235 path.lineTo(60, 60); | 235 path.lineTo(60, 60); |
236 canvas->drawPath(path, paint); | 236 canvas->drawPath(path, paint); |
237 } | 237 } |
238 | 238 |
| 239 DEF_SIMPLE_GM(quadcap, canvas, 200, 200) { |
| 240 SkPaint p; |
| 241 p.setAntiAlias(true); |
| 242 p.setStyle(SkPaint::kStroke_Style); |
| 243 p.setStrokeWidth(0); |
| 244 SkPath path; |
| 245 SkPoint pts[] = {{105.738571f,13.126318f}, |
| 246 {105.738571f,13.126318f}, |
| 247 {123.753784f,1.f}}; |
| 248 SkVector tangent = pts[1] - pts[2]; |
| 249 tangent.normalize(); |
| 250 SkPoint pts2[3]; |
| 251 memcpy(pts2, pts, sizeof(pts)); |
| 252 const SkScalar capOutset = SK_ScalarPI / 8; |
| 253 pts2[0].fX += tangent.fX * capOutset; |
| 254 pts2[0].fY += tangent.fY * capOutset; |
| 255 pts2[1].fX += tangent.fX * capOutset; |
| 256 pts2[1].fY += tangent.fY * capOutset; |
| 257 pts2[2].fX += -tangent.fX * capOutset; |
| 258 pts2[2].fY += -tangent.fY * capOutset; |
| 259 path.moveTo(pts2[0]); |
| 260 path.quadTo(pts2[1], pts2[2]); |
| 261 canvas->drawPath(path, p); |
| 262 |
| 263 path.reset(); |
| 264 path.moveTo(pts[0]); |
| 265 path.quadTo(pts[1], pts[2]); |
| 266 p.setStrokeCap(SkPaint::kRound_Cap); |
| 267 canvas->translate(30, 0); |
| 268 canvas->drawPath(path, p); |
| 269 } |
| 270 |
239 class Strokes2GM : public skiagm::GM { | 271 class Strokes2GM : public skiagm::GM { |
240 SkPath fPath; | 272 SkPath fPath; |
241 protected: | 273 protected: |
242 void onOnceBeforeDraw() override { | 274 void onOnceBeforeDraw() override { |
243 SkRandom rand; | 275 SkRandom rand; |
244 fPath.moveTo(0, 0); | 276 fPath.moveTo(0, 0); |
245 for (int i = 0; i < 13; i++) { | 277 for (int i = 0; i < 13; i++) { |
246 SkScalar x = rand.nextUScalar1() * (W >> 1); | 278 SkScalar x = rand.nextUScalar1() * (W >> 1); |
247 SkScalar y = rand.nextUScalar1() * (H >> 1); | 279 SkScalar y = rand.nextUScalar1() * (H >> 1); |
248 fPath.lineTo(x, y); | 280 fPath.lineTo(x, y); |
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
484 ////////////////////////////////////////////////////////////////////////////// | 516 ////////////////////////////////////////////////////////////////////////////// |
485 | 517 |
486 DEF_GM( return new StrokesGM; ) | 518 DEF_GM( return new StrokesGM; ) |
487 DEF_GM( return new Strokes2GM; ) | 519 DEF_GM( return new Strokes2GM; ) |
488 DEF_GM( return new Strokes3GM; ) | 520 DEF_GM( return new Strokes3GM; ) |
489 DEF_GM( return new Strokes4GM; ) | 521 DEF_GM( return new Strokes4GM; ) |
490 DEF_GM( return new Strokes5GM; ) | 522 DEF_GM( return new Strokes5GM; ) |
491 | 523 |
492 DEF_GM( return new ZeroLenStrokesGM; ) | 524 DEF_GM( return new ZeroLenStrokesGM; ) |
493 DEF_GM( return new TeenyStrokesGM; ) | 525 DEF_GM( return new TeenyStrokesGM; ) |
OLD | NEW |