-- ColorModels.mesa -- Last edited by Maureen Stone, February 10, 1984 4:18:42 pm PST -- Conversion routines between color models <> ColorModels: CEDAR DEFINITIONS = { <> <> <> <> <> <> <> <> <> InvalidColor, Uninitialized: SIGNAL; undefined: REAL = -1; HSVToRGB: PROC[h, s, v: REAL] RETURNS[r, g, b: REAL]; RGBToHSV: PROC[r, g, b: REAL] RETURNS[h, s, v: REAL]; <<--HSV hexacone model.>> HSLToRGB: PROC[h, s, l: REAL] RETURNS[r, g, b: REAL]; RGBToHSL: PROC[r, g, b: REAL] RETURNS[h, s, l: REAL]; <<--HSL double hexacone model.>> <<>> <<>> <> <> <> <> <> <> <<>> Real0: TYPE = REAL _ 0; Matrix3: TYPE = ARRAY [0..3) OF Row3; Row3: TYPE = ARRAY [0..3) OF Real0; Column3: TYPE = ARRAY [0..3) OF Real0; Calibration: TYPE = REF CalibrationRec; CalibrationRec: TYPE=RECORD [ toCIE: Matrix3, --rgb to cie matrix toRGB: Matrix3, --cie to rgb matrix yScale: REAL ]; InitCIE: PROC[xr,yr,xg,yg,xb,yb: REAL, whiteY: REAL _ 1.0] RETURNS [calibration: Calibration]; <> PhosphorType: TYPE = {long,normal}; GetDefaultCalibration: PROC[type: PhosphorType _ long] RETURNS [calibration: Calibration]; <> GetDefaultValues: PROC[type: PhosphorType] RETURNS[xr,yr,xg,yg,xb,yb: REAL]; SetDefaultValues: PROC[xr,yr,xg,yg,xb,yb: REAL, type: PhosphorType]; CIEToRGB: PROC[x,y, Y: REAL, calibration: Calibration] RETURNS[r, g, b: REAL]; <> GetMaxY: PUBLIC PROC[x,y: REAL, calibration: Calibration] RETURNS[Y: REAL]; <> RGBToCIE: PROC[r, g, b: REAL, calibration: Calibration] RETURNS [x,y, Y: REAL]; }.