  draw: function(field, canvasImage){
    var buffer32 = canvasImage.buffer32;
    var width = canvasImage.width;
    var height = canvasImage.height;
    for (var y=0; y<height; ++y)
      for (var x=0; x<width; ++x)
        buffer32[y*width+x] = field(x, y);
    canvasImage.imageData.data.set(canvasImage.buffer8);
    canvasImage.context.putImageData(canvasImage.imageData, 0, 0);
    return canvasImage;
  }