@Override public Figure findFigureExcept(Point2D.Double p, Collection<? extends Figure> ignore) { for (Figure f : getFiguresFrontToBack()) { if (!ignore.contains(f) && f.isVisible() && f.contains(p)) { return f; } } return null; }
@Override public Figure findFigureBehind(Point2D.Double p, Collection<? extends Figure> children) { int inFrontOf = children.size(); for (Figure f : getFiguresFrontToBack()) { if (inFrontOf == 0) { if (f.isVisible() && f.contains(p)) { return f; } } else { if (children.contains(f)) { inFrontOf--; } } } return null; }
@Override public Figure findFigure(Point2D.Double p) { for (Figure f : getFiguresFrontToBack()) { if (f.isVisible() && f.contains(p)) { return f; } } return null; }
@Override public Figure findFigureExcept(Point2D.Double p, Figure ignore) { for (Figure f : getFiguresFrontToBack()) { if (f != ignore && f.isVisible() && f.contains(p)) { return f; } } return null; }
@Override public Figure findFigureBehind(Point2D.Double p, Figure figure) { boolean isBehind = false; for (Figure f : getFiguresFrontToBack()) { if (isBehind) { if (f.isVisible() && f.contains(p)) { return f; } } else { isBehind = figure == f; } } return null; }