terminal-3d-graphics-0.2.0.0: src/Terminal3D/BigText.hs
module Terminal3D.BigText where
import Data.Char
-- | Given a screen resolution in pixels, this will return an appropriate text size to use
getTextSize :: (Int, Int) -> Int
getTextSize (w, _) = quot w 1000
-- | Print big text at a given scale.
printBig :: Int -> String -> IO ()
printBig 0 msg = putStrLn msg
printBig scale msg = mapM_ putStrLn rows
where
chars = map (glyph . toUpper) msg
rows = concatMap expandRow [0..6]
expandRow r = replicate scale $ concatMap (\g -> expandCol (g !! r) ++ replicate scale ' ') chars
expandCol = concatMap (replicate (scale * 2))
-- | Glyphs are 5 wide x 7 tall for better letter clarity.
glyph :: Char -> [String]
glyph c = case c of
'A' -> [" ▒ ",
" ▒█▒ ",
"▒█ █▒",
"█████",
"█░ ░█",
"█ █",
"▀ ▀"]
'B' -> ["████ ",
"█░ ░█",
"█░ ░█",
"████ ",
"█░ ░█",
"█░ ░█",
"████ "]
'C' -> [" ▒███",
"▒█░ ",
"█░ ",
"█ ",
"█░ ",
"▒█░ ",
" ▒███"]
'D' -> ["████ ",
"█░ ░█",
"█ █",
"█ █",
"█ █",
"█░ ░█",
"████ "]
'E' -> ["█████",
"█░ ",
"█░ ",
"████ ",
"█░ ",
"█░ ",
"█████"]
'F' -> ["█████",
"█░ ",
"█░ ",
"████ ",
"█░ ",
"█░ ",
"█ "]
'G' -> [" ▒███",
"▒█░ ",
"█░ ",
"█ ██",
"█ ░█",
"▒█░░█",
" ▒███"]
'H' -> ["█ █",
"█ █",
"█ █",
"█████",
"█ █",
"█ █",
"█ █"]
'I' -> ["█████",
" █ ",
" █ ",
" █ ",
" █ ",
" █ ",
"█████"]
'J' -> [" ███",
" █ ",
" █ ",
" █ ",
"█ █ ",
"█ ░█ ",
" ███ "]
'K' -> ["█ █",
"█ ▒█",
"█ ▒█ ",
"███ ",
"█ ▒█ ",
"█ ▒█",
"█ █"]
'L' -> ["█ ",
"█ ",
"█ ",
"█ ",
"█ ",
"█░ ",
"█████"]
'M' -> ["█ █",
"██ ██",
"█▒█▒█",
"█ █ █",
"█ █",
"█ █",
"█ █"]
'N' -> ["█ █",
"██ █",
"█▒ █",
"█ █ █",
"█ ▒█",
"█ ██",
"█ █"]
'O' -> [" ███ ",
"▒█ █▒",
"█ █",
"█ █",
"█ █",
"▒█ █▒",
" ███ "]
'P' -> ["████ ",
"█░ ░█",
"█░ ░█",
"████ ",
"█ ",
"█ ",
"█ "]
'Q' -> [" ███ ",
"▒█ █▒",
"█ █",
"█ █",
"█ █ █",
"▒█ ██",
" ████"]
'R' -> ["████ ",
"█░ ░█",
"█░ ░█",
"████ ",
"█ ▒ ",
"█ ▒ ",
"█ █"]
'S' -> [" ████",
"▒█ ",
"▒█ ",
" ███ ",
" █▒",
" █▒",
"████ "]
'T' -> ["█████",
" ░█░ ",
" █ ",
" █ ",
" █ ",
" █ ",
" █ "]
'U' -> ["█ █",
"█ █",
"█ █",
"█ █",
"█ █",
"▒█ █▒",
" ███ "]
'V' -> ["█ █",
"█ █",
"█ █",
"▒█ █▒",
" █ █ ",
" ▒█▒ ",
" █ "]
'W' -> ["█ █",
"█ █",
"█ █",
"█ █ █",
"█▒█▒█",
"██ ██",
"█ █"]
'X' -> ["█ █",
" ▒ ▒ ",
" ▒█▒ ",
" █ ",
" ▒█▒ ",
" ▒ ▒ ",
"█ █"]
'Y' -> ["█ █",
" ▒ ▒ ",
" ▒█▒ ",
" █ ",
" █ ",
" █ ",
" █ "]
'Z' -> ["█████",
" ▒█",
" ▒█ ",
" ░█░ ",
" █▒ ",
"█▒ ",
"█████"]
'0' -> [" ███ ",
"▒█ █▒",
"█ ██",
"█ █ █",
"██ █",
"▒█ █▒",
" ███ "]
'1' -> [" █ ",
" ██ ",
"░ █ ",
" █ ",
" █ ",
" █ ",
"█████"]
'2' -> [" ███ ",
"▒█ █▒",
" ▒█",
" ██ ",
" █▒ ",
"▒█ ",
"█████"]
'3' -> ["████ ",
" ░█",
" ░█",
" ███ ",
" ░█",
" ░█",
"████ "]
'4' -> ["█ █ ",
"█ █ ",
"█ █ ",
"█████",
" █ ",
" █ ",
" █ "]
'5' -> ["█████",
"█░ ",
"█░ ",
"████ ",
" ░█",
" ░█",
"████ "]
'6' -> [" ███ ",
"▒█ ",
"█░ ",
"████ ",
"█ █",
"▒█ █▒",
" ███ "]
'7' -> ["█████",
" ░█",
" ░█ ",
" █ ",
" █░ ",
" █ ",
" █ "]
'8' -> [" ███ ",
"▒█ █▒",
"▒█ █▒",
" ███ ",
"▒█ █▒",
"▒█ █▒",
" ███ "]
'9' -> [" ███ ",
"▒█ █▒",
"█ █",
" ████",
" ░█",
" ░█▒",
" ███ "]
' ' -> [" ",
" ",
" ",
" ",
" ",
" ",
" "]
'!' -> [" █ ",
" █ ",
" █ ",
" ▒ ",
" ",
" ░ ",
" █ "]
'?' -> [" ███ ",
"▒█ █▒",
" ░█",
" ▒█ ",
" █ ",
" ",
" █ "]
'.' -> [" ",
" ",
" ",
" ",
" ",
" ",
" █ "]
',' -> [" ",
" ",
" ",
" ",
" ",
" ▒ ",
" ▒ "]
'-' -> [" ",
" ",
" ",
"█████",
" ",
" ",
" "]
':' -> [" ",
" █ ",
" ▒ ",
" ",
" ▒ ",
" █ ",
" "]
'/' -> [" █",
" ▒█",
" █ ",
" █░ ",
" █ ",
"█▒ ",
"█ "]
_ -> ["█████",
"█ █",
"█ ? █",
"█ █",
"█████",
" ",
" "]