# Source code for pillow_heif.constants

    """Enums from LibHeif that are used."""

    from enum import IntEnum

    class HeifChroma(IntEnum):
        """Chroma subsampling definitions."""

        UNDEFINED = 99
        """Undefined chroma."""
        MONOCHROME = 0
        """Mono chroma."""
        CHROMA_420 = 1
        """``Cb`` and ``Cr`` are each subsampled at a factor of 2 both horizontally and vertically."""
        CHROMA_422 = 2
        """The two chroma components are sampled at half the horizontal sample rate of luma."""
        CHROMA_444 = 3
        """Each of the three Y'CbCr components has the same sample rate."""
        INTERLEAVED_RGB = 10
        """Simple interleaved RGB."""
        INTERLEAVED_RGBA = 11
        """Interleaved RGB with Alpha channel."""
        INTERLEAVED_RRGGBB_BE = 12
        """10 bit RGB BE."""
        INTERLEAVED_RRGGBBAA_BE = 13
        """10 bit RGB BE with Alpha channel."""
        INTERLEAVED_RRGGBB_LE = 14
        """10 bit RGB LE."""
        INTERLEAVED_RRGGBBAA_LE = 15
        """10 bit RGB LE with Alpha channel."""

    class HeifColorspace(IntEnum):
        """Colorspace format of the image."""

        UNDEFINED = 99
        """Undefined colorspace."""
        YCBCR = 0
        """https://en.wikipedia.org/wiki/YCbCr"""
        RGB = 1
        """RGB colorspace."""
        MONOCHROME = 2
        """Monochrome colorspace."""

    class HeifCompressionFormat(IntEnum):
        """Possible LibHeif compression formats."""

        UNDEFINED = 0
        """The compression format is not defined."""
        HEVC = 1
        """Equivalent to H.265."""
        AVC = 2
        """Equivalent to H.264. Defined in ISO/IEC 14496-10."""
        JPEG = 3
        """JPEG compression. Defined in ISO/IEC 10918-1."""
        AV1 = 4
        """AV1 compression, used for AVIF images."""
        VVC = 5
        """Equivalent to H.266. Defined in ISO/IEC 23090-3."""
        EVC = 6
        """Equivalent to H.266. Defined in ISO/IEC 23094-1."""
        JPEG2000 = 7
        """The compression format is JPEG200 ISO/IEC 15444-16:2021"""
        UNCOMPRESSED = 8
        """Defined in ISO/IEC 23001-17:2023 (Final Draft International Standard)."""
        MASK = 9
        """Mask image encoding. See ISO/IEC 23008-12:2022 Section 6.10.2"""

    class HeifColorPrimaries(IntEnum):
        """Possible NCLX color_primaries values."""

        ITU_R_BT_709_5 = 1
        """g=0.3;0.6, b=0.15;0.06, r=0.64;0.33, w=0.3127,0.3290"""
        UNSPECIFIED = 2
        """No color primaries"""
        ITU_R_BT_470_6_SYSTEM_M = 4
        """Unknown"""
        ITU_R_BT_470_6_SYSTEM_B_G = 5
        """Unknown"""
        ITU_R_BT_601_6 = 6
        """Unknown"""
        SMPTE_240M = 7
        """Unknown"""
        GENERIC_FILM = 8
        """Unknown"""
        ITU_R_BT_2020_2_AND_2100_0 = 9
        """Unknown"""
        SMPTE_ST_428_1 = 10
        """Unknown"""
        SMPTE_RP_431_2 = 11
        """Unknown"""
        SMPTE_EG_432_1 = 12
        """Unknown"""
        EBU_TECH_3213_E = 22
        """Unknown"""

    class HeifTransferCharacteristics(IntEnum):
        """Possible NCLX transfer_characteristics values."""

        ITU_R_BT_709_5 = 1
        """Unknown"""
        UNSPECIFIED = 2
        """No transfer characteristics"""
        ITU_R_BT_470_6_SYSTEM_M = 4
        """Unknown"""
        ITU_R_BT_470_6_SYSTEM_B_G = 5
        """Unknown"""
        ITU_R_BT_601_6 = 6
        """Unknown"""
        SMPTE_240M = 7
        """Unknown"""
        LINEAR = 8
        """Unknown"""
        LOGARITHMIC_100 = 9
        """Unknown"""
        LOGARITHMIC_100_SQRT10 = 10
        """Unknown"""
        IEC_61966_2_4 = 11
        """Unknown"""
        ITU_R_BT_1361 = 12
        """Unknown"""
        IEC_61966_2_1 = 13
        """Unknown"""
        ITU_R_BT_2020_2_10BIT = 14
        """Unknown"""
        ITU_R_BT_2020_2_12BIT = 15
        """Unknown"""
        ITU_R_BT_2100_0_PQ = 16
        """Unknown"""
        SMPTE_ST_428_1 = 17
        """Unknown"""
        ITU_R_BT_2100_0_HLG = 18
        """Unknown"""

    class HeifMatrixCoefficients(IntEnum):
        """Possible NCLX matrix_coefficients values."""

        RGB_GBR = 0
        """Unknown"""
        ITU_R_BT_709_5 = 1
        """Unknown"""
        UNSPECIFIED = 2
        """Unknown"""
        US_FCC_T47 = 4
        """Unknown"""
        ITU_R_BT_470_6_SYSTEM_B_G = 5
        """Unknown"""
        ITU_R_BT_601_6 = 6
        """Unknown"""
        SMPTE_240M = 7
        """Unknown"""
        YCGCO = 8
        """Unknown"""
        ITU_R_BT_2020_2_NON_CONSTANT_LUMINANCE = 9
        """Unknown"""
        ITU_R_BT_2020_2_CONSTANT_LUMINANCE = 10
        """Unknown"""
        SMPTE_ST_2085 = 11
        """Unknown"""
        CHROMATICITY_DERIVED_NON_CONSTANT_LUMINANCE = 12
        """Unknown"""
        CHROMATICITY_DERIVED_CONSTANT_LUMINANCE = 13
        """Unknown"""
        ICTCP = 14
        """Unknown"""

    class HeifDepthRepresentationType(IntEnum):
        """Possible values of the ``HeifDepthImage.info['metadata']['representation_type']``."""

        UNIFORM_INVERSE_Z = 0
        """Unknown"""
        UNIFORM_DISPARITY = 1
        """Unknown"""
        UNIFORM_Z = 2
        """Unknown"""
        NON_UNIFORM_DISPARITY = 3
        """Unknown"""

    class HeifChannel(IntEnum):
        """Internal libheif values, used in ``CtxEncode``."""

        CHANNEL_Y = 0
        """Monochrome or YCbCR"""
        CHANNEL_CB = 1
        """Only for YCbCR"""
        CHANNEL_CR = 2
        """Only for YCbCR"""
        CHANNEL_R = 3
        """RGB or RGBA"""
        CHANNEL_G = 4
        """RGB or RGBA"""
        CHANNEL_B = 5
        """RGB or RGBA"""
        CHANNEL_ALPHA = 6
        """Monochrome or RGBA"""
        CHANNEL_INTERLEAVED = 10
        """RGB or RGBA"""