3319 {
3322 circle_stays_circle(viewMatrix));
3323
3324 auto r =
width / 2.f;
3327 return nullptr;
3331 return nullptr;
3332 }
3335 if (offInterval == 0) {
3338 strokeStyle, shaderCaps);
3339 } else if (onInterval == 0) {
3340
3341 return nullptr;
3342 }
3343 auto angularOnInterval = onInterval / r;
3344 auto angularOffInterval = offInterval / r;
3345 auto phaseAngle = style.
dashPhase() / r;
3346
3347
3348 static const SkScalar kStartAngle = 0.f;
3351 angularOnInterval, angularOffInterval, phaseAngle);
3352 }
3354}
#define SK_ScalarNearlyZero
static DEFINE_OP_CLASS_ID GrOp::Owner Make(GrRecordingContext *context, GrPaint &&paint, const SkMatrix &viewMatrix, SkPoint center, SkScalar radius, SkScalar strokeWidth, SkScalar startAngle, SkScalar onAngle, SkScalar offAngle, SkScalar phaseAngle)
static GrOp::Owner MakeOvalOp(GrRecordingContext *, GrPaint &&, const SkMatrix &, const SkRect &oval, const GrStyle &style, const GrShaderCaps *)
const SkScalar * dashIntervals() const
bool hasNonDashPathEffect() const
int dashIntervalCnt() const
SkScalar dashPhase() const
const SkStrokeRec & strokeRec() const
@ kButt_Cap
no stroke extension
SkScalar getWidth() const
SkPaint::Cap getCap() const