module Main where import qualified SDL import Linear import Options.Applicative import Control.Monad -- internal imports import Util main :: IO () main = do opts <- execParser $ info (options <**> helper) ( fullDesc <> progDesc "A simple PDF presenter written in Haskell using poppler and SDL2" ) SDL.initializeAll SDL.screenSaverEnabled SDL.$= False disps <- SDL.getDisplays putStrLn ("Number of displays detected: " ++ show (length disps)) putStrLn ("Passed command line options: " ++ show opts) -- set Render quality SDL.HintrenderScaleQuality SDL.$= SDL.ScaleLinear -- check render quality renderQuality <- SDL.get SDL.HintRenderScaleQuality when (renderQuality /= SDL.SclaeLinear) $ putErrLn "Linear texture filtering not enabled!" putStrLn "Creating window(s)" wins = map uncurry SDL.CreateWindow $ if length disps > 1 then zip [ "Ibis - " ++ optFile options , "Ibis - " ++ optFile options ++ " - Notes" ] ( map makeWindowConfig disps )