pituicat/extern/affection/src/Affection/MessageBus/Message/WindowMessage.hs

107 lines
3.4 KiB
Haskell
Raw Normal View History

2018-09-25 05:02:33 +00:00
module Affection.MessageBus.Message.WindowMessage
( WindowMessage(..)
-- | SDL reexports
, SDL.Window
) where
2017-11-29 16:49:56 +00:00
import Affection.MessageBus.Message.Class
2018-09-25 14:10:36 +00:00
import Data.Int (Int32)
2017-11-29 16:49:56 +00:00
import qualified SDL
import Linear (V2(..))
2018-09-25 05:02:33 +00:00
-- | Datatype for handling Window events handed down rom SDL2
2017-12-06 05:36:25 +00:00
data WindowMessage
2018-09-25 15:12:18 +00:00
-- | Window show event
= MsgWindowShow
2018-09-25 05:02:33 +00:00
{ msgWSWhen :: Double -- ^ Message time
, msgWSWindow :: SDL.Window -- ^ Window identifier
2017-11-29 16:49:56 +00:00
}
2018-09-25 15:12:18 +00:00
-- | Window hide event
| MsgWindowHide
2018-09-25 05:02:33 +00:00
{ msgWHWhen :: Double -- ^ Message time
, msgWHWindow :: SDL.Window -- ^ Window identifier
2017-11-29 16:49:56 +00:00
}
2018-09-25 15:12:18 +00:00
-- | Window expose event
| MsgWindowExpose
2018-09-25 05:02:33 +00:00
{ msgWEWhen :: Double -- ^ Message time
, msgWEWindow :: SDL.Window -- ^ Window identifier
2017-11-29 16:49:56 +00:00
}
2018-09-25 15:12:18 +00:00
-- | Window move event
| MsgWindowMove
2018-09-25 05:02:33 +00:00
{ msgWMWhen :: Double -- ^ Message time
, msgWMWindow :: SDL.Window -- ^ Window identifier
, msgWMNewPos :: V2 Int32 -- ^ New absolute window position
2017-11-29 16:49:56 +00:00
}
2018-09-25 15:12:18 +00:00
-- | Window resize event
| MsgWindowResize
2018-09-25 05:02:33 +00:00
{ msgWRWhen :: Double -- ^ Message time
, msgWRWindow :: SDL.Window -- ^ Window identifier
, msgWRNewSize :: V2 Int32 -- ^ New absolute window size
2017-11-29 16:49:56 +00:00
}
2018-09-25 15:12:18 +00:00
-- | Window size change event
| MsgWindowSizeChange
{ msgWSCWhen :: Double -- ^ Message time
, msgWSCWindow :: SDL.Window -- ^ Window identifier
, msgWSCNewSize :: V2 Int32 -- ^ New absolute window size
2017-11-29 16:49:56 +00:00
}
2018-09-25 15:12:18 +00:00
-- | Window minimize event
| MsgWindowMinimize
{ msgWMinWhen :: Double -- ^ Message time
2018-09-25 05:02:33 +00:00
, msgWMinWindow :: SDL.Window -- ^ Window identifier
2017-11-29 16:49:56 +00:00
}
2018-09-25 15:12:18 +00:00
-- | Window maximize event
| MsgWindowMaximize
{ msgWMaxWhen :: Double -- ^ Message time
2018-09-25 05:02:33 +00:00
, msgWMaxWindow :: SDL.Window -- ^ Window identifier
2017-11-29 16:49:56 +00:00
}
2018-09-25 15:12:18 +00:00
-- | Window restore event
| MsgWindowRestore
{ msgWRestWhen :: Double -- ^ Message time
2018-09-25 05:02:33 +00:00
, msgWRestWindow :: SDL.Window -- ^ Window identifier
2017-11-29 16:49:56 +00:00
}
2018-09-25 15:12:18 +00:00
-- | Window gain mouse focus event
| MsgWindowGainMouseFocus
{ msgWGMFWhen :: Double -- ^ Message Time
2018-09-25 05:02:33 +00:00
, msgWGMFWindow :: SDL.Window -- ^ Window identifier
2017-11-29 16:49:56 +00:00
}
2018-09-25 15:12:18 +00:00
-- | Window lose mouse focus event
| MsgWindowLoseMouseFocus
{ msgWLMFWhen :: Double -- ^ Message Time
2018-09-25 05:02:33 +00:00
, msgWLMFWindow :: SDL.Window -- ^ Window identifier
2017-11-29 16:49:56 +00:00
}
2018-09-25 15:12:18 +00:00
-- | Window gain keyboard focus event
| MsgWindowGainKeyboardFocus
{ msgWGKFWhen :: Double -- ^ Message time
2018-09-25 05:02:33 +00:00
, msgWGKFWindow :: SDL.Window -- ^ Window identifier
2017-11-29 16:49:56 +00:00
}
2018-09-25 15:12:18 +00:00
-- | Window lose keyboard focus event
| MsgWindowLoseKeyboardFocus
{ msgWLKFWhen :: Double -- ^ Message time
2018-09-25 05:02:33 +00:00
, msgWLKFWindow :: SDL.Window -- ^ Window identifier
2017-11-29 16:49:56 +00:00
}
2018-09-25 15:12:18 +00:00
-- | Window close event
| MsgWindowClose
{ msgWCWhen :: Double -- ^ Message time
2018-09-25 05:02:33 +00:00
, msgWCWindow :: SDL.Window -- ^ Window identifier
2017-11-29 16:49:56 +00:00
}
2017-12-13 03:37:16 +00:00
deriving (Show)
2017-11-29 16:49:56 +00:00
2017-12-06 05:36:25 +00:00
instance Message WindowMessage where
2017-12-12 12:12:47 +00:00
msgTime (MsgWindowShow t _) = t
msgTime (MsgWindowHide t _) = t
msgTime (MsgWindowExpose t _) = t
msgTime (MsgWindowMove t _ _) = t
msgTime (MsgWindowResize t _ _) = t
2018-03-17 01:49:16 +00:00
msgTime (MsgWindowSizeChange t _ _) = t
2017-12-12 12:12:47 +00:00
msgTime (MsgWindowMinimize t _) = t
msgTime (MsgWindowMaximize t _) = t
msgTime (MsgWindowRestore t _) = t
msgTime (MsgWindowGainMouseFocus t _) = t
msgTime (MsgWindowLoseMouseFocus t _) = t
msgTime (MsgWindowGainKeyboardFocus t _) = t
msgTime (MsgWindowLoseKeyboardFocus t _) = t
msgTime (MsgWindowClose t _) = t