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 00045 #ifdef _MSC_VER 00046 #pragma once 00047 #endif 00048 00049 #ifndef OGDF_EMBEDDER_MIN_DEPTH_MAX_FACE_H 00050 #define OGDF_EMBEDDER_MIN_DEPTH_MAX_FACE_H 00051 00052 #include <ogdf/module/EmbedderModule.h> 00053 #include <ogdf/decomposition/BCTree.h> 00054 #include <ogdf/internal/planarity/EmbedderMDMFLengthAttribute.h> 00055 00056 namespace ogdf { 00057 00059 class OGDF_EXPORT EmbedderMinDepthMaxFace : public EmbedderModule 00060 { 00061 public: 00062 //constructor: 00063 EmbedderMinDepthMaxFace() { } 00064 00070 void call(PlanRep& PG, adjEntry& adjExternal); 00071 00072 private: 00083 int md_bottomUpTraversal(const node& bT, const node& cH); 00084 00096 void md_topDownTraversal(const node& bT); 00097 00105 int mf_constraintMaxFace(const node& bT, const node& cH); 00106 00115 void mf_maximumFaceRec(const node& bT, node& bT_opt, int& ell_opt); 00116 00123 void embedBlock(const node& bT); 00124 00135 void embedBlock(const node& bT, const node& cT, ListIterator<adjEntry>& after); 00136 00137 private: 00139 BCTree* pBCTree; 00140 00142 adjEntry* pAdjExternal; 00143 00145 NodeArray<int> md_nodeLength; 00146 00148 NodeArray<int> md_minDepth; 00149 00151 EdgeArray<int> md_m_cB; 00152 00155 NodeArray< List<node> > md_M_B; 00156 00160 NodeArray< List<node> > md_M2; 00161 00163 NodeArray<int> mf_nodeLength; 00164 00166 NodeArray<int> mf_cstrLength; 00167 00169 NodeArray<int> mf_maxFaceSize; 00170 00172 NodeArray<mdmf_la> mdmf_nodeLength; 00173 00175 EdgeArray<mdmf_la> mdmf_edgeLength; 00176 00178 NodeArray< List<adjEntry> > newOrder; 00179 00182 NodeArray<bool> treeNodeTreated; 00183 }; 00184 00185 } // end namespace ogdf 00186 00187 #endif