void GrStyle::initPathEffect(sk_sp<SkPathEffect> pe) { SkASSERT(!fPathEffect); SkASSERT(SkPathEffect::kNone_DashType == fDashInfo.fType); SkASSERT(0 == fDashInfo.fIntervals.count()); if (!pe) { return; } SkPathEffect::DashInfo info; if (SkPathEffect::kDash_DashType == pe->asADash(&info)) { SkStrokeRec::Style recStyle = fStrokeRec.getStyle(); if (recStyle != SkStrokeRec::kFill_Style && recStyle != SkStrokeRec::kStrokeAndFill_Style) { fDashInfo.fType = SkPathEffect::kDash_DashType; fDashInfo.fIntervals.reset(info.fCount); fDashInfo.fPhase = info.fPhase; info.fIntervals = fDashInfo.fIntervals.get(); pe->asADash(&info); fPathEffect = std::move(pe); } } else { fPathEffect = std::move(pe); } }