0 | {- Tian Z (ecburx@burx.vip) -}
 1 |
 2 | module IdrisGL.SDL.SDL_video
 3 |
 4 | import IdrisGL.DataType
 5 |
 6 | {- 
 7 |     FFI 
 8 | -}
 9 |
10 | frgn : String -> String
11 | frgn func = "C:" ++ func ++ ",sdl_video"
12 |
13 | --
14 |
15 | %foreign frgn "createWin"
16 | prim_createWin : String 
17 |                -> Int -> Int -> Int -> Int  -- x y w h
18 |                -> Int                       -- is fullscreen?
19 |                -> AnyPtr
20 |
21 | ||| Create a window.
22 | export
23 | createWin : HasIO io => Display -> io Win
24 | createWin (InWindow title (MkRect x y w h))
25 |     = pure $ MkWin $ prim_createWin title x y w h 0
26 | createWin FullWindow
27 |     = pure $ MkWin $ prim_createWin ""    0 0 0 0 1
28 |
29 | --
30 |
31 | %foreign frgn "closeWin"
32 | prim_closeWin : AnyPtr -> PrimIO ()
33 |
34 | ||| Close an opended window.
35 | export
36 | closeWin : HasIO io => Win -> io ()
37 | closeWin (MkWin wptr) = primIO $ prim_closeWin wptr
38 |
39 | --
40 |
41 | %foreign frgn "getWinSur"
42 | prim_getWinSur : AnyPtr -> AnyPtr
43 |
44 | ||| Get surface of a window.
45 | export
46 | getWinSur : HasIO io => Win -> io Sur
47 | getWinSur (MkWin wptr) = pure $ MkSur $ prim_getWinSur wptr
48 |
49 | --
50 |
51 | %foreign frgn "updateWinSur"
52 | prim_updateWinSur : AnyPtr -> PrimIO ()
53 |
54 | ||| Update a surface of window.
55 | export
56 | updateWinSur : HasIO io => Win -> io ()
57 | updateWinSur (MkWin wptr) = primIO $ prim_updateWinSur wptr