blob: ab72eba9ff7e21ddabf87d6f4bf3a05668ca4ec5 [file] [log] [blame]
Matt Sarett3928ff82017-06-06 10:11:34 -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 SkColorSpaceXformImageGenerator_DEFINED
9#define SkColorSpaceXformImageGenerator_DEFINED
10
11#include "SkImageGenerator.h"
12#include "SkImagePriv.h"
13
14class SkColorSpaceXformImageGenerator : public SkImageGenerator {
15public:
16
17 static std::unique_ptr<SkImageGenerator> Make(
18 const SkBitmap& src, sk_sp<SkColorSpace> dst, SkCopyPixelsMode);
19
20protected:
21 bool onGetPixels(const SkImageInfo& info, void* pixels, size_t rowBytes,
22 const Options& opts) override;
23
24#if SK_SUPPORT_GPU
Christopher Cameron77e96662017-07-08 01:47:47 -070025 sk_sp<GrTextureProxy> onGenerateTexture(GrContext*, const SkImageInfo&, const SkIPoint&,
26 SkTransferFunctionBehavior) override;
Stan Ilievba81af22017-06-08 15:16:53 -040027 TexGenType onCanGenerateTexture() const override {
28 return TexGenType::kExpensive;
29 }
Matt Sarett3928ff82017-06-06 10:11:34 -040030#endif
31
32private:
33 SkBitmap fSrc;
34 sk_sp<SkColorSpace> fDst;
35
Matt Sarettdc792702017-06-08 09:37:01 -040036 static std::unique_ptr<SkImageGenerator> Make(
37 const SkBitmap& src, sk_sp<SkColorSpace> dst, SkCopyPixelsMode, uint32_t id);
38 SkColorSpaceXformImageGenerator(const SkBitmap& src, sk_sp<SkColorSpace> dst, uint32_t id);
Matt Sarett3928ff82017-06-06 10:11:34 -040039
Brian Osmane5312072017-06-20 09:35:51 -040040 friend sk_sp<SkImage> SkMakeImageInColorSpace(const SkBitmap&, sk_sp<SkColorSpace>, uint32_t,
41 SkCopyPixelsMode);
Matt Sarett3928ff82017-06-06 10:11:34 -040042 typedef SkImageGenerator INHERITED;
43};
44
45#endif // SkColorSpaceXformImageGenerator_DEFINED