diff options
author | reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2012-08-07 21:35:13 +0000 |
---|---|---|
committer | reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2012-08-07 21:35:13 +0000 |
commit | 4b163ed2c22facbe8891616874ae07ba7827d9c9 (patch) | |
tree | a6c54760e3ded8456cc4a410beb9da4a5bfeabcf /src/core/SkFDot6.h | |
parent | 2ddff9388694263c7be9347de7eb768cd0847997 (diff) |
Privatization:
move SkFDot.h to private
move parts of SkMath.h into SkMathPriv.h
Review URL: https://codereview.appspot.com/6461045
git-svn-id: http://skia.googlecode.com/svn/trunk@4997 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/core/SkFDot6.h')
-rw-r--r-- | src/core/SkFDot6.h | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/src/core/SkFDot6.h b/src/core/SkFDot6.h new file mode 100644 index 0000000000..aa588572f8 --- /dev/null +++ b/src/core/SkFDot6.h @@ -0,0 +1,58 @@ + +/* + * Copyright 2006 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + + +#ifndef SkFDot6_DEFINED +#define SkFDot6_DEFINED + +#include "SkMath.h" + +typedef int32_t SkFDot6; + +#define SK_FDot6One (64) +#define SK_FDot6Half (32) + +#ifdef SK_DEBUG + inline SkFDot6 SkIntToFDot6(S16CPU x) { + SkASSERT(SkToS16(x) == x); + return x << 6; + } +#else + #define SkIntToFDot6(x) ((x) << 6) +#endif + +#define SkFDot6Floor(x) ((x) >> 6) +#define SkFDot6Ceil(x) (((x) + 63) >> 6) +#define SkFDot6Round(x) (((x) + 32) >> 6) + +#define SkFixedToFDot6(x) ((x) >> 10) + +inline SkFixed SkFDot6ToFixed(SkFDot6 x) { + SkASSERT((x << 10 >> 10) == x); + + return x << 10; +} + +#ifdef SK_SCALAR_IS_FLOAT + #define SkScalarToFDot6(x) (SkFDot6)((x) * 64) +#else + #define SkScalarToFDot6(x) ((x) >> 10) +#endif + +inline SkFixed SkFDot6Div(SkFDot6 a, SkFDot6 b) { + SkASSERT(b != 0); + + if (a == (int16_t)a) { + return (a << 16) / b; + } else { + return SkFixedDiv(a, b); + } +} + +#endif + |