1685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com 2685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com/* 3685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com * Copyright 2006 The Android Open Source Project 4685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com * 5685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com * Use of this source code is governed by a BSD-style license that can be 6685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com * found in the LICENSE file. 7685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com */ 8685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com 9bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com 10bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com#ifndef SkFP_DEFINED 11bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com#define SkFP_DEFINED 12bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com 13bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com#include "SkMath.h" 14bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com 15bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com#ifdef SK_SCALAR_IS_FLOAT 16bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com 17bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com typedef float SkFP; 18bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com 19bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com #define SkScalarToFP(n) (n) 20bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com #define SkFPToScalar(n) (n) 21bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com #define SkIntToFP(n) SkIntToScalar(n) 22bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com #define SkFPRound(x) SkScalarRound(n) 23bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com #define SkFPCeil(x) SkScalarCeil(n) 24bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com #define SkFPFloor(x) SkScalarFloor(n) 25bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com 26bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com #define SkFPNeg(x) (-(x)) 27bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com #define SkFPAbs(x) SkScalarAbs(x) 28bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com #define SkFPAdd(a, b) ((a) + (b)) 29bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com #define SkFPSub(a, b) ((a) - (b)) 30bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com #define SkFPMul(a, b) ((a) * (b)) 31bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com #define SkFPMulInt(a, n) ((a) * (n)) 32bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com #define SkFPDiv(a, b) ((a) / (b)) 33bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com #define SkFPDivInt(a, n) ((a) / (n)) 34bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com #define SkFPInvert(x) SkScalarInvert(x) 35bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com #define SkFPSqrt(x) SkScalarSqrt(x) 3632296c486afda9a9726e3c8b1cc5d4b9adf0570areed@android.com #define SkFPCubeRoot(x) sk_float_pow(x, 0.3333333f) 37bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com 38bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com #define SkFPLT(a, b) ((a) < (b)) 39bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com #define SkFPLE(a, b) ((a) <= (b)) 40bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com #define SkFPGT(a, b) ((a) > (b)) 41bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com #define SkFPGE(a, b) ((a) >= (b)) 42bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com 43bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com#else // scalar is fixed 44bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com 45bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com #include "SkFloat.h" 46bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com 47bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com typedef int32_t SkFP; 48bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com 49bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com #define SkScalarToFP(n) SkFloat::SetShift(n, -16) 50bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com #define SkFPToScalar(n) SkFloat::GetShift(n, -16) 51bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com #define SkIntToFP(n) SkFloat::SetShift(n, 0) 52bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com #define SkFPRound(x) SkFloat::Round(x); 53bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com #define SkFPCeil(x) SkFloat::Ceil(); 54bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com #define SkFPFloor(x) SkFloat::Floor(); 55bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com 56bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com #define SkFPNeg(x) SkFloat::Neg(x) 57bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com #define SkFPAbs(x) SkFloat::Abs(x) 58bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com #define SkFPAdd(a, b) SkFloat::Add(a, b) 59bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com #define SkFPSub(a, b) SkFloat::Add(a, SkFloat::Neg(b)) 60bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com #define SkFPMul(a, b) SkFloat::Mul(a, b) 61bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com #define SkFPMulInt(a, n) SkFloat::MulInt(a, n) 62bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com #define SkFPDiv(a, b) SkFloat::Div(a, b) 63bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com #define SkFPDivInt(a, n) SkFloat::DivInt(a, n) 64bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com #define SkFPInvert(x) SkFloat::Invert(x) 65bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com #define SkFPSqrt(x) SkFloat::Sqrt(x) 66bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com #define SkFPCubeRoot(x) SkFloat::CubeRoot(x) 67bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com 68bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com #define SkFPLT(a, b) (SkFloat::Cmp(a, b) < 0) 69bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com #define SkFPLE(a, b) (SkFloat::Cmp(a, b) <= 0) 70bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com #define SkFPGT(a, b) (SkFloat::Cmp(a, b) > 0) 71bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com #define SkFPGE(a, b) (SkFloat::Cmp(a, b) >= 0) 72bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com 73bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com#endif 74bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com 75bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com#ifdef SK_DEBUG 76bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com void SkFP_UnitTest(); 77bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com#endif 78bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com 79bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com#endif 80