packages feed

moonlight-triangulation-1.2.0.0: src-dcel/Moonlight/Triangulation/Internal/DcelOperations.hs

{-# LANGUAGE AllowAmbiguousTypes #-}
{-# LANGUAGE BangPatterns #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeApplications #-}

-- | The topology-mutating primitives, gathered from their role modules.
module Moonlight.Triangulation.Internal.DcelOperations
  ( setupFirstVertex
  , setupSecondVertex
  , splitLineEdge
  , extendLine
  , lineToArea
  , insertIntoFace
  , insertOnEdge
  , ReservedSweepCells
  , SweepCellCursor
  , SweepInsertion (..)
  , reserveSweepCells
  , initialSweepCellCursor
  , commitReservedSweepConnections
  , insertOutsideHull
  , insertOutsideHullAtEdge
  , closeOuterTurn
  , closeOuterTurnReserved
  , fixHullConvexity
  , flipEdge
  , legalizeScratch
  , legalizeStarEdge
  , legalizeEdges
  , legalizeCavityFanScratch
  , LegalizationLaw (..)
  , seedStarScratch
  , seedGenericEdges
  , drainLegalization
  , CandidateDiscipline (..)
  , isFlippableEdge
  , collectLineChain
  ) where

import Moonlight.Triangulation.Internal.DcelOperations.CandidateArena
  ( CandidateDiscipline (..)
  , seedGenericEdges
  , seedStarScratch
  )
import Moonlight.Triangulation.Internal.DcelOperations.Chain
  ( collectLineChain
  , extendLine
  , lineToArea
  , setupFirstVertex
  , setupSecondVertex
  , splitLineEdge
  )
import Moonlight.Triangulation.Internal.DcelOperations.FlipRewrite (flipEdge)
import Moonlight.Triangulation.Internal.DcelOperations.FlipRule
  ( LegalizationLaw (..)
  , isFlippableEdge
  )
import Moonlight.Triangulation.Internal.DcelOperations.Hull
  ( ReservedSweepCells
  , SweepCellCursor
  , SweepInsertion (..)
  , closeOuterTurn
  , closeOuterTurnReserved
  , commitReservedSweepConnections
  , fixHullConvexity
  , initialSweepCellCursor
  , insertOutsideHull
  , insertOutsideHullAtEdge
  , reserveSweepCells
  )
import Moonlight.Triangulation.Internal.DcelOperations.Legalize
  ( legalizeCavityFanScratch
  , legalizeEdges
  , legalizeScratch
  , legalizeStarEdge
  )
import Moonlight.Triangulation.Internal.DcelOperations.Normalize (drainLegalization)
import Moonlight.Triangulation.Internal.DcelOperations.Subdivide
  ( insertIntoFace
  , insertOnEdge
  )