<> <> <> <> <> <<>> DIRECTORY ImagerColor USING [RGB]; CGColorWithCIE: CEDAR DEFINITIONS = { ColorTag: TYPE = {rgb, stipple}; Color: TYPE = RECORD[tag: ColorTag, r,g,b: [0..256)]; GetStipple: PROC[color: Color] RETURNS[CARDINAL] = INLINE { RETURN[color.g*256+color.b] }; -- get a color's stipple pattern, assuming color.tag = stipple <> <> --h=undefined means it's a gray. 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.>> <<>> <> <<>> YIQToRGB: PROC[y, i, q: REAL] RETURNS[r, g, b: REAL]; RGBToYIQ: PROC[r, g, b: REAL] RETURNS[y, i, q: REAL]; <<-- NTSC model.>> <<>> <> <<>> ARgYbToRGB: PROC[a, rg, yb: REAL] RETURNS[r, g, b: REAL]; RGBToARgYb: PROC[r, g, b: REAL] RETURNS[a, rg, yb: REAL]; <<-- opponent colors model.>> <<>> <> <> <> InitCIE: PROC[xr,yr,xg,yg,xb,yb: REAL, whiteY: REAL _ 1]; <> PhosphorType: TYPE = {long,normal}; InitDefaultCIE: PROC[type: PhosphorType _ long]; <> 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] RETURNS[r, g, b: REAL]; GetMaxY: PUBLIC PROC[x,y: REAL] RETURNS[Y: REAL]; <> RGBToCIE: PROC[r, g, b: REAL] RETURNS [x,y, Y: REAL]; <> ContrastInRGB: PROC[rgb: ImagerColor.RGB] RETURNS[rgbContrast: ImagerColor.RGB]; ContrastInHSV: PROC[rgb: ImagerColor.RGB] RETURNS[hsvContrast: ImagerColor.RGB]; ContrastInHSL: PROC[rgb: ImagerColor.RGB] RETURNS[hslContrast: ImagerColor.RGB]; ContrastInYIQ: PROC[rgb: ImagerColor.RGB] RETURNS[yiqContrast: ImagerColor.RGB]; ContrastInARgYb: PROC[rgb: ImagerColor.RGB] RETURNS[argybContrast: ImagerColor.RGB]; }.