From 864382681047e81ffd4b8210665da03f5c8d2f87 Mon Sep 17 00:00:00 2001 From: Julian Ospald Date: Thu, 5 Dec 2019 12:19:55 +0800 Subject: [PATCH] Fix build and freeze --- CG2.cabal | 2 + Graphics/Diagram/Core.hs | 17 ++-- Graphics/Diagram/Gtk.hs | 4 +- Graphics/HalfEdge.hs | 7 +- Parser/Meshparser.hs | 22 ++--- cabal.project | 3 + cabal.project.freeze | 169 +++++++++++++++++++++++++++++++++++++++ stack.yaml | 96 ---------------------- 8 files changed, 202 insertions(+), 118 deletions(-) create mode 100644 cabal.project create mode 100644 cabal.project.freeze delete mode 100644 stack.yaml diff --git a/CG2.cabal b/CG2.cabal index e5c3c7c..2611789 100644 --- a/CG2.cabal +++ b/CG2.cabal @@ -177,9 +177,11 @@ executable Test base >=4.6, bytestring >= 0.10.4.0, containers >= 0.5.0.0, + dequeue >= 0.1.12, diagrams-lib >=1.3, diagrams-cairo >=1.3, diagrams-contrib >= 1.3.0.0, + JuicyPixels >= 3.1.7.1, QuickCheck >= 2.4.2, safe >= 0.3.8 diff --git a/Graphics/Diagram/Core.hs b/Graphics/Diagram/Core.hs index 8a8f0b7..2b77100 100644 --- a/Graphics/Diagram/Core.hs +++ b/Graphics/Diagram/Core.hs @@ -57,23 +57,24 @@ instance Def DiagProp where def = diagDefaultProp -instance Monoid Diag where - mempty = EmptyDiag mempty - mappend d1@(Diag {}) d2@(Diag {}) = Diag g +instance Semigroup Diag where + d1@(Diag {}) <> d2@(Diag {}) = Diag g where g p obj = mkDiag d1 p obj <> mkDiag d2 p obj - mappend d1@(GifDiag {}) d2@(Diag {}) = GifDiag g + d1@(GifDiag {}) <> d2@(Diag {}) = GifDiag g where g p col f vt = mkGifDiag d1 p col f vt ++ [mkDiag d2 p [vt]] - mappend d1@(Diag {}) d2@(GifDiag {}) = GifDiag g + d1@(Diag {}) <> d2@(GifDiag {}) = GifDiag g where g p col f vt = mkDiag d2 p [vt] : mkGifDiag d1 p col f vt - mappend d1@(GifDiag {}) d2@(GifDiag {}) = GifDiag g + d1@(GifDiag {}) <> d2@(GifDiag {}) = GifDiag g where g p col f vt = mkGifDiag d1 p col f vt ++ mkGifDiag d2 p col f vt - mappend (EmptyDiag _) g = g - mappend g (EmptyDiag _) = g + (EmptyDiag _) <> g = g + g <> (EmptyDiag _) = g +instance Monoid Diag where + mempty = EmptyDiag mempty mconcat = foldr mappend mempty diff --git a/Graphics/Diagram/Gtk.hs b/Graphics/Diagram/Gtk.hs index db28137..6349ce9 100644 --- a/Graphics/Diagram/Gtk.hs +++ b/Graphics/Diagram/Gtk.hs @@ -63,7 +63,7 @@ diagS p mesh = diag p diagAlgos . fmap (filterValidPT p) . (\x -> if null x then [meshToArr mesh] else x) - . facesToArr + . parseObj $ mesh @@ -74,6 +74,6 @@ diagTreeS p mesh = diag p diagTreAlgos . fmap (filterValidPT p) . (\x -> if null x then [meshToArr mesh] else x) - . facesToArr + . parseObj $ mesh diff --git a/Graphics/HalfEdge.hs b/Graphics/HalfEdge.hs index a985ddd..bfcc398 100644 --- a/Graphics/HalfEdge.hs +++ b/Graphics/HalfEdge.hs @@ -29,6 +29,7 @@ import Control.Monad import qualified Data.ByteString.Char8 as B import qualified Data.IntMap.Lazy as Map import Data.Maybe +import Diagrams.TwoD.Types import Parser.Meshparser import Safe @@ -231,10 +232,10 @@ buildHeEdge pts fs -- |Build the HeEdge data structure from the .obj mesh file contents. buildHeEdgeFromStr :: B.ByteString -- ^ contents of an .obj mesh file - -> HeEdge PT + -> HeEdge (P2 Double) buildHeEdgeFromStr bmesh = - let pts = meshVertices bmesh - faces' = indirectHeFaces . meshFaces $ bmesh + let pts = meshToArr bmesh + faces' = indirectHeFaces . facesToArr $ bmesh edges = indirectHeEdges faces' verts = indirectHeVerts edges in indirectToDirect pts edges faces' verts diff --git a/Parser/Meshparser.hs b/Parser/Meshparser.hs index d530ea3..3e8a8a0 100644 --- a/Parser/Meshparser.hs +++ b/Parser/Meshparser.hs @@ -1,6 +1,6 @@ {-# OPTIONS_HADDOCK ignore-exports #-} -module Parser.Meshparser (meshToArr, facesToArr) where +module Parser.Meshparser (meshToArr, facesToArr, parseObj) where import Control.Applicative import Data.Attoparsec.ByteString.Char8 @@ -9,13 +9,8 @@ import qualified Data.ByteString.Char8 as B import Diagrams.TwoD.Types --- |Convert a text String with multiple vertices and faces into --- a list of vertices, ordered by the faces specification. -facesToArr :: B.ByteString -> [[P2 Double]] -facesToArr str = fmap (fmap (\y -> meshToArr str !! (fromIntegral y - 1))) - (faces str) - where - faces = rights . fmap (parseOnly parseFace) . B.lines +facesToArr :: B.ByteString -> [[Int]] +facesToArr = rights . fmap (parseOnly parseFace) . B.lines -- |Convert a text String with multiple vertices into @@ -37,5 +32,14 @@ parseVertice = <*> (many' space *> double) -parseFace :: Parser [Integer] +parseFace :: Parser [Int] parseFace = char 'f' *> many1' (many' space *> decimal) + + +-- |Convert a text String with multiple vertices and faces into +-- a list of vertices, ordered by the faces specification. +parseObj :: B.ByteString -> [[P2 Double]] +parseObj str = fmap (fmap (\y -> meshToArr str !! (fromIntegral y - 1))) + (faces str) + where + faces = rights . fmap (parseOnly parseFace) . B.lines diff --git a/cabal.project b/cabal.project new file mode 100644 index 0000000..d04627c --- /dev/null +++ b/cabal.project @@ -0,0 +1,3 @@ +with-compiler: ghc-8.6.5 + +packages: *.cabal diff --git a/cabal.project.freeze b/cabal.project.freeze new file mode 100644 index 0000000..520b681 --- /dev/null +++ b/cabal.project.freeze @@ -0,0 +1,169 @@ +constraints: any.Boolean ==0.2.4, + any.Cabal ==2.4.0.1, + any.JuicyPixels ==3.3.4, + JuicyPixels -mmap, + any.MemoTrie ==0.6.10, + MemoTrie -examples, + any.MonadRandom ==0.5.1.1, + any.NumInstances ==1.4, + any.QuickCheck ==2.13.2, + QuickCheck +templatehaskell, + any.StateVar ==1.2, + any.active ==0.2.0.14, + any.adjunctions ==4.4, + any.alex ==3.2.5, + alex +small_base, + any.ansi-terminal ==0.10.2, + ansi-terminal -example, + any.ansi-wl-pprint ==0.6.9, + ansi-wl-pprint -example, + any.array ==0.5.3.0, + any.async ==2.2.2, + async -bench, + any.attoparsec ==0.13.2.3, + attoparsec -developer, + any.base ==4.12.0.0, + any.base-orphans ==0.8.1, + any.bifunctors ==5.5.6, + bifunctors +semigroups +tagged, + any.binary ==0.8.6.0, + any.binary-orphans ==1.0.1, + any.bytes ==0.16, + bytes +test-doctests, + any.bytestring ==0.10.8.2, + any.cabal-doctest ==1.0.8, + any.cairo ==0.13.6.1, + cairo +cairo_pdf +cairo_ps +cairo_svg, + any.call-stack ==0.2.0, + any.cereal ==0.5.8.1, + cereal -bytestring-builder, + any.circle-packing ==0.1.0.6, + any.colour ==2.3.5, + any.comonad ==5.0.6, + comonad +containers +distributive +test-doctests, + any.constraints ==0.11.2, + any.containers ==0.6.0.1, + any.contravariant ==1.5.2, + contravariant +semigroups +statevar +tagged, + any.cubicbezier ==0.6.0.6, + cubicbezier -debug, + any.data-default ==0.7.1.1, + any.data-default-class ==0.1.2.0, + any.data-default-instances-containers ==0.0.1, + any.data-default-instances-dlist ==0.0.1, + any.data-default-instances-old-locale ==0.0.1, + any.deepseq ==1.4.4.0, + any.dequeue ==0.1.12, + any.diagrams-cairo ==1.4.1, + any.diagrams-contrib ==1.4.4, + any.diagrams-core ==1.4.2, + any.diagrams-lib ==1.4.3, + any.diagrams-solve ==0.1.1, + any.directory ==1.3.3.0, + any.distributive ==0.6.1, + distributive +semigroups +tagged, + any.dlist ==0.8.0.7, + any.dual-tree ==0.2.2.1, + any.enclosed-exceptions ==1.0.3, + any.exceptions ==0.10.3, + any.fast-math ==1.0.2, + any.filepath ==1.4.2.1, + any.fingertree ==0.1.4.2, + any.force-layout ==0.4.0.6, + any.free ==5.1.3, + any.fsnotify ==0.3.0.1, + any.ghc-boot-th ==8.6.5, + any.ghc-prim ==0.5.3, + any.gio ==0.13.6.1, + any.glib ==0.13.7.1, + glib +closure_signals, + any.groups ==0.4.1.0, + any.gtk ==0.15.3, + gtk +deprecated +fmode-binary +have-gio -have-quartz-gtk, + any.gtk2hs-buildtools ==0.13.5.4, + gtk2hs-buildtools +closuresignals, + any.happy ==1.19.12, + happy +small_base, + any.hashable ==1.2.7.0, + hashable -examples +integer-gmp +sse2 -sse41, + any.hashtables ==1.2.3.4, + hashtables -bounds-checking -debug -detailed-profiling -portable -sse42 +unsafe-tricks, + any.hinotify ==0.4, + any.integer-gmp ==1.0.2.0, + any.integer-logarithms ==1.0.3, + integer-logarithms -check-bounds +integer-gmp, + any.integration ==0.2.1, + any.intervals ==0.9, + intervals -herbie +test-doctests, + any.invariant ==0.5.3, + any.kan-extensions ==5.2, + any.lens ==4.17.1, + lens -benchmark-uniplate -dump-splices +inlining -j -old-inline-pragmas -safe +test-doctests +test-hunit +test-properties +test-templates +trustworthy, + any.lifted-async ==0.10.0.4, + any.lifted-base ==0.2.3.12, + any.linear ==1.20.9, + linear -herbie +template-haskell, + any.matrices ==0.5.0, + any.mfsolve ==0.3.2.0, + any.microlens ==0.4.11.2, + any.microlens-mtl ==0.2.0.1, + any.microlens-th ==0.4.3.2, + any.monad-control ==1.0.2.3, + any.monoid-extras ==0.5.1, + any.mtl ==2.2.2, + any.mtl-compat ==0.2.2, + mtl-compat -two-point-one -two-point-two, + any.newtype-generics ==0.5.4, + any.old-locale ==1.0.0.7, + any.optparse-applicative ==0.14.3.0, + any.pango ==0.13.6.1, + pango +new-exception, + any.parallel ==3.2.2.0, + any.parsec ==3.1.13.0, + any.pretty ==1.1.3.6, + any.primitive ==0.7.0.0, + any.process ==1.6.5.0, + any.profunctors ==5.5.1, + any.random ==1.1, + any.reflection ==2.1.5, + reflection -slow +template-haskell, + any.rts ==1.0, + any.safe ==0.3.17, + any.scientific ==0.3.6.2, + scientific -bytestring-builder -integer-simple, + any.semigroupoids ==5.3.4, + semigroupoids +comonad +containers +contravariant +distributive +doctests +tagged +unordered-containers, + any.semigroups ==0.19.1, + semigroups +binary +bytestring -bytestring-builder +containers +deepseq +hashable +tagged +template-haskell +text +transformers +unordered-containers, + any.shelly ==1.9.0, + shelly -build-examples -lifted, + any.split ==0.2.3.3, + any.splitmix ==0.0.3, + splitmix -optimised-mixer +random, + any.statestack ==0.2.0.5, + any.stm ==2.5.0.0, + any.tagged ==0.8.6, + tagged +deepseq +transformers, + any.template-haskell ==2.14.0.0, + any.text ==1.2.3.1, + any.th-abstraction ==0.3.1.0, + any.time ==1.8.0.2, + any.transformers ==0.5.6.2, + any.transformers-base ==0.4.5.2, + transformers-base +orphaninstances, + any.transformers-compat ==0.6.5, + transformers-compat -five +five-three -four +generic-deriving +mtl -three -two, + any.type-equality ==1, + any.unix ==2.7.2.2, + any.unix-compat ==0.5.2, + unix-compat -old-time, + any.unordered-containers ==0.2.10.0, + unordered-containers -debug, + any.utf8-string ==1.0.1.1, + any.vector ==0.12.0.3, + vector +boundschecks -internalchecks -unsafechecks -wall, + any.vector-space ==0.16, + any.void ==0.7.3, + void -safe, + any.zlib ==0.6.2.1, + zlib -non-blocking-ffi -pkg-config diff --git a/stack.yaml b/stack.yaml deleted file mode 100644 index 83b846c..0000000 --- a/stack.yaml +++ /dev/null @@ -1,96 +0,0 @@ -flags: - text: - integer-simple: false - QuickCheck: - base4point8: false -packages: -- '.' -extra-deps: -- GLURaw-1.4.0.2 -- GLUT-2.5.1.1 -- JuicyPixels-3.2.6.1 -- MonadRandom-0.4 -- OpenGL-2.9.2.0 -- OpenGLRaw-1.5.0.1 -- QuickCheck-2.8.1 -- StateVar-1.1.0.1 -- active-0.2.0.4 -- adjunctions-4.2.1 -- ansi-terminal-0.6.2.2 -- ansi-wl-pprint-0.6.7.3 -- async-2.0.2 -- attoparsec-0.13.0.1 -- base-orphans-0.4.4 -- bifunctors-5 -- bmp-1.2.5.2 -- bytes-0.15.0.1 -- cairo-0.12.5.3 -- cereal-0.4.1.1 -- circle-packing-0.1.0.4 -- colour-2.3.3 -- comonad-4.2.7.2 -- contravariant-1.3.3 -- data-default-0.5.3 -- data-default-class-0.0.1 -- data-default-instances-base-0.0.1 -- data-default-instances-containers-0.0.1 -- data-default-instances-dlist-0.0.1 -- data-default-instances-old-locale-0.0.1 -- dequeue-0.1.12 -- diagrams-cairo-1.3.0.3 -- diagrams-contrib-1.3.0.5 -- diagrams-core-1.3.0.2 -- diagrams-lib-1.3.0.3 -- diagrams-solve-0.1 -- distributive-0.4.4 -- dlist-0.7.1.2 -- dual-tree-0.2.0.6 -- exceptions-0.8.0.2 -- fingertree-0.1.1.0 -- force-layout-0.4.0.2 -- free-4.12.1 -- fsnotify-0.2.1 -- gio-0.12.5.3 -- glade-0.12.5.0 -- glib-0.12.5.4 -- gloss-1.9.2.1 -- gloss-rendering-1.9.2.1 -- groups-0.4.0.0 -- gtk-0.12.5.7 -- hashable-1.2.3.3 -- hinotify-0.3.8.1 -- intervals-0.7.1 -- kan-extensions-4.2.2 -- lens-4.12.3 -- linear-1.19.1.3 -- monoid-extras-0.4.0.1 -- mtl-2.2.1 -- nats-1 -- newtype-0.2 -- optparse-applicative-0.11.0.2 -- pango-0.12.5.3 -- parallel-3.2.0.6 -- parsec-3.1.9 -- prelude-extras-0.4 -- primitive-0.6 -- profunctors-5.1.1 -- random-1.1 -- reflection-2 -- safe-0.3.9 -- scientific-0.3.3.8 -- semigroupoids-5.0.0.4 -- semigroups-0.16.2.2 -- split-0.2.2 -- statestack-0.2.0.4 -- stm-2.4.4 -- tagged-0.8.1 -- text-1.2.1.3 -- tf-random-0.5 -- transformers-compat-0.4.0.4 -- unix-compat-0.4.1.4 -- unordered-containers-0.2.5.1 -- utf8-string-0.3.8 -- vector-0.11.0.0 -- void-0.7 -- zlib-0.6.1.1 -resolver: ghc-7.8