module DirectX9.D3D.Format where import Data.Char ( ord ) import DirectX9.Types type D3DFORMAT = DWORD d3DFMT_UNKNOWN :: D3DFORMAT d3DFMT_UNKNOWN = 0 makeFourCC :: String -> DWORD makeFourCC s = (fromIntegral $ ord $ s !! 0) + (fromIntegral $ ord $ s !! 1) * 256 + (fromIntegral $ ord $ s !! 2) * 256*256 + (fromIntegral $ ord $ s !! 3) * 256*256*256 -- Buffer formats d3DFMT_D16_LOCKABLE,d3DFMT_D32,d3DFMT_D15S1,d3DFMT_D24S8,d3DFMT_D24X8 :: D3DFORMAT d3DFMT_D24X4S4,d3DFMT_D32F_LOCKABLE,d3DFMT_D24FS8,d3DFMT_D16 :: D3DFORMAT d3DFMT_VERTEXDATA,d3DFMT_INDEX16,d3DFMT_INDEX32 :: D3DFORMAT d3DFMT_D16_LOCKABLE = 70 d3DFMT_D32 = 71 d3DFMT_D15S1 = 73 d3DFMT_D24S8 = 75 d3DFMT_D24X8 = 77 d3DFMT_D24X4S4 = 79 d3DFMT_D32F_LOCKABLE = 82 d3DFMT_D24FS8 = 83 d3DFMT_D16 = 80 d3DFMT_VERTEXDATA = 100 d3DFMT_INDEX16 = 101 d3DFMT_INDEX32 = 102 d3DFMT_DXT1,d3DFMT_DXT2,d3DFMT_DXT3,d3DFMT_DXT4,d3DFMT_DXT5 :: D3DFORMAT (d3DFMT_DXT1,d3DFMT_DXT2,d3DFMT_DXT3,d3DFMT_DXT4,d3DFMT_DXT5) = (makeFourCC "DXT1", makeFourCC "DXT2", makeFourCC "DXT3", makeFourCC "DXT4", makeFourCC "DXT5" ) d3DFMT_R16F, d3DFMT_G16R16F, d3DFMT_A16B16G16R16F :: D3DFORMAT d3DFMT_R16F = 111 d3DFMT_G16R16F = 112 d3DFMT_A16B16G16R16F = 113 d3DFMT_MULTI2_ARGB8,d3DFMT_G8R8_G8B8,d3DFMT_R8G8_B8G8,d3DFMT_UYVY,d3DFMT_YUY2 :: D3DFORMAT (d3DFMT_MULTI2_ARGB8,d3DFMT_G8R8_G8B8,d3DFMT_R8G8_B8G8,d3DFMT_UYVY,d3DFMT_YUY2) = (makeFourCC "MET1", makeFourCC "GRGB", makeFourCC "RGBG", makeFourCC "UYVY", makeFourCC "YUY2") d3DFMT_R32F,d3DFMT_G32R32F,d3DFMT_A32B32G32R32F :: D3DFORMAT d3DFMT_R32F = 114 d3DFMT_G32R32F = 115 d3DFMT_A32B32G32R32F = 116 d3DFMT_L6V5U5,d3DFMT_X8L8V8U8,d3DFMT_A2W10V10U10 :: D3DFORMAT d3DFMT_L6V5U5 = 61 d3DFMT_X8L8V8U8 = 62 d3DFMT_A2W10V10U10 = 67 d3DFMT_V8U8,d3DFMT_Q8W8V8U8,d3DFMT_V16U16,d3DFMT_Q16W16V16U16,d3DFMT_CxV8U8 :: D3DFORMAT d3DFMT_V8U8 = 60 d3DFMT_Q8W8V8U8 = 63 d3DFMT_V16U16 = 64 d3DFMT_Q16W16V16U16 = 110 d3DFMT_CxV8U8 = 117 d3DFMT_R8G8B8,d3DFMT_A8R8G8B8,d3DFMT_X8R8G8B8,d3DFMT_R5G6B5,d3DFMT_X1R5G5B5 :: D3DFORMAT d3DFMT_A1R5G5B5,d3DFMT_A4R4G4B4,d3DFMT_R3G3B2,d3DFMT_A8,d3DFMT_A8R3G3B2 :: D3DFORMAT d3DFMT_X4R4G4B4,d3DFMT_A2B10G10R10,d3DFMT_A8B8G8R8,d3DFMT_X8B8G8R8,d3DFMT_G16R16 :: D3DFORMAT d3DFMT_A2R10G10B10,d3DFMT_A16B16G16R16,d3DFMT_A8P8,d3DFMT_P8,d3DFMT_L8 :: D3DFORMAT d3DFMT_L16,d3DFMT_A8L8,d3DFMT_A4L4 :: D3DFORMAT d3DFMT_R8G8B8 = 20 d3DFMT_A8R8G8B8 = 21 d3DFMT_X8R8G8B8 = 22 d3DFMT_R5G6B5 = 23 d3DFMT_X1R5G5B5 = 24 d3DFMT_A1R5G5B5 = 25 d3DFMT_A4R4G4B4 = 26 d3DFMT_R3G3B2 = 27 d3DFMT_A8 = 28 d3DFMT_A8R3G3B2 = 29 d3DFMT_X4R4G4B4 = 30 d3DFMT_A2B10G10R10 = 31 d3DFMT_A8B8G8R8 = 32 d3DFMT_X8B8G8R8 = 33 d3DFMT_G16R16 = 34 d3DFMT_A2R10G10B10 = 35 d3DFMT_A16B16G16R16 = 36 d3DFMT_A8P8 = 40 d3DFMT_P8 = 41 d3DFMT_L8 = 50 d3DFMT_L16 = 81 d3DFMT_A8L8 = 51 d3DFMT_A4L4 = 52 modeBits :: D3DFORMAT -> Int modeBits f | f==d3DFMT_A1R5G5B5 = 16 | f==d3DFMT_A2R10G10B10 = 32 | f==d3DFMT_A8R8G8B8 = 32 | f==d3DFMT_R5G6B5 = 16 | f==d3DFMT_X1R5G5B5 = 16 | f==d3DFMT_X8R8G8B8 = 32 | otherwise = 0 validConversionTargets :: [D3DFORMAT] validConversionTargets = [ d3DFMT_X1R5G5B5, d3DFMT_A1R5G5B5, d3DFMT_R5G6B5, d3DFMT_R8G8B8 , d3DFMT_X8R8G8B8, d3DFMT_A8R8G8B8, d3DFMT_A2R10G10B10 , d3DFMT_A16B16G16R16, d3DFMT_A2B10G10R10 , d3DFMT_A8B8G8R8, d3DFMT_X8B8G8R8, d3DFMT_A16B16G16R16F , d3DFMT_A32B32G32R32F] validSurfaceFormats :: [D3DFORMAT] validSurfaceFormats = [d3DFMT_A1R5G5B5, d3DFMT_A2R10G10B10, d3DFMT_A8R8G8B8 , d3DFMT_R5G6B5, d3DFMT_X1R5G5B5, d3DFMT_X8R8G8B8] gdiCompatibleFormats :: [D3DFORMAT] gdiCompatibleFormats = [d3DFMT_X1R5G5B5, d3DFMT_R5G6B5, d3DFMT_X8R8G8B8]