Patch title: Release 87 bulk changes
Abstract:
File: /pliant/graphic/color/editor.page
Key:
    Removed line
    Added line
   
module "/pliant/language/unsafe.pli"
module "/pliant/graphic/misc/float.pli"
module "/pliant/admin/file.pli"
module "/pliant/protocol/http/uvar.pli"
module "database.pli"
module "spectrum.pli"
module "color.pli"
module "adjust.pli"
module "gradation.pli"
module "ink.pli"
module "gamut.pli"
module "spectro.pli"


method page display_spectrum filter1 filter2 filter3 scale_x
  arg_rw HtmlPage page ; arg ColorSpectrum32 filter1 filter2
  var Link:ImagePixmap pixmap :> new ImagePixmap
  pixmap setup (image_prototype 700 100 400 0 300*scale_x+1 
  for (var Int w) 400 700
    (var ColorSpectrum sp) set_step 10
    for (var Int i) 400 700 step 10
      sp set_measure i 0.1
    sp set_measure w-w%10 0.1+0.9*(1-w%10/10)
    sp set_measure w-w%10+10 0.1+0.9*(w%10/10)
    var ColorRGB888 rgb := cast filter_XYZ:(cast sp ColorSpe
    for (var Int iy) 0 100*scale_y
      for (var Int i) 0 scale_x-1
        if (700-w)*scale_x+i<pixmap:size_x
          memory_copy addressof:rgb (pixmap pixel (700-w)*sc
  for (var Int d) 0 2
    var ColorSpectrum32 filter := shunt d=0 filter1 d=1 filt
    if filter<>undefined
      var ColorSpectrum s := cast filter ColorSpectrum
      for (var Int w) 400 700
        var Float z := s w
        if z>=0 and z<=1
          (pixmap pixel (700-w)*scale_x (cast 100*scale_y*(1
  var Str f1 := string (cast filter1 ColorSpectrum)
  var Str f2 := string (cast filter2 ColorSpectrum)
  var Str f3 := string (cast filter3 ColorSpectrum)
module "/pliant/language/unsafe.pli"
module "/pliant/graphic/misc/float.pli"
module "/pliant/admin/file.pli"
module "/pliant/protocol/http/uvar.pli"
module "database.pli"
module "spectrum.pli"
module "color.pli"
module "adjust.pli"
module "gradation.pli"
module "ink.pli"
module "gamut.pli"
module "spectro.pli"


method page display_spectrum filter1 filter2 filter3 scale_x
  arg_rw HtmlPage page ; arg ColorSpectrum32 filter1 filter2
  var Link:ImagePixmap pixmap :> new ImagePixmap
  pixmap setup (image_prototype 700 100 400 0 300*scale_x+1 
  for (var Int w) 400 700
    (var ColorSpectrum sp) set_step 10
    for (var Int i) 400 700 step 10
      sp set_measure i 0.1
    sp set_measure w-w%10 0.1+0.9*(1-w%10/10)
    sp set_measure w-w%10+10 0.1+0.9*(w%10/10)
    var ColorRGB888 rgb := cast filter_XYZ:(cast sp ColorSpe
    for (var Int iy) 0 100*scale_y
      for (var Int i) 0 scale_x-1
        if (700-w)*scale_x+i<pixmap:size_x
          memory_copy addressof:rgb (pixmap pixel (700-w)*sc
  for (var Int d) 0 2
    var ColorSpectrum32 filter := shunt d=0 filter1 d=1 filt
    if filter<>undefined
      var ColorSpectrum s := cast filter ColorSpectrum
      for (var Int w) 400 700
        var Float z := s w
        if z>=0 and z<=1
          (pixmap pixel (700-w)*scale_x (cast 100*scale_y*(1
  var Str f1 := string (cast filter1 ColorSpectrum)
  var Str f2 := string (cast filter2 ColorSpectrum)
  var Str f3 := string (cast filter3 ColorSpectrum)
  page draw pixmap position
  draw pixmap position
    f1 parse (var ColorSpectrum s1a)
    f2 parse (var ColorSpectrum s2a)
    f3 parse (var ColorSpectrum s3a)
    display_spectrum (cast s1a ColorSpectrum32) (cast s2a Co


if (options option "device") and (options option "channel")
  var Link:ImagePixmap img :> new ImagePixmap
  img setup (image_prototype 0 0 501 501 501 501 color_gamut
  var ColorRGB888 black ; black r := 0 ; black g := 0 ; blac
  var ColorRGB888 dark ; dark r := 40h ; dark g := 40h ; dar
  var ColorRGB888 middle ; middle r := 80h ; middle g := 80h
  var ColorRGB888 light ; light r := 0C0h ; light g := 0C0h 
  for (var Int i) 0 500
    img fill 0 i 501 addressof:light
  for (var Int i) 0 500 step 5
    for (var Int j) 0 500 step 5
      (img pixel i j) map ColorRGB888 := shunt i%50=0 or j%5
  for (var Int i) 0 2
    for (var Int j) 0 2
      for (var Int k) -2 2
        var Int xx := i*250+k
        var Int yy := j*250
        if xx>=0 and xx<=500 and yy>=0 and yy<=500
          (img pixel xx yy) map ColorRGB888 := black
        var Int xx := i*250
        var Int yy := j*250+k
        if xx>=0 and xx<=500 and yy>=0 and yy<=500
          (img pixel xx yy) map ColorRGB888 := black
  var Data:ColorChannel ch :> color_database:data:device:(op
  var ColorSpectrum32 z_s0 := ch s0
  var ColorSpectrum32 z_s100 := ch s100
  if z_s0=undefined and z_s100=undefined
    return
  var Curve curve1 := var Curve empty_curve
  var Curve curve2 := var Curve empty_curve
  var Curve curve3 := var Curve empty_curve
  var Float range_x := 1
  var Float range_y := 1
  each sample ch:sample filter (keyof:sample parse (var Int 
    keyof:sample parse (var Float x)
    var Float y := ink_density color_spectrum32:sample z_s0 
    curve1 through x y
    var Float y := ink_surface color_spectrum32:sample z_s0 
    curve2 through x y
    var Float y := ink_thickness color_spectrum32:sample z_s
    curve3 through x y
    range_x := max range_x x
    range_y := max range_y y
  curve1 compute y_from_x
  curve2 compute y_from_x
  curve3 compute y_from_x
  if curve3=success
    var ColorRGB888 blue ; blue r := 0 ; blue g := 0 ; blue 
    for (var Int i) 0 500
      var Float y := (curve3 y i/500*range_x 1e-6)/range_y
      if y=defined
        var Int j := cast y*500 Int
        if j>=0 and j<=500
          (img pixel i 500-j) map ColorRGB888 := blue
  if curve2=success
    var ColorRGB888 green ; green r := 0 ; green g := 255 ; 
    for (var Int i) 0 500
      var Float y := (curve2 y i/500*range_x 1e-6)/range_y
      if y=defined
        var Int j := cast y*500 Int
        if j>=0 and j<=500
          (img pixel i 500-j) map ColorRGB888 := green
  if curve1=success
    var ColorRGB888 red ; red r := 255 ; red g := 0 ; red b 
    for (var Int i) 0 500
      var Float y := (curve1 y i/500*range_x 1e-6)/range_y
      if y=defined
        var Int j := cast y*500 Int
        if j>=0 and j<=500
          (img pixel i 500-j) map ColorRGB888 := red
  reset_http_answer
    f1 parse (var ColorSpectrum s1a)
    f2 parse (var ColorSpectrum s2a)
    f3 parse (var ColorSpectrum s3a)
    display_spectrum (cast s1a ColorSpectrum32) (cast s2a Co


if (options option "device") and (options option "channel")
  var Link:ImagePixmap img :> new ImagePixmap
  img setup (image_prototype 0 0 501 501 501 501 color_gamut
  var ColorRGB888 black ; black r := 0 ; black g := 0 ; blac
  var ColorRGB888 dark ; dark r := 40h ; dark g := 40h ; dar
  var ColorRGB888 middle ; middle r := 80h ; middle g := 80h
  var ColorRGB888 light ; light r := 0C0h ; light g := 0C0h 
  for (var Int i) 0 500
    img fill 0 i 501 addressof:light
  for (var Int i) 0 500 step 5
    for (var Int j) 0 500 step 5
      (img pixel i j) map ColorRGB888 := shunt i%50=0 or j%5
  for (var Int i) 0 2
    for (var Int j) 0 2
      for (var Int k) -2 2
        var Int xx := i*250+k
        var Int yy := j*250
        if xx>=0 and xx<=500 and yy>=0 and yy<=500
          (img pixel xx yy) map ColorRGB888 := black
        var Int xx := i*250
        var Int yy := j*250+k
        if xx>=0 and xx<=500 and yy>=0 and yy<=500
          (img pixel xx yy) map ColorRGB888 := black
  var Data:ColorChannel ch :> color_database:data:device:(op
  var ColorSpectrum32 z_s0 := ch s0
  var ColorSpectrum32 z_s100 := ch s100
  if z_s0=undefined and z_s100=undefined
    return
  var Curve curve1 := var Curve empty_curve
  var Curve curve2 := var Curve empty_curve
  var Curve curve3 := var Curve empty_curve
  var Float range_x := 1
  var Float range_y := 1
  each sample ch:sample filter (keyof:sample parse (var Int 
    keyof:sample parse (var Float x)
    var Float y := ink_density color_spectrum32:sample z_s0 
    curve1 through x y
    var Float y := ink_surface color_spectrum32:sample z_s0 
    curve2 through x y
    var Float y := ink_thickness color_spectrum32:sample z_s
    curve3 through x y
    range_x := max range_x x
    range_y := max range_y y
  curve1 compute y_from_x
  curve2 compute y_from_x
  curve3 compute y_from_x
  if curve3=success
    var ColorRGB888 blue ; blue r := 0 ; blue g := 0 ; blue 
    for (var Int i) 0 500
      var Float y := (curve3 y i/500*range_x 1e-6)/range_y
      if y=defined
        var Int j := cast y*500 Int
        if j>=0 and j<=500
          (img pixel i 500-j) map ColorRGB888 := blue
  if curve2=success
    var ColorRGB888 green ; green r := 0 ; green g := 255 ; 
    for (var Int i) 0 500
      var Float y := (curve2 y i/500*range_x 1e-6)/range_y
      if y=defined
        var Int j := cast y*500 Int
        if j>=0 and j<=500
          (img pixel i 500-j) map ColorRGB888 := green
  if curve1=success
    var ColorRGB888 red ; red r := 255 ; red g := 0 ; red b 
    for (var Int i) 0 500
      var Float y := (curve1 y i/500*range_x 1e-6)/range_y
      if y=defined
        var Int j := cast y*500 Int
        if j>=0 and j<=500
          (img pixel i 500-j) map ColorRGB888 := red
  reset_http_answer
  http_request answer_mime_type := "image/png"
  http_request send_header
  img save http_stream "filter [dq].png[dq]"
  http_request send_header "mime [dq]image/png[dq]"
  img save http_request:answer_stream "filter [dq].png[dq]"
  http_request send_footer
  return
  
title "Color database editor"


  http_request send_footer
  return
  
title "Color database editor"