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 |
11 #include "SkFixed.h" | 11 #include "SkFixed.h" |
12 #include "SkFloatingPoint.h" | 12 #include "SkFloatingPoint.h" |
13 | 13 |
| 14 //#define SK_SUPPORT_DEPRECATED_SCALARROUND |
| 15 |
14 typedef float SkScalar; | 16 typedef float SkScalar; |
15 | 17 |
16 /** SK_Scalar1 is defined to be 1.0 represented as an SkScalar | 18 /** SK_Scalar1 is defined to be 1.0 represented as an SkScalar |
17 */ | 19 */ |
18 #define SK_Scalar1 (1.0f) | 20 #define SK_Scalar1 (1.0f) |
19 /** SK_Scalar1 is defined to be 1/2 represented as an SkScalar | 21 /** SK_Scalar1 is defined to be 1/2 represented as an SkScalar |
20 */ | 22 */ |
21 #define SK_ScalarHalf (0.5f) | 23 #define SK_ScalarHalf (0.5f) |
22 /** SK_ScalarInfinity is defined to be infinity as an SkScalar | 24 /** SK_ScalarInfinity is defined to be infinity as an SkScalar |
23 */ | 25 */ |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
101 */ | 103 */ |
102 inline SkScalar SkScalarSquare(SkScalar x) { return x * x; } | 104 inline SkScalar SkScalarSquare(SkScalar x) { return x * x; } |
103 /** Returns the product of two SkScalars | 105 /** Returns the product of two SkScalars |
104 */ | 106 */ |
105 #define SkScalarMul(a, b) ((float)(a) * (b)) | 107 #define SkScalarMul(a, b) ((float)(a) * (b)) |
106 /** Returns the product of two SkScalars plus a third SkScalar | 108 /** Returns the product of two SkScalars plus a third SkScalar |
107 */ | 109 */ |
108 #define SkScalarMulAdd(a, b, c) ((float)(a) * (b) + (c)) | 110 #define SkScalarMulAdd(a, b, c) ((float)(a) * (b) + (c)) |
109 /** Returns the product of a SkScalar and an int rounded to the nearest integer
value | 111 /** Returns the product of a SkScalar and an int rounded to the nearest integer
value |
110 */ | 112 */ |
111 #define SkScalarMulRound(a, b) SkScalarRound((float)(a) * (b)) | 113 #define SkScalarMulRound(a, b) SkScalarRoundToInt((float)(a) * (b)) |
112 /** Returns the product of a SkScalar and an int promoted to the next larger int | 114 /** Returns the product of a SkScalar and an int promoted to the next larger int |
113 */ | 115 */ |
114 #define SkScalarMulCeil(a, b) SkScalarCeil((float)(a) * (b)) | 116 #define SkScalarMulCeil(a, b) SkScalarCeilToInt((float)(a) * (b)) |
115 /** Returns the product of a SkScalar and an int truncated to the next smaller i
nt | 117 /** Returns the product of a SkScalar and an int truncated to the next smaller i
nt |
116 */ | 118 */ |
117 #define SkScalarMulFloor(a, b) SkScalarFloor((float)(a) * (b)) | 119 #define SkScalarMulFloor(a, b) SkScalarFloorToInt((float)(a) * (b)) |
118 /** Returns the quotient of two SkScalars (a/b) | 120 /** Returns the quotient of two SkScalars (a/b) |
119 */ | 121 */ |
120 #define SkScalarDiv(a, b) ((float)(a) / (b)) | 122 #define SkScalarDiv(a, b) ((float)(a) / (b)) |
121 /** Returns the mod of two SkScalars (a mod b) | 123 /** Returns the mod of two SkScalars (a mod b) |
122 */ | 124 */ |
123 #define SkScalarMod(x,y) sk_float_mod(x,y) | 125 #define SkScalarMod(x,y) sk_float_mod(x,y) |
124 /** Returns the product of the first two arguments, divided by the third argumen
t | 126 /** Returns the product of the first two arguments, divided by the third argumen
t |
125 */ | 127 */ |
126 #define SkScalarMulDiv(a, b, c) ((float)(a) * (b) / (c)) | 128 #define SkScalarMulDiv(a, b, c) ((float)(a) * (b) / (c)) |
127 /** Returns the multiplicative inverse of the SkScalar (1/x) | 129 /** Returns the multiplicative inverse of the SkScalar (1/x) |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
161 #define SkScalarLog(x) (float)sk_float_log(x) | 163 #define SkScalarLog(x) (float)sk_float_log(x) |
162 | 164 |
163 inline SkScalar SkMaxScalar(SkScalar a, SkScalar b) { return a > b ? a : b; } | 165 inline SkScalar SkMaxScalar(SkScalar a, SkScalar b) { return a > b ? a : b; } |
164 inline SkScalar SkMinScalar(SkScalar a, SkScalar b) { return a < b ? a : b; } | 166 inline SkScalar SkMinScalar(SkScalar a, SkScalar b) { return a < b ? a : b; } |
165 | 167 |
166 static inline bool SkScalarIsInt(SkScalar x) { | 168 static inline bool SkScalarIsInt(SkScalar x) { |
167 return x == (float)(int)x; | 169 return x == (float)(int)x; |
168 } | 170 } |
169 | 171 |
170 // DEPRECATED : use ToInt or ToScalar variant | 172 // DEPRECATED : use ToInt or ToScalar variant |
171 #define SkScalarFloor(x) SkScalarFloorToInt(x) | 173 #ifdef SK_SUPPORT_DEPRECATED_SCALARROUND |
172 #define SkScalarCeil(x) SkScalarCeilToInt(x) | 174 # define SkScalarFloor(x) SkScalarFloorToInt(x) |
173 #define SkScalarRound(x) SkScalarRoundToInt(x) | 175 # define SkScalarCeil(x) SkScalarCeilToInt(x) |
| 176 # define SkScalarRound(x) SkScalarRoundToInt(x) |
| 177 #endif |
174 | 178 |
175 /** | 179 /** |
176 * Returns -1 || 0 || 1 depending on the sign of value: | 180 * Returns -1 || 0 || 1 depending on the sign of value: |
177 * -1 if x < 0 | 181 * -1 if x < 0 |
178 * 0 if x == 0 | 182 * 0 if x == 0 |
179 * 1 if x > 0 | 183 * 1 if x > 0 |
180 */ | 184 */ |
181 static inline int SkScalarSignAsInt(SkScalar x) { | 185 static inline int SkScalarSignAsInt(SkScalar x) { |
182 return x < 0 ? -1 : (x > 0); | 186 return x < 0 ? -1 : (x > 0); |
183 } | 187 } |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
238 SkASSERT(n >= 0); | 242 SkASSERT(n >= 0); |
239 for (int i = 0; i < n; ++i) { | 243 for (int i = 0; i < n; ++i) { |
240 if (a[i] != b[i]) { | 244 if (a[i] != b[i]) { |
241 return false; | 245 return false; |
242 } | 246 } |
243 } | 247 } |
244 return true; | 248 return true; |
245 } | 249 } |
246 | 250 |
247 #endif | 251 #endif |
OLD | NEW |