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