chromium/third_party/skia/include/core/SkColorSpace.h

/*
 * Copyright 2016 Google Inc.
 *
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */

#ifndef SkColorSpace_DEFINED
#define SkColorSpace_DEFINED

#include "include/core/SkRefCnt.h"
#include "include/core/SkTypes.h"
#include "include/private/base/SkFixed.h"
#include "include/private/base/SkOnce.h"
#include "modules/skcms/skcms.h"

#include <cstddef>
#include <cstdint>

class SkData;

/**
 *  Describes a color gamut with primaries and a white point.
 */
struct SK_API SkColorSpacePrimaries {};

namespace SkNamedTransferFn {

// Like SkNamedGamut::kSRGB, keeping this bitwise exactly the same as skcms makes things fastest.
static constexpr skcms_TransferFunction kSRGB =;

static constexpr skcms_TransferFunction k2Dot2 =;

static constexpr skcms_TransferFunction kLinear =;

static constexpr skcms_TransferFunction kRec2020 =;

static constexpr skcms_TransferFunction kPQ =;

static constexpr skcms_TransferFunction kHLG =;

}  // namespace SkNamedTransferFn

namespace SkNamedGamut {

static constexpr skcms_Matrix3x3 kSRGB =;

static constexpr skcms_Matrix3x3 kAdobeRGB =;

static constexpr skcms_Matrix3x3 kDisplayP3 =;

static constexpr skcms_Matrix3x3 kRec2020 =;

static constexpr skcms_Matrix3x3 kXYZ =;

}  // namespace SkNamedGamut

class SK_API SkColorSpace : public SkNVRefCnt<SkColorSpace> {};

#endif