OLD | NEW |
1 | 1 |
2 /* | 2 /* |
3 * Copyright 2006 The Android Open Source Project | 3 * Copyright 2006 The Android Open Source Project |
4 * | 4 * |
5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
7 */ | 7 */ |
8 | 8 |
9 | 9 |
10 #include "SkDashPathEffect.h" | 10 #include "SkDashPathEffect.h" |
(...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
270 if (dashCount > kMaxDashCount) { | 270 if (dashCount > kMaxDashCount) { |
271 dst->reset(); | 271 dst->reset(); |
272 return false; | 272 return false; |
273 } | 273 } |
274 | 274 |
275 if (fScaleToFit) { | 275 if (fScaleToFit) { |
276 if (fIntervalLength >= length) { | 276 if (fIntervalLength >= length) { |
277 scale = SkScalarDiv(length, fIntervalLength); | 277 scale = SkScalarDiv(length, fIntervalLength); |
278 } else { | 278 } else { |
279 SkScalar div = SkScalarDiv(length, fIntervalLength); | 279 SkScalar div = SkScalarDiv(length, fIntervalLength); |
280 int n = SkScalarFloor(div); | 280 int n = SkScalarFloorToInt(div); |
281 scale = SkScalarDiv(length, n * fIntervalLength); | 281 scale = SkScalarDiv(length, n * fIntervalLength); |
282 } | 282 } |
283 } | 283 } |
284 | 284 |
285 // Using double precision to avoid looping indefinitely due to single pr
ecision rounding | 285 // Using double precision to avoid looping indefinitely due to single pr
ecision rounding |
286 // (for extreme path_length/dash_length ratios). See test_infinite_dash(
) unittest. | 286 // (for extreme path_length/dash_length ratios). See test_infinite_dash(
) unittest. |
287 double distance = 0; | 287 double distance = 0; |
288 double dlen = SkScalarMul(fInitialDashLength, scale); | 288 double dlen = SkScalarMul(fInitialDashLength, scale); |
289 | 289 |
290 while (distance < length) { | 290 while (distance < length) { |
(...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
550 SkDashPathEffect::SkDashPathEffect(SkFlattenableReadBuffer& buffer) : INHERITED(
buffer) { | 550 SkDashPathEffect::SkDashPathEffect(SkFlattenableReadBuffer& buffer) : INHERITED(
buffer) { |
551 fInitialDashIndex = buffer.readInt(); | 551 fInitialDashIndex = buffer.readInt(); |
552 fInitialDashLength = buffer.readScalar(); | 552 fInitialDashLength = buffer.readScalar(); |
553 fIntervalLength = buffer.readScalar(); | 553 fIntervalLength = buffer.readScalar(); |
554 fScaleToFit = buffer.readBool(); | 554 fScaleToFit = buffer.readBool(); |
555 | 555 |
556 fCount = buffer.getArrayCount(); | 556 fCount = buffer.getArrayCount(); |
557 fIntervals = (SkScalar*)sk_malloc_throw(sizeof(SkScalar) * fCount); | 557 fIntervals = (SkScalar*)sk_malloc_throw(sizeof(SkScalar) * fCount); |
558 buffer.readScalarArray(fIntervals, fCount); | 558 buffer.readScalarArray(fIntervals, fCount); |
559 } | 559 } |
OLD | NEW |