Index: src/effects/SkDashPathEffect.cpp |
diff --git a/src/effects/SkDashPathEffect.cpp b/src/effects/SkDashPathEffect.cpp |
index ced0aab69a9930efbbd216127f776dd5d8c2770d..38164999159176a59bc49baf7930179b02309fd9 100644 |
--- a/src/effects/SkDashPathEffect.cpp |
+++ b/src/effects/SkDashPathEffect.cpp |
@@ -14,7 +14,7 @@ |
SkDashPathEffect::SkDashPathEffect(const SkScalar intervals[], int count, SkScalar phase) |
: fPhase(0) |
- , fInitialDashLength(0) |
+ , fInitialDashLength(-1) |
, fInitialDashIndex(0) |
, fIntervalLength(0) { |
SkASSERT(intervals); |
@@ -23,7 +23,6 @@ SkDashPathEffect::SkDashPathEffect(const SkScalar intervals[], int count, SkScal |
fIntervals = (SkScalar*)sk_malloc_throw(sizeof(SkScalar) * count); |
fCount = count; |
for (int i = 0; i < count; i++) { |
- SkASSERT(intervals[i] >= 0); |
fIntervals[i] = intervals[i]; |
} |
@@ -38,7 +37,7 @@ SkDashPathEffect::~SkDashPathEffect() { |
bool SkDashPathEffect::filterPath(SkPath* dst, const SkPath& src, |
SkStrokeRec* rec, const SkRect* cullRect) const { |
- return SkDashPath::FilterDashPath(dst, src, rec, cullRect, fIntervals, fCount, |
+ return SkDashPath::InternalFilter(dst, src, rec, cullRect, fIntervals, fCount, |
fInitialDashLength, fInitialDashIndex, fIntervalLength); |
} |
@@ -162,7 +161,7 @@ bool SkDashPathEffect::asPoints(PointData* results, |
const SkMatrix& matrix, |
const SkRect* cullRect) const { |
// width < 0 -> fill && width == 0 -> hairline so requiring width > 0 rules both out |
- if (fInitialDashLength < 0 || 0 >= rec.getWidth()) { |
+ if (0 >= rec.getWidth()) { |
return false; |
} |
@@ -388,13 +387,8 @@ void SkDashPathEffect::toString(SkString* str) const { |
////////////////////////////////////////////////////////////////////////////////////////////////// |
SkPathEffect* SkDashPathEffect::Create(const SkScalar intervals[], int count, SkScalar phase) { |
- if ((count < 2) || !SkIsAlign2(count)) { |
+ if (!SkDashPath::ValidDashPath(phase, intervals, count)) { |
return nullptr; |
} |
- for (int i = 0; i < count; i++) { |
- if (intervals[i] < 0) { |
- return nullptr; |
- } |
- } |
return new SkDashPathEffect(intervals, count, phase); |
} |