1/*
2 * Copyright 2017 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#ifndef SkColorSpaceXformer_DEFINED
9#define SkColorSpaceXformer_DEFINED
10
11#include "SkColorSpaceXform.h"
12#include "SkImage.h"
13#include "SkShader.h"
14
15class SkColorSpaceXformer : public SkNoncopyable {
16public:
17    static std::unique_ptr<SkColorSpaceXformer> Make(sk_sp<SkColorSpace> dst);
18
19    sk_sp<SkImage> apply(const SkImage* src);
20    sk_sp<SkImage> apply(const SkBitmap& bitmap);
21    SkPaint apply(const SkPaint& src);
22    void apply(SkColor dst[], const SkColor src[], int n);
23
24private:
25    SkColor apply(SkColor srgb);
26    sk_sp<SkShader> apply(const SkShader* shader);
27
28    SkColorSpaceXformer() {}
29
30    sk_sp<SkColorSpace>                fDst;
31    std::unique_ptr<SkColorSpaceXform> fFromSRGB;
32};
33
34#endif
35