module Data.SpirV.Enum.ImageFormat where import Data.String (IsString(..)) import Data.Word (Word32) import Foreign (Storable(..)) import GHC.Read (Read(..)) import Text.ParserCombinators.ReadPrec (pfail) import qualified GHC.Read as Read import qualified Text.Read.Lex as Lex newtype ImageFormat = ImageFormat Word32 deriving (Eq, Ord, Storable) pattern Unknown :: ImageFormat pattern Unknown = ImageFormat 0 pattern Rgba32f :: ImageFormat pattern Rgba32f = ImageFormat 1 pattern Rgba16f :: ImageFormat pattern Rgba16f = ImageFormat 2 pattern R32f :: ImageFormat pattern R32f = ImageFormat 3 pattern Rgba8 :: ImageFormat pattern Rgba8 = ImageFormat 4 pattern Rgba8Snorm :: ImageFormat pattern Rgba8Snorm = ImageFormat 5 pattern Rg32f :: ImageFormat pattern Rg32f = ImageFormat 6 pattern Rg16f :: ImageFormat pattern Rg16f = ImageFormat 7 pattern R11fG11fB10f :: ImageFormat pattern R11fG11fB10f = ImageFormat 8 pattern R16f :: ImageFormat pattern R16f = ImageFormat 9 pattern Rgba16 :: ImageFormat pattern Rgba16 = ImageFormat 10 pattern Rgb10A2 :: ImageFormat pattern Rgb10A2 = ImageFormat 11 pattern Rg16 :: ImageFormat pattern Rg16 = ImageFormat 12 pattern Rg8 :: ImageFormat pattern Rg8 = ImageFormat 13 pattern R16 :: ImageFormat pattern R16 = ImageFormat 14 pattern R8 :: ImageFormat pattern R8 = ImageFormat 15 pattern Rgba16Snorm :: ImageFormat pattern Rgba16Snorm = ImageFormat 16 pattern Rg16Snorm :: ImageFormat pattern Rg16Snorm = ImageFormat 17 pattern Rg8Snorm :: ImageFormat pattern Rg8Snorm = ImageFormat 18 pattern R16Snorm :: ImageFormat pattern R16Snorm = ImageFormat 19 pattern R8Snorm :: ImageFormat pattern R8Snorm = ImageFormat 20 pattern Rgba32i :: ImageFormat pattern Rgba32i = ImageFormat 21 pattern Rgba16i :: ImageFormat pattern Rgba16i = ImageFormat 22 pattern Rgba8i :: ImageFormat pattern Rgba8i = ImageFormat 23 pattern R32i :: ImageFormat pattern R32i = ImageFormat 24 pattern Rg32i :: ImageFormat pattern Rg32i = ImageFormat 25 pattern Rg16i :: ImageFormat pattern Rg16i = ImageFormat 26 pattern Rg8i :: ImageFormat pattern Rg8i = ImageFormat 27 pattern R16i :: ImageFormat pattern R16i = ImageFormat 28 pattern R8i :: ImageFormat pattern R8i = ImageFormat 29 pattern Rgba32ui :: ImageFormat pattern Rgba32ui = ImageFormat 30 pattern Rgba16ui :: ImageFormat pattern Rgba16ui = ImageFormat 31 pattern Rgba8ui :: ImageFormat pattern Rgba8ui = ImageFormat 32 pattern R32ui :: ImageFormat pattern R32ui = ImageFormat 33 pattern Rgb10a2ui :: ImageFormat pattern Rgb10a2ui = ImageFormat 34 pattern Rg32ui :: ImageFormat pattern Rg32ui = ImageFormat 35 pattern Rg16ui :: ImageFormat pattern Rg16ui = ImageFormat 36 pattern Rg8ui :: ImageFormat pattern Rg8ui = ImageFormat 37 pattern R16ui :: ImageFormat pattern R16ui = ImageFormat 38 pattern R8ui :: ImageFormat pattern R8ui = ImageFormat 39 pattern R64ui :: ImageFormat pattern R64ui = ImageFormat 40 pattern R64i :: ImageFormat pattern R64i = ImageFormat 41 toName :: IsString a => ImageFormat -> a toName x = case x of Unknown -> "Unknown" Rgba32f -> "Rgba32f" Rgba16f -> "Rgba16f" R32f -> "R32f" Rgba8 -> "Rgba8" Rgba8Snorm -> "Rgba8Snorm" Rg32f -> "Rg32f" Rg16f -> "Rg16f" R11fG11fB10f -> "R11fG11fB10f" R16f -> "R16f" Rgba16 -> "Rgba16" Rgb10A2 -> "Rgb10A2" Rg16 -> "Rg16" Rg8 -> "Rg8" R16 -> "R16" R8 -> "R8" Rgba16Snorm -> "Rgba16Snorm" Rg16Snorm -> "Rg16Snorm" Rg8Snorm -> "Rg8Snorm" R16Snorm -> "R16Snorm" R8Snorm -> "R8Snorm" Rgba32i -> "Rgba32i" Rgba16i -> "Rgba16i" Rgba8i -> "Rgba8i" R32i -> "R32i" Rg32i -> "Rg32i" Rg16i -> "Rg16i" Rg8i -> "Rg8i" R16i -> "R16i" R8i -> "R8i" Rgba32ui -> "Rgba32ui" Rgba16ui -> "Rgba16ui" Rgba8ui -> "Rgba8ui" R32ui -> "R32ui" Rgb10a2ui -> "Rgb10a2ui" Rg32ui -> "Rg32ui" Rg16ui -> "Rg16ui" Rg8ui -> "Rg8ui" R16ui -> "R16ui" R8ui -> "R8ui" R64ui -> "R64ui" R64i -> "R64i" unknown -> fromString $ "ImageFormat " ++ show unknown instance Show ImageFormat where show = toName fromName :: (IsString a, Eq a) => a -> Maybe ImageFormat fromName x = case x of "Unknown" -> Just Unknown "Rgba32f" -> Just Rgba32f "Rgba16f" -> Just Rgba16f "R32f" -> Just R32f "Rgba8" -> Just Rgba8 "Rgba8Snorm" -> Just Rgba8Snorm "Rg32f" -> Just Rg32f "Rg16f" -> Just Rg16f "R11fG11fB10f" -> Just R11fG11fB10f "R16f" -> Just R16f "Rgba16" -> Just Rgba16 "Rgb10A2" -> Just Rgb10A2 "Rg16" -> Just Rg16 "Rg8" -> Just Rg8 "R16" -> Just R16 "R8" -> Just R8 "Rgba16Snorm" -> Just Rgba16Snorm "Rg16Snorm" -> Just Rg16Snorm "Rg8Snorm" -> Just Rg8Snorm "R16Snorm" -> Just R16Snorm "R8Snorm" -> Just R8Snorm "Rgba32i" -> Just Rgba32i "Rgba16i" -> Just Rgba16i "Rgba8i" -> Just Rgba8i "R32i" -> Just R32i "Rg32i" -> Just Rg32i "Rg16i" -> Just Rg16i "Rg8i" -> Just Rg8i "R16i" -> Just R16i "R8i" -> Just R8i "Rgba32ui" -> Just Rgba32ui "Rgba16ui" -> Just Rgba16ui "Rgba8ui" -> Just Rgba8ui "R32ui" -> Just R32ui "Rgb10a2ui" -> Just Rgb10a2ui "Rg32ui" -> Just Rg32ui "Rg16ui" -> Just Rg16ui "Rg8ui" -> Just Rg8ui "R16ui" -> Just R16ui "R8ui" -> Just R8ui "R64ui" -> Just R64ui "R64i" -> Just R64i _unknown -> Nothing instance Read ImageFormat where readPrec = Read.parens do Lex.Ident s <- Read.lexP maybe pfail pure $ fromName s