| Index: src/opts/SkPMFloat_none.h
|
| diff --git a/src/opts/SkPMFloat_none.h b/src/opts/SkPMFloat_none.h
|
| index 17c76d90f4a505983d1ec21ff3b342e80c3ffcb8..d87258914f55dd75492d82ac0cc634ebb3b29b6c 100644
|
| --- a/src/opts/SkPMFloat_none.h
|
| +++ b/src/opts/SkPMFloat_none.h
|
| @@ -7,16 +7,19 @@
|
|
|
| namespace { // See SkPMFloat.h
|
|
|
| -inline SkPMFloat::SkPMFloat(SkPMColor c) {
|
| - float inv255 = 1.0f/255;
|
| - *this = SkPMFloat::FromARGB(SkGetPackedA32(c) * inv255,
|
| - SkGetPackedR32(c) * inv255,
|
| - SkGetPackedG32(c) * inv255,
|
| - SkGetPackedB32(c) * inv255);
|
| +template <int kBias>
|
| +inline SkPMFloat<kBias>::SkPMFloat(SkPMColor c) {
|
| + float scale = (kBias == 1) ? (1.0f/255) : 1;
|
| + *this = SkPMFloat::FromARGB(SkGetPackedA32(c) * scale,
|
| + SkGetPackedR32(c) * scale,
|
| + SkGetPackedG32(c) * scale,
|
| + SkGetPackedB32(c) * scale);
|
| SkASSERT(this->isValid());
|
| }
|
|
|
| -inline SkPMColor SkPMFloat::round() const {
|
| +template <int kBias>
|
| +inline SkPMColor SkPMFloat<kBias>::round() const {
|
| + float scale = (kBias == 1) ? 255 : 1;
|
| float a = this->a(),
|
| r = this->r(),
|
| g = this->g(),
|
| @@ -25,22 +28,24 @@ inline SkPMColor SkPMFloat::round() const {
|
| r = r < 0 ? 0 : (r > 1 ? 1 : r);
|
| g = g < 0 ? 0 : (g > 1 ? 1 : g);
|
| b = b < 0 ? 0 : (b > 1 ? 1 : b);
|
| - SkPMColor c = SkPackARGB32(255*a+0.5f, 255*r+0.5f, 255*g+0.5f, 255*b+0.5f);
|
| + SkPMColor c = SkPackARGB32(scale*a+0.5f, scale*r+0.5f, scale*g+0.5f, scale*b+0.5f);
|
| SkPMColorAssert(c);
|
| return c;
|
| }
|
|
|
| -inline Sk4f SkPMFloat::alphas() const {
|
| +template <int kBias>
|
| +inline Sk4f SkPMFloat<kBias>::alphas() const {
|
| return Sk4f(this->a());
|
| }
|
|
|
| -inline SkPMFloat SkPMFloat::FromOpaqueColor(SkColor c) {
|
| +template <int kBias>
|
| +inline SkPMFloat<kBias> SkPMFloat<kBias>::FromOpaqueColor(SkColor c) {
|
| SkASSERT(SkColorGetA(c) == 0xFF);
|
| - float inv255 = 1.0f / 255;
|
| - SkPMFloat pmf = SkPMFloat::FromARGB(1.0f,
|
| - SkColorGetR(c) * inv255,
|
| - SkColorGetG(c) * inv255,
|
| - SkColorGetB(c) * inv255);
|
| + float scale = (kBias == 1) ? (1.0f/255) : 1;
|
| + SkPMFloat pmf = SkPMFloat::FromARGB(kBias,
|
| + SkColorGetR(c) * scale,
|
| + SkColorGetG(c) * scale,
|
| + SkColorGetB(c) * scale);
|
| SkASSERT(pmf.isValid());
|
| return pmf;
|
| }
|
|
|