{-# LANGUAGE OverloadedStrings #-}
module Main where
import System.Environment (getArgs)
import Graphics.Text.Font.Render (makeDrawText', GlyphSize(..), TextTransform(..),
AllocatedRendering(..), SpatialTransform(..))
import SDL hiding (rotate)
import Graphics.GL.Core32
import Data.Function (fix)
import Data.Text.Lazy (pack)
import Control.Monad (unless)
main :: IO ()
main = do
SDL.initializeAll
let openGL = defaultOpenGL { glProfile = Core Debug 3 3 }
wcfg = defaultWindow {
windowInitialSize = V2 640 480,
windowGraphicsContext = OpenGLContext openGL,
windowResizable = True
}
w <- createWindow "Typograffiti" wcfg
_ <- glCreateContext w
let ttfName = "assets/Lora-Regular.ttf"
text <- pack <$> unwords <$> getArgs
drawText <- makeDrawText' ttfName 0 (PixelSize 15 15) [] text
drawText' <- drawText text
fix $ \loop -> do
events <- fmap eventPayload <$> pollEvents
glClearColor 0 0 0 1
glClear GL_COLOR_BUFFER_BIT
sz@(V2 dw dh) <- glGetDrawableSize w
glViewport 0 0 (fromIntegral dw) (fromIntegral dh)
let offset = V2 0 $ fromIntegral dy
V2 _ dy = arSize drawText'
arDraw drawText' [
TextTransformSpatial $ SpatialTransformTranslate offset
] sz
glSwapWindow w
unless (QuitEvent `elem` events) loop