Open
Graph Drawing
Framework

 v.2010.10
 

EmbedderMinDepthMaxFaceLayers.h

Go to the documentation of this file.
00001 /*
00002  * $Revision: 2027 $
00003  * 
00004  * last checkin:
00005  *   $Author: gutwenger $ 
00006  *   $Date: 2010-09-01 11:55:17 +0200 (Wed, 01 Sep 2010) $ 
00007  ***************************************************************/
00008  
00061 #ifdef _MSC_VER
00062 #pragma once
00063 #endif
00064 
00065 #ifndef OGDF_EMBEDDER_MIN_DEPTH_MAX_FACE_Layers_H
00066 #define OGDF_EMBEDDER_MIN_DEPTH_MAX_FACE_Layers_H
00067 
00068 #include <ogdf/module/EmbedderModule.h>
00069 #include <ogdf/decomposition/BCTree.h>
00070 #include <ogdf/internal/planarity/EmbedderMDMFLengthAttribute.h>
00071 
00072 namespace ogdf {
00073 
00075 class OGDF_EXPORT EmbedderMinDepthMaxFaceLayers : public EmbedderModule
00076 {
00077 public:
00078     //constructor:
00079     EmbedderMinDepthMaxFaceLayers() { }
00080 
00086     void call(PlanRep& PG, adjEntry& adjExternal);
00087 
00088 private:
00099     int md_bottomUpTraversal(const node& bT, const node& cH);
00100     
00112     void md_topDownTraversal(const node& bT);
00113 
00121     int mf_constraintMaxFace(const node& bT, const node& cH);
00122 
00131     void mf_maximumFaceRec(const node& bT, node& bT_opt, int& ell_opt);
00132 
00139   void embedBlock(const node& bT);
00140 
00151   void embedBlock(const node& bT, const node& cT, ListIterator<adjEntry>& after);
00152 
00153 private:
00155     BCTree* pBCTree;
00156 
00158     adjEntry* pAdjExternal;
00159     
00161     NodeArray<int> md_nodeLength;
00162 
00164     NodeArray<int> md_minDepth;
00165 
00167     EdgeArray<int> md_m_cB;
00168 
00171     NodeArray< List<node> > md_M_B;
00172 
00176     NodeArray< List<node> > md_M2;
00177 
00179     NodeArray<int> mf_nodeLength;
00180 
00182     NodeArray<int> mf_cstrLength;
00183 
00185     NodeArray<int> mf_maxFaceSize;
00186 
00188     NodeArray<mdmf_la> mdmf_nodeLength;
00189 
00191     EdgeArray<mdmf_la> mdmf_edgeLength;
00192 
00194     NodeArray< List<adjEntry> > newOrder;
00195 
00198     NodeArray<bool> treeNodeTreated;
00199 };
00200 
00201 } // end namespace ogdf
00202 
00203 #endif