module Termbox.Mouse
  ( Mouse (..),
    parseMouse,
  )
where

import Data.Word (Word16)
import Termbox.Internal

-- | A mouse event.
data Mouse
  = MouseLeft
  | MouseMiddle
  | MouseRelease
  | MouseRight
  | MouseWheelDown
  | MouseWheelUp
  deriving (Eq, Ord, Show)

parseMouse :: Word16 -> Mouse
parseMouse key
  | key == tB_KEY_MOUSE_LEFT = MouseLeft
  | key == tB_KEY_MOUSE_MIDDLE = MouseMiddle
  | key == tB_KEY_MOUSE_RELEASE = MouseRelease
  | key == tB_KEY_MOUSE_RIGHT = MouseRight
  | key == tB_KEY_MOUSE_WHEEL_DOWN = MouseWheelDown
  | key == tB_KEY_MOUSE_WHEEL_UP = MouseWheelUp
  | otherwise = error ("termbox: unknown mouse " ++ show key)