GEOS 3.11.1
TaggedLineSegment.h
1/**********************************************************************
2 *
3 * GEOS - Geometry Engine Open Source
4 * http://geos.osgeo.org
5 *
6 * Copyright (C) 2006 Refractions Research Inc.
7 *
8 * This is free software; you can redistribute and/or modify it under
9 * the terms of the GNU Lesser General Licence as published
10 * by the Free Software Foundation.
11 * See the COPYING file for more information.
12 *
13 **********************************************************************
14 *
15 * Last port: simplify/TaggedLineSegment.java rev. 1.1 (JTS-1.7)
16 *
17 **********************************************************************
18 *
19 * NOTES: Use of this class by DP simplification algorithms
20 * makes it useless for a TaggedLineSegment to store copies
21 * of coordinates. Using pointers would be good enough here.
22 * We don't do it to avoid having to break inheritance from
23 * LineSegment, which has copies intead. Wheter LineSegment
24 * itself should be refactored can be discussed.
25 * --strk 2006-04-12
26 *
27 **********************************************************************/
28
29#pragma once
30
31#include <geos/export.h>
32#include <geos/geom/LineSegment.h> // for inheritance
33
34
35// Forward declarations
36namespace geos {
37namespace geom {
38class Coordinate;
39class Geometry;
40}
41}
42
43namespace geos {
44namespace simplify { // geos::simplify
45
46
53class GEOS_DLL TaggedLineSegment: public geom::LineSegment {
54
55public:
56
58 const geom::Coordinate& p1,
59 const geom::Geometry* parent,
60 std::size_t index);
61
63 const geom::Coordinate& p1);
64
66
67 const geom::Geometry* getParent() const;
68
69 std::size_t getIndex() const;
70
71private:
72
73 const geom::Geometry* parent;
74
75 std::size_t index;
76
77};
78
79
80
81} // namespace geos::simplify
82} // namespace geos
83
Coordinate is the lightweight class used to store coordinates.
Definition: Coordinate.h:58
Basic implementation of Geometry, constructed and destructed by GeometryFactory.
Definition: Geometry.h:186
Definition: LineSegment.h:60
A geom::LineSegment which is tagged with its location in a geom::Geometry.
Definition: TaggedLineSegment.h:53
Basic namespace for all GEOS functionalities.
Definition: geos.h:39