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