@Override
  public void drawShadow(
      IBNAView view, ICoordinateMapper cm, GL2 gl, Rectangle clip, IResources r) {
    Rectangle lbb = BNAUtils.getLocalBoundingBox(cm, t);
    if (!clip.intersects(lbb)) {
      return;
    }

    Shape localShape = new Ellipse2D.Float(lbb.x, lbb.y, lbb.width, lbb.height);

    r.setColor(new RGB(0, 0, 0), 1f);
    BNAUtils.renderShapeFill(view, cm, gl, clip, r, localShape);
  }
  @Override
  public void draw(IBNAView view, ICoordinateMapper cm, GL2 gl, Rectangle clip, IResources r) {
    Rectangle lbb = BNAUtils.getLocalBoundingBox(cm, t);
    if (!clip.intersects(lbb)) {
      return;
    }

    Shape localShape = new Ellipse2D.Float(lbb.x, lbb.y, lbb.width, lbb.height);

    BNAUtils.renderShapeFill(t, view, cm, gl, clip, r, localShape);
    for (int count = 0; count < t.getCount(); count++) {
      int offset = count * 2 * t.getLineWidth();
      Shape edgeShape =
          new Ellipse2D.Float(
              lbb.x + offset, lbb.y + offset, lbb.width - 2 * offset, lbb.height - 2 * offset);
      BNAUtils.renderShapeEdge(t, view, cm, gl, clip, r, edgeShape);
    }
    BNAUtils.renderShapeSelected(t, view, cm, gl, clip, r, localShape);
  }