Open
Graph Drawing
Framework

 v.2007.11
 

SubgraphPlanarizer.h

Go to the documentation of this file.
00001 /*
00002  * $Revision: 1.5 $
00003  * 
00004  * last checkin:
00005  *   $Author: gutwenger $ 
00006  *   $Date: 2007-11-13 12:32:13 +0100 (Di, 13 Nov 2007) $ 
00007  ***************************************************************/
00008  
00051 #ifndef OGDF_SUBGRAPH_PLANARIZER_H
00052 #define OGDF_SUBGRAPH_PLANARIZER_H
00053 
00054 #include <ogdf/module/CrossingMinimizationModule.h>
00055 #include <ogdf/module/PlanarSubgraphModule.h>
00056 #include <ogdf/module/EdgeInsertionModule.h>
00057 #include <ogdf/basic/ModuleOption.h>
00058 #include <ogdf/basic/Logger.h>
00059 
00060 
00061 namespace ogdf
00062 {
00063 
00065 
00118 class SubgraphPlanarizer : public CrossingMinimizationModule, public Logger
00119 {
00120     class CrossingStructure
00121     {
00122     public:
00123         CrossingStructure() : m_numCrossings(0) { }
00124         void init(PlanRep &PG, int weightedCrossingNumber);
00125         void restore(PlanRep &PG, int cc);
00126         
00127         int numberOfCrossings() const { return m_numCrossings; }
00128         int weightedCrossingNumber() const { return m_weightedCrossingNumber; }
00129         const SListPure<int> &crossings(edge e) const { return m_crossings[e]; }
00130         
00131     private:
00132         int m_numCrossings;
00133         int m_weightedCrossingNumber;
00134         EdgeArray<SListPure<int> > m_crossings;
00135     };
00136 
00137 protected:
00139     virtual ReturnType doCall(PlanRep &PG,
00140         int cc,
00141         const EdgeArray<int>  &cost,
00142         const EdgeArray<bool> &forbid,
00143         const EdgeArray<unsigned int>  &subgraphs,
00144         int& crossingNumber);
00145 
00146 public:
00148     SubgraphPlanarizer();
00149 
00151     void setSubgraph(PlanarSubgraphModule *pSubgraph) {
00152         m_subgraph.set(pSubgraph);
00153     }
00154 
00156     void setInserter(EdgeInsertionModule *pInserter) {
00157         m_inserter.set(pInserter);
00158     }
00159 
00161     int permutations() { return m_permutations; }
00162 
00164     void permutations(int p) { m_permutations = p; }
00165 
00167     bool setTimeout() { return m_setTimeout; }
00168 
00170     void setTimeout(bool b) { m_setTimeout = b; }
00171     
00172 private:
00173     ModuleOption<PlanarSubgraphModule>  m_subgraph; 
00174     ModuleOption<EdgeInsertionModule>   m_inserter; 
00175 
00176     int m_permutations; 
00177     bool m_setTimeout;  
00178 };
00179 
00180 }
00181 
00182 #endif // OGDF_SUBGRAPH_PLANARIZER_H


© 1999-2007 by oreas GmbH, © 2005-2007 by University Dortmund and University Cologne.

Generated on Thu Nov 22 19:40:04 2007 by doxygen 1.5.4.