cabal-version: 3.0 name: brush-strokes version: 0.1.0.0 synopsis: Stroking brush paths category: Calligraphy, Geometry, Graphics license: BSD-3-Clause homepage: https://gitlab.com/sheaf/MetaBrush build-type: Simple description: Computing brush strokes using Bézier curves. extra-source-files: cbits/**/*.{cpp, hpp} flag use-fma description: Use fused-muliply add instructions to implement interval arithmetic. default: True manual: False flag asserts description: Enable debugging assertions. default: False manual: True common common build-depends: base >= 4.17 && < 5.0 , code-page ^>= 0.2.1 , containers >= 0.6.0.1 && < 0.8 , tree-view ^>= 0.5 default-extensions: BangPatterns BlockArguments ConstraintKinds DataKinds DeriveAnyClass DeriveTraversable DeriveGeneric DerivingVia FlexibleContexts FlexibleInstances FunctionalDependencies GADTs GeneralisedNewtypeDeriving InstanceSigs LambdaCase LexicalNegation MagicHash MultiWayIf NamedFieldPuns NoStarIsType PatternSynonyms RankNTypes RecordWildCards RoleAnnotations StandaloneDeriving StandaloneKindSignatures TupleSections TypeApplications TypeFamilyDependencies TypeOperators UnboxedTuples ViewPatterns if impl(ghc >= 9.8) default-extensions: TypeAbstractions ghc-options: -O2 -fexpose-all-unfoldings -- -funfolding-use-threshold=1000 -fspecialise-aggressively -flate-dmd-anal -fmax-worker-args=200 -optc-O3 -Wall -Wcompat -fwarn-missing-local-signatures -fwarn-incomplete-patterns -fwarn-incomplete-uni-patterns -fwarn-missing-deriving-strategies -fno-warn-unticked-promoted-constructors if flag(use-fma) cpp-options: -DUSE_FMA ghc-options: -mfma build-depends: base >= 4.19 if flag(asserts) cpp-options: -DASSERTS common extra build-depends: acts ^>= 0.3.1.0 , generic-lens >= 2.2 && < 2.3 , groups ^>= 0.5.3 library import: common, extra hs-source-dirs: src/lib default-language: Haskell2010 exposed-modules: Calligraphy.Brushes , Math.Algebra.Dual , Math.Bezier.Cubic , Math.Bezier.Cubic.Fit , Math.Bezier.Quadratic , Math.Bezier.Spline , Math.Bezier.Stroke , Math.Bezier.Stroke.EnvelopeEquation , Math.Differentiable , Math.Epsilon , Math.Float.Utils , Math.Interval , Math.Linear , Math.Linear.Solve , Math.Module , Math.Monomial , Math.Orientation , Math.Ring , Math.Roots , Math.Root.Isolation , Math.Root.Isolation.Bisection , Math.Root.Isolation.Core , Math.Root.Isolation.Degree , Math.Root.Isolation.Narrowing , Math.Root.Isolation.Newton , Math.Root.Isolation.Newton.GaussSeidel , Math.Root.Isolation.Newton.LP , Math.Root.Isolation.Utils , Debug.Utils other-modules: Math.Algebra.Dual.Internal , Math.Interval.Internal , Math.Linear.Internal , Math.Module.Internal , TH.Utils if flag(use-fma) other-modules: Math.Interval.FMA build-depends: template-haskell >= 2.18 && < 3.0 , bifunctors >= 5.5.4 && < 5.7 , deepseq >= 1.4.4.0 && < 1.6 , directory >= 1.3.7.1 && < 1.4 , eigen ^>= 3.3.7.0 , filepath >= 1.4 && < 1.6 , fp-ieee ^>= 0.1.0.4 , groups-generic ^>= 0.3.1.0 , parallel ^>= 3.2.2.0 , primitive ^>= 0.9.0.0 , rounded-hw ^>= 0.4 , time ^>= 1.12.2 , transformers >= 0.5.6.2 && < 0.7 -- Extra C++ code for 2D linear systems of interval equations include-dirs: cbits cxx-sources: cbits/lp_2d.cpp cxx-options: -std=c++20 -mavx2 -mfma -frounding-math -fno-math-errno -fno-signed-zeros -fno-trapping-math -fno-signaling-nans -Wno-unused-result -Wsign-compare -Wno-switch -march=native -mtune=native -O3 -DNDEBUG build-depends: system-cxx-std-lib --executable convert-metafont -- -- import: -- common -- -- hs-source-dirs: -- src/metafont -- -- default-language: -- Haskell2010 -- -- main-is: -- Main.hs -- -- other-modules: -- Calligraphy.MetaFont.Convert -- -- build-depends: -- diagrams-contrib, -- diagrams-lib, -- linear, -- parsec executable inspect import: common, extra hs-source-dirs: src/cusps/inspect default-language: Haskell2010 main-is: Main.hs other-modules: Math.Interval.Abstract build-depends: brush-strokes , data-reify ^>= 0.6.3 test-suite tests import: common type: exitcode-stdio-1.0 hs-source-dirs: src/test default-language: Haskell2010 main-is: Main.hs build-depends: brush-strokes , falsify ^>= 0.2 , hspray ^>= 0.1.3 , tasty ^>= 1.5 , unordered-containers >= 0.2.15 && < 0.3 benchmark cusps import: common hs-source-dirs: src/cusps/bench main-is: Main.hs other-modules: Bench.Types Bench.Cases build-depends: brush-strokes , deepseq type: exitcode-stdio-1.0 default-language: Haskell2010 ghc-options: -threaded -rtsopts