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