## com.vividsolutions.jts.geom.prep
Class AbstractPreparedPolygonContains

    java.lang.Object
      com.vividsolutions.jts.geom.prep.PreparedPolygonPredicate
          com.vividsolutions.jts.geom.prep.AbstractPreparedPolygonContains

Direct Known Subclasses:
  PreparedPolygonContains, PreparedPolygonCovers

public abstract class AbstractPreparedPolygonContains
extends PreparedPolygonPredicate

A base class containing the logic for computes the `contains` and `covers` spatial relationship predicates for a `PreparedPolygon` relative to all other `Geometry` classes. Uses short-circuit tests and indexing to improve performance.

Contains and covers are very similar, and differ only in how certain cases along the boundary are handled. These cases require full topological evaluation to handle, so all the code in this class is common to both predicates.

It is not possible to short-circuit in all cases, in particular in the case where line segments of the test geometry touches the polygon linework. In this case full topology must be computed. (However, if the test geometry consists of only points, this can be evaluated in an optimized fashion.

Author:
  Martin Davis

Field Summary
`protected boolean` `requireSomePointInInterior` This flag controls a difference between contains and covers.

Fields inherited from class com.vividsolutions.jts.geom.prep.PreparedPolygonPredicate
`prepPoly`

Constructor Summary
`AbstractPreparedPolygonContains(PreparedPolygon prepPoly)` Creates an instance of this operation.

Method Summary
`protected boolean` `eval(Geometry geom)` Evaluate the `contains` or `covers` relationship for the given geometry.
`protected abstract boolean` `fullTopologicalPredicate(Geometry geom)` Computes the full topological predicate.

Methods inherited from class com.vividsolutions.jts.geom.prep.PreparedPolygonPredicate
`isAllTestComponentsInTarget, isAllTestComponentsInTargetInterior, isAnyTargetComponentInAreaTest, isAnyTestComponentInTarget, isAnyTestComponentInTargetInterior`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### requireSomePointInInterior

    protected boolean requireSomePointInInterior

  This flag controls a difference between contains and covers. For contains the value is true. For covers the value is false.

Constructor Detail

### AbstractPreparedPolygonContains

    public AbstractPreparedPolygonContains(PreparedPolygon prepPoly)

  Creates an instance of this operation.

Parameters:
  `prepPoly` - the PreparedPolygon to evaluate

Method Detail

### eval

    protected boolean eval(Geometry geom)

  Evaluate the `contains` or `covers` relationship for the given geometry.

  Parameters:
    `geom` - the test geometry
  Returns:
    true if the test geometry is contained

### fullTopologicalPredicate

    protected abstract boolean fullTopologicalPredicate(Geometry geom)

  Computes the full topological predicate. Used when short-circuit tests are not conclusive.

  Parameters:
    `geom` - the test geometry
  Returns:
    true if this prepared polygon has the relationship with the test geometry