packages feed

astrds-0.1: src/Utilities.hs

module Utilities where

import qualified Graphics.UI.SDL as SDL

-- | Get current ticks value.
getTicks :: IO Int
getTicks = do 
             t <- SDL.getTicks
             return (fromIntegral (toInteger t))

-- | Wait for a specified number of ticks.
waitTicks :: Int -> IO ()
waitTicks = SDL.delay . fromIntegral

-- | Some OpenGL functions only work for images with dimensions that
-- are powers of two. This utility function computes the next power
-- of two.
nextPowerOfTwo :: (Integral a) => a -> a
nextPowerOfTwo x = 2 ^ ceiling (logBase 2 (fromIntegral x)) 

nextPowerOfTwoFraction :: (Integral a, Integral b, Floating c) => a -> b -> c
nextPowerOfTwoFraction x y = fromIntegral x / fromIntegral (nextPowerOfTwo y)