ICtCp
The ICtCp color space is registered in Color
by default
Properties
Name: ictcp
White Point: D65 / 2˚
Coordinates:
Name | Range* |
---|---|
i | [0, 1] |
ct | [-0.5, 0.5] |
cp | [-0.5, 0.5] |
* Space is not bound to the above, defined range but represents a practical range for HDR color spaces.
Figure 1. The sRGB gamut represented within the ICtCp color space.
ICtCp is a color space format with better perceptual uniformity than CIELab and is used as a part of the color image pipeline in video and digital photography systems for high dynamic range (HDR) and wide color gamut (WCG) imagery. It was developed by Dolby Laboratories from the IPT color space by Ebner and Fairchild. It was designed with the intention to replace YCbCr.
Channel Aliases
Channels | Aliases |
---|---|
i | intensity |
ct | tritan |
cp | protan |
Input/Output
Parsed input and string output formats support all valid CSS forms in addition to allowing the color()
function format as well using the custom name --ictcp
.
ictcp(i ct cp / a) // ICtCp function
color(--ictcp i ct cp / a) // Color function
When manually creating a color via raw data or specifying a color space as a parameter in a function, the color space name is always used:
Color("ictcp", [0, 0, 0], 1)
The string representation of the color object will always default to the color(--ictcp i ct cp / a)
form, but the default string output will be the ictcp(i ct cp / a)
form.
>>> Color("ictcp", [0.42788, -0.1157, 0.27873])
color(--ictcp 0.42788 -0.1157 0.27873 / 1)
>>> Color("ictcp", [0.50498, -0.20797, 0.11073]).to_string()
'ictcp(0.50498 -0.20797 0.11073)'
>>> Color("ictcp", [0.56983, -0.25169, 0.03788]).to_string(percent=True)
'ictcp(56.983% -50.338% 7.576%)'
>>> Color("ictcp", [0.39138, -0.24061, -0.04423]).to_string(color=True)
'color(--ictcp 0.39138 -0.24061 -0.04423)'
Registering
from coloraide import Color as Base
from coloraide.spaces.ictcp.css import ICtCp
class Color(Base): ...
Color.register(ICtCp())