module Graphics.XHB.Gen.Render
       (extension, queryVersion, queryPictFormats, queryPictIndexValues,
        createPicture, changePicture, setPictureClipRectangles,
        freePicture, composite, trapezoids, triangles, triStrip, triFan,
        createGlyphSet, referenceGlyphSet, freeGlyphSet, addGlyphs,
        freeGlyphs, compositeGlyphs8, compositeGlyphs16, compositeGlyphs32,
        fillRectangles, createCursor, setPictureTransform, queryFilters,
        setPictureFilter, createAnimCursor, addTraps, createSolidFill,
        createLinearGradient, createRadialGradient, createConicalGradient,
        module Graphics.XHB.Gen.Render.Types)
       where
import Graphics.XHB.Gen.Render.Types
import Graphics.XHB.Connection.Internal
import Graphics.XHB.Connection.Extension
import Graphics.XHB.Connection.Types
import Control.Concurrent.STM
import Foreign.C.Types
import Data.Binary.Put (runPut)
import Graphics.XHB.Shared hiding (Event(..), Error(..))
import Graphics.XHB.Gen.Xproto.Types
       hiding (CreateCursor(..), deserializeError, deserializeEvent)
import qualified Graphics.XHB.Gen.Xproto.Types
 
extension :: ExtensionId
extension = "RENDER"
 
queryVersion ::
               Graphics.XHB.Connection.Types.Connection ->
                 CARD32 -> CARD32 -> IO (Receipt QueryVersionReply)
queryVersion c client_major_version client_minor_version
  = do receipt <- newEmptyReceiptIO
       let req = MkQueryVersion client_major_version client_minor_version
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequestWithReply c chunk receipt
       return receipt
 
queryPictFormats ::
                   Graphics.XHB.Connection.Types.Connection ->
                     IO (Receipt QueryPictFormatsReply)
queryPictFormats c
  = do receipt <- newEmptyReceiptIO
       let req = MkQueryPictFormats
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequestWithReply c chunk receipt
       return receipt
 
queryPictIndexValues ::
                       Graphics.XHB.Connection.Types.Connection ->
                         PICTFORMAT -> IO (Receipt QueryPictIndexValuesReply)
queryPictIndexValues c format
  = do receipt <- newEmptyReceiptIO
       let req = MkQueryPictIndexValues format
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequestWithReply c chunk receipt
       return receipt
 
createPicture ::
                Graphics.XHB.Connection.Types.Connection -> CreatePicture -> IO ()
createPicture c req
  = do putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequest c chunk
 
changePicture ::
                Graphics.XHB.Connection.Types.Connection ->
                  PICTURE -> ValueParam CARD32 -> IO ()
changePicture c picture value
  = do let req = MkChangePicture picture value
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequest c chunk
 
setPictureClipRectangles ::
                           Graphics.XHB.Connection.Types.Connection ->
                             SetPictureClipRectangles -> IO ()
setPictureClipRectangles c req
  = do putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequest c chunk
 
freePicture ::
              Graphics.XHB.Connection.Types.Connection -> PICTURE -> IO ()
freePicture c picture
  = do let req = MkFreePicture picture
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequest c chunk
 
composite ::
            Graphics.XHB.Connection.Types.Connection -> Composite -> IO ()
composite c req
  = do putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequest c chunk
 
trapezoids ::
             Graphics.XHB.Connection.Types.Connection -> Trapezoids -> IO ()
trapezoids c req
  = do putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequest c chunk
 
triangles ::
            Graphics.XHB.Connection.Types.Connection -> Triangles -> IO ()
triangles c req
  = do putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequest c chunk
 
triStrip ::
           Graphics.XHB.Connection.Types.Connection -> TriStrip -> IO ()
triStrip c req
  = do putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequest c chunk
 
triFan ::
         Graphics.XHB.Connection.Types.Connection -> TriFan -> IO ()
triFan c req
  = do putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequest c chunk
 
createGlyphSet ::
                 Graphics.XHB.Connection.Types.Connection ->
                   GLYPHSET -> PICTFORMAT -> IO ()
createGlyphSet c gsid format
  = do let req = MkCreateGlyphSet gsid format
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequest c chunk
 
referenceGlyphSet ::
                    Graphics.XHB.Connection.Types.Connection ->
                      GLYPHSET -> GLYPHSET -> IO ()
referenceGlyphSet c gsid existing
  = do let req = MkReferenceGlyphSet gsid existing
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequest c chunk
 
freeGlyphSet ::
               Graphics.XHB.Connection.Types.Connection -> GLYPHSET -> IO ()
freeGlyphSet c glyphset
  = do let req = MkFreeGlyphSet glyphset
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequest c chunk
 
addGlyphs ::
            Graphics.XHB.Connection.Types.Connection -> AddGlyphs -> IO ()
addGlyphs c req
  = do putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequest c chunk
 
freeGlyphs ::
             Graphics.XHB.Connection.Types.Connection ->
               GLYPHSET -> [GLYPH] -> IO ()
freeGlyphs c glyphset glyphs
  = do let req = MkFreeGlyphs glyphset glyphs
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequest c chunk
 
compositeGlyphs8 ::
                   Graphics.XHB.Connection.Types.Connection ->
                     CompositeGlyphs8 -> IO ()
compositeGlyphs8 c req
  = do putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequest c chunk
 
compositeGlyphs16 ::
                    Graphics.XHB.Connection.Types.Connection ->
                      CompositeGlyphs16 -> IO ()
compositeGlyphs16 c req
  = do putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequest c chunk
 
compositeGlyphs32 ::
                    Graphics.XHB.Connection.Types.Connection ->
                      CompositeGlyphs32 -> IO ()
compositeGlyphs32 c req
  = do putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequest c chunk
 
fillRectangles ::
                 Graphics.XHB.Connection.Types.Connection -> FillRectangles -> IO ()
fillRectangles c req
  = do putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequest c chunk
 
createCursor ::
               Graphics.XHB.Connection.Types.Connection -> CreateCursor -> IO ()
createCursor c req
  = do putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequest c chunk
 
setPictureTransform ::
                      Graphics.XHB.Connection.Types.Connection ->
                        PICTURE -> TRANSFORM -> IO ()
setPictureTransform c picture transform
  = do let req = MkSetPictureTransform picture transform
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequest c chunk
 
queryFilters ::
               Graphics.XHB.Connection.Types.Connection ->
                 DRAWABLE -> IO (Receipt QueryFiltersReply)
queryFilters c drawable
  = do receipt <- newEmptyReceiptIO
       let req = MkQueryFilters drawable
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequestWithReply c chunk receipt
       return receipt
 
setPictureFilter ::
                   Graphics.XHB.Connection.Types.Connection ->
                     SetPictureFilter -> IO ()
setPictureFilter c req
  = do putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequest c chunk
 
createAnimCursor ::
                   Graphics.XHB.Connection.Types.Connection ->
                     CURSOR -> [ANIMCURSORELT] -> IO ()
createAnimCursor c cid cursors
  = do let req = MkCreateAnimCursor cid cursors
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequest c chunk
 
addTraps ::
           Graphics.XHB.Connection.Types.Connection -> AddTraps -> IO ()
addTraps c req
  = do putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequest c chunk
 
createSolidFill ::
                  Graphics.XHB.Connection.Types.Connection ->
                    PICTURE -> COLOR -> IO ()
createSolidFill c picture color
  = do let req = MkCreateSolidFill picture color
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequest c chunk
 
createLinearGradient ::
                       Graphics.XHB.Connection.Types.Connection ->
                         CreateLinearGradient -> IO ()
createLinearGradient c req
  = do putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequest c chunk
 
createRadialGradient ::
                       Graphics.XHB.Connection.Types.Connection ->
                         CreateRadialGradient -> IO ()
createRadialGradient c req
  = do putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequest c chunk
 
createConicalGradient ::
                        Graphics.XHB.Connection.Types.Connection ->
                          CreateConicalGradient -> IO ()
createConicalGradient c req
  = do putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequest c chunk