aboutsummaryrefslogtreecommitdiffhomepage
path: root/include
diff options
context:
space:
mode:
authorGravatar reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-03-07 21:47:41 +0000
committerGravatar reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-03-07 21:47:41 +0000
commit4bc0a9db18d58698057b8f38a6f21537aca4ddcf (patch)
tree76a2fc3e9fb8ceea5281164733605eccba5ca7bf /include
parentb372942bbc842b5728cbc8e9dd024928a793846a (diff)
use higher precision (64bit) fixed-point for matrix proc
Review URL: https://codereview.appspot.com/5772044 git-svn-id: http://skia.googlecode.com/svn/trunk@3336 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'include')
-rw-r--r--include/core/SkFixed.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/include/core/SkFixed.h b/include/core/SkFixed.h
index 0af5d9ddd4..2040f14de8 100644
--- a/include/core/SkFixed.h
+++ b/include/core/SkFixed.h
@@ -264,4 +264,20 @@ inline bool SkFixedNearlyZero(SkFixed x, SkFixed tolerance = SK_FixedNearlyZero)
#define SkFixedMulAdd(x, y, a) (SkFixedMul(x, y) + (a))
#endif
+///////////////////////////////////////////////////////////////////////////////
+
+typedef int64_t SkFixed48;
+
+#define SkIntToFixed48(x) ((SkFixed48)(x) << 48)
+#define SkFixed48ToInt(x) ((int)((x) >> 48))
+#define SkFixedToFixed48(x) ((SkFixed48)(x) << 32)
+#define SkFixed48ToFixed(x) ((SkFixed)((x) >> 32))
+#define SkFloatToFixed48(x) ((SkFixed48)((x) * (65536.0f * 65536.0f * 65536.0f)))
+
+#ifdef SK_SCALAR_IS_FLOAT
+ #define SkScalarToFixed48(x) SkFloatToFixed48(x)
+#else
+ #define SkScalarToFixed48(x) SkFixedToFixed48(x)
+#endif
+
#endif