| Index: include/core/SkMath.h
|
| ===================================================================
|
| --- include/core/SkMath.h (revision 8804)
|
| +++ include/core/SkMath.h (working copy)
|
| @@ -139,7 +139,7 @@
|
| * Return a*b/((1 << shift) - 1), rounding any fractional bits.
|
| * Only valid if a and b are unsigned and <= 32767 and shift is > 0 and <= 8
|
| */
|
| -static inline unsigned SkMul16ShiftRound(unsigned a, unsigned b, int shift) {
|
| +static inline unsigned SkMul16ShiftRound(U16CPU a, U16CPU b, int shift) {
|
| SkASSERT(a <= 32767);
|
| SkASSERT(b <= 32767);
|
| SkASSERT(shift > 0 && shift <= 8);
|
| @@ -148,12 +148,12 @@
|
| }
|
|
|
| /**
|
| - * Return a*b/255, rounding any fractional bits. Only valid if both
|
| - * a and b are 0..255
|
| + * Return a*b/255, rounding any fractional bits.
|
| + * Only valid if a and b are unsigned and <= 32767.
|
| */
|
| -static inline U8CPU SkMulDiv255Round(U8CPU a, U8CPU b) {
|
| - SkASSERT((uint8_t)a == a);
|
| - SkASSERT((uint8_t)b == b);
|
| +static inline U8CPU SkMulDiv255Round(U16CPU a, U16CPU b) {
|
| + SkASSERT(a <= 32767);
|
| + SkASSERT(b <= 32767);
|
| unsigned prod = SkMulS16(a, b) + 128;
|
| return (prod + (prod >> 8)) >> 8;
|
| }
|
|
|