lambdacube-engine-0.2.1: Graphics/LambdaCube/PixelFormat.hs
module Graphics.LambdaCube.PixelFormat where
-- | The pixel format used for images, textures, and render surfaces
data PixelFormat
= PF_UNKNOWN -- ^ Unknown pixel format.
| PF_L8 -- ^ 8-bit pixel format, all bits luminace.
-- | PF_BYTE_L = PF_L8
| PF_L16 -- ^ 16-bit pixel format, all bits luminace.
-- | PF_SHORT_L = PF_L16
| PF_A8 -- ^ 8-bit pixel format, all bits alpha.
-- | PF_BYTE_A = PF_A8
| PF_A4L4 -- ^ 8-bit pixel format, 4 bits alpha, 4 bits luminance.
| PF_BYTE_LA -- ^ 2 byte pixel format, 1 byte luminance, 1 byte alpha
| PF_R5G6B5 -- ^ 16-bit pixel format, 5 bits red, 6 bits green, 5 bits blue.
| PF_B5G6R5 -- ^ 16-bit pixel format, 5 bits red, 6 bits green, 5 bits blue.
| PF_R3G3B2 -- ^ 8-bit pixel format, 2 bits blue, 3 bits green, 3 bits red.
| PF_A4R4G4B4 -- ^ 16-bit pixel format, 4 bits for alpha, red, green and blue.
| PF_A1R5G5B5 -- ^ 16-bit pixel format, 5 bits for blue, green, red and 1 for alpha.
| PF_R8G8B8 -- ^ 24-bit pixel format, 8 bits for red, green and blue.
| PF_B8G8R8 -- ^ 24-bit pixel format, 8 bits for blue, green and red.
| PF_A8R8G8B8 -- ^ 32-bit pixel format, 8 bits for alpha, red, green and blue.
| PF_A8B8G8R8 -- ^ 32-bit pixel format, 8 bits for blue, green, red and alpha.
| PF_B8G8R8A8 -- ^ 32-bit pixel format, 8 bits for blue, green, red and alpha.
| PF_R8G8B8A8 -- ^ 32-bit pixel format, 8 bits for red, green, blue and alpha.
| PF_X8R8G8B8 -- ^ 32-bit pixel format, 8 bits for red, 8 bits for green, 8 bits for blue; like PF_A8R8G8B8, but alpha will get discarded
| PF_X8B8G8R8 -- ^ 32-bit pixel format, 8 bits for blue, 8 bits for green, 8 bits for red; like PF_A8B8G8R8, but alpha will get discarded
| PF_A2R10G10B10 -- ^ 32-bit pixel format, 2 bits for alpha, 10 bits for red, green and blue.
| PF_A2B10G10R10 -- ^ 32-bit pixel format, 10 bits for blue, green and red, 2 bits for alpha.
| PF_DXT1 -- ^ DDS (DirectDraw Surface) DXT1 format
| PF_DXT2 -- ^ DDS (DirectDraw Surface) DXT2 format
| PF_DXT3 -- ^ DDS (DirectDraw Surface) DXT3 format
| PF_DXT4 -- ^ DDS (DirectDraw Surface) DXT4 format
| PF_DXT5 -- ^ DDS (DirectDraw Surface) DXT5 format
| PF_FLOAT16_R -- ^ 16-bit pixel format, 16 bits (float) for red
| PF_FLOAT16_RGB -- ^ 48-bit pixel format, 16 bits (float) for red, 16 bits (float) for green, 16 bits (float) for blue
| PF_FLOAT16_RGBA -- ^ 64-bit pixel format, 16 bits (float) for red, 16 bits (float) for green, 16 bits (float) for blue, 16 bits (float) for alpha
| PF_FLOAT32_R -- ^ 16-bit pixel format, 16 bits (float) for red
| PF_FLOAT32_RGB -- ^ 96-bit pixel format, 32 bits (float) for red, 32 bits (float) for green, 32 bits (float) for blue
| PF_FLOAT32_RGBA -- ^ 128-bit pixel format, 32 bits (float) for red, 32 bits (float) for green, 32 bits (float) for blue, 32 bits (float) for alpha
| PF_FLOAT16_GR -- ^ 32-bit, 2-channel s10e5 floating point pixel format, 16-bit green, 16-bit red
| PF_FLOAT32_GR -- ^ 64-bit, 2-channel floating point pixel format, 32-bit green, 32-bit red
| PF_DEPTH -- ^ Depth texture format
| PF_SHORT_RGBA -- ^ 64-bit pixel format, 16 bits for red, green, blue and alpha
| PF_SHORT_GR -- ^ 32-bit pixel format, 16-bit green, 16-bit red
| PF_SHORT_RGB -- ^ 48-bit pixel format, 16 bits for red, green and blue
deriving (Eq,Ord)
-- | Flags defining some on/off properties of pixel formats
data PixelFormatFlags
= PFF_HASALPHA -- ^ This format has an alpha channel
| PFF_COMPRESSED -- ^ This format is compressed. This invalidates the values in elemBytes, elemBits and the bit counts as these might not be fixed in a compressed format.
| PFF_FLOAT -- ^ This is a floating point format
| PFF_DEPTH -- ^ This is a depth format (for depth textures)
| PFF_NATIVEENDIAN -- ^ Format is in native endian. Generally true for the 16, 24 and 32 bits formats which can be represented as machine integers.
| PFF_LUMINANCE -- ^ This is an intensity format instead of a RGB one. The luminance replaces R,G and B. (but not A)
-- | Pixel component format
data PixelComponentType
= PCT_BYTE -- ^ Byte per component (8 bit fixed 0.0..1.0)
| PCT_SHORT -- ^ Short per component (16 bit fixed 0.0..1.0))
| PCT_FLOAT16 -- ^ 16 bit float per component
| PCT_FLOAT32 -- ^ 32 bit float per component