/*-------------------------------------------------------------------------*/
  public void paint(Graphics g) {
    Graphics2D g2d = (Graphics2D) g.create();

    Portal[] portals = zone.getPortals();

    if (display.displayFeatures.get(MapDisplay.Display.PORTALS)) {
      for (Portal portal : portals) {
        int fromIndex = calcIndex(portal.getFrom());
        int toIndex = calcIndex(portal.getTo());

        Rectangle fromBounds = display.getTileBounds(fromIndex);
        Rectangle toBounds = display.getTileBounds(toIndex);
        int tileSize = display.tileSize * display.zoomLevel;
        int offset = tileSize / 4;
        int diameter = tileSize / 2;

        g2d.setColor(Color.WHITE);
        g2d.drawLine(
            fromBounds.x + tileSize / 2 + 1,
            fromBounds.y + tileSize / 2 + 1,
            toBounds.x + tileSize / 2 + 1,
            toBounds.y + tileSize / 2 + 1);
        g2d.setColor(Color.BLACK);
        g2d.drawLine(
            fromBounds.x + tileSize / 2,
            fromBounds.y + tileSize / 2,
            toBounds.x + tileSize / 2,
            toBounds.y + tileSize / 2);

        g2d.setColor(Color.WHITE);
        g2d.drawOval(fromBounds.x + offset + 1, fromBounds.y + offset + 1, diameter, diameter);
        g2d.setColor(Color.BLACK);
        g2d.drawOval(fromBounds.x + offset, fromBounds.y + offset, diameter, diameter);

        if (portal.isTwoWay()) {
          g2d.setColor(Color.WHITE);
          g2d.drawOval(toBounds.x + offset + 1, toBounds.y + offset + 1, diameter, diameter);
          g2d.setColor(Color.BLACK);
          g2d.drawOval(toBounds.x + offset, toBounds.y + offset, diameter, diameter);
        }
      }
    }
  }
 /*-------------------------------------------------------------------------*/
 private int calcIndex(Point p) {
   int width = zone.getWidth();
   return p.y * width + p.x % width;
 }