packages feed

termbox-1.0.0: src/Termbox/Internal/Mouse.hs

module Termbox.Internal.Mouse
  ( Mouse
      ( Mouse,
        MouseLeft,
        MouseMiddle,
        MouseRelease,
        MouseRight,
        MouseWheelUp,
        MouseWheelDown
      ),
  )
where

import qualified Termbox.Bindings.Hs

-- | A mouse event.
newtype Mouse
  = Mouse Termbox.Bindings.Hs.Tb_key
  deriving stock (Eq, Ord)

instance Show Mouse where
  show = \case
    MouseLeft -> "MouseLeft"
    MouseMiddle -> "MouseMiddle"
    MouseRelease -> "MouseRelease"
    MouseRight -> "MouseRight"
    MouseWheelDown -> "MouseWheelDown"
    MouseWheelUp -> "MouseWheelUp"

pattern MouseLeft :: Mouse
pattern MouseLeft = Mouse Termbox.Bindings.Hs.TB_KEY_MOUSE_LEFT

pattern MouseMiddle :: Mouse
pattern MouseMiddle = Mouse Termbox.Bindings.Hs.TB_KEY_MOUSE_MIDDLE

pattern MouseRelease :: Mouse
pattern MouseRelease = Mouse Termbox.Bindings.Hs.TB_KEY_MOUSE_RELEASE

pattern MouseRight :: Mouse
pattern MouseRight = Mouse Termbox.Bindings.Hs.TB_KEY_MOUSE_RIGHT

pattern MouseWheelDown :: Mouse
pattern MouseWheelDown = Mouse Termbox.Bindings.Hs.TB_KEY_MOUSE_WHEEL_DOWN

pattern MouseWheelUp :: Mouse
pattern MouseWheelUp = Mouse Termbox.Bindings.Hs.TB_KEY_MOUSE_WHEEL_UP

{-# COMPLETE MouseLeft, MouseMiddle, MouseRelease, MouseRight, MouseWheelDown, MouseWheelUp #-}