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/**/*.{S,c,h,cpp,hpp} flag use-simd description: Use SIMD instructions to implement interval arithmetic. default: False manual: True flag use-fma description: Use fused-muliply add instructions to implement interval arithmetic. default: False manual: True 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(use-simd) cpp-options: -DUSE_SIMD ghc-options: -mavx build-depends: base >= 4.20 -- 4.21 , ghc-prim >= 0.11 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-simd) other-modules: Math.Interval.Internal.SIMD if flag(use-fma) && !flag(use-simd) other-modules: Math.Interval.Internal.FMA if !flag(use-fma) && !flag(use-simd) other-modules: Math.Interval.Internal.RoundedHW 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 && < 1.15 , transformers >= 0.5.6.2 && < 0.7 include-dirs: cbits c-sources: -- C code for: setting the rounding mode cbits/rounding.c cxx-sources: -- Walter's C++ code for 2D linear systems of interval equations cbits/lp_2d.cpp asm-sources: -- X86 assembly for interval multiplication using SIMD instructions cbits/mul.S cxx-options: -std=c++20 -mavx2 -mfma -frounding-math -ffp-contract=off -fno-math-errno -fno-signed-zeros -fno-trapping-math -Wno-unused-result -Wno-sign-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