Patch title: Release 91 bulk changes
Abstract:
File: /graphic/color/color.pli
Key:
    Removed line
    Added line
   
abstract
  [Tri values colors conversions] ; eol
  link "extra details" "http://www.cs.rit.edu/~ncs/color/t_c
  [ and ]
  link "sRGB spec" "http://www.w3.org/Graphics/Color/sRGB.ht


function cmc_distance ref test l c -> d
  arg ColorLab ref test ; arg Float l c d
  var Float e := lab_distance ref test
abstract
  [Tri values colors conversions] ; eol
  link "extra details" "http://www.cs.rit.edu/~ncs/color/t_c
  [ and ]
  link "sRGB spec" "http://www.w3.org/Graphics/Color/sRGB.ht


function cmc_distance ref test l c -> d
  arg ColorLab ref test ; arg Float l c d
  var Float e := lab_distance ref test
  if l=undefined or c=undefined
    return e
  var ColorLCh ref_lch := cast ref ColorLCh
  var ColorLCh test_lch := cast test ColorLCh
  var Float dL := abs ref:L-test:L
  var Float dC := abs ref_lch:C-test_lch:C
  var Float dH := ( pow2:e - pow2:dL - pow2:dC )^0.5
  if dH=undefined
    dH := 0
  var ColorLCh ref_lch := cast ref ColorLCh
  var ColorLCh test_lch := cast test ColorLCh
  var Float dL := abs ref:L-test:L
  var Float dC := abs ref_lch:C-test_lch:C
  var Float dH := ( pow2:e - pow2:dL - pow2:dC )^0.5
  if dH=undefined
    dH := 0
  var Float L := ref_lch L
  var Float C := ref_lch C
  var Float L := min ref_lch:L test_lch:L
  var Float C := max ref_lch:C test_lch:C
  var Float h := ref_lch h
  if h=undefined
    h := 0
  var Float Sl
  if L>=16
    Sl := 0.040975*L/(1+0.01765*L)
  else
    Sl := 0.511
  var Float h := ref_lch h
  if h=undefined
    h := 0
  var Float Sl
  if L>=16
    Sl := 0.040975*L/(1+0.01765*L)
  else
    Sl := 0.511
  var Float Sc := 0.0638*C/(1+0.01231*C)+0.638
  var Float Sc := 0.0638*C/(1+0.0131*C)+0.638
  var Float f := (C^4/(C^4+1900))^0.5
  if f=undefined
    f := 0
  var Float T
  if h<164 or h>345
    T := 0.36+(abs 0.4*(cos (h+35)*pi/180))
  else
    T := 0.56+(abs 0.2*(cos (h+168)*pi/180))
  var Float Sh := (f*T+1-f)*Sc
  d := ( (pow2 dL/(l*Sl)) + (pow2 dC/(c*Sc)) + (pow2 dH/Sh) 
  if d=undefined
    d := 0

  var Float f := (C^4/(C^4+1900))^0.5
  if f=undefined
    f := 0
  var Float T
  if h<164 or h>345
    T := 0.36+(abs 0.4*(cos (h+35)*pi/180))
  else
    T := 0.56+(abs 0.2*(cos (h+168)*pi/180))
  var Float Sh := (f*T+1-f)*Sc
  d := ( (pow2 dL/(l*Sl)) + (pow2 dC/(c*Sc)) + (pow2 dH/Sh) 
  if d=undefined
    d := 0

gvar Float cmc_distance_l_parameter := 1.4
gvar Float cmc_distance_l_parameter := 1
gvar Float cmc_distance_c_parameter := 1


gvar Float cmc_distance_c_parameter := 1


function cmc_distance ref test l c -> d
  arg ColorXYZ ref test ; arg Float l c ; arg Float d
  d := cmc_distance (cast ref ColorLab) (cast test ColorLab) l c
 
function cmc_distance ref test -> d
  arg ColorXYZ ref test ; arg Float d
  d := cmc_distance (cast ref ColorLab) (cast test ColorLab)
 
export cmc_distance cmc_distance_l_parameter cmc_distance_c_
function cmc_distance ref test -> d
  arg ColorXYZ ref test ; arg Float d
  d := cmc_distance (cast ref ColorLab) (cast test ColorLab)
 
export cmc_distance cmc_distance_l_parameter cmc_distance_c_