GEOS 3.6.2
geomgraph/index/SweepLineEvent.h
1/**********************************************************************
2 *
3 * GEOS - Geometry Engine Open Source
4 * http://geos.osgeo.org
5 *
6 * Copyright (C) 2005-2006 Refractions Research Inc.
7 * Copyright (C) 2001-2002 Vivid Solutions 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#ifndef GEOS_GEOMGRAPH_INDEX_SWEEPLINEEVENT_H
17#define GEOS_GEOMGRAPH_INDEX_SWEEPLINEEVENT_H
18
19
20#include <geos/export.h>
21#include <string>
22
23// Forward declarations
24namespace geos {
25 namespace geomgraph {
26 namespace index {
27 class SweepLineEventOBJ;
28 }
29 }
30}
31
32namespace geos {
33namespace geomgraph { // geos::geomgraph
34namespace index { // geos::geomgraph::index
35
36//class SweepLineEventLessThen; // needed ??
37
38class GEOS_DLL SweepLineEvent{
39friend class SweepLineEventLessThen;
40
41public:
42
43 enum {
44 INSERT_EVENT = 1,
45 DELETE_EVENT
46 };
47
48 SweepLineEvent(void* newEdgeSet, double x,
49 SweepLineEvent *newInsertEvent,
50 SweepLineEventOBJ *newObj);
51
52 virtual ~SweepLineEvent();
53
54 bool isInsert() { return insertEvent==NULL; }
55
56 bool isDelete() { return insertEvent!=NULL; }
57
58 SweepLineEvent* getInsertEvent() { return insertEvent; }
59
60 int getDeleteEventIndex() { return deleteEventIndex; }
61
62 void setDeleteEventIndex(int newDeleteEventIndex) {
63 deleteEventIndex=newDeleteEventIndex;
64 }
65
66 SweepLineEventOBJ* getObject() const { return obj; }
67
68 int compareTo(SweepLineEvent *sle);
69
70 std::string print();
71
72 void* edgeSet; // used for red-blue intersection detection
73
74protected:
75
76 SweepLineEventOBJ* obj;
77
78private:
79
80 double xValue;
81
82 int eventType;
83
84 SweepLineEvent *insertEvent; // null if this is an INSERT_EVENT event
85
86 int deleteEventIndex;
87};
88
89class GEOS_DLL SweepLineEventLessThen {
90public:
91 bool operator()(const SweepLineEvent *f, const SweepLineEvent *s) const
92 {
93 if (f->xValue<s->xValue) return true;
94 if (f->xValue>s->xValue) return false;
95 if (f->eventType<s->eventType) return true;
96 return false;
97 }
98};
99
100
101
102} // namespace geos.geomgraph.index
103} // namespace geos.geomgraph
104} // namespace geos
105
106#endif
107
Contains classes that implement topology graphs.
Definition IndexedNestedRingTester.h:34
Basic namespace for all GEOS functionalities.
Definition IndexedNestedRingTester.h:25