gi-gdk-0.3.18.14: GI/Gdk/Structs/EventTouch.hs
{- |
Copyright : Will Thompson, Iñaki García Etxebarria and Jonas Platte
License : LGPL-2.1
Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
Used for touch events.
@type field will be one of %GDK_TOUCH_BEGIN, %GDK_TOUCH_UPDATE,
%GDK_TOUCH_END or %GDK_TOUCH_CANCEL.
Touch events are grouped into sequences by means of the @sequence
field, which can also be obtained with gdk_event_get_event_sequence().
Each sequence begins with a %GDK_TOUCH_BEGIN event, followed by
any number of %GDK_TOUCH_UPDATE events, and ends with a %GDK_TOUCH_END
(or %GDK_TOUCH_CANCEL) event. With multitouch devices, there may be
several active sequences at the same time.
-}
module GI.Gdk.Structs.EventTouch
(
-- * Exported types
EventTouch(..) ,
newZeroEventTouch ,
noEventTouch ,
-- * Properties
-- ** Axes
eventTouchAxes ,
eventTouchReadAxes ,
eventTouchWriteAxes ,
-- ** Device
eventTouchClearDevice ,
eventTouchDevice ,
eventTouchReadDevice ,
eventTouchWriteDevice ,
-- ** EmulatingPointer
eventTouchEmulatingPointer ,
eventTouchReadEmulatingPointer ,
eventTouchWriteEmulatingPointer ,
-- ** SendEvent
eventTouchReadSendEvent ,
eventTouchSendEvent ,
eventTouchWriteSendEvent ,
-- ** Sequence
eventTouchClearSequence ,
eventTouchReadSequence ,
eventTouchSequence ,
eventTouchWriteSequence ,
-- ** State
eventTouchReadState ,
eventTouchState ,
eventTouchWriteState ,
-- ** Time
eventTouchReadTime ,
eventTouchTime ,
eventTouchWriteTime ,
-- ** Type
eventTouchReadType ,
eventTouchType ,
eventTouchWriteType ,
-- ** Window
eventTouchClearWindow ,
eventTouchReadWindow ,
eventTouchWindow ,
eventTouchWriteWindow ,
-- ** X
eventTouchReadX ,
eventTouchWriteX ,
eventTouchX ,
-- ** XRoot
eventTouchReadXRoot ,
eventTouchWriteXRoot ,
eventTouchXRoot ,
-- ** Y
eventTouchReadY ,
eventTouchWriteY ,
eventTouchY ,
-- ** YRoot
eventTouchReadYRoot ,
eventTouchWriteYRoot ,
eventTouchYRoot ,
) where
import Data.GI.Base.ShortPrelude
import qualified Data.GI.Base.Attributes as GI.Attributes
import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map
import GI.Gdk.Types
import GI.Gdk.Callbacks
newtype EventTouch = EventTouch (ForeignPtr EventTouch)
-- | Construct a `EventTouch` struct initialized to zero.
newZeroEventTouch :: MonadIO m => m EventTouch
newZeroEventTouch = liftIO $ callocBytes 96 >>= wrapPtr EventTouch
instance tag ~ 'AttrSet => Constructible EventTouch tag where
new _ attrs = do
o <- newZeroEventTouch
GI.Attributes.set o attrs
return o
noEventTouch :: Maybe EventTouch
noEventTouch = Nothing
eventTouchReadType :: MonadIO m => EventTouch -> m EventType
eventTouchReadType s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 0) :: IO CUInt
let val' = (toEnum . fromIntegral) val
return val'
eventTouchWriteType :: MonadIO m => EventTouch -> EventType -> m ()
eventTouchWriteType s val = liftIO $ withManagedPtr s $ \ptr -> do
let val' = (fromIntegral . fromEnum) val
poke (ptr `plusPtr` 0) (val' :: CUInt)
data EventTouchTypeFieldInfo
instance AttrInfo EventTouchTypeFieldInfo where
type AttrAllowedOps EventTouchTypeFieldInfo = '[ 'AttrSet, 'AttrGet]
type AttrSetTypeConstraint EventTouchTypeFieldInfo = (~) EventType
type AttrBaseTypeConstraint EventTouchTypeFieldInfo = (~) EventTouch
type AttrGetType EventTouchTypeFieldInfo = EventType
type AttrLabel EventTouchTypeFieldInfo = "type"
attrGet _ = eventTouchReadType
attrSet _ = eventTouchWriteType
attrConstruct = undefined
attrClear _ = undefined
eventTouchType :: AttrLabelProxy "type"
eventTouchType = AttrLabelProxy
eventTouchReadWindow :: MonadIO m => EventTouch -> m (Maybe Window)
eventTouchReadWindow s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 8) :: IO (Ptr Window)
result <- convertIfNonNull val $ \val' -> do
val'' <- (newObject Window) val'
return val''
return result
eventTouchWriteWindow :: MonadIO m => EventTouch -> Ptr Window -> m ()
eventTouchWriteWindow s val = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 8) (val :: Ptr Window)
eventTouchClearWindow :: MonadIO m => EventTouch -> m ()
eventTouchClearWindow s = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 8) (nullPtr :: Ptr Window)
data EventTouchWindowFieldInfo
instance AttrInfo EventTouchWindowFieldInfo where
type AttrAllowedOps EventTouchWindowFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
type AttrSetTypeConstraint EventTouchWindowFieldInfo = (~) (Ptr Window)
type AttrBaseTypeConstraint EventTouchWindowFieldInfo = (~) EventTouch
type AttrGetType EventTouchWindowFieldInfo = Maybe Window
type AttrLabel EventTouchWindowFieldInfo = "window"
attrGet _ = eventTouchReadWindow
attrSet _ = eventTouchWriteWindow
attrConstruct = undefined
attrClear _ = eventTouchClearWindow
eventTouchWindow :: AttrLabelProxy "window"
eventTouchWindow = AttrLabelProxy
eventTouchReadSendEvent :: MonadIO m => EventTouch -> m Int8
eventTouchReadSendEvent s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 16) :: IO Int8
return val
eventTouchWriteSendEvent :: MonadIO m => EventTouch -> Int8 -> m ()
eventTouchWriteSendEvent s val = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 16) (val :: Int8)
data EventTouchSendEventFieldInfo
instance AttrInfo EventTouchSendEventFieldInfo where
type AttrAllowedOps EventTouchSendEventFieldInfo = '[ 'AttrSet, 'AttrGet]
type AttrSetTypeConstraint EventTouchSendEventFieldInfo = (~) Int8
type AttrBaseTypeConstraint EventTouchSendEventFieldInfo = (~) EventTouch
type AttrGetType EventTouchSendEventFieldInfo = Int8
type AttrLabel EventTouchSendEventFieldInfo = "send_event"
attrGet _ = eventTouchReadSendEvent
attrSet _ = eventTouchWriteSendEvent
attrConstruct = undefined
attrClear _ = undefined
eventTouchSendEvent :: AttrLabelProxy "sendEvent"
eventTouchSendEvent = AttrLabelProxy
eventTouchReadTime :: MonadIO m => EventTouch -> m Word32
eventTouchReadTime s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 20) :: IO Word32
return val
eventTouchWriteTime :: MonadIO m => EventTouch -> Word32 -> m ()
eventTouchWriteTime s val = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 20) (val :: Word32)
data EventTouchTimeFieldInfo
instance AttrInfo EventTouchTimeFieldInfo where
type AttrAllowedOps EventTouchTimeFieldInfo = '[ 'AttrSet, 'AttrGet]
type AttrSetTypeConstraint EventTouchTimeFieldInfo = (~) Word32
type AttrBaseTypeConstraint EventTouchTimeFieldInfo = (~) EventTouch
type AttrGetType EventTouchTimeFieldInfo = Word32
type AttrLabel EventTouchTimeFieldInfo = "time"
attrGet _ = eventTouchReadTime
attrSet _ = eventTouchWriteTime
attrConstruct = undefined
attrClear _ = undefined
eventTouchTime :: AttrLabelProxy "time"
eventTouchTime = AttrLabelProxy
eventTouchReadX :: MonadIO m => EventTouch -> m Double
eventTouchReadX s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 24) :: IO CDouble
let val' = realToFrac val
return val'
eventTouchWriteX :: MonadIO m => EventTouch -> Double -> m ()
eventTouchWriteX s val = liftIO $ withManagedPtr s $ \ptr -> do
let val' = realToFrac val
poke (ptr `plusPtr` 24) (val' :: CDouble)
data EventTouchXFieldInfo
instance AttrInfo EventTouchXFieldInfo where
type AttrAllowedOps EventTouchXFieldInfo = '[ 'AttrSet, 'AttrGet]
type AttrSetTypeConstraint EventTouchXFieldInfo = (~) Double
type AttrBaseTypeConstraint EventTouchXFieldInfo = (~) EventTouch
type AttrGetType EventTouchXFieldInfo = Double
type AttrLabel EventTouchXFieldInfo = "x"
attrGet _ = eventTouchReadX
attrSet _ = eventTouchWriteX
attrConstruct = undefined
attrClear _ = undefined
eventTouchX :: AttrLabelProxy "x"
eventTouchX = AttrLabelProxy
eventTouchReadY :: MonadIO m => EventTouch -> m Double
eventTouchReadY s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 32) :: IO CDouble
let val' = realToFrac val
return val'
eventTouchWriteY :: MonadIO m => EventTouch -> Double -> m ()
eventTouchWriteY s val = liftIO $ withManagedPtr s $ \ptr -> do
let val' = realToFrac val
poke (ptr `plusPtr` 32) (val' :: CDouble)
data EventTouchYFieldInfo
instance AttrInfo EventTouchYFieldInfo where
type AttrAllowedOps EventTouchYFieldInfo = '[ 'AttrSet, 'AttrGet]
type AttrSetTypeConstraint EventTouchYFieldInfo = (~) Double
type AttrBaseTypeConstraint EventTouchYFieldInfo = (~) EventTouch
type AttrGetType EventTouchYFieldInfo = Double
type AttrLabel EventTouchYFieldInfo = "y"
attrGet _ = eventTouchReadY
attrSet _ = eventTouchWriteY
attrConstruct = undefined
attrClear _ = undefined
eventTouchY :: AttrLabelProxy "y"
eventTouchY = AttrLabelProxy
eventTouchReadAxes :: MonadIO m => EventTouch -> m Double
eventTouchReadAxes s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 40) :: IO CDouble
let val' = realToFrac val
return val'
eventTouchWriteAxes :: MonadIO m => EventTouch -> Double -> m ()
eventTouchWriteAxes s val = liftIO $ withManagedPtr s $ \ptr -> do
let val' = realToFrac val
poke (ptr `plusPtr` 40) (val' :: CDouble)
data EventTouchAxesFieldInfo
instance AttrInfo EventTouchAxesFieldInfo where
type AttrAllowedOps EventTouchAxesFieldInfo = '[ 'AttrSet, 'AttrGet]
type AttrSetTypeConstraint EventTouchAxesFieldInfo = (~) Double
type AttrBaseTypeConstraint EventTouchAxesFieldInfo = (~) EventTouch
type AttrGetType EventTouchAxesFieldInfo = Double
type AttrLabel EventTouchAxesFieldInfo = "axes"
attrGet _ = eventTouchReadAxes
attrSet _ = eventTouchWriteAxes
attrConstruct = undefined
attrClear _ = undefined
eventTouchAxes :: AttrLabelProxy "axes"
eventTouchAxes = AttrLabelProxy
eventTouchReadState :: MonadIO m => EventTouch -> m [ModifierType]
eventTouchReadState s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 48) :: IO CUInt
let val' = wordToGFlags val
return val'
eventTouchWriteState :: MonadIO m => EventTouch -> [ModifierType] -> m ()
eventTouchWriteState s val = liftIO $ withManagedPtr s $ \ptr -> do
let val' = gflagsToWord val
poke (ptr `plusPtr` 48) (val' :: CUInt)
data EventTouchStateFieldInfo
instance AttrInfo EventTouchStateFieldInfo where
type AttrAllowedOps EventTouchStateFieldInfo = '[ 'AttrSet, 'AttrGet]
type AttrSetTypeConstraint EventTouchStateFieldInfo = (~) [ModifierType]
type AttrBaseTypeConstraint EventTouchStateFieldInfo = (~) EventTouch
type AttrGetType EventTouchStateFieldInfo = [ModifierType]
type AttrLabel EventTouchStateFieldInfo = "state"
attrGet _ = eventTouchReadState
attrSet _ = eventTouchWriteState
attrConstruct = undefined
attrClear _ = undefined
eventTouchState :: AttrLabelProxy "state"
eventTouchState = AttrLabelProxy
eventTouchReadSequence :: MonadIO m => EventTouch -> m (Maybe EventSequence)
eventTouchReadSequence s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 56) :: IO (Ptr EventSequence)
result <- convertIfNonNull val $ \val' -> do
val'' <- (newBoxed EventSequence) val'
return val''
return result
eventTouchWriteSequence :: MonadIO m => EventTouch -> Ptr EventSequence -> m ()
eventTouchWriteSequence s val = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 56) (val :: Ptr EventSequence)
eventTouchClearSequence :: MonadIO m => EventTouch -> m ()
eventTouchClearSequence s = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 56) (nullPtr :: Ptr EventSequence)
data EventTouchSequenceFieldInfo
instance AttrInfo EventTouchSequenceFieldInfo where
type AttrAllowedOps EventTouchSequenceFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
type AttrSetTypeConstraint EventTouchSequenceFieldInfo = (~) (Ptr EventSequence)
type AttrBaseTypeConstraint EventTouchSequenceFieldInfo = (~) EventTouch
type AttrGetType EventTouchSequenceFieldInfo = Maybe EventSequence
type AttrLabel EventTouchSequenceFieldInfo = "sequence"
attrGet _ = eventTouchReadSequence
attrSet _ = eventTouchWriteSequence
attrConstruct = undefined
attrClear _ = eventTouchClearSequence
eventTouchSequence :: AttrLabelProxy "sequence"
eventTouchSequence = AttrLabelProxy
eventTouchReadEmulatingPointer :: MonadIO m => EventTouch -> m Bool
eventTouchReadEmulatingPointer s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 64) :: IO CInt
let val' = (/= 0) val
return val'
eventTouchWriteEmulatingPointer :: MonadIO m => EventTouch -> Bool -> m ()
eventTouchWriteEmulatingPointer s val = liftIO $ withManagedPtr s $ \ptr -> do
let val' = (fromIntegral . fromEnum) val
poke (ptr `plusPtr` 64) (val' :: CInt)
data EventTouchEmulatingPointerFieldInfo
instance AttrInfo EventTouchEmulatingPointerFieldInfo where
type AttrAllowedOps EventTouchEmulatingPointerFieldInfo = '[ 'AttrSet, 'AttrGet]
type AttrSetTypeConstraint EventTouchEmulatingPointerFieldInfo = (~) Bool
type AttrBaseTypeConstraint EventTouchEmulatingPointerFieldInfo = (~) EventTouch
type AttrGetType EventTouchEmulatingPointerFieldInfo = Bool
type AttrLabel EventTouchEmulatingPointerFieldInfo = "emulating_pointer"
attrGet _ = eventTouchReadEmulatingPointer
attrSet _ = eventTouchWriteEmulatingPointer
attrConstruct = undefined
attrClear _ = undefined
eventTouchEmulatingPointer :: AttrLabelProxy "emulatingPointer"
eventTouchEmulatingPointer = AttrLabelProxy
eventTouchReadDevice :: MonadIO m => EventTouch -> m (Maybe Device)
eventTouchReadDevice s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 72) :: IO (Ptr Device)
result <- convertIfNonNull val $ \val' -> do
val'' <- (newObject Device) val'
return val''
return result
eventTouchWriteDevice :: MonadIO m => EventTouch -> Ptr Device -> m ()
eventTouchWriteDevice s val = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 72) (val :: Ptr Device)
eventTouchClearDevice :: MonadIO m => EventTouch -> m ()
eventTouchClearDevice s = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 72) (nullPtr :: Ptr Device)
data EventTouchDeviceFieldInfo
instance AttrInfo EventTouchDeviceFieldInfo where
type AttrAllowedOps EventTouchDeviceFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
type AttrSetTypeConstraint EventTouchDeviceFieldInfo = (~) (Ptr Device)
type AttrBaseTypeConstraint EventTouchDeviceFieldInfo = (~) EventTouch
type AttrGetType EventTouchDeviceFieldInfo = Maybe Device
type AttrLabel EventTouchDeviceFieldInfo = "device"
attrGet _ = eventTouchReadDevice
attrSet _ = eventTouchWriteDevice
attrConstruct = undefined
attrClear _ = eventTouchClearDevice
eventTouchDevice :: AttrLabelProxy "device"
eventTouchDevice = AttrLabelProxy
eventTouchReadXRoot :: MonadIO m => EventTouch -> m Double
eventTouchReadXRoot s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 80) :: IO CDouble
let val' = realToFrac val
return val'
eventTouchWriteXRoot :: MonadIO m => EventTouch -> Double -> m ()
eventTouchWriteXRoot s val = liftIO $ withManagedPtr s $ \ptr -> do
let val' = realToFrac val
poke (ptr `plusPtr` 80) (val' :: CDouble)
data EventTouchXRootFieldInfo
instance AttrInfo EventTouchXRootFieldInfo where
type AttrAllowedOps EventTouchXRootFieldInfo = '[ 'AttrSet, 'AttrGet]
type AttrSetTypeConstraint EventTouchXRootFieldInfo = (~) Double
type AttrBaseTypeConstraint EventTouchXRootFieldInfo = (~) EventTouch
type AttrGetType EventTouchXRootFieldInfo = Double
type AttrLabel EventTouchXRootFieldInfo = "x_root"
attrGet _ = eventTouchReadXRoot
attrSet _ = eventTouchWriteXRoot
attrConstruct = undefined
attrClear _ = undefined
eventTouchXRoot :: AttrLabelProxy "xRoot"
eventTouchXRoot = AttrLabelProxy
eventTouchReadYRoot :: MonadIO m => EventTouch -> m Double
eventTouchReadYRoot s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 88) :: IO CDouble
let val' = realToFrac val
return val'
eventTouchWriteYRoot :: MonadIO m => EventTouch -> Double -> m ()
eventTouchWriteYRoot s val = liftIO $ withManagedPtr s $ \ptr -> do
let val' = realToFrac val
poke (ptr `plusPtr` 88) (val' :: CDouble)
data EventTouchYRootFieldInfo
instance AttrInfo EventTouchYRootFieldInfo where
type AttrAllowedOps EventTouchYRootFieldInfo = '[ 'AttrSet, 'AttrGet]
type AttrSetTypeConstraint EventTouchYRootFieldInfo = (~) Double
type AttrBaseTypeConstraint EventTouchYRootFieldInfo = (~) EventTouch
type AttrGetType EventTouchYRootFieldInfo = Double
type AttrLabel EventTouchYRootFieldInfo = "y_root"
attrGet _ = eventTouchReadYRoot
attrSet _ = eventTouchWriteYRoot
attrConstruct = undefined
attrClear _ = undefined
eventTouchYRoot :: AttrLabelProxy "yRoot"
eventTouchYRoot = AttrLabelProxy
type instance AttributeList EventTouch = EventTouchAttributeList
type EventTouchAttributeList = ('[ '("type", EventTouchTypeFieldInfo), '("window", EventTouchWindowFieldInfo), '("sendEvent", EventTouchSendEventFieldInfo), '("time", EventTouchTimeFieldInfo), '("x", EventTouchXFieldInfo), '("y", EventTouchYFieldInfo), '("axes", EventTouchAxesFieldInfo), '("state", EventTouchStateFieldInfo), '("sequence", EventTouchSequenceFieldInfo), '("emulatingPointer", EventTouchEmulatingPointerFieldInfo), '("device", EventTouchDeviceFieldInfo), '("xRoot", EventTouchXRootFieldInfo), '("yRoot", EventTouchYRootFieldInfo)] :: [(Symbol, *)])
type family ResolveEventTouchMethod (t :: Symbol) (o :: *) :: * where
ResolveEventTouchMethod l o = MethodResolutionFailed l o
instance (info ~ ResolveEventTouchMethod t EventTouch, MethodInfo info EventTouch p) => IsLabelProxy t (EventTouch -> p) where
fromLabelProxy _ = overloadedMethod (MethodProxy :: MethodProxy info)
#if MIN_VERSION_base(4,9,0)
instance (info ~ ResolveEventTouchMethod t EventTouch, MethodInfo info EventTouch p) => IsLabel t (EventTouch -> p) where
fromLabel _ = overloadedMethod (MethodProxy :: MethodProxy info)
#endif