packages feed

HRay-1.1: HRayMain.lhs

		HRay main program, which contains the main function
	intended for usage with the other modules in the HRay package

   	author: Kenneth Hoste, 2004-2005
	part of a masters thesis at the University of Ghent, Belgium

	==========================================================================

> import HRayOutput (getRenderTime, createPPM, getImage)
> import HRayParser (RenderDescr(RenderDescr), readDescr)
> import System.CPUTime (getCPUTime)
> import System.Directory (doesFileExist)
> import System.Environment (getArgs)

        main function

> main :: IO()
> main = do args <- getArgs
>	    if (length args /= 2)
>              then error "Usage: HRay <input scene path> <output ppm path>\n"
>	       else do let input = head args
>	                   output = head (tail args)
>                      exists <- doesFileExist input
>                      case exists of
>                           True -> do fileContent <- readFile input
>                                      let (RenderDescr res depth scene) = readDescr fileContent
>                                      timeBefore <- getCPUTime
>			               writeFile output (createPPM res (getImage depth res scene))
>                                      timeAfter <- getCPUTime
>				       putStr $ "Image output written to " ++ output ++ " in PPM format\n"
>				       putStr $ "Time needed to render the image: " ++ (getRenderTime timeBefore timeAfter) ++ "\n"
>                           False -> error $ "File \"" ++ input ++ "\" does not exist.\n"