Patch title: Release 90 bulk changes
Abstract:
File: /graphic/image/clip.pli
Key:
    Removed line
    Added line
   
module "/pliant/language/compiler.pli"
module "prototype.pli"
module "/pliant/language/compiler/type/inherit.pli"
module "/pliant/graphic/color/gamut.pli"
module "/pliant/graphic/image/packed.pli"
module "/pliant/graphic/misc/mtbuffer.pli"



method c bind image x0 y0 x1 y1 options clip -> status
  oarg_rw ImageClip c ; oarg ImagePrototype image ; arg Floa
  var Int ix0 := image index_x (shunt x0=defined (max x0 ima
  var Int iy0 := image index_y (shunt y0=defined (max y0 ima
  var Int ix1 := min (image index_x (shunt x1=defined (min x
  var Int iy1 := min (image index_y (shunt y1=defined (min y
module "/pliant/language/compiler.pli"
module "prototype.pli"
module "/pliant/language/compiler/type/inherit.pli"
module "/pliant/graphic/color/gamut.pli"
module "/pliant/graphic/image/packed.pli"
module "/pliant/graphic/misc/mtbuffer.pli"



method c bind image x0 y0 x1 y1 options clip -> status
  oarg_rw ImageClip c ; oarg ImagePrototype image ; arg Floa
  var Int ix0 := image index_x (shunt x0=defined (max x0 ima
  var Int iy0 := image index_y (shunt y0=defined (max y0 ima
  var Int ix1 := min (image index_x (shunt x1=defined (min x
  var Int iy1 := min (image index_y (shunt y1=defined (min y
  image clip ix0 iy0 ix1 iy1
  if ix1=ix0
    if ix1<image:size_x
      ix1 += 1
    else
      ix0 -= 1
  if iy1=iy0
    if iy1<image:size_y
      iy1 += 1
    else
      iy0 -= 1
  check ix0>=0 and iy0>=0 and ix1<=image:size_x and iy1<=image:size_y
  check ix1>ix0 and iy1>iy0
  c image :> image
  c tx := ix0
  c ty := iy0
  clip :> new ImagePacked
  c image :> image
  c tx := ix0
  c ty := iy0
  clip :> new ImagePacked
  clip setup (image_prototype (image mm_x ix0) (image mm_x i
  clip setup (image_prototype (image mm_x ix0) (image mm_y iy0) (image mm_x ix1) (image mm_y iy1) ix1-ix0 iy1-iy0 color_gamut:"grey") ""
  c clip :> clip
  c:buffers size := clip line_size
  addressof:c map ImagePrototype := image_prototype clip:x0 
  status := success



  c clip :> clip
  c:buffers size := clip line_size
  addressof:c map ImagePrototype := image_prototype clip:x0 
  status := success




method c fill x y count pixel
  oarg_rw ImageClip c ; arg Int x y count ; arg Address pixe
  var Address buffer := c:buffers allocate
  c:clip read x y count buffer
  var Int i := 0
  while i<count
    var Int skip := bytes_count_0 (buffer translate Byte i) 
    i += skip
    var Int write := bytes_count_255 (buffer translate Byte 
    if write>0
      c:image fill c:tx+x+i c:ty+y write pixel
    eif i<>count
      error error_id_missing "Partial transparency is not im
    i += write
  c:buffers free buffer

method c fill x y count pixel
  oarg_rw ImageClip c ; arg Int x y count ; arg Address pixe
  var Address buffer := c:buffers allocate
  c:clip read x y count buffer
  var Int i := 0
  while i<count
    var Int skip := bytes_count_0 (buffer translate Byte i) 
    i += skip
    var Int write := bytes_count_255 (buffer translate Byte 
    if write>0
      c:image fill c:tx+x+i c:ty+y write pixel
    eif i<>count
      error error_id_missing "Partial transparency is not im
    i += write
  c:buffers free buffer

export ImageClip '. bind'

method c clip x0 y0 x1 y1
  oarg ImageClip c ; arg_rw Int x0 y0 x1 y1
  x0 := max x0 0
  y0 := max y0 0
  x1 := min x1 c:size_x
  y1 := min y1 c:size_y
  x0 += c tx ; y0 += c ty ; x1 += c tx ; y1 += c ty
  c:image clip x0 y0 x1 y1
  x0 -= c tx ; y0 -= c ty ; x1 -= c tx ; y1 -= c ty


export ImageClip '. bind' '. image'