packages feed

TimePiece-0.0.1: Internals.hs

module Internals ( getDataFileName, module Internals ) where
import Paths_TimePiece
import System.IO.Unsafe
import Data.IORef

{-# NOINLINE _WIDTH_ #-}
_WIDTH_ :: IORef Integer
_WIDTH_ = unsafePerformIO $ newIORef 1024

{-# NOINLINE _HEIGHT_ #-}
_HEIGHT_ :: IORef Integer
_HEIGHT_ = unsafePerformIO $ newIORef 768

getScreenWidth :: Num a => IO a
getScreenWidth = fmap fromIntegral (readIORef _WIDTH_)

getScreenHeight :: Num a => IO a
getScreenHeight = fmap fromIntegral (readIORef _HEIGHT_)

setScreenWidth :: Integral a => a -> IO ()
setScreenWidth = writeIORef _WIDTH_ . toInteger

setScreenHeight :: Integral a => a -> IO ()
setScreenHeight = writeIORef _HEIGHT_ . toInteger

type X = Int
type Y = Int
type Size = Int

data Point = MkPoint
    { pointX :: !X
    , pointY :: !Y
    }
    deriving (Show, Eq, Ord)