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; |
} |