diff options
| author | Akshay Nair <phenax5@gmail.com> | 2024-12-13 20:25:35 +0530 |
|---|---|---|
| committer | Akshay Nair <phenax5@gmail.com> | 2024-12-13 20:41:22 +0530 |
| commit | 8fb21cb43b610c5a04268637155d3efb07217040 (patch) | |
| tree | d1c0f91b83d5905fb9b15b7dec57f0a1a695fd6e /src/Chelleport/Draw.hs | |
| parent | fab78089b8ff9ba10e8261c49aaac41762fc05e0 (diff) | |
| download | chelleport-8fb21cb43b610c5a04268637155d3efb07217040.tar.gz chelleport-8fb21cb43b610c5a04268637155d3efb07217040.zip | |
Refactor window drawing and app shell
Diffstat (limited to 'src/Chelleport/Draw.hs')
| -rw-r--r-- | src/Chelleport/Draw.hs | 25 |
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 |
