{-# OPTIONS_HADDOCK ignore-exports #-} module Graphics.Diagram.Gif where import Algebra.VectorTypes import Codec.Picture.Gif import Data.Monoid import Diagrams.Backend.Cairo import Diagrams.Prelude hiding ((<>)) import Graphics.Diagram.Plotter import Graphics.Diagram.Types import Parser.Meshparser -- |Return a list of tuples used by 'gifMain' to generate an animated gif. gifDiag :: DiagProp -> [PT] -> [(Diagram Cairo R2, GifDelay)] gifDiag p xs = fmap ((\x -> (x, 100)) . (<> nonChDiag)) . flip (++) [mkDiag (convexHPText <> convexHP) p xs <> lastUpperHull <> lastLowerHull] $ (lowerHullList ++ ((<> lastLowerHull) <$> upperHullList)) where upperHullList = convexUHStepsLs p xs lastUpperHull = last upperHullList lowerHullList = convexLHStepsLs p xs lastLowerHull = last lowerHullList -- add the x-axis and the other default stuff nonChDiag = mconcat . fmap (\x -> mkDiag x p xs) $ [coordPoints, xAxis, yAxis, grid, whiteRectB] -- |Same as gifDiag, except that it takes a string containing the -- mesh file content instead of the the points. gifDiagS :: DiagProp -> MeshString -> [(Diagram Cairo R2, GifDelay)] gifDiagS p = gifDiag p . meshToArr