/* * Copyright (c) 2016 Vivid Solutions. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * and Eclipse Distribution License v. 1.0 which accompanies this distribution. * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html * and the Eclipse Distribution License is available at * * http://www.eclipse.org/org/documents/edl-v10.php. */ package org.locationtech.jts.geom; /** * <code>Geometry</code> classes support the concept of applying * a <code>GeometryComponentFilter</code> * filter to the <code>Geometry</code>. * The filter is applied to every component of the <code>Geometry</code> * which is itself a <code>Geometry</code> * and which does not itself contain any components. * (For instance, all the {@link LinearRing}s in {@link Polygon}s are visited, * but in a {@link MultiPolygon} the {@link Polygon}s themselves are not visited.) * Thus the only classes of Geometry which must be * handled as arguments to {@link #filter} * are {@link LineString}s, {@link LinearRing}s and {@link Point}s. * <p> * A <code>GeometryComponentFilter</code> filter can either * record information about the <code>Geometry</code> * or change the <code>Geometry</code> in some way. * <code>GeometryComponentFilter</code> * is an example of the Gang-of-Four Visitor pattern. * *@version 1.7 */ public interface GeometryComponentFilter { /** * Performs an operation with or on <code>geom</code>. * *@param geom a <code>Geometry</code> to which the filter is applied. */ void filter(Geometry geom); }