/usr/include/geos/operation/overlay/LineBuilder.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 | /**********************************************************************
* $Id: LineBuilder.h 2565 2009-06-08 16:26:36Z 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: operation/overlay/LineBuilder.java rev. 1.15 (JTS-1.10)
*
**********************************************************************/
#ifndef GEOS_OP_OVERLAY_LINEBUILDER_H
#define GEOS_OP_OVERLAY_LINEBUILDER_H
#include <geos/export.h>
#include <geos/operation/overlay/OverlayOp.h> // for OverlayOp::OpCode enum
#include <vector>
// Forward declarations
namespace geos {
namespace geom {
class GeometryFactory;
class CoordinateSequence;
class LineString;
}
namespace geomgraph {
class DirectedEdge;
class Edge;
}
namespace algorithm {
class PointLocator;
}
namespace operation {
namespace overlay {
class OverlayOp;
}
}
}
namespace geos {
namespace operation { // geos::operation
namespace overlay { // geos::operation::overlay
/** \brief
* Forms JTS LineStrings out of a the graph of geomgraph::DirectedEdge
* created by an OverlayOp.
*
*/
class GEOS_DLL LineBuilder {
public:
LineBuilder(OverlayOp *newOp,
const geom::GeometryFactory *newGeometryFactory,
algorithm::PointLocator *newPtLocator);
~LineBuilder();
/**
* @return a list of the LineStrings in the result of the specified overlay operation
*/
std::vector<geom::LineString*>* build(OverlayOp::OpCode opCode);
/**
* Collect line edges which are in the result.
*
* Line edges are in the result if they are not part of
* an area boundary, if they are in the result of the overlay operation,
* and if they are not covered by a result area.
*
* @param de the directed edge to test.
* @param opCode the overlap operation
* @param edges the list of included line edges.
*/
void collectLineEdge(geomgraph::DirectedEdge *de,
OverlayOp::OpCode opCode,
std::vector<geomgraph::Edge*>* edges);
private:
OverlayOp *op;
const geom::GeometryFactory *geometryFactory;
algorithm::PointLocator *ptLocator;
std::vector<geomgraph::Edge*> lineEdgesList;
std::vector<geom::LineString*>* resultLineList;
void findCoveredLineEdges();
void collectLines(OverlayOp::OpCode opCode);
void buildLines(OverlayOp::OpCode opCode);
void labelIsolatedLines(std::vector<geomgraph::Edge*> *edgesList);
/**
* Collect edges from Area inputs which should be in the result but
* which have not been included in a result area.
* This happens ONLY:
*
* - during an intersection when the boundaries of two
* areas touch in a line segment
* - OR as a result of a dimensional collapse.
*
*/
void collectBoundaryTouchEdge(geomgraph::DirectedEdge *de,
OverlayOp::OpCode opCode,
std::vector<geomgraph::Edge*>* edges);
/**
* Label an isolated node with its relationship to the target geometry.
*/
void labelIsolatedLine(geomgraph::Edge *e, int targetIndex);
/*
* If the given CoordinateSequence has mixed 3d/2d vertexes
* set Z for all vertexes missing it.
* The Z value is interpolated between 3d vertexes and copied
* from a 3d vertex to the end.
*/
void propagateZ(geom::CoordinateSequence *cs);
};
} // namespace geos::operation::overlay
} // namespace geos::operation
} // namespace geos
#endif // ndef GEOS_OP_OVERLAY_LINEBUILDER_H
/**********************************************************************
* $Log$
* Revision 1.2 2006/06/05 15:36:34 strk
* Given OverlayOp funx code enum a name and renamed values to have a lowercase prefix. Drop all of noding headers from installed header set.
*
* Revision 1.1 2006/03/17 13:24:59 strk
* opOverlay.h header splitted. Reduced header inclusions in operation/overlay implementation files. ElevationMatrixFilter code moved from own file to ElevationMatrix.cpp (ideally a class-private).
*
**********************************************************************/
|