public void processTile(int r, int c,
                          int ulx, int uly,
                          int width, int height,
                          double left, double bottom,
                          double right, double top) {

    super.processTile(r, c,
                      ulx, uly,
                      width, height,
                      left, bottom, right, top);

    if (!individualTiles)
      return;

    if (imageWriter == null)
      return;

    String rText = Integer.toString(r);
    for (int i = 0; i < 3; i++)
      if (rText.length() < 3)
        rText = "0" + rText;
    
    String cText = Integer.toString(c);
    for (int i = 0; i < 3; i++)
      if (cText.length() < 3)
        cText = "0" + cText;
    
    File file = new File(fileNameBase +
                         "-" + rText + "-" + cText +
                         "." + fileNameSuffix);
    
    if ((width == tile.getWidth()) && (height == tile.getHeight())) {
      saveFile(file, tile);
    } else {
      BufferedImage cropTile  = display.makeBufferedImage(width, height);
      Graphics2D cropG2D = (Graphics2D) (cropTile.getGraphics());
      cropG2D.drawRenderedImage(tile, new AffineTransform());
      cropG2D.dispose();
      saveFile(file, cropTile);
    }
  }