packages feed

approx-rand-test-0.2.0: utils/cairo/ChartBackend.hs

module ChartBackend (
  backendFormats,
  writeWithBackend
) where

import           Control.Monad (void)
import qualified Graphics.Rendering.Chart as Chart
import qualified Graphics.Rendering.Chart.Backend.Cairo as CairoChart
import qualified System.FilePath.Posix as FP
import           System.IO (hPutStrLn, stderr)

backendFormats :: [String]
backendFormats = ["pdf", "png", "ps", "svg"]

writeWithBackend :: Chart.Renderable () -> FP.FilePath -> IO ()
writeWithBackend renderable path =
  case snd $ FP.splitExtension path of
    ".pdf" -> CairoChart.renderableToPDFFile renderable 800 600 path
    ".png" -> void $ CairoChart.renderableToPNGFile renderable 800 600 path
    ".ps"  -> CairoChart.renderableToPSFile renderable 800 600 path
    ".svg" -> CairoChart.renderableToSVGFile renderable 800 600 path
    _      -> hPutStrLn stderr "Unknown output format!"