- Main Page
- Related Pages
- Namespaces
- Classes
- Files

- File List

# SweepLineEvent.h

    00001 /**********************************************************************
    00002  * $Id: SweepLineEvent.h 2556 2009-06-06 22:22:28Z strk $
    00003  *
    00004  * GEOS - Geometry Engine Open Source
    00005  * http://geos.refractions.net
    00006  *
    00007  * Copyright (C) 2005-2006 Refractions Research Inc.
    00008  * Copyright (C) 2001-2002 Vivid Solutions Inc.
    00009  *
    00010  * This is free software; you can redistribute and/or modify it under
    00011  * the terms of the GNU Lesser General Public Licence as published
    00012  * by the Free Software Foundation.
    00013  * See the COPYING file for more information.
    00014  *
    00015  **********************************************************************/
    00016
    00017 #ifndef GEOS_GEOMGRAPH_INDEX_SWEEPLINEEVENT_H
    00018 #define GEOS_GEOMGRAPH_INDEX_SWEEPLINEEVENT_H
    00019
    00020
    00021 #include <geos/export.h>
    00022 #include <string>
    00023
    00024 // Forward declarations
    00025 namespace geos {
    00026         namespace geomgraph {
    00027                 namespace index {
    00028                         class SweepLineEventOBJ;
    00029                 }
    00030         }
    00031 }
    00032
    00033 namespace geos {
    00034 namespace geomgraph { // geos::geomgraph
    00035 namespace index { // geos::geomgraph::index
    00036
    00037 //class SweepLineEventLessThen; // needed ??
    00038
    00039 class GEOS_DLL SweepLineEvent{
    00040 friend class SweepLineEventLessThen;
    00041
    00042 public:
    00043
    00044         enum {
    00045                 INSERT_EVENT = 1,
    00046                 DELETE_EVENT
    00047         };
    00048
    00049         SweepLineEvent(void* newEdgeSet, double x,
    00050                         SweepLineEvent *newInsertEvent,
    00051                         SweepLineEventOBJ *newObj);
    00052
    00053         virtual ~SweepLineEvent();
    00054
    00055         bool isInsert() { return insertEvent==NULL; }
    00056
    00057         bool isDelete() { return insertEvent!=NULL; }
    00058
    00059         SweepLineEvent* getInsertEvent() { return insertEvent; }
    00060
    00061         int getDeleteEventIndex() { return deleteEventIndex; }
    00062
    00063         void setDeleteEventIndex(int newDeleteEventIndex) {
    00064                 deleteEventIndex=newDeleteEventIndex;
    00065         }
    00066
    00067         SweepLineEventOBJ* getObject() const { return obj; }
    00068
    00069         int compareTo(SweepLineEvent *sle);
    00070
    00071         std::string print();
    00072
    00073         void* edgeSet;    // used for red-blue intersection detection
    00074
    00075 protected:
    00076
    00077         SweepLineEventOBJ* obj;
    00078
    00079 private:
    00080
    00081         double xValue;
    00082
    00083         int eventType;
    00084
    00085         SweepLineEvent *insertEvent; // null if this is an INSERT_EVENT event
    00086
    00087         int deleteEventIndex;
    00088 };
    00089
    00090 class GEOS_DLL SweepLineEventLessThen {
    00091 public:
    00092         bool operator()(const SweepLineEvent *f, const SweepLineEvent *s) const
    00093         {
    00094                 if (f->xValue<s->xValue) return true;
    00095                 if (f->xValue>s->xValue) return false;
    00096                 if (f->eventType<s->eventType) return true;
    00097                 return false;
    00098         }
    00099 };
    00100
    00101
    00102
    00103 } // namespace geos.geomgraph.index
    00104 } // namespace geos.geomgraph
    00105 } // namespace geos
    00106
    00107 #endif
    00108
    00109 /**********************************************************************
    00110  * $Log$
    00111  * Revision 1.2  2006/03/15 17:17:42  strk
    00112  * Added missing forward declarations
    00113  *
    00114  * Revision 1.1  2006/03/14 12:55:56  strk
    00115  * Headers split: geomgraphindex.h, nodingSnapround.h
    00116  *
    00117  **********************************************************************/
    00118