Patch title: Release 94 bulk changes
Abstract:
File: /pliant/graphic/color/adjust.pli
Key:
    Removed line
    Added line
   
module "/pliant/language/compiler.pli"
module "/pliant/math/functions.pli"
module "/pliant/math/curve.pli"
module "spectrum.pli"
module "color.pli"
module "database.pli"



function dot_adjust x spec -> y
  arg Float x y ; arg Str spec
  # curve x and y range is 0 1
  var Str header := spec option "header" Str
  var Str header2 := spec option "header2" Str
  var Float density := spec option header+"density" Float (s
  var Float middle := spec option header+"middle" Float (spe
module "/pliant/language/compiler.pli"
module "/pliant/math/functions.pli"
module "/pliant/math/curve.pli"
module "spectrum.pli"
module "color.pli"
module "database.pli"



function dot_adjust x spec -> y
  arg Float x y ; arg Str spec
  # curve x and y range is 0 1
  var Str header := spec option "header" Str
  var Str header2 := spec option "header2" Str
  var Float density := spec option header+"density" Float (s
  var Float middle := spec option header+"middle" Float (spe
  y := (exposure x middle)*density
  var Float bottom := spec option header+"bottom" Float (spec option header2+"bottom" Float middle)
  var Float bottom2 := spec option header+"bottom2" Float (spec option header2+"bottom2" Float bottom)
  var Float top := spec option header+"top" Float (spec option header2+"top" Float middle)
  var Float top2 := spec option header+"top2" Float (spec option header2+"top2" Float top)
  var Float f0 := 0.5+0.5*(sin pi*( (0.5+0.5*(sin pi*(0.5-x)))^2 - 0.5))
  var Float xx := 1-(1-x)^2 ; if xx=undefined { xx := 1 }
  var Float f00 := 0.5+0.5*(sin pi*( (0.5+0.5*(sin pi*(0.5-xx)))^2 - 0.5))
  var Float f1 := 0.5+0.5*(sin pi*( (0.5+0.5*(sin pi*(x-0.5)))^2 - 0.5))
  var Float xx := x^2 ; if xx=undefined { xx := 0 }
  var Float f11 := 0.5+0.5*(sin pi*( (0.5+0.5*(sin pi*(xx-0.5)))^2 - 0.5))
  # y := (exposure x f0*bottom+(1-f0-f1)*middle+f1*top)*density
  y := (exposure x f00*bottom2+(f0-f00)*bottom+(1-f0-f1)*middle+(f1-f11)*top+f11*top2)*density

function dot_unadjust y spec -> x
  arg Float x y ; arg Str spec
  var Str header := spec option "header" Str
  var Str header2 := spec option "header2" Str

function dot_unadjust y spec -> x
  arg Float x y ; arg Str spec
  var Str header := spec option "header" Str
  var Str header2 := spec option "header2" Str
  var Float bottom := spec option header+"bottom" Float (spe
  var Float middle := spec option header+"middle" Float (spe
  var Float top := spec option header+"top" Float (spec opti
  var Float density := spec option header+"density" Float (s
  var Float density := spec option header+"density" Float (s
  # x := unexposure y/density middle
  x := (unexposure y middle)^(exp exp:1*((1-y)*bottom+y*top)
  var Float middle := spec option header+"middle" Float (spec option header2+"middle" Float 0)
  var Float bottom := spec option header+"bottom" Float (spec option header2+"bottom" Float middle)
  var Float bottom2 := spec option header+"bottom2" Float (spec option header2+"bottom2" Float bottom)
  var Float top := spec option header+"top" Float (spec option header2+"top" Float middle)
  var Float top2 := spec option header+"top2" Float (spec option header2+"top2" Float top)
  var Float bottom_power := spec option header+"bottom_power" Float (spec option header2+"bottom_power" Float 0)
  var Float top_power := spec option header+"top_power" Float (spec option header2+"top_power" Float 0)
  var Float f0 := 0.5+0.5*(sin pi*( (0.5+0.5*(sin pi*(0.5-y)))^2 - 0.5))
  var Float yy := 1-(1-y)^2 ; if yy=undefined { yy := 1 }
  var Float f00 := 0.5+0.5*(sin pi*( (0.5+0.5*(sin pi*(0.5-yy)))^2 - 0.5))
  var Float f1 := 0.5+0.5*(sin pi*( (0.5+0.5*(sin pi*(y-0.5)))^2 - 0.5))
  var Float yy := y^2 ; if yy=undefined { yy := 0 }
  var Float f11 := 0.5+0.5*(sin pi*( (0.5+0.5*(sin pi*(yy-0.5)))^2 - 0.5))
  # x := (unexposure y f0*bottom+(1-f0-f1)*middle+f1*top)^(exp exp:1*((1-y)*bottom_power+y*top_power))/density
  x := (unexposure y f00*bottom2+(f0-f00)*bottom+(1-f0-f1)*middle+(f1-f11)*top+f11*top2)^(exp exp:1*((1-y)*bottom_power+y*top_power))/density
  if x=undefined
    x := 0

  if x=undefined
    x := 0

function dot_adjust_optimize spec -> spec2
  arg Str spec spec2
  var Str header := spec option "header" Str
  var Str header2 := spec option "header2" Str
  var Float density := spec option header+"density" Float (spec option header2+"density" Float 1)
  var Float middle := spec option header+"middle" Float (spec option header2+"middle" Float 0)
  var Float bottom := spec option header+"bottom" Float (spec option header2+"bottom" Float middle)
  var Float bottom2 := spec option header+"bottom2" Float (spec option header2+"bottom2" Float bottom)
  var Float top := spec option header+"top" Float (spec option header2+"top" Float middle)
  var Float top2 := spec option header+"top2" Float (spec option header2+"top2" Float top)
  var Float bottom_power := spec option header+"bottom_power" Float (spec option header2+"bottom_power" Float 0)
  var Float top_power := spec option header+"top_power" Float (spec option header2+"top_power" Float 0)
  spec2 := ""
  if density<>1
    spec2 += " density "+string:density
  if middle<>0
    spec2 += " middle "+string:middle
  if bottom<>middle
    spec2 += " bottom "+string:bottom
  if bottom2<>bottom
    spec2 += " bottom2 "+string:bottom2
  if top<>middle
    spec2 += " top "+string:top
  if top2<>top
    spec2 += " top2 "+string:top2
  if bottom_power<>0
    spec2 += " bottom_power "+string:bottom_power
  if top_power<>0
    spec2 += " top_power "+string:top_power
  spec2 := spec2 1 spec2:len


export color_adjust dot_adjust dot_unadjust
export color_adjust dot_adjust dot_unadjust dot_adjust_optimize