/usr/include/geos/geom/prep/PreparedGeometry.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 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 | /**********************************************************************
* $Id: PreparedGeometry.h 2418 2009-04-29 08:15:21Z 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/PreparedGeometry.java rev. 1.11 (JTS-1.10)
*
**********************************************************************/
#ifndef GEOS_GEOM_PREP_PREPAREDGEOMETRY_H
#define GEOS_GEOM_PREP_PREPAREDGEOMETRY_H
// Forward declarations
namespace geos {
namespace geom {
class Geometry;
}
}
namespace geos {
namespace geom { // geos::geom
namespace prep { // geos::geom::prep
/**
* \class PreparedGeometry
*
* \brief
* An interface for classes which prepare {@link Geometry}s
* in order to optimize the performance
* of repeated calls to specific geometric operations.
*
* A given implementation may provide optimized implementations
* for only some of the specified methods,
* and delegate the remaining methods to the original {@link Geometry} operations.
* An implementation may also only optimize certain situations,
* and delegate others.
* See the implementing classes for documentation about which methods and situations
* they optimize.
*
*/
class PreparedGeometry {
public:
virtual ~PreparedGeometry() {};
/**
* Gets the original {@link Geometry} which has been prepared.
*
* @return the base geometry
*/
virtual const geom::Geometry & getGeometry() const =0;
/**
* Tests whether the base {@link Geometry} contains a given geometry.
*
* @param geom the Geometry to test
* @return true if this Geometry contains the given Geometry
*
* @see Geometry#contains(Geometry)
*/
virtual bool contains(const geom::Geometry *geom) const =0;
/** \brief
* Tests whether the base {@link Geometry} properly contains
* a given geometry.
*
* The <code>containsProperly</code> predicate has the following
* equivalent definitions:
*
* - Every point of the other geometry is a point of this
* geometry's interior.
* - The DE-9IM Intersection Matrix for the two geometries matches
* <code>[T**FF*FF*]</code>
*
* In other words, if the test geometry has any interaction with
* the boundary of the target
* geometry the result of <tt>containsProperly</tt> is <tt>false</tt>.
* This is different semantics to the {@link Geometry::contains}
* predicate, * in which test geometries can intersect the target's
* boundary and still be contained.
*
* The advantage of using this predicate is that it can be computed
* efficiently, since it avoids the need to compute the full
* topological relationship of the input boundaries in cases where
* they intersect.
*
* An example use case is computing the intersections
* of a set of geometries with a large polygonal geometry.
* Since <tt>intersection</tt> is a fairly slow operation, it can
* be more efficient
* to use <tt>containsProperly</tt> to filter out test geometries
* which lie
* wholly inside the area. In these cases the intersection is
* known <i>a priori</i> to be exactly the original test geometry.
*
* @param geom the Geometry to test
* @return true if this Geometry properly contains the given Geometry
*
* @see Geometry::contains
*
*/
virtual bool containsProperly(const geom::Geometry *geom) const =0;
/**
* Tests whether the base {@link Geometry} is covered by a given geometry.
*
* @param geom the Geometry to test
* @return true if this Geometry is covered by the given Geometry
*
* @see Geometry#coveredBy(Geometry)
*/
virtual bool coveredBy(const geom::Geometry *geom) const =0;
/**
* Tests whether the base {@link Geometry} covers a given geometry.
*
* @param geom the Geometry to test
* @return true if this Geometry covers the given Geometry
*
* @see Geometry#covers(Geometry)
*/
virtual bool covers(const geom::Geometry *geom) const =0;
/**
* Tests whether the base {@link Geometry} crosses a given geometry.
*
* @param geom the Geometry to test
* @return true if this Geometry crosses the given Geometry
*
* @see Geometry#crosses(Geometry)
*/
virtual bool crosses(const geom::Geometry *geom) const =0;
/**
* Tests whether the base {@link Geometry} is disjoint from a given geometry.
*
* @param geom the Geometry to test
* @return true if this Geometry is disjoint from the given Geometry
*
* @see Geometry#disjoint(Geometry)
*/
virtual bool disjoint(const geom::Geometry *geom) const =0;
/**
* Tests whether the base {@link Geometry} intersects a given geometry.
*
* @param geom the Geometry to test
* @return true if this Geometry intersects the given Geometry
*
* @see Geometry#intersects(Geometry)
*/
virtual bool intersects(const geom::Geometry *geom) const =0;
/**
* Tests whether the base {@link Geometry} overlaps a given geometry.
*
* @param geom the Geometry to test
* @return true if this Geometry overlaps the given Geometry
*
* @see Geometry#overlaps(Geometry)
*/
virtual bool overlaps(const geom::Geometry *geom) const =0;
/**
* Tests whether the base {@link Geometry} touches a given geometry.
*
* @param geom the Geometry to test
* @return true if this Geometry touches the given Geometry
*
* @see Geometry#touches(Geometry)
*/
virtual bool touches(const geom::Geometry *geom) const =0;
/**
* Tests whether the base {@link Geometry} is within a given geometry.
*
* @param geom the Geometry to test
* @return true if this Geometry is within the given Geometry
*
* @see Geometry#within(Geometry)
*/
virtual bool within(const geom::Geometry *geom) const =0;
};
} // namespace geos::geom::prep
} // namespace geos::geom
} // namespace geos
#endif // ndef GEOS_GEOM_PREP_PREPAREDGEOMETRY_H
/**********************************************************************
* $Log$
**********************************************************************/
|