<> <> <> <<>> <> <<>> DIRECTORY PrintColor USING [ColorCorrection], Rope USING [ROPE]; PrintColorTransformations: CEDAR DEFINITIONS ~ BEGIN ROPE: TYPE ~ Rope.ROPE; ColorCorrection: TYPE ~ PrintColor.ColorCorrection; <> TRCTable: TYPE = REF TRCTableRec; TRCTableRec: TYPE = ARRAY[0..LAST[BYTE]] OF NAT; Values: TYPE = RECORD[c0,m0,y0,c1,m1,y1,c2,m2,y2: REAL]; MatrixEltTable: TYPE = REF MatrixEltTableRec; MatrixEltTableRec: TYPE = ARRAY[0..LAST[BYTE]] OF INT; MatrixTables: TYPE ~ REF MatrixTablesRec; MatrixTablesRec: TYPE ~ RECORD [ m00, m01, m02, m10, m11, m12, m20, m21, m22: MatrixEltTable, cyan, magenta, yellow: TRCTable _ NIL ]; <> <> <> SWOPLinearDotArea: PROC RETURNS [ColorCorrection]; SWOPWithGCLinearLStar: PROC RETURNS [ColorCorrection]; <> SWOPWithMatrix: PROC[matrixTables: MatrixTables] RETURNS[ColorCorrection]; <> <> InitMatrixTables: PROC[rgbToLStar, densityToDotArea: TRCTable, printerDMax, saturation, contrast: REAL, values: Values] RETURNS[MatrixTables]; <> CorrectionType: TYPE ~ {grayBalanceOnly, full}; ProcFromCCSpec: PROC[ccSpec: ROPE, correctionType: CorrectionType, maxSampleOut, maxSampleIn: NAT _ 255] RETURNS[ColorCorrection]; <> <> <> LuminanceToDotArea: PROC[maxSampleOut, maxSampleIn: NAT _ 255] RETURNS[ColorCorrection]; < luminance => dot area. Good if images are designed already in dot area>> <> NullRGB: PROC[maxSampleOut, maxSampleIn: NAT _ 255] RETURNS[ColorCorrection]; <> FlipRGB: PROC[maxSampleOut, maxSampleIn: NAT _ 255] RETURNS[ColorCorrection]; <> FlipAndFullGCR: PROC[maxSampleOut, maxSampleIn: NAT _ 255] RETURNS[ColorCorrection]; <> <> <> ReadTRC: PROC [trcFn: ROPE] RETURNS [trc: TRCTable]; DensityToLStar: PROC [dMax: REAL] RETURNS [trc:TRCTable]; RGBToLStar: PROC RETURNS [trc:TRCTable]; <> <> <> IdentityTRC: PROC [] RETURNS [initTrc:TRCTable]; IdentityValues: PROC RETURNS[Values]; END.