%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{code} module Graphics.HDemo.Utils( quads, fractionToWord16, word16ToFraction ) where \end{code} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{code} import Data.Word( Word16 ) \end{code} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{code} fractionToWord16 :: Double -> Word16 fractionToWord16 = round . ((fromIntegral (maxBound::Word16))*) \end{code} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{code} word16ToFraction :: Word16 -> Double word16ToFraction p = (fromIntegral p) / (fromIntegral (maxBound::Word16)) \end{code} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{code} quads :: [a] -> [(a,a,a,a)] quads [] = error "no elements" quads (x:[]) = [(x,x,x,x)] quads (x:y:[]) = [(x,y,y,y)] quads (x:y:z:[]) = [(x,y,z,z)] quads (x:y:z:w:xs) = (x,y,z,w) : quads (y:z:w:xs) \end{code} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%