aboutsummaryrefslogtreecommitdiff
path: root/src/Chelleport/Draw.hs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/Chelleport/Draw.hs25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/Chelleport/Draw.hs b/src/Chelleport/Draw.hs
new file mode 100644
index 0000000..c042e32
--- /dev/null
+++ b/src/Chelleport/Draw.hs
@@ -0,0 +1,25 @@
+module Chelleport.Draw where
+
+import Chelleport.AppShell (DrawContext (ctxFont, ctxRenderer))
+import Data.Text (Text)
+import qualified SDL
+import qualified SDL.Font as TTF
+
+-- Render text to the screen
+renderText :: DrawContext -> Text -> IO ()
+renderText ctx text = do
+ -- Render text in white
+ surface <- TTF.blended (ctxFont ctx) (SDL.V4 255 255 255 255) text
+ texture <- SDL.createTextureFromSurface (ctxRenderer ctx) surface
+ SDL.freeSurface surface
+
+ -- Get text dimensions
+ textureInfo <- SDL.queryTexture texture
+ let textWidth = SDL.textureWidth textureInfo
+ textHeight = SDL.textureHeight textureInfo
+ position =
+ SDL.P (SDL.V2 ((640 - textWidth) `div` 2) ((480 - textHeight) `div` 2))
+
+ -- Render the texture
+ SDL.copy (ctxRenderer ctx) texture Nothing $ Just (SDL.Rectangle position (SDL.V2 textWidth textHeight))
+ SDL.destroyTexture texture