<> <> <> <> <<>> DIRECTORY Imager USING [Context, VEC], ImagerColor USING [RGB, Color], ImagerTransformation USING [Transformation], Rope USING [ROPE], CalibratedColor USING [XYZ, SampledCalibration, RGBCalibration], ImagerSample USING [SampleMap]; ColorPlotGamuts: CEDAR DEFINITIONS ~ BEGIN <> <<>> Projection: TYPE = {x,y, lStar, aStar, bStar, uStar, vStar, reflectance, hueAngle}; <> SampleMap: TYPE = ImagerSample.SampleMap; SampledCalibration: TYPE = CalibratedColor.SampledCalibration; RGBCalibration: TYPE = CalibratedColor.RGBCalibration; VEC: TYPE = Imager.VEC; XYZ: TYPE = CalibratedColor.XYZ; RGB: TYPE = ImagerColor.RGB; ROPE: TYPE = Rope.ROPE; State: TYPE = REF StateRec; StateRec: TYPE = RECORD [ redMap,greenMap,blueMap: SampleMap, xAxis, yAxis: Projection, res: NAT, -- number of samples along longest dimension. white: XYZ, getColor: GetColorProc, getColorData: REF _ NIL, backgroundColor: RGB, transformation: ImagerTransformation.Transformation --based on projections ]; CreateMapState: PROC [xAxis, yAxis: Projection, res: NAT, white: XYZ, getColor: GetColorProc, getColorData: REF, backgroundColor: RGB _ [0.5, 0.5, 0.5]] RETURNS [State]; <> MapColor: PROC [state: State, color: XYZ] RETURNS [x,y: REAL, rgb: RGB]; <> MapValues: PROC [state: State, color: XYZ] RETURNS [x,y: REAL]; <> MarkColor: PROC[state: State, color: XYZ]; <> MarkColorVals: PROC[state: State, x, y: REAL, rgb: RGB]; <> <> MarkPoint: PROC[state: State, ix, iy: INTEGER, rgb: RGB]; <> <> GetColorProc: TYPE = PROC[xyz: XYZ, data: REF _ NIL] RETURNS[RGB]; Black: GetColorProc; --constant black Gray: GetColorProc; --constant gray White: GetColorProc; --constant gray SampledRainbow: GetColorProc; --assumes data is SampledCalibration SampledGrayscale: GetColorProc; --assumes data is SampledCalibration RGBRainbow: GetColorProc; --assumes data is RGBCalibration RGBGrayscale: GetColorProc; --assumes data is RGBCalibration <> RopeFromProjection: PROC[proj: Projection] RETURNS[r: ROPE]; ImageSampleMap: PROC[dc: Imager.Context, state: State]; <> ImageAndLabel: PROC [dc: Imager.Context, state: State, note: ROPE _ NIL, labelColor: ImagerColor.Color _ NIL]; <> StatesToInterpress: PROC[states: LIST OF State, ipName: ROPE, label: BOOLEAN _ TRUE, note: ROPE _ NIL, labelColor: ImagerColor.Color _ NIL, bleedBackground: BOOLEAN _ FALSE]; <> <> <> StateFromCalibration: PROC [cal: SampledCalibration, xAxis, yAxis: Projection, res: NAT, getColor: GetColorProc, getColorData: REF _ NIL] RETURNS [State]; StateFromRGBCalibration: PROC [cal: RGBCalibration, xAxis, yAxis: Projection, res: NAT, getColor: GetColorProc, getColorData: REF _ NIL] RETURNS [State]; <<>> <> SampleAndPlot: PROC [state: State, cal: SampledCalibration, sample: NAT _ 8, sampleProc: SampleProc, substituteRainbow: BOOLEAN _ TRUE]; <> <> RGBSampleAndPlot: PROC [state: State, cal: RGBCalibration, sample: NAT _ 8, sampleProc: SampleProc]; <<>> <> RGBProc: TYPE = PROC[rgb: RGB]; SampleProc: TYPE = PROC[sample: NAT _ 8, returnRGB: RGBProc]; GrayAxis: SampleProc; <> HueCircle: SampleProc; <> ColorsToWhite: SampleProc; <> ColorsToBlack: SampleProc; <> GamutSurface: SampleProc; <> WholeGamut: SampleProc; <> END.