{-# OPTIONS_GHC -Wall -fno-warn-tabs #-}

module Gpu.Vulkan.VertexInput.Middle.Internal where

import Data.Word

import Gpu.Vulkan.Enum

import qualified Gpu.Vulkan.VertexInput.Enum as E
import qualified Gpu.Vulkan.VertexInput.Core as C

data BindingDescription = BindingDescription {
	BindingDescription -> Word32
bindingDescriptionBinding :: Word32,
	BindingDescription -> Word32
bindingDescriptionStride :: Word32,
	BindingDescription -> Rate
bindingDescriptionInputRate :: E.Rate }
	deriving Int -> BindingDescription -> ShowS
[BindingDescription] -> ShowS
BindingDescription -> String
(Int -> BindingDescription -> ShowS)
-> (BindingDescription -> String)
-> ([BindingDescription] -> ShowS)
-> Show BindingDescription
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> BindingDescription -> ShowS
showsPrec :: Int -> BindingDescription -> ShowS
$cshow :: BindingDescription -> String
show :: BindingDescription -> String
$cshowList :: [BindingDescription] -> ShowS
showList :: [BindingDescription] -> ShowS
Show

bindingDescriptionToCore :: BindingDescription -> C.BindingDescription
bindingDescriptionToCore :: BindingDescription -> BindingDescription
bindingDescriptionToCore BindingDescription {
	bindingDescriptionBinding :: BindingDescription -> Word32
bindingDescriptionBinding = Word32
bd,
	bindingDescriptionStride :: BindingDescription -> Word32
bindingDescriptionStride = Word32
st,
	bindingDescriptionInputRate :: BindingDescription -> Rate
bindingDescriptionInputRate = E.Rate Word32
ir
	} = C.BindingDescription {
		bindingDescriptionBinding :: Word32
C.bindingDescriptionBinding = Word32
bd,
		bindingDescriptionStride :: Word32
C.bindingDescriptionStride = Word32
st,
		bindingDescriptionInputRate :: Word32
C.bindingDescriptionInputRate = Word32
ir }

data AttributeDescription = AttributeDescription {
	AttributeDescription -> Word32
attributeDescriptionLocation :: Word32,
	AttributeDescription -> Word32
attributeDescriptionBinding :: Word32,
	AttributeDescription -> Format
attributeDescriptionFormat :: Format,
	AttributeDescription -> Word32
attributeDescriptionOffset :: Word32 }
	deriving Int -> AttributeDescription -> ShowS
[AttributeDescription] -> ShowS
AttributeDescription -> String
(Int -> AttributeDescription -> ShowS)
-> (AttributeDescription -> String)
-> ([AttributeDescription] -> ShowS)
-> Show AttributeDescription
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> AttributeDescription -> ShowS
showsPrec :: Int -> AttributeDescription -> ShowS
$cshow :: AttributeDescription -> String
show :: AttributeDescription -> String
$cshowList :: [AttributeDescription] -> ShowS
showList :: [AttributeDescription] -> ShowS
Show

attributeDescriptionToCore :: AttributeDescription -> C.AttributeDescription
attributeDescriptionToCore :: AttributeDescription -> AttributeDescription
attributeDescriptionToCore AttributeDescription {
	attributeDescriptionLocation :: AttributeDescription -> Word32
attributeDescriptionLocation = Word32
loc,
	attributeDescriptionBinding :: AttributeDescription -> Word32
attributeDescriptionBinding = Word32
bnd,
	attributeDescriptionFormat :: AttributeDescription -> Format
attributeDescriptionFormat = Format Word32
fmt,
	attributeDescriptionOffset :: AttributeDescription -> Word32
attributeDescriptionOffset = Word32
oft } = C.AttributeDescription {
		attributeDescriptionLocation :: Word32
C.attributeDescriptionLocation = Word32
loc,
		attributeDescriptionBinding :: Word32
C.attributeDescriptionBinding = Word32
bnd,
		attributeDescriptionFormat :: Word32
C.attributeDescriptionFormat = Word32
fmt,
		attributeDescriptionOffset :: Word32
C.attributeDescriptionOffset = Word32
oft }

succAttributeDescriptionLocation :: AttributeDescription -> AttributeDescription
succAttributeDescriptionLocation :: AttributeDescription -> AttributeDescription
succAttributeDescriptionLocation
	ad :: AttributeDescription
ad@AttributeDescription { attributeDescriptionLocation :: AttributeDescription -> Word32
attributeDescriptionLocation = Word32
loc } =
	AttributeDescription
ad { attributeDescriptionLocation = loc + 1 }