Open
Graph Drawing
Framework

 v.2012.05
 

CconnectClusterPlanar.h
Go to the documentation of this file.
00001 /*
00002  * $Revision: 2299 $
00003  * 
00004  * last checkin:
00005  *   $Author:klein $ 
00006  *   $Date:2007-10-18 17:23:28 +0200 (Thu, 18 Oct 2007) $ 
00007  ***************************************************************/
00008  
00044 #ifdef _MSC_VER
00045 #pragma once
00046 #endif
00047 
00048 #ifndef OGDF_CCONNECT_CLUSTER_PLANAR_H
00049 #define OGDF_CCONNECT_CLUSTER_PLANAR_H
00050 
00051 
00052 #include <ogdf/internal/planarity/PlanarPQTree.h>
00053 #include <ogdf/cluster/ClusterArray.h>
00054 #include <ogdf/basic/EdgeArray.h>
00055 
00056 namespace ogdf {
00057 
00058 class OGDF_EXPORT CconnectClusterPlanar{
00059 
00060 public:
00061 
00062     //aus CCCPE oder CCCP wieder entfernen
00063     enum ccErrorCode {none = 0, 
00064                       nonConnected = 1, 
00065                       nonCConnected = 2, 
00066                       nonPlanar = 3,
00067                       nonCPlanar = 4
00068     };
00069     ccErrorCode errCode() {return m_errorCode;}
00070 
00071 
00073     CconnectClusterPlanar();
00074 
00076     virtual ~CconnectClusterPlanar();
00077 
00079     virtual bool call(ClusterGraph &C);
00080 
00083     bool call(ClusterGraph &C, char (&code)[124]);
00084 
00086     virtual bool call(const ClusterGraph &C);
00087 
00088 private:
00089 
00091     bool planarityTest(ClusterGraph &C,
00092                        cluster &act,
00093                        Graph &G);
00095     bool preProcess(ClusterGraph &C,Graph &G);
00097     bool preparation(Graph  &G,cluster &C,node superSink);
00099     bool doTest(Graph &G,
00100                 NodeArray<int> &numbering,
00101                 cluster &cl,
00102                 node superSink,
00103                 EdgeArray<edge> &edgeTable);
00104     
00105     void prepareParallelEdges(Graph &G);
00106 
00108     void constructWheelGraph(ClusterGraph &C,
00109                              Graph &G,
00110                              cluster &parent,
00111                              PlanarPQTree* T,
00112                              EdgeArray<node> &outgoingTable);
00113 
00114 
00115     //private Members for handling parallel edges
00116     EdgeArray<ListPure<edge> >  m_parallelEdges;
00117     EdgeArray<bool>             m_isParallel;
00118     ClusterArray<PlanarPQTree*> m_clusterPQTree; 
00119     int m_parallelCount;
00120     char errorCode[124];
00121     ccErrorCode m_errorCode;
00122 
00123     
00124 };
00125 
00126 } // end namespace ogdf
00127 
00128 
00129 #endif