{-# language CPP #-}
-- No documentation found for Chapter "PointClippingBehavior"
module Vulkan.Core11.Enums.PointClippingBehavior  (PointClippingBehavior( POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES
                                                                        , POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY
                                                                        , ..
                                                                        )) where

import Vulkan.Internal.Utils (enumReadPrec)
import Vulkan.Internal.Utils (enumShowsPrec)
import GHC.Show (showsPrec)
import Vulkan.Zero (Zero)
import Foreign.Storable (Storable)
import Data.Int (Int32)
import GHC.Read (Read(readPrec))
import GHC.Show (Show(showsPrec))

-- | VkPointClippingBehavior - Enum specifying the point clipping behavior
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
-- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.PhysicalDevicePointClippingProperties',
-- 'Vulkan.Core12.PhysicalDeviceVulkan11Properties'
newtype PointClippingBehavior = PointClippingBehavior Int32
  deriving newtype (PointClippingBehavior -> PointClippingBehavior -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PointClippingBehavior -> PointClippingBehavior -> Bool
$c/= :: PointClippingBehavior -> PointClippingBehavior -> Bool
== :: PointClippingBehavior -> PointClippingBehavior -> Bool
$c== :: PointClippingBehavior -> PointClippingBehavior -> Bool
Eq, Eq PointClippingBehavior
PointClippingBehavior -> PointClippingBehavior -> Bool
PointClippingBehavior -> PointClippingBehavior -> Ordering
PointClippingBehavior
-> PointClippingBehavior -> PointClippingBehavior
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
min :: PointClippingBehavior
-> PointClippingBehavior -> PointClippingBehavior
$cmin :: PointClippingBehavior
-> PointClippingBehavior -> PointClippingBehavior
max :: PointClippingBehavior
-> PointClippingBehavior -> PointClippingBehavior
$cmax :: PointClippingBehavior
-> PointClippingBehavior -> PointClippingBehavior
>= :: PointClippingBehavior -> PointClippingBehavior -> Bool
$c>= :: PointClippingBehavior -> PointClippingBehavior -> Bool
> :: PointClippingBehavior -> PointClippingBehavior -> Bool
$c> :: PointClippingBehavior -> PointClippingBehavior -> Bool
<= :: PointClippingBehavior -> PointClippingBehavior -> Bool
$c<= :: PointClippingBehavior -> PointClippingBehavior -> Bool
< :: PointClippingBehavior -> PointClippingBehavior -> Bool
$c< :: PointClippingBehavior -> PointClippingBehavior -> Bool
compare :: PointClippingBehavior -> PointClippingBehavior -> Ordering
$ccompare :: PointClippingBehavior -> PointClippingBehavior -> Ordering
Ord, Ptr PointClippingBehavior -> IO PointClippingBehavior
Ptr PointClippingBehavior -> Int -> IO PointClippingBehavior
Ptr PointClippingBehavior -> Int -> PointClippingBehavior -> IO ()
Ptr PointClippingBehavior -> PointClippingBehavior -> IO ()
PointClippingBehavior -> Int
forall b. Ptr b -> Int -> IO PointClippingBehavior
forall b. Ptr b -> Int -> PointClippingBehavior -> 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
poke :: Ptr PointClippingBehavior -> PointClippingBehavior -> IO ()
$cpoke :: Ptr PointClippingBehavior -> PointClippingBehavior -> IO ()
peek :: Ptr PointClippingBehavior -> IO PointClippingBehavior
$cpeek :: Ptr PointClippingBehavior -> IO PointClippingBehavior
pokeByteOff :: forall b. Ptr b -> Int -> PointClippingBehavior -> IO ()
$cpokeByteOff :: forall b. Ptr b -> Int -> PointClippingBehavior -> IO ()
peekByteOff :: forall b. Ptr b -> Int -> IO PointClippingBehavior
$cpeekByteOff :: forall b. Ptr b -> Int -> IO PointClippingBehavior
pokeElemOff :: Ptr PointClippingBehavior -> Int -> PointClippingBehavior -> IO ()
$cpokeElemOff :: Ptr PointClippingBehavior -> Int -> PointClippingBehavior -> IO ()
peekElemOff :: Ptr PointClippingBehavior -> Int -> IO PointClippingBehavior
$cpeekElemOff :: Ptr PointClippingBehavior -> Int -> IO PointClippingBehavior
alignment :: PointClippingBehavior -> Int
$calignment :: PointClippingBehavior -> Int
sizeOf :: PointClippingBehavior -> Int
$csizeOf :: PointClippingBehavior -> Int
Storable, PointClippingBehavior
forall a. a -> Zero a
zero :: PointClippingBehavior
$czero :: PointClippingBehavior
Zero)

-- | 'POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES' specifies that the primitive
-- is discarded if the vertex lies outside any clip plane, including the
-- planes bounding the view volume.
pattern $bPOINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES :: PointClippingBehavior
$mPOINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES :: forall {r}.
PointClippingBehavior -> ((# #) -> r) -> ((# #) -> r) -> r
POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES = PointClippingBehavior 0

-- | 'POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY' specifies that the
-- primitive is discarded only if the vertex lies outside any user clip
-- plane.
pattern $bPOINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY :: PointClippingBehavior
$mPOINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY :: forall {r}.
PointClippingBehavior -> ((# #) -> r) -> ((# #) -> r) -> r
POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY = PointClippingBehavior 1

{-# COMPLETE
  POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES
  , POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY ::
    PointClippingBehavior
  #-}

conNamePointClippingBehavior :: String
conNamePointClippingBehavior :: String
conNamePointClippingBehavior = String
"PointClippingBehavior"

enumPrefixPointClippingBehavior :: String
enumPrefixPointClippingBehavior :: String
enumPrefixPointClippingBehavior = String
"POINT_CLIPPING_BEHAVIOR_"

showTablePointClippingBehavior :: [(PointClippingBehavior, String)]
showTablePointClippingBehavior :: [(PointClippingBehavior, String)]
showTablePointClippingBehavior =
  [
    ( PointClippingBehavior
POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES
    , String
"ALL_CLIP_PLANES"
    )
  ,
    ( PointClippingBehavior
POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY
    , String
"USER_CLIP_PLANES_ONLY"
    )
  ]

instance Show PointClippingBehavior where
  showsPrec :: Int -> PointClippingBehavior -> ShowS
showsPrec =
    forall a i.
Eq a =>
String
-> [(a, String)]
-> String
-> (a -> i)
-> (i -> ShowS)
-> Int
-> a
-> ShowS
enumShowsPrec
      String
enumPrefixPointClippingBehavior
      [(PointClippingBehavior, String)]
showTablePointClippingBehavior
      String
conNamePointClippingBehavior
      (\(PointClippingBehavior Int32
x) -> Int32
x)
      (forall a. Show a => Int -> a -> ShowS
showsPrec Int
11)

instance Read PointClippingBehavior where
  readPrec :: ReadPrec PointClippingBehavior
readPrec =
    forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec
      String
enumPrefixPointClippingBehavior
      [(PointClippingBehavior, String)]
showTablePointClippingBehavior
      String
conNamePointClippingBehavior
      Int32 -> PointClippingBehavior
PointClippingBehavior