{-# 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
--
-- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.PhysicalDevicePointClippingProperties',
-- 'Vulkan.Core12.PhysicalDeviceVulkan11Properties'
newtype PointClippingBehavior = PointClippingBehavior Int32
  deriving newtype (PointClippingBehavior -> PointClippingBehavior -> Bool
(PointClippingBehavior -> PointClippingBehavior -> Bool)
-> (PointClippingBehavior -> PointClippingBehavior -> Bool)
-> Eq PointClippingBehavior
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
Eq PointClippingBehavior =>
(PointClippingBehavior -> PointClippingBehavior -> Ordering)
-> (PointClippingBehavior -> PointClippingBehavior -> Bool)
-> (PointClippingBehavior -> PointClippingBehavior -> Bool)
-> (PointClippingBehavior -> PointClippingBehavior -> Bool)
-> (PointClippingBehavior -> PointClippingBehavior -> Bool)
-> (PointClippingBehavior
    -> PointClippingBehavior -> PointClippingBehavior)
-> (PointClippingBehavior
    -> PointClippingBehavior -> PointClippingBehavior)
-> Ord 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
$cp1Ord :: Eq PointClippingBehavior
Ord, Ptr b -> Int -> IO PointClippingBehavior
Ptr b -> Int -> PointClippingBehavior -> IO ()
Ptr PointClippingBehavior -> IO PointClippingBehavior
Ptr PointClippingBehavior -> Int -> IO PointClippingBehavior
Ptr PointClippingBehavior -> Int -> PointClippingBehavior -> IO ()
Ptr PointClippingBehavior -> PointClippingBehavior -> IO ()
PointClippingBehavior -> Int
(PointClippingBehavior -> Int)
-> (PointClippingBehavior -> Int)
-> (Ptr PointClippingBehavior -> Int -> IO PointClippingBehavior)
-> (Ptr PointClippingBehavior
    -> Int -> PointClippingBehavior -> IO ())
-> (forall b. Ptr b -> Int -> IO PointClippingBehavior)
-> (forall b. Ptr b -> Int -> PointClippingBehavior -> IO ())
-> (Ptr PointClippingBehavior -> IO PointClippingBehavior)
-> (Ptr PointClippingBehavior -> PointClippingBehavior -> IO ())
-> Storable PointClippingBehavior
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 :: Ptr b -> Int -> PointClippingBehavior -> IO ()
$cpokeByteOff :: forall b. Ptr b -> Int -> PointClippingBehavior -> IO ()
peekByteOff :: 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
PointClippingBehavior -> Zero 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 -> (Void# -> r) -> (Void# -> 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 -> (Void# -> r) -> (Void# -> 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 = "PointClippingBehavior"

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

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

instance Show PointClippingBehavior where
  showsPrec :: Int -> PointClippingBehavior -> ShowS
showsPrec = String
-> [(PointClippingBehavior, String)]
-> String
-> (PointClippingBehavior -> Int32)
-> (Int32 -> ShowS)
-> Int
-> PointClippingBehavior
-> ShowS
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 x :: Int32
x) -> Int32
x)
                            (Int -> Int32 -> ShowS
forall a. Show a => Int -> a -> ShowS
showsPrec 11)

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