| Index: src/core/SkPoint.cpp
|
| diff --git a/src/core/SkPoint.cpp b/src/core/SkPoint.cpp
|
| index 719ee54b225ae72e57ee6752ab22a107178adc66..8a6d0564af59b96d3e9842c02af373866b11bf02 100644
|
| --- a/src/core/SkPoint.cpp
|
| +++ b/src/core/SkPoint.cpp
|
| @@ -7,6 +7,7 @@
|
| */
|
|
|
|
|
| +#include "SkMathPriv.h"
|
| #include "SkPoint.h"
|
|
|
| void SkIPoint::rotateCW(SkIPoint* dst) const {
|
| @@ -168,7 +169,17 @@ bool SkPoint::setLength(float x, float y, float length) {
|
| // divide by inf. and return (0,0) vector.
|
| double xx = x;
|
| double yy = y;
|
| + #ifdef SK_DISCARD_DENORMALIZED_FOR_SPEED
|
| + // The iOS ARM processor discards small denormalized numbers to go faster.
|
| + // Casting this to a float would cause the scale to go to zero. Keeping it
|
| + // as a double for the multiply keeps the scale non-zero.
|
| + double dscale = length / sqrt(xx * xx + yy * yy);
|
| + fX = x * dscale;
|
| + fY = y * dscale;
|
| + return true;
|
| + #else
|
| scale = (float)(length / sqrt(xx * xx + yy * yy));
|
| + #endif
|
| }
|
| fX = x * scale;
|
| fY = y * scale;
|
|
|