packages feed

Eternal10Seconds-0.1: Number.hs

module Number where

import qualified Graphics.UI.SDL as SDL
import Resource
import Pos

numberBmp = "./resource/image/number.bmp"
numberSize = (15.0, 30.0)

number2Bmp = "./resource/image/number2.bmp"
number2Size = (17.4, 50.0)

numberPaints :: String -> RealPos -> Pos -> Int -> [Paint]
numberPaints filename (w, h) (x, y) n = let
    (iw, ih) = floorPos (w, h) :: Pos
    tips = map (\n -> (filename, Just (SDL.Rect (floor $ (fromIntegral n)*w) 0 iw ih))) (sepInt n) in
    zip tips [Just (SDL.Rect (floor $ (fromIntegral x)+dx) y iw ih) | dx <- [0,w..]]

sepInt :: Int -> [Int]
sepInt 0 = [0]
sepInt n = (case div n 10 of 0 -> []; u->sepInt u) ++ [mod n 10]

-- •`‰æ
-- ‰æ‘œƒtƒ@ƒCƒ‹E•¶ŽšƒTƒCƒYE•`‰æˆÊ’uE•\ަ’l
renderNumber :: SDL.Surface -> Resource -> String -> RealPos -> Pos -> Int -> IO ()
renderNumber surf res filename (w, h) (x, y) n = mapM_ (renderPaint res surf) (numberPaints filename (w, h) (x, y) n)