Index: src/core/SkMath.cpp |
diff --git a/src/core/SkMath.cpp b/src/core/SkMath.cpp |
index aeacebecd4549a57fdc1bf92fc4506e5a51ca549..e33fe55e015a26f684424efcd8c5820b25c23cd7 100644 |
--- a/src/core/SkMath.cpp |
+++ b/src/core/SkMath.cpp |
@@ -174,116 +174,3 @@ float SkScalarSinCos(float radians, float* cosValue) { |
} |
return sinValue; |
} |
- |
-#define INTERP_SINTABLE |
-#define BUILD_TABLE_AT_RUNTIMEx |
- |
-#define kTableSize 256 |
- |
-#ifdef BUILD_TABLE_AT_RUNTIME |
- static uint16_t gSkSinTable[kTableSize]; |
- |
- static void build_sintable(uint16_t table[]) { |
- for (int i = 0; i < kTableSize; i++) { |
- double rad = i * 3.141592653589793 / (2*kTableSize); |
- double val = sin(rad); |
- int ival = (int)(val * SK_Fixed1); |
- table[i] = SkToU16(ival); |
- } |
- } |
-#else |
- #include "SkSinTable.h" |
-#endif |
- |
-#define SK_Fract1024SizeOver2PI 0x28BE60 /* floatToFract(1024 / 2PI) */ |
- |
-#ifdef INTERP_SINTABLE |
-static SkFixed interp_table(const uint16_t table[], int index, int partial255) { |
- SkASSERT((unsigned)index < kTableSize); |
- SkASSERT((unsigned)partial255 <= 255); |
- |
- SkFixed lower = table[index]; |
- SkFixed upper = (index == kTableSize - 1) ? SK_Fixed1 : table[index + 1]; |
- |
- SkASSERT(lower < upper); |
- SkASSERT(lower >= 0); |
- SkASSERT(upper <= SK_Fixed1); |
- |
- partial255 += (partial255 >> 7); |
- return lower + ((upper - lower) * partial255 >> 8); |
-} |
-#endif |
- |
-SkFixed SkFixedSinCos(SkFixed radians, SkFixed* cosValuePtr) { |
- SkASSERT(SK_ARRAY_COUNT(gSkSinTable) == kTableSize); |
- |
-#ifdef BUILD_TABLE_AT_RUNTIME |
- static bool gFirstTime = true; |
- if (gFirstTime) { |
- build_sintable(gSinTable); |
- gFirstTime = false; |
- } |
-#endif |
- |
- // make radians positive |
- SkFixed sinValue, cosValue; |
- int32_t cosSign = 0; |
- int32_t sinSign = SkExtractSign(radians); |
- radians = SkApplySign(radians, sinSign); |
- // scale it to 0...1023 ... |
- |
-#ifdef INTERP_SINTABLE |
- radians = SkMulDiv(radians, 2 * kTableSize * 256, SK_FixedPI); |
- int findex = radians & (kTableSize * 256 - 1); |
- int index = findex >> 8; |
- int partial = findex & 255; |
- sinValue = interp_table(gSkSinTable, index, partial); |
- |
- findex = kTableSize * 256 - findex - 1; |
- index = findex >> 8; |
- partial = findex & 255; |
- cosValue = interp_table(gSkSinTable, index, partial); |
- |
- int quad = ((unsigned)radians / (kTableSize * 256)) & 3; |
-#else |
- radians = SkMulDiv(radians, 2 * kTableSize, SK_FixedPI); |
- int index = radians & (kTableSize - 1); |
- |
- if (index == 0) { |
- sinValue = 0; |
- cosValue = SK_Fixed1; |
- } else { |
- sinValue = gSkSinTable[index]; |
- cosValue = gSkSinTable[kTableSize - index]; |
- } |
- int quad = ((unsigned)radians / kTableSize) & 3; |
-#endif |
- |
- if (quad & 1) { |
- SkTSwap<SkFixed>(sinValue, cosValue); |
- } |
- if (quad & 2) { |
- sinSign = ~sinSign; |
- } |
- if (((quad - 1) & 2) == 0) { |
- cosSign = ~cosSign; |
- } |
- |
- // restore the sign for negative angles |
- sinValue = SkApplySign(sinValue, sinSign); |
- cosValue = SkApplySign(cosValue, cosSign); |
- |
-#ifdef SK_DEBUG |
- if (1) { |
- SkFixed sin2 = SkFixedMul(sinValue, sinValue); |
- SkFixed cos2 = SkFixedMul(cosValue, cosValue); |
- int diff = cos2 + sin2 - SK_Fixed1; |
- SkASSERT(SkAbs32(diff) <= 7); |
- } |
-#endif |
- |
- if (cosValuePtr) { |
- *cosValuePtr = cosValue; |
- } |
- return sinValue; |
-} |