/* * Copyright 2015 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #include "SkPath.h" #include "SkStream.h" #include "gm.h" // Test how short paths are stroked with various caps DEF_SIMPLE_GM(path_stroke_with_zero_length, canvas, 240, 120) { SkPath paths[5]; paths[0].moveTo(30.0f, 0); // single line segment paths[0].rLineTo(30.0f, 0); paths[1].moveTo(90.0f, 0); // single line segment with close paths[1].rLineTo(30.0f, 0); paths[1].close(); paths[2].moveTo(150.0f, 0); // zero-length line paths[2].rLineTo(0, 0); paths[3].moveTo(180.0f, 0); // zero-length line with close paths[3].rLineTo(0, 0); paths[3].close(); paths[4].moveTo(210.0f, 0); // close only, no line paths[4].close(); auto drawPaths = [&](const SkPaint& paint) { canvas->translate(0, 30.0f); for (const SkPath& path : paths) { canvas->drawPath(path, paint); } }; SkAutoCanvasRestore autoCanvasRestore(canvas, true); SkPaint butt; butt.setStyle(SkPaint::kStroke_Style); butt.setStrokeWidth(20.0f); butt.setStrokeCap(SkPaint::kButt_Cap); drawPaths(butt); SkPaint round(butt); round.setStrokeCap(SkPaint::kRound_Cap); drawPaths(round); SkPaint square(butt); square.setStrokeCap(SkPaint::kSquare_Cap); drawPaths(square); }