52 {
53 struct FillAndName {
56 };
57 constexpr FillAndName gFills[] = {
62 };
63 struct StyleAndName {
66 };
67 constexpr StyleAndName
gStyles[] = {
71 };
72 struct CapAndName {
76 };
77 constexpr CapAndName gCaps[] = {
81 };
82 struct PathAndName {
85 };
90 path.fName =
"moveTo-quad";
91
95
96 const char title[] = "Quad Drawn Into Rectangle Clips With "
97 "Indicated Style, Fill and Linecaps, with stroke width 10";
98 canvas->
drawString(title, 20.0f, 20.0f, font, titlePaint);
99
105 for (size_t cap = 0; cap < std::size(gCaps); ++cap) {
106 if (0 < cap) {
108 }
110 for (size_t fill = 0; fill < std::size(gFills); ++fill) {
111 if (0 < fill) {
113 }
115 for (
size_t style = 0; style < std::size(
gStyles); ++style) {
116 if (0 < style) {
118 }
119
122 gCaps[cap].fCap, gCaps[cap].fJoin,
gStyles[style].fStyle,
124
131
135 labelFont, labelPaint);
137 labelFont, labelPaint);
139 labelFont, labelPaint);
140 }
142 }
144 }
147 }
SkStrokeRec::Style fStyle
constexpr SkColor SK_ColorBLACK
void drawRect(const SkRect &rect, const SkPaint &paint)
void translate(SkScalar dx, SkScalar dy)
void drawString(const char str[], SkScalar x, SkScalar y, const SkFont &font, const SkPaint &paint)
@ kButt_Cap
no stroke extension
void setStyle(Style style)
void setColor(SkColor color)
void setAntiAlias(bool aa)
@ kStroke_Style
set to stroke geometry
@ kFill_Style
set to fill geometry
@ kStrokeAndFill_Style
sets to stroke and fill geometry
@ kBevel_Join
connects outside edges
void setStrokeWidth(SkScalar width)
void drawPath(SkPath &path, SkCanvas *canvas, SkColor color, const SkRect &clip, SkPaint::Cap cap, SkPaint::Join join, SkPaint::Style style, SkPathFillType fill, SkScalar strokeWidth)
sk_sp< SkBlender > blender SkRect rect
font
Font Metadata and Metrics.
static constexpr SkRect MakeWH(float w, float h)
static constexpr SkFontStyle gStyles[]