aboutsummaryrefslogtreecommitdiff
path: root/src/Chelleport/Context.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Chelleport/Context.hs')
-rw-r--r--src/Chelleport/Context.hs49
1 files changed, 36 insertions, 13 deletions
diff --git a/src/Chelleport/Context.hs b/src/Chelleport/Context.hs
index 9b1e13e..b573975 100644
--- a/src/Chelleport/Context.hs
+++ b/src/Chelleport/Context.hs
@@ -1,26 +1,23 @@
module Chelleport.Context where
import Chelleport.Types
+import Foreign.C (CFloat)
import qualified Graphics.X11 as X11
import SDL (($=))
import qualified SDL
import qualified SDL.Font as TTF
+windowOpacity :: CFloat
+windowOpacity = 0.6
+
+fontSize :: Int
+fontSize = 24
+
initializeContext :: IO DrawContext
initializeContext = do
- let windowCfg =
- SDL.defaultWindow
- { SDL.windowMode = SDL.FullscreenDesktop,
- SDL.windowPosition = SDL.Absolute $ SDL.P $ SDL.V2 0 0,
- SDL.windowInitialSize = SDL.V2 0 0,
- SDL.windowBorder = False
- }
- window <- SDL.createWindow "Chelleport" windowCfg
- renderer <- SDL.createRenderer window (-1) SDL.defaultRenderer
- font <- TTF.load "Inter-Regular.ttf" 24
-
- SDL.windowOpacity window $= 0.6
- SDL.rendererDrawBlendMode renderer $= SDL.BlendAlphaBlend
+ window <- initializeWindow
+ renderer <- initializeRenderer window
+ font <- loadFont
display <- X11.openDisplay ""
@@ -31,3 +28,29 @@ initializeContext = do
ctxFont = font,
ctxX11Display = display
}
+
+loadFont :: IO TTF.Font
+loadFont = do
+ font <- TTF.load "Inter-Regular.ttf" fontSize
+ TTF.setStyle font [TTF.Bold]
+ pure font
+
+initializeRenderer :: SDL.Window -> IO SDL.Renderer
+initializeRenderer window = do
+ renderer <- SDL.createRenderer window (-1) SDL.defaultRenderer
+ SDL.windowOpacity window $= windowOpacity
+ SDL.rendererDrawBlendMode renderer $= SDL.BlendAlphaBlend
+ pure renderer
+
+initializeWindow :: IO SDL.Window
+initializeWindow = do
+ let windowCfg =
+ SDL.defaultWindow
+ { SDL.windowMode = SDL.FullscreenDesktop,
+ SDL.windowPosition = SDL.Absolute $ SDL.P $ SDL.V2 0 0,
+ SDL.windowInitialSize = SDL.V2 0 0,
+ SDL.windowBorder = False
+ }
+ window <- SDL.createWindow "Chelleport" windowCfg
+ SDL.showWindow window
+ pure window