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]; HSLToRGB: PROC[h, s, l: REAL] RETURNS[r, g, b: REAL]; RGBToHSL: PROC[r, g, b: REAL] RETURNS[h, s, l: REAL]; YIQToRGB: PROC[y, i, q: REAL] RETURNS[r, g, b: REAL]; RGBToYIQ: PROC[r, g, b: REAL] RETURNS[y, i, q: REAL]; ARgYbToRGB: PROC[a, rg, yb: REAL] RETURNS[r, g, b: REAL]; RGBToARgYb: PROC[r, g, b: REAL] RETURNS[a, rg, yb: REAL]; 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]; }. ΜCGColorWithCIE.mesa Last edited by Maureen Stone, June 21, 1985 1:51:34 pm PDT Last edited by Doug Wyatt, August 31, 1982 2:50 pm Last Edited by: Beach, February 13, 1984 2:20:49 pm PST Last Edited by: Naiman, June 14, 1985 5:25:29 pm PDT The following convert between (hue, saturation, value) or (hue, saturation, lightness) and (red, green, blue). All REALs except h should be in the range [0..1]. --HSV hexacone model. --HSL double hexacone model. The following convert between (intensity, in-phase, quadrature) and (red, green, blue). -- NTSC model. The following convert between (achromatic, red-green, yellow-blue) and (red, green, blue). -- opponent colors model. The following convert between (red, green, blue) and (x,y) chromaticity coordinates. Initialize the transform with x,y for red, green blue plus Y. Y can default to 1 if you're not matching the monitor to anything else. CIEToRGB and RGBToCIE will signal Uninitialized if InitCIE has not been called add more info hear for real cie. Need two more values? default values for long and short persistance phosphors add more info hear for real cie used to clip values of Y for CIEToRGB The following compute the contrasting color in each color space. ΚC˜procšœ™Kšœ:™:Kšœ2™2—J™7J™4K™šΟk ˜ Jšœ œœ˜J˜—Kšœœ œ˜&Kšœ œ˜ Kšœœœ"˜6Kš Οn œœœœœœΟc?˜šKšœn™nKšœ1™1KšŸ!˜!Kšœœ˜$Kšœ œ˜Kš žœœ œœ œ˜5š žœœ œœ œ˜5Kšœ™—Kš žœœ œœ œ˜5š žœœ œœ œ˜5Kšœ™—K™KšœW™WK™Kš žœœ œœ œ˜5š žœœ œœ œ˜5Kšœ™—K™KšœZ™ZK™Kš ž œœ œœ œ˜9š ž œœ œœ œ˜9Kšœ™—K™KšœT™TKšœ†™†Kšžœžœ9™NKšžœœœ œ˜9Kšœ6™6Kšœœ˜#Kšžœœ˜0Kšœ7™7Kšžœœœœ˜LKšžœœœ˜EKšœ™Kš žœœœœœ œ˜4Kš žœœœœœœ˜1Kšœ%™%Kš žœœ œœœœ˜5K˜K™@Kš ž œœœœœ˜PJš ž œœœœœ˜PJš ž œœœœœ˜PJš ž œœœœœ˜PJš žœœœœœ˜TKšœ˜J˜—…—΄Γ