{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE DerivingVia #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE EmptyDataDecls #-}
{-# 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 #-}

-- | Video capture for the SDL library.
--
--     This API lets apps read input from video sources, like webcams. Camera devices can be enumerated, queried, and opened. Once opened, it will provide SDL_Surface objects as new frames of video come in. These surfaces can be uploaded to an SDL_Texture or processed as pixels in memory.
--
--     Several platforms will alert the user if an app tries to access a camera, and some will present a UI asking the user if your application should be allowed to obtain images at all, which they can deny. A successfully opened camera will not provide images until permission is granted. Applications, after opening a camera device, can see if they were granted access by either polling with the @SDL_GetCameraPermissionState()@ function, or waiting for an SDL_EVENT_CAMERA_DEVICE_APPROVED or SDL_EVENT_CAMERA_DEVICE_DENIED event. Platforms that don\'t have any user approval process will report approval immediately.
--
--     Note that SDL cameras only provide video as individual frames; they will not provide full-motion video encoded in a movie file format, although an app is free to encode the acquired frames into any format it likes. It also does not provide audio from the camera hardware through this API; not only do many webcams not have microphones at all, many people from streamers to people on Zoom calls will want to use a separate microphone regardless of the camera. In any case, recorded audio will be available through SDL\'s audio API no matter what hardware provides the microphone.
--
--     Camera gotchas
--
--     Consumer-level camera hardware tends to take a little while to warm up, once the device has been opened. Generally most camera apps have some sort of UI to take a picture (a button to snap a pic while a preview is showing, some sort of multi-second countdown for the user to pose, like a photo booth), which puts control in the users\' hands, or they are intended to stay on for long times (Pokemon Go, etc).
--
--     It\'s not uncommon that a newly-opened camera will provide a couple of completely black frames, maybe followed by some under-exposed images. If taking a single frame automatically, or recording video from a camera\'s input without the user initiating it from a preview, it could be wise to drop the first several frames (if not the first several /seconds/ worth of frames!) before using images from a camera. This is a unique ID for a camera device for the time it is connected to the system, and is never reused for the lifetime of the application.
--
--     If the device is disconnected and reconnected, it will get a new ID.
--
--     The value 0 is an invalid ID.
--
--     @since 3.2.0
--
--     [See also]: 'sDL_GetCameras'
module SDL3.Sys.Bindgen.Camera (
  SDL3.Sys.Bindgen.Camera.SDL_CameraID (..),
  SDL3.Sys.Bindgen.Camera.SDL_Camera,
  SDL3.Sys.Bindgen.Camera.SDL_CameraSpec (..),
  SDL3.Sys.Bindgen.Camera.SDL_CameraPosition (..),
  pattern SDL3.Sys.Bindgen.Camera.SDL_CAMERA_POSITION_UNKNOWN,
  pattern SDL3.Sys.Bindgen.Camera.SDL_CAMERA_POSITION_FRONT_FACING,
  pattern SDL3.Sys.Bindgen.Camera.SDL_CAMERA_POSITION_BACK_FACING,
  SDL3.Sys.Bindgen.Camera.SDL_CameraPermissionState (..),
  pattern SDL3.Sys.Bindgen.Camera.SDL_CAMERA_PERMISSION_STATE_DENIED,
  pattern SDL3.Sys.Bindgen.Camera.SDL_CAMERA_PERMISSION_STATE_PENDING,
  pattern SDL3.Sys.Bindgen.Camera.SDL_CAMERA_PERMISSION_STATE_APPROVED,
)
where

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

import HsBindgen.Runtime.CEnum qualified as CEnum
import HsBindgen.Runtime.HasCField qualified as HasCField
import HsBindgen.Runtime.Marshal qualified as Marshal
import HsBindgen.Runtime.Struct qualified as Struct
import HsBindgen.Runtime.Support qualified as BG
import HsBindgen.Runtime.Support.CompatHasField qualified as BG.CompatHasField
import SDL3.Sys.Bindgen.Pixels qualified
import SDL3.Sys.Bindgen.Stdinc qualified

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

instance
  (ty ~ SDL3.Sys.Bindgen.Stdinc.Uint32)
  => BG.CompatHasField.HasField "unwrap" SDL_CameraID ty
  where
  hasField :: SDL_CameraID -> (ty -> SDL_CameraID, ty)
hasField =
    \SDL_CameraID
x0 ->
      ( \ty
y1 ->
          SDL_CameraID{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_CameraID
x0
      )

instance
  (ty ~ SDL3.Sys.Bindgen.Stdinc.Uint32)
  => BG.HasField "unwrap" (BG.Ptr SDL_CameraID) (BG.Ptr ty)
  where
  getField :: Ptr SDL_CameraID -> Ptr ty
getField = Proxy "unwrap"
-> Ptr SDL_CameraID -> Ptr (CFieldType SDL_CameraID "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_CameraID "unwrap" where
  type
    CFieldType SDL_CameraID "unwrap" =
      SDL3.Sys.Bindgen.Stdinc.Uint32

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

-- | The opaque structure used to identify an opened SDL camera.
--
--     @since 3.2.0
--
--     [C declaration]: @struct SDL_Camera@, defined at @SDL3\/SDL_camera.h 102:16@
data SDL_Camera

-- | The details of an output format for a camera device.
--
--     Cameras often support multiple formats; each one will be encapsulated in this struct.
--
--     @since 3.2.0
--
--     [See also]: 'sDL_GetCameraSupportedFormats', 'sDL_GetCameraFormat'
--
--     [C declaration]: @struct SDL_CameraSpec@, defined at @SDL3\/SDL_camera.h 115:16@
data SDL_CameraSpec = SDL_CameraSpec
  { SDL_CameraSpec -> SDL_PixelFormat
format :: SDL3.Sys.Bindgen.Pixels.SDL_PixelFormat
  -- ^ Frame format
  --
  --          [C declaration]: @format@, defined at @SDL3\/SDL_camera.h 117:21@
  , SDL_CameraSpec -> SDL_Colorspace
colorspace :: SDL3.Sys.Bindgen.Pixels.SDL_Colorspace
  -- ^ Frame colorspace
  --
  --          [C declaration]: @colorspace@, defined at @SDL3\/SDL_camera.h 118:20@
  , SDL_CameraSpec -> CInt
width :: BG.CInt
  -- ^ Frame width
  --
  --          [C declaration]: @width@, defined at @SDL3\/SDL_camera.h 119:9@
  , SDL_CameraSpec -> CInt
height :: BG.CInt
  -- ^ Frame height
  --
  --          [C declaration]: @height@, defined at @SDL3\/SDL_camera.h 120:9@
  , SDL_CameraSpec -> CInt
framerate_numerator :: BG.CInt
  -- ^ Frame rate numerator ((num \/ denom) == FPS, (denom \/ num) == duration in seconds)
  --
  --          [C declaration]: @framerate_numerator@, defined at @SDL3\/SDL_camera.h 121:9@
  , SDL_CameraSpec -> CInt
framerate_denominator :: BG.CInt
  -- ^ Frame rate denominator ((num \/ denom) == FPS, (denom \/ num) == duration in seconds)
  --
  --          [C declaration]: @framerate_denominator@, defined at @SDL3\/SDL_camera.h 122:9@
  }
  deriving stock ((forall x. SDL_CameraSpec -> Rep SDL_CameraSpec x)
-> (forall x. Rep SDL_CameraSpec x -> SDL_CameraSpec)
-> Generic SDL_CameraSpec
forall x. Rep SDL_CameraSpec x -> SDL_CameraSpec
forall x. SDL_CameraSpec -> Rep SDL_CameraSpec x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. SDL_CameraSpec -> Rep SDL_CameraSpec x
from :: forall x. SDL_CameraSpec -> Rep SDL_CameraSpec x
$cto :: forall x. Rep SDL_CameraSpec x -> SDL_CameraSpec
to :: forall x. Rep SDL_CameraSpec x -> SDL_CameraSpec
BG.Generic, SDL_CameraSpec -> SDL_CameraSpec -> Bool
(SDL_CameraSpec -> SDL_CameraSpec -> Bool)
-> (SDL_CameraSpec -> SDL_CameraSpec -> Bool) -> Eq SDL_CameraSpec
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SDL_CameraSpec -> SDL_CameraSpec -> Bool
== :: SDL_CameraSpec -> SDL_CameraSpec -> Bool
$c/= :: SDL_CameraSpec -> SDL_CameraSpec -> Bool
/= :: SDL_CameraSpec -> SDL_CameraSpec -> Bool
Eq, Int -> SDL_CameraSpec -> ShowS
[SDL_CameraSpec] -> ShowS
SDL_CameraSpec -> String
(Int -> SDL_CameraSpec -> ShowS)
-> (SDL_CameraSpec -> String)
-> ([SDL_CameraSpec] -> ShowS)
-> Show SDL_CameraSpec
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> SDL_CameraSpec -> ShowS
showsPrec :: Int -> SDL_CameraSpec -> ShowS
$cshow :: SDL_CameraSpec -> String
show :: SDL_CameraSpec -> String
$cshowList :: [SDL_CameraSpec] -> ShowS
showList :: [SDL_CameraSpec] -> ShowS
Show)

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

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

instance Marshal.ReadRaw SDL_CameraSpec where
  readRaw :: Ptr SDL_CameraSpec -> IO SDL_CameraSpec
readRaw =
    \Ptr SDL_CameraSpec
ptr0 ->
      (SDL_PixelFormat
 -> SDL_Colorspace
 -> CInt
 -> CInt
 -> CInt
 -> CInt
 -> SDL_CameraSpec)
-> IO
     (SDL_PixelFormat
      -> SDL_Colorspace
      -> CInt
      -> CInt
      -> CInt
      -> CInt
      -> SDL_CameraSpec)
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure SDL_PixelFormat
-> SDL_Colorspace -> CInt -> CInt -> CInt -> CInt -> SDL_CameraSpec
SDL_CameraSpec
        IO
  (SDL_PixelFormat
   -> SDL_Colorspace
   -> CInt
   -> CInt
   -> CInt
   -> CInt
   -> SDL_CameraSpec)
-> IO SDL_PixelFormat
-> IO
     (SDL_Colorspace -> CInt -> CInt -> CInt -> CInt -> SDL_CameraSpec)
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Proxy "format"
-> Ptr SDL_CameraSpec -> IO (CFieldType SDL_CameraSpec "format")
forall a (field :: Symbol).
(HasCField a field, ReadRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> IO (CFieldType a field)
HasCField.readRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"format") Ptr SDL_CameraSpec
ptr0
        IO
  (SDL_Colorspace -> CInt -> CInt -> CInt -> CInt -> SDL_CameraSpec)
-> IO SDL_Colorspace
-> IO (CInt -> CInt -> CInt -> CInt -> SDL_CameraSpec)
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Proxy "colorspace"
-> Ptr SDL_CameraSpec
-> IO (CFieldType SDL_CameraSpec "colorspace")
forall a (field :: Symbol).
(HasCField a field, ReadRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> IO (CFieldType a field)
HasCField.readRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"colorspace") Ptr SDL_CameraSpec
ptr0
        IO (CInt -> CInt -> CInt -> CInt -> SDL_CameraSpec)
-> IO CInt -> IO (CInt -> CInt -> CInt -> SDL_CameraSpec)
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Proxy "width"
-> Ptr SDL_CameraSpec -> IO (CFieldType SDL_CameraSpec "width")
forall a (field :: Symbol).
(HasCField a field, ReadRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> IO (CFieldType a field)
HasCField.readRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"width") Ptr SDL_CameraSpec
ptr0
        IO (CInt -> CInt -> CInt -> SDL_CameraSpec)
-> IO CInt -> IO (CInt -> CInt -> SDL_CameraSpec)
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Proxy "height"
-> Ptr SDL_CameraSpec -> IO (CFieldType SDL_CameraSpec "height")
forall a (field :: Symbol).
(HasCField a field, ReadRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> IO (CFieldType a field)
HasCField.readRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"height") Ptr SDL_CameraSpec
ptr0
        IO (CInt -> CInt -> SDL_CameraSpec)
-> IO CInt -> IO (CInt -> SDL_CameraSpec)
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Proxy "framerate_numerator"
-> Ptr SDL_CameraSpec
-> IO (CFieldType SDL_CameraSpec "framerate_numerator")
forall a (field :: Symbol).
(HasCField a field, ReadRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> IO (CFieldType a field)
HasCField.readRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"framerate_numerator") Ptr SDL_CameraSpec
ptr0
        IO (CInt -> SDL_CameraSpec) -> IO CInt -> IO SDL_CameraSpec
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Proxy "framerate_denominator"
-> Ptr SDL_CameraSpec
-> IO (CFieldType SDL_CameraSpec "framerate_denominator")
forall a (field :: Symbol).
(HasCField a field, ReadRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> IO (CFieldType a field)
HasCField.readRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"framerate_denominator") Ptr SDL_CameraSpec
ptr0

instance Marshal.WriteRaw SDL_CameraSpec where
  writeRaw :: Ptr SDL_CameraSpec -> SDL_CameraSpec -> IO ()
writeRaw =
    \Ptr SDL_CameraSpec
ptr0 ->
      \SDL_CameraSpec
s1 ->
        case SDL_CameraSpec
s1 of
          SDL_CameraSpec
            SDL_PixelFormat
format2
            SDL_Colorspace
colorspace3
            CInt
width4
            CInt
height5
            CInt
framerate_numerator6
            CInt
framerate_denominator7 ->
              Proxy "format"
-> Ptr SDL_CameraSpec
-> CFieldType SDL_CameraSpec "format"
-> IO ()
forall a (field :: Symbol).
(HasCField a field, WriteRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> CFieldType a field -> IO ()
HasCField.writeRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"format") Ptr SDL_CameraSpec
ptr0 CFieldType SDL_CameraSpec "format"
SDL_PixelFormat
format2
                IO () -> IO () -> IO ()
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Proxy "colorspace"
-> Ptr SDL_CameraSpec
-> CFieldType SDL_CameraSpec "colorspace"
-> IO ()
forall a (field :: Symbol).
(HasCField a field, WriteRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> CFieldType a field -> IO ()
HasCField.writeRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"colorspace") Ptr SDL_CameraSpec
ptr0 CFieldType SDL_CameraSpec "colorspace"
SDL_Colorspace
colorspace3
                IO () -> IO () -> IO ()
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Proxy "width"
-> Ptr SDL_CameraSpec -> CFieldType SDL_CameraSpec "width" -> IO ()
forall a (field :: Symbol).
(HasCField a field, WriteRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> CFieldType a field -> IO ()
HasCField.writeRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"width") Ptr SDL_CameraSpec
ptr0 CInt
CFieldType SDL_CameraSpec "width"
width4
                IO () -> IO () -> IO ()
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Proxy "height"
-> Ptr SDL_CameraSpec
-> CFieldType SDL_CameraSpec "height"
-> IO ()
forall a (field :: Symbol).
(HasCField a field, WriteRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> CFieldType a field -> IO ()
HasCField.writeRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"height") Ptr SDL_CameraSpec
ptr0 CInt
CFieldType SDL_CameraSpec "height"
height5
                IO () -> IO () -> IO ()
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Proxy "framerate_numerator"
-> Ptr SDL_CameraSpec
-> CFieldType SDL_CameraSpec "framerate_numerator"
-> IO ()
forall a (field :: Symbol).
(HasCField a field, WriteRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> CFieldType a field -> IO ()
HasCField.writeRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"framerate_numerator") Ptr SDL_CameraSpec
ptr0 CInt
CFieldType SDL_CameraSpec "framerate_numerator"
framerate_numerator6
                IO () -> IO () -> IO ()
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Proxy "framerate_denominator"
-> Ptr SDL_CameraSpec
-> CFieldType SDL_CameraSpec "framerate_denominator"
-> IO ()
forall a (field :: Symbol).
(HasCField a field, WriteRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> CFieldType a field -> IO ()
HasCField.writeRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"framerate_denominator") Ptr SDL_CameraSpec
ptr0 CInt
CFieldType SDL_CameraSpec "framerate_denominator"
framerate_denominator7

deriving via Marshal.EquivStorable SDL_CameraSpec instance BG.Storable SDL_CameraSpec

deriving via Struct.IsStructViaReadRaw SDL_CameraSpec instance Struct.IsStruct SDL_CameraSpec

-- | Frame format
--
--     [C declaration]: @format@, defined at @SDL3\/SDL_camera.h 117:21@
instance
  (ty ~ SDL3.Sys.Bindgen.Pixels.SDL_PixelFormat)
  => BG.CompatHasField.HasField "format" SDL_CameraSpec ty
  where
  hasField :: SDL_CameraSpec -> (ty -> SDL_CameraSpec, ty)
hasField =
    \SDL_CameraSpec
x0 ->
      ( \ty
y1 ->
          SDL_CameraSpec
            { format :: SDL_PixelFormat
format = ty
SDL_PixelFormat
y1
            , colorspace :: SDL_Colorspace
colorspace = 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 @"colorspace" SDL_CameraSpec
x0
            , width :: CInt
width = 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 @"width" SDL_CameraSpec
x0
            , height :: CInt
height = 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 @"height" SDL_CameraSpec
x0
            , framerate_numerator :: CInt
framerate_numerator = 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 @"framerate_numerator" SDL_CameraSpec
x0
            , framerate_denominator :: CInt
framerate_denominator = 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 @"framerate_denominator" SDL_CameraSpec
x0
            }
      , 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 @"format" SDL_CameraSpec
x0
      )

instance
  (ty ~ SDL3.Sys.Bindgen.Pixels.SDL_PixelFormat)
  => BG.HasField "format" (BG.Ptr SDL_CameraSpec) (BG.Ptr ty)
  where
  getField :: Ptr SDL_CameraSpec -> Ptr ty
getField = Proxy "format"
-> Ptr SDL_CameraSpec -> Ptr (CFieldType SDL_CameraSpec "format")
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 @"format")

instance HasCField.HasCField SDL_CameraSpec "format" where
  type
    CFieldType SDL_CameraSpec "format" =
      SDL3.Sys.Bindgen.Pixels.SDL_PixelFormat

  offset# :: Proxy# SDL_CameraSpec -> Proxy# "format" -> Int
offset# = \Proxy# SDL_CameraSpec
_ -> \Proxy# "format"
_ -> Int
0

-- | Frame colorspace
--
--     [C declaration]: @colorspace@, defined at @SDL3\/SDL_camera.h 118:20@
instance
  (ty ~ SDL3.Sys.Bindgen.Pixels.SDL_Colorspace)
  => BG.CompatHasField.HasField "colorspace" SDL_CameraSpec ty
  where
  hasField :: SDL_CameraSpec -> (ty -> SDL_CameraSpec, ty)
hasField =
    \SDL_CameraSpec
x0 ->
      ( \ty
y1 ->
          SDL_CameraSpec
            { colorspace :: SDL_Colorspace
colorspace = ty
SDL_Colorspace
y1
            , format :: SDL_PixelFormat
format = 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 @"format" SDL_CameraSpec
x0
            , width :: CInt
width = 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 @"width" SDL_CameraSpec
x0
            , height :: CInt
height = 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 @"height" SDL_CameraSpec
x0
            , framerate_numerator :: CInt
framerate_numerator = 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 @"framerate_numerator" SDL_CameraSpec
x0
            , framerate_denominator :: CInt
framerate_denominator = 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 @"framerate_denominator" SDL_CameraSpec
x0
            }
      , 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 @"colorspace" SDL_CameraSpec
x0
      )

instance
  (ty ~ SDL3.Sys.Bindgen.Pixels.SDL_Colorspace)
  => BG.HasField "colorspace" (BG.Ptr SDL_CameraSpec) (BG.Ptr ty)
  where
  getField :: Ptr SDL_CameraSpec -> Ptr ty
getField = Proxy "colorspace"
-> Ptr SDL_CameraSpec
-> Ptr (CFieldType SDL_CameraSpec "colorspace")
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 @"colorspace")

instance HasCField.HasCField SDL_CameraSpec "colorspace" where
  type
    CFieldType SDL_CameraSpec "colorspace" =
      SDL3.Sys.Bindgen.Pixels.SDL_Colorspace

  offset# :: Proxy# SDL_CameraSpec -> Proxy# "colorspace" -> Int
offset# = \Proxy# SDL_CameraSpec
_ -> \Proxy# "colorspace"
_ -> Int
4

-- | Frame width
--
--     [C declaration]: @width@, defined at @SDL3\/SDL_camera.h 119:9@
instance
  (ty ~ BG.CInt)
  => BG.CompatHasField.HasField "width" SDL_CameraSpec ty
  where
  hasField :: SDL_CameraSpec -> (ty -> SDL_CameraSpec, ty)
hasField =
    \SDL_CameraSpec
x0 ->
      ( \ty
y1 ->
          SDL_CameraSpec
            { width :: CInt
width = ty
CInt
y1
            , format :: SDL_PixelFormat
format = 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 @"format" SDL_CameraSpec
x0
            , colorspace :: SDL_Colorspace
colorspace = 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 @"colorspace" SDL_CameraSpec
x0
            , height :: CInt
height = 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 @"height" SDL_CameraSpec
x0
            , framerate_numerator :: CInt
framerate_numerator = 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 @"framerate_numerator" SDL_CameraSpec
x0
            , framerate_denominator :: CInt
framerate_denominator = 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 @"framerate_denominator" SDL_CameraSpec
x0
            }
      , 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 @"width" SDL_CameraSpec
x0
      )

instance
  (ty ~ BG.CInt)
  => BG.HasField "width" (BG.Ptr SDL_CameraSpec) (BG.Ptr ty)
  where
  getField :: Ptr SDL_CameraSpec -> Ptr ty
getField = Proxy "width"
-> Ptr SDL_CameraSpec -> Ptr (CFieldType SDL_CameraSpec "width")
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 @"width")

instance HasCField.HasCField SDL_CameraSpec "width" where
  type CFieldType SDL_CameraSpec "width" = BG.CInt

  offset# :: Proxy# SDL_CameraSpec -> Proxy# "width" -> Int
offset# = \Proxy# SDL_CameraSpec
_ -> \Proxy# "width"
_ -> Int
8

-- | Frame height
--
--     [C declaration]: @height@, defined at @SDL3\/SDL_camera.h 120:9@
instance
  (ty ~ BG.CInt)
  => BG.CompatHasField.HasField "height" SDL_CameraSpec ty
  where
  hasField :: SDL_CameraSpec -> (ty -> SDL_CameraSpec, ty)
hasField =
    \SDL_CameraSpec
x0 ->
      ( \ty
y1 ->
          SDL_CameraSpec
            { height :: CInt
height = ty
CInt
y1
            , format :: SDL_PixelFormat
format = 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 @"format" SDL_CameraSpec
x0
            , colorspace :: SDL_Colorspace
colorspace = 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 @"colorspace" SDL_CameraSpec
x0
            , width :: CInt
width = 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 @"width" SDL_CameraSpec
x0
            , framerate_numerator :: CInt
framerate_numerator = 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 @"framerate_numerator" SDL_CameraSpec
x0
            , framerate_denominator :: CInt
framerate_denominator = 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 @"framerate_denominator" SDL_CameraSpec
x0
            }
      , 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 @"height" SDL_CameraSpec
x0
      )

instance
  (ty ~ BG.CInt)
  => BG.HasField "height" (BG.Ptr SDL_CameraSpec) (BG.Ptr ty)
  where
  getField :: Ptr SDL_CameraSpec -> Ptr ty
getField = Proxy "height"
-> Ptr SDL_CameraSpec -> Ptr (CFieldType SDL_CameraSpec "height")
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 @"height")

instance HasCField.HasCField SDL_CameraSpec "height" where
  type CFieldType SDL_CameraSpec "height" = BG.CInt

  offset# :: Proxy# SDL_CameraSpec -> Proxy# "height" -> Int
offset# = \Proxy# SDL_CameraSpec
_ -> \Proxy# "height"
_ -> Int
12

-- | Frame rate numerator ((num \/ denom) == FPS, (denom \/ num) == duration in seconds)
--
--     [C declaration]: @framerate_numerator@, defined at @SDL3\/SDL_camera.h 121:9@
instance
  (ty ~ BG.CInt)
  => BG.CompatHasField.HasField "framerate_numerator" SDL_CameraSpec ty
  where
  hasField :: SDL_CameraSpec -> (ty -> SDL_CameraSpec, ty)
hasField =
    \SDL_CameraSpec
x0 ->
      ( \ty
y1 ->
          SDL_CameraSpec
            { framerate_numerator :: CInt
framerate_numerator = ty
CInt
y1
            , format :: SDL_PixelFormat
format = 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 @"format" SDL_CameraSpec
x0
            , colorspace :: SDL_Colorspace
colorspace = 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 @"colorspace" SDL_CameraSpec
x0
            , width :: CInt
width = 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 @"width" SDL_CameraSpec
x0
            , height :: CInt
height = 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 @"height" SDL_CameraSpec
x0
            , framerate_denominator :: CInt
framerate_denominator = 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 @"framerate_denominator" SDL_CameraSpec
x0
            }
      , 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 @"framerate_numerator" SDL_CameraSpec
x0
      )

instance
  (ty ~ BG.CInt)
  => BG.HasField "framerate_numerator" (BG.Ptr SDL_CameraSpec) (BG.Ptr ty)
  where
  getField :: Ptr SDL_CameraSpec -> Ptr ty
getField =
    Proxy "framerate_numerator"
-> Ptr SDL_CameraSpec
-> Ptr (CFieldType SDL_CameraSpec "framerate_numerator")
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 @"framerate_numerator")

instance HasCField.HasCField SDL_CameraSpec "framerate_numerator" where
  type
    CFieldType SDL_CameraSpec "framerate_numerator" =
      BG.CInt

  offset# :: Proxy# SDL_CameraSpec -> Proxy# "framerate_numerator" -> Int
offset# = \Proxy# SDL_CameraSpec
_ -> \Proxy# "framerate_numerator"
_ -> Int
16

-- | Frame rate denominator ((num \/ denom) == FPS, (denom \/ num) == duration in seconds)
--
--     [C declaration]: @framerate_denominator@, defined at @SDL3\/SDL_camera.h 122:9@
instance
  (ty ~ BG.CInt)
  => BG.CompatHasField.HasField "framerate_denominator" SDL_CameraSpec ty
  where
  hasField :: SDL_CameraSpec -> (ty -> SDL_CameraSpec, ty)
hasField =
    \SDL_CameraSpec
x0 ->
      ( \ty
y1 ->
          SDL_CameraSpec
            { framerate_denominator :: CInt
framerate_denominator = ty
CInt
y1
            , format :: SDL_PixelFormat
format = 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 @"format" SDL_CameraSpec
x0
            , colorspace :: SDL_Colorspace
colorspace = 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 @"colorspace" SDL_CameraSpec
x0
            , width :: CInt
width = 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 @"width" SDL_CameraSpec
x0
            , height :: CInt
height = 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 @"height" SDL_CameraSpec
x0
            , framerate_numerator :: CInt
framerate_numerator = 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 @"framerate_numerator" SDL_CameraSpec
x0
            }
      , 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 @"framerate_denominator" SDL_CameraSpec
x0
      )

instance
  (ty ~ BG.CInt)
  => BG.HasField "framerate_denominator" (BG.Ptr SDL_CameraSpec) (BG.Ptr ty)
  where
  getField :: Ptr SDL_CameraSpec -> Ptr ty
getField =
    Proxy "framerate_denominator"
-> Ptr SDL_CameraSpec
-> Ptr (CFieldType SDL_CameraSpec "framerate_denominator")
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 @"framerate_denominator")

instance HasCField.HasCField SDL_CameraSpec "framerate_denominator" where
  type
    CFieldType SDL_CameraSpec "framerate_denominator" =
      BG.CInt

  offset# :: Proxy# SDL_CameraSpec -> Proxy# "framerate_denominator" -> Int
offset# = \Proxy# SDL_CameraSpec
_ -> \Proxy# "framerate_denominator"
_ -> Int
20

-- | The position of camera in relation to system device.
--
--     @since 3.2.0
--
--     [See also]: 'sDL_GetCameraPosition'
--
--     [C declaration]: @enum SDL_CameraPosition@, defined at @SDL3\/SDL_camera.h 132:14@
newtype SDL_CameraPosition = SDL_CameraPosition
  { SDL_CameraPosition -> CUInt
unwrap :: BG.CUInt
  }
  deriving stock ((forall x. SDL_CameraPosition -> Rep SDL_CameraPosition x)
-> (forall x. Rep SDL_CameraPosition x -> SDL_CameraPosition)
-> Generic SDL_CameraPosition
forall x. Rep SDL_CameraPosition x -> SDL_CameraPosition
forall x. SDL_CameraPosition -> Rep SDL_CameraPosition x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. SDL_CameraPosition -> Rep SDL_CameraPosition x
from :: forall x. SDL_CameraPosition -> Rep SDL_CameraPosition x
$cto :: forall x. Rep SDL_CameraPosition x -> SDL_CameraPosition
to :: forall x. Rep SDL_CameraPosition x -> SDL_CameraPosition
BG.Generic, SDL_CameraPosition -> SDL_CameraPosition -> Bool
(SDL_CameraPosition -> SDL_CameraPosition -> Bool)
-> (SDL_CameraPosition -> SDL_CameraPosition -> Bool)
-> Eq SDL_CameraPosition
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SDL_CameraPosition -> SDL_CameraPosition -> Bool
== :: SDL_CameraPosition -> SDL_CameraPosition -> Bool
$c/= :: SDL_CameraPosition -> SDL_CameraPosition -> Bool
/= :: SDL_CameraPosition -> SDL_CameraPosition -> Bool
Eq, Eq SDL_CameraPosition
Eq SDL_CameraPosition =>
(SDL_CameraPosition -> SDL_CameraPosition -> Ordering)
-> (SDL_CameraPosition -> SDL_CameraPosition -> Bool)
-> (SDL_CameraPosition -> SDL_CameraPosition -> Bool)
-> (SDL_CameraPosition -> SDL_CameraPosition -> Bool)
-> (SDL_CameraPosition -> SDL_CameraPosition -> Bool)
-> (SDL_CameraPosition -> SDL_CameraPosition -> SDL_CameraPosition)
-> (SDL_CameraPosition -> SDL_CameraPosition -> SDL_CameraPosition)
-> Ord SDL_CameraPosition
SDL_CameraPosition -> SDL_CameraPosition -> Bool
SDL_CameraPosition -> SDL_CameraPosition -> Ordering
SDL_CameraPosition -> SDL_CameraPosition -> SDL_CameraPosition
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_CameraPosition -> SDL_CameraPosition -> Ordering
compare :: SDL_CameraPosition -> SDL_CameraPosition -> Ordering
$c< :: SDL_CameraPosition -> SDL_CameraPosition -> Bool
< :: SDL_CameraPosition -> SDL_CameraPosition -> Bool
$c<= :: SDL_CameraPosition -> SDL_CameraPosition -> Bool
<= :: SDL_CameraPosition -> SDL_CameraPosition -> Bool
$c> :: SDL_CameraPosition -> SDL_CameraPosition -> Bool
> :: SDL_CameraPosition -> SDL_CameraPosition -> Bool
$c>= :: SDL_CameraPosition -> SDL_CameraPosition -> Bool
>= :: SDL_CameraPosition -> SDL_CameraPosition -> Bool
$cmax :: SDL_CameraPosition -> SDL_CameraPosition -> SDL_CameraPosition
max :: SDL_CameraPosition -> SDL_CameraPosition -> SDL_CameraPosition
$cmin :: SDL_CameraPosition -> SDL_CameraPosition -> SDL_CameraPosition
min :: SDL_CameraPosition -> SDL_CameraPosition -> SDL_CameraPosition
Ord)
  deriving newtype (FFIType SDL_CameraPosition -> SDL_CameraPosition
SDL_CameraPosition -> FFIType SDL_CameraPosition
(SDL_CameraPosition -> FFIType SDL_CameraPosition)
-> (FFIType SDL_CameraPosition -> SDL_CameraPosition)
-> HasFFIType SDL_CameraPosition
forall a. (a -> FFIType a) -> (FFIType a -> a) -> HasFFIType a
$ctoFFIType :: SDL_CameraPosition -> FFIType SDL_CameraPosition
toFFIType :: SDL_CameraPosition -> FFIType SDL_CameraPosition
$cfromFFIType :: FFIType SDL_CameraPosition -> SDL_CameraPosition
fromFFIType :: FFIType SDL_CameraPosition -> SDL_CameraPosition
BG.HasFFIType)

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

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

instance Marshal.ReadRaw SDL_CameraPosition where
  readRaw :: Ptr SDL_CameraPosition -> IO SDL_CameraPosition
readRaw =
    \Ptr SDL_CameraPosition
ptr0 ->
      (CUInt -> SDL_CameraPosition) -> IO (CUInt -> SDL_CameraPosition)
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure CUInt -> SDL_CameraPosition
SDL_CameraPosition
        IO (CUInt -> SDL_CameraPosition)
-> IO CUInt -> IO SDL_CameraPosition
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_CameraPosition -> Int -> IO CUInt
forall a b. ReadRaw a => Ptr b -> Int -> IO a
Marshal.readRawByteOff Ptr SDL_CameraPosition
ptr0 (Int
0 :: Int)

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

deriving via Marshal.EquivStorable SDL_CameraPosition instance BG.Storable SDL_CameraPosition

deriving via BG.CUInt instance BG.Prim SDL_CameraPosition

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

  toCEnum :: CEnumZ SDL_CameraPosition -> SDL_CameraPosition
toCEnum = CUInt -> SDL_CameraPosition
CEnumZ SDL_CameraPosition -> SDL_CameraPosition
SDL_CameraPosition

  fromCEnum :: SDL_CameraPosition -> CEnumZ SDL_CameraPosition
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_CameraPosition -> DeclaredValues SDL_CameraPosition
declaredValues =
    \proxy SDL_CameraPosition
_ ->
      [(CEnumZ SDL_CameraPosition, NonEmpty String)]
-> DeclaredValues SDL_CameraPosition
forall a.
Ord (CEnumZ a) =>
[(CEnumZ a, NonEmpty String)] -> DeclaredValues a
CEnum.declaredValuesFromList
        [ (CUInt
CEnumZ SDL_CameraPosition
0, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_CAMERA_POSITION_UNKNOWN")
        , (CUInt
CEnumZ SDL_CameraPosition
1, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_CAMERA_POSITION_FRONT_FACING")
        , (CUInt
CEnumZ SDL_CameraPosition
2, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_CAMERA_POSITION_BACK_FACING")
        ]

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

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

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

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

instance CEnum.SequentialCEnum SDL_CameraPosition where
  minDeclaredValue :: SDL_CameraPosition
minDeclaredValue = SDL_CameraPosition
SDL_CAMERA_POSITION_UNKNOWN

  maxDeclaredValue :: SDL_CameraPosition
maxDeclaredValue = SDL_CameraPosition
SDL_CAMERA_POSITION_BACK_FACING

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

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

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

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

instance
  (ty ~ BG.CUInt)
  => BG.CompatHasField.HasField "unwrap" SDL_CameraPosition ty
  where
  hasField :: SDL_CameraPosition -> (ty -> SDL_CameraPosition, ty)
hasField =
    \SDL_CameraPosition
x0 ->
      ( \ty
y1 ->
          SDL_CameraPosition{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_CameraPosition
x0
      )

instance
  (ty ~ BG.CUInt)
  => BG.HasField "unwrap" (BG.Ptr SDL_CameraPosition) (BG.Ptr ty)
  where
  getField :: Ptr SDL_CameraPosition -> Ptr ty
getField = Proxy "unwrap"
-> Ptr SDL_CameraPosition
-> Ptr (CFieldType SDL_CameraPosition "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_CameraPosition "unwrap" where
  type
    CFieldType SDL_CameraPosition "unwrap" =
      BG.CUInt

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

-- | [C declaration]: @SDL_CAMERA_POSITION_UNKNOWN@, defined at @SDL3\/SDL_camera.h 134:5@
pattern SDL_CAMERA_POSITION_UNKNOWN :: SDL_CameraPosition
pattern $mSDL_CAMERA_POSITION_UNKNOWN :: forall {r}. SDL_CameraPosition -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_CAMERA_POSITION_UNKNOWN :: SDL_CameraPosition
SDL_CAMERA_POSITION_UNKNOWN = SDL_CameraPosition 0

-- | [C declaration]: @SDL_CAMERA_POSITION_FRONT_FACING@, defined at @SDL3\/SDL_camera.h 135:5@
pattern SDL_CAMERA_POSITION_FRONT_FACING :: SDL_CameraPosition
pattern $mSDL_CAMERA_POSITION_FRONT_FACING :: forall {r}. SDL_CameraPosition -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_CAMERA_POSITION_FRONT_FACING :: SDL_CameraPosition
SDL_CAMERA_POSITION_FRONT_FACING = SDL_CameraPosition 1

-- | [C declaration]: @SDL_CAMERA_POSITION_BACK_FACING@, defined at @SDL3\/SDL_camera.h 136:5@
pattern SDL_CAMERA_POSITION_BACK_FACING :: SDL_CameraPosition
pattern $mSDL_CAMERA_POSITION_BACK_FACING :: forall {r}. SDL_CameraPosition -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_CAMERA_POSITION_BACK_FACING :: SDL_CameraPosition
SDL_CAMERA_POSITION_BACK_FACING = SDL_CameraPosition 2

-- | The current state of a request for camera access.
--
--     @since 3.4.0
--
--     [See also]: 'sDL_GetCameraPermissionState'
--
--     [C declaration]: @enum SDL_CameraPermissionState@, defined at @SDL3\/SDL_camera.h 146:14@
newtype SDL_CameraPermissionState = SDL_CameraPermissionState
  { SDL_CameraPermissionState -> CInt
unwrap :: BG.CInt
  }
  deriving stock ((forall x.
 SDL_CameraPermissionState -> Rep SDL_CameraPermissionState x)
-> (forall x.
    Rep SDL_CameraPermissionState x -> SDL_CameraPermissionState)
-> Generic SDL_CameraPermissionState
forall x.
Rep SDL_CameraPermissionState x -> SDL_CameraPermissionState
forall x.
SDL_CameraPermissionState -> Rep SDL_CameraPermissionState x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x.
SDL_CameraPermissionState -> Rep SDL_CameraPermissionState x
from :: forall x.
SDL_CameraPermissionState -> Rep SDL_CameraPermissionState x
$cto :: forall x.
Rep SDL_CameraPermissionState x -> SDL_CameraPermissionState
to :: forall x.
Rep SDL_CameraPermissionState x -> SDL_CameraPermissionState
BG.Generic, SDL_CameraPermissionState -> SDL_CameraPermissionState -> Bool
(SDL_CameraPermissionState -> SDL_CameraPermissionState -> Bool)
-> (SDL_CameraPermissionState -> SDL_CameraPermissionState -> Bool)
-> Eq SDL_CameraPermissionState
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SDL_CameraPermissionState -> SDL_CameraPermissionState -> Bool
== :: SDL_CameraPermissionState -> SDL_CameraPermissionState -> Bool
$c/= :: SDL_CameraPermissionState -> SDL_CameraPermissionState -> Bool
/= :: SDL_CameraPermissionState -> SDL_CameraPermissionState -> Bool
Eq, Eq SDL_CameraPermissionState
Eq SDL_CameraPermissionState =>
(SDL_CameraPermissionState
 -> SDL_CameraPermissionState -> Ordering)
-> (SDL_CameraPermissionState -> SDL_CameraPermissionState -> Bool)
-> (SDL_CameraPermissionState -> SDL_CameraPermissionState -> Bool)
-> (SDL_CameraPermissionState -> SDL_CameraPermissionState -> Bool)
-> (SDL_CameraPermissionState -> SDL_CameraPermissionState -> Bool)
-> (SDL_CameraPermissionState
    -> SDL_CameraPermissionState -> SDL_CameraPermissionState)
-> (SDL_CameraPermissionState
    -> SDL_CameraPermissionState -> SDL_CameraPermissionState)
-> Ord SDL_CameraPermissionState
SDL_CameraPermissionState -> SDL_CameraPermissionState -> Bool
SDL_CameraPermissionState -> SDL_CameraPermissionState -> Ordering
SDL_CameraPermissionState
-> SDL_CameraPermissionState -> SDL_CameraPermissionState
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_CameraPermissionState -> SDL_CameraPermissionState -> Ordering
compare :: SDL_CameraPermissionState -> SDL_CameraPermissionState -> Ordering
$c< :: SDL_CameraPermissionState -> SDL_CameraPermissionState -> Bool
< :: SDL_CameraPermissionState -> SDL_CameraPermissionState -> Bool
$c<= :: SDL_CameraPermissionState -> SDL_CameraPermissionState -> Bool
<= :: SDL_CameraPermissionState -> SDL_CameraPermissionState -> Bool
$c> :: SDL_CameraPermissionState -> SDL_CameraPermissionState -> Bool
> :: SDL_CameraPermissionState -> SDL_CameraPermissionState -> Bool
$c>= :: SDL_CameraPermissionState -> SDL_CameraPermissionState -> Bool
>= :: SDL_CameraPermissionState -> SDL_CameraPermissionState -> Bool
$cmax :: SDL_CameraPermissionState
-> SDL_CameraPermissionState -> SDL_CameraPermissionState
max :: SDL_CameraPermissionState
-> SDL_CameraPermissionState -> SDL_CameraPermissionState
$cmin :: SDL_CameraPermissionState
-> SDL_CameraPermissionState -> SDL_CameraPermissionState
min :: SDL_CameraPermissionState
-> SDL_CameraPermissionState -> SDL_CameraPermissionState
Ord)
  deriving newtype (FFIType SDL_CameraPermissionState -> SDL_CameraPermissionState
SDL_CameraPermissionState -> FFIType SDL_CameraPermissionState
(SDL_CameraPermissionState -> FFIType SDL_CameraPermissionState)
-> (FFIType SDL_CameraPermissionState -> SDL_CameraPermissionState)
-> HasFFIType SDL_CameraPermissionState
forall a. (a -> FFIType a) -> (FFIType a -> a) -> HasFFIType a
$ctoFFIType :: SDL_CameraPermissionState -> FFIType SDL_CameraPermissionState
toFFIType :: SDL_CameraPermissionState -> FFIType SDL_CameraPermissionState
$cfromFFIType :: FFIType SDL_CameraPermissionState -> SDL_CameraPermissionState
fromFFIType :: FFIType SDL_CameraPermissionState -> SDL_CameraPermissionState
BG.HasFFIType)

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

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

instance Marshal.ReadRaw SDL_CameraPermissionState where
  readRaw :: Ptr SDL_CameraPermissionState -> IO SDL_CameraPermissionState
readRaw =
    \Ptr SDL_CameraPermissionState
ptr0 ->
      (CInt -> SDL_CameraPermissionState)
-> IO (CInt -> SDL_CameraPermissionState)
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure CInt -> SDL_CameraPermissionState
SDL_CameraPermissionState
        IO (CInt -> SDL_CameraPermissionState)
-> IO CInt -> IO SDL_CameraPermissionState
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_CameraPermissionState -> Int -> IO CInt
forall a b. ReadRaw a => Ptr b -> Int -> IO a
Marshal.readRawByteOff Ptr SDL_CameraPermissionState
ptr0 (Int
0 :: Int)

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

deriving via
  Marshal.EquivStorable SDL_CameraPermissionState
  instance
    BG.Storable SDL_CameraPermissionState

deriving via BG.CInt instance BG.Prim SDL_CameraPermissionState

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

  toCEnum :: CEnumZ SDL_CameraPermissionState -> SDL_CameraPermissionState
toCEnum = CInt -> SDL_CameraPermissionState
CEnumZ SDL_CameraPermissionState -> SDL_CameraPermissionState
SDL_CameraPermissionState

  fromCEnum :: SDL_CameraPermissionState -> CEnumZ SDL_CameraPermissionState
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_CameraPermissionState
-> DeclaredValues SDL_CameraPermissionState
declaredValues =
    \proxy SDL_CameraPermissionState
_ ->
      [(CEnumZ SDL_CameraPermissionState, NonEmpty String)]
-> DeclaredValues SDL_CameraPermissionState
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_CAMERA_PERMISSION_STATE_DENIED")
        , (CInt
CEnumZ SDL_CameraPermissionState
0, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_CAMERA_PERMISSION_STATE_PENDING")
        , (CInt
CEnumZ SDL_CameraPermissionState
1, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_CAMERA_PERMISSION_STATE_APPROVED")
        ]

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

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

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

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

instance CEnum.SequentialCEnum SDL_CameraPermissionState where
  minDeclaredValue :: SDL_CameraPermissionState
minDeclaredValue = SDL_CameraPermissionState
SDL_CAMERA_PERMISSION_STATE_DENIED

  maxDeclaredValue :: SDL_CameraPermissionState
maxDeclaredValue =
    SDL_CameraPermissionState
SDL_CAMERA_PERMISSION_STATE_APPROVED

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

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

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

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

instance
  (ty ~ BG.CInt)
  => BG.CompatHasField.HasField "unwrap" SDL_CameraPermissionState ty
  where
  hasField :: SDL_CameraPermissionState -> (ty -> SDL_CameraPermissionState, ty)
hasField =
    \SDL_CameraPermissionState
x0 ->
      ( \ty
y1 ->
          SDL_CameraPermissionState{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_CameraPermissionState
x0
      )

instance
  (ty ~ BG.CInt)
  => BG.HasField "unwrap" (BG.Ptr SDL_CameraPermissionState) (BG.Ptr ty)
  where
  getField :: Ptr SDL_CameraPermissionState -> Ptr ty
getField = Proxy "unwrap"
-> Ptr SDL_CameraPermissionState
-> Ptr (CFieldType SDL_CameraPermissionState "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_CameraPermissionState "unwrap" where
  type
    CFieldType SDL_CameraPermissionState "unwrap" =
      BG.CInt

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

-- | [C declaration]: @SDL_CAMERA_PERMISSION_STATE_DENIED@, defined at @SDL3\/SDL_camera.h 148:5@
pattern SDL_CAMERA_PERMISSION_STATE_DENIED :: SDL_CameraPermissionState
pattern $mSDL_CAMERA_PERMISSION_STATE_DENIED :: forall {r}.
SDL_CameraPermissionState -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_CAMERA_PERMISSION_STATE_DENIED :: SDL_CameraPermissionState
SDL_CAMERA_PERMISSION_STATE_DENIED = SDL_CameraPermissionState (-1)

-- | [C declaration]: @SDL_CAMERA_PERMISSION_STATE_PENDING@, defined at @SDL3\/SDL_camera.h 149:5@
pattern SDL_CAMERA_PERMISSION_STATE_PENDING :: SDL_CameraPermissionState
pattern $mSDL_CAMERA_PERMISSION_STATE_PENDING :: forall {r}.
SDL_CameraPermissionState -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_CAMERA_PERMISSION_STATE_PENDING :: SDL_CameraPermissionState
SDL_CAMERA_PERMISSION_STATE_PENDING = SDL_CameraPermissionState 0

-- | [C declaration]: @SDL_CAMERA_PERMISSION_STATE_APPROVED@, defined at @SDL3\/SDL_camera.h 150:5@
pattern SDL_CAMERA_PERMISSION_STATE_APPROVED :: SDL_CameraPermissionState
pattern $mSDL_CAMERA_PERMISSION_STATE_APPROVED :: forall {r}.
SDL_CameraPermissionState -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_CAMERA_PERMISSION_STATE_APPROVED :: SDL_CameraPermissionState
SDL_CAMERA_PERMISSION_STATE_APPROVED = SDL_CameraPermissionState 1