mirror of
https://github.com/storytold/lightcraft.git
synced 2026-10-25 10:37:11 -06:00
codecs::print converts a composed print page (16-bit RGB in the Rec2020 output encoding) to the samples a print-ready file carries: - PrintTarget::Profile(icc): a printer / paper profile, RGB, CMYK or grey, matrix or LUT based, converted with moxcms; PrintTarget::Managed(space): the printer manages colour and the page goes in sRGB or Adobe RGB with that profile embedded. - Perceptual or relative colorimetric (ProofIntent, as soft proofing). - Black point compensation for relative colorimetric: the device's darkest is measured by a round trip of black through the profile and linear values are scaled to land the page's black there (Y' = Y(1 - Yb) + Yb, the published mapping for a neutral destination black), so shadows below the ink's black no longer clip to one value. Perceptual tables keep their own black mapping. - Print adjustment brightness / contrast (-100..100) on the sRGB-encoded values, black and white held, monotonic at every setting. Everything before the profile is per channel and folds into one 16-bit table; pages convert in bounded batches (parallel with the `parallel` feature). Hostile profiles, half pixels and NaN settings are errors or neutral, never panics. Not wired to the print job yet.