Go to the documentation of this file.00001
00002
00003
00004
00005
00006
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
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