Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(146)

Unified Diff: src/effects/SkDashPathEffect.cpp

Issue 216493005: Remove scaleToFit from DashPathEffect (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Dummy Read/writes Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « include/effects/SkDashPathEffect.h ('k') | tests/DrawPathTest.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/effects/SkDashPathEffect.cpp
diff --git a/src/effects/SkDashPathEffect.cpp b/src/effects/SkDashPathEffect.cpp
index 58706c5b78f52d55bbead6d4f7a8f3634bd838c6..15276b684c779329fd9b8d4aee352bf0b344b5de 100644
--- a/src/effects/SkDashPathEffect.cpp
+++ b/src/effects/SkDashPathEffect.cpp
@@ -35,8 +35,7 @@ static SkScalar FindFirstInterval(const SkScalar intervals[], SkScalar phase,
}
SkDashPathEffect::SkDashPathEffect(const SkScalar intervals[], int count,
- SkScalar phase, bool scaleToFit)
- : fScaleToFit(scaleToFit) {
+ SkScalar phase) {
SkASSERT(intervals);
SkASSERT(count > 1 && SkAlign2(count) == count);
@@ -256,7 +255,6 @@ bool SkDashPathEffect::filterPath(SkPath* dst, const SkPath& src,
bool addedSegment = false;
SkScalar length = meas.getLength();
int index = fInitialDashIndex;
- SkScalar scale = SK_Scalar1;
// Since the path length / dash length ratio may be arbitrarily large, we can exert
// significant memory pressure while attempting to build the filtered path. To avoid this,
@@ -273,20 +271,10 @@ bool SkDashPathEffect::filterPath(SkPath* dst, const SkPath& src,
return false;
}
- if (fScaleToFit) {
- if (fIntervalLength >= length) {
- scale = SkScalarDiv(length, fIntervalLength);
- } else {
- SkScalar div = SkScalarDiv(length, fIntervalLength);
- int n = SkScalarFloorToInt(div);
- scale = SkScalarDiv(length, n * fIntervalLength);
- }
- }
-
// Using double precision to avoid looping indefinitely due to single precision rounding
// (for extreme path_length/dash_length ratios). See test_infinite_dash() unittest.
double distance = 0;
- double dlen = SkScalarMul(fInitialDashLength, scale);
+ double dlen = fInitialDashLength;
while (distance < length) {
SkASSERT(dlen >= 0);
@@ -318,13 +306,13 @@ bool SkDashPathEffect::filterPath(SkPath* dst, const SkPath& src,
}
// fetch our next dlen
- dlen = SkScalarMul(intervals[index], scale);
+ dlen = intervals[index];
}
// extend if we ended on a segment and we need to join up with the (skipped) initial segment
if (meas.isClosed() && is_even(fInitialDashIndex) &&
fInitialDashLength > 0) {
- meas.getSegment(0, SkScalarMul(fInitialDashLength, scale), dst, !addedSegment);
+ meas.getSegment(0, fInitialDashLength, dst, !addedSegment);
++segCount;
}
} while (meas.nextContour());
@@ -362,13 +350,6 @@ bool SkDashPathEffect::asPoints(PointData* results,
return false;
}
- // TODO: this next test could be eased up. The rescaling should not impact
- // the equality of the ons & offs. However, we would need to remove the
- // integer intervals restriction first
- if (fScaleToFit) {
- return false;
- }
-
SkPoint pts[2];
if (!src.isLine(pts)) {
@@ -538,7 +519,8 @@ void SkDashPathEffect::flatten(SkWriteBuffer& buffer) const {
buffer.writeInt(fInitialDashIndex);
buffer.writeScalar(fInitialDashLength);
buffer.writeScalar(fIntervalLength);
- buffer.writeBool(fScaleToFit);
+ // Dummy write to stay compatible with old skps. Write will be removed in follow up patch.
+ buffer.writeBool(false);
buffer.writeScalarArray(fIntervals, fCount);
}
@@ -550,7 +532,7 @@ SkDashPathEffect::SkDashPathEffect(SkReadBuffer& buffer) : INHERITED(buffer) {
fInitialDashIndex = buffer.readInt();
fInitialDashLength = buffer.readScalar();
fIntervalLength = buffer.readScalar();
- fScaleToFit = buffer.readBool();
+ buffer.readBool(); // dummy read to stay compatible with old skps
fCount = buffer.getArrayCount();
size_t allocSize = sizeof(SkScalar) * fCount;
« no previous file with comments | « include/effects/SkDashPathEffect.h ('k') | tests/DrawPathTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698