/* * Copyright 2017 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef SkColorSpaceXformer_DEFINED #define SkColorSpaceXformer_DEFINED #include "SkColor.h" #include "SkRefCnt.h" #include "SkTHash.h" class SkBitmap; class SkColorFilter; class SkColorSpace; class SkColorSpaceXform; class SkImage; class SkImageFilter; class SkPaint; class SkShader; class SkColorSpaceXformer : public SkNoncopyable { public: static std::unique_ptr Make(sk_sp dst); ~SkColorSpaceXformer(); sk_sp apply(const SkImage*); sk_sp apply(const SkBitmap&); sk_sp apply(const SkColorFilter*); sk_sp apply(const SkImageFilter*); sk_sp apply(const SkShader*); SkPaint apply(const SkPaint&); void apply(SkColor dst[], const SkColor src[], int n); SkColor apply(SkColor srgb); sk_sp dst() const { return fDst; } private: SkColorSpaceXformer() = default; sk_sp fDst; std::unique_ptr fFromSRGB; SkTHashMap> fFilterCache; }; #endif