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 12 matching lines...) Expand all Loading... |
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 // Use Almost Dequal when comparing should not special case denormalized values. | 31 // Use Almost Dequal when comparing should not special case denormalized values. |
32 bool AlmostDequalUlps(float a, float b); | 32 bool AlmostDequalUlps(float a, float b); |
33 inline bool AlmostDequalUlps(double a, double b) { | 33 bool AlmostDequalUlps(double a, double b); |
34 return AlmostDequalUlps(SkDoubleToScalar(a), SkDoubleToScalar(b)); | |
35 } | |
36 | 34 |
37 bool NotAlmostEqualUlps(float a, float b); | 35 bool NotAlmostEqualUlps(float a, float b); |
38 inline bool NotAlmostEqualUlps(double a, double b) { | 36 inline bool NotAlmostEqualUlps(double a, double b) { |
39 return NotAlmostEqualUlps(SkDoubleToScalar(a), SkDoubleToScalar(b)); | 37 return NotAlmostEqualUlps(SkDoubleToScalar(a), SkDoubleToScalar(b)); |
40 } | 38 } |
41 | 39 |
42 bool NotAlmostDequalUlps(float a, float b); | 40 bool NotAlmostDequalUlps(float a, float b); |
43 inline bool NotAlmostDequalUlps(double a, double b) { | 41 inline bool NotAlmostDequalUlps(double a, double b) { |
44 return NotAlmostDequalUlps(SkDoubleToScalar(a), SkDoubleToScalar(b)); | 42 return NotAlmostDequalUlps(SkDoubleToScalar(a), SkDoubleToScalar(b)); |
45 } | 43 } |
(...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
363 /* Returns 1 if negative, 2 if zero, 4 if positive | 361 /* Returns 1 if negative, 2 if zero, 4 if positive |
364 */ | 362 */ |
365 inline int SkDSideBit(double x) { | 363 inline int SkDSideBit(double x) { |
366 return 1 << SKDSide(x); | 364 return 1 << SKDSide(x); |
367 } | 365 } |
368 | 366 |
369 inline double SkPinT(double t) { | 367 inline double SkPinT(double t) { |
370 return precisely_less_than_zero(t) ? 0 : precisely_greater_than_one(t) ? 1 :
t; | 368 return precisely_less_than_zero(t) ? 0 : precisely_greater_than_one(t) ? 1 :
t; |
371 } | 369 } |
372 | 370 |
| 371 struct SkFloat128 { |
| 372 int fExp; |
| 373 int64_t fHigh; |
| 374 uint64_t fLow; |
| 375 }; |
| 376 |
| 377 double SkFloat128Sub(const SkFloat128& a, const SkFloat128& b); |
| 378 SkFloat128 SkFloat128Mul(double a, double b); |
| 379 SkFloat128 SkFloat128Mul(SkFloat128& a, double b); |
| 380 |
373 #endif | 381 #endif |
OLD | NEW |