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