Open
Graph Drawing
Framework

 v.2012.05
 

BoyerMyrvold.h
Go to the documentation of this file.
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  
00044 #ifdef _MSC_VER
00045 #pragma once
00046 #endif
00047 
00048 #ifndef OGDF_BOYER_MYRVOLD_H
00049 #define OGDF_BOYER_MYRVOLD_H
00050 
00051 #include <ogdf/internal/planarity/BoyerMyrvoldPlanar.h>
00052 #include <ogdf/planarity/ExtractKuratowskis.h>
00053 #include <ogdf/basic/GraphCopy.h>
00054 #include <ogdf/planarity/KuratowskiSubdivision.h>
00055 
00056 namespace ogdf {
00057 
00058 class OGDF_EXPORT KuratowskiWrapper;
00059 
00061 
00150 class OGDF_EXPORT BoyerMyrvold
00151 {
00152 protected:
00154     BoyerMyrvoldPlanar* pBMP;
00155     
00157     void clear() { delete pBMP; }
00158     
00160     int nOfStructures;
00161     
00162 public:
00164     BoyerMyrvold() { pBMP = 0; };
00166     ~BoyerMyrvold() { clear(); };
00167     
00169     int numberOfStructures() { return nOfStructures; };
00170     
00172 
00175     bool planarDestructive(Graph& g);
00176 
00178 
00180     bool planar(const Graph& g);
00181     
00183     void transform(
00184         const KuratowskiWrapper& source,
00185         KuratowskiSubdivision& target,
00186         NodeArray<int>& count,
00187         EdgeArray<int>& countEdge);
00188     
00190     void transform(
00191         const SList<KuratowskiWrapper>& sourceList,
00192         SList<KuratowskiSubdivision>& targetList,
00193         const Graph& g,
00194         const bool onlyDifferent = false);
00195     
00197 
00207     bool planarEmbedDestructive(
00208         Graph& g,
00209         SList<KuratowskiWrapper>& output,
00210         int embeddingGrade = BoyerMyrvoldPlanar::doNotFind,
00211         bool bundles = false,
00212         bool limitStructures = false,
00213         bool randomDFSTree = false,
00214         bool avoidE2Minors = true);
00215     
00217 
00227     bool planarEmbed(
00228         Graph& g,
00229         SList<KuratowskiWrapper>& list,
00230         int embeddingGrade = BoyerMyrvoldPlanar::doNotFind,
00231         bool bundles = false,
00232         bool limitStructures = false,
00233         bool randomDFSTree = false,
00234         bool avoidE2Minors = true);
00235 
00237 
00246     bool planarEmbed(
00247         //const Graph& g,
00248         GraphCopySimple& h,
00249         SList<KuratowskiWrapper>& list,
00250         int embeddingGrade = BoyerMyrvoldPlanar::doNotFind,
00251         bool bundles = false,
00252         bool limitStructures = false,
00253         bool randomDFSTree = false,
00254         bool avoidE2Minors = true);
00255 };
00256 
00257 }
00258 
00259 #endif