{-# LINE 1 "src/Gpu/Vulkan/Pipeline/RasterizationState/Middle/Internal.hsc" #-} {-# LANGUAGE ImportQualifiedPost #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE BlockArguments #-} {-# LANGUAGE MonoLocalBinds #-} {-# LANGUAGE FlexibleContexts, UndecidableInstances #-} {-# LANGUAGE PatternSynonyms, ViewPatterns #-} {-# LANGUAGE StandaloneDeriving, GeneralizedNewtypeDeriving #-} {-# OPTIONS_GHC -Wall -fno-warn-tabs #-} module Gpu.Vulkan.Pipeline.RasterizationState.Middle.Internal ( CreateInfo(..), CreateFlags, createInfoToCore ) where import Foreign.Ptr import Foreign.Storable import Foreign.Storable.PeekPoke import Foreign.C.Enum import Data.TypeLevel.Maybe qualified as TMaybe import Data.Bits import Data.Word import Gpu.Vulkan.Base.Middle.Internal import Gpu.Vulkan.Enum import qualified Gpu.Vulkan.Pipeline.RasterizationState.Core as C enum "CreateFlags" ''Word32 {-# LINE 30 "src/Gpu/Vulkan/Pipeline/RasterizationState/Middle/Internal.hsc" #-} [''Show, ''Eq, ''Storable, ''Bits] [("CreateFlagsZero", 0)] data CreateInfo mn = CreateInfo { forall (mn :: Maybe (*)). CreateInfo mn -> M mn createInfoNext :: TMaybe.M mn, forall (mn :: Maybe (*)). CreateInfo mn -> CreateFlags createInfoFlags :: CreateFlags, forall (mn :: Maybe (*)). CreateInfo mn -> Bool createInfoDepthClampEnable :: Bool, forall (mn :: Maybe (*)). CreateInfo mn -> Bool createInfoRasterizerDiscardEnable :: Bool, forall (mn :: Maybe (*)). CreateInfo mn -> PolygonMode createInfoPolygonMode :: PolygonMode, forall (mn :: Maybe (*)). CreateInfo mn -> CullModeFlags createInfoCullMode :: CullModeFlags, forall (mn :: Maybe (*)). CreateInfo mn -> FrontFace createInfoFrontFace :: FrontFace, forall (mn :: Maybe (*)). CreateInfo mn -> Bool createInfoDepthBiasEnable :: Bool, forall (mn :: Maybe (*)). CreateInfo mn -> Float createInfoDepthBiasConstantFactor :: Float, forall (mn :: Maybe (*)). CreateInfo mn -> Float createInfoDepthBiasClamp :: Float, forall (mn :: Maybe (*)). CreateInfo mn -> Float createInfoDepthBiasSlopeFactor :: Float, forall (mn :: Maybe (*)). CreateInfo mn -> Float createInfoLineWidth :: Float } deriving instance Show (TMaybe.M mn) => Show (CreateInfo mn) createInfoToCore :: WithPoked (TMaybe.M mn) => CreateInfo mn -> (Ptr C.CreateInfo -> IO a) -> IO () createInfoToCore :: forall (mn :: Maybe (*)) a. WithPoked (M mn) => CreateInfo mn -> (Ptr CreateInfo -> IO a) -> IO () createInfoToCore CreateInfo { createInfoNext :: forall (mn :: Maybe (*)). CreateInfo mn -> M mn createInfoNext = M mn mnxt, createInfoFlags :: forall (mn :: Maybe (*)). CreateInfo mn -> CreateFlags createInfoFlags = CreateFlags Word32 flgs, createInfoDepthClampEnable :: forall (mn :: Maybe (*)). CreateInfo mn -> Bool createInfoDepthClampEnable = Bool -> Word32 boolToBool32 -> Word32 dce, createInfoRasterizerDiscardEnable :: forall (mn :: Maybe (*)). CreateInfo mn -> Bool createInfoRasterizerDiscardEnable = Bool -> Word32 boolToBool32 -> Word32 rde, createInfoPolygonMode :: forall (mn :: Maybe (*)). CreateInfo mn -> PolygonMode createInfoPolygonMode = PolygonMode Word32 pm, createInfoCullMode :: forall (mn :: Maybe (*)). CreateInfo mn -> CullModeFlags createInfoCullMode = CullModeFlagBits Word32 cm, createInfoFrontFace :: forall (mn :: Maybe (*)). CreateInfo mn -> FrontFace createInfoFrontFace = FrontFace Word32 ff, createInfoDepthBiasEnable :: forall (mn :: Maybe (*)). CreateInfo mn -> Bool createInfoDepthBiasEnable = Bool -> Word32 boolToBool32 -> Word32 dbe, createInfoDepthBiasConstantFactor :: forall (mn :: Maybe (*)). CreateInfo mn -> Float createInfoDepthBiasConstantFactor = Float dbcf, createInfoDepthBiasClamp :: forall (mn :: Maybe (*)). CreateInfo mn -> Float createInfoDepthBiasClamp = Float dbc, createInfoDepthBiasSlopeFactor :: forall (mn :: Maybe (*)). CreateInfo mn -> Float createInfoDepthBiasSlopeFactor = Float dbsf, createInfoLineWidth :: forall (mn :: Maybe (*)). CreateInfo mn -> Float createInfoLineWidth = Float lw } Ptr CreateInfo -> IO a f = M mn -> (forall s. PtrS s (M mn) -> IO ()) -> IO () forall a b. WithPoked a => a -> (forall s. PtrS s a -> IO b) -> IO b forall b. M mn -> (forall s. PtrS s (M mn) -> IO b) -> IO b withPoked' M mn mnxt \PtrS s (M mn) pnxt -> PtrS s (M mn) -> (Ptr (M mn) -> IO a) -> IO () forall s a b. PtrS s a -> (Ptr a -> IO b) -> IO () withPtrS PtrS s (M mn) pnxt \(Ptr (M mn) -> Ptr () forall a b. Ptr a -> Ptr b castPtr -> Ptr () pnxt') -> let ci :: CreateInfo ci = C.CreateInfo { createInfoSType :: () C.createInfoSType = (), createInfoPNext :: Ptr () C.createInfoPNext = Ptr () pnxt', createInfoFlags :: Word32 C.createInfoFlags = Word32 flgs, createInfoDepthClampEnable :: Word32 C.createInfoDepthClampEnable = Word32 dce, createInfoRasterizerDiscardEnable :: Word32 C.createInfoRasterizerDiscardEnable = Word32 rde, createInfoPolygonMode :: Word32 C.createInfoPolygonMode = Word32 pm, createInfoCullMode :: Word32 C.createInfoCullMode = Word32 cm, createInfoFrontFace :: Word32 C.createInfoFrontFace = Word32 ff, createInfoDepthBiasEnable :: Word32 C.createInfoDepthBiasEnable = Word32 dbe, createInfoDepthBiasConstantFactor :: Float C.createInfoDepthBiasConstantFactor = Float dbcf, createInfoDepthBiasClamp :: Float C.createInfoDepthBiasClamp = Float dbc, createInfoDepthBiasSlopeFactor :: Float C.createInfoDepthBiasSlopeFactor = Float dbsf, createInfoLineWidth :: Float C.createInfoLineWidth = Float lw } in CreateInfo -> (Ptr CreateInfo -> IO a) -> IO a forall a b. Pokable a => a -> (Ptr a -> IO b) -> IO b withPoked CreateInfo ci Ptr CreateInfo -> IO a f