<> <> DIRECTORY Imager, ImagerColor, ImagerBasic, Real; ImagerColorImpl: CEDAR PROGRAM IMPORTS Imager, Real EXPORTS ImagerColor ~ BEGIN Color: TYPE ~ ImagerBasic.Color; Card: PROC [real: REAL] RETURNS [card: CARDINAL] ~ { int: INT _ Real.RoundLI[real*LAST[CARDINAL]]; card _ MAX[MIN[int, LAST[CARDINAL]], 0]; }; MakeGray: PUBLIC PROC [intensity: REAL] RETURNS [Color] ~ { IF intensity <= 0 THEN RETURN [Imager.black]; IF intensity >= 1 THEN RETURN [Imager.white]; RETURN [NEW[ImagerBasic.CIEColorRep _ [x: Card[0.3101], y: Card[0.3163], Y: Card[intensity]]]]; }; END.