{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE DerivingVia #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE ExplicitForAll #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE MagicHash #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE StandaloneDeriving #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE UnboxedTuples #-}
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE NoFieldSelectors #-}
{-# LANGUAGE NoImplicitPrelude #-}

-- | SDL pen event handling.
--
--     SDL provides an API for pressure-sensitive pen (stylus and\/or eraser) handling, e.g., for input and drawing tablets or suitably equipped mobile \/ tablet devices.
--
--     To get started with pens, simply handle pen events:
--
--     * SDL_EVENT_PEN_PROXIMITY_IN, SDL_EVENT_PEN_PROXIMITY_OUT (SDL_PenProximityEvent)
--
--     * SDL_EVENT_PEN_DOWN, SDL_EVENT_PEN_UP (SDL_PenTouchEvent)
--
--     * SDL_EVENT_PEN_MOTION (SDL_PenMotionEvent)
--
--     * SDL_EVENT_PEN_BUTTON_DOWN, SDL_EVENT_PEN_BUTTON_UP (SDL_PenButtonEvent)
--
--     * SDL_EVENT_PEN_AXIS (SDL_PenAxisEvent)
--
--     Pens may provide more than simple touch input; they might have other axes, such as pressure, tilt, rotation, etc.
--
--     When a pen starts providing input, SDL will assign it a unique 'SDL_PenID', which will remain for the life of the process, as long as the pen stays connected. A pen leaving proximity (being taken far enough away from the digitizer tablet that it no longer reponds) and then coming back should fire proximity events, but the 'SDL_PenID' should remain consistent. Unplugging the digitizer and reconnecting may cause future input to have a new 'SDL_PenID', as SDL may not know that this is the same hardware.
--
--     Please note that various platforms vary wildly in how (and how well) they support pen input. If your pen supports some piece of functionality but SDL doesn\'t seem to, it might actually be the operating system\'s fault. For example, some platforms can manage multiple devices at the same time, but others will make any connected pens look like a single logical device, much how all USB mice connected to a computer will move the same system cursor. Other platforms might not support pen buttons, or the distance axis, etc. Very few platforms can even report /what/ functionality the pen supports in the first place, so best practices is to either build UI to let the user configure their pens, or be prepared to handle new functionality for a pen the first time an event is reported. SDL pen instance IDs.
--
--     Zero is used to signify an invalid\/null device.
--
--     These show up in pen events when SDL sees input from them. They remain consistent as long as SDL can recognize a tool to be the same pen; but if a pen\'s digitizer table is physically detached from the computer, it might get a new ID when reconnected, as SDL won\'t know it\'s the same device.
--
--     These IDs are only stable within a single run of a program; the next time a program is run, the pen\'s ID will likely be different, even if the hardware hasn\'t been disconnected, etc.
--
--     @since 3.2.0
module SDL3.Sys.Bindgen.Pen (
  SDL3.Sys.Bindgen.Pen.SDL_PenID (..),
  SDL3.Sys.Bindgen.Pen.SDL_PenInputFlags (..),
  SDL3.Sys.Bindgen.Pen.sDL_PEN_INPUT_DOWN,
  SDL3.Sys.Bindgen.Pen.sDL_PEN_INPUT_BUTTON_1,
  SDL3.Sys.Bindgen.Pen.sDL_PEN_INPUT_BUTTON_2,
  SDL3.Sys.Bindgen.Pen.sDL_PEN_INPUT_BUTTON_3,
  SDL3.Sys.Bindgen.Pen.sDL_PEN_INPUT_BUTTON_4,
  SDL3.Sys.Bindgen.Pen.sDL_PEN_INPUT_BUTTON_5,
  SDL3.Sys.Bindgen.Pen.sDL_PEN_INPUT_ERASER_TIP,
  SDL3.Sys.Bindgen.Pen.sDL_PEN_INPUT_IN_PROXIMITY,
  SDL3.Sys.Bindgen.Pen.SDL_PenAxis (..),
  pattern SDL3.Sys.Bindgen.Pen.SDL_PEN_AXIS_PRESSURE,
  pattern SDL3.Sys.Bindgen.Pen.SDL_PEN_AXIS_XTILT,
  pattern SDL3.Sys.Bindgen.Pen.SDL_PEN_AXIS_YTILT,
  pattern SDL3.Sys.Bindgen.Pen.SDL_PEN_AXIS_DISTANCE,
  pattern SDL3.Sys.Bindgen.Pen.SDL_PEN_AXIS_ROTATION,
  pattern SDL3.Sys.Bindgen.Pen.SDL_PEN_AXIS_SLIDER,
  pattern SDL3.Sys.Bindgen.Pen.SDL_PEN_AXIS_TANGENTIAL_PRESSURE,
  pattern SDL3.Sys.Bindgen.Pen.SDL_PEN_AXIS_COUNT,
  SDL3.Sys.Bindgen.Pen.SDL_PenDeviceType (..),
  pattern SDL3.Sys.Bindgen.Pen.SDL_PEN_DEVICE_TYPE_INVALID,
  pattern SDL3.Sys.Bindgen.Pen.SDL_PEN_DEVICE_TYPE_UNKNOWN,
  pattern SDL3.Sys.Bindgen.Pen.SDL_PEN_DEVICE_TYPE_DIRECT,
  pattern SDL3.Sys.Bindgen.Pen.SDL_PEN_DEVICE_TYPE_INDIRECT,
)
where

import Prelude (Bounded, Enum, Eq, Int, Integral, Num, Ord, Read, Real, Show, pure, (<*>), type (~))

import C.Expr.HostPlatform qualified
import HsBindgen.Runtime.CEnum qualified as CEnum
import HsBindgen.Runtime.HasCField qualified as HasCField
import HsBindgen.Runtime.Marshal qualified as Marshal
import HsBindgen.Runtime.Support qualified as BG
import HsBindgen.Runtime.Support.CompatHasField qualified as BG.CompatHasField
import SDL3.Sys.Bindgen.Stdinc qualified

-- | [C declaration]: @SDL_PenID@, defined at @SDL3\/SDL_pen.h 93:16@
newtype SDL_PenID = SDL_PenID
  { SDL_PenID -> Uint32
unwrap :: SDL3.Sys.Bindgen.Stdinc.Uint32
  }
  deriving stock ((forall x. SDL_PenID -> Rep SDL_PenID x)
-> (forall x. Rep SDL_PenID x -> SDL_PenID) -> Generic SDL_PenID
forall x. Rep SDL_PenID x -> SDL_PenID
forall x. SDL_PenID -> Rep SDL_PenID x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. SDL_PenID -> Rep SDL_PenID x
from :: forall x. SDL_PenID -> Rep SDL_PenID x
$cto :: forall x. Rep SDL_PenID x -> SDL_PenID
to :: forall x. Rep SDL_PenID x -> SDL_PenID
BG.Generic, SDL_PenID -> SDL_PenID -> Bool
(SDL_PenID -> SDL_PenID -> Bool)
-> (SDL_PenID -> SDL_PenID -> Bool) -> Eq SDL_PenID
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SDL_PenID -> SDL_PenID -> Bool
== :: SDL_PenID -> SDL_PenID -> Bool
$c/= :: SDL_PenID -> SDL_PenID -> Bool
/= :: SDL_PenID -> SDL_PenID -> Bool
Eq, Eq SDL_PenID
Eq SDL_PenID =>
(SDL_PenID -> SDL_PenID -> Ordering)
-> (SDL_PenID -> SDL_PenID -> Bool)
-> (SDL_PenID -> SDL_PenID -> Bool)
-> (SDL_PenID -> SDL_PenID -> Bool)
-> (SDL_PenID -> SDL_PenID -> Bool)
-> (SDL_PenID -> SDL_PenID -> SDL_PenID)
-> (SDL_PenID -> SDL_PenID -> SDL_PenID)
-> Ord SDL_PenID
SDL_PenID -> SDL_PenID -> Bool
SDL_PenID -> SDL_PenID -> Ordering
SDL_PenID -> SDL_PenID -> SDL_PenID
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 :: SDL_PenID -> SDL_PenID -> Ordering
compare :: SDL_PenID -> SDL_PenID -> Ordering
$c< :: SDL_PenID -> SDL_PenID -> Bool
< :: SDL_PenID -> SDL_PenID -> Bool
$c<= :: SDL_PenID -> SDL_PenID -> Bool
<= :: SDL_PenID -> SDL_PenID -> Bool
$c> :: SDL_PenID -> SDL_PenID -> Bool
> :: SDL_PenID -> SDL_PenID -> Bool
$c>= :: SDL_PenID -> SDL_PenID -> Bool
>= :: SDL_PenID -> SDL_PenID -> Bool
$cmax :: SDL_PenID -> SDL_PenID -> SDL_PenID
max :: SDL_PenID -> SDL_PenID -> SDL_PenID
$cmin :: SDL_PenID -> SDL_PenID -> SDL_PenID
min :: SDL_PenID -> SDL_PenID -> SDL_PenID
Ord, ReadPrec [SDL_PenID]
ReadPrec SDL_PenID
Int -> ReadS SDL_PenID
ReadS [SDL_PenID]
(Int -> ReadS SDL_PenID)
-> ReadS [SDL_PenID]
-> ReadPrec SDL_PenID
-> ReadPrec [SDL_PenID]
-> Read SDL_PenID
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: Int -> ReadS SDL_PenID
readsPrec :: Int -> ReadS SDL_PenID
$creadList :: ReadS [SDL_PenID]
readList :: ReadS [SDL_PenID]
$creadPrec :: ReadPrec SDL_PenID
readPrec :: ReadPrec SDL_PenID
$creadListPrec :: ReadPrec [SDL_PenID]
readListPrec :: ReadPrec [SDL_PenID]
Read, Int -> SDL_PenID -> ShowS
[SDL_PenID] -> ShowS
SDL_PenID -> String
(Int -> SDL_PenID -> ShowS)
-> (SDL_PenID -> String)
-> ([SDL_PenID] -> ShowS)
-> Show SDL_PenID
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> SDL_PenID -> ShowS
showsPrec :: Int -> SDL_PenID -> ShowS
$cshow :: SDL_PenID -> String
show :: SDL_PenID -> String
$cshowList :: [SDL_PenID] -> ShowS
showList :: [SDL_PenID] -> ShowS
Show)
  deriving newtype
    ( Word64 -> Int -> SDL_PenID
SDL_PenID -> Int -> Word64
(SDL_PenID -> Int -> Word64)
-> (Word64 -> Int -> SDL_PenID) -> Bitfield SDL_PenID
forall a.
(a -> Int -> Word64) -> (Word64 -> Int -> a) -> Bitfield a
$cnarrow :: SDL_PenID -> Int -> Word64
narrow :: SDL_PenID -> Int -> Word64
$cextend :: Word64 -> Int -> SDL_PenID
extend :: Word64 -> Int -> SDL_PenID
BG.Bitfield
    , Eq SDL_PenID
SDL_PenID
Eq SDL_PenID =>
(SDL_PenID -> SDL_PenID -> SDL_PenID)
-> (SDL_PenID -> SDL_PenID -> SDL_PenID)
-> (SDL_PenID -> SDL_PenID -> SDL_PenID)
-> (SDL_PenID -> SDL_PenID)
-> (SDL_PenID -> Int -> SDL_PenID)
-> (SDL_PenID -> Int -> SDL_PenID)
-> SDL_PenID
-> (Int -> SDL_PenID)
-> (SDL_PenID -> Int -> SDL_PenID)
-> (SDL_PenID -> Int -> SDL_PenID)
-> (SDL_PenID -> Int -> SDL_PenID)
-> (SDL_PenID -> Int -> Bool)
-> (SDL_PenID -> Maybe Int)
-> (SDL_PenID -> Int)
-> (SDL_PenID -> Bool)
-> (SDL_PenID -> Int -> SDL_PenID)
-> (SDL_PenID -> Int -> SDL_PenID)
-> (SDL_PenID -> Int -> SDL_PenID)
-> (SDL_PenID -> Int -> SDL_PenID)
-> (SDL_PenID -> Int -> SDL_PenID)
-> (SDL_PenID -> Int -> SDL_PenID)
-> (SDL_PenID -> Int)
-> Bits SDL_PenID
Int -> SDL_PenID
SDL_PenID -> Bool
SDL_PenID -> Int
SDL_PenID -> Maybe Int
SDL_PenID -> SDL_PenID
SDL_PenID -> Int -> Bool
SDL_PenID -> Int -> SDL_PenID
SDL_PenID -> SDL_PenID -> SDL_PenID
forall a.
Eq a =>
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> a
-> (Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> Bool)
-> (a -> Maybe Int)
-> (a -> Int)
-> (a -> Bool)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int)
-> Bits a
$c.&. :: SDL_PenID -> SDL_PenID -> SDL_PenID
.&. :: SDL_PenID -> SDL_PenID -> SDL_PenID
$c.|. :: SDL_PenID -> SDL_PenID -> SDL_PenID
.|. :: SDL_PenID -> SDL_PenID -> SDL_PenID
$cxor :: SDL_PenID -> SDL_PenID -> SDL_PenID
xor :: SDL_PenID -> SDL_PenID -> SDL_PenID
$ccomplement :: SDL_PenID -> SDL_PenID
complement :: SDL_PenID -> SDL_PenID
$cshift :: SDL_PenID -> Int -> SDL_PenID
shift :: SDL_PenID -> Int -> SDL_PenID
$crotate :: SDL_PenID -> Int -> SDL_PenID
rotate :: SDL_PenID -> Int -> SDL_PenID
$czeroBits :: SDL_PenID
zeroBits :: SDL_PenID
$cbit :: Int -> SDL_PenID
bit :: Int -> SDL_PenID
$csetBit :: SDL_PenID -> Int -> SDL_PenID
setBit :: SDL_PenID -> Int -> SDL_PenID
$cclearBit :: SDL_PenID -> Int -> SDL_PenID
clearBit :: SDL_PenID -> Int -> SDL_PenID
$ccomplementBit :: SDL_PenID -> Int -> SDL_PenID
complementBit :: SDL_PenID -> Int -> SDL_PenID
$ctestBit :: SDL_PenID -> Int -> Bool
testBit :: SDL_PenID -> Int -> Bool
$cbitSizeMaybe :: SDL_PenID -> Maybe Int
bitSizeMaybe :: SDL_PenID -> Maybe Int
$cbitSize :: SDL_PenID -> Int
bitSize :: SDL_PenID -> Int
$cisSigned :: SDL_PenID -> Bool
isSigned :: SDL_PenID -> Bool
$cshiftL :: SDL_PenID -> Int -> SDL_PenID
shiftL :: SDL_PenID -> Int -> SDL_PenID
$cunsafeShiftL :: SDL_PenID -> Int -> SDL_PenID
unsafeShiftL :: SDL_PenID -> Int -> SDL_PenID
$cshiftR :: SDL_PenID -> Int -> SDL_PenID
shiftR :: SDL_PenID -> Int -> SDL_PenID
$cunsafeShiftR :: SDL_PenID -> Int -> SDL_PenID
unsafeShiftR :: SDL_PenID -> Int -> SDL_PenID
$crotateL :: SDL_PenID -> Int -> SDL_PenID
rotateL :: SDL_PenID -> Int -> SDL_PenID
$crotateR :: SDL_PenID -> Int -> SDL_PenID
rotateR :: SDL_PenID -> Int -> SDL_PenID
$cpopCount :: SDL_PenID -> Int
popCount :: SDL_PenID -> Int
BG.Bits
    , Bits SDL_PenID
Bits SDL_PenID =>
(SDL_PenID -> Int)
-> (SDL_PenID -> Int) -> (SDL_PenID -> Int) -> FiniteBits SDL_PenID
SDL_PenID -> Int
forall b.
Bits b =>
(b -> Int) -> (b -> Int) -> (b -> Int) -> FiniteBits b
$cfiniteBitSize :: SDL_PenID -> Int
finiteBitSize :: SDL_PenID -> Int
$ccountLeadingZeros :: SDL_PenID -> Int
countLeadingZeros :: SDL_PenID -> Int
$ccountTrailingZeros :: SDL_PenID -> Int
countTrailingZeros :: SDL_PenID -> Int
BG.FiniteBits
    , FFIType SDL_PenID -> SDL_PenID
SDL_PenID -> FFIType SDL_PenID
(SDL_PenID -> FFIType SDL_PenID)
-> (FFIType SDL_PenID -> SDL_PenID) -> HasFFIType SDL_PenID
forall a. (a -> FFIType a) -> (FFIType a -> a) -> HasFFIType a
$ctoFFIType :: SDL_PenID -> FFIType SDL_PenID
toFFIType :: SDL_PenID -> FFIType SDL_PenID
$cfromFFIType :: FFIType SDL_PenID -> SDL_PenID
fromFFIType :: FFIType SDL_PenID -> SDL_PenID
BG.HasFFIType
    , Ord SDL_PenID
Ord SDL_PenID =>
((SDL_PenID, SDL_PenID) -> [SDL_PenID])
-> ((SDL_PenID, SDL_PenID) -> SDL_PenID -> Int)
-> ((SDL_PenID, SDL_PenID) -> SDL_PenID -> Int)
-> ((SDL_PenID, SDL_PenID) -> SDL_PenID -> Bool)
-> ((SDL_PenID, SDL_PenID) -> Int)
-> ((SDL_PenID, SDL_PenID) -> Int)
-> Ix SDL_PenID
(SDL_PenID, SDL_PenID) -> Int
(SDL_PenID, SDL_PenID) -> [SDL_PenID]
(SDL_PenID, SDL_PenID) -> SDL_PenID -> Bool
(SDL_PenID, SDL_PenID) -> SDL_PenID -> Int
forall a.
Ord a =>
((a, a) -> [a])
-> ((a, a) -> a -> Int)
-> ((a, a) -> a -> Int)
-> ((a, a) -> a -> Bool)
-> ((a, a) -> Int)
-> ((a, a) -> Int)
-> Ix a
$crange :: (SDL_PenID, SDL_PenID) -> [SDL_PenID]
range :: (SDL_PenID, SDL_PenID) -> [SDL_PenID]
$cindex :: (SDL_PenID, SDL_PenID) -> SDL_PenID -> Int
index :: (SDL_PenID, SDL_PenID) -> SDL_PenID -> Int
$cunsafeIndex :: (SDL_PenID, SDL_PenID) -> SDL_PenID -> Int
unsafeIndex :: (SDL_PenID, SDL_PenID) -> SDL_PenID -> Int
$cinRange :: (SDL_PenID, SDL_PenID) -> SDL_PenID -> Bool
inRange :: (SDL_PenID, SDL_PenID) -> SDL_PenID -> Bool
$crangeSize :: (SDL_PenID, SDL_PenID) -> Int
rangeSize :: (SDL_PenID, SDL_PenID) -> Int
$cunsafeRangeSize :: (SDL_PenID, SDL_PenID) -> Int
unsafeRangeSize :: (SDL_PenID, SDL_PenID) -> Int
BG.Ix
    , Addr# -> Int# -> SDL_PenID
ByteArray# -> Int# -> SDL_PenID
Proxy SDL_PenID -> Int#
SDL_PenID -> Int#
(Proxy SDL_PenID -> Int#)
-> (SDL_PenID -> Int#)
-> (Proxy SDL_PenID -> Int#)
-> (SDL_PenID -> Int#)
-> (ByteArray# -> Int# -> SDL_PenID)
-> (forall s.
    MutableByteArray# s
    -> Int# -> State# s -> (# State# s, SDL_PenID #))
-> (forall s.
    MutableByteArray# s -> Int# -> SDL_PenID -> State# s -> State# s)
-> (forall s.
    MutableByteArray# s
    -> Int# -> Int# -> SDL_PenID -> State# s -> State# s)
-> (Addr# -> Int# -> SDL_PenID)
-> (forall s.
    Addr# -> Int# -> State# s -> (# State# s, SDL_PenID #))
-> (forall s. Addr# -> Int# -> SDL_PenID -> State# s -> State# s)
-> (forall s.
    Addr# -> Int# -> Int# -> SDL_PenID -> State# s -> State# s)
-> Prim SDL_PenID
forall s.
Addr# -> Int# -> Int# -> SDL_PenID -> State# s -> State# s
forall s. Addr# -> Int# -> State# s -> (# State# s, SDL_PenID #)
forall s. Addr# -> Int# -> SDL_PenID -> State# s -> State# s
forall s.
MutableByteArray# s
-> Int# -> Int# -> SDL_PenID -> State# s -> State# s
forall s.
MutableByteArray# s
-> Int# -> State# s -> (# State# s, SDL_PenID #)
forall s.
MutableByteArray# s -> Int# -> SDL_PenID -> State# s -> State# s
forall a.
(Proxy a -> Int#)
-> (a -> Int#)
-> (Proxy a -> Int#)
-> (a -> Int#)
-> (ByteArray# -> Int# -> a)
-> (forall s.
    MutableByteArray# s -> Int# -> State# s -> (# State# s, a #))
-> (forall s.
    MutableByteArray# s -> Int# -> a -> State# s -> State# s)
-> (forall s.
    MutableByteArray# s -> Int# -> Int# -> a -> State# s -> State# s)
-> (Addr# -> Int# -> a)
-> (forall s. Addr# -> Int# -> State# s -> (# State# s, a #))
-> (forall s. Addr# -> Int# -> a -> State# s -> State# s)
-> (forall s. Addr# -> Int# -> Int# -> a -> State# s -> State# s)
-> Prim a
$csizeOfType# :: Proxy SDL_PenID -> Int#
sizeOfType# :: Proxy SDL_PenID -> Int#
$csizeOf# :: SDL_PenID -> Int#
sizeOf# :: SDL_PenID -> Int#
$calignmentOfType# :: Proxy SDL_PenID -> Int#
alignmentOfType# :: Proxy SDL_PenID -> Int#
$calignment# :: SDL_PenID -> Int#
alignment# :: SDL_PenID -> Int#
$cindexByteArray# :: ByteArray# -> Int# -> SDL_PenID
indexByteArray# :: ByteArray# -> Int# -> SDL_PenID
$creadByteArray# :: forall s.
MutableByteArray# s
-> Int# -> State# s -> (# State# s, SDL_PenID #)
readByteArray# :: forall s.
MutableByteArray# s
-> Int# -> State# s -> (# State# s, SDL_PenID #)
$cwriteByteArray# :: forall s.
MutableByteArray# s -> Int# -> SDL_PenID -> State# s -> State# s
writeByteArray# :: forall s.
MutableByteArray# s -> Int# -> SDL_PenID -> State# s -> State# s
$csetByteArray# :: forall s.
MutableByteArray# s
-> Int# -> Int# -> SDL_PenID -> State# s -> State# s
setByteArray# :: forall s.
MutableByteArray# s
-> Int# -> Int# -> SDL_PenID -> State# s -> State# s
$cindexOffAddr# :: Addr# -> Int# -> SDL_PenID
indexOffAddr# :: Addr# -> Int# -> SDL_PenID
$creadOffAddr# :: forall s. Addr# -> Int# -> State# s -> (# State# s, SDL_PenID #)
readOffAddr# :: forall s. Addr# -> Int# -> State# s -> (# State# s, SDL_PenID #)
$cwriteOffAddr# :: forall s. Addr# -> Int# -> SDL_PenID -> State# s -> State# s
writeOffAddr# :: forall s. Addr# -> Int# -> SDL_PenID -> State# s -> State# s
$csetOffAddr# :: forall s.
Addr# -> Int# -> Int# -> SDL_PenID -> State# s -> State# s
setOffAddr# :: forall s.
Addr# -> Int# -> Int# -> SDL_PenID -> State# s -> State# s
BG.Prim
    , Ptr SDL_PenID -> IO SDL_PenID
Ptr SDL_PenID -> Int -> IO SDL_PenID
Ptr SDL_PenID -> Int -> SDL_PenID -> IO ()
Ptr SDL_PenID -> SDL_PenID -> IO ()
SDL_PenID -> Int
(SDL_PenID -> Int)
-> (SDL_PenID -> Int)
-> (Ptr SDL_PenID -> Int -> IO SDL_PenID)
-> (Ptr SDL_PenID -> Int -> SDL_PenID -> IO ())
-> (forall b. Ptr b -> Int -> IO SDL_PenID)
-> (forall b. Ptr b -> Int -> SDL_PenID -> IO ())
-> (Ptr SDL_PenID -> IO SDL_PenID)
-> (Ptr SDL_PenID -> SDL_PenID -> IO ())
-> Storable SDL_PenID
forall b. Ptr b -> Int -> IO SDL_PenID
forall b. Ptr b -> Int -> SDL_PenID -> IO ()
forall a.
(a -> Int)
-> (a -> Int)
-> (Ptr a -> Int -> IO a)
-> (Ptr a -> Int -> a -> IO ())
-> (forall b. Ptr b -> Int -> IO a)
-> (forall b. Ptr b -> Int -> a -> IO ())
-> (Ptr a -> IO a)
-> (Ptr a -> a -> IO ())
-> Storable a
$csizeOf :: SDL_PenID -> Int
sizeOf :: SDL_PenID -> Int
$calignment :: SDL_PenID -> Int
alignment :: SDL_PenID -> Int
$cpeekElemOff :: Ptr SDL_PenID -> Int -> IO SDL_PenID
peekElemOff :: Ptr SDL_PenID -> Int -> IO SDL_PenID
$cpokeElemOff :: Ptr SDL_PenID -> Int -> SDL_PenID -> IO ()
pokeElemOff :: Ptr SDL_PenID -> Int -> SDL_PenID -> IO ()
$cpeekByteOff :: forall b. Ptr b -> Int -> IO SDL_PenID
peekByteOff :: forall b. Ptr b -> Int -> IO SDL_PenID
$cpokeByteOff :: forall b. Ptr b -> Int -> SDL_PenID -> IO ()
pokeByteOff :: forall b. Ptr b -> Int -> SDL_PenID -> IO ()
$cpeek :: Ptr SDL_PenID -> IO SDL_PenID
peek :: Ptr SDL_PenID -> IO SDL_PenID
$cpoke :: Ptr SDL_PenID -> SDL_PenID -> IO ()
poke :: Ptr SDL_PenID -> SDL_PenID -> IO ()
BG.Storable
    , SDL_PenID
SDL_PenID -> SDL_PenID -> Bounded SDL_PenID
forall a. a -> a -> Bounded a
$cminBound :: SDL_PenID
minBound :: SDL_PenID
$cmaxBound :: SDL_PenID
maxBound :: SDL_PenID
Bounded
    , Int -> SDL_PenID
SDL_PenID -> Int
SDL_PenID -> [SDL_PenID]
SDL_PenID -> SDL_PenID
SDL_PenID -> SDL_PenID -> [SDL_PenID]
SDL_PenID -> SDL_PenID -> SDL_PenID -> [SDL_PenID]
(SDL_PenID -> SDL_PenID)
-> (SDL_PenID -> SDL_PenID)
-> (Int -> SDL_PenID)
-> (SDL_PenID -> Int)
-> (SDL_PenID -> [SDL_PenID])
-> (SDL_PenID -> SDL_PenID -> [SDL_PenID])
-> (SDL_PenID -> SDL_PenID -> [SDL_PenID])
-> (SDL_PenID -> SDL_PenID -> SDL_PenID -> [SDL_PenID])
-> Enum SDL_PenID
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
$csucc :: SDL_PenID -> SDL_PenID
succ :: SDL_PenID -> SDL_PenID
$cpred :: SDL_PenID -> SDL_PenID
pred :: SDL_PenID -> SDL_PenID
$ctoEnum :: Int -> SDL_PenID
toEnum :: Int -> SDL_PenID
$cfromEnum :: SDL_PenID -> Int
fromEnum :: SDL_PenID -> Int
$cenumFrom :: SDL_PenID -> [SDL_PenID]
enumFrom :: SDL_PenID -> [SDL_PenID]
$cenumFromThen :: SDL_PenID -> SDL_PenID -> [SDL_PenID]
enumFromThen :: SDL_PenID -> SDL_PenID -> [SDL_PenID]
$cenumFromTo :: SDL_PenID -> SDL_PenID -> [SDL_PenID]
enumFromTo :: SDL_PenID -> SDL_PenID -> [SDL_PenID]
$cenumFromThenTo :: SDL_PenID -> SDL_PenID -> SDL_PenID -> [SDL_PenID]
enumFromThenTo :: SDL_PenID -> SDL_PenID -> SDL_PenID -> [SDL_PenID]
Enum
    , Enum SDL_PenID
Real SDL_PenID
(Real SDL_PenID, Enum SDL_PenID) =>
(SDL_PenID -> SDL_PenID -> SDL_PenID)
-> (SDL_PenID -> SDL_PenID -> SDL_PenID)
-> (SDL_PenID -> SDL_PenID -> SDL_PenID)
-> (SDL_PenID -> SDL_PenID -> SDL_PenID)
-> (SDL_PenID -> SDL_PenID -> (SDL_PenID, SDL_PenID))
-> (SDL_PenID -> SDL_PenID -> (SDL_PenID, SDL_PenID))
-> (SDL_PenID -> Integer)
-> Integral SDL_PenID
SDL_PenID -> Integer
SDL_PenID -> SDL_PenID -> (SDL_PenID, SDL_PenID)
SDL_PenID -> SDL_PenID -> SDL_PenID
forall a.
(Real a, Enum a) =>
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> (a, a))
-> (a -> a -> (a, a))
-> (a -> Integer)
-> Integral a
$cquot :: SDL_PenID -> SDL_PenID -> SDL_PenID
quot :: SDL_PenID -> SDL_PenID -> SDL_PenID
$crem :: SDL_PenID -> SDL_PenID -> SDL_PenID
rem :: SDL_PenID -> SDL_PenID -> SDL_PenID
$cdiv :: SDL_PenID -> SDL_PenID -> SDL_PenID
div :: SDL_PenID -> SDL_PenID -> SDL_PenID
$cmod :: SDL_PenID -> SDL_PenID -> SDL_PenID
mod :: SDL_PenID -> SDL_PenID -> SDL_PenID
$cquotRem :: SDL_PenID -> SDL_PenID -> (SDL_PenID, SDL_PenID)
quotRem :: SDL_PenID -> SDL_PenID -> (SDL_PenID, SDL_PenID)
$cdivMod :: SDL_PenID -> SDL_PenID -> (SDL_PenID, SDL_PenID)
divMod :: SDL_PenID -> SDL_PenID -> (SDL_PenID, SDL_PenID)
$ctoInteger :: SDL_PenID -> Integer
toInteger :: SDL_PenID -> Integer
Integral
    , Ptr SDL_PenID -> IO SDL_PenID
(Ptr SDL_PenID -> IO SDL_PenID) -> ReadRaw SDL_PenID
forall a. (Ptr a -> IO a) -> ReadRaw a
$creadRaw :: Ptr SDL_PenID -> IO SDL_PenID
readRaw :: Ptr SDL_PenID -> IO SDL_PenID
Marshal.ReadRaw
    , Proxy SDL_PenID -> Int
(Proxy SDL_PenID -> Int)
-> (Proxy SDL_PenID -> Int) -> StaticSize SDL_PenID
forall a. (Proxy a -> Int) -> (Proxy a -> Int) -> StaticSize a
$cstaticSizeOf :: Proxy SDL_PenID -> Int
staticSizeOf :: Proxy SDL_PenID -> Int
$cstaticAlignment :: Proxy SDL_PenID -> Int
staticAlignment :: Proxy SDL_PenID -> Int
Marshal.StaticSize
    , Ptr SDL_PenID -> SDL_PenID -> IO ()
(Ptr SDL_PenID -> SDL_PenID -> IO ()) -> WriteRaw SDL_PenID
forall a. (Ptr a -> a -> IO ()) -> WriteRaw a
$cwriteRaw :: Ptr SDL_PenID -> SDL_PenID -> IO ()
writeRaw :: Ptr SDL_PenID -> SDL_PenID -> IO ()
Marshal.WriteRaw
    , Integer -> SDL_PenID
SDL_PenID -> SDL_PenID
SDL_PenID -> SDL_PenID -> SDL_PenID
(SDL_PenID -> SDL_PenID -> SDL_PenID)
-> (SDL_PenID -> SDL_PenID -> SDL_PenID)
-> (SDL_PenID -> SDL_PenID -> SDL_PenID)
-> (SDL_PenID -> SDL_PenID)
-> (SDL_PenID -> SDL_PenID)
-> (SDL_PenID -> SDL_PenID)
-> (Integer -> SDL_PenID)
-> Num SDL_PenID
forall a.
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> a)
-> (a -> a)
-> (Integer -> a)
-> Num a
$c+ :: SDL_PenID -> SDL_PenID -> SDL_PenID
+ :: SDL_PenID -> SDL_PenID -> SDL_PenID
$c- :: SDL_PenID -> SDL_PenID -> SDL_PenID
- :: SDL_PenID -> SDL_PenID -> SDL_PenID
$c* :: SDL_PenID -> SDL_PenID -> SDL_PenID
* :: SDL_PenID -> SDL_PenID -> SDL_PenID
$cnegate :: SDL_PenID -> SDL_PenID
negate :: SDL_PenID -> SDL_PenID
$cabs :: SDL_PenID -> SDL_PenID
abs :: SDL_PenID -> SDL_PenID
$csignum :: SDL_PenID -> SDL_PenID
signum :: SDL_PenID -> SDL_PenID
$cfromInteger :: Integer -> SDL_PenID
fromInteger :: Integer -> SDL_PenID
Num
    , Num SDL_PenID
Ord SDL_PenID
(Num SDL_PenID, Ord SDL_PenID) =>
(SDL_PenID -> Rational) -> Real SDL_PenID
SDL_PenID -> Rational
forall a. (Num a, Ord a) => (a -> Rational) -> Real a
$ctoRational :: SDL_PenID -> Rational
toRational :: SDL_PenID -> Rational
Real
    )

instance
  (ty ~ SDL3.Sys.Bindgen.Stdinc.Uint32)
  => BG.CompatHasField.HasField "unwrap" SDL_PenID ty
  where
  hasField :: SDL_PenID -> (ty -> SDL_PenID, ty)
hasField =
    \SDL_PenID
x0 ->
      ( \ty
y1 ->
          SDL_PenID{unwrap :: Uint32
unwrap = ty
Uint32
y1}
      , forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"unwrap" SDL_PenID
x0
      )

instance
  (ty ~ SDL3.Sys.Bindgen.Stdinc.Uint32)
  => BG.HasField "unwrap" (BG.Ptr SDL_PenID) (BG.Ptr ty)
  where
  getField :: Ptr SDL_PenID -> Ptr ty
getField = Proxy "unwrap"
-> Ptr SDL_PenID -> Ptr (CFieldType SDL_PenID "unwrap")
forall a (field :: Symbol).
HasCField a field =>
Proxy field -> Ptr a -> Ptr (CFieldType a field)
HasCField.fromPtr (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"unwrap")

instance HasCField.HasCField SDL_PenID "unwrap" where
  type
    CFieldType SDL_PenID "unwrap" =
      SDL3.Sys.Bindgen.Stdinc.Uint32

  offset# :: Proxy# SDL_PenID -> Proxy# "unwrap" -> Int
offset# = \Proxy# SDL_PenID
_ -> \Proxy# "unwrap"
_ -> Int
0

-- | Pen input flags, as reported by various pen events\' @pen_state@ field.
--
--     @since 3.2.0
--
--     [C declaration]: @SDL_PenInputFlags@, defined at @SDL3\/SDL_pen.h 114:16@
newtype SDL_PenInputFlags = SDL_PenInputFlags
  { SDL_PenInputFlags -> Uint32
unwrap :: SDL3.Sys.Bindgen.Stdinc.Uint32
  }
  deriving stock ((forall x. SDL_PenInputFlags -> Rep SDL_PenInputFlags x)
-> (forall x. Rep SDL_PenInputFlags x -> SDL_PenInputFlags)
-> Generic SDL_PenInputFlags
forall x. Rep SDL_PenInputFlags x -> SDL_PenInputFlags
forall x. SDL_PenInputFlags -> Rep SDL_PenInputFlags x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. SDL_PenInputFlags -> Rep SDL_PenInputFlags x
from :: forall x. SDL_PenInputFlags -> Rep SDL_PenInputFlags x
$cto :: forall x. Rep SDL_PenInputFlags x -> SDL_PenInputFlags
to :: forall x. Rep SDL_PenInputFlags x -> SDL_PenInputFlags
BG.Generic, SDL_PenInputFlags -> SDL_PenInputFlags -> Bool
(SDL_PenInputFlags -> SDL_PenInputFlags -> Bool)
-> (SDL_PenInputFlags -> SDL_PenInputFlags -> Bool)
-> Eq SDL_PenInputFlags
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SDL_PenInputFlags -> SDL_PenInputFlags -> Bool
== :: SDL_PenInputFlags -> SDL_PenInputFlags -> Bool
$c/= :: SDL_PenInputFlags -> SDL_PenInputFlags -> Bool
/= :: SDL_PenInputFlags -> SDL_PenInputFlags -> Bool
Eq, Eq SDL_PenInputFlags
Eq SDL_PenInputFlags =>
(SDL_PenInputFlags -> SDL_PenInputFlags -> Ordering)
-> (SDL_PenInputFlags -> SDL_PenInputFlags -> Bool)
-> (SDL_PenInputFlags -> SDL_PenInputFlags -> Bool)
-> (SDL_PenInputFlags -> SDL_PenInputFlags -> Bool)
-> (SDL_PenInputFlags -> SDL_PenInputFlags -> Bool)
-> (SDL_PenInputFlags -> SDL_PenInputFlags -> SDL_PenInputFlags)
-> (SDL_PenInputFlags -> SDL_PenInputFlags -> SDL_PenInputFlags)
-> Ord SDL_PenInputFlags
SDL_PenInputFlags -> SDL_PenInputFlags -> Bool
SDL_PenInputFlags -> SDL_PenInputFlags -> Ordering
SDL_PenInputFlags -> SDL_PenInputFlags -> SDL_PenInputFlags
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 :: SDL_PenInputFlags -> SDL_PenInputFlags -> Ordering
compare :: SDL_PenInputFlags -> SDL_PenInputFlags -> Ordering
$c< :: SDL_PenInputFlags -> SDL_PenInputFlags -> Bool
< :: SDL_PenInputFlags -> SDL_PenInputFlags -> Bool
$c<= :: SDL_PenInputFlags -> SDL_PenInputFlags -> Bool
<= :: SDL_PenInputFlags -> SDL_PenInputFlags -> Bool
$c> :: SDL_PenInputFlags -> SDL_PenInputFlags -> Bool
> :: SDL_PenInputFlags -> SDL_PenInputFlags -> Bool
$c>= :: SDL_PenInputFlags -> SDL_PenInputFlags -> Bool
>= :: SDL_PenInputFlags -> SDL_PenInputFlags -> Bool
$cmax :: SDL_PenInputFlags -> SDL_PenInputFlags -> SDL_PenInputFlags
max :: SDL_PenInputFlags -> SDL_PenInputFlags -> SDL_PenInputFlags
$cmin :: SDL_PenInputFlags -> SDL_PenInputFlags -> SDL_PenInputFlags
min :: SDL_PenInputFlags -> SDL_PenInputFlags -> SDL_PenInputFlags
Ord, ReadPrec [SDL_PenInputFlags]
ReadPrec SDL_PenInputFlags
Int -> ReadS SDL_PenInputFlags
ReadS [SDL_PenInputFlags]
(Int -> ReadS SDL_PenInputFlags)
-> ReadS [SDL_PenInputFlags]
-> ReadPrec SDL_PenInputFlags
-> ReadPrec [SDL_PenInputFlags]
-> Read SDL_PenInputFlags
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: Int -> ReadS SDL_PenInputFlags
readsPrec :: Int -> ReadS SDL_PenInputFlags
$creadList :: ReadS [SDL_PenInputFlags]
readList :: ReadS [SDL_PenInputFlags]
$creadPrec :: ReadPrec SDL_PenInputFlags
readPrec :: ReadPrec SDL_PenInputFlags
$creadListPrec :: ReadPrec [SDL_PenInputFlags]
readListPrec :: ReadPrec [SDL_PenInputFlags]
Read, Int -> SDL_PenInputFlags -> ShowS
[SDL_PenInputFlags] -> ShowS
SDL_PenInputFlags -> String
(Int -> SDL_PenInputFlags -> ShowS)
-> (SDL_PenInputFlags -> String)
-> ([SDL_PenInputFlags] -> ShowS)
-> Show SDL_PenInputFlags
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> SDL_PenInputFlags -> ShowS
showsPrec :: Int -> SDL_PenInputFlags -> ShowS
$cshow :: SDL_PenInputFlags -> String
show :: SDL_PenInputFlags -> String
$cshowList :: [SDL_PenInputFlags] -> ShowS
showList :: [SDL_PenInputFlags] -> ShowS
Show)
  deriving newtype
    ( Word64 -> Int -> SDL_PenInputFlags
SDL_PenInputFlags -> Int -> Word64
(SDL_PenInputFlags -> Int -> Word64)
-> (Word64 -> Int -> SDL_PenInputFlags)
-> Bitfield SDL_PenInputFlags
forall a.
(a -> Int -> Word64) -> (Word64 -> Int -> a) -> Bitfield a
$cnarrow :: SDL_PenInputFlags -> Int -> Word64
narrow :: SDL_PenInputFlags -> Int -> Word64
$cextend :: Word64 -> Int -> SDL_PenInputFlags
extend :: Word64 -> Int -> SDL_PenInputFlags
BG.Bitfield
    , Eq SDL_PenInputFlags
SDL_PenInputFlags
Eq SDL_PenInputFlags =>
(SDL_PenInputFlags -> SDL_PenInputFlags -> SDL_PenInputFlags)
-> (SDL_PenInputFlags -> SDL_PenInputFlags -> SDL_PenInputFlags)
-> (SDL_PenInputFlags -> SDL_PenInputFlags -> SDL_PenInputFlags)
-> (SDL_PenInputFlags -> SDL_PenInputFlags)
-> (SDL_PenInputFlags -> Int -> SDL_PenInputFlags)
-> (SDL_PenInputFlags -> Int -> SDL_PenInputFlags)
-> SDL_PenInputFlags
-> (Int -> SDL_PenInputFlags)
-> (SDL_PenInputFlags -> Int -> SDL_PenInputFlags)
-> (SDL_PenInputFlags -> Int -> SDL_PenInputFlags)
-> (SDL_PenInputFlags -> Int -> SDL_PenInputFlags)
-> (SDL_PenInputFlags -> Int -> Bool)
-> (SDL_PenInputFlags -> Maybe Int)
-> (SDL_PenInputFlags -> Int)
-> (SDL_PenInputFlags -> Bool)
-> (SDL_PenInputFlags -> Int -> SDL_PenInputFlags)
-> (SDL_PenInputFlags -> Int -> SDL_PenInputFlags)
-> (SDL_PenInputFlags -> Int -> SDL_PenInputFlags)
-> (SDL_PenInputFlags -> Int -> SDL_PenInputFlags)
-> (SDL_PenInputFlags -> Int -> SDL_PenInputFlags)
-> (SDL_PenInputFlags -> Int -> SDL_PenInputFlags)
-> (SDL_PenInputFlags -> Int)
-> Bits SDL_PenInputFlags
Int -> SDL_PenInputFlags
SDL_PenInputFlags -> Bool
SDL_PenInputFlags -> Int
SDL_PenInputFlags -> Maybe Int
SDL_PenInputFlags -> SDL_PenInputFlags
SDL_PenInputFlags -> Int -> Bool
SDL_PenInputFlags -> Int -> SDL_PenInputFlags
SDL_PenInputFlags -> SDL_PenInputFlags -> SDL_PenInputFlags
forall a.
Eq a =>
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> a
-> (Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> Bool)
-> (a -> Maybe Int)
-> (a -> Int)
-> (a -> Bool)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int)
-> Bits a
$c.&. :: SDL_PenInputFlags -> SDL_PenInputFlags -> SDL_PenInputFlags
.&. :: SDL_PenInputFlags -> SDL_PenInputFlags -> SDL_PenInputFlags
$c.|. :: SDL_PenInputFlags -> SDL_PenInputFlags -> SDL_PenInputFlags
.|. :: SDL_PenInputFlags -> SDL_PenInputFlags -> SDL_PenInputFlags
$cxor :: SDL_PenInputFlags -> SDL_PenInputFlags -> SDL_PenInputFlags
xor :: SDL_PenInputFlags -> SDL_PenInputFlags -> SDL_PenInputFlags
$ccomplement :: SDL_PenInputFlags -> SDL_PenInputFlags
complement :: SDL_PenInputFlags -> SDL_PenInputFlags
$cshift :: SDL_PenInputFlags -> Int -> SDL_PenInputFlags
shift :: SDL_PenInputFlags -> Int -> SDL_PenInputFlags
$crotate :: SDL_PenInputFlags -> Int -> SDL_PenInputFlags
rotate :: SDL_PenInputFlags -> Int -> SDL_PenInputFlags
$czeroBits :: SDL_PenInputFlags
zeroBits :: SDL_PenInputFlags
$cbit :: Int -> SDL_PenInputFlags
bit :: Int -> SDL_PenInputFlags
$csetBit :: SDL_PenInputFlags -> Int -> SDL_PenInputFlags
setBit :: SDL_PenInputFlags -> Int -> SDL_PenInputFlags
$cclearBit :: SDL_PenInputFlags -> Int -> SDL_PenInputFlags
clearBit :: SDL_PenInputFlags -> Int -> SDL_PenInputFlags
$ccomplementBit :: SDL_PenInputFlags -> Int -> SDL_PenInputFlags
complementBit :: SDL_PenInputFlags -> Int -> SDL_PenInputFlags
$ctestBit :: SDL_PenInputFlags -> Int -> Bool
testBit :: SDL_PenInputFlags -> Int -> Bool
$cbitSizeMaybe :: SDL_PenInputFlags -> Maybe Int
bitSizeMaybe :: SDL_PenInputFlags -> Maybe Int
$cbitSize :: SDL_PenInputFlags -> Int
bitSize :: SDL_PenInputFlags -> Int
$cisSigned :: SDL_PenInputFlags -> Bool
isSigned :: SDL_PenInputFlags -> Bool
$cshiftL :: SDL_PenInputFlags -> Int -> SDL_PenInputFlags
shiftL :: SDL_PenInputFlags -> Int -> SDL_PenInputFlags
$cunsafeShiftL :: SDL_PenInputFlags -> Int -> SDL_PenInputFlags
unsafeShiftL :: SDL_PenInputFlags -> Int -> SDL_PenInputFlags
$cshiftR :: SDL_PenInputFlags -> Int -> SDL_PenInputFlags
shiftR :: SDL_PenInputFlags -> Int -> SDL_PenInputFlags
$cunsafeShiftR :: SDL_PenInputFlags -> Int -> SDL_PenInputFlags
unsafeShiftR :: SDL_PenInputFlags -> Int -> SDL_PenInputFlags
$crotateL :: SDL_PenInputFlags -> Int -> SDL_PenInputFlags
rotateL :: SDL_PenInputFlags -> Int -> SDL_PenInputFlags
$crotateR :: SDL_PenInputFlags -> Int -> SDL_PenInputFlags
rotateR :: SDL_PenInputFlags -> Int -> SDL_PenInputFlags
$cpopCount :: SDL_PenInputFlags -> Int
popCount :: SDL_PenInputFlags -> Int
BG.Bits
    , Bits SDL_PenInputFlags
Bits SDL_PenInputFlags =>
(SDL_PenInputFlags -> Int)
-> (SDL_PenInputFlags -> Int)
-> (SDL_PenInputFlags -> Int)
-> FiniteBits SDL_PenInputFlags
SDL_PenInputFlags -> Int
forall b.
Bits b =>
(b -> Int) -> (b -> Int) -> (b -> Int) -> FiniteBits b
$cfiniteBitSize :: SDL_PenInputFlags -> Int
finiteBitSize :: SDL_PenInputFlags -> Int
$ccountLeadingZeros :: SDL_PenInputFlags -> Int
countLeadingZeros :: SDL_PenInputFlags -> Int
$ccountTrailingZeros :: SDL_PenInputFlags -> Int
countTrailingZeros :: SDL_PenInputFlags -> Int
BG.FiniteBits
    , FFIType SDL_PenInputFlags -> SDL_PenInputFlags
SDL_PenInputFlags -> FFIType SDL_PenInputFlags
(SDL_PenInputFlags -> FFIType SDL_PenInputFlags)
-> (FFIType SDL_PenInputFlags -> SDL_PenInputFlags)
-> HasFFIType SDL_PenInputFlags
forall a. (a -> FFIType a) -> (FFIType a -> a) -> HasFFIType a
$ctoFFIType :: SDL_PenInputFlags -> FFIType SDL_PenInputFlags
toFFIType :: SDL_PenInputFlags -> FFIType SDL_PenInputFlags
$cfromFFIType :: FFIType SDL_PenInputFlags -> SDL_PenInputFlags
fromFFIType :: FFIType SDL_PenInputFlags -> SDL_PenInputFlags
BG.HasFFIType
    , Ord SDL_PenInputFlags
Ord SDL_PenInputFlags =>
((SDL_PenInputFlags, SDL_PenInputFlags) -> [SDL_PenInputFlags])
-> ((SDL_PenInputFlags, SDL_PenInputFlags)
    -> SDL_PenInputFlags -> Int)
-> ((SDL_PenInputFlags, SDL_PenInputFlags)
    -> SDL_PenInputFlags -> Int)
-> ((SDL_PenInputFlags, SDL_PenInputFlags)
    -> SDL_PenInputFlags -> Bool)
-> ((SDL_PenInputFlags, SDL_PenInputFlags) -> Int)
-> ((SDL_PenInputFlags, SDL_PenInputFlags) -> Int)
-> Ix SDL_PenInputFlags
(SDL_PenInputFlags, SDL_PenInputFlags) -> Int
(SDL_PenInputFlags, SDL_PenInputFlags) -> [SDL_PenInputFlags]
(SDL_PenInputFlags, SDL_PenInputFlags) -> SDL_PenInputFlags -> Bool
(SDL_PenInputFlags, SDL_PenInputFlags) -> SDL_PenInputFlags -> Int
forall a.
Ord a =>
((a, a) -> [a])
-> ((a, a) -> a -> Int)
-> ((a, a) -> a -> Int)
-> ((a, a) -> a -> Bool)
-> ((a, a) -> Int)
-> ((a, a) -> Int)
-> Ix a
$crange :: (SDL_PenInputFlags, SDL_PenInputFlags) -> [SDL_PenInputFlags]
range :: (SDL_PenInputFlags, SDL_PenInputFlags) -> [SDL_PenInputFlags]
$cindex :: (SDL_PenInputFlags, SDL_PenInputFlags) -> SDL_PenInputFlags -> Int
index :: (SDL_PenInputFlags, SDL_PenInputFlags) -> SDL_PenInputFlags -> Int
$cunsafeIndex :: (SDL_PenInputFlags, SDL_PenInputFlags) -> SDL_PenInputFlags -> Int
unsafeIndex :: (SDL_PenInputFlags, SDL_PenInputFlags) -> SDL_PenInputFlags -> Int
$cinRange :: (SDL_PenInputFlags, SDL_PenInputFlags) -> SDL_PenInputFlags -> Bool
inRange :: (SDL_PenInputFlags, SDL_PenInputFlags) -> SDL_PenInputFlags -> Bool
$crangeSize :: (SDL_PenInputFlags, SDL_PenInputFlags) -> Int
rangeSize :: (SDL_PenInputFlags, SDL_PenInputFlags) -> Int
$cunsafeRangeSize :: (SDL_PenInputFlags, SDL_PenInputFlags) -> Int
unsafeRangeSize :: (SDL_PenInputFlags, SDL_PenInputFlags) -> Int
BG.Ix
    , Addr# -> Int# -> SDL_PenInputFlags
ByteArray# -> Int# -> SDL_PenInputFlags
Proxy SDL_PenInputFlags -> Int#
SDL_PenInputFlags -> Int#
(Proxy SDL_PenInputFlags -> Int#)
-> (SDL_PenInputFlags -> Int#)
-> (Proxy SDL_PenInputFlags -> Int#)
-> (SDL_PenInputFlags -> Int#)
-> (ByteArray# -> Int# -> SDL_PenInputFlags)
-> (forall s.
    MutableByteArray# s
    -> Int# -> State# s -> (# State# s, SDL_PenInputFlags #))
-> (forall s.
    MutableByteArray# s
    -> Int# -> SDL_PenInputFlags -> State# s -> State# s)
-> (forall s.
    MutableByteArray# s
    -> Int# -> Int# -> SDL_PenInputFlags -> State# s -> State# s)
-> (Addr# -> Int# -> SDL_PenInputFlags)
-> (forall s.
    Addr# -> Int# -> State# s -> (# State# s, SDL_PenInputFlags #))
-> (forall s.
    Addr# -> Int# -> SDL_PenInputFlags -> State# s -> State# s)
-> (forall s.
    Addr# -> Int# -> Int# -> SDL_PenInputFlags -> State# s -> State# s)
-> Prim SDL_PenInputFlags
forall s.
Addr# -> Int# -> Int# -> SDL_PenInputFlags -> State# s -> State# s
forall s.
Addr# -> Int# -> State# s -> (# State# s, SDL_PenInputFlags #)
forall s.
Addr# -> Int# -> SDL_PenInputFlags -> State# s -> State# s
forall s.
MutableByteArray# s
-> Int# -> Int# -> SDL_PenInputFlags -> State# s -> State# s
forall s.
MutableByteArray# s
-> Int# -> State# s -> (# State# s, SDL_PenInputFlags #)
forall s.
MutableByteArray# s
-> Int# -> SDL_PenInputFlags -> State# s -> State# s
forall a.
(Proxy a -> Int#)
-> (a -> Int#)
-> (Proxy a -> Int#)
-> (a -> Int#)
-> (ByteArray# -> Int# -> a)
-> (forall s.
    MutableByteArray# s -> Int# -> State# s -> (# State# s, a #))
-> (forall s.
    MutableByteArray# s -> Int# -> a -> State# s -> State# s)
-> (forall s.
    MutableByteArray# s -> Int# -> Int# -> a -> State# s -> State# s)
-> (Addr# -> Int# -> a)
-> (forall s. Addr# -> Int# -> State# s -> (# State# s, a #))
-> (forall s. Addr# -> Int# -> a -> State# s -> State# s)
-> (forall s. Addr# -> Int# -> Int# -> a -> State# s -> State# s)
-> Prim a
$csizeOfType# :: Proxy SDL_PenInputFlags -> Int#
sizeOfType# :: Proxy SDL_PenInputFlags -> Int#
$csizeOf# :: SDL_PenInputFlags -> Int#
sizeOf# :: SDL_PenInputFlags -> Int#
$calignmentOfType# :: Proxy SDL_PenInputFlags -> Int#
alignmentOfType# :: Proxy SDL_PenInputFlags -> Int#
$calignment# :: SDL_PenInputFlags -> Int#
alignment# :: SDL_PenInputFlags -> Int#
$cindexByteArray# :: ByteArray# -> Int# -> SDL_PenInputFlags
indexByteArray# :: ByteArray# -> Int# -> SDL_PenInputFlags
$creadByteArray# :: forall s.
MutableByteArray# s
-> Int# -> State# s -> (# State# s, SDL_PenInputFlags #)
readByteArray# :: forall s.
MutableByteArray# s
-> Int# -> State# s -> (# State# s, SDL_PenInputFlags #)
$cwriteByteArray# :: forall s.
MutableByteArray# s
-> Int# -> SDL_PenInputFlags -> State# s -> State# s
writeByteArray# :: forall s.
MutableByteArray# s
-> Int# -> SDL_PenInputFlags -> State# s -> State# s
$csetByteArray# :: forall s.
MutableByteArray# s
-> Int# -> Int# -> SDL_PenInputFlags -> State# s -> State# s
setByteArray# :: forall s.
MutableByteArray# s
-> Int# -> Int# -> SDL_PenInputFlags -> State# s -> State# s
$cindexOffAddr# :: Addr# -> Int# -> SDL_PenInputFlags
indexOffAddr# :: Addr# -> Int# -> SDL_PenInputFlags
$creadOffAddr# :: forall s.
Addr# -> Int# -> State# s -> (# State# s, SDL_PenInputFlags #)
readOffAddr# :: forall s.
Addr# -> Int# -> State# s -> (# State# s, SDL_PenInputFlags #)
$cwriteOffAddr# :: forall s.
Addr# -> Int# -> SDL_PenInputFlags -> State# s -> State# s
writeOffAddr# :: forall s.
Addr# -> Int# -> SDL_PenInputFlags -> State# s -> State# s
$csetOffAddr# :: forall s.
Addr# -> Int# -> Int# -> SDL_PenInputFlags -> State# s -> State# s
setOffAddr# :: forall s.
Addr# -> Int# -> Int# -> SDL_PenInputFlags -> State# s -> State# s
BG.Prim
    , Ptr SDL_PenInputFlags -> IO SDL_PenInputFlags
Ptr SDL_PenInputFlags -> Int -> IO SDL_PenInputFlags
Ptr SDL_PenInputFlags -> Int -> SDL_PenInputFlags -> IO ()
Ptr SDL_PenInputFlags -> SDL_PenInputFlags -> IO ()
SDL_PenInputFlags -> Int
(SDL_PenInputFlags -> Int)
-> (SDL_PenInputFlags -> Int)
-> (Ptr SDL_PenInputFlags -> Int -> IO SDL_PenInputFlags)
-> (Ptr SDL_PenInputFlags -> Int -> SDL_PenInputFlags -> IO ())
-> (forall b. Ptr b -> Int -> IO SDL_PenInputFlags)
-> (forall b. Ptr b -> Int -> SDL_PenInputFlags -> IO ())
-> (Ptr SDL_PenInputFlags -> IO SDL_PenInputFlags)
-> (Ptr SDL_PenInputFlags -> SDL_PenInputFlags -> IO ())
-> Storable SDL_PenInputFlags
forall b. Ptr b -> Int -> IO SDL_PenInputFlags
forall b. Ptr b -> Int -> SDL_PenInputFlags -> IO ()
forall a.
(a -> Int)
-> (a -> Int)
-> (Ptr a -> Int -> IO a)
-> (Ptr a -> Int -> a -> IO ())
-> (forall b. Ptr b -> Int -> IO a)
-> (forall b. Ptr b -> Int -> a -> IO ())
-> (Ptr a -> IO a)
-> (Ptr a -> a -> IO ())
-> Storable a
$csizeOf :: SDL_PenInputFlags -> Int
sizeOf :: SDL_PenInputFlags -> Int
$calignment :: SDL_PenInputFlags -> Int
alignment :: SDL_PenInputFlags -> Int
$cpeekElemOff :: Ptr SDL_PenInputFlags -> Int -> IO SDL_PenInputFlags
peekElemOff :: Ptr SDL_PenInputFlags -> Int -> IO SDL_PenInputFlags
$cpokeElemOff :: Ptr SDL_PenInputFlags -> Int -> SDL_PenInputFlags -> IO ()
pokeElemOff :: Ptr SDL_PenInputFlags -> Int -> SDL_PenInputFlags -> IO ()
$cpeekByteOff :: forall b. Ptr b -> Int -> IO SDL_PenInputFlags
peekByteOff :: forall b. Ptr b -> Int -> IO SDL_PenInputFlags
$cpokeByteOff :: forall b. Ptr b -> Int -> SDL_PenInputFlags -> IO ()
pokeByteOff :: forall b. Ptr b -> Int -> SDL_PenInputFlags -> IO ()
$cpeek :: Ptr SDL_PenInputFlags -> IO SDL_PenInputFlags
peek :: Ptr SDL_PenInputFlags -> IO SDL_PenInputFlags
$cpoke :: Ptr SDL_PenInputFlags -> SDL_PenInputFlags -> IO ()
poke :: Ptr SDL_PenInputFlags -> SDL_PenInputFlags -> IO ()
BG.Storable
    , SDL_PenInputFlags
SDL_PenInputFlags -> SDL_PenInputFlags -> Bounded SDL_PenInputFlags
forall a. a -> a -> Bounded a
$cminBound :: SDL_PenInputFlags
minBound :: SDL_PenInputFlags
$cmaxBound :: SDL_PenInputFlags
maxBound :: SDL_PenInputFlags
Bounded
    , Int -> SDL_PenInputFlags
SDL_PenInputFlags -> Int
SDL_PenInputFlags -> [SDL_PenInputFlags]
SDL_PenInputFlags -> SDL_PenInputFlags
SDL_PenInputFlags -> SDL_PenInputFlags -> [SDL_PenInputFlags]
SDL_PenInputFlags
-> SDL_PenInputFlags -> SDL_PenInputFlags -> [SDL_PenInputFlags]
(SDL_PenInputFlags -> SDL_PenInputFlags)
-> (SDL_PenInputFlags -> SDL_PenInputFlags)
-> (Int -> SDL_PenInputFlags)
-> (SDL_PenInputFlags -> Int)
-> (SDL_PenInputFlags -> [SDL_PenInputFlags])
-> (SDL_PenInputFlags -> SDL_PenInputFlags -> [SDL_PenInputFlags])
-> (SDL_PenInputFlags -> SDL_PenInputFlags -> [SDL_PenInputFlags])
-> (SDL_PenInputFlags
    -> SDL_PenInputFlags -> SDL_PenInputFlags -> [SDL_PenInputFlags])
-> Enum SDL_PenInputFlags
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
$csucc :: SDL_PenInputFlags -> SDL_PenInputFlags
succ :: SDL_PenInputFlags -> SDL_PenInputFlags
$cpred :: SDL_PenInputFlags -> SDL_PenInputFlags
pred :: SDL_PenInputFlags -> SDL_PenInputFlags
$ctoEnum :: Int -> SDL_PenInputFlags
toEnum :: Int -> SDL_PenInputFlags
$cfromEnum :: SDL_PenInputFlags -> Int
fromEnum :: SDL_PenInputFlags -> Int
$cenumFrom :: SDL_PenInputFlags -> [SDL_PenInputFlags]
enumFrom :: SDL_PenInputFlags -> [SDL_PenInputFlags]
$cenumFromThen :: SDL_PenInputFlags -> SDL_PenInputFlags -> [SDL_PenInputFlags]
enumFromThen :: SDL_PenInputFlags -> SDL_PenInputFlags -> [SDL_PenInputFlags]
$cenumFromTo :: SDL_PenInputFlags -> SDL_PenInputFlags -> [SDL_PenInputFlags]
enumFromTo :: SDL_PenInputFlags -> SDL_PenInputFlags -> [SDL_PenInputFlags]
$cenumFromThenTo :: SDL_PenInputFlags
-> SDL_PenInputFlags -> SDL_PenInputFlags -> [SDL_PenInputFlags]
enumFromThenTo :: SDL_PenInputFlags
-> SDL_PenInputFlags -> SDL_PenInputFlags -> [SDL_PenInputFlags]
Enum
    , Enum SDL_PenInputFlags
Real SDL_PenInputFlags
(Real SDL_PenInputFlags, Enum SDL_PenInputFlags) =>
(SDL_PenInputFlags -> SDL_PenInputFlags -> SDL_PenInputFlags)
-> (SDL_PenInputFlags -> SDL_PenInputFlags -> SDL_PenInputFlags)
-> (SDL_PenInputFlags -> SDL_PenInputFlags -> SDL_PenInputFlags)
-> (SDL_PenInputFlags -> SDL_PenInputFlags -> SDL_PenInputFlags)
-> (SDL_PenInputFlags
    -> SDL_PenInputFlags -> (SDL_PenInputFlags, SDL_PenInputFlags))
-> (SDL_PenInputFlags
    -> SDL_PenInputFlags -> (SDL_PenInputFlags, SDL_PenInputFlags))
-> (SDL_PenInputFlags -> Integer)
-> Integral SDL_PenInputFlags
SDL_PenInputFlags -> Integer
SDL_PenInputFlags
-> SDL_PenInputFlags -> (SDL_PenInputFlags, SDL_PenInputFlags)
SDL_PenInputFlags -> SDL_PenInputFlags -> SDL_PenInputFlags
forall a.
(Real a, Enum a) =>
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> (a, a))
-> (a -> a -> (a, a))
-> (a -> Integer)
-> Integral a
$cquot :: SDL_PenInputFlags -> SDL_PenInputFlags -> SDL_PenInputFlags
quot :: SDL_PenInputFlags -> SDL_PenInputFlags -> SDL_PenInputFlags
$crem :: SDL_PenInputFlags -> SDL_PenInputFlags -> SDL_PenInputFlags
rem :: SDL_PenInputFlags -> SDL_PenInputFlags -> SDL_PenInputFlags
$cdiv :: SDL_PenInputFlags -> SDL_PenInputFlags -> SDL_PenInputFlags
div :: SDL_PenInputFlags -> SDL_PenInputFlags -> SDL_PenInputFlags
$cmod :: SDL_PenInputFlags -> SDL_PenInputFlags -> SDL_PenInputFlags
mod :: SDL_PenInputFlags -> SDL_PenInputFlags -> SDL_PenInputFlags
$cquotRem :: SDL_PenInputFlags
-> SDL_PenInputFlags -> (SDL_PenInputFlags, SDL_PenInputFlags)
quotRem :: SDL_PenInputFlags
-> SDL_PenInputFlags -> (SDL_PenInputFlags, SDL_PenInputFlags)
$cdivMod :: SDL_PenInputFlags
-> SDL_PenInputFlags -> (SDL_PenInputFlags, SDL_PenInputFlags)
divMod :: SDL_PenInputFlags
-> SDL_PenInputFlags -> (SDL_PenInputFlags, SDL_PenInputFlags)
$ctoInteger :: SDL_PenInputFlags -> Integer
toInteger :: SDL_PenInputFlags -> Integer
Integral
    , Ptr SDL_PenInputFlags -> IO SDL_PenInputFlags
(Ptr SDL_PenInputFlags -> IO SDL_PenInputFlags)
-> ReadRaw SDL_PenInputFlags
forall a. (Ptr a -> IO a) -> ReadRaw a
$creadRaw :: Ptr SDL_PenInputFlags -> IO SDL_PenInputFlags
readRaw :: Ptr SDL_PenInputFlags -> IO SDL_PenInputFlags
Marshal.ReadRaw
    , Proxy SDL_PenInputFlags -> Int
(Proxy SDL_PenInputFlags -> Int)
-> (Proxy SDL_PenInputFlags -> Int) -> StaticSize SDL_PenInputFlags
forall a. (Proxy a -> Int) -> (Proxy a -> Int) -> StaticSize a
$cstaticSizeOf :: Proxy SDL_PenInputFlags -> Int
staticSizeOf :: Proxy SDL_PenInputFlags -> Int
$cstaticAlignment :: Proxy SDL_PenInputFlags -> Int
staticAlignment :: Proxy SDL_PenInputFlags -> Int
Marshal.StaticSize
    , Ptr SDL_PenInputFlags -> SDL_PenInputFlags -> IO ()
(Ptr SDL_PenInputFlags -> SDL_PenInputFlags -> IO ())
-> WriteRaw SDL_PenInputFlags
forall a. (Ptr a -> a -> IO ()) -> WriteRaw a
$cwriteRaw :: Ptr SDL_PenInputFlags -> SDL_PenInputFlags -> IO ()
writeRaw :: Ptr SDL_PenInputFlags -> SDL_PenInputFlags -> IO ()
Marshal.WriteRaw
    , Integer -> SDL_PenInputFlags
SDL_PenInputFlags -> SDL_PenInputFlags
SDL_PenInputFlags -> SDL_PenInputFlags -> SDL_PenInputFlags
(SDL_PenInputFlags -> SDL_PenInputFlags -> SDL_PenInputFlags)
-> (SDL_PenInputFlags -> SDL_PenInputFlags -> SDL_PenInputFlags)
-> (SDL_PenInputFlags -> SDL_PenInputFlags -> SDL_PenInputFlags)
-> (SDL_PenInputFlags -> SDL_PenInputFlags)
-> (SDL_PenInputFlags -> SDL_PenInputFlags)
-> (SDL_PenInputFlags -> SDL_PenInputFlags)
-> (Integer -> SDL_PenInputFlags)
-> Num SDL_PenInputFlags
forall a.
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> a)
-> (a -> a)
-> (Integer -> a)
-> Num a
$c+ :: SDL_PenInputFlags -> SDL_PenInputFlags -> SDL_PenInputFlags
+ :: SDL_PenInputFlags -> SDL_PenInputFlags -> SDL_PenInputFlags
$c- :: SDL_PenInputFlags -> SDL_PenInputFlags -> SDL_PenInputFlags
- :: SDL_PenInputFlags -> SDL_PenInputFlags -> SDL_PenInputFlags
$c* :: SDL_PenInputFlags -> SDL_PenInputFlags -> SDL_PenInputFlags
* :: SDL_PenInputFlags -> SDL_PenInputFlags -> SDL_PenInputFlags
$cnegate :: SDL_PenInputFlags -> SDL_PenInputFlags
negate :: SDL_PenInputFlags -> SDL_PenInputFlags
$cabs :: SDL_PenInputFlags -> SDL_PenInputFlags
abs :: SDL_PenInputFlags -> SDL_PenInputFlags
$csignum :: SDL_PenInputFlags -> SDL_PenInputFlags
signum :: SDL_PenInputFlags -> SDL_PenInputFlags
$cfromInteger :: Integer -> SDL_PenInputFlags
fromInteger :: Integer -> SDL_PenInputFlags
Num
    , Num SDL_PenInputFlags
Ord SDL_PenInputFlags
(Num SDL_PenInputFlags, Ord SDL_PenInputFlags) =>
(SDL_PenInputFlags -> Rational) -> Real SDL_PenInputFlags
SDL_PenInputFlags -> Rational
forall a. (Num a, Ord a) => (a -> Rational) -> Real a
$ctoRational :: SDL_PenInputFlags -> Rational
toRational :: SDL_PenInputFlags -> Rational
Real
    )

instance
  (ty ~ SDL3.Sys.Bindgen.Stdinc.Uint32)
  => BG.CompatHasField.HasField "unwrap" SDL_PenInputFlags ty
  where
  hasField :: SDL_PenInputFlags -> (ty -> SDL_PenInputFlags, ty)
hasField =
    \SDL_PenInputFlags
x0 ->
      ( \ty
y1 ->
          SDL_PenInputFlags{unwrap :: Uint32
unwrap = ty
Uint32
y1}
      , forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"unwrap" SDL_PenInputFlags
x0
      )

instance
  (ty ~ SDL3.Sys.Bindgen.Stdinc.Uint32)
  => BG.HasField "unwrap" (BG.Ptr SDL_PenInputFlags) (BG.Ptr ty)
  where
  getField :: Ptr SDL_PenInputFlags -> Ptr ty
getField = Proxy "unwrap"
-> Ptr SDL_PenInputFlags
-> Ptr (CFieldType SDL_PenInputFlags "unwrap")
forall a (field :: Symbol).
HasCField a field =>
Proxy field -> Ptr a -> Ptr (CFieldType a field)
HasCField.fromPtr (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"unwrap")

instance HasCField.HasCField SDL_PenInputFlags "unwrap" where
  type
    CFieldType SDL_PenInputFlags "unwrap" =
      SDL3.Sys.Bindgen.Stdinc.Uint32

  offset# :: Proxy# SDL_PenInputFlags -> Proxy# "unwrap" -> Int
offset# = \Proxy# SDL_PenInputFlags
_ -> \Proxy# "unwrap"
_ -> Int
0

-- | pen is pressed down
--
--     [C declaration]: @macro SDL_PEN_INPUT_DOWN@, defined at @SDL3\/SDL_pen.h 116:9@
sDL_PEN_INPUT_DOWN :: BG.CUInt
sDL_PEN_INPUT_DOWN :: CUInt
sDL_PEN_INPUT_DOWN =
  CUInt -> CInt -> ShiftRes CUInt
forall a i. Shift a i => a -> i -> ShiftRes a
(C.Expr.HostPlatform.<<) (CUInt
1 :: BG.CUInt) (CInt
0 :: BG.CInt)

-- | button 1 is pressed
--
--     [C declaration]: @macro SDL_PEN_INPUT_BUTTON_1@, defined at @SDL3\/SDL_pen.h 117:9@
sDL_PEN_INPUT_BUTTON_1 :: BG.CUInt
sDL_PEN_INPUT_BUTTON_1 :: CUInt
sDL_PEN_INPUT_BUTTON_1 =
  CUInt -> CInt -> ShiftRes CUInt
forall a i. Shift a i => a -> i -> ShiftRes a
(C.Expr.HostPlatform.<<) (CUInt
1 :: BG.CUInt) (CInt
1 :: BG.CInt)

-- | button 2 is pressed
--
--     [C declaration]: @macro SDL_PEN_INPUT_BUTTON_2@, defined at @SDL3\/SDL_pen.h 118:9@
sDL_PEN_INPUT_BUTTON_2 :: BG.CUInt
sDL_PEN_INPUT_BUTTON_2 :: CUInt
sDL_PEN_INPUT_BUTTON_2 =
  CUInt -> CInt -> ShiftRes CUInt
forall a i. Shift a i => a -> i -> ShiftRes a
(C.Expr.HostPlatform.<<) (CUInt
1 :: BG.CUInt) (CInt
2 :: BG.CInt)

-- | button 3 is pressed
--
--     [C declaration]: @macro SDL_PEN_INPUT_BUTTON_3@, defined at @SDL3\/SDL_pen.h 119:9@
sDL_PEN_INPUT_BUTTON_3 :: BG.CUInt
sDL_PEN_INPUT_BUTTON_3 :: CUInt
sDL_PEN_INPUT_BUTTON_3 =
  CUInt -> CInt -> ShiftRes CUInt
forall a i. Shift a i => a -> i -> ShiftRes a
(C.Expr.HostPlatform.<<) (CUInt
1 :: BG.CUInt) (CInt
3 :: BG.CInt)

-- | button 4 is pressed
--
--     [C declaration]: @macro SDL_PEN_INPUT_BUTTON_4@, defined at @SDL3\/SDL_pen.h 120:9@
sDL_PEN_INPUT_BUTTON_4 :: BG.CUInt
sDL_PEN_INPUT_BUTTON_4 :: CUInt
sDL_PEN_INPUT_BUTTON_4 =
  CUInt -> CInt -> ShiftRes CUInt
forall a i. Shift a i => a -> i -> ShiftRes a
(C.Expr.HostPlatform.<<) (CUInt
1 :: BG.CUInt) (CInt
4 :: BG.CInt)

-- | button 5 is pressed
--
--     [C declaration]: @macro SDL_PEN_INPUT_BUTTON_5@, defined at @SDL3\/SDL_pen.h 121:9@
sDL_PEN_INPUT_BUTTON_5 :: BG.CUInt
sDL_PEN_INPUT_BUTTON_5 :: CUInt
sDL_PEN_INPUT_BUTTON_5 =
  CUInt -> CInt -> ShiftRes CUInt
forall a i. Shift a i => a -> i -> ShiftRes a
(C.Expr.HostPlatform.<<) (CUInt
1 :: BG.CUInt) (CInt
5 :: BG.CInt)

-- | eraser tip is used
--
--     [C declaration]: @macro SDL_PEN_INPUT_ERASER_TIP@, defined at @SDL3\/SDL_pen.h 122:9@
sDL_PEN_INPUT_ERASER_TIP :: BG.CUInt
sDL_PEN_INPUT_ERASER_TIP :: CUInt
sDL_PEN_INPUT_ERASER_TIP =
  CUInt -> CInt -> ShiftRes CUInt
forall a i. Shift a i => a -> i -> ShiftRes a
(C.Expr.HostPlatform.<<) (CUInt
1 :: BG.CUInt) (CInt
30 :: BG.CInt)

-- | pen is in proximity (since SDL 3.4.0)
--
--     [C declaration]: @macro SDL_PEN_INPUT_IN_PROXIMITY@, defined at @SDL3\/SDL_pen.h 123:9@
sDL_PEN_INPUT_IN_PROXIMITY :: BG.CUInt
sDL_PEN_INPUT_IN_PROXIMITY :: CUInt
sDL_PEN_INPUT_IN_PROXIMITY =
  CUInt -> CInt -> ShiftRes CUInt
forall a i. Shift a i => a -> i -> ShiftRes a
(C.Expr.HostPlatform.<<) (CUInt
1 :: BG.CUInt) (CInt
31 :: BG.CInt)

-- | Pen axis indices.
--
--     These are the valid values for the @axis@ field in SDL_PenAxisEvent. All axes are either normalised to 0..1 or report a (positive or negative) angle in degrees, with 0.0 representing the centre. Not all pens\/backends support all axes: unsupported axes are always zero.
--
--     To convert angles for tilt and rotation into vector representation, use SDL_sinf on the XTILT, YTILT, or ROTATION component, for example:
--
--     @SDL_sinf(xtilt * SDL_PI_F \/ 180.0)@.
--
--     @since 3.2.0
--
--     [C declaration]: @enum SDL_PenAxis@, defined at @SDL3\/SDL_pen.h 140:14@
newtype SDL_PenAxis = SDL_PenAxis
  { SDL_PenAxis -> CUInt
unwrap :: BG.CUInt
  }
  deriving stock ((forall x. SDL_PenAxis -> Rep SDL_PenAxis x)
-> (forall x. Rep SDL_PenAxis x -> SDL_PenAxis)
-> Generic SDL_PenAxis
forall x. Rep SDL_PenAxis x -> SDL_PenAxis
forall x. SDL_PenAxis -> Rep SDL_PenAxis x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. SDL_PenAxis -> Rep SDL_PenAxis x
from :: forall x. SDL_PenAxis -> Rep SDL_PenAxis x
$cto :: forall x. Rep SDL_PenAxis x -> SDL_PenAxis
to :: forall x. Rep SDL_PenAxis x -> SDL_PenAxis
BG.Generic, SDL_PenAxis -> SDL_PenAxis -> Bool
(SDL_PenAxis -> SDL_PenAxis -> Bool)
-> (SDL_PenAxis -> SDL_PenAxis -> Bool) -> Eq SDL_PenAxis
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SDL_PenAxis -> SDL_PenAxis -> Bool
== :: SDL_PenAxis -> SDL_PenAxis -> Bool
$c/= :: SDL_PenAxis -> SDL_PenAxis -> Bool
/= :: SDL_PenAxis -> SDL_PenAxis -> Bool
Eq, Eq SDL_PenAxis
Eq SDL_PenAxis =>
(SDL_PenAxis -> SDL_PenAxis -> Ordering)
-> (SDL_PenAxis -> SDL_PenAxis -> Bool)
-> (SDL_PenAxis -> SDL_PenAxis -> Bool)
-> (SDL_PenAxis -> SDL_PenAxis -> Bool)
-> (SDL_PenAxis -> SDL_PenAxis -> Bool)
-> (SDL_PenAxis -> SDL_PenAxis -> SDL_PenAxis)
-> (SDL_PenAxis -> SDL_PenAxis -> SDL_PenAxis)
-> Ord SDL_PenAxis
SDL_PenAxis -> SDL_PenAxis -> Bool
SDL_PenAxis -> SDL_PenAxis -> Ordering
SDL_PenAxis -> SDL_PenAxis -> SDL_PenAxis
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 :: SDL_PenAxis -> SDL_PenAxis -> Ordering
compare :: SDL_PenAxis -> SDL_PenAxis -> Ordering
$c< :: SDL_PenAxis -> SDL_PenAxis -> Bool
< :: SDL_PenAxis -> SDL_PenAxis -> Bool
$c<= :: SDL_PenAxis -> SDL_PenAxis -> Bool
<= :: SDL_PenAxis -> SDL_PenAxis -> Bool
$c> :: SDL_PenAxis -> SDL_PenAxis -> Bool
> :: SDL_PenAxis -> SDL_PenAxis -> Bool
$c>= :: SDL_PenAxis -> SDL_PenAxis -> Bool
>= :: SDL_PenAxis -> SDL_PenAxis -> Bool
$cmax :: SDL_PenAxis -> SDL_PenAxis -> SDL_PenAxis
max :: SDL_PenAxis -> SDL_PenAxis -> SDL_PenAxis
$cmin :: SDL_PenAxis -> SDL_PenAxis -> SDL_PenAxis
min :: SDL_PenAxis -> SDL_PenAxis -> SDL_PenAxis
Ord)
  deriving newtype (FFIType SDL_PenAxis -> SDL_PenAxis
SDL_PenAxis -> FFIType SDL_PenAxis
(SDL_PenAxis -> FFIType SDL_PenAxis)
-> (FFIType SDL_PenAxis -> SDL_PenAxis) -> HasFFIType SDL_PenAxis
forall a. (a -> FFIType a) -> (FFIType a -> a) -> HasFFIType a
$ctoFFIType :: SDL_PenAxis -> FFIType SDL_PenAxis
toFFIType :: SDL_PenAxis -> FFIType SDL_PenAxis
$cfromFFIType :: FFIType SDL_PenAxis -> SDL_PenAxis
fromFFIType :: FFIType SDL_PenAxis -> SDL_PenAxis
BG.HasFFIType)

instance Marshal.StaticSize SDL_PenAxis where
  staticSizeOf :: Proxy SDL_PenAxis -> Int
staticSizeOf = \Proxy SDL_PenAxis
_ -> (Int
4 :: Int)

  staticAlignment :: Proxy SDL_PenAxis -> Int
staticAlignment = \Proxy SDL_PenAxis
_ -> (Int
4 :: Int)

instance Marshal.ReadRaw SDL_PenAxis where
  readRaw :: Ptr SDL_PenAxis -> IO SDL_PenAxis
readRaw =
    \Ptr SDL_PenAxis
ptr0 ->
      (CUInt -> SDL_PenAxis) -> IO (CUInt -> SDL_PenAxis)
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure CUInt -> SDL_PenAxis
SDL_PenAxis
        IO (CUInt -> SDL_PenAxis) -> IO CUInt -> IO SDL_PenAxis
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Ptr SDL_PenAxis -> Int -> IO CUInt
forall a b. ReadRaw a => Ptr b -> Int -> IO a
Marshal.readRawByteOff Ptr SDL_PenAxis
ptr0 (Int
0 :: Int)

instance Marshal.WriteRaw SDL_PenAxis where
  writeRaw :: Ptr SDL_PenAxis -> SDL_PenAxis -> IO ()
writeRaw =
    \Ptr SDL_PenAxis
ptr0 ->
      \SDL_PenAxis
s1 ->
        case SDL_PenAxis
s1 of
          SDL_PenAxis CUInt
unwrap2 ->
            Ptr SDL_PenAxis -> Int -> CUInt -> IO ()
forall a b. WriteRaw a => Ptr b -> Int -> a -> IO ()
Marshal.writeRawByteOff Ptr SDL_PenAxis
ptr0 (Int
0 :: Int) CUInt
unwrap2

deriving via Marshal.EquivStorable SDL_PenAxis instance BG.Storable SDL_PenAxis

deriving via BG.CUInt instance BG.Prim SDL_PenAxis

instance CEnum.CEnum SDL_PenAxis where
  type CEnumZ SDL_PenAxis = BG.CUInt

  toCEnum :: CEnumZ SDL_PenAxis -> SDL_PenAxis
toCEnum = CUInt -> SDL_PenAxis
CEnumZ SDL_PenAxis -> SDL_PenAxis
SDL_PenAxis

  fromCEnum :: SDL_PenAxis -> CEnumZ SDL_PenAxis
fromCEnum = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"unwrap"

  declaredValues :: forall (proxy :: * -> *).
proxy SDL_PenAxis -> DeclaredValues SDL_PenAxis
declaredValues =
    \proxy SDL_PenAxis
_ ->
      [(CEnumZ SDL_PenAxis, NonEmpty String)]
-> DeclaredValues SDL_PenAxis
forall a.
Ord (CEnumZ a) =>
[(CEnumZ a, NonEmpty String)] -> DeclaredValues a
CEnum.declaredValuesFromList
        [ (CUInt
CEnumZ SDL_PenAxis
0, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_PEN_AXIS_PRESSURE")
        , (CUInt
CEnumZ SDL_PenAxis
1, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_PEN_AXIS_XTILT")
        , (CUInt
CEnumZ SDL_PenAxis
2, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_PEN_AXIS_YTILT")
        , (CUInt
CEnumZ SDL_PenAxis
3, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_PEN_AXIS_DISTANCE")
        , (CUInt
CEnumZ SDL_PenAxis
4, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_PEN_AXIS_ROTATION")
        , (CUInt
CEnumZ SDL_PenAxis
5, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_PEN_AXIS_SLIDER")
        , (CUInt
CEnumZ SDL_PenAxis
6, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_PEN_AXIS_TANGENTIAL_PRESSURE")
        , (CUInt
CEnumZ SDL_PenAxis
7, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_PEN_AXIS_COUNT")
        ]

  showsUndeclared :: forall (proxy :: * -> *).
proxy SDL_PenAxis -> Int -> CEnumZ SDL_PenAxis -> ShowS
showsUndeclared =
    String -> proxy SDL_PenAxis -> Int -> CEnumZ SDL_PenAxis -> ShowS
forall a (proxy :: * -> *).
Show (CEnumZ a) =>
String -> proxy a -> Int -> CEnumZ a -> ShowS
CEnum.showsWrappedUndeclared String
"SDL_PenAxis"

  readPrecUndeclared :: ReadPrec SDL_PenAxis
readPrecUndeclared =
    String -> ReadPrec SDL_PenAxis
forall a. (CEnum a, Read (CEnumZ a)) => String -> ReadPrec a
CEnum.readPrecWrappedUndeclared String
"SDL_PenAxis"

  isDeclared :: SDL_PenAxis -> Bool
isDeclared = SDL_PenAxis -> Bool
forall a. SequentialCEnum a => a -> Bool
CEnum.seqIsDeclared

  mkDeclared :: CEnumZ SDL_PenAxis -> Maybe SDL_PenAxis
mkDeclared = CEnumZ SDL_PenAxis -> Maybe SDL_PenAxis
forall a. SequentialCEnum a => CEnumZ a -> Maybe a
CEnum.seqMkDeclared

instance CEnum.SequentialCEnum SDL_PenAxis where
  minDeclaredValue :: SDL_PenAxis
minDeclaredValue = SDL_PenAxis
SDL_PEN_AXIS_PRESSURE

  maxDeclaredValue :: SDL_PenAxis
maxDeclaredValue = SDL_PenAxis
SDL_PEN_AXIS_COUNT

instance Show SDL_PenAxis where
  showsPrec :: Int -> SDL_PenAxis -> ShowS
showsPrec = Int -> SDL_PenAxis -> ShowS
forall a. CEnum a => Int -> a -> ShowS
CEnum.shows

instance Read SDL_PenAxis where
  readPrec :: ReadPrec SDL_PenAxis
readPrec = ReadPrec SDL_PenAxis
forall a. CEnum a => ReadPrec a
CEnum.readPrec

  readList :: ReadS [SDL_PenAxis]
readList = ReadS [SDL_PenAxis]
forall a. Read a => ReadS [a]
BG.readListDefault

  readListPrec :: ReadPrec [SDL_PenAxis]
readListPrec = ReadPrec [SDL_PenAxis]
forall a. Read a => ReadPrec [a]
BG.readListPrecDefault

instance
  (ty ~ BG.CUInt)
  => BG.CompatHasField.HasField "unwrap" SDL_PenAxis ty
  where
  hasField :: SDL_PenAxis -> (ty -> SDL_PenAxis, ty)
hasField =
    \SDL_PenAxis
x0 ->
      ( \ty
y1 ->
          SDL_PenAxis{unwrap :: CUInt
unwrap = ty
CUInt
y1}
      , forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"unwrap" SDL_PenAxis
x0
      )

instance
  (ty ~ BG.CUInt)
  => BG.HasField "unwrap" (BG.Ptr SDL_PenAxis) (BG.Ptr ty)
  where
  getField :: Ptr SDL_PenAxis -> Ptr ty
getField = Proxy "unwrap"
-> Ptr SDL_PenAxis -> Ptr (CFieldType SDL_PenAxis "unwrap")
forall a (field :: Symbol).
HasCField a field =>
Proxy field -> Ptr a -> Ptr (CFieldType a field)
HasCField.fromPtr (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"unwrap")

instance HasCField.HasCField SDL_PenAxis "unwrap" where
  type CFieldType SDL_PenAxis "unwrap" = BG.CUInt

  offset# :: Proxy# SDL_PenAxis -> Proxy# "unwrap" -> Int
offset# = \Proxy# SDL_PenAxis
_ -> \Proxy# "unwrap"
_ -> Int
0

-- | Pen pressure. Unidirectional: 0 to 1.0
--
--     [C declaration]: @SDL_PEN_AXIS_PRESSURE@, defined at @SDL3\/SDL_pen.h 142:5@
pattern SDL_PEN_AXIS_PRESSURE :: SDL_PenAxis
pattern $mSDL_PEN_AXIS_PRESSURE :: forall {r}. SDL_PenAxis -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_PEN_AXIS_PRESSURE :: SDL_PenAxis
SDL_PEN_AXIS_PRESSURE = SDL_PenAxis 0

-- | Pen horizontal tilt angle. Bidirectional: -90.0 to 90.0 (left-to-right).
--
--     [C declaration]: @SDL_PEN_AXIS_XTILT@, defined at @SDL3\/SDL_pen.h 143:5@
pattern SDL_PEN_AXIS_XTILT :: SDL_PenAxis
pattern $mSDL_PEN_AXIS_XTILT :: forall {r}. SDL_PenAxis -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_PEN_AXIS_XTILT :: SDL_PenAxis
SDL_PEN_AXIS_XTILT = SDL_PenAxis 1

-- | Pen vertical tilt angle. Bidirectional: -90.0 to 90.0 (top-to-down).
--
--     [C declaration]: @SDL_PEN_AXIS_YTILT@, defined at @SDL3\/SDL_pen.h 144:5@
pattern SDL_PEN_AXIS_YTILT :: SDL_PenAxis
pattern $mSDL_PEN_AXIS_YTILT :: forall {r}. SDL_PenAxis -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_PEN_AXIS_YTILT :: SDL_PenAxis
SDL_PEN_AXIS_YTILT = SDL_PenAxis 2

-- | Pen distance to drawing surface. Unidirectional: 0.0 to 1.0
--
--     [C declaration]: @SDL_PEN_AXIS_DISTANCE@, defined at @SDL3\/SDL_pen.h 145:5@
pattern SDL_PEN_AXIS_DISTANCE :: SDL_PenAxis
pattern $mSDL_PEN_AXIS_DISTANCE :: forall {r}. SDL_PenAxis -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_PEN_AXIS_DISTANCE :: SDL_PenAxis
SDL_PEN_AXIS_DISTANCE = SDL_PenAxis 3

-- | Pen barrel rotation. Bidirectional: -180 to 179.9 (clockwise, 0 is facing up, -180.0 is facing down).
--
--     [C declaration]: @SDL_PEN_AXIS_ROTATION@, defined at @SDL3\/SDL_pen.h 146:5@
pattern SDL_PEN_AXIS_ROTATION :: SDL_PenAxis
pattern $mSDL_PEN_AXIS_ROTATION :: forall {r}. SDL_PenAxis -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_PEN_AXIS_ROTATION :: SDL_PenAxis
SDL_PEN_AXIS_ROTATION = SDL_PenAxis 4

-- | Pen finger wheel or slider (e.g., Airbrush Pen). Unidirectional: 0 to 1.0
--
--     [C declaration]: @SDL_PEN_AXIS_SLIDER@, defined at @SDL3\/SDL_pen.h 147:5@
pattern SDL_PEN_AXIS_SLIDER :: SDL_PenAxis
pattern $mSDL_PEN_AXIS_SLIDER :: forall {r}. SDL_PenAxis -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_PEN_AXIS_SLIDER :: SDL_PenAxis
SDL_PEN_AXIS_SLIDER = SDL_PenAxis 5

-- | Pressure from squeezing the pen (\"barrel pressure\").
--
--     [C declaration]: @SDL_PEN_AXIS_TANGENTIAL_PRESSURE@, defined at @SDL3\/SDL_pen.h 148:5@
pattern SDL_PEN_AXIS_TANGENTIAL_PRESSURE :: SDL_PenAxis
pattern $mSDL_PEN_AXIS_TANGENTIAL_PRESSURE :: forall {r}. SDL_PenAxis -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_PEN_AXIS_TANGENTIAL_PRESSURE :: SDL_PenAxis
SDL_PEN_AXIS_TANGENTIAL_PRESSURE = SDL_PenAxis 6

-- | Total known pen axis types in this version of SDL. This number may grow in future releases!
--
--     [C declaration]: @SDL_PEN_AXIS_COUNT@, defined at @SDL3\/SDL_pen.h 149:5@
pattern SDL_PEN_AXIS_COUNT :: SDL_PenAxis
pattern $mSDL_PEN_AXIS_COUNT :: forall {r}. SDL_PenAxis -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_PEN_AXIS_COUNT :: SDL_PenAxis
SDL_PEN_AXIS_COUNT = SDL_PenAxis 7

-- | An enum that describes the type of a pen device.
--
--     A \"direct\" device is a pen that touches a graphic display (like an Apple Pencil on an iPad\'s screen). \"Indirect\" devices touch an external tablet surface that is connected to the machine but is not a display (like a lower-end Wacom tablet connected over USB).
--
--     Apps may use this information to decide if they should draw a cursor; if the pen is touching the screen directly, a cursor doesn\'t make sense and can be in the way, but becomes necessary for indirect devices to know where on the display they are interacting.
--
--     @since 3.4.0
--
--     [C declaration]: @enum SDL_PenDeviceType@, defined at @SDL3\/SDL_pen.h 167:14@
newtype SDL_PenDeviceType = SDL_PenDeviceType
  { SDL_PenDeviceType -> CInt
unwrap :: BG.CInt
  }
  deriving stock ((forall x. SDL_PenDeviceType -> Rep SDL_PenDeviceType x)
-> (forall x. Rep SDL_PenDeviceType x -> SDL_PenDeviceType)
-> Generic SDL_PenDeviceType
forall x. Rep SDL_PenDeviceType x -> SDL_PenDeviceType
forall x. SDL_PenDeviceType -> Rep SDL_PenDeviceType x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. SDL_PenDeviceType -> Rep SDL_PenDeviceType x
from :: forall x. SDL_PenDeviceType -> Rep SDL_PenDeviceType x
$cto :: forall x. Rep SDL_PenDeviceType x -> SDL_PenDeviceType
to :: forall x. Rep SDL_PenDeviceType x -> SDL_PenDeviceType
BG.Generic, SDL_PenDeviceType -> SDL_PenDeviceType -> Bool
(SDL_PenDeviceType -> SDL_PenDeviceType -> Bool)
-> (SDL_PenDeviceType -> SDL_PenDeviceType -> Bool)
-> Eq SDL_PenDeviceType
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SDL_PenDeviceType -> SDL_PenDeviceType -> Bool
== :: SDL_PenDeviceType -> SDL_PenDeviceType -> Bool
$c/= :: SDL_PenDeviceType -> SDL_PenDeviceType -> Bool
/= :: SDL_PenDeviceType -> SDL_PenDeviceType -> Bool
Eq, Eq SDL_PenDeviceType
Eq SDL_PenDeviceType =>
(SDL_PenDeviceType -> SDL_PenDeviceType -> Ordering)
-> (SDL_PenDeviceType -> SDL_PenDeviceType -> Bool)
-> (SDL_PenDeviceType -> SDL_PenDeviceType -> Bool)
-> (SDL_PenDeviceType -> SDL_PenDeviceType -> Bool)
-> (SDL_PenDeviceType -> SDL_PenDeviceType -> Bool)
-> (SDL_PenDeviceType -> SDL_PenDeviceType -> SDL_PenDeviceType)
-> (SDL_PenDeviceType -> SDL_PenDeviceType -> SDL_PenDeviceType)
-> Ord SDL_PenDeviceType
SDL_PenDeviceType -> SDL_PenDeviceType -> Bool
SDL_PenDeviceType -> SDL_PenDeviceType -> Ordering
SDL_PenDeviceType -> SDL_PenDeviceType -> SDL_PenDeviceType
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 :: SDL_PenDeviceType -> SDL_PenDeviceType -> Ordering
compare :: SDL_PenDeviceType -> SDL_PenDeviceType -> Ordering
$c< :: SDL_PenDeviceType -> SDL_PenDeviceType -> Bool
< :: SDL_PenDeviceType -> SDL_PenDeviceType -> Bool
$c<= :: SDL_PenDeviceType -> SDL_PenDeviceType -> Bool
<= :: SDL_PenDeviceType -> SDL_PenDeviceType -> Bool
$c> :: SDL_PenDeviceType -> SDL_PenDeviceType -> Bool
> :: SDL_PenDeviceType -> SDL_PenDeviceType -> Bool
$c>= :: SDL_PenDeviceType -> SDL_PenDeviceType -> Bool
>= :: SDL_PenDeviceType -> SDL_PenDeviceType -> Bool
$cmax :: SDL_PenDeviceType -> SDL_PenDeviceType -> SDL_PenDeviceType
max :: SDL_PenDeviceType -> SDL_PenDeviceType -> SDL_PenDeviceType
$cmin :: SDL_PenDeviceType -> SDL_PenDeviceType -> SDL_PenDeviceType
min :: SDL_PenDeviceType -> SDL_PenDeviceType -> SDL_PenDeviceType
Ord)
  deriving newtype (FFIType SDL_PenDeviceType -> SDL_PenDeviceType
SDL_PenDeviceType -> FFIType SDL_PenDeviceType
(SDL_PenDeviceType -> FFIType SDL_PenDeviceType)
-> (FFIType SDL_PenDeviceType -> SDL_PenDeviceType)
-> HasFFIType SDL_PenDeviceType
forall a. (a -> FFIType a) -> (FFIType a -> a) -> HasFFIType a
$ctoFFIType :: SDL_PenDeviceType -> FFIType SDL_PenDeviceType
toFFIType :: SDL_PenDeviceType -> FFIType SDL_PenDeviceType
$cfromFFIType :: FFIType SDL_PenDeviceType -> SDL_PenDeviceType
fromFFIType :: FFIType SDL_PenDeviceType -> SDL_PenDeviceType
BG.HasFFIType)

instance Marshal.StaticSize SDL_PenDeviceType where
  staticSizeOf :: Proxy SDL_PenDeviceType -> Int
staticSizeOf = \Proxy SDL_PenDeviceType
_ -> (Int
4 :: Int)

  staticAlignment :: Proxy SDL_PenDeviceType -> Int
staticAlignment = \Proxy SDL_PenDeviceType
_ -> (Int
4 :: Int)

instance Marshal.ReadRaw SDL_PenDeviceType where
  readRaw :: Ptr SDL_PenDeviceType -> IO SDL_PenDeviceType
readRaw =
    \Ptr SDL_PenDeviceType
ptr0 ->
      (CInt -> SDL_PenDeviceType) -> IO (CInt -> SDL_PenDeviceType)
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure CInt -> SDL_PenDeviceType
SDL_PenDeviceType
        IO (CInt -> SDL_PenDeviceType) -> IO CInt -> IO SDL_PenDeviceType
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Ptr SDL_PenDeviceType -> Int -> IO CInt
forall a b. ReadRaw a => Ptr b -> Int -> IO a
Marshal.readRawByteOff Ptr SDL_PenDeviceType
ptr0 (Int
0 :: Int)

instance Marshal.WriteRaw SDL_PenDeviceType where
  writeRaw :: Ptr SDL_PenDeviceType -> SDL_PenDeviceType -> IO ()
writeRaw =
    \Ptr SDL_PenDeviceType
ptr0 ->
      \SDL_PenDeviceType
s1 ->
        case SDL_PenDeviceType
s1 of
          SDL_PenDeviceType CInt
unwrap2 ->
            Ptr SDL_PenDeviceType -> Int -> CInt -> IO ()
forall a b. WriteRaw a => Ptr b -> Int -> a -> IO ()
Marshal.writeRawByteOff Ptr SDL_PenDeviceType
ptr0 (Int
0 :: Int) CInt
unwrap2

deriving via Marshal.EquivStorable SDL_PenDeviceType instance BG.Storable SDL_PenDeviceType

deriving via BG.CInt instance BG.Prim SDL_PenDeviceType

instance CEnum.CEnum SDL_PenDeviceType where
  type CEnumZ SDL_PenDeviceType = BG.CInt

  toCEnum :: CEnumZ SDL_PenDeviceType -> SDL_PenDeviceType
toCEnum = CInt -> SDL_PenDeviceType
CEnumZ SDL_PenDeviceType -> SDL_PenDeviceType
SDL_PenDeviceType

  fromCEnum :: SDL_PenDeviceType -> CEnumZ SDL_PenDeviceType
fromCEnum = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"unwrap"

  declaredValues :: forall (proxy :: * -> *).
proxy SDL_PenDeviceType -> DeclaredValues SDL_PenDeviceType
declaredValues =
    \proxy SDL_PenDeviceType
_ ->
      [(CEnumZ SDL_PenDeviceType, NonEmpty String)]
-> DeclaredValues SDL_PenDeviceType
forall a.
Ord (CEnumZ a) =>
[(CEnumZ a, NonEmpty String)] -> DeclaredValues a
CEnum.declaredValuesFromList
        [ (-CInt
1, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_PEN_DEVICE_TYPE_INVALID")
        , (CInt
CEnumZ SDL_PenDeviceType
0, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_PEN_DEVICE_TYPE_UNKNOWN")
        , (CInt
CEnumZ SDL_PenDeviceType
1, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_PEN_DEVICE_TYPE_DIRECT")
        , (CInt
CEnumZ SDL_PenDeviceType
2, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_PEN_DEVICE_TYPE_INDIRECT")
        ]

  showsUndeclared :: forall (proxy :: * -> *).
proxy SDL_PenDeviceType -> Int -> CEnumZ SDL_PenDeviceType -> ShowS
showsUndeclared =
    String
-> proxy SDL_PenDeviceType
-> Int
-> CEnumZ SDL_PenDeviceType
-> ShowS
forall a (proxy :: * -> *).
Show (CEnumZ a) =>
String -> proxy a -> Int -> CEnumZ a -> ShowS
CEnum.showsWrappedUndeclared String
"SDL_PenDeviceType"

  readPrecUndeclared :: ReadPrec SDL_PenDeviceType
readPrecUndeclared =
    String -> ReadPrec SDL_PenDeviceType
forall a. (CEnum a, Read (CEnumZ a)) => String -> ReadPrec a
CEnum.readPrecWrappedUndeclared String
"SDL_PenDeviceType"

  isDeclared :: SDL_PenDeviceType -> Bool
isDeclared = SDL_PenDeviceType -> Bool
forall a. SequentialCEnum a => a -> Bool
CEnum.seqIsDeclared

  mkDeclared :: CEnumZ SDL_PenDeviceType -> Maybe SDL_PenDeviceType
mkDeclared = CEnumZ SDL_PenDeviceType -> Maybe SDL_PenDeviceType
forall a. SequentialCEnum a => CEnumZ a -> Maybe a
CEnum.seqMkDeclared

instance CEnum.SequentialCEnum SDL_PenDeviceType where
  minDeclaredValue :: SDL_PenDeviceType
minDeclaredValue = SDL_PenDeviceType
SDL_PEN_DEVICE_TYPE_INVALID

  maxDeclaredValue :: SDL_PenDeviceType
maxDeclaredValue = SDL_PenDeviceType
SDL_PEN_DEVICE_TYPE_INDIRECT

instance Show SDL_PenDeviceType where
  showsPrec :: Int -> SDL_PenDeviceType -> ShowS
showsPrec = Int -> SDL_PenDeviceType -> ShowS
forall a. CEnum a => Int -> a -> ShowS
CEnum.shows

instance Read SDL_PenDeviceType where
  readPrec :: ReadPrec SDL_PenDeviceType
readPrec = ReadPrec SDL_PenDeviceType
forall a. CEnum a => ReadPrec a
CEnum.readPrec

  readList :: ReadS [SDL_PenDeviceType]
readList = ReadS [SDL_PenDeviceType]
forall a. Read a => ReadS [a]
BG.readListDefault

  readListPrec :: ReadPrec [SDL_PenDeviceType]
readListPrec = ReadPrec [SDL_PenDeviceType]
forall a. Read a => ReadPrec [a]
BG.readListPrecDefault

instance
  (ty ~ BG.CInt)
  => BG.CompatHasField.HasField "unwrap" SDL_PenDeviceType ty
  where
  hasField :: SDL_PenDeviceType -> (ty -> SDL_PenDeviceType, ty)
hasField =
    \SDL_PenDeviceType
x0 ->
      ( \ty
y1 ->
          SDL_PenDeviceType{unwrap :: CInt
unwrap = ty
CInt
y1}
      , forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"unwrap" SDL_PenDeviceType
x0
      )

instance
  (ty ~ BG.CInt)
  => BG.HasField "unwrap" (BG.Ptr SDL_PenDeviceType) (BG.Ptr ty)
  where
  getField :: Ptr SDL_PenDeviceType -> Ptr ty
getField = Proxy "unwrap"
-> Ptr SDL_PenDeviceType
-> Ptr (CFieldType SDL_PenDeviceType "unwrap")
forall a (field :: Symbol).
HasCField a field =>
Proxy field -> Ptr a -> Ptr (CFieldType a field)
HasCField.fromPtr (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"unwrap")

instance HasCField.HasCField SDL_PenDeviceType "unwrap" where
  type CFieldType SDL_PenDeviceType "unwrap" = BG.CInt

  offset# :: Proxy# SDL_PenDeviceType -> Proxy# "unwrap" -> Int
offset# = \Proxy# SDL_PenDeviceType
_ -> \Proxy# "unwrap"
_ -> Int
0

-- | Not a valid pen device.
--
--     [C declaration]: @SDL_PEN_DEVICE_TYPE_INVALID@, defined at @SDL3\/SDL_pen.h 169:5@
pattern SDL_PEN_DEVICE_TYPE_INVALID :: SDL_PenDeviceType
pattern $mSDL_PEN_DEVICE_TYPE_INVALID :: forall {r}. SDL_PenDeviceType -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_PEN_DEVICE_TYPE_INVALID :: SDL_PenDeviceType
SDL_PEN_DEVICE_TYPE_INVALID = SDL_PenDeviceType (-1)

-- | Don\'t know specifics of this pen.
--
--     [C declaration]: @SDL_PEN_DEVICE_TYPE_UNKNOWN@, defined at @SDL3\/SDL_pen.h 170:5@
pattern SDL_PEN_DEVICE_TYPE_UNKNOWN :: SDL_PenDeviceType
pattern $mSDL_PEN_DEVICE_TYPE_UNKNOWN :: forall {r}. SDL_PenDeviceType -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_PEN_DEVICE_TYPE_UNKNOWN :: SDL_PenDeviceType
SDL_PEN_DEVICE_TYPE_UNKNOWN = SDL_PenDeviceType 0

-- | Pen touches display.
--
--     [C declaration]: @SDL_PEN_DEVICE_TYPE_DIRECT@, defined at @SDL3\/SDL_pen.h 171:5@
pattern SDL_PEN_DEVICE_TYPE_DIRECT :: SDL_PenDeviceType
pattern $mSDL_PEN_DEVICE_TYPE_DIRECT :: forall {r}. SDL_PenDeviceType -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_PEN_DEVICE_TYPE_DIRECT :: SDL_PenDeviceType
SDL_PEN_DEVICE_TYPE_DIRECT = SDL_PenDeviceType 1

-- | Pen touches something that isn\'t the display.
--
--     [C declaration]: @SDL_PEN_DEVICE_TYPE_INDIRECT@, defined at @SDL3\/SDL_pen.h 172:5@
pattern SDL_PEN_DEVICE_TYPE_INDIRECT :: SDL_PenDeviceType
pattern $mSDL_PEN_DEVICE_TYPE_INDIRECT :: forall {r}. SDL_PenDeviceType -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_PEN_DEVICE_TYPE_INDIRECT :: SDL_PenDeviceType
SDL_PEN_DEVICE_TYPE_INDIRECT = SDL_PenDeviceType 2