blob: 5fc62e09f7917f34a5af366c2fe5e209ecea4456 [file] [log] [blame]
Matt Sarettcdc651d2017-03-30 12:41:48 -04001/*
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);
Matt Sarette6844832017-04-03 10:35:42 -040020 sk_sp<SkImage> apply(const SkBitmap& bitmap);
Matt Sarett6d72ed92017-04-10 16:35:33 -040021 sk_sp<SkColorFilter> apply(const SkColorFilter* shader);
Matt Sarettcdc651d2017-03-30 12:41:48 -040022 const SkPaint* apply(const SkPaint* src);
23 const SkPaint& apply(const SkPaint& src);
24 void apply(SkColor dst[], const SkColor src[], int n);
Matt Sarett6d72ed92017-04-10 16:35:33 -040025 SkColor apply(SkColor srgb);
Matt Sarettcdc651d2017-03-30 12:41:48 -040026
Matt Sarette22a6a22017-04-12 16:26:21 -040027 sk_sp<SkColorSpace> dst() const { return fDst; }
28
Matt Sarettcdc651d2017-03-30 12:41:48 -040029private:
Matt Sarettcdc651d2017-03-30 12:41:48 -040030 sk_sp<SkShader> apply(const SkShader* shader);
31
32 SkColorSpaceXformer() {}
33
34 sk_sp<SkColorSpace> fDst;
35 std::unique_ptr<SkColorSpaceXform> fFromSRGB;
36 SkPaint fDstPaint;
37};
38
39#endif