module Affection.MessageBus.Message.WindowMessage ( WindowMessage(..) -- | SDL reexports , SDL.Window ) where import Affection.MessageBus.Message.Class import Data.Int (Int32(..)) import qualified SDL import Linear (V2(..)) -- | Datatype for handling Window events handed down rom SDL2 data WindowMessage = MsgWindowShow -- ^ Window show event { msgWSWhen :: Double -- ^ Message time , msgWSWindow :: SDL.Window -- ^ Window identifier } | MsgWindowHide -- ^ Window hide event { msgWHWhen :: Double -- ^ Message time , msgWHWindow :: SDL.Window -- ^ Window identifier } | MsgWindowExpose -- ^ Window expose event { msgWEWhen :: Double -- ^ Message time , msgWEWindow :: SDL.Window -- ^ Window identifier } | MsgWindowMove -- ^ Window move event { msgWMWhen :: Double -- ^ Message time , msgWMWindow :: SDL.Window -- ^ Window identifier , msgWMNewPos :: V2 Int32 -- ^ New absolute window position } | MsgWindowResize -- ^ Window resize event { msgWRWhen :: Double -- ^ Message time , msgWRWindow :: SDL.Window -- ^ Window identifier , msgWRNewSize :: V2 Int32 -- ^ New absolute window size } | MsgWindowSizeChange -- ^ Window size change event { msgWSCWhen :: Double -- ^ Message time , msgWSCWindow :: SDL.Window -- ^ Window identifier , msgWSCNewSize :: V2 Int32 -- ^ New absolute window size } | MsgWindowMinimize -- ^ Window minimize event { msgWMinWhen :: Double -- ^ Message time , msgWMinWindow :: SDL.Window -- ^ Window identifier } | MsgWindowMaximize -- ^ Window maximize event { msgWMaxWhen :: Double -- ^ Message time , msgWMaxWindow :: SDL.Window -- ^ Window identifier } | MsgWindowRestore -- ^ Window restore event { msgWRestWhen :: Double -- ^ Message time , msgWRestWindow :: SDL.Window -- ^ Window identifier } | MsgWindowGainMouseFocus -- ^ Window gain mouse focus event { msgWGMFWhen :: Double -- ^ Message Time , msgWGMFWindow :: SDL.Window -- ^ Window identifier } | MsgWindowLoseMouseFocus -- ^ Window lose mouse focus event { msgWLMFWhen :: Double -- ^ Message Time , msgWLMFWindow :: SDL.Window -- ^ Window identifier } | MsgWindowGainKeyboardFocus -- ^ Window gain keyboard focus event { msgWGKFWhen :: Double -- ^ Message time , msgWGKFWindow :: SDL.Window -- ^ Window identifier } | MsgWindowLoseKeyboardFocus -- ^ Window lose keyboard focus event { msgWLKFWhen :: Double -- ^ Message time , msgWLKFWindow :: SDL.Window -- ^ Window identifier } | MsgWindowClose -- ^ Window close event { msgWCWhen :: Double -- ^ Message time , msgWCWindow :: SDL.Window -- ^ Window identifier } deriving (Show) instance Message WindowMessage where -- msgTime (MsgEngineReady t) = t msgTime (MsgWindowShow t _) = t msgTime (MsgWindowHide t _) = t msgTime (MsgWindowExpose t _) = t msgTime (MsgWindowMove t _ _) = t msgTime (MsgWindowResize t _ _) = t msgTime (MsgWindowSizeChange t _ _) = t 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