applications.collages.collageAlgebra:
attributes r,g,b,f,r-dest,g-dest,b-dest;
{
  delta = const(.8),
  
  ntColour = const(.8),
  sample-outline = { polyline((0,0),(10,0),(10,10),(0,10),(0,1.5)) },
  sample-filled = { filledPolygon((0,0),(10,0),(10,10),(0,10))[#ntColour] }
                       + #sample-outline,
  sample-arrow = { filledPolygon((0,0),(.45,1.5),(-.45,1.5))[#ntColour],
                                 polygon((0,0),(.45,1.5),(-.45,1.5))},
  S = #sample-filled + #sample-outline + #sample-arrow,
  
  sq = { filledPolygon((0,0),(10,0),(10,10),(0,10))<r,g,b; r-dest=.5> },

  f = similarity((0,0) -> (#delta,0), (10,0) -> (10,#delta)),
  F = <#sq, f>,
  
  g1 = scale(1/2),
  g2 = scale(1/2) . translate(5,0),
  g3 = scale(1/2) . translate(0,5),
  g4 = scale(1/2) . translate(5,5),
  G = <g1,g2,g3,g4>,
  
  set = colourOperation(r|val(f):val(r-dest),g|val(f):val(g-dest),b|val(f):val(b-dest)),
  inc = colourOperation(f|.05:1),
  r0 = colourOperation(r-dest|.5:0),
  r1 = colourOperation(r-dest|.5:1),
  g0 = colourOperation(g-dest|.5:0),
  g1 = colourOperation(g-dest|.5:1),
  b0 = colourOperation(b-dest|.5:0),
  b1 = colourOperation(b-dest|.5:1)
  
}
