blob: 6d5aaacd6115537c70fdfbf63e7caf8331b2262a [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
27private:
Matt Sarettcdc651d2017-03-30 12:41:48 -040028 sk_sp<SkShader> apply(const SkShader* shader);
29
30 SkColorSpaceXformer() {}
31
32 sk_sp<SkColorSpace> fDst;
33 std::unique_ptr<SkColorSpaceXform> fFromSRGB;
34 SkPaint fDstPaint;
35};
36
37#endif