diff --git a/Graphics/Diagram/Gif.hs b/Graphics/Diagram/Gif.hs index 6079ce8..b34a45b 100644 --- a/Graphics/Diagram/Gif.hs +++ b/Graphics/Diagram/Gif.hs @@ -36,4 +36,4 @@ gifDiag p xs = -- |Same as gifDiag, except that it takes a string containing the -- mesh file content instead of the the points. gifDiagS :: DiagProp -> B.ByteString -> [(Diagram Cairo R2, GifDelay)] -gifDiagS p = gifDiag p . filterValidPT p . meshToArr +gifDiagS p = gifDiag p . filterValidPT p . meshVertices diff --git a/Graphics/Diagram/Gtk.hs b/Graphics/Diagram/Gtk.hs index 32e7f19..b0a9e0c 100644 --- a/Graphics/Diagram/Gtk.hs +++ b/Graphics/Diagram/Gtk.hs @@ -61,8 +61,8 @@ diagS :: DiagProp -> B.ByteString -> Diagram Cairo R2 diagS p mesh = diag p diagAlgos . fmap (filterValidPT p) - . (\x -> if null x then [meshToArr mesh] else x) - . facesToArr + . (\x -> if null x then [meshVertices mesh] else x) + . meshFaceVertices $ mesh @@ -72,7 +72,7 @@ diagTreeS :: DiagProp -> B.ByteString -> Diagram Cairo R2 diagTreeS p mesh = diag p diagTreAlgos . fmap (filterValidPT p) - . (\x -> if null x then [meshToArr mesh] else x) - . facesToArr + . (\x -> if null x then [meshVertices mesh] else x) + . meshFaceVertices $ mesh diff --git a/Parser/Meshparser.hs b/Parser/Meshparser.hs index bee7263..2f4cbec 100644 --- a/Parser/Meshparser.hs +++ b/Parser/Meshparser.hs @@ -11,17 +11,17 @@ 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]] -facesToArr str = fmap (fmap (\y -> meshToArr str !! (fromIntegral y - 1))) - (meshFaces str) +meshFaceVertices :: B.ByteString -> [[P2]] +meshFaceVertices str = fmap (fmap (\y -> meshVertices str !! (y - 1))) + (meshFaces str) -- |Convert a text String with multiple vertices into -- an array of float tuples. -meshToArr :: B.ByteString -- ^ the string to convert +meshVertices :: B.ByteString -- ^ the string to convert -> [P2] -- ^ the resulting vertice table -meshToArr = - fmap p2 +meshVertices + = fmap p2 . rights . fmap (parseOnly parseVertice) . B.lines @@ -35,7 +35,7 @@ parseVertice = <*> (many' space *> double) -parseFace :: Parser [Integer] +parseFace :: (Integral a) => Parser [a] parseFace = char 'f' *> many1' (many' space *> decimal)