<> <> <> <> DIRECTORY ImagerColor USING [CIE, CIEChromaticity]; <<>> ColorFns: CEDAR DEFINITIONS ~ BEGIN <> CIE: TYPE = ImagerColor.CIE; <> CIEChromaticity: TYPE = ImagerColor.CIEChromaticity; <> CIELAB: TYPE ~ RECORD [lStar, aStar, bStar: REAL]; CIELUV: TYPE ~ RECORD [lStar, uStar, vStar: REAL]; MetricChromaticity: TYPE ~ RECORD [uPrime, vPrime: REAL]; <<>> <> <> LStarFromLuminance: PROC [Y: REAL, whiteY: REAL] RETURNS[lStar: REAL]; < 0.008856>> <> LuminanceFromLStar: PROC [lStar: REAL, whiteY: REAL] RETURNS[Y: REAL]; <<>> <> <> MetricChrFromXYZ: PROC[xyz: CIE] RETURNS[uv: MetricChromaticity]; <> <> <> MetricChrFromChr: PROC[xy: CIEChromaticity] RETURNS[uv: MetricChromaticity]; <> ChrFromMetricChr: PROC[uv: MetricChromaticity] RETURNS[xy: CIEChromaticity]; <> <> CIELABFromXYZ: PROC [xyz: CIE, white: CIE] RETURNS[lab: CIELAB]; XYZFromCIELAB: PROC [lab: CIELAB, white: CIE] RETURNS[xyz: CIE]; <> <> <> <> CIELUVFromXYZ: PROC [xyz: CIE, white: CIE] RETURNS[luv: CIELUV]; XYZFromCIELUV: PROC [luv: CIELUV, white: CIE] RETURNS[xyz: CIE]; <> <> <> <> DifferenceCIELAB: PROC [color1, color2: CIELAB] RETURNS [difference: REAL]; DifferenceCIELUV: PROC [color1, color2: CIELUV] RETURNS [difference: REAL]; <> <> <> DensityFromReflectance: PROC[r: REAL] RETURNS[REAL]; <> <> ReflectanceFromDensity: PROC[d: REAL] RETURNS[REAL]; <> <> <> DensityFromDotArea: PROC[area: REAL, solidD: REAL _ 1.5, n: REAL _ 1.4] RETURNS[density: REAL]; <> <> DotAreaFromDensity: PROC[density: REAL, solidD: REAL _ 1.5, n: REAL _ 1.4] RETURNS[area: REAL]; <> END.