From 0f051b628ef7f1f88d1720d44ff878782f0fcdd5 Mon Sep 17 00:00:00 2001 From: Kornel <kornel@geekhood.net> Date: Wed, 14 Jun 2017 13:11:40 +0100 Subject: [PATCH] Conversions --- src/ext.rs | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/src/ext.rs b/src/ext.rs index ea15776..db2ddd4 100644 --- a/src/ext.rs +++ b/src/ext.rs @@ -32,6 +32,9 @@ pub trait CIEXYZExt: Sized { /// Colorimetric space conversion. fn to_lab(&self, white_point: &CIEXYZ) -> CIELab; + + /// Decodes a XYZ value, encoded on ICC convention + fn from_encoded(icc: &[u16; 3]) -> Self; } impl CIEXYZExt for CIEXYZ { @@ -54,6 +57,14 @@ impl CIEXYZExt for CIEXYZ { } out } + + fn from_encoded(icc: &[u16; 3]) -> Self { + let mut out = Self::default(); + unsafe { + ffi::cmsXYZEncoded2Float(&mut out, icc.as_ptr()); + } + out + } } /// White point @@ -121,6 +132,12 @@ pub trait CIELabExt: Sized { /// Encodes a Lab value, from a CIELab value to ICC v2 convention. fn encoded_v2(&self) -> [u16; 3]; + /// Decodes a Lab value, encoded on ICC v4 convention + fn from_encoded(icc: &[u16; 3]) -> Self; + + /// Decodes a Lab value, encoded on ICC v2 convention + fn from_encoded_v2(icc: &[u16; 3]) -> Self; + /// Colorimetric space conversion. fn to_xyz(&self, white_point: &CIEXYZ) -> CIEXYZ; } @@ -178,6 +195,22 @@ impl CIELabExt for CIELab { out } + fn from_encoded(icc: &[u16; 3]) -> Self { + let mut out = Self::default(); + unsafe { + ffi::cmsLabEncoded2Float(&mut out, icc.as_ptr()); + } + out + } + + fn from_encoded_v2(icc: &[u16; 3]) -> Self { + let mut out = Self::default(); + unsafe { + ffi::cmsLabEncoded2FloatV2(&mut out, icc.as_ptr()); + } + out + } + fn to_xyz(&self, white_point: &CIEXYZ) -> CIEXYZ { let mut out = CIEXYZ::default(); unsafe { -- GitLab