aboutsummaryrefslogtreecommitdiffhomepage
path: root/include/core/SkScalar.h
diff options
context:
space:
mode:
authorGravatar bungeman <bungeman@google.com>2016-03-10 13:39:30 -0800
committerGravatar Commit bot <commit-bot@chromium.org>2016-03-10 13:39:30 -0800
commitdd67e3d1b3c1e9f400f1ddd37e9e52c8a2952eec (patch)
tree102da412fead8502ad31ed7b16852a12f03a721c /include/core/SkScalar.h
parentc43c35fb7ed459d86a514fe6c058352caa55b7f4 (diff)
Add SkScalarTruncToScalar and speed up SkScalarFraction.
Diffstat (limited to 'include/core/SkScalar.h')
-rw-r--r--include/core/SkScalar.h9
1 files changed, 7 insertions, 2 deletions
diff --git a/include/core/SkScalar.h b/include/core/SkScalar.h
index 84b53c8575..c154609fcb 100644
--- a/include/core/SkScalar.h
+++ b/include/core/SkScalar.h
@@ -38,6 +38,7 @@ typedef float SkScalar;
#define SkScalarFloorToScalar(x) sk_float_floor(x)
#define SkScalarCeilToScalar(x) sk_float_ceil(x)
#define SkScalarRoundToScalar(x) sk_float_floor((x) + 0.5f)
+#define SkScalarTruncToScalar(x) sk_float_trunc(x)
#define SkScalarFloorToInt(x) sk_float_floor2int(x)
#define SkScalarCeilToInt(x) sk_float_ceil2int(x)
@@ -46,7 +47,6 @@ typedef float SkScalar;
#define SkScalarAbs(x) sk_float_abs(x)
#define SkScalarCopySign(x, y) sk_float_copysign(x, y)
#define SkScalarMod(x, y) sk_float_mod(x,y)
-#define SkScalarFraction(x) sk_float_mod(x, 1.0f)
#define SkScalarSqrt(x) sk_float_sqrt(x)
#define SkScalarPow(b, e) sk_float_pow(b, e)
@@ -81,6 +81,7 @@ typedef double SkScalar;
#define SkScalarFloorToScalar(x) floor(x)
#define SkScalarCeilToScalar(x) ceil(x)
#define SkScalarRoundToScalar(x) floor((x) + 0.5)
+#define SkScalarTruncToScalar(x) trunc(x)
#define SkScalarFloorToInt(x) (int)floor(x)
#define SkScalarCeilToInt(x) (int)ceil(x)
@@ -89,7 +90,6 @@ typedef double SkScalar;
#define SkScalarAbs(x) abs(x)
#define SkScalarCopySign(x, y) copysign(x, y)
#define SkScalarMod(x, y) fmod(x,y)
-#define SkScalarFraction(x) fmod(x, 1.0)
#define SkScalarSqrt(x) sqrt(x)
#define SkScalarPow(b, e) pow(b, e)
@@ -168,6 +168,11 @@ static inline int SkDScalarRoundToInt(SkScalar x) {
return (int)floor(xx);
}
+/** Returns the fractional part of the scalar. */
+static inline SkScalar SkScalarFraction(SkScalar x) {
+ return x - SkScalarTruncToScalar(x);
+}
+
static inline SkScalar SkScalarClampMax(SkScalar x, SkScalar max) {
x = SkTMin(x, max);
x = SkTMax<SkScalar>(x, 0);