Patch title: Release 90 bulk changes
Abstract:
File: /graphic/color/spectro.pli
Key:
    Removed line
    Added line
   
abstract
  [This program is handling the Minolta spectocolorimeter]

module "/pliant/language/unsafe.pli"
abstract
  [This program is handling the Minolta spectocolorimeter]

module "/pliant/language/unsafe.pli"
module "/pliant/language/context.pli"
module "/pliant/language/stream.pli"
module "/pliant/language/stream/serial.pli"
module "/pliant/language/stream.pli"
module "/pliant/language/stream/serial.pli"
module "/pliant/admin/execute.pli"
module "/pliant/linux/kernel/device.pli"
if os_api="linux"
  module "/pliant/admin/execute.pli"
  module "/pliant/linux/kernel/device.pli"
module "spectrum.pli"


function spectro_init
module "spectrum.pli"


function spectro_init
  execute "modprobe serial" quiet
  kernel_make_device "device:/ttyS0"
  spectro open "serial:0" "baud 9600" in+out+cr+lf
  if os_api="linux"
    execute "modprobe serial" quiet
    kernel_make_device "device:/ttyS0"
    spectro open "serial:0" "baud 9600" in+out+cr+lf
  else
    spectro open "serial:1" "baud 9600" in+out+cr+lf


function spectro_spectrum -> cs
  arg ColorSpectrum cs
  spectro writeline "MSC"
  cs set_step 10
  var Int w := 400


function spectro_spectrum -> cs
  arg ColorSpectrum cs
  spectro writeline "MSC"
  cs set_step 10
  var Int w := 400
  while { var Str l := spectro_line ; l<>"" }
  var Str listing := ""
  while { var Str l := spectro_line ; listing += "[lf]"+l ; l<>"" }
    if (l parse (var Float f))
      cs set_measure w f*0.01
      w += 10
    if (l parse (var Float f))
      cs set_measure w f*0.01
      w += 10
  if w<>710 or spectro_line<>"Yxy"
  if w<>710 or { var Str l := spectro_line ; listing += "[lf]"+l ; l<>"Yxy" }
    cs := var ColorSpectrum undefined_color_spectrum
    cs := var ColorSpectrum undefined_color_spectrum
    error error_id_unexpected "Unexpected answer from the sp
    error error_id_unexpected "Unexpected answer from the spectrocolorimeter:"+listing
  spectro_line parse (var Float Y)
  spectro_line parse (var Float x)
  spectro_line parse (var Float y)
  if trace
    console "  Yxy fourni = " Y " " x " " y eol
    var ColorXYZn xyzn := cs XYZn illuminant
    var Float X2 := xyzn:Xn*illuminant:X/100
    var Float Y2 := xyzn:Yn*illuminant:Y/100
    var Float Z2 := xyzn:Zn*illuminant:Z/100
    var Float x2 := X2/(X2+Y2+Z2)
    var Float y2 := Y2/(X2+Y2+Z2)
    console "  Yxy calcul頽 " Y2 " " x2 " " y2 eol


function percent f -> s
  arg Float f ; arg Str s
  s := (string (cast f*1000 Int)/10)+"%"
  spectro_line parse (var Float Y)
  spectro_line parse (var Float x)
  spectro_line parse (var Float y)
  if trace
    console "  Yxy fourni = " Y " " x " " y eol
    var ColorXYZn xyzn := cs XYZn illuminant
    var Float X2 := xyzn:Xn*illuminant:X/100
    var Float Y2 := xyzn:Yn*illuminant:Y/100
    var Float Z2 := xyzn:Zn*illuminant:Z/100
    var Float x2 := X2/(X2+Y2+Z2)
    var Float y2 := Y2/(X2+Y2+Z2)
    console "  Yxy calcul頽 " Y2 " " x2 " " y2 eol


function percent f -> s
  arg Float f ; arg Str s
  s := (string (cast f*1000 Int)/10)+"%"