/
2014-12-03-pattern-synonyms.hs
52 lines (35 loc) · 1.32 KB
/
2014-12-03-pattern-synonyms.hs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
{-# LANGUAGE DeriveFunctor #-}
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE ScopedTypeVariables #-}
import Foreign.C
{-
data BlendMode = NoBlending -- | AlphaBlending | AdditiveBlending | ColourModulatedBlending
toBlendMode :: BlendMode -> CInt
toBlendMode NoBlending = 0 -- #{const SDL_BLENDMODE_NONE}
-- toBlendMode AlphaBlending = #{const SDL_BLENDMODE_BLEND}
fromBlendMode :: CInt -> Maybe BlendMode
fromBlendMode 0 = Just NoBlending
-}
{-
pattern AlphaBlending = (1) :: CInt -- #{const SDL_BLENDMODE_BLEND} :: CInt
setUpBlendMode :: CInt -> IO ()
setUpBlendMode AlphaBlending = do
putStrLn "Enabling Alpha Blending"
activateAlphaBlendingForAllTextures
activateRenderAlphaBlending
-}
newtype BlendMode = MkBlendMode { unBlendMode :: CInt }
pattern NoBlending = MkBlendMode 0 -- #{const SDL_BLENDMODE_NONE}
pattern AlphaBlending = MkBlendMode 1 -- #{const SDL_BLENDMODE_BLEND}
setUpBlendMode :: BlendMode -> IO ()
setUpBlendMode AlphaBlending = do
putStrLn "Enabling Alpha Blending"
activateAlphaBlendingForAllTextures
activateRenderAlphaBlending
data Renderer
setRenderAlphaBlending :: Renderer -> IO ()
setRenderAlphaBlending r =
sdlSetRenderDrawBlendMode r (unBlendMode AlphaBlending)
activateAlphaBlendingForAllTextures = return ()
activateRenderAlphaBlending = return ()
sdlSetRenderDrawBlendMode _ _ = return ()