module Main where import Graphics.Rendering.Chart import Graphics.Rendering.Chart.Backend.Cairo import System.Environment(getArgs,getProgName) import qualified GtkTestPicking import qualified DiagramsCairo import qualified DiagramsSVG import qualified DiagramsEPS import qualified CompareFonts import qualified Drawing.Cairo import qualified Drawing.DiagramsCairo import Control.Monad import Tests chooseLineWidth PNG = 1.0 chooseLineWidth PDF = 0.25 chooseLineWidth PS = 0.25 chooseLineWidth SVG = 0.25 main = do args <- getArgs main1 args main1 :: [String] -> IO () main1 ("charts-cairo":"--pdf":tests) = renderTestsToFiles PDF ".pdf" tests main1 ("charts-cairo":"--svg":tests) = renderTestsToFiles SVG ".svg" tests main1 ("charts-cairo":"--ps":tests) = renderTestsToFiles PS ".ps" tests main1 ("charts-cairo":"--png":tests) = renderTestsToFiles PNG ".png" tests main1 ("charts-diagrams":"--cairo":args) = DiagramsCairo.main1 args main1 ("charts-diagrams":"--svg":args) = DiagramsSVG.main1 args main1 ("charts-diagrams":"--eps":args) = DiagramsEPS.main1 args main1 ("drawing-cairo":[]) = Drawing.Cairo.main main1 ("drawing-diagrams":[]) = Drawing.DiagramsCairo.main main1 ("compare-fonts":[]) = CompareFonts.main main1 ("gtk-picking":[]) = GtkTestPicking.main main1 _ = usage usage :: IO () usage = do progname <- getProgName putStrLn "Usage:" putStrLn $ " " ++ progname ++ " charts-cairo (--pdf|--svg|--ps|--png) chart-name..." putStrLn $ " " ++ progname ++ " charts-diagrams (--cairo|--svg|--eps) chart-name..." putStrLn $ " " ++ progname ++ " drawing-cairo" putStrLn $ " " ++ progname ++ " drawing-diagrams" putStrLn $ " " ++ progname ++ " compare-fonts" putStrLn $ " " ++ progname ++ " gtk-picking" chartsCairo :: [String] -> IO () chartsCairo ("--pdf":tests) = renderTestsToFiles PDF ".pdf" tests chartsCairo ("--svg":tests) = renderTestsToFiles SVG ".svg" tests chartsCairo ("--ps":tests) = renderTestsToFiles PS ".ps" tests chartsCairo ("--png":tests) = renderTestsToFiles PNG ".png" tests chartsCairo (tests) = renderTestsToFiles PNG ".png" tests renderTestsToFiles :: FileFormat -> String -> [String] -> IO () renderTestsToFiles fmt suffix tests = mapM_ doTest (getTests tests) where doTest (n,sz,rf) = do let f = n++suffix putStrLn (f ++ "...") void $ renderableToFile (FileOptions sz fmt) f (rf (chooseLineWidth fmt))