Open
Graph Drawing
Framework

 v.2012.05
 

PlanarSPQRTree.h
Go to the documentation of this file.
00001 /*
00002  * $Revision: 2299 $
00003  * 
00004  * last checkin:
00005  *   $Author: gutwenger $ 
00006  *   $Date: 2012-05-07 15:57:08 +0200 (Mon, 07 May 2012) $ 
00007  ***************************************************************/
00008  
00043 #ifdef _MSC_VER
00044 #pragma once
00045 #endif
00046 
00047 
00048 #ifndef OGDF_PLANAR_SPQR_TREE_H
00049 #define OGDF_PLANAR_SPQR_TREE_H
00050 
00051 
00052 #include <ogdf/decomposition/SPQRTree.h>
00053 
00054 
00055 namespace ogdf {
00056 
00057 //---------------------------------------------------------
00058 // PlanarSPQRTree
00059 // extension of class SPQRTree for support of embedded graphs
00060 //---------------------------------------------------------
00061 
00063 
00075 class OGDF_EXPORT PlanarSPQRTree : public virtual SPQRTree
00076 {
00077 public:
00078 
00079     //
00080     // a) Access operations
00081     //
00082 
00084     double numberOfEmbeddings() const {
00085         return numberOfEmbeddings(rootNode());
00086     }
00087 
00089 
00092     double numberOfEmbeddings(node v) const;
00093 
00094 
00095     //
00096     // b) Update operations
00097     //
00098 
00100 
00104     void reverse(node vT);
00105 
00107 
00111     void swap(node vT, edge e1, edge e2);
00112 
00114 
00118     void swap(node vT, adjEntry adj1, adjEntry adj2);
00119 
00121 
00124     void embed(Graph &G);
00125 
00127     void randomEmbed();
00128 
00130 
00133     void randomEmbed(Graph &G) {
00134         randomEmbed();
00135         embed(G);
00136     }
00137 
00138 
00139 protected:
00141     void init(bool isEmbedded);
00142     void adoptEmbedding();
00143     void setPosInEmbedding(
00144         NodeArray<SListPure<adjEntry> > &adjEdges,
00145         NodeArray<node> &currentCopy,
00146         NodeArray<adjEntry> &lastAdj,
00147         SListPure<node> &current,
00148         const Skeleton &S,
00149         adjEntry adj);
00150 
00151     // Embeda original graph according to embeddings of skeletons.
00152     void expandVirtualEmbed(node vT,
00153         adjEntry adjVirt,
00154         SListPure<adjEntry> &adjEdges);
00155     void createInnerVerticesEmbed(Graph &G, node vT);
00156 
00157 }; // class PlanarSPQRTree
00158 
00159 
00160 } // end namespace ogdf
00161 
00162 
00163 #endif