module Graphics.XHB.Gen.DRI2.Types (deserializeError, deserializeEvent, Attachment(..), DriverType(..), DRI2Buffer(..), AttachFormat(..), QueryVersion(..), QueryVersionReply(..), Connect(..), ConnectReply(..), Authenticate(..), AuthenticateReply(..), CreateDrawable(..), DestroyDrawable(..), GetBuffers(..), GetBuffersReply(..), CopyRegion(..), CopyRegionReply(..), GetBuffersWithFormat(..), GetBuffersWithFormatReply(..)) where import Data.Word import Data.Int import Foreign.C.Types import Data.Bits import Data.Binary.Put import Data.Binary.Get import Data.Typeable import Control.Monad import Control.Exception import Data.List import Graphics.XHB.Shared hiding (Event, Error) import qualified Graphics.XHB.Shared import Graphics.XHB.Gen.Xproto.Types hiding (deserializeError, deserializeEvent) import qualified Graphics.XHB.Gen.Xproto.Types deserializeError :: Word8 -> Maybe (Get SomeError) deserializeError _ = Nothing deserializeEvent :: Word8 -> Maybe (Get SomeEvent) deserializeEvent _ = Nothing data Attachment = AttachmentBufferFrontLeft | AttachmentBufferBackLeft | AttachmentBufferFrontRight | AttachmentBufferBackRight | AttachmentBufferDepth | AttachmentBufferStencil | AttachmentBufferAccum | AttachmentBufferFakeFrontLeft | AttachmentBufferFakeFrontRight | AttachmentBufferDepthStencil deriving Show instance SimpleEnum Attachment where toValue AttachmentBufferFrontLeft{} = 0 toValue AttachmentBufferBackLeft{} = 1 toValue AttachmentBufferFrontRight{} = 2 toValue AttachmentBufferBackRight{} = 3 toValue AttachmentBufferDepth{} = 4 toValue AttachmentBufferStencil{} = 5 toValue AttachmentBufferAccum{} = 6 toValue AttachmentBufferFakeFrontLeft{} = 7 toValue AttachmentBufferFakeFrontRight{} = 8 toValue AttachmentBufferDepthStencil{} = 9 fromValue 0 = AttachmentBufferFrontLeft fromValue 1 = AttachmentBufferBackLeft fromValue 2 = AttachmentBufferFrontRight fromValue 3 = AttachmentBufferBackRight fromValue 4 = AttachmentBufferDepth fromValue 5 = AttachmentBufferStencil fromValue 6 = AttachmentBufferAccum fromValue 7 = AttachmentBufferFakeFrontLeft fromValue 8 = AttachmentBufferFakeFrontRight fromValue 9 = AttachmentBufferDepthStencil data DriverType = DriverTypeDRI deriving Show instance SimpleEnum DriverType where toValue DriverTypeDRI{} = 0 fromValue 0 = DriverTypeDRI data DRI2Buffer = MkDRI2Buffer{attachment_DRI2Buffer :: Attachment, name_DRI2Buffer :: Word32, pitch_DRI2Buffer :: Word32, cpp_DRI2Buffer :: Word32, flags_DRI2Buffer :: Word32} deriving (Show, Typeable) instance Serialize DRI2Buffer where serialize x = do serialize (toValue (attachment_DRI2Buffer x) :: Word32) serialize (name_DRI2Buffer x) serialize (pitch_DRI2Buffer x) serialize (cpp_DRI2Buffer x) serialize (flags_DRI2Buffer x) size x = size (undefined :: Word32) + size (name_DRI2Buffer x) + size (pitch_DRI2Buffer x) + size (cpp_DRI2Buffer x) + size (flags_DRI2Buffer x) instance Deserialize DRI2Buffer where deserialize = do attachment <- liftM fromValue (deserialize :: Get Word32) name <- deserialize pitch <- deserialize cpp <- deserialize flags <- deserialize return (MkDRI2Buffer attachment name pitch cpp flags) data AttachFormat = MkAttachFormat{attachment_AttachFormat :: Attachment, format_AttachFormat :: Word32} deriving (Show, Typeable) instance Serialize AttachFormat where serialize x = do serialize (toValue (attachment_AttachFormat x) :: Word32) serialize (format_AttachFormat x) size x = size (undefined :: Word32) + size (format_AttachFormat x) instance Deserialize AttachFormat where deserialize = do attachment <- liftM fromValue (deserialize :: Get Word32) format <- deserialize return (MkAttachFormat attachment format) data QueryVersion = MkQueryVersion{major_version_QueryVersion :: Word32, minor_version_QueryVersion :: Word32} deriving (Show, Typeable) instance ExtensionRequest QueryVersion where extensionId _ = "DRI2" serializeRequest x extOpCode = do putWord8 extOpCode putWord8 0 let size__ = 4 + size (major_version_QueryVersion x) + size (minor_version_QueryVersion x) serialize (convertBytesToRequestSize size__ :: Int16) serialize (major_version_QueryVersion x) serialize (minor_version_QueryVersion x) putSkip (requiredPadding size__) data QueryVersionReply = MkQueryVersionReply{major_version_QueryVersionReply :: Word32, minor_version_QueryVersionReply :: Word32} deriving (Show, Typeable) instance Deserialize QueryVersionReply where deserialize = do skip 1 skip 1 skip 2 length <- deserialize major_version <- deserialize minor_version <- deserialize let _ = isCard32 length return (MkQueryVersionReply major_version minor_version) data Connect = MkConnect{window_Connect :: WINDOW, driver_type_Connect :: DriverType} deriving (Show, Typeable) instance ExtensionRequest Connect where extensionId _ = "DRI2" serializeRequest x extOpCode = do putWord8 extOpCode putWord8 1 let size__ = 4 + size (window_Connect x) + size (undefined :: Word32) serialize (convertBytesToRequestSize size__ :: Int16) serialize (window_Connect x) serialize (toValue (driver_type_Connect x) :: Word32) putSkip (requiredPadding size__) data ConnectReply = MkConnectReply{driver_name_length_ConnectReply :: Word32, device_name_length_ConnectReply :: Word32, driver_name_ConnectReply :: [CChar], device_name_ConnectReply :: [CChar]} deriving (Show, Typeable) instance Deserialize ConnectReply where deserialize = do skip 1 skip 1 skip 2 length <- deserialize driver_name_length <- deserialize device_name_length <- deserialize skip 16 driver_name <- deserializeList (fromIntegral driver_name_length) device_name <- deserializeList (fromIntegral device_name_length) let _ = isCard32 length return (MkConnectReply driver_name_length device_name_length driver_name device_name) data Authenticate = MkAuthenticate{window_Authenticate :: WINDOW, magic_Authenticate :: Word32} deriving (Show, Typeable) instance ExtensionRequest Authenticate where extensionId _ = "DRI2" serializeRequest x extOpCode = do putWord8 extOpCode putWord8 2 let size__ = 4 + size (window_Authenticate x) + size (magic_Authenticate x) serialize (convertBytesToRequestSize size__ :: Int16) serialize (window_Authenticate x) serialize (magic_Authenticate x) putSkip (requiredPadding size__) data AuthenticateReply = MkAuthenticateReply{authenticated_AuthenticateReply :: Word32} deriving (Show, Typeable) instance Deserialize AuthenticateReply where deserialize = do skip 1 skip 1 skip 2 length <- deserialize authenticated <- deserialize let _ = isCard32 length return (MkAuthenticateReply authenticated) data CreateDrawable = MkCreateDrawable{drawable_CreateDrawable :: DRAWABLE} deriving (Show, Typeable) instance ExtensionRequest CreateDrawable where extensionId _ = "DRI2" serializeRequest x extOpCode = do putWord8 extOpCode putWord8 3 let size__ = 4 + size (drawable_CreateDrawable x) serialize (convertBytesToRequestSize size__ :: Int16) serialize (drawable_CreateDrawable x) putSkip (requiredPadding size__) data DestroyDrawable = MkDestroyDrawable{drawable_DestroyDrawable :: DRAWABLE} deriving (Show, Typeable) instance ExtensionRequest DestroyDrawable where extensionId _ = "DRI2" serializeRequest x extOpCode = do putWord8 extOpCode putWord8 4 let size__ = 4 + size (drawable_DestroyDrawable x) serialize (convertBytesToRequestSize size__ :: Int16) serialize (drawable_DestroyDrawable x) putSkip (requiredPadding size__) data GetBuffers = MkGetBuffers{drawable_GetBuffers :: DRAWABLE, count_GetBuffers :: Word32, attachments_GetBuffers :: [Word32]} deriving (Show, Typeable) instance ExtensionRequest GetBuffers where extensionId _ = "DRI2" serializeRequest x extOpCode = do putWord8 extOpCode putWord8 5 let size__ = 4 + size (drawable_GetBuffers x) + size (count_GetBuffers x) + sum (map size (attachments_GetBuffers x)) serialize (convertBytesToRequestSize size__ :: Int16) serialize (drawable_GetBuffers x) serialize (count_GetBuffers x) serializeList (attachments_GetBuffers x) putSkip (requiredPadding size__) data GetBuffersReply = MkGetBuffersReply{width_GetBuffersReply :: Word32, height_GetBuffersReply :: Word32, count_GetBuffersReply :: Word32, buffers_GetBuffersReply :: [DRI2Buffer]} deriving (Show, Typeable) instance Deserialize GetBuffersReply where deserialize = do skip 1 skip 1 skip 2 length <- deserialize width <- deserialize height <- deserialize count <- deserialize skip 12 buffers <- deserializeList (fromIntegral count) let _ = isCard32 length return (MkGetBuffersReply width height count buffers) data CopyRegion = MkCopyRegion{drawable_CopyRegion :: DRAWABLE, region_CopyRegion :: Word32, dest_CopyRegion :: Word32, src_CopyRegion :: Word32} deriving (Show, Typeable) instance ExtensionRequest CopyRegion where extensionId _ = "DRI2" serializeRequest x extOpCode = do putWord8 extOpCode putWord8 6 let size__ = 4 + size (drawable_CopyRegion x) + size (region_CopyRegion x) + size (dest_CopyRegion x) + size (src_CopyRegion x) serialize (convertBytesToRequestSize size__ :: Int16) serialize (drawable_CopyRegion x) serialize (region_CopyRegion x) serialize (dest_CopyRegion x) serialize (src_CopyRegion x) putSkip (requiredPadding size__) data CopyRegionReply = MkCopyRegionReply{} deriving (Show, Typeable) instance Deserialize CopyRegionReply where deserialize = do skip 1 skip 1 skip 2 length <- deserialize let _ = isCard32 length return (MkCopyRegionReply) data GetBuffersWithFormat = MkGetBuffersWithFormat{drawable_GetBuffersWithFormat :: DRAWABLE, count_GetBuffersWithFormat :: Word32, attachments_GetBuffersWithFormat :: [AttachFormat]} deriving (Show, Typeable) instance ExtensionRequest GetBuffersWithFormat where extensionId _ = "DRI2" serializeRequest x extOpCode = do putWord8 extOpCode putWord8 7 let size__ = 4 + size (drawable_GetBuffersWithFormat x) + size (count_GetBuffersWithFormat x) + sum (map size (attachments_GetBuffersWithFormat x)) serialize (convertBytesToRequestSize size__ :: Int16) serialize (drawable_GetBuffersWithFormat x) serialize (count_GetBuffersWithFormat x) serializeList (attachments_GetBuffersWithFormat x) putSkip (requiredPadding size__) data GetBuffersWithFormatReply = MkGetBuffersWithFormatReply{width_GetBuffersWithFormatReply :: Word32, height_GetBuffersWithFormatReply :: Word32, count_GetBuffersWithFormatReply :: Word32, buffers_GetBuffersWithFormatReply :: [DRI2Buffer]} deriving (Show, Typeable) instance Deserialize GetBuffersWithFormatReply where deserialize = do skip 1 skip 1 skip 2 length <- deserialize width <- deserialize height <- deserialize count <- deserialize skip 12 buffers <- deserializeList (fromIntegral count) let _ = isCard32 length return (MkGetBuffersWithFormatReply width height count buffers)