Little CMS bindings for Rust
Makes LCMS C API available in Rust. There's also a higher-level wrapper.
It's up to date with version 2.8. Linux, macOS and Windows are supported. Other platforms may work, too.
Differences from the C API
- Type names don't have the
cms
prefix, e.g.cmsColorSpace
isColorSpace
.- All C function names remained the same (with the prefix, e.g.
fn cmsReadTag()
).
- All C function names remained the same (with the prefix, e.g.
- Enum values don't have the
cmsSig
prefix, e.g.cmsSigLabData
isLabData
. - Some arguments use more specific type, e.g.
Intent::Perceptual
enum instead ofINTENT_PERCEPTUAL
integer.
Dynamic vs static
The package supports "static" and "dynamic" Cargo features. If "dynamic" is selected (the default) then it will link to system-wide LCMS2 shared library if pkg-config
is installed and working correctly.
If pkg-config
doesn't work (i.e. on Windows), or the "static" feature is enabled, it will build LCMS 2.8 from source instead.