1c9bc81434adc0c0ea6012167fbda0e131548e683Mike Klein/*
2c9bc81434adc0c0ea6012167fbda0e131548e683Mike Klein * Copyright 2017 Google Inc.
3c9bc81434adc0c0ea6012167fbda0e131548e683Mike Klein *
4c9bc81434adc0c0ea6012167fbda0e131548e683Mike Klein * Use of this source code is governed by a BSD-style license that can be
5c9bc81434adc0c0ea6012167fbda0e131548e683Mike Klein * found in the LICENSE file.
6c9bc81434adc0c0ea6012167fbda0e131548e683Mike Klein */
7c9bc81434adc0c0ea6012167fbda0e131548e683Mike Klein
8c9bc81434adc0c0ea6012167fbda0e131548e683Mike Klein#include "SkColorSpace.h"
9c9bc81434adc0c0ea6012167fbda0e131548e683Mike Klein#include "SkToSRGBColorFilter.h"
10c9bc81434adc0c0ea6012167fbda0e131548e683Mike Klein#include "Test.h"
11c9bc81434adc0c0ea6012167fbda0e131548e683Mike Klein
12c9bc81434adc0c0ea6012167fbda0e131548e683Mike Klein
13c9bc81434adc0c0ea6012167fbda0e131548e683Mike KleinDEF_TEST(SkToSRGBColorFilter, r) {
14c9bc81434adc0c0ea6012167fbda0e131548e683Mike Klein
15c9bc81434adc0c0ea6012167fbda0e131548e683Mike Klein    // sRGB -> sRGB is a no-op.
16c9bc81434adc0c0ea6012167fbda0e131548e683Mike Klein    REPORTER_ASSERT(r, nullptr == SkToSRGBColorFilter::Make(SkColorSpace::MakeSRGB()));
17c9bc81434adc0c0ea6012167fbda0e131548e683Mike Klein
18c9bc81434adc0c0ea6012167fbda0e131548e683Mike Klein    // The transfer function matters just as much as the gamut.
19c9bc81434adc0c0ea6012167fbda0e131548e683Mike Klein    REPORTER_ASSERT(r, nullptr != SkToSRGBColorFilter::Make(SkColorSpace::MakeSRGBLinear()));
20c9bc81434adc0c0ea6012167fbda0e131548e683Mike Klein
21c9bc81434adc0c0ea6012167fbda0e131548e683Mike Klein    // We generally interpret nullptr source spaces as sRGB.  See also chromium:787718.
22c9bc81434adc0c0ea6012167fbda0e131548e683Mike Klein    REPORTER_ASSERT(r, nullptr == SkToSRGBColorFilter::Make(nullptr));
23c9bc81434adc0c0ea6012167fbda0e131548e683Mike Klein
24c9bc81434adc0c0ea6012167fbda0e131548e683Mike Klein    // Here's a realistic conversion.
25c9bc81434adc0c0ea6012167fbda0e131548e683Mike Klein    auto dci_p3 = SkColorSpace::MakeRGB(SkColorSpace::kLinear_RenderTargetGamma,
26c9bc81434adc0c0ea6012167fbda0e131548e683Mike Klein                                        SkColorSpace::kDCIP3_D65_Gamut);
27c9bc81434adc0c0ea6012167fbda0e131548e683Mike Klein    REPORTER_ASSERT(r, nullptr != SkToSRGBColorFilter::Make(dci_p3));
28c9bc81434adc0c0ea6012167fbda0e131548e683Mike Klein
29c9bc81434adc0c0ea6012167fbda0e131548e683Mike Klein}
30