gi-gdk-0.3.18.15: GI/Gdk/Structs/EventProximity.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)
Proximity events are generated when using GDK’s wrapper for the
XInput extension. The XInput extension is an add-on for standard X
that allows you to use nonstandard devices such as graphics tablets.
A proximity event indicates that the stylus has moved in or out of
contact with the tablet, or perhaps that the user’s finger has moved
in or out of contact with a touch screen.
This event type will be used pretty rarely. It only is important for
XInput aware programs that are drawing their own cursor.
-}
module GI.Gdk.Structs.EventProximity
(
-- * Exported types
EventProximity(..) ,
newZeroEventProximity ,
noEventProximity ,
-- * Properties
-- ** Device
eventProximityClearDevice ,
eventProximityDevice ,
eventProximityReadDevice ,
eventProximityWriteDevice ,
-- ** SendEvent
eventProximityReadSendEvent ,
eventProximitySendEvent ,
eventProximityWriteSendEvent ,
-- ** Time
eventProximityReadTime ,
eventProximityTime ,
eventProximityWriteTime ,
-- ** Type
eventProximityReadType ,
eventProximityType ,
eventProximityWriteType ,
-- ** Window
eventProximityClearWindow ,
eventProximityReadWindow ,
eventProximityWindow ,
eventProximityWriteWindow ,
) 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 EventProximity = EventProximity (ForeignPtr EventProximity)
instance WrappedPtr EventProximity where
wrappedPtrCalloc = callocBytes 32
wrappedPtrCopy = copyPtr 32
wrappedPtrFree = Just ptr_to_g_free
-- | Construct a `EventProximity` struct initialized to zero.
newZeroEventProximity :: MonadIO m => m EventProximity
newZeroEventProximity = liftIO $ wrappedPtrCalloc >>= wrapPtr EventProximity
instance tag ~ 'AttrSet => Constructible EventProximity tag where
new _ attrs = do
o <- newZeroEventProximity
GI.Attributes.set o attrs
return o
noEventProximity :: Maybe EventProximity
noEventProximity = Nothing
eventProximityReadType :: MonadIO m => EventProximity -> m EventType
eventProximityReadType s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 0) :: IO CUInt
let val' = (toEnum . fromIntegral) val
return val'
eventProximityWriteType :: MonadIO m => EventProximity -> EventType -> m ()
eventProximityWriteType s val = liftIO $ withManagedPtr s $ \ptr -> do
let val' = (fromIntegral . fromEnum) val
poke (ptr `plusPtr` 0) (val' :: CUInt)
data EventProximityTypeFieldInfo
instance AttrInfo EventProximityTypeFieldInfo where
type AttrAllowedOps EventProximityTypeFieldInfo = '[ 'AttrSet, 'AttrGet]
type AttrSetTypeConstraint EventProximityTypeFieldInfo = (~) EventType
type AttrBaseTypeConstraint EventProximityTypeFieldInfo = (~) EventProximity
type AttrGetType EventProximityTypeFieldInfo = EventType
type AttrLabel EventProximityTypeFieldInfo = "type"
attrGet _ = eventProximityReadType
attrSet _ = eventProximityWriteType
attrConstruct = undefined
attrClear _ = undefined
eventProximityType :: AttrLabelProxy "type"
eventProximityType = AttrLabelProxy
eventProximityReadWindow :: MonadIO m => EventProximity -> m (Maybe Window)
eventProximityReadWindow 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
eventProximityWriteWindow :: MonadIO m => EventProximity -> Ptr Window -> m ()
eventProximityWriteWindow s val = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 8) (val :: Ptr Window)
eventProximityClearWindow :: MonadIO m => EventProximity -> m ()
eventProximityClearWindow s = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 8) (nullPtr :: Ptr Window)
data EventProximityWindowFieldInfo
instance AttrInfo EventProximityWindowFieldInfo where
type AttrAllowedOps EventProximityWindowFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
type AttrSetTypeConstraint EventProximityWindowFieldInfo = (~) (Ptr Window)
type AttrBaseTypeConstraint EventProximityWindowFieldInfo = (~) EventProximity
type AttrGetType EventProximityWindowFieldInfo = Maybe Window
type AttrLabel EventProximityWindowFieldInfo = "window"
attrGet _ = eventProximityReadWindow
attrSet _ = eventProximityWriteWindow
attrConstruct = undefined
attrClear _ = eventProximityClearWindow
eventProximityWindow :: AttrLabelProxy "window"
eventProximityWindow = AttrLabelProxy
eventProximityReadSendEvent :: MonadIO m => EventProximity -> m Int8
eventProximityReadSendEvent s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 16) :: IO Int8
return val
eventProximityWriteSendEvent :: MonadIO m => EventProximity -> Int8 -> m ()
eventProximityWriteSendEvent s val = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 16) (val :: Int8)
data EventProximitySendEventFieldInfo
instance AttrInfo EventProximitySendEventFieldInfo where
type AttrAllowedOps EventProximitySendEventFieldInfo = '[ 'AttrSet, 'AttrGet]
type AttrSetTypeConstraint EventProximitySendEventFieldInfo = (~) Int8
type AttrBaseTypeConstraint EventProximitySendEventFieldInfo = (~) EventProximity
type AttrGetType EventProximitySendEventFieldInfo = Int8
type AttrLabel EventProximitySendEventFieldInfo = "send_event"
attrGet _ = eventProximityReadSendEvent
attrSet _ = eventProximityWriteSendEvent
attrConstruct = undefined
attrClear _ = undefined
eventProximitySendEvent :: AttrLabelProxy "sendEvent"
eventProximitySendEvent = AttrLabelProxy
eventProximityReadTime :: MonadIO m => EventProximity -> m Word32
eventProximityReadTime s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 20) :: IO Word32
return val
eventProximityWriteTime :: MonadIO m => EventProximity -> Word32 -> m ()
eventProximityWriteTime s val = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 20) (val :: Word32)
data EventProximityTimeFieldInfo
instance AttrInfo EventProximityTimeFieldInfo where
type AttrAllowedOps EventProximityTimeFieldInfo = '[ 'AttrSet, 'AttrGet]
type AttrSetTypeConstraint EventProximityTimeFieldInfo = (~) Word32
type AttrBaseTypeConstraint EventProximityTimeFieldInfo = (~) EventProximity
type AttrGetType EventProximityTimeFieldInfo = Word32
type AttrLabel EventProximityTimeFieldInfo = "time"
attrGet _ = eventProximityReadTime
attrSet _ = eventProximityWriteTime
attrConstruct = undefined
attrClear _ = undefined
eventProximityTime :: AttrLabelProxy "time"
eventProximityTime = AttrLabelProxy
eventProximityReadDevice :: MonadIO m => EventProximity -> m (Maybe Device)
eventProximityReadDevice s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 24) :: IO (Ptr Device)
result <- convertIfNonNull val $ \val' -> do
val'' <- (newObject Device) val'
return val''
return result
eventProximityWriteDevice :: MonadIO m => EventProximity -> Ptr Device -> m ()
eventProximityWriteDevice s val = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 24) (val :: Ptr Device)
eventProximityClearDevice :: MonadIO m => EventProximity -> m ()
eventProximityClearDevice s = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 24) (nullPtr :: Ptr Device)
data EventProximityDeviceFieldInfo
instance AttrInfo EventProximityDeviceFieldInfo where
type AttrAllowedOps EventProximityDeviceFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
type AttrSetTypeConstraint EventProximityDeviceFieldInfo = (~) (Ptr Device)
type AttrBaseTypeConstraint EventProximityDeviceFieldInfo = (~) EventProximity
type AttrGetType EventProximityDeviceFieldInfo = Maybe Device
type AttrLabel EventProximityDeviceFieldInfo = "device"
attrGet _ = eventProximityReadDevice
attrSet _ = eventProximityWriteDevice
attrConstruct = undefined
attrClear _ = eventProximityClearDevice
eventProximityDevice :: AttrLabelProxy "device"
eventProximityDevice = AttrLabelProxy
type instance AttributeList EventProximity = EventProximityAttributeList
type EventProximityAttributeList = ('[ '("type", EventProximityTypeFieldInfo), '("window", EventProximityWindowFieldInfo), '("sendEvent", EventProximitySendEventFieldInfo), '("time", EventProximityTimeFieldInfo), '("device", EventProximityDeviceFieldInfo)] :: [(Symbol, *)])
type family ResolveEventProximityMethod (t :: Symbol) (o :: *) :: * where
ResolveEventProximityMethod l o = MethodResolutionFailed l o
instance (info ~ ResolveEventProximityMethod t EventProximity, MethodInfo info EventProximity p) => IsLabelProxy t (EventProximity -> p) where
fromLabelProxy _ = overloadedMethod (MethodProxy :: MethodProxy info)
#if MIN_VERSION_base(4,9,0)
instance (info ~ ResolveEventProximityMethod t EventProximity, MethodInfo info EventProximity p) => IsLabel t (EventProximity -> p) where
fromLabel _ = overloadedMethod (MethodProxy :: MethodProxy info)
#endif