protected Point2D.Double chop(Figure target, Point2D.Double from) { target = getConnectorTarget(target); Rectangle2D.Double r = target.getBounds(); if (STROKE_COLOR.get(target) != null) { double grow; switch (STROKE_PLACEMENT.get(target)) { case CENTER: default: grow = AttributeKeys.getStrokeTotalWidth(target) / 2d; break; case OUTSIDE: grow = AttributeKeys.getStrokeTotalWidth(target); break; case INSIDE: grow = 0d; break; } Geom.grow(r, grow, grow); } return Geom.angleToPoint(r, Geom.pointToAngle(r, from)); }