OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2006 The Android Open Source Project | 2 * Copyright 2006 The Android Open Source Project |
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 | 7 |
8 #ifndef SkScalar_DEFINED | 8 #ifndef SkScalar_DEFINED |
9 #define SkScalar_DEFINED | 9 #define SkScalar_DEFINED |
10 | 10 |
(...skipping 20 matching lines...) Expand all Loading... |
31 #define SK_ScalarInfinity SK_FloatInfinity | 31 #define SK_ScalarInfinity SK_FloatInfinity |
32 #define SK_ScalarNegativeInfinity SK_FloatNegativeInfinity | 32 #define SK_ScalarNegativeInfinity SK_FloatNegativeInfinity |
33 #define SK_ScalarNaN SK_FloatNaN | 33 #define SK_ScalarNaN SK_FloatNaN |
34 | 34 |
35 #define SkFixedToScalar(x) SkFixedToFloat(x) | 35 #define SkFixedToScalar(x) SkFixedToFloat(x) |
36 #define SkScalarToFixed(x) SkFloatToFixed(x) | 36 #define SkScalarToFixed(x) SkFloatToFixed(x) |
37 | 37 |
38 #define SkScalarFloorToScalar(x) sk_float_floor(x) | 38 #define SkScalarFloorToScalar(x) sk_float_floor(x) |
39 #define SkScalarCeilToScalar(x) sk_float_ceil(x) | 39 #define SkScalarCeilToScalar(x) sk_float_ceil(x) |
40 #define SkScalarRoundToScalar(x) sk_float_floor((x) + 0.5f) | 40 #define SkScalarRoundToScalar(x) sk_float_floor((x) + 0.5f) |
| 41 #define SkScalarTruncToScalar(x) sk_float_trunc(x) |
41 | 42 |
42 #define SkScalarFloorToInt(x) sk_float_floor2int(x) | 43 #define SkScalarFloorToInt(x) sk_float_floor2int(x) |
43 #define SkScalarCeilToInt(x) sk_float_ceil2int(x) | 44 #define SkScalarCeilToInt(x) sk_float_ceil2int(x) |
44 #define SkScalarRoundToInt(x) sk_float_round2int(x) | 45 #define SkScalarRoundToInt(x) sk_float_round2int(x) |
45 | 46 |
46 #define SkScalarAbs(x) sk_float_abs(x) | 47 #define SkScalarAbs(x) sk_float_abs(x) |
47 #define SkScalarCopySign(x, y) sk_float_copysign(x, y) | 48 #define SkScalarCopySign(x, y) sk_float_copysign(x, y) |
48 #define SkScalarMod(x, y) sk_float_mod(x,y) | 49 #define SkScalarMod(x, y) sk_float_mod(x,y) |
49 #define SkScalarFraction(x) sk_float_mod(x, 1.0f) | |
50 #define SkScalarSqrt(x) sk_float_sqrt(x) | 50 #define SkScalarSqrt(x) sk_float_sqrt(x) |
51 #define SkScalarPow(b, e) sk_float_pow(b, e) | 51 #define SkScalarPow(b, e) sk_float_pow(b, e) |
52 | 52 |
53 #define SkScalarSin(radians) (float)sk_float_sin(radians) | 53 #define SkScalarSin(radians) (float)sk_float_sin(radians) |
54 #define SkScalarCos(radians) (float)sk_float_cos(radians) | 54 #define SkScalarCos(radians) (float)sk_float_cos(radians) |
55 #define SkScalarTan(radians) (float)sk_float_tan(radians) | 55 #define SkScalarTan(radians) (float)sk_float_tan(radians) |
56 #define SkScalarASin(val) (float)sk_float_asin(val) | 56 #define SkScalarASin(val) (float)sk_float_asin(val) |
57 #define SkScalarACos(val) (float)sk_float_acos(val) | 57 #define SkScalarACos(val) (float)sk_float_acos(val) |
58 #define SkScalarATan2(y, x) (float)sk_float_atan2(y,x) | 58 #define SkScalarATan2(y, x) (float)sk_float_atan2(y,x) |
59 #define SkScalarExp(x) (float)sk_float_exp(x) | 59 #define SkScalarExp(x) (float)sk_float_exp(x) |
(...skipping 14 matching lines...) Expand all Loading... |
74 #define SK_ScalarInfinity SK_DoubleInfinity | 74 #define SK_ScalarInfinity SK_DoubleInfinity |
75 #define SK_ScalarNegativeInfinity SK_DoubleNegativeInfinity | 75 #define SK_ScalarNegativeInfinity SK_DoubleNegativeInfinity |
76 #define SK_ScalarNaN SK_DoubleNaN | 76 #define SK_ScalarNaN SK_DoubleNaN |
77 | 77 |
78 #define SkFixedToScalar(x) SkFixedToDouble(x) | 78 #define SkFixedToScalar(x) SkFixedToDouble(x) |
79 #define SkScalarToFixed(x) SkDoubleToFixed(x) | 79 #define SkScalarToFixed(x) SkDoubleToFixed(x) |
80 | 80 |
81 #define SkScalarFloorToScalar(x) floor(x) | 81 #define SkScalarFloorToScalar(x) floor(x) |
82 #define SkScalarCeilToScalar(x) ceil(x) | 82 #define SkScalarCeilToScalar(x) ceil(x) |
83 #define SkScalarRoundToScalar(x) floor((x) + 0.5) | 83 #define SkScalarRoundToScalar(x) floor((x) + 0.5) |
| 84 #define SkScalarTruncToScalar(x) trunc(x) |
84 | 85 |
85 #define SkScalarFloorToInt(x) (int)floor(x) | 86 #define SkScalarFloorToInt(x) (int)floor(x) |
86 #define SkScalarCeilToInt(x) (int)ceil(x) | 87 #define SkScalarCeilToInt(x) (int)ceil(x) |
87 #define SkScalarRoundToInt(x) (int)floor((x) + 0.5) | 88 #define SkScalarRoundToInt(x) (int)floor((x) + 0.5) |
88 | 89 |
89 #define SkScalarAbs(x) abs(x) | 90 #define SkScalarAbs(x) abs(x) |
90 #define SkScalarCopySign(x, y) copysign(x, y) | 91 #define SkScalarCopySign(x, y) copysign(x, y) |
91 #define SkScalarMod(x, y) fmod(x,y) | 92 #define SkScalarMod(x, y) fmod(x,y) |
92 #define SkScalarFraction(x) fmod(x, 1.0) | |
93 #define SkScalarSqrt(x) sqrt(x) | 93 #define SkScalarSqrt(x) sqrt(x) |
94 #define SkScalarPow(b, e) pow(b, e) | 94 #define SkScalarPow(b, e) pow(b, e) |
95 | 95 |
96 #define SkScalarSin(radians) sin(radians) | 96 #define SkScalarSin(radians) sin(radians) |
97 #define SkScalarCos(radians) cos(radians) | 97 #define SkScalarCos(radians) cos(radians) |
98 #define SkScalarTan(radians) tan(radians) | 98 #define SkScalarTan(radians) tan(radians) |
99 #define SkScalarASin(val) asin(val) | 99 #define SkScalarASin(val) asin(val) |
100 #define SkScalarACos(val) acos(val) | 100 #define SkScalarACos(val) acos(val) |
101 #define SkScalarATan2(y, x) atan2(y,x) | 101 #define SkScalarATan2(y, x) atan2(y,x) |
102 #define SkScalarExp(x) exp(x) | 102 #define SkScalarExp(x) exp(x) |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
161 * SkASSERT(0 == ix); // <--- fails | 161 * SkASSERT(0 == ix); // <--- fails |
162 * ix = SkDScalarRoundToInt(x); | 162 * ix = SkDScalarRoundToInt(x); |
163 * SkASSERT(0 == ix); // <--- succeeds | 163 * SkASSERT(0 == ix); // <--- succeeds |
164 */ | 164 */ |
165 static inline int SkDScalarRoundToInt(SkScalar x) { | 165 static inline int SkDScalarRoundToInt(SkScalar x) { |
166 double xx = x; | 166 double xx = x; |
167 xx += 0.5; | 167 xx += 0.5; |
168 return (int)floor(xx); | 168 return (int)floor(xx); |
169 } | 169 } |
170 | 170 |
| 171 /** Returns the fractional part of the scalar. */ |
| 172 static inline SkScalar SkScalarFraction(SkScalar x) { |
| 173 return x - SkScalarTruncToScalar(x); |
| 174 } |
| 175 |
171 static inline SkScalar SkScalarClampMax(SkScalar x, SkScalar max) { | 176 static inline SkScalar SkScalarClampMax(SkScalar x, SkScalar max) { |
172 x = SkTMin(x, max); | 177 x = SkTMin(x, max); |
173 x = SkTMax<SkScalar>(x, 0); | 178 x = SkTMax<SkScalar>(x, 0); |
174 return x; | 179 return x; |
175 } | 180 } |
176 | 181 |
177 static inline SkScalar SkScalarPin(SkScalar x, SkScalar min, SkScalar max) { | 182 static inline SkScalar SkScalarPin(SkScalar x, SkScalar min, SkScalar max) { |
178 return SkTPin(x, min, max); | 183 return SkTPin(x, min, max); |
179 } | 184 } |
180 | 185 |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
260 SkASSERT(n >= 0); | 265 SkASSERT(n >= 0); |
261 for (int i = 0; i < n; ++i) { | 266 for (int i = 0; i < n; ++i) { |
262 if (a[i] != b[i]) { | 267 if (a[i] != b[i]) { |
263 return false; | 268 return false; |
264 } | 269 } |
265 } | 270 } |
266 return true; | 271 return true; |
267 } | 272 } |
268 | 273 |
269 #endif | 274 #endif |
OLD | NEW |