{-# language CPP #-}
-- No documentation found for Chapter "ColorComponentFlagBits"
module Vulkan.Core10.Enums.ColorComponentFlagBits  ( ColorComponentFlags
                                                   , ColorComponentFlagBits( COLOR_COMPONENT_R_BIT
                                                                           , COLOR_COMPONENT_G_BIT
                                                                           , COLOR_COMPONENT_B_BIT
                                                                           , COLOR_COMPONENT_A_BIT
                                                                           , ..
                                                                           )
                                                   ) where

import Data.Bits (Bits)
import Data.Bits (FiniteBits)
import Vulkan.Internal.Utils (enumReadPrec)
import Vulkan.Internal.Utils (enumShowsPrec)
import GHC.Show (showString)
import Numeric (showHex)
import Vulkan.Zero (Zero)
import Foreign.Storable (Storable)
import GHC.Read (Read(readPrec))
import GHC.Show (Show(showsPrec))
import Vulkan.Core10.FundamentalTypes (Flags)
type ColorComponentFlags = ColorComponentFlagBits

-- | VkColorComponentFlagBits - Bitmask controlling which components are
-- written to the framebuffer
--
-- = Description
--
-- The color write mask operation is applied regardless of whether blending
-- is enabled.
--
-- The color write mask operation is applied only if
-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-color-write-enable Color Write Enable>
-- is enabled for the respective attachment. Otherwise the color write mask
-- is ignored and writes to all components of the attachment are disabled.
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
-- 'ColorComponentFlags'
newtype ColorComponentFlagBits = ColorComponentFlagBits Flags
  deriving newtype (ColorComponentFlagBits -> ColorComponentFlagBits -> Bool
(ColorComponentFlagBits -> ColorComponentFlagBits -> Bool)
-> (ColorComponentFlagBits -> ColorComponentFlagBits -> Bool)
-> Eq ColorComponentFlagBits
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ColorComponentFlagBits -> ColorComponentFlagBits -> Bool
== :: ColorComponentFlagBits -> ColorComponentFlagBits -> Bool
$c/= :: ColorComponentFlagBits -> ColorComponentFlagBits -> Bool
/= :: ColorComponentFlagBits -> ColorComponentFlagBits -> Bool
Eq, Eq ColorComponentFlagBits
Eq ColorComponentFlagBits =>
(ColorComponentFlagBits -> ColorComponentFlagBits -> Ordering)
-> (ColorComponentFlagBits -> ColorComponentFlagBits -> Bool)
-> (ColorComponentFlagBits -> ColorComponentFlagBits -> Bool)
-> (ColorComponentFlagBits -> ColorComponentFlagBits -> Bool)
-> (ColorComponentFlagBits -> ColorComponentFlagBits -> Bool)
-> (ColorComponentFlagBits
    -> ColorComponentFlagBits -> ColorComponentFlagBits)
-> (ColorComponentFlagBits
    -> ColorComponentFlagBits -> ColorComponentFlagBits)
-> Ord ColorComponentFlagBits
ColorComponentFlagBits -> ColorComponentFlagBits -> Bool
ColorComponentFlagBits -> ColorComponentFlagBits -> Ordering
ColorComponentFlagBits
-> ColorComponentFlagBits -> ColorComponentFlagBits
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 :: ColorComponentFlagBits -> ColorComponentFlagBits -> Ordering
compare :: ColorComponentFlagBits -> ColorComponentFlagBits -> Ordering
$c< :: ColorComponentFlagBits -> ColorComponentFlagBits -> Bool
< :: ColorComponentFlagBits -> ColorComponentFlagBits -> Bool
$c<= :: ColorComponentFlagBits -> ColorComponentFlagBits -> Bool
<= :: ColorComponentFlagBits -> ColorComponentFlagBits -> Bool
$c> :: ColorComponentFlagBits -> ColorComponentFlagBits -> Bool
> :: ColorComponentFlagBits -> ColorComponentFlagBits -> Bool
$c>= :: ColorComponentFlagBits -> ColorComponentFlagBits -> Bool
>= :: ColorComponentFlagBits -> ColorComponentFlagBits -> Bool
$cmax :: ColorComponentFlagBits
-> ColorComponentFlagBits -> ColorComponentFlagBits
max :: ColorComponentFlagBits
-> ColorComponentFlagBits -> ColorComponentFlagBits
$cmin :: ColorComponentFlagBits
-> ColorComponentFlagBits -> ColorComponentFlagBits
min :: ColorComponentFlagBits
-> ColorComponentFlagBits -> ColorComponentFlagBits
Ord, Ptr ColorComponentFlagBits -> IO ColorComponentFlagBits
Ptr ColorComponentFlagBits -> Int -> IO ColorComponentFlagBits
Ptr ColorComponentFlagBits
-> Int -> ColorComponentFlagBits -> IO ()
Ptr ColorComponentFlagBits -> ColorComponentFlagBits -> IO ()
ColorComponentFlagBits -> Int
(ColorComponentFlagBits -> Int)
-> (ColorComponentFlagBits -> Int)
-> (Ptr ColorComponentFlagBits -> Int -> IO ColorComponentFlagBits)
-> (Ptr ColorComponentFlagBits
    -> Int -> ColorComponentFlagBits -> IO ())
-> (forall b. Ptr b -> Int -> IO ColorComponentFlagBits)
-> (forall b. Ptr b -> Int -> ColorComponentFlagBits -> IO ())
-> (Ptr ColorComponentFlagBits -> IO ColorComponentFlagBits)
-> (Ptr ColorComponentFlagBits -> ColorComponentFlagBits -> IO ())
-> Storable ColorComponentFlagBits
forall b. Ptr b -> Int -> IO ColorComponentFlagBits
forall b. Ptr b -> Int -> ColorComponentFlagBits -> 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 :: ColorComponentFlagBits -> Int
sizeOf :: ColorComponentFlagBits -> Int
$calignment :: ColorComponentFlagBits -> Int
alignment :: ColorComponentFlagBits -> Int
$cpeekElemOff :: Ptr ColorComponentFlagBits -> Int -> IO ColorComponentFlagBits
peekElemOff :: Ptr ColorComponentFlagBits -> Int -> IO ColorComponentFlagBits
$cpokeElemOff :: Ptr ColorComponentFlagBits
-> Int -> ColorComponentFlagBits -> IO ()
pokeElemOff :: Ptr ColorComponentFlagBits
-> Int -> ColorComponentFlagBits -> IO ()
$cpeekByteOff :: forall b. Ptr b -> Int -> IO ColorComponentFlagBits
peekByteOff :: forall b. Ptr b -> Int -> IO ColorComponentFlagBits
$cpokeByteOff :: forall b. Ptr b -> Int -> ColorComponentFlagBits -> IO ()
pokeByteOff :: forall b. Ptr b -> Int -> ColorComponentFlagBits -> IO ()
$cpeek :: Ptr ColorComponentFlagBits -> IO ColorComponentFlagBits
peek :: Ptr ColorComponentFlagBits -> IO ColorComponentFlagBits
$cpoke :: Ptr ColorComponentFlagBits -> ColorComponentFlagBits -> IO ()
poke :: Ptr ColorComponentFlagBits -> ColorComponentFlagBits -> IO ()
Storable, ColorComponentFlagBits
ColorComponentFlagBits -> Zero ColorComponentFlagBits
forall a. a -> Zero a
$czero :: ColorComponentFlagBits
zero :: ColorComponentFlagBits
Zero, Eq ColorComponentFlagBits
ColorComponentFlagBits
Eq ColorComponentFlagBits =>
(ColorComponentFlagBits
 -> ColorComponentFlagBits -> ColorComponentFlagBits)
-> (ColorComponentFlagBits
    -> ColorComponentFlagBits -> ColorComponentFlagBits)
-> (ColorComponentFlagBits
    -> ColorComponentFlagBits -> ColorComponentFlagBits)
-> (ColorComponentFlagBits -> ColorComponentFlagBits)
-> (ColorComponentFlagBits -> Int -> ColorComponentFlagBits)
-> (ColorComponentFlagBits -> Int -> ColorComponentFlagBits)
-> ColorComponentFlagBits
-> (Int -> ColorComponentFlagBits)
-> (ColorComponentFlagBits -> Int -> ColorComponentFlagBits)
-> (ColorComponentFlagBits -> Int -> ColorComponentFlagBits)
-> (ColorComponentFlagBits -> Int -> ColorComponentFlagBits)
-> (ColorComponentFlagBits -> Int -> Bool)
-> (ColorComponentFlagBits -> Maybe Int)
-> (ColorComponentFlagBits -> Int)
-> (ColorComponentFlagBits -> Bool)
-> (ColorComponentFlagBits -> Int -> ColorComponentFlagBits)
-> (ColorComponentFlagBits -> Int -> ColorComponentFlagBits)
-> (ColorComponentFlagBits -> Int -> ColorComponentFlagBits)
-> (ColorComponentFlagBits -> Int -> ColorComponentFlagBits)
-> (ColorComponentFlagBits -> Int -> ColorComponentFlagBits)
-> (ColorComponentFlagBits -> Int -> ColorComponentFlagBits)
-> (ColorComponentFlagBits -> Int)
-> Bits ColorComponentFlagBits
Int -> ColorComponentFlagBits
ColorComponentFlagBits -> Bool
ColorComponentFlagBits -> Int
ColorComponentFlagBits -> Maybe Int
ColorComponentFlagBits -> ColorComponentFlagBits
ColorComponentFlagBits -> Int -> Bool
ColorComponentFlagBits -> Int -> ColorComponentFlagBits
ColorComponentFlagBits
-> ColorComponentFlagBits -> ColorComponentFlagBits
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.&. :: ColorComponentFlagBits
-> ColorComponentFlagBits -> ColorComponentFlagBits
.&. :: ColorComponentFlagBits
-> ColorComponentFlagBits -> ColorComponentFlagBits
$c.|. :: ColorComponentFlagBits
-> ColorComponentFlagBits -> ColorComponentFlagBits
.|. :: ColorComponentFlagBits
-> ColorComponentFlagBits -> ColorComponentFlagBits
$cxor :: ColorComponentFlagBits
-> ColorComponentFlagBits -> ColorComponentFlagBits
xor :: ColorComponentFlagBits
-> ColorComponentFlagBits -> ColorComponentFlagBits
$ccomplement :: ColorComponentFlagBits -> ColorComponentFlagBits
complement :: ColorComponentFlagBits -> ColorComponentFlagBits
$cshift :: ColorComponentFlagBits -> Int -> ColorComponentFlagBits
shift :: ColorComponentFlagBits -> Int -> ColorComponentFlagBits
$crotate :: ColorComponentFlagBits -> Int -> ColorComponentFlagBits
rotate :: ColorComponentFlagBits -> Int -> ColorComponentFlagBits
$czeroBits :: ColorComponentFlagBits
zeroBits :: ColorComponentFlagBits
$cbit :: Int -> ColorComponentFlagBits
bit :: Int -> ColorComponentFlagBits
$csetBit :: ColorComponentFlagBits -> Int -> ColorComponentFlagBits
setBit :: ColorComponentFlagBits -> Int -> ColorComponentFlagBits
$cclearBit :: ColorComponentFlagBits -> Int -> ColorComponentFlagBits
clearBit :: ColorComponentFlagBits -> Int -> ColorComponentFlagBits
$ccomplementBit :: ColorComponentFlagBits -> Int -> ColorComponentFlagBits
complementBit :: ColorComponentFlagBits -> Int -> ColorComponentFlagBits
$ctestBit :: ColorComponentFlagBits -> Int -> Bool
testBit :: ColorComponentFlagBits -> Int -> Bool
$cbitSizeMaybe :: ColorComponentFlagBits -> Maybe Int
bitSizeMaybe :: ColorComponentFlagBits -> Maybe Int
$cbitSize :: ColorComponentFlagBits -> Int
bitSize :: ColorComponentFlagBits -> Int
$cisSigned :: ColorComponentFlagBits -> Bool
isSigned :: ColorComponentFlagBits -> Bool
$cshiftL :: ColorComponentFlagBits -> Int -> ColorComponentFlagBits
shiftL :: ColorComponentFlagBits -> Int -> ColorComponentFlagBits
$cunsafeShiftL :: ColorComponentFlagBits -> Int -> ColorComponentFlagBits
unsafeShiftL :: ColorComponentFlagBits -> Int -> ColorComponentFlagBits
$cshiftR :: ColorComponentFlagBits -> Int -> ColorComponentFlagBits
shiftR :: ColorComponentFlagBits -> Int -> ColorComponentFlagBits
$cunsafeShiftR :: ColorComponentFlagBits -> Int -> ColorComponentFlagBits
unsafeShiftR :: ColorComponentFlagBits -> Int -> ColorComponentFlagBits
$crotateL :: ColorComponentFlagBits -> Int -> ColorComponentFlagBits
rotateL :: ColorComponentFlagBits -> Int -> ColorComponentFlagBits
$crotateR :: ColorComponentFlagBits -> Int -> ColorComponentFlagBits
rotateR :: ColorComponentFlagBits -> Int -> ColorComponentFlagBits
$cpopCount :: ColorComponentFlagBits -> Int
popCount :: ColorComponentFlagBits -> Int
Bits, Bits ColorComponentFlagBits
Bits ColorComponentFlagBits =>
(ColorComponentFlagBits -> Int)
-> (ColorComponentFlagBits -> Int)
-> (ColorComponentFlagBits -> Int)
-> FiniteBits ColorComponentFlagBits
ColorComponentFlagBits -> Int
forall b.
Bits b =>
(b -> Int) -> (b -> Int) -> (b -> Int) -> FiniteBits b
$cfiniteBitSize :: ColorComponentFlagBits -> Int
finiteBitSize :: ColorComponentFlagBits -> Int
$ccountLeadingZeros :: ColorComponentFlagBits -> Int
countLeadingZeros :: ColorComponentFlagBits -> Int
$ccountTrailingZeros :: ColorComponentFlagBits -> Int
countTrailingZeros :: ColorComponentFlagBits -> Int
FiniteBits)

-- | 'COLOR_COMPONENT_R_BIT' specifies that the R value is written to the
-- color attachment for the appropriate sample. Otherwise, the value in
-- memory is unmodified.
pattern $bCOLOR_COMPONENT_R_BIT :: ColorComponentFlagBits
$mCOLOR_COMPONENT_R_BIT :: forall {r}.
ColorComponentFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
COLOR_COMPONENT_R_BIT = ColorComponentFlagBits 0x00000001

-- | 'COLOR_COMPONENT_G_BIT' specifies that the G value is written to the
-- color attachment for the appropriate sample. Otherwise, the value in
-- memory is unmodified.
pattern $bCOLOR_COMPONENT_G_BIT :: ColorComponentFlagBits
$mCOLOR_COMPONENT_G_BIT :: forall {r}.
ColorComponentFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
COLOR_COMPONENT_G_BIT = ColorComponentFlagBits 0x00000002

-- | 'COLOR_COMPONENT_B_BIT' specifies that the B value is written to the
-- color attachment for the appropriate sample. Otherwise, the value in
-- memory is unmodified.
pattern $bCOLOR_COMPONENT_B_BIT :: ColorComponentFlagBits
$mCOLOR_COMPONENT_B_BIT :: forall {r}.
ColorComponentFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
COLOR_COMPONENT_B_BIT = ColorComponentFlagBits 0x00000004

-- | 'COLOR_COMPONENT_A_BIT' specifies that the A value is written to the
-- color attachment for the appropriate sample. Otherwise, the value in
-- memory is unmodified.
pattern $bCOLOR_COMPONENT_A_BIT :: ColorComponentFlagBits
$mCOLOR_COMPONENT_A_BIT :: forall {r}.
ColorComponentFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
COLOR_COMPONENT_A_BIT = ColorComponentFlagBits 0x00000008

conNameColorComponentFlagBits :: String
conNameColorComponentFlagBits :: String
conNameColorComponentFlagBits = String
"ColorComponentFlagBits"

enumPrefixColorComponentFlagBits :: String
enumPrefixColorComponentFlagBits :: String
enumPrefixColorComponentFlagBits = String
"COLOR_COMPONENT_"

showTableColorComponentFlagBits :: [(ColorComponentFlagBits, String)]
showTableColorComponentFlagBits :: [(ColorComponentFlagBits, String)]
showTableColorComponentFlagBits =
  [ (ColorComponentFlagBits
COLOR_COMPONENT_R_BIT, String
"R_BIT")
  , (ColorComponentFlagBits
COLOR_COMPONENT_G_BIT, String
"G_BIT")
  , (ColorComponentFlagBits
COLOR_COMPONENT_B_BIT, String
"B_BIT")
  , (ColorComponentFlagBits
COLOR_COMPONENT_A_BIT, String
"A_BIT")
  ]

instance Show ColorComponentFlagBits where
  showsPrec :: Int -> ColorComponentFlagBits -> ShowS
showsPrec =
    String
-> [(ColorComponentFlagBits, String)]
-> String
-> (ColorComponentFlagBits -> Flags)
-> (Flags -> ShowS)
-> Int
-> ColorComponentFlagBits
-> ShowS
forall a i.
Eq a =>
String
-> [(a, String)]
-> String
-> (a -> i)
-> (i -> ShowS)
-> Int
-> a
-> ShowS
enumShowsPrec
      String
enumPrefixColorComponentFlagBits
      [(ColorComponentFlagBits, String)]
showTableColorComponentFlagBits
      String
conNameColorComponentFlagBits
      (\(ColorComponentFlagBits Flags
x) -> Flags
x)
      (\Flags
x -> String -> ShowS
showString String
"0x" ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Flags -> ShowS
forall a. Integral a => a -> ShowS
showHex Flags
x)

instance Read ColorComponentFlagBits where
  readPrec :: ReadPrec ColorComponentFlagBits
readPrec =
    String
-> [(ColorComponentFlagBits, String)]
-> String
-> (Flags -> ColorComponentFlagBits)
-> ReadPrec ColorComponentFlagBits
forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec
      String
enumPrefixColorComponentFlagBits
      [(ColorComponentFlagBits, String)]
showTableColorComponentFlagBits
      String
conNameColorComponentFlagBits
      Flags -> ColorComponentFlagBits
ColorComponentFlagBits