GEOS  3.3.3
EdgeEndBundle.h
1 /**********************************************************************
2  * $Id: EdgeEndBundle.h 2557 2009-06-08 09:30:55Z strk $
3  *
4  * GEOS - Geometry Engine Open Source
5  * http://geos.refractions.net
6  *
7  * Copyright (C) 2006 Refractions Research Inc.
8  *
9  * This is free software; you can redistribute and/or modify it under
10  * the terms of the GNU Lesser General Public Licence as published
11  * by the Free Software Foundation.
12  * See the COPYING file for more information.
13  *
14  **********************************************************************
15  *
16  * Last port: operation/relate/EdgeEndBundle.java rev. 1.17 (JTS-1.10)
17  *
18  **********************************************************************/
19 
20 #ifndef GEOS_OP_RELATE_EDGEENDBUNDLE_H
21 #define GEOS_OP_RELATE_EDGEENDBUNDLE_H
22 
23 #include <geos/export.h>
24 
25 #include <geos/geomgraph/EdgeEnd.h> // for EdgeEndBundle inheritance
26 
27 #include <string>
28 
29 // Forward declarations
30 namespace geos {
31  namespace algorithm {
32  class BoundaryNodeRule;
33  }
34  namespace geom {
35  class IntersectionMatrix;
36  }
37 }
38 
39 
40 namespace geos {
41 namespace operation { // geos::operation
42 namespace relate { // geos::operation::relate
43 
48 class GEOS_DLL EdgeEndBundle: public geomgraph::EdgeEnd
49 {
50 public:
52  virtual ~EdgeEndBundle();
53  geomgraph::Label *getLabel();
54  std::vector<geomgraph::EdgeEnd*>* getEdgeEnds();
55  void insert(geomgraph::EdgeEnd *e);
56 
57  void computeLabel(const algorithm::BoundaryNodeRule& bnr);
58 
59  void updateIM(geom::IntersectionMatrix *im);
60  std::string print();
61 protected:
62  std::vector<geomgraph::EdgeEnd*> *edgeEnds;
63 
93  void computeLabelOn(int geomIndex,
94  const algorithm::BoundaryNodeRule& boundaryNodeRule);
95 
96  void computeLabelSides(int geomIndex);
97  void computeLabelSide(int geomIndex,int side);
98 };
99 
100 } // namespace geos:operation:relate
101 } // namespace geos:operation
102 } // namespace geos
103 
104 #endif // GEOS_OP_RELATE_EDGEENDBUNDLE_H
105 
106 /**********************************************************************
107  * $Log$
108  * Revision 1.1 2006/03/21 13:11:29 strk
109  * opRelate.h header split
110  *
111  **********************************************************************/
112