Open
Graph Drawing
Framework

 v.2012.05
 

EmbedderMaxFaceLayers.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  
00049 #ifdef _MSC_VER
00050 #pragma once
00051 #endif
00052 
00053 #ifndef OGDF_EMBEDDER_MAX_FACE_LAYERS_H
00054 #define OGDF_EMBEDDER_MAX_FACE_LAYERS_H
00055 
00056 #include <ogdf/module/EmbedderModule.h>
00057 #include <ogdf/decomposition/BCTree.h>
00058 #include <ogdf/decomposition/StaticSPQRTree.h>
00059 
00060 namespace ogdf {
00061 
00063 class OGDF_EXPORT EmbedderMaxFaceLayers : public EmbedderModule
00064 {
00065 public:
00066     //constructor and destructor
00067     EmbedderMaxFaceLayers() { }
00068     ~EmbedderMaxFaceLayers() { }
00069 
00075     void call(PlanRep& PG, adjEntry& adjExternal);
00076 
00077 private:
00084     void computeBlockGraphs(const node& bT, const node& cH);
00085 
00093     int constraintMaxFace(const node& bT, const node& cH);
00094 
00103     void maximumFaceRec(const node& bT, node& bT_opt, int& ell_opt);
00104 
00111   void embedBlock(const node& bT);
00112 
00123   void embedBlock(const node& bT, const node& cT, ListIterator<adjEntry>& after);
00124 
00125 private:
00127     BCTree* pBCTree;
00128 
00130     adjEntry* pAdjExternal;
00131 
00133     NodeArray<Graph> blockG;
00134 
00136     NodeArray< NodeArray<node> > nH_to_nBlockEmbedding;
00137 
00139     NodeArray< EdgeArray<edge> > eH_to_eBlockEmbedding;
00140 
00142     NodeArray< NodeArray<node> > nBlockEmbedding_to_nH;
00143 
00145     NodeArray< EdgeArray<edge> > eBlockEmbedding_to_eH;
00146     
00148     NodeArray< NodeArray<int> > nodeLength;
00149 
00151     NodeArray< NodeArray<int> > cstrLength;
00152 
00154     NodeArray< List<adjEntry> > newOrder;
00155 
00158     NodeArray<bool> treeNodeTreated;
00159 
00161     NodeArray<StaticSPQRTree*> spqrTrees;
00162 };
00163 
00164 } // end namespace ogdf
00165 
00166 #endif