00001 /* 00002 * $Revision: 1.22 $ 00003 * 00004 * last checkin: 00005 * $Author: gutwenger $ 00006 * $Date: 2007-11-15 13:46:15 +0100 (Do, 15 Nov 2007) $ 00007 ***************************************************************/ 00008 00053 #ifdef _MSC_VER 00054 #pragma once 00055 #endif 00056 00057 #ifndef OGDF_EMBEDDER_MIN_DEPTH_MAX_FACE_H 00058 #define OGDF_EMBEDDER_MIN_DEPTH_MAX_FACE_H 00059 00060 #include <ogdf/module/EmbedderModule.h> 00061 #include <ogdf/decomposition/BCTree.h> 00062 #include <ogdf/internal/planarity/EmbedderMDMFLengthAttribute.h> 00063 00064 namespace ogdf { 00065 00067 class EmbedderMinDepthMaxFace : public EmbedderModule 00068 { 00069 public: 00070 //constructor: 00071 EmbedderMinDepthMaxFace() { } 00072 00078 void call(PlanRep& PG, adjEntry& adjExternal); 00079 00080 private: 00091 int md_bottomUpTraversal(const node& bT, const node& cH); 00092 00104 void md_topDownTraversal(const node& bT); 00105 00113 int mf_constraintMaxFace(const node& bT, const node& cH); 00114 00123 void mf_maximumFaceRec(const node& bT, node& bT_opt, int& ell_opt); 00124 00131 void embedBlock(const node& bT); 00132 00143 void embedBlock(const node& bT, const node& cT, ListIterator<adjEntry>& after); 00144 00145 private: 00147 BCTree* pBCTree; 00148 00150 adjEntry* pAdjExternal; 00151 00153 NodeArray<int> md_nodeLength; 00154 00156 NodeArray<int> md_minDepth; 00157 00159 EdgeArray<int> md_m_cB; 00160 00163 NodeArray< List<node> > md_M_B; 00164 00168 NodeArray< List<node> > md_M2; 00169 00171 NodeArray<int> mf_nodeLength; 00172 00174 NodeArray<int> mf_cstrLength; 00175 00177 NodeArray<int> mf_maxFaceSize; 00178 00180 NodeArray<mdmf_la> mdmf_nodeLength; 00181 00183 EdgeArray<mdmf_la> mdmf_edgeLength; 00184 00186 NodeArray< List<adjEntry> > newOrder; 00187 00190 NodeArray<bool> treeNodeTreated; 00191 }; 00192 00193 } // end namespace ogdf 00194 00195 #endif