DirectedEdge.h

00001 /**********************************************************************
00002  * $Id: DirectedEdge.h 1820 2006-09-06 16:54:23Z mloskot $
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 
00018 #ifndef GEOS_GEOMGRAPH_DIRECTEDEDGE_H
00019 #define GEOS_GEOMGRAPH_DIRECTEDEDGE_H
00020 
00021 #include <string>
00022 
00023 #include <geos/geomgraph/EdgeEnd.h> // for inheritance
00024 
00025 #include <geos/inline.h>
00026 
00027 // Forward declarations
00028 namespace geos {
00029         namespace geomgraph {
00030                 class Edge;
00031                 class EdgeRing;
00032         }
00033 }
00034 
00035 namespace geos {
00036 namespace geomgraph { // geos.geomgraph
00037 
00039 class DirectedEdge: public EdgeEnd {
00040 
00041 public:
00042 
00049         static int depthFactor(int currLocation, int nextLocation);
00050 
00051         //DirectedEdge();       
00052         //virtual ~DirectedEdge();      
00053 
00054         DirectedEdge(Edge *newEdge, bool newIsForward);
00055 
00056         // this is no different from Base class, no need to override
00057         //Edge* getEdge();
00058 
00059         void setInResult(bool newIsInResult);
00060 
00061         bool isInResult();
00062 
00063         bool isVisited();
00064 
00065         void setVisited(bool newIsVisited);
00066 
00067         void setEdgeRing(EdgeRing *newEdgeRing);
00068 
00069         EdgeRing* getEdgeRing();
00070 
00071         void setMinEdgeRing(EdgeRing *newMinEdgeRing);
00072 
00073         EdgeRing* getMinEdgeRing();
00074 
00075         int getDepth(int position);
00076 
00077         void setDepth(int position, int newDepth);
00078 
00079         int getDepthDelta();
00080 
00082         //
00086         void setVisitedEdge(bool newIsVisited);
00087 
00088 
00096         DirectedEdge* getSym();
00097 
00098         bool isForward();
00099 
00100         void setSym(DirectedEdge *de);
00101 
00102         DirectedEdge* getNext();
00103 
00104         void setNext(DirectedEdge *newNext);
00105 
00106         DirectedEdge* getNextMin();
00107 
00108         void setNextMin(DirectedEdge *newNextMin);
00109 
00118         bool isLineEdge();
00119 
00129         bool isInteriorAreaEdge();
00130 
00138         void setEdgeDepths(int position, int newDepth);
00139 
00140         std::string print();
00141 
00142         std::string printEdge();
00143 
00144 protected:
00145 
00146         bool isForwardVar;
00147 
00148 private:
00149 
00150         bool isInResultVar;
00151 
00152         bool isVisitedVar;
00153 
00155         DirectedEdge *sym;
00156 
00158         DirectedEdge *next; 
00159 
00161         DirectedEdge *nextMin; 
00162 
00164         EdgeRing *edgeRing; 
00165 
00167         EdgeRing *minEdgeRing; 
00168 
00173         int depth[3];
00174 
00176         void computeDirectedLabel();
00177 };
00178 
00179 } // namespace geos.geomgraph
00180 } // namespace geos
00181 
00182 #ifdef GEOS_INLINE
00183 # include "geos/geomgraph/DirectedEdge.inl"
00184 #endif
00185 
00186 #endif // ifndef GEOS_GEOMGRAPH_DIRECTEDEDGE_H
00187 
00188 /**********************************************************************
00189  * $Log$
00190  * Revision 1.5  2006/06/14 14:32:20  strk
00191  * EdgeEnd::getEdge() made non-virtual and inlined.
00192  *
00193  * Revision 1.4  2006/05/04 13:38:13  strk
00194  * doxygen comments cleanup
00195  *
00196  * Revision 1.3  2006/03/24 09:52:41  strk
00197  * USE_INLINE => GEOS_INLINE
00198  *
00199  * Revision 1.2  2006/03/15 15:27:23  strk
00200  * cleanups
00201  *
00202  * Revision 1.1  2006/03/09 16:46:49  strk
00203  * geos::geom namespace definition, first pass at headers split
00204  *
00205  **********************************************************************/
00206 

Generated on Fri Mar 27 04:52:38 2009 for GEOS by  doxygen 1.5.4