packages feed

hgeometry-0.8.0.0: hgeometry.cabal

-- Initial hgeometry.cabal generated by cabal init.  For further
-- documentation, see http://haskell.org/cabal/users-guide/

name:                hgeometry
version:             0.8.0.0
synopsis:            Geometric Algorithms, Data structures, and Data types.
description:
  HGeometry provides some basic geometry types, and geometric algorithms and
  data structures for them. The main two focusses are: (1) Strong type safety,
  and (2) implementations of geometric algorithms and data structures with good
  asymptotic running time guarantees. Note that HGeometry is still highly experimental, don't be surprised to find bugs.

homepage:            https://fstaals.net/software/hgeometry
license:             BSD3
license-file:        LICENSE
author:              Frank Staals
maintainer:          frank@fstaals.net
-- copyright:

tested-with:         GHC >= 8.2

category:            Geometry
build-type:          Simple

data-files:          resources/basic.isy
                     test/Algorithms/Geometry/LineSegmentIntersection/manual.ipe
                     test/Algorithms/Geometry/LineSegmentIntersection/selfIntersections.ipe
                     test/Algorithms/Geometry/LowerEnvelope/manual.ipe
                     test/Algorithms/Geometry/PolygonTriangulation/monotone.ipe
                     test/Algorithms/Geometry/PolygonTriangulation/simplepolygon6.ipe
                     test/Algorithms/Geometry/SmallestEnclosingDisk/manual.ipe
                     test/Data/Geometry/pointInPolygon.ipe
                     test/Data/Geometry/pointInTriangle.ipe
                     test/Data/Geometry/Polygon/Convex/convexTests.ipe
                     test/Data/Geometry/arrangement.ipe
                     test/Data/Geometry/arrangement.ipe.out.ipe
                     test/Data/myGraph.yaml
                     test/Data/myPlaneGraph.yaml

                     examples/BAPC2014/sample.in
                     examples/BAPC2014/sample.out
                     examples/BAPC2014/testdata.in
                     examples/BAPC2014/testdata.out
                     examples/BAPC2012/G.in
                     examples/BAPC2012/G.out
                     examples/BAPC2012/sampleG.in
                     examples/BAPC2012/sampleG.out

                     -- in the future (cabal >=2.4) we can use
                     -- examples/**/*.in
                     -- examples/**/*.out

extra-source-files:  README.md
                     changelog.md

Extra-doc-files:     docs/Data/PlanarGraph/testG.png
                     -- docs/**/*.png

cabal-version:       2.0
source-repository head
  type:     git
  location: https://github.com/noinia/hgeometry


flag examples
  description: Build demonstration programs
  default:     False
  manual:      True

flag with-quickcheck
  description: Include QuickCheck instances
  default:     True
  manual:      False

flag interactive
  description: Build  interactive parts
  default:     False
  manual:      True

library
  ghc-options: -O2 -Wall -fno-warn-unticked-promoted-constructors -fno-warn-type-defaults

  exposed-modules:
                    -- * Generic Geometry
                    Data.Geometry
                    Data.Geometry.Properties
                    Data.Geometry.Transformation
                    Data.Geometry.Boundary
                    Data.Geometry.Duality

                    -- * Basic Geometry Types
                    Data.Geometry.Vector
                    Data.Geometry.Vector.VectorFixed
                    Data.Geometry.Vector.VectorFamily
                    Data.Geometry.Vector.VectorFamilyPeano

                    -- Data.Geometry.Vector.Vinyl
                    Data.Geometry.Interval
                    Data.Geometry.Interval.Util
                    Data.Geometry.Point
                    Data.Geometry.Line
                    Data.Geometry.Line.Internal
                    Data.Geometry.LineSegment
                    Data.Geometry.SubLine
                    Data.Geometry.HalfLine
                    Data.Geometry.PolyLine
                    Data.Geometry.HyperPlane
                    Data.Geometry.Triangle
                    -- Data.Geometry.Plane
                    Data.Geometry.Slab
                    Data.Geometry.Box
                    Data.Geometry.Box.Internal
                    Data.Geometry.Ball
                    Data.Geometry.Polygon
                    Data.Geometry.Polygon.Convex

                    -- * Geometric Data Structures
                    Data.Geometry.IntervalTree
                    Data.Geometry.SegmentTree
                    Data.Geometry.SegmentTree.Generic

                    Data.Geometry.KDTree

                    Data.Geometry.PlanarSubdivision
                    Data.Geometry.PlanarSubdivision.Basic
                    Data.Geometry.PlanarSubdivision.Draw

                    Data.Geometry.Arrangement
                    Data.Geometry.Arrangement.Internal
                    Data.Geometry.Arrangement.Draw

                    -- * Algorithms

                    -- * Geometric Algorithms
                    Algorithms.Geometry.ConvexHull.GrahamScan
                    Algorithms.Geometry.ConvexHull.DivideAndConquer

                    Algorithms.Geometry.LowerEnvelope.DualCH

                    Algorithms.Geometry.SmallestEnclosingBall.Types
                    Algorithms.Geometry.SmallestEnclosingBall.RandomizedIncrementalConstruction
                    Algorithms.Geometry.SmallestEnclosingBall.Naive

                    Algorithms.Geometry.DelaunayTriangulation.Types
                    Algorithms.Geometry.DelaunayTriangulation.DivideAndConquer
                    Algorithms.Geometry.DelaunayTriangulation.Naive

                    Algorithms.Geometry.PolyLineSimplification.DouglasPeucker

                    Algorithms.Geometry.EuclideanMST.EuclideanMST

                    Algorithms.Geometry.WellSeparatedPairDecomposition.WSPD
                    Algorithms.Geometry.WellSeparatedPairDecomposition.Types

                    Algorithms.Geometry.Diameter

                    Algorithms.Geometry.Sweep

                    Algorithms.Geometry.PolygonTriangulation.Types
                    Algorithms.Geometry.PolygonTriangulation.Triangulate
                    Algorithms.Geometry.PolygonTriangulation.MakeMonotone
                    Algorithms.Geometry.PolygonTriangulation.TriangulateMonotone

                    Algorithms.Geometry.LineSegmentIntersection
                    Algorithms.Geometry.LineSegmentIntersection.Naive
                    Algorithms.Geometry.LineSegmentIntersection.BentleyOttmann
                    Algorithms.Geometry.LineSegmentIntersection.Types

                    -- Algorithms.Geometry.HiddenSurfaceRemoval.HiddenSurfaceRemoval

                    Algorithms.Geometry.ClosestPair.Naive
                    Algorithms.Geometry.ClosestPair.DivideAndConquer


                    -- * Graph Algorithms
                    Algorithms.Graph.DFS
                    Algorithms.Graph.MST

                    -- * Ipe Types
                    Data.Geometry.Ipe
                    Data.Geometry.Ipe.Literal
                    Data.Geometry.Ipe.Value
                    Data.Geometry.Ipe.Color
                    Data.Geometry.Ipe.Attributes
                    Data.Geometry.Ipe.Types
                    Data.Geometry.Ipe.Writer
                    Data.Geometry.Ipe.Reader
                    Data.Geometry.Ipe.PathParser
                    Data.Geometry.Ipe.IpeOut
                    Data.Geometry.Ipe.FromIpe

                    -- * General Data Types
                    Data.UnBounded
                    Data.Range
                    Data.Ext
                    Data.LSeq
                    Data.CircularSeq
                    Data.Sequence.Util
                    Data.BinaryTree
                    Data.BinaryTree.Zipper

                    Data.CircularList.Util
                    Data.BalBST
                    Data.OrdSeq
                    Data.SlowSeq
                    Data.Tree.Util
                    Data.Util

                    -- * Planar Graphs
                    Data.Permutation
                    Data.PlanarGraph
                    Data.PlaneGraph
                    Data.PlaneGraph.Draw

                    -- * Graphics stuff
                    Graphics.Camera

                    -- * Other
                    System.Random.Shuffle
                    Control.Monad.State.Persistent
                    Data.Yaml.Util



  other-modules:
                   Data.Geometry.Ipe.ParserPrimitives




  -- other-extensions:
  build-depends:
                base             >= 4.10      &&     < 5
              , bifunctors       >= 4.1
              , bytestring       >= 0.10
              , containers       >= 0.5.5
              , dlist            >= 0.7
              , contravariant    >= 1.4
              , profunctors      >= 5.2.1
              , lens             >= 4.2
              , linear           >= 1.10
              , semigroupoids    >= 5
              , semigroups       >= 0.18
              , singletons       >= 2.0
              , text             >= 1.1.1.0
              , vinyl            >= 0.6        && < 0.9
              , deepseq          >= 1.1
              , fingertree       >= 0.1
              , colour           >= 2.3.3
              , reflection       >= 2.1


              -- , validation       >= 0.4

              , parsec           >= 3
                -- , tranformers      > 0.3

              , vector           >= 0.11
              , fixed-vector     >= 1.0
              , data-clist       >= 0.0.7.2

              , hexpat           >= 0.20.9
              , aeson            >= 1.0
              , yaml             >= 0.8


              , mtl
              , random
              , template-haskell

  if flag(with-quickcheck)
    build-depends: QuickCheck              >= 2.5
                 , quickcheck-instances    >= 0.3
    exposed-modules: Test.QuickCheck.HGeometryInstances


  hs-source-dirs: src
                  -- examples/demo

  default-language:    Haskell2010

  default-extensions: TypeFamilies
                    , GADTs
                    , KindSignatures
                    , DataKinds
                    , TypeOperators
                    , ConstraintKinds
                    , PolyKinds
                    , RankNTypes

                    , PatternSynonyms
                    , TupleSections
                    , LambdaCase
                    , ViewPatterns

                    , StandaloneDeriving
                    , GeneralizedNewtypeDeriving
                    , DeriveFunctor
                    , DeriveFoldable
                    , DeriveTraversable
                    , DeriveGeneric
                    , AutoDeriveTypeable


                    , FlexibleInstances
                    , FlexibleContexts
                    , MultiParamTypeClasses

executable hgeometry-viewer
  if !flag(interactive)
    buildable: False
  main-is: Viewer.hs

  if flag(interactive)
    build-depends: base
                 , hgeometry
                 , lens
                 , containers
                 , vinyl
                 , semigroups
                 , optparse-applicative   >= 0.13.0.0
                 , text
                 , hexpat
                 , bytestring
                 , directory
                 , time
                 , random
                 , vector
                 , colour
                 , cairo-canvas           >= 0.1.0.0
                 -- , sdl2                   >= 2.2.0
                 , gi-gtk                 >= 3.0.15
                 , reactive-banana-gi-gtk >= 0.2.0.0
                 , cairo                  >= 0.13.3.1
                 -- , gi-glib
                 , gi-cairo
                 , gi-gdk
                 -- , gi-gdkpixbuf
                 , gi-gtk
                 , transformers
                 , linear
                 , haskell-gi-base
                 , reactive-banana        >= 1.1.0.1



  hs-source-dirs: interactive

  other-modules: RenderCanvas
                 RenderUtil
                 -- ConvexHull

  default-language: Haskell2010

  default-extensions: TypeFamilies
                    , GADTs
                    , KindSignatures
                    , DataKinds
                    , TypeOperators
                    , ConstraintKinds
                    , PolyKinds
                    , RankNTypes

                    , PatternSynonyms
                    , ViewPatterns

                    , StandaloneDeriving
                    , GeneralizedNewtypeDeriving
                    , DeriveFunctor
                    , DeriveFoldable
                    , DeriveTraversable

                    , DeriveDataTypeable
                    , AutoDeriveTypeable

                    , FlexibleInstances
                    , FlexibleContexts
                    , MultiParamTypeClasses




executable hgeometry-examples
  if !flag(examples)
    buildable: False
  main-is: Main.hs

  if flag(examples)
    build-depends: base
                 , hgeometry
                 , lens
                 , containers
                 , vinyl
                 , semigroups
                 , optparse-applicative   >= 0.13.0.0
                 , text
                 , hexpat
                 , bytestring
                 , directory
                 , time
                 , random
                 , QuickCheck

  hs-source-dirs: examples

  other-modules: Demo.DrawGPX
                 Demo.WriteEnsemble
                 Demo.MinDisk
                 Demo.Delaunay
                 Demo.ExpectedPairwiseDistance
                 Demo.TriangulateWorld
                 Demo.GPXParser

  default-language: Haskell2010

  default-extensions: TypeFamilies
                    , GADTs
                    , KindSignatures
                    , DataKinds
                    , TypeOperators
                    , ConstraintKinds
                    , PolyKinds
                    , RankNTypes

                    , PatternSynonyms
                    , ViewPatterns

                    , StandaloneDeriving
                    , GeneralizedNewtypeDeriving
                    , DeriveFunctor
                    , DeriveFoldable
                    , DeriveTraversable

                    , DeriveDataTypeable
                    , AutoDeriveTypeable

                    , FlexibleInstances
                    , FlexibleContexts
                    , MultiParamTypeClasses



test-suite doctests
  type:          exitcode-stdio-1.0
  ghc-options:   -threaded
  main-is:       doctests.hs
  build-depends: base
               , doctest             >= 0.8
--               , doctest-discover

  default-language:    Haskell2010

test-suite hspec
  type:                 exitcode-stdio-1.0
  default-language:     Haskell2010
  hs-source-dirs:       test
  main-is:              Spec.hs
  ghc-options:   -fno-warn-unticked-promoted-constructors
                 -fno-warn-partial-type-signatures
                 -fno-warn-missing-signatures

  build-tool-depends: hspec-discover:hspec-discover


  other-modules: Data.RangeSpec
                 Data.EdgeOracleSpec
                 Data.PlanarGraphSpec
                 Data.PlaneGraphSpec
                 Data.OrdSeqSpec
                 Data.Geometry.Ipe.ReaderSpec
                 Data.Geometry.PolygonSpec
                 Data.Geometry.LineSegmentSpec
                 Data.Geometry.PointSpec
                 Data.Geometry.Polygon.Convex.ConvexSpec
                 Data.Geometry.KDTreeSpec
                 Data.Geometry.IntervalSpec
                 Data.Geometry.BoxSpec
                 Data.Geometry.LineSpec
                 Data.Geometry.SubLineSpec
                 Data.Geometry.PlanarSubdivisionSpec
                 Data.Geometry.TriangleSpec
                 Data.Geometry.ArrangementSpec

                 Algorithms.Geometry.SmallestEnclosingDisk.RISpec
                 Algorithms.Geometry.DelaunayTriangulation.DTSpec
                 Algorithms.Geometry.WellSeparatedPairDecomposition.WSPDSpec
                 Algorithms.Geometry.LineSegmentIntersection.BentleyOttmannSpec
                 Algorithms.Geometry.PolygonTriangulation.MakeMonotoneSpec
                 Algorithms.Geometry.PolygonTriangulation.TriangulateMonotoneSpec
                 Algorithms.Geometry.LowerEnvelope.LowerEnvSpec
                 Algorithms.Geometry.ConvexHull.ConvexHullSpec
                 -- Algorithms.Geometry.HiddenSurfaceRemoval.HiddenSurfaceRemovalSpec
                 Algorithms.Geometry.ClosestPair.ClosestPairSpec

                 Util


  build-depends:        base
                      , hspec                >= 2.1
                      , QuickCheck           >= 2.5
                      , quickcheck-instances    >= 0.3
                      , approximate-equality >= 1.1.0.2
                      , hgeometry
                      , lens
                      , data-clist
                      , linear
                      , bytestring
                      , vinyl
                      , semigroups
                      , vector
                      , containers
                      , random
                      , singletons
                      , colour
                      , filepath
                      , directory
                      , yaml


  default-extensions: TypeFamilies
                    , GADTs
                    , KindSignatures
                    , DataKinds
                    , TypeOperators
                    , ConstraintKinds
                    , PolyKinds
                    , RankNTypes

                    , PatternSynonyms
                    , ViewPatterns
                    , LambdaCase
                    , TupleSections


                    , StandaloneDeriving
                    , GeneralizedNewtypeDeriving
                    , DeriveFunctor
                    , DeriveFoldable
                    , DeriveTraversable

                    , AutoDeriveTypeable

                    , FlexibleInstances
                    , FlexibleContexts
                    , MultiParamTypeClasses
                    , OverloadedStrings

test-suite bapc_examples
  type:          exitcode-stdio-1.0
  ghc-options:   -O2 -fno-warn-unticked-promoted-constructors
  main-is:       bapc_examples.hs
  hs-source-dirs: examples
  build-depends: base
               , doctest    >= 0.8
               , array      >= 0.5
               , hgeometry
               , lens
               , data-clist
               , linear
               , semigroups

  other-modules: BAPC2012.Gunslinger
                 BAPC2014.Armybase

  default-language:    Haskell2010

  default-extensions: TypeFamilies
                    , GADTs
                    , DataKinds
                    , TypeOperators
                    , ConstraintKinds
                    , PolyKinds
                    , PatternSynonyms
                    , ViewPatterns

benchmark benchmarks

  hs-source-dirs: benchmark test examples

  main-is: Benchmarks.hs
  type: exitcode-stdio-1.0

  other-modules: Benchmark.Util
                 Algorithms.Geometry.ConvexHull.Bench
                 Algorithms.Geometry.ConvexHull.GrahamV2
                 Algorithms.Geometry.ConvexHull.GrahamFam
                 Algorithms.Geometry.ConvexHull.GrahamFamPeano
                 Algorithms.Geometry.ConvexHull.GrahamFixed
                 Data.Geometry.Vector.VectorFamily6
                 Algorithms.Geometry.ConvexHull.GrahamFam6
                 Data.Geometry.IntervalTreeBench
                 Demo.ExpectedPairwiseDistance
                 Demo.TriangulateWorld
                 WSPDBench
                 Algorithms.Geometry.ClosestPair.Bench

  build-depends:
                base
              , criterion >= 1.1.4.0
              , fixed-vector
              , linear
              , semigroups
              , deepseq
              , deepseq-generics
              , hgeometry
              , lens
              , QuickCheck
              , bytestring
              , containers
              , optparse-applicative

  ghc-options: -Wall -O2 -rtsopts -fno-warn-unticked-promoted-constructors

  default-language:    Haskell2010

  default-extensions: TypeFamilies
                    , GADTs
                    , KindSignatures
                    , DataKinds
                    , TypeOperators
                    , ConstraintKinds
                    , PolyKinds
                    , RankNTypes

                    , PatternSynonyms
                    , ViewPatterns
                    , LambdaCase
                    , TupleSections


                    , StandaloneDeriving
                    , GeneralizedNewtypeDeriving
                    , DeriveFunctor
                    , DeriveFoldable
                    , DeriveTraversable

                    , AutoDeriveTypeable

                    , FlexibleInstances
                    , FlexibleContexts
                    , MultiParamTypeClasses
                    , OverloadedStrings