Open
Graph Drawing
Framework

 v.2012.05
 

EmbedderMinDepthMaxFaceLayers.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  
00051 #ifdef _MSC_VER
00052 #pragma once
00053 #endif
00054 
00055 #ifndef OGDF_EMBEDDER_MIN_DEPTH_MAX_FACE_Layers_H
00056 #define OGDF_EMBEDDER_MIN_DEPTH_MAX_FACE_Layers_H
00057 
00058 #include <ogdf/module/EmbedderModule.h>
00059 #include <ogdf/decomposition/BCTree.h>
00060 #include <ogdf/internal/planarity/EmbedderMDMFLengthAttribute.h>
00061 
00062 namespace ogdf {
00063 
00065 class OGDF_EXPORT EmbedderMinDepthMaxFaceLayers : public EmbedderModule
00066 {
00067 public:
00068     //constructor:
00069     EmbedderMinDepthMaxFaceLayers() { }
00070 
00076     void call(PlanRep& PG, adjEntry& adjExternal);
00077 
00078 private:
00089     int md_bottomUpTraversal(const node& bT, const node& cH);
00090     
00102     void md_topDownTraversal(const node& bT);
00103 
00111     int mf_constraintMaxFace(const node& bT, const node& cH);
00112 
00121     void mf_maximumFaceRec(const node& bT, node& bT_opt, int& ell_opt);
00122 
00129   void embedBlock(const node& bT);
00130 
00141   void embedBlock(const node& bT, const node& cT, ListIterator<adjEntry>& after);
00142 
00143 private:
00145     BCTree* pBCTree;
00146 
00148     adjEntry* pAdjExternal;
00149     
00151     NodeArray<int> md_nodeLength;
00152 
00154     NodeArray<int> md_minDepth;
00155 
00157     EdgeArray<int> md_m_cB;
00158 
00161     NodeArray< List<node> > md_M_B;
00162 
00166     NodeArray< List<node> > md_M2;
00167 
00169     NodeArray<int> mf_nodeLength;
00170 
00172     NodeArray<int> mf_cstrLength;
00173 
00175     NodeArray<int> mf_maxFaceSize;
00176 
00178     NodeArray<mdmf_la> mdmf_nodeLength;
00179 
00181     EdgeArray<mdmf_la> mdmf_edgeLength;
00182 
00184     NodeArray< List<adjEntry> > newOrder;
00185 
00188     NodeArray<bool> treeNodeTreated;
00189 };
00190 
00191 } // end namespace ogdf
00192 
00193 #endif