00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef GEOS_INDEX_SWEEPLINE_SWEEPLINEEVENT_H
00017 #define GEOS_INDEX_SWEEPLINE_SWEEPLINEEVENT_H
00018
00019
00020 namespace geos {
00021 namespace index {
00022 namespace sweepline {
00023 class SweepLineInterval;
00024 }
00025 }
00026 }
00027
00028 namespace geos {
00029 namespace index {
00030 namespace sweepline {
00031
00032 class SweepLineEvent {
00033
00034 public:
00035
00036 enum {
00037 INSERT_EVENT = 1,
00038 DELETE_EVENT
00039 };
00040
00041 SweepLineEvent(double x, SweepLineEvent *newInsertEvent,
00042 SweepLineInterval *newSweepInt);
00043
00044 bool isInsert();
00045
00046 bool isDelete();
00047
00048 SweepLineEvent* getInsertEvent();
00049
00050 int getDeleteEventIndex();
00051
00052 void setDeleteEventIndex(int newDeleteEventIndex);
00053
00054 SweepLineInterval* getInterval();
00055
00062 int compareTo(const SweepLineEvent *pe) const;
00063
00064
00065
00066 private:
00067
00068 double xValue;
00069
00070 int eventType;
00071
00073 SweepLineEvent *insertEvent;
00074
00075 int deleteEventIndex;
00076
00077 SweepLineInterval *sweepInt;
00078
00079 };
00080
00081
00082
00083
00084 struct SweepLineEventLessThen {
00085 bool operator() (const SweepLineEvent* first, const SweepLineEvent* second) const;
00086 };
00087
00088
00089
00090
00091 }
00092 }
00093 }
00094
00095 #endif // GEOS_INDEX_SWEEPLINE_SWEEPLINEEVENT_H
00096
00097
00098
00099
00100
00101
00102
00103