module Termbox.Internal.Mouse
( Mouse (..),
MouseButton
( MouseButton,
LeftClick,
MiddleClick,
RightClick,
ReleaseClick,
WheelDown,
WheelUp
),
)
where
import GHC.Generics (Generic)
import qualified Termbox.Bindings.Hs
import Termbox.Internal.Pos (Pos)
data Mouse = Mouse
{ Mouse -> MouseButton
button :: !MouseButton,
Mouse -> Pos
pos :: !Pos
}
deriving stock (Mouse -> Mouse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Mouse -> Mouse -> Bool
$c/= :: Mouse -> Mouse -> Bool
== :: Mouse -> Mouse -> Bool
$c== :: Mouse -> Mouse -> Bool
Eq, forall x. Rep Mouse x -> Mouse
forall x. Mouse -> Rep Mouse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Mouse x -> Mouse
$cfrom :: forall x. Mouse -> Rep Mouse x
Generic, Eq Mouse
Mouse -> Mouse -> Bool
Mouse -> Mouse -> Ordering
Mouse -> Mouse -> Mouse
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Mouse -> Mouse -> Mouse
$cmin :: Mouse -> Mouse -> Mouse
max :: Mouse -> Mouse -> Mouse
$cmax :: Mouse -> Mouse -> Mouse
>= :: Mouse -> Mouse -> Bool
$c>= :: Mouse -> Mouse -> Bool
> :: Mouse -> Mouse -> Bool
$c> :: Mouse -> Mouse -> Bool
<= :: Mouse -> Mouse -> Bool
$c<= :: Mouse -> Mouse -> Bool
< :: Mouse -> Mouse -> Bool
$c< :: Mouse -> Mouse -> Bool
compare :: Mouse -> Mouse -> Ordering
$ccompare :: Mouse -> Mouse -> Ordering
Ord, Int -> Mouse -> ShowS
[Mouse] -> ShowS
Mouse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Mouse] -> ShowS
$cshowList :: [Mouse] -> ShowS
show :: Mouse -> String
$cshow :: Mouse -> String
showsPrec :: Int -> Mouse -> ShowS
$cshowsPrec :: Int -> Mouse -> ShowS
Show)
newtype MouseButton
= MouseButton Termbox.Bindings.Hs.Tb_key
deriving stock (MouseButton -> MouseButton -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MouseButton -> MouseButton -> Bool
$c/= :: MouseButton -> MouseButton -> Bool
== :: MouseButton -> MouseButton -> Bool
$c== :: MouseButton -> MouseButton -> Bool
Eq, Eq MouseButton
MouseButton -> MouseButton -> Bool
MouseButton -> MouseButton -> Ordering
MouseButton -> MouseButton -> MouseButton
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: MouseButton -> MouseButton -> MouseButton
$cmin :: MouseButton -> MouseButton -> MouseButton
max :: MouseButton -> MouseButton -> MouseButton
$cmax :: MouseButton -> MouseButton -> MouseButton
>= :: MouseButton -> MouseButton -> Bool
$c>= :: MouseButton -> MouseButton -> Bool
> :: MouseButton -> MouseButton -> Bool
$c> :: MouseButton -> MouseButton -> Bool
<= :: MouseButton -> MouseButton -> Bool
$c<= :: MouseButton -> MouseButton -> Bool
< :: MouseButton -> MouseButton -> Bool
$c< :: MouseButton -> MouseButton -> Bool
compare :: MouseButton -> MouseButton -> Ordering
$ccompare :: MouseButton -> MouseButton -> Ordering
Ord)
instance Show MouseButton where
show :: MouseButton -> String
show = \case
MouseButton
LeftClick -> String
"LeftClick"
MouseButton
MiddleClick -> String
"MiddleClick"
MouseButton
ReleaseClick -> String
"ReleaseClick"
MouseButton
RightClick -> String
"RightClick"
MouseButton
WheelDown -> String
"WheelDown"
MouseButton
WheelUp -> String
"WheelUp"
pattern LeftClick :: MouseButton
pattern $bLeftClick :: MouseButton
$mLeftClick :: forall {r}. MouseButton -> ((# #) -> r) -> ((# #) -> r) -> r
LeftClick = MouseButton Termbox.Bindings.Hs.TB_KEY_MOUSE_LEFT
pattern MiddleClick :: MouseButton
pattern $bMiddleClick :: MouseButton
$mMiddleClick :: forall {r}. MouseButton -> ((# #) -> r) -> ((# #) -> r) -> r
MiddleClick = MouseButton Termbox.Bindings.Hs.TB_KEY_MOUSE_MIDDLE
pattern RightClick :: MouseButton
pattern $bRightClick :: MouseButton
$mRightClick :: forall {r}. MouseButton -> ((# #) -> r) -> ((# #) -> r) -> r
RightClick = MouseButton Termbox.Bindings.Hs.TB_KEY_MOUSE_RIGHT
pattern ReleaseClick :: MouseButton
pattern $bReleaseClick :: MouseButton
$mReleaseClick :: forall {r}. MouseButton -> ((# #) -> r) -> ((# #) -> r) -> r
ReleaseClick = MouseButton Termbox.Bindings.Hs.TB_KEY_MOUSE_RELEASE
pattern WheelDown :: MouseButton
pattern $bWheelDown :: MouseButton
$mWheelDown :: forall {r}. MouseButton -> ((# #) -> r) -> ((# #) -> r) -> r
WheelDown = MouseButton Termbox.Bindings.Hs.TB_KEY_MOUSE_WHEEL_DOWN
pattern WheelUp :: MouseButton
pattern $bWheelUp :: MouseButton
$mWheelUp :: forall {r}. MouseButton -> ((# #) -> r) -> ((# #) -> r) -> r
WheelUp = MouseButton Termbox.Bindings.Hs.TB_KEY_MOUSE_WHEEL_UP
{-# COMPLETE LeftClick, MiddleClick, ReleaseClick, RightClick, WheelDown, WheelUp #-}