src/color_space.rs (21 lines of code) (raw):
// Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: MIT-0
// Permission is hereby granted, free of charge, to any person obtaining a copy of this
// software and associated documentation files (the "Software"), to deal in the Software
// without restriction, including without limitation the rights to use, copy, modify,
// merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so.
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
// PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
/// An enumeration of supported color models.
///
/// It includes:
/// * Colorimetry
/// * Gamma
/// * Range (headroom / footroom)
/// * Primaries
#[derive(Copy, Clone, Debug)]
#[repr(C)]
pub enum ColorSpace {
/// Gamma-corrected R'G'B'.
/// The gamma is the one defined in ITU-R Recommendation BT.709-6 page 3, item 1.2
/// The relationship between gamma-corrected component (C') and its linear value (C)
/// is the following one:
/// C' = 4.5 * C if C < 0.018,
/// 1.099 * pow(C, 0.45) - 0.099 otherwise.
Rgb,
/// YCbCr, ITU-R Recommendation BT.601 (standard video system)
Bt601,
/// YCbCr, ITU-R Recommendation BT.709 (CSC systems)
Bt709,
/// YCbCr, BT.601 (full range)
Bt601FR,
/// YCbCr, BT.709 (full range)
Bt709FR,
}
impl std::fmt::Display for ColorSpace {
#[cfg_attr(coverage_nightly, coverage(off))]
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
match self {
ColorSpace::Rgb => write!(f, "rgb"),
ColorSpace::Bt601 => write!(f, "bt-601"),
ColorSpace::Bt709 => write!(f, "bt-709"),
ColorSpace::Bt601FR => write!(f, "bt-601-fr"),
ColorSpace::Bt709FR => write!(f, "bt-709-fr"),
}
}
}