{-# 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 #-}

-- | Blend modes decide how two colors will mix together. There are both standard modes for basic needs and a means to create custom modes, dictating what sort of math to do on what color components. A set of blend modes used in drawing operations.
--
--     These predefined blend modes are supported everywhere.
--
--     Additional values may be obtained from SDL_ComposeCustomBlendMode.
--
--     @since 3.2.0
--
--     [See also]: 'sDL_ComposeCustomBlendMode'
module SDL3.Sys.Bindgen.Blendmode (
  SDL3.Sys.Bindgen.Blendmode.SDL_BlendMode (..),
  SDL3.Sys.Bindgen.Blendmode.sDL_BLENDMODE_NONE,
  SDL3.Sys.Bindgen.Blendmode.sDL_BLENDMODE_BLEND,
  SDL3.Sys.Bindgen.Blendmode.sDL_BLENDMODE_BLEND_PREMULTIPLIED,
  SDL3.Sys.Bindgen.Blendmode.sDL_BLENDMODE_ADD,
  SDL3.Sys.Bindgen.Blendmode.sDL_BLENDMODE_ADD_PREMULTIPLIED,
  SDL3.Sys.Bindgen.Blendmode.sDL_BLENDMODE_MOD,
  SDL3.Sys.Bindgen.Blendmode.sDL_BLENDMODE_MUL,
  SDL3.Sys.Bindgen.Blendmode.sDL_BLENDMODE_INVALID,
  SDL3.Sys.Bindgen.Blendmode.SDL_BlendOperation (..),
  pattern SDL3.Sys.Bindgen.Blendmode.SDL_BLENDOPERATION_ADD,
  pattern SDL3.Sys.Bindgen.Blendmode.SDL_BLENDOPERATION_SUBTRACT,
  pattern SDL3.Sys.Bindgen.Blendmode.SDL_BLENDOPERATION_REV_SUBTRACT,
  pattern SDL3.Sys.Bindgen.Blendmode.SDL_BLENDOPERATION_MINIMUM,
  pattern SDL3.Sys.Bindgen.Blendmode.SDL_BLENDOPERATION_MAXIMUM,
  SDL3.Sys.Bindgen.Blendmode.SDL_BlendFactor (..),
  pattern SDL3.Sys.Bindgen.Blendmode.SDL_BLENDFACTOR_ZERO,
  pattern SDL3.Sys.Bindgen.Blendmode.SDL_BLENDFACTOR_ONE,
  pattern SDL3.Sys.Bindgen.Blendmode.SDL_BLENDFACTOR_SRC_COLOR,
  pattern SDL3.Sys.Bindgen.Blendmode.SDL_BLENDFACTOR_ONE_MINUS_SRC_COLOR,
  pattern SDL3.Sys.Bindgen.Blendmode.SDL_BLENDFACTOR_SRC_ALPHA,
  pattern SDL3.Sys.Bindgen.Blendmode.SDL_BLENDFACTOR_ONE_MINUS_SRC_ALPHA,
  pattern SDL3.Sys.Bindgen.Blendmode.SDL_BLENDFACTOR_DST_COLOR,
  pattern SDL3.Sys.Bindgen.Blendmode.SDL_BLENDFACTOR_ONE_MINUS_DST_COLOR,
  pattern SDL3.Sys.Bindgen.Blendmode.SDL_BLENDFACTOR_DST_ALPHA,
  pattern SDL3.Sys.Bindgen.Blendmode.SDL_BLENDFACTOR_ONE_MINUS_DST_ALPHA,
)
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.Support qualified as BG
import HsBindgen.Runtime.Support.CompatHasField qualified as BG.CompatHasField
import SDL3.Sys.Bindgen.Stdinc qualified

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

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

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

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

-- | no blending: dstRGBA = srcRGBA
--
--     [C declaration]: @macro SDL_BLENDMODE_NONE@, defined at @SDL3\/SDL_blendmode.h 54:9@
sDL_BLENDMODE_NONE :: BG.CUInt
sDL_BLENDMODE_NONE :: CUInt
sDL_BLENDMODE_NONE = (CUInt
0 :: BG.CUInt)

-- | alpha blending: dstRGB = (srcRGB * srcA) + (dstRGB * (1-srcA)), dstA = srcA + (dstA * (1-srcA))
--
--     [C declaration]: @macro SDL_BLENDMODE_BLEND@, defined at @SDL3\/SDL_blendmode.h 55:9@
sDL_BLENDMODE_BLEND :: BG.CUInt
sDL_BLENDMODE_BLEND :: CUInt
sDL_BLENDMODE_BLEND = (CUInt
1 :: BG.CUInt)

-- | pre-multiplied alpha blending: dstRGBA = srcRGBA + (dstRGBA * (1-srcA))
--
--     [C declaration]: @macro SDL_BLENDMODE_BLEND_PREMULTIPLIED@, defined at @SDL3\/SDL_blendmode.h 56:9@
sDL_BLENDMODE_BLEND_PREMULTIPLIED :: BG.CUInt
sDL_BLENDMODE_BLEND_PREMULTIPLIED :: CUInt
sDL_BLENDMODE_BLEND_PREMULTIPLIED = (CUInt
16 :: BG.CUInt)

-- | additive blending: dstRGB = (srcRGB * srcA) + dstRGB, dstA = dstA
--
--     [C declaration]: @macro SDL_BLENDMODE_ADD@, defined at @SDL3\/SDL_blendmode.h 57:9@
sDL_BLENDMODE_ADD :: BG.CUInt
sDL_BLENDMODE_ADD :: CUInt
sDL_BLENDMODE_ADD = (CUInt
2 :: BG.CUInt)

-- | pre-multiplied additive blending: dstRGB = srcRGB + dstRGB, dstA = dstA
--
--     [C declaration]: @macro SDL_BLENDMODE_ADD_PREMULTIPLIED@, defined at @SDL3\/SDL_blendmode.h 58:9@
sDL_BLENDMODE_ADD_PREMULTIPLIED :: BG.CUInt
sDL_BLENDMODE_ADD_PREMULTIPLIED :: CUInt
sDL_BLENDMODE_ADD_PREMULTIPLIED = (CUInt
32 :: BG.CUInt)

-- | color modulate: dstRGB = srcRGB * dstRGB, dstA = dstA
--
--     [C declaration]: @macro SDL_BLENDMODE_MOD@, defined at @SDL3\/SDL_blendmode.h 59:9@
sDL_BLENDMODE_MOD :: BG.CUInt
sDL_BLENDMODE_MOD :: CUInt
sDL_BLENDMODE_MOD = (CUInt
4 :: BG.CUInt)

-- | color multiply: dstRGB = (srcRGB * dstRGB) + (dstRGB * (1-srcA)), dstA = dstA
--
--     [C declaration]: @macro SDL_BLENDMODE_MUL@, defined at @SDL3\/SDL_blendmode.h 60:9@
sDL_BLENDMODE_MUL :: BG.CUInt
sDL_BLENDMODE_MUL :: CUInt
sDL_BLENDMODE_MUL = (CUInt
8 :: BG.CUInt)

-- | [C declaration]: @macro SDL_BLENDMODE_INVALID@, defined at @SDL3\/SDL_blendmode.h 61:9@
sDL_BLENDMODE_INVALID :: BG.CUInt
sDL_BLENDMODE_INVALID :: CUInt
sDL_BLENDMODE_INVALID = (CUInt
2147483647 :: BG.CUInt)

-- | The blend operation used when combining source and destination pixel components.
--
--     @since 3.2.0
--
--     [C declaration]: @enum SDL_BlendOperation@, defined at @SDL3\/SDL_blendmode.h 69:14@
newtype SDL_BlendOperation = SDL_BlendOperation
  { SDL_BlendOperation -> CUInt
unwrap :: BG.CUInt
  }
  deriving stock ((forall x. SDL_BlendOperation -> Rep SDL_BlendOperation x)
-> (forall x. Rep SDL_BlendOperation x -> SDL_BlendOperation)
-> Generic SDL_BlendOperation
forall x. Rep SDL_BlendOperation x -> SDL_BlendOperation
forall x. SDL_BlendOperation -> Rep SDL_BlendOperation x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. SDL_BlendOperation -> Rep SDL_BlendOperation x
from :: forall x. SDL_BlendOperation -> Rep SDL_BlendOperation x
$cto :: forall x. Rep SDL_BlendOperation x -> SDL_BlendOperation
to :: forall x. Rep SDL_BlendOperation x -> SDL_BlendOperation
BG.Generic, SDL_BlendOperation -> SDL_BlendOperation -> Bool
(SDL_BlendOperation -> SDL_BlendOperation -> Bool)
-> (SDL_BlendOperation -> SDL_BlendOperation -> Bool)
-> Eq SDL_BlendOperation
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SDL_BlendOperation -> SDL_BlendOperation -> Bool
== :: SDL_BlendOperation -> SDL_BlendOperation -> Bool
$c/= :: SDL_BlendOperation -> SDL_BlendOperation -> Bool
/= :: SDL_BlendOperation -> SDL_BlendOperation -> Bool
Eq, Eq SDL_BlendOperation
Eq SDL_BlendOperation =>
(SDL_BlendOperation -> SDL_BlendOperation -> Ordering)
-> (SDL_BlendOperation -> SDL_BlendOperation -> Bool)
-> (SDL_BlendOperation -> SDL_BlendOperation -> Bool)
-> (SDL_BlendOperation -> SDL_BlendOperation -> Bool)
-> (SDL_BlendOperation -> SDL_BlendOperation -> Bool)
-> (SDL_BlendOperation -> SDL_BlendOperation -> SDL_BlendOperation)
-> (SDL_BlendOperation -> SDL_BlendOperation -> SDL_BlendOperation)
-> Ord SDL_BlendOperation
SDL_BlendOperation -> SDL_BlendOperation -> Bool
SDL_BlendOperation -> SDL_BlendOperation -> Ordering
SDL_BlendOperation -> SDL_BlendOperation -> SDL_BlendOperation
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_BlendOperation -> SDL_BlendOperation -> Ordering
compare :: SDL_BlendOperation -> SDL_BlendOperation -> Ordering
$c< :: SDL_BlendOperation -> SDL_BlendOperation -> Bool
< :: SDL_BlendOperation -> SDL_BlendOperation -> Bool
$c<= :: SDL_BlendOperation -> SDL_BlendOperation -> Bool
<= :: SDL_BlendOperation -> SDL_BlendOperation -> Bool
$c> :: SDL_BlendOperation -> SDL_BlendOperation -> Bool
> :: SDL_BlendOperation -> SDL_BlendOperation -> Bool
$c>= :: SDL_BlendOperation -> SDL_BlendOperation -> Bool
>= :: SDL_BlendOperation -> SDL_BlendOperation -> Bool
$cmax :: SDL_BlendOperation -> SDL_BlendOperation -> SDL_BlendOperation
max :: SDL_BlendOperation -> SDL_BlendOperation -> SDL_BlendOperation
$cmin :: SDL_BlendOperation -> SDL_BlendOperation -> SDL_BlendOperation
min :: SDL_BlendOperation -> SDL_BlendOperation -> SDL_BlendOperation
Ord)
  deriving newtype (FFIType SDL_BlendOperation -> SDL_BlendOperation
SDL_BlendOperation -> FFIType SDL_BlendOperation
(SDL_BlendOperation -> FFIType SDL_BlendOperation)
-> (FFIType SDL_BlendOperation -> SDL_BlendOperation)
-> HasFFIType SDL_BlendOperation
forall a. (a -> FFIType a) -> (FFIType a -> a) -> HasFFIType a
$ctoFFIType :: SDL_BlendOperation -> FFIType SDL_BlendOperation
toFFIType :: SDL_BlendOperation -> FFIType SDL_BlendOperation
$cfromFFIType :: FFIType SDL_BlendOperation -> SDL_BlendOperation
fromFFIType :: FFIType SDL_BlendOperation -> SDL_BlendOperation
BG.HasFFIType)

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

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

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

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

deriving via Marshal.EquivStorable SDL_BlendOperation instance BG.Storable SDL_BlendOperation

deriving via BG.CUInt instance BG.Prim SDL_BlendOperation

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

  toCEnum :: CEnumZ SDL_BlendOperation -> SDL_BlendOperation
toCEnum = CUInt -> SDL_BlendOperation
CEnumZ SDL_BlendOperation -> SDL_BlendOperation
SDL_BlendOperation

  fromCEnum :: SDL_BlendOperation -> CEnumZ SDL_BlendOperation
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_BlendOperation -> DeclaredValues SDL_BlendOperation
declaredValues =
    \proxy SDL_BlendOperation
_ ->
      [(CEnumZ SDL_BlendOperation, NonEmpty String)]
-> DeclaredValues SDL_BlendOperation
forall a.
Ord (CEnumZ a) =>
[(CEnumZ a, NonEmpty String)] -> DeclaredValues a
CEnum.declaredValuesFromList
        [ (CUInt
CEnumZ SDL_BlendOperation
1, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_BLENDOPERATION_ADD")
        , (CUInt
CEnumZ SDL_BlendOperation
2, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_BLENDOPERATION_SUBTRACT")
        , (CUInt
CEnumZ SDL_BlendOperation
3, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_BLENDOPERATION_REV_SUBTRACT")
        , (CUInt
CEnumZ SDL_BlendOperation
4, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_BLENDOPERATION_MINIMUM")
        , (CUInt
CEnumZ SDL_BlendOperation
5, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_BLENDOPERATION_MAXIMUM")
        ]

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

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

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

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

instance CEnum.SequentialCEnum SDL_BlendOperation where
  minDeclaredValue :: SDL_BlendOperation
minDeclaredValue = SDL_BlendOperation
SDL_BLENDOPERATION_ADD

  maxDeclaredValue :: SDL_BlendOperation
maxDeclaredValue = SDL_BlendOperation
SDL_BLENDOPERATION_MAXIMUM

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

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

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

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

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

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

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

-- | dst + src: supported by all renderers
--
--     [C declaration]: @SDL_BLENDOPERATION_ADD@, defined at @SDL3\/SDL_blendmode.h 71:5@
pattern SDL_BLENDOPERATION_ADD :: SDL_BlendOperation
pattern $mSDL_BLENDOPERATION_ADD :: forall {r}. SDL_BlendOperation -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_BLENDOPERATION_ADD :: SDL_BlendOperation
SDL_BLENDOPERATION_ADD = SDL_BlendOperation 1

-- | src - dst : supported by D3D, OpenGL, OpenGLES, and Vulkan
--
--     [C declaration]: @SDL_BLENDOPERATION_SUBTRACT@, defined at @SDL3\/SDL_blendmode.h 72:5@
pattern SDL_BLENDOPERATION_SUBTRACT :: SDL_BlendOperation
pattern $mSDL_BLENDOPERATION_SUBTRACT :: forall {r}. SDL_BlendOperation -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_BLENDOPERATION_SUBTRACT :: SDL_BlendOperation
SDL_BLENDOPERATION_SUBTRACT = SDL_BlendOperation 2

-- | dst - src : supported by D3D, OpenGL, OpenGLES, and Vulkan
--
--     [C declaration]: @SDL_BLENDOPERATION_REV_SUBTRACT@, defined at @SDL3\/SDL_blendmode.h 73:5@
pattern SDL_BLENDOPERATION_REV_SUBTRACT :: SDL_BlendOperation
pattern $mSDL_BLENDOPERATION_REV_SUBTRACT :: forall {r}. SDL_BlendOperation -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_BLENDOPERATION_REV_SUBTRACT :: SDL_BlendOperation
SDL_BLENDOPERATION_REV_SUBTRACT = SDL_BlendOperation 3

-- | min(dst, src) : supported by D3D, OpenGL, OpenGLES, and Vulkan
--
--     [C declaration]: @SDL_BLENDOPERATION_MINIMUM@, defined at @SDL3\/SDL_blendmode.h 74:5@
pattern SDL_BLENDOPERATION_MINIMUM :: SDL_BlendOperation
pattern $mSDL_BLENDOPERATION_MINIMUM :: forall {r}. SDL_BlendOperation -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_BLENDOPERATION_MINIMUM :: SDL_BlendOperation
SDL_BLENDOPERATION_MINIMUM = SDL_BlendOperation 4

-- | max(dst, src) : supported by D3D, OpenGL, OpenGLES, and Vulkan
--
--     [C declaration]: @SDL_BLENDOPERATION_MAXIMUM@, defined at @SDL3\/SDL_blendmode.h 75:5@
pattern SDL_BLENDOPERATION_MAXIMUM :: SDL_BlendOperation
pattern $mSDL_BLENDOPERATION_MAXIMUM :: forall {r}. SDL_BlendOperation -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_BLENDOPERATION_MAXIMUM :: SDL_BlendOperation
SDL_BLENDOPERATION_MAXIMUM = SDL_BlendOperation 5

-- | The normalized factor used to multiply pixel components.
--
--     The blend factors are multiplied with the pixels from a drawing operation (src) and the pixels from the render target (dst) before the blend operation. The comma-separated factors listed above are always applied in the component order red, green, blue, and alpha.
--
--     @since 3.2.0
--
--     [C declaration]: @enum SDL_BlendFactor@, defined at @SDL3\/SDL_blendmode.h 88:14@
newtype SDL_BlendFactor = SDL_BlendFactor
  { SDL_BlendFactor -> CUInt
unwrap :: BG.CUInt
  }
  deriving stock ((forall x. SDL_BlendFactor -> Rep SDL_BlendFactor x)
-> (forall x. Rep SDL_BlendFactor x -> SDL_BlendFactor)
-> Generic SDL_BlendFactor
forall x. Rep SDL_BlendFactor x -> SDL_BlendFactor
forall x. SDL_BlendFactor -> Rep SDL_BlendFactor x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. SDL_BlendFactor -> Rep SDL_BlendFactor x
from :: forall x. SDL_BlendFactor -> Rep SDL_BlendFactor x
$cto :: forall x. Rep SDL_BlendFactor x -> SDL_BlendFactor
to :: forall x. Rep SDL_BlendFactor x -> SDL_BlendFactor
BG.Generic, SDL_BlendFactor -> SDL_BlendFactor -> Bool
(SDL_BlendFactor -> SDL_BlendFactor -> Bool)
-> (SDL_BlendFactor -> SDL_BlendFactor -> Bool)
-> Eq SDL_BlendFactor
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SDL_BlendFactor -> SDL_BlendFactor -> Bool
== :: SDL_BlendFactor -> SDL_BlendFactor -> Bool
$c/= :: SDL_BlendFactor -> SDL_BlendFactor -> Bool
/= :: SDL_BlendFactor -> SDL_BlendFactor -> Bool
Eq, Eq SDL_BlendFactor
Eq SDL_BlendFactor =>
(SDL_BlendFactor -> SDL_BlendFactor -> Ordering)
-> (SDL_BlendFactor -> SDL_BlendFactor -> Bool)
-> (SDL_BlendFactor -> SDL_BlendFactor -> Bool)
-> (SDL_BlendFactor -> SDL_BlendFactor -> Bool)
-> (SDL_BlendFactor -> SDL_BlendFactor -> Bool)
-> (SDL_BlendFactor -> SDL_BlendFactor -> SDL_BlendFactor)
-> (SDL_BlendFactor -> SDL_BlendFactor -> SDL_BlendFactor)
-> Ord SDL_BlendFactor
SDL_BlendFactor -> SDL_BlendFactor -> Bool
SDL_BlendFactor -> SDL_BlendFactor -> Ordering
SDL_BlendFactor -> SDL_BlendFactor -> SDL_BlendFactor
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_BlendFactor -> SDL_BlendFactor -> Ordering
compare :: SDL_BlendFactor -> SDL_BlendFactor -> Ordering
$c< :: SDL_BlendFactor -> SDL_BlendFactor -> Bool
< :: SDL_BlendFactor -> SDL_BlendFactor -> Bool
$c<= :: SDL_BlendFactor -> SDL_BlendFactor -> Bool
<= :: SDL_BlendFactor -> SDL_BlendFactor -> Bool
$c> :: SDL_BlendFactor -> SDL_BlendFactor -> Bool
> :: SDL_BlendFactor -> SDL_BlendFactor -> Bool
$c>= :: SDL_BlendFactor -> SDL_BlendFactor -> Bool
>= :: SDL_BlendFactor -> SDL_BlendFactor -> Bool
$cmax :: SDL_BlendFactor -> SDL_BlendFactor -> SDL_BlendFactor
max :: SDL_BlendFactor -> SDL_BlendFactor -> SDL_BlendFactor
$cmin :: SDL_BlendFactor -> SDL_BlendFactor -> SDL_BlendFactor
min :: SDL_BlendFactor -> SDL_BlendFactor -> SDL_BlendFactor
Ord)
  deriving newtype (FFIType SDL_BlendFactor -> SDL_BlendFactor
SDL_BlendFactor -> FFIType SDL_BlendFactor
(SDL_BlendFactor -> FFIType SDL_BlendFactor)
-> (FFIType SDL_BlendFactor -> SDL_BlendFactor)
-> HasFFIType SDL_BlendFactor
forall a. (a -> FFIType a) -> (FFIType a -> a) -> HasFFIType a
$ctoFFIType :: SDL_BlendFactor -> FFIType SDL_BlendFactor
toFFIType :: SDL_BlendFactor -> FFIType SDL_BlendFactor
$cfromFFIType :: FFIType SDL_BlendFactor -> SDL_BlendFactor
fromFFIType :: FFIType SDL_BlendFactor -> SDL_BlendFactor
BG.HasFFIType)

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

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

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

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

deriving via Marshal.EquivStorable SDL_BlendFactor instance BG.Storable SDL_BlendFactor

deriving via BG.CUInt instance BG.Prim SDL_BlendFactor

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

  toCEnum :: CEnumZ SDL_BlendFactor -> SDL_BlendFactor
toCEnum = CUInt -> SDL_BlendFactor
CEnumZ SDL_BlendFactor -> SDL_BlendFactor
SDL_BlendFactor

  fromCEnum :: SDL_BlendFactor -> CEnumZ SDL_BlendFactor
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_BlendFactor -> DeclaredValues SDL_BlendFactor
declaredValues =
    \proxy SDL_BlendFactor
_ ->
      [(CEnumZ SDL_BlendFactor, NonEmpty String)]
-> DeclaredValues SDL_BlendFactor
forall a.
Ord (CEnumZ a) =>
[(CEnumZ a, NonEmpty String)] -> DeclaredValues a
CEnum.declaredValuesFromList
        [ (CUInt
CEnumZ SDL_BlendFactor
1, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_BLENDFACTOR_ZERO")
        , (CUInt
CEnumZ SDL_BlendFactor
2, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_BLENDFACTOR_ONE")
        , (CUInt
CEnumZ SDL_BlendFactor
3, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_BLENDFACTOR_SRC_COLOR")
        , (CUInt
CEnumZ SDL_BlendFactor
4, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_BLENDFACTOR_ONE_MINUS_SRC_COLOR")
        , (CUInt
CEnumZ SDL_BlendFactor
5, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_BLENDFACTOR_SRC_ALPHA")
        , (CUInt
CEnumZ SDL_BlendFactor
6, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_BLENDFACTOR_ONE_MINUS_SRC_ALPHA")
        , (CUInt
CEnumZ SDL_BlendFactor
7, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_BLENDFACTOR_DST_COLOR")
        , (CUInt
CEnumZ SDL_BlendFactor
8, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_BLENDFACTOR_ONE_MINUS_DST_COLOR")
        , (CUInt
CEnumZ SDL_BlendFactor
9, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_BLENDFACTOR_DST_ALPHA")
        , (CUInt
CEnumZ SDL_BlendFactor
10, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_BLENDFACTOR_ONE_MINUS_DST_ALPHA")
        ]

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

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

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

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

instance CEnum.SequentialCEnum SDL_BlendFactor where
  minDeclaredValue :: SDL_BlendFactor
minDeclaredValue = SDL_BlendFactor
SDL_BLENDFACTOR_ZERO

  maxDeclaredValue :: SDL_BlendFactor
maxDeclaredValue =
    SDL_BlendFactor
SDL_BLENDFACTOR_ONE_MINUS_DST_ALPHA

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

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

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

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

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

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

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

-- | 0, 0, 0, 0
--
--     [C declaration]: @SDL_BLENDFACTOR_ZERO@, defined at @SDL3\/SDL_blendmode.h 90:5@
pattern SDL_BLENDFACTOR_ZERO :: SDL_BlendFactor
pattern $mSDL_BLENDFACTOR_ZERO :: forall {r}. SDL_BlendFactor -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_BLENDFACTOR_ZERO :: SDL_BlendFactor
SDL_BLENDFACTOR_ZERO = SDL_BlendFactor 1

-- | 1, 1, 1, 1
--
--     [C declaration]: @SDL_BLENDFACTOR_ONE@, defined at @SDL3\/SDL_blendmode.h 91:5@
pattern SDL_BLENDFACTOR_ONE :: SDL_BlendFactor
pattern $mSDL_BLENDFACTOR_ONE :: forall {r}. SDL_BlendFactor -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_BLENDFACTOR_ONE :: SDL_BlendFactor
SDL_BLENDFACTOR_ONE = SDL_BlendFactor 2

-- | srcR, srcG, srcB, srcA
--
--     [C declaration]: @SDL_BLENDFACTOR_SRC_COLOR@, defined at @SDL3\/SDL_blendmode.h 92:5@
pattern SDL_BLENDFACTOR_SRC_COLOR :: SDL_BlendFactor
pattern $mSDL_BLENDFACTOR_SRC_COLOR :: forall {r}. SDL_BlendFactor -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_BLENDFACTOR_SRC_COLOR :: SDL_BlendFactor
SDL_BLENDFACTOR_SRC_COLOR = SDL_BlendFactor 3

-- | 1-srcR, 1-srcG, 1-srcB, 1-srcA
--
--     [C declaration]: @SDL_BLENDFACTOR_ONE_MINUS_SRC_COLOR@, defined at @SDL3\/SDL_blendmode.h 93:5@
pattern SDL_BLENDFACTOR_ONE_MINUS_SRC_COLOR :: SDL_BlendFactor
pattern $mSDL_BLENDFACTOR_ONE_MINUS_SRC_COLOR :: forall {r}. SDL_BlendFactor -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_BLENDFACTOR_ONE_MINUS_SRC_COLOR :: SDL_BlendFactor
SDL_BLENDFACTOR_ONE_MINUS_SRC_COLOR = SDL_BlendFactor 4

-- | srcA, srcA, srcA, srcA
--
--     [C declaration]: @SDL_BLENDFACTOR_SRC_ALPHA@, defined at @SDL3\/SDL_blendmode.h 94:5@
pattern SDL_BLENDFACTOR_SRC_ALPHA :: SDL_BlendFactor
pattern $mSDL_BLENDFACTOR_SRC_ALPHA :: forall {r}. SDL_BlendFactor -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_BLENDFACTOR_SRC_ALPHA :: SDL_BlendFactor
SDL_BLENDFACTOR_SRC_ALPHA = SDL_BlendFactor 5

-- | 1-srcA, 1-srcA, 1-srcA, 1-srcA
--
--     [C declaration]: @SDL_BLENDFACTOR_ONE_MINUS_SRC_ALPHA@, defined at @SDL3\/SDL_blendmode.h 95:5@
pattern SDL_BLENDFACTOR_ONE_MINUS_SRC_ALPHA :: SDL_BlendFactor
pattern $mSDL_BLENDFACTOR_ONE_MINUS_SRC_ALPHA :: forall {r}. SDL_BlendFactor -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_BLENDFACTOR_ONE_MINUS_SRC_ALPHA :: SDL_BlendFactor
SDL_BLENDFACTOR_ONE_MINUS_SRC_ALPHA = SDL_BlendFactor 6

-- | dstR, dstG, dstB, dstA
--
--     [C declaration]: @SDL_BLENDFACTOR_DST_COLOR@, defined at @SDL3\/SDL_blendmode.h 96:5@
pattern SDL_BLENDFACTOR_DST_COLOR :: SDL_BlendFactor
pattern $mSDL_BLENDFACTOR_DST_COLOR :: forall {r}. SDL_BlendFactor -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_BLENDFACTOR_DST_COLOR :: SDL_BlendFactor
SDL_BLENDFACTOR_DST_COLOR = SDL_BlendFactor 7

-- | 1-dstR, 1-dstG, 1-dstB, 1-dstA
--
--     [C declaration]: @SDL_BLENDFACTOR_ONE_MINUS_DST_COLOR@, defined at @SDL3\/SDL_blendmode.h 97:5@
pattern SDL_BLENDFACTOR_ONE_MINUS_DST_COLOR :: SDL_BlendFactor
pattern $mSDL_BLENDFACTOR_ONE_MINUS_DST_COLOR :: forall {r}. SDL_BlendFactor -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_BLENDFACTOR_ONE_MINUS_DST_COLOR :: SDL_BlendFactor
SDL_BLENDFACTOR_ONE_MINUS_DST_COLOR = SDL_BlendFactor 8

-- | dstA, dstA, dstA, dstA
--
--     [C declaration]: @SDL_BLENDFACTOR_DST_ALPHA@, defined at @SDL3\/SDL_blendmode.h 98:5@
pattern SDL_BLENDFACTOR_DST_ALPHA :: SDL_BlendFactor
pattern $mSDL_BLENDFACTOR_DST_ALPHA :: forall {r}. SDL_BlendFactor -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_BLENDFACTOR_DST_ALPHA :: SDL_BlendFactor
SDL_BLENDFACTOR_DST_ALPHA = SDL_BlendFactor 9

-- | 1-dstA, 1-dstA, 1-dstA, 1-dstA
--
--     [C declaration]: @SDL_BLENDFACTOR_ONE_MINUS_DST_ALPHA@, defined at @SDL3\/SDL_blendmode.h 99:5@
pattern SDL_BLENDFACTOR_ONE_MINUS_DST_ALPHA :: SDL_BlendFactor
pattern $mSDL_BLENDFACTOR_ONE_MINUS_DST_ALPHA :: forall {r}. SDL_BlendFactor -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_BLENDFACTOR_ONE_MINUS_DST_ALPHA :: SDL_BlendFactor
SDL_BLENDFACTOR_ONE_MINUS_DST_ALPHA = SDL_BlendFactor 10