Index: src/core/SkColorSpaceXform.h |
diff --git a/src/core/SkColorSpaceXform.h b/src/core/SkColorSpaceXform.h |
index 0947e0848e5d46364bf0d59b8929446fc828f1a9..a9d26a77f867d4a48933d31ec7239d84b154b246 100644 |
--- a/src/core/SkColorSpaceXform.h |
+++ b/src/core/SkColorSpaceXform.h |
@@ -15,6 +15,7 @@ class SkColorSpaceXform : SkNoncopyable { |
public: |
typedef uint32_t RGBA32; |
+ typedef uint32_t BGRA32; |
typedef uint64_t RGBAF16; |
/** |
@@ -32,54 +33,26 @@ public: |
* The src is stored as RGBA (8888) and is treated as opaque. |
* TODO (msarett): Support non-opaque srcs. |
*/ |
- virtual void applyTo8888(SkPMColor* dst, const RGBA32* src, int len) const = 0; |
+ virtual void applyToRGBA(RGBA32* dst, const RGBA32* src, int len) const = 0; |
+ virtual void applyToBGRA(BGRA32* dst, const RGBA32* src, int len) const = 0; |
virtual void applyToF16(RGBAF16* dst, const RGBA32* src, int len) const = 0; |
virtual ~SkColorSpaceXform() {} |
}; |
template <SkColorSpace::GammaNamed Dst> |
-class SkFastXform : public SkColorSpaceXform { |
+class SkColorSpaceXform_Base : public SkColorSpaceXform { |
public: |
- void applyTo8888(SkPMColor* dst, const RGBA32* src, int len) const override; |
+ void applyToRGBA(RGBA32* dst, const RGBA32* src, int len) const override; |
+ void applyToBGRA(BGRA32* dst, const RGBA32* src, int len) const override; |
void applyToF16(RGBAF16* dst, const RGBA32* src, int len) const override; |
-private: |
- SkFastXform(const sk_sp<SkColorSpace>& srcSpace, const SkMatrix44& srcToDst, |
- const sk_sp<SkColorSpace>& dstSpace); |
- |
- static constexpr int kDstGammaTableSize = 1024; |
- |
- // May contain pointers into storage or pointers into precomputed tables. |
- const float* fSrcGammaTables[3]; |
- float fSrcGammaTableStorage[3 * 256]; |
- |
- float fSrcToDst[16]; |
- |
- // May contain pointers into storage or pointers into precomputed tables. |
- const uint8_t* fDstGammaTables[3]; |
- uint8_t fDstGammaTableStorage[3 * kDstGammaTableSize]; |
- |
- friend class SkColorSpaceXform; |
-}; |
- |
-/** |
- * Works for any valid src and dst profiles. |
- */ |
-// TODO (msarett): |
-// Merge with SkFastXform and delete this. SkFastXform can almost do everything that |
-// this does. |
-class SkDefaultXform : public SkColorSpaceXform { |
-public: |
- |
- void applyTo8888(SkPMColor* dst, const RGBA32* src, int len) const override; |
- void applyToF16(RGBAF16* dst, const RGBA32* src, int len) const override; |
+ static constexpr int kDstGammaTableSize = 1024; |
- static constexpr int kDstGammaTableSize = 1024; |
private: |
- SkDefaultXform(const sk_sp<SkColorSpace>& srcSpace, const SkMatrix44& srcToDst, |
- const sk_sp<SkColorSpace>& dstSpace); |
+ SkColorSpaceXform_Base(const sk_sp<SkColorSpace>& srcSpace, const SkMatrix44& srcToDst, |
+ const sk_sp<SkColorSpace>& dstSpace); |
sk_sp<SkColorLookUpTable> fColorLUT; |
@@ -87,12 +60,14 @@ private: |
const float* fSrcGammaTables[3]; |
float fSrcGammaTableStorage[3 * 256]; |
- const SkMatrix44 fSrcToDst; |
+ float fSrcToDst[16]; |
// May contain pointers into storage or pointers into precomputed tables. |
const uint8_t* fDstGammaTables[3]; |
uint8_t fDstGammaTableStorage[3 * kDstGammaTableSize]; |
+ mutable SkAutoMalloc fStorage; |
+ |
friend class SkColorSpaceXform; |
}; |