Open
Graph Drawing
Framework

 v.2012.05
 

EmbedderMaxFace.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  
00044 #ifdef _MSC_VER
00045 #pragma once
00046 #endif
00047 
00048 #ifndef OGDF_EMBEDDER_MAX_FACE_H
00049 #define OGDF_EMBEDDER_MAX_FACE_H
00050 
00051 #include <ogdf/module/EmbedderModule.h>
00052 #include <ogdf/decomposition/BCTree.h>
00053 #include <ogdf/decomposition/StaticSPQRTree.h>
00054 
00055 namespace ogdf {
00056 
00058 class OGDF_EXPORT EmbedderMaxFace : public EmbedderModule
00059 {
00060 public:
00061     //constructor and destructor
00062     EmbedderMaxFace() { }
00063     ~EmbedderMaxFace() { }
00064 
00070     void call(PlanRep& PG, adjEntry& adjExternal);
00071 
00072 private:
00079     void computeBlockGraphs(const node& bT, const node& cH);
00080 
00088     int constraintMaxFace(const node& bT, const node& cH);
00089 
00098     void maximumFaceRec(const node& bT, node& bT_opt, int& ell_opt);
00099 
00106   void embedBlock(const node& bT);
00107 
00118   void embedBlock(const node& bT, const node& cT, ListIterator<adjEntry>& after);
00119 
00120 private:
00122     BCTree* pBCTree;
00123 
00125     adjEntry* pAdjExternal;
00126 
00128     NodeArray<Graph> blockG;
00129 
00131     NodeArray< NodeArray<node> > nH_to_nBlockEmbedding;
00132 
00134     NodeArray< EdgeArray<edge> > eH_to_eBlockEmbedding;
00135 
00137     NodeArray< NodeArray<node> > nBlockEmbedding_to_nH;
00138 
00140     NodeArray< EdgeArray<edge> > eBlockEmbedding_to_eH;
00141     
00143     NodeArray< NodeArray<int> > nodeLength;
00144 
00146     NodeArray< NodeArray<int> > cstrLength;
00147 
00149     NodeArray< List<adjEntry> > newOrder;
00150 
00153     NodeArray<bool> treeNodeTreated;
00154 
00156     NodeArray<StaticSPQRTree*> spqrTrees;
00157 };
00158 
00159 } // end namespace ogdf
00160 
00161 #endif