module System.Hardware.PiLcd.Util
( padLine
, bitIf
, word8sToWord16
, word16ToWord8s
) where
import Data.Bits
import Data.Monoid
import qualified Data.Text as T
import Data.Word
space :: T.Text
space = T.singleton ' '
padLine :: Int -> T.Text -> T.Text
padLine columns txt =
let len = T.length txt
in if | len < columns -> txt <> T.replicate (columns len) space
| len > columns -> T.take columns txt
| otherwise -> txt
bitIf :: Bool -> Int -> Word8
bitIf b n = if b then bit n else 0
word8sToWord16 :: [Word8] -> Word16
word8sToWord16 [b1, b2] = (fromIntegral b1 `shiftL` 8) .|. fromIntegral b2
word16ToWord8s :: Word16 -> [Word8]
word16ToWord8s w = [fromIntegral (w `shiftR` 8), fromIntegral w]