module Graphics.Rendering.OpenGL.GL.DataType (
DataType(..), marshalDataType, unmarshalDataType
) where
import Graphics.Rendering.OpenGL.GL.BasicTypes ( GLenum )
data DataType =
UnsignedByte
| Byte
| UnsignedShort
| Short
| UnsignedInt
| Int
| HalfFloat
| Float
| UnsignedByte332
| UnsignedByte233Rev
| UnsignedShort565
| UnsignedShort565Rev
| UnsignedShort4444
| UnsignedShort4444Rev
| UnsignedShort5551
| UnsignedShort1555Rev
| UnsignedInt8888
| UnsignedInt8888Rev
| UnsignedInt1010102
| UnsignedInt2101010Rev
| UnsignedInt248
| UnsignedInt10f11f11fRev
| UnsignedInt5999Rev
| Float32UnsignedInt248Rev
| Bitmap
| UnsignedShort88
| UnsignedShort88Rev
| Double
| TwoBytes
| ThreeBytes
| FourBytes
deriving ( Eq, Ord, Show )
marshalDataType :: DataType -> GLenum
marshalDataType x = case x of
UnsignedByte -> 0x1401
Byte -> 0x1400
UnsignedShort -> 0x1403
Short -> 0x1402
UnsignedInt -> 0x1405
Int -> 0x1404
HalfFloat -> 0x140B
Float -> 0x1406
UnsignedByte332 -> 0x8032
UnsignedByte233Rev -> 0x8362
UnsignedShort565 -> 0x8363
UnsignedShort565Rev -> 0x8364
UnsignedShort4444 -> 0x8033
UnsignedShort4444Rev -> 0x8365
UnsignedShort5551 -> 0x8034
UnsignedShort1555Rev -> 0x8366
UnsignedInt8888 -> 0x8035
UnsignedInt8888Rev -> 0x8367
UnsignedInt1010102 -> 0x8036
UnsignedInt2101010Rev -> 0x8368
UnsignedInt248 -> 0x84fa
UnsignedInt10f11f11fRev -> 0x8C3B
UnsignedInt5999Rev -> 0x8C3E
Float32UnsignedInt248Rev -> 0x8DAD
Bitmap -> 0x1a00
UnsignedShort88 -> 0x85ba
UnsignedShort88Rev -> 0x85bb
Double -> 0x140a
TwoBytes -> 0x1407
ThreeBytes -> 0x1408
FourBytes -> 0x1409
unmarshalDataType :: GLenum -> DataType
unmarshalDataType x
| x == 0x1401 = UnsignedByte
| x == 0x1400 = Byte
| x == 0x1403 = UnsignedShort
| x == 0x1402 = Short
| x == 0x1405 = UnsignedInt
| x == 0x1404 = Int
| x == 0x140B = HalfFloat
| x == 0x1406 = Float
| x == 0x8032 = UnsignedByte332
| x == 0x8362 = UnsignedByte233Rev
| x == 0x8363 = UnsignedShort565
| x == 0x8364 = UnsignedShort565Rev
| x == 0x8033 = UnsignedShort4444
| x == 0x8365 = UnsignedShort4444Rev
| x == 0x8034 = UnsignedShort5551
| x == 0x8366 = UnsignedShort1555Rev
| x == 0x8035 = UnsignedInt8888
| x == 0x8367 = UnsignedInt8888Rev
| x == 0x8036 = UnsignedInt1010102
| x == 0x8368 = UnsignedInt2101010Rev
| x == 0x84fa = UnsignedInt248
| x == 0x8C3B = UnsignedInt10f11f11fRev
| x == 0x8C3E = UnsignedInt5999Rev
| x == 0x8DAD = Float32UnsignedInt248Rev
| x == 0x1a00 = Bitmap
| x == 0x85ba = UnsignedShort88
| x == 0x85bb = UnsignedShort88Rev
| x == 0x140a = Double
| x == 0x1407 = TwoBytes
| x == 0x1408 = ThreeBytes
| x == 0x1409 = FourBytes
| otherwise = error ("unmarshalDataType: illegal value " ++ show x)