{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE OverloadedStrings #-}
module Data.PlaneGraph( PlaneGraph(PlaneGraph), graph
                      , PlanarGraph
                      , VertexData(VertexData), vData, location, vtxDataToExt
                      , fromSimplePolygon, fromConnectedSegments
                      , toAdjRep, fromAdjRep
                      , numVertices, numEdges, numFaces, numDarts
                      , dual
                      , vertices', vertices
                      , edges', edges
                      , faces', faces, internalFaces, faces''
                      , darts', darts
                      , traverseVertices, traverseDarts, traverseFaces
                      , headOf, tailOf, twin, endPoints
                      , incidentEdges, incomingEdges, outgoingEdges
                      , neighboursOf
                      , nextIncidentEdge, prevIncidentEdge
                      , leftFace, rightFace
                      , nextEdge, prevEdge
                      , boundary, boundary', boundaryDart, boundaryVertices
                      , outerFaceId, outerFaceDart
                      , vertexDataOf, locationOf, HasDataOf(..)
                      , endPointsOf, endPointData
                      , vertexData, faceData, dartData, rawDartData
                      , edgeSegment, edgeSegments
                      , rawFacePolygon, rawFaceBoundary
                      , rawFacePolygons
                      , VertexId(..), FaceId(..), Dart, World(..), VertexId', FaceId'
                      , withEdgeDistances
                      , writePlaneGraph, readPlaneGraph
                      ) where
import           Data.PlaneGraph.IO
import           Data.PlaneGraph.Core