packages feed

Chart-tests-1.9.3: tests/DiagramsCairo.hs

module DiagramsCairo where

import Graphics.Rendering.Chart.Backend
import Graphics.Rendering.Chart.Backend.Diagrams

import Diagrams.Core ( renderDia )
import Diagrams.Prelude ( dims, V2(..) )
import Diagrams.Backend.Cairo
import Diagrams.Backend.Cairo.Internal
import Graphics.Rendering.Chart.Renderable ( render, Renderable )

import System.Environment ( getArgs )

import Tests ( allTests, showTests )
import qualified Tests as T

main = do
    args <- getArgs
    main1 args

main1 :: [String] -> IO ()
main1 args = do
  -- Only load the environment once, to speed things up.
  env <- defaultEnv bitmapAlignmentFns 500 500
  let renderDiagram :: (String, (Int, Int), T.LineWidth -> Renderable ()) -> IO ()
      renderDiagram (n,(w,h),ir) = do
        let env' = env { envOutputSize = (fromIntegral w, fromIntegral h) }
            (d, _) = runBackendR env' (ir 1.0)
        fst $ renderDia Cairo (CairoOptions (n ++ ".png") (dims $ V2 (fromIntegral w) (fromIntegral h)) PNG False) d
  showTests (fmap (\(x,_,_) -> x) allTests) renderDiagram