Index: src/core/SkPMFloat.h |
diff --git a/src/core/SkPMFloat.h b/src/core/SkPMFloat.h |
index 4a5621f5b3cc62cf6ae11b5173d8f449fcce10ef..4a2235dd75867b156d3a026b8559923aaf929fd2 100644 |
--- a/src/core/SkPMFloat.h |
+++ b/src/core/SkPMFloat.h |
@@ -28,11 +28,11 @@ public: |
static SkPMFloat FromARGB(float a, float r, float g, float b) { return SkPMFloat(a,r,g,b); } |
static SkPMFloat FromOpaqueColor(SkColor c); // Requires c's alpha == 0xFF. |
- Sk4f alphas() const; // argb -> aaaa, generally faster than the equivalent Sk4f(this->a()). |
+ Sk4f alphas() const { return Sk4f(this->a()); } |
// Uninitialized. |
SkPMFloat() {} |
- explicit SkPMFloat(SkPMColor); |
+ explicit SkPMFloat(SkPMColor c) { *this = Sk4f::FromBytes((uint8_t*)&c) * Sk4f(1.0f/255); } |
SkPMFloat(float a, float r, float g, float b) |
#ifdef SK_PMCOLOR_IS_RGBA |
: INHERITED(r,g,b,a) {} |
@@ -47,7 +47,11 @@ public: |
float g() const { return this->kth<SK_G32_SHIFT / 8>(); } |
float b() const { return this->kth<SK_B32_SHIFT / 8>(); } |
- SkPMColor round() const; // Rounds from [0.0f, 1.0f] to [0, 255], clamping if out of range. |
+ SkPMColor round() const { |
+ SkPMColor c; |
+ (*this * Sk4f(255) + Sk4f(0.5f)).toBytes((uint8_t*)&c); |
+ return c; |
+ } |
bool isValid() const { |
return this->a() >= 0 && this->a() <= 1 |
@@ -62,17 +66,4 @@ private: |
} // namespace |
-#ifdef SKNX_NO_SIMD |
- // Platform implementations of SkPMFloat assume Sk4f uses SSE or NEON. _none is generic. |
- #include "../opts/SkPMFloat_none.h" |
-#else |
- #if SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE2 |
- #include "../opts/SkPMFloat_sse.h" |
- #elif defined(SK_ARM_HAS_NEON) |
- #include "../opts/SkPMFloat_neon.h" |
- #else |
- #include "../opts/SkPMFloat_none.h" |
- #endif |
-#endif |
- |
#endif//SkPM_DEFINED |