/usr/include/geos/geom/prep/AbstractPreparedPolygonContains.h is in libgeos-dev 3.2.2-3ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 | /**********************************************************************
* $Id: AbstractPreparedPolygonContains.h 2420 2009-04-29 08:56:14Z strk $
*
* GEOS - Geometry Engine Open Source
* http://geos.refractions.net
*
* Copyright (C) 2006 Refractions Research Inc.
*
* This is free software; you can redistribute and/or modify it under
* the terms of the GNU Lesser General Public Licence as published
* by the Free Software Foundation.
* See the COPYING file for more information.
*
*
**********************************************************************
*
* Last port: geom/prep/AbstractPreparedPolygonContains.java rev 1.7 (JTS-1.10)
* (2007-12-12)
*
**********************************************************************/
#ifndef GEOS_GEOM_PREP_ABSTRACTPREPAREDPOLYGONCONTAINS_H
#define GEOS_GEOM_PREP_ABSTRACTPREPAREDPOLYGONCONTAINS_H
#include <geos/geom/prep/PreparedPolygonPredicate.h> // inherited
// forward declarations
namespace geos {
namespace geom {
class Geometry;
namespace prep {
class PreparedPolygon;
}
}
}
namespace geos {
namespace geom { // geos::geom
namespace prep { // geos::geom::prep
/**
* \brief
* A base class containing the logic for computes the <tt>contains</tt>
* and <tt>covers</tt> spatial relationship predicates
* for a {@link PreparedPolygon} relative to all other {@link 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
* <i>can</i> be evaluated in an optimized fashion.
*
* @author Martin Davis
*
*/
class AbstractPreparedPolygonContains : public PreparedPolygonPredicate
{
private:
// information about geometric situation
bool hasSegmentIntersection;
bool hasProperIntersection;
bool hasNonProperIntersection;
bool isProperIntersectionImpliesNotContainedSituation( const geom::Geometry * testGeom);
/**
* Tests whether a geometry consists of a single polygon with no holes.
*
* @return true if the geometry is a single polygon with no holes
*/
bool isSingleShell( const geom::Geometry & geom);
void findAndClassifyIntersections( const geom::Geometry * geom);
protected:
/**
* This flag controls a difference between contains and covers.
*
* For contains the value is true.
* For covers the value is false.
*/
bool requireSomePointInInterior;
/**
* Evaluate the <tt>contains</tt> or <tt>covers</tt> relationship
* for the given geometry.
*
* @param geom the test geometry
* @return true if the test geometry is contained
*/
bool eval( const geom::Geometry * geom);
/**
* Computes the full topological predicate.
* Used when short-circuit tests are not conclusive.
*
* @param geom the test geometry
* @return true if this prepared polygon has the relationship with the test geometry
*/
virtual bool fullTopologicalPredicate( const geom::Geometry * geom) =0;
public:
AbstractPreparedPolygonContains( const PreparedPolygon * const prepPoly)
: PreparedPolygonPredicate( prepPoly),
hasSegmentIntersection( false),
hasProperIntersection( false),
hasNonProperIntersection( false),
requireSomePointInInterior(true)
{ }
AbstractPreparedPolygonContains( const PreparedPolygon * const prepPoly, bool requireSomePointInInterior)
: PreparedPolygonPredicate( prepPoly),
hasSegmentIntersection( false),
hasProperIntersection( false),
hasNonProperIntersection( false),
requireSomePointInInterior(requireSomePointInInterior)
{ }
virtual ~AbstractPreparedPolygonContains()
{ }
};
} // geos::geom::prep
} // geos::geom
} // geos
#endif // GEOS_GEOM_PREP_ABSTRACTPREPAREDPOLYGONCONTAINS_H
/**********************************************************************
* $Log$
**********************************************************************/
|