13 constexpr SkRect gRects[] = {
23 {0, 0,
W, FLT_EPSILON},
24 {0, 0, FLT_EPSILON,
H},
25 {0, 0, FLT_EPSILON, FLT_EPSILON},
28 for (
int doFill = 0; doFill <= 1; ++doFill) {
30 for (
size_t i = 0; i < std::size(gJoins); ++i) {
32 for (
size_t j = 0; j < std::size(gRects); ++j) {
37 const SkRect& rect = gRects[j];
44 paint.setStyle(style);
45 paint.setStrokeJoin(join);
48 paint.setAntiAlias(
true);
49 paint.setColor(0xFF8C8A8C);
53 paint.setStrokeWidth(0);
57 paint.setStrokeWidth(3);
static const int points[]
constexpr SkColor SK_ColorRED
static void draw(SkCanvas *canvas, SkRect &target, int x, int y)
void drawRect(const SkRect &rect, const SkPaint &paint)
void drawPoints(PointMode mode, size_t count, const SkPoint pts[], const SkPaint &paint)
void translate(SkScalar dx, SkScalar dy)
void drawPath(const SkPath &path, const SkPaint &paint)
@ kPoints_PointMode
draw each point separately
@ kStroke_Style
set to stroke geometry
@ kStrokeAndFill_Style
sets to stroke and fill geometry
@ kMiter_Join
extends to miter limit
@ kBevel_Join
connects outside edges
int getPoints(SkPoint points[], int max) const
#define REG_FIDDLE(NAME, W, H, TEXT, I)
SK_API bool FillPathWithPaint(const SkPath &src, const SkPaint &paint, SkPath *dst, const SkRect *cullRect, SkScalar resScale=1)
constexpr SkScalar kStrokeWidth