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