packages feed

vty-examples-5.5.0: BenchNoDiffOpt.hs

{-# LANGUAGE BangPatterns #-}
module BenchNoDiffOpt where

{-# LANGUAGE BangPatterns #-}
import Graphics.Vty
import Verify

import Control.Concurrent( threadDelay )
import Control.Monad( liftM2 )

import qualified Data.ByteString.Char8 as B
import Data.Default (def)
import Data.List

import System.Environment( getArgs )
import System.IO
import System.Random

bench0 = do 
    let fixedGen = mkStdGen 0
    setStdGen fixedGen
    vty <- mkVty def
    (w,h) <- displayBounds $ outputIface vty
    let images = return $ (image0, image1)
        image0 = charFill defAttr 'X' w h
        image1 = charFill defAttr '0' w h
        bench d = do
            flipOut vty 300 image0 image1
            shutdown vty
    return $ Bench images bench

flipOut vty n image0 image1 = 
    let !pLeft  = picForImage image0
        !pRight = picForImage image1
        wLeft  0 = return ()
        wLeft  n = update vty pLeft  >> wRight (n-1)
        wRight 0 = return ()
        wRight n = update vty pRight >> wLeft  (n-1)
    in wLeft n