26#include <initializer_list>
29#if defined(SK_GRAPHITE)
37 return std::get<0>(codec->getImage());
48#if defined(SK_GRAPHITE)
49 if (
auto recorder = canvas->
recorder()) {
50 xform = orig->makeColorSpace(recorder, colorSpace, {});
55 xform = orig->makeColorSpace(direct, colorSpace);
65 if (colorSpace->gammaIsLinear()) {
68 return xform->reinterpretColorSpace(std::move(srgb));
79 if (!opaqueImage || !premulImage) {
80 *errorMsg =
"Failed to load images. Did you forget to set the resourcePath?";
84 canvas->drawImage(opaqueImage, 0.0f, 0.0f);
85 canvas->drawImage(
make_color_space(opaqueImage, wideGamut, canvas), 128.0f, 0.0f);
86 canvas->drawImage(
make_color_space(opaqueImage, wideGamutLinear, canvas), 256.0f, 0.0f);
87 canvas->drawImage(premulImage, 0.0f, 128.0f);
88 canvas->drawImage(
make_color_space(premulImage, wideGamut, canvas), 128.0f, 128.0f);
89 canvas->drawImage(
make_color_space(premulImage, wideGamutLinear, canvas), 256.0f, 128.0f);
90 canvas->translate(0.0f, 256.0f);
95 canvas->drawImage(opaqueImage, 0.0f, 0.0f);
96 canvas->drawImage(
make_color_space(opaqueImage, wideGamut, canvas), 128.0f, 0.0f);
97 canvas->drawImage(
make_color_space(opaqueImage, wideGamutLinear, canvas), 256.0f, 0.0f);
98 canvas->drawImage(premulImage, 0.0f, 128.0f);
99 canvas->drawImage(
make_color_space(premulImage, wideGamut, canvas), 128.0f, 128.0f);
100 canvas->drawImage(
make_color_space(premulImage, wideGamutLinear, canvas), 256.0f, 128.0f);
113 for (
bool lazy : {
true,
false}) {
114 for (
size_t j = 0; j < std::size(
images); ++j) {
122 canvas->drawImage(
image, 0, 0);
132#if defined(SK_GRAPHITE)
133 if (
auto recorder = canvas->recorder()) {
142 if (!lazy || image565->isTextureBacked() || image565->makeRasterImage()) {
143 canvas->drawImage(image565, 128, 0);
150#if defined(SK_GRAPHITE)
151 if (
auto recorder = canvas->recorder()) {
161 if (!lazy || imageGray->isTextureBacked() || imageGray->makeRasterImage()) {
162 canvas->drawImage(imageGray, 256, 0);
166#if defined(SK_GRAPHITE)
167 if (
auto recorder = canvas->recorder()) {
179 canvas->translate(0, 128);
202 *errorMsg =
"Failed to load image. Did you forget to set the resourcePath?";
207 canvas->drawImage(
image, 0.0f, 0.0f);
211 canvas->translate(0.0f, 128.0f);
215 canvas->drawImage(
image, 0.0f, 0.0f);
219 canvas->translate(0.0f, 128.0f);
225#if defined(SK_GRAPHITE)
226 if (
auto recorder = canvas->recorder()) {
237 canvas->drawImage(
image, 0.0f, 0.0f);
240#if defined(SK_GRAPHITE)
241 if (
auto recorder = canvas->recorder()) {
249 canvas->drawImage(gpuImage->reinterpretColorSpace(srgb), 256.0f, 0.0f);
static GrDirectContext * GrAsDirectContext(GrContext_Base *base)
static sk_sp< SkColorSpace > rec2020()
sk_sp< SkData > GetResourceAsData(const char *resource)
@ kGray_8_SkColorType
pixel with grayscale level in 8-bit byte
@ kRGB_565_SkColorType
pixel with 5 bits red, 6 bits green, 5 bits blue, in 16-bit word
constexpr SkColor SK_ColorWHITE
virtual GrRecordingContext * recordingContext() const
virtual skgpu::graphite::Recorder * recorder() const
static std::unique_ptr< SkCodec > MakeFromData(sk_sp< SkData >, SkSpan< const SkCodecs::Decoder > decoders, SkPngChunkReader *=nullptr)
static sk_sp< SkColorSpace > MakeSRGB()
static sk_sp< SkColorSpace > MakeRGB(const skcms_TransferFunction &transferFn, const skcms_Matrix3x3 &toXYZ)
static sk_sp< SkColorSpace > MakeSRGBLinear()
sk_sp< SkImage > makeRasterImage(GrDirectContext *, CachingHint cachingHint=kDisallow_CachingHint) const
virtual sk_sp< SkImage > makeColorSpace(GrDirectContext *direct, sk_sp< SkColorSpace > target) const =0
virtual sk_sp< SkImage > makeColorTypeAndColorSpace(GrDirectContext *direct, SkColorType targetColorType, sk_sp< SkColorSpace > targetCS) const =0
sk_sp< SkImage > reinterpretColorSpace(sk_sp< SkColorSpace > newColorSpace) const
sk_sp< SkColorSpace > refColorSpace() const
#define DEF_SIMPLE_GM_BG(NAME, CANVAS, W, H, BGCOLOR)
#define DEF_SIMPLE_GM_CAN_FAIL(NAME, CANVAS, ERR_MSG, W, H)
sk_sp< SkImage > make_raster_image(const char *path)
sk_sp< SkImage > make_color_space(sk_sp< SkImage > orig, sk_sp< SkColorSpace > colorSpace, SkCanvas *canvas)
std::array< MockImage, 3 > images
SK_API sk_sp< SkImage > TextureFromImage(GrDirectContext *, const SkImage *, skgpu::Mipmapped=skgpu::Mipmapped::kNo, skgpu::Budgeted=skgpu::Budgeted::kYes)
static constexpr skcms_Matrix3x3 kAdobeRGB
static constexpr skcms_Matrix3x3 kRec2020
static constexpr skcms_TransferFunction kSRGB
static sk_sp< SkColorFilter > spin(sk_sp< SkColorFilter > cf)