| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2012 Google Inc. | 2 * Copyright 2012 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 #ifndef SkPathOpsTypes_DEFINED | 7 #ifndef SkPathOpsTypes_DEFINED |
| 8 #define SkPathOpsTypes_DEFINED | 8 #define SkPathOpsTypes_DEFINED |
| 9 | 9 |
| 10 #include <float.h> // for FLT_EPSILON | 10 #include <float.h> // for FLT_EPSILON |
| (...skipping 10 matching lines...) Expand all Loading... |
| 21 kNo_PathOpsMask = 0, | 21 kNo_PathOpsMask = 0, |
| 22 kEvenOdd_PathOpsMask = 1 | 22 kEvenOdd_PathOpsMask = 1 |
| 23 }; | 23 }; |
| 24 | 24 |
| 25 // Use Almost Equal when comparing coordinates. Use epsilon to compare T values. | 25 // Use Almost Equal when comparing coordinates. Use epsilon to compare T values. |
| 26 bool AlmostEqualUlps(float a, float b); | 26 bool AlmostEqualUlps(float a, float b); |
| 27 inline bool AlmostEqualUlps(double a, double b) { | 27 inline bool AlmostEqualUlps(double a, double b) { |
| 28 return AlmostEqualUlps(SkDoubleToScalar(a), SkDoubleToScalar(b)); | 28 return AlmostEqualUlps(SkDoubleToScalar(a), SkDoubleToScalar(b)); |
| 29 } | 29 } |
| 30 | 30 |
| 31 bool NotAlmostEqualUlps(float a, float b); |
| 32 inline bool NotAlmostEqualUlps(double a, double b) { |
| 33 return NotAlmostEqualUlps(SkDoubleToScalar(a), SkDoubleToScalar(b)); |
| 34 } |
| 35 |
| 36 // Use Almost Bequal when comparing coordinates in conjunction with between. |
| 37 bool AlmostBequalUlps(float a, float b); |
| 38 inline bool AlmostBequalUlps(double a, double b) { |
| 39 return AlmostBequalUlps(SkDoubleToScalar(a), SkDoubleToScalar(b)); |
| 40 } |
| 41 |
| 31 bool RoughlyEqualUlps(float a, float b); | 42 bool RoughlyEqualUlps(float a, float b); |
| 32 inline bool RoughlyEqualUlps(double a, double b) { | 43 inline bool RoughlyEqualUlps(double a, double b) { |
| 33 return RoughlyEqualUlps(SkDoubleToScalar(a), SkDoubleToScalar(b)); | 44 return RoughlyEqualUlps(SkDoubleToScalar(a), SkDoubleToScalar(b)); |
| 34 } | 45 } |
| 35 | 46 |
| 47 bool AlmostLessUlps(float a, float b); |
| 48 inline bool AlmostLessUlps(double a, double b) { |
| 49 return AlmostLessUlps(SkDoubleToScalar(a), SkDoubleToScalar(b)); |
| 50 } |
| 51 |
| 52 bool AlmostLessOrEqualUlps(float a, float b); |
| 53 inline bool AlmostLessOrEqualUlps(double a, double b) { |
| 54 return AlmostLessOrEqualUlps(SkDoubleToScalar(a), SkDoubleToScalar(b)); |
| 55 } |
| 56 |
| 36 bool AlmostBetweenUlps(float a, float b, float c); | 57 bool AlmostBetweenUlps(float a, float b, float c); |
| 37 inline bool AlmostBetweenUlps(double a, double b, double c) { | 58 inline bool AlmostBetweenUlps(double a, double b, double c) { |
| 38 return AlmostBetweenUlps(SkDoubleToScalar(a), SkDoubleToScalar(b), SkDoubleT
oScalar(c)); | 59 return AlmostBetweenUlps(SkDoubleToScalar(a), SkDoubleToScalar(b), SkDoubleT
oScalar(c)); |
| 39 } | 60 } |
| 40 | 61 |
| 41 int UlpsDistance(float a, float b); | 62 int UlpsDistance(float a, float b); |
| 42 inline int UlpsDistance(double a, double b) { | 63 inline int UlpsDistance(double a, double b) { |
| 43 return UlpsDistance(SkDoubleToScalar(a), SkDoubleToScalar(b)); | 64 return UlpsDistance(SkDoubleToScalar(a), SkDoubleToScalar(b)); |
| 44 } | 65 } |
| 45 | 66 |
| (...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 267 /* Returns 1 if negative, 2 if zero, 4 if positive | 288 /* Returns 1 if negative, 2 if zero, 4 if positive |
| 268 */ | 289 */ |
| 269 inline int SkDSideBit(double x) { | 290 inline int SkDSideBit(double x) { |
| 270 return 1 << SKDSide(x); | 291 return 1 << SKDSide(x); |
| 271 } | 292 } |
| 272 | 293 |
| 273 inline double SkPinT(double t) { | 294 inline double SkPinT(double t) { |
| 274 return precisely_less_than_zero(t) ? 0 : precisely_greater_than_one(t) ? 1 :
t; | 295 return precisely_less_than_zero(t) ? 0 : precisely_greater_than_one(t) ? 1 :
t; |
| 275 } | 296 } |
| 276 | 297 |
| 298 #ifdef SK_DEBUG |
| 299 inline void DebugDumpDouble(double x) { |
| 300 if (x == floor(x)) { |
| 301 SkDebugf("%.0f", x); |
| 302 } else { |
| 303 SkDebugf("%1.17g", x); |
| 304 } |
| 305 } |
| 306 |
| 307 inline void DebugDumpFloat(float x) { |
| 308 if (x == floorf(x)) { |
| 309 SkDebugf("%.0f", x); |
| 310 } else { |
| 311 SkDebugf("%1.9gf", x); |
| 312 } |
| 313 } |
| 277 #endif | 314 #endif |
| 315 |
| 316 #endif |
| OLD | NEW |