File size: 4,389 Bytes
db4a26f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
import datetime
import sys
from typing import Literal, SupportsFloat, TypedDict

from ._typing import CapsuleType

littlecms_version: str | None

_Tuple3f = tuple[float, float, float]
_Tuple2x3f = tuple[_Tuple3f, _Tuple3f]
_Tuple3x3f = tuple[_Tuple3f, _Tuple3f, _Tuple3f]

class _IccMeasurementCondition(TypedDict):
    observer: int
    backing: _Tuple3f
    geo: str
    flare: float
    illuminant_type: str

class _IccViewingCondition(TypedDict):
    illuminant: _Tuple3f
    surround: _Tuple3f
    illuminant_type: str

class CmsProfile:
    @property
    def rendering_intent(self) -> int: ...
    @property
    def creation_date(self) -> datetime.datetime | None: ...
    @property
    def copyright(self) -> str | None: ...
    @property
    def target(self) -> str | None: ...
    @property
    def manufacturer(self) -> str | None: ...
    @property
    def model(self) -> str | None: ...
    @property
    def profile_description(self) -> str | None: ...
    @property
    def screening_description(self) -> str | None: ...
    @property
    def viewing_condition(self) -> str | None: ...
    @property
    def version(self) -> float: ...
    @property
    def icc_version(self) -> int: ...
    @property
    def attributes(self) -> int: ...
    @property
    def header_flags(self) -> int: ...
    @property
    def header_manufacturer(self) -> str: ...
    @property
    def header_model(self) -> str: ...
    @property
    def device_class(self) -> str: ...
    @property
    def connection_space(self) -> str: ...
    @property
    def xcolor_space(self) -> str: ...
    @property
    def profile_id(self) -> bytes: ...
    @property
    def is_matrix_shaper(self) -> bool: ...
    @property
    def technology(self) -> str | None: ...
    @property
    def colorimetric_intent(self) -> str | None: ...
    @property
    def perceptual_rendering_intent_gamut(self) -> str | None: ...
    @property
    def saturation_rendering_intent_gamut(self) -> str | None: ...
    @property
    def red_colorant(self) -> _Tuple2x3f | None: ...
    @property
    def green_colorant(self) -> _Tuple2x3f | None: ...
    @property
    def blue_colorant(self) -> _Tuple2x3f | None: ...
    @property
    def red_primary(self) -> _Tuple2x3f | None: ...
    @property
    def green_primary(self) -> _Tuple2x3f | None: ...
    @property
    def blue_primary(self) -> _Tuple2x3f | None: ...
    @property
    def media_white_point_temperature(self) -> float | None: ...
    @property
    def media_white_point(self) -> _Tuple2x3f | None: ...
    @property
    def media_black_point(self) -> _Tuple2x3f | None: ...
    @property
    def luminance(self) -> _Tuple2x3f | None: ...
    @property
    def chromatic_adaptation(self) -> tuple[_Tuple3x3f, _Tuple3x3f] | None: ...
    @property
    def chromaticity(self) -> _Tuple3x3f | None: ...
    @property
    def colorant_table(self) -> list[str] | None: ...
    @property
    def colorant_table_out(self) -> list[str] | None: ...
    @property
    def intent_supported(self) -> dict[int, tuple[bool, bool, bool]] | None: ...
    @property
    def clut(self) -> dict[int, tuple[bool, bool, bool]] | None: ...
    @property
    def icc_measurement_condition(self) -> _IccMeasurementCondition | None: ...
    @property
    def icc_viewing_condition(self) -> _IccViewingCondition | None: ...
    def is_intent_supported(self, intent: int, direction: int, /) -> int: ...

class CmsTransform:
    def apply(self, id_in: CapsuleType, id_out: CapsuleType) -> int: ...

def profile_open(profile: str, /) -> CmsProfile: ...
def profile_frombytes(profile: bytes, /) -> CmsProfile: ...
def profile_tobytes(profile: CmsProfile, /) -> bytes: ...
def buildTransform(
    input_profile: CmsProfile,
    output_profile: CmsProfile,
    in_mode: str,
    out_mode: str,
    rendering_intent: int = 0,
    cms_flags: int = 0,
    /,
) -> CmsTransform: ...
def buildProofTransform(
    input_profile: CmsProfile,
    output_profile: CmsProfile,
    proof_profile: CmsProfile,
    in_mode: str,
    out_mode: str,
    rendering_intent: int = 0,
    proof_intent: int = 0,
    cms_flags: int = 0,
    /,
) -> CmsTransform: ...
def createProfile(
    color_space: Literal["LAB", "XYZ", "sRGB"], color_temp: SupportsFloat = 0.0, /
) -> CmsProfile: ...

if sys.platform == "win32":
    def get_display_profile_win32(handle: int = 0, is_dc: int = 0, /) -> str | None: ...