module Graphics.XHB.Gen.RandR
       (extension, queryVersion, setScreenConfig, selectInput,
        getScreenInfo, getScreenSizeRange, setScreenSize,
        getScreenResources, getOutputInfo, listOutputProperties,
        queryOutputProperty, configureOutputProperty, changeOutputProperty,
        deleteOutputProperty, getOutputProperty, createMode, destroyMode,
        addOutputMode, deleteOutputMode, getCrtcInfo, setCrtcConfig,
        getCrtcGammaSize, getCrtcGamma, setCrtcGamma,
        module Graphics.XHB.Gen.RandR.Types)
       where
import Graphics.XHB.Gen.RandR.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 (deserializeError, deserializeEvent)
import qualified Graphics.XHB.Gen.Xproto.Types
 
extension :: ExtensionId
extension = "RANDR"
 
queryVersion ::
               Graphics.XHB.Connection.Types.Connection ->
                 CARD32 -> CARD32 -> IO (Receipt QueryVersionReply)
queryVersion c major_version minor_version
  = do receipt <- newEmptyReceiptIO
       let req = MkQueryVersion major_version minor_version
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequestWithReply c chunk receipt
       return receipt
 
setScreenConfig ::
                  Graphics.XHB.Connection.Types.Connection ->
                    SetScreenConfig -> IO (Receipt SetScreenConfigReply)
setScreenConfig c req
  = do receipt <- newEmptyReceiptIO
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequestWithReply c chunk receipt
       return receipt
 
selectInput ::
              Graphics.XHB.Connection.Types.Connection ->
                WINDOW -> CARD16 -> IO ()
selectInput c window enable
  = do let req = MkSelectInput window enable
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequest c chunk
 
getScreenInfo ::
                Graphics.XHB.Connection.Types.Connection ->
                  WINDOW -> IO (Receipt GetScreenInfoReply)
getScreenInfo c window
  = do receipt <- newEmptyReceiptIO
       let req = MkGetScreenInfo window
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequestWithReply c chunk receipt
       return receipt
 
getScreenSizeRange ::
                     Graphics.XHB.Connection.Types.Connection ->
                       WINDOW -> IO (Receipt GetScreenSizeRangeReply)
getScreenSizeRange c window
  = do receipt <- newEmptyReceiptIO
       let req = MkGetScreenSizeRange window
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequestWithReply c chunk receipt
       return receipt
 
setScreenSize ::
                Graphics.XHB.Connection.Types.Connection -> SetScreenSize -> IO ()
setScreenSize c req
  = do putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequest c chunk
 
getScreenResources ::
                     Graphics.XHB.Connection.Types.Connection ->
                       WINDOW -> IO (Receipt GetScreenResourcesReply)
getScreenResources c window
  = do receipt <- newEmptyReceiptIO
       let req = MkGetScreenResources window
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequestWithReply c chunk receipt
       return receipt
 
getOutputInfo ::
                Graphics.XHB.Connection.Types.Connection ->
                  OUTPUT -> TIMESTAMP -> IO (Receipt GetOutputInfoReply)
getOutputInfo c output config_timestamp
  = do receipt <- newEmptyReceiptIO
       let req = MkGetOutputInfo output config_timestamp
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequestWithReply c chunk receipt
       return receipt
 
listOutputProperties ::
                       Graphics.XHB.Connection.Types.Connection ->
                         OUTPUT -> IO (Receipt ListOutputPropertiesReply)
listOutputProperties c output
  = do receipt <- newEmptyReceiptIO
       let req = MkListOutputProperties output
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequestWithReply c chunk receipt
       return receipt
 
queryOutputProperty ::
                      Graphics.XHB.Connection.Types.Connection ->
                        OUTPUT -> ATOM -> IO (Receipt QueryOutputPropertyReply)
queryOutputProperty c output property
  = do receipt <- newEmptyReceiptIO
       let req = MkQueryOutputProperty output property
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequestWithReply c chunk receipt
       return receipt
 
configureOutputProperty ::
                          Graphics.XHB.Connection.Types.Connection ->
                            ConfigureOutputProperty -> IO ()
configureOutputProperty c req
  = do putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequest c chunk
 
changeOutputProperty ::
                       Graphics.XHB.Connection.Types.Connection ->
                         ChangeOutputProperty -> IO ()
changeOutputProperty c req
  = do putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequest c chunk
 
deleteOutputProperty ::
                       Graphics.XHB.Connection.Types.Connection -> OUTPUT -> ATOM -> IO ()
deleteOutputProperty c output property
  = do let req = MkDeleteOutputProperty output property
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequest c chunk
 
getOutputProperty ::
                    Graphics.XHB.Connection.Types.Connection ->
                      GetOutputProperty -> IO (Receipt GetOutputPropertyReply)
getOutputProperty c req
  = do receipt <- newEmptyReceiptIO
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequestWithReply c chunk receipt
       return receipt
 
createMode ::
             Graphics.XHB.Connection.Types.Connection ->
               CreateMode -> IO (Receipt CreateModeReply)
createMode c req
  = do receipt <- newEmptyReceiptIO
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequestWithReply c chunk receipt
       return receipt
 
destroyMode ::
              Graphics.XHB.Connection.Types.Connection -> MODE -> IO ()
destroyMode c mode
  = do let req = MkDestroyMode mode
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequest c chunk
 
addOutputMode ::
                Graphics.XHB.Connection.Types.Connection -> OUTPUT -> MODE -> IO ()
addOutputMode c output mode
  = do let req = MkAddOutputMode output mode
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequest c chunk
 
deleteOutputMode ::
                   Graphics.XHB.Connection.Types.Connection -> OUTPUT -> MODE -> IO ()
deleteOutputMode c output mode
  = do let req = MkDeleteOutputMode output mode
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequest c chunk
 
getCrtcInfo ::
              Graphics.XHB.Connection.Types.Connection ->
                CRTC -> TIMESTAMP -> IO (Receipt GetCrtcInfoReply)
getCrtcInfo c crtc config_timestamp
  = do receipt <- newEmptyReceiptIO
       let req = MkGetCrtcInfo crtc config_timestamp
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequestWithReply c chunk receipt
       return receipt
 
setCrtcConfig ::
                Graphics.XHB.Connection.Types.Connection ->
                  SetCrtcConfig -> IO (Receipt SetCrtcConfigReply)
setCrtcConfig c req
  = do receipt <- newEmptyReceiptIO
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequestWithReply c chunk receipt
       return receipt
 
getCrtcGammaSize ::
                   Graphics.XHB.Connection.Types.Connection ->
                     CRTC -> IO (Receipt GetCrtcGammaSizeReply)
getCrtcGammaSize c crtc
  = do receipt <- newEmptyReceiptIO
       let req = MkGetCrtcGammaSize crtc
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequestWithReply c chunk receipt
       return receipt
 
getCrtcGamma ::
               Graphics.XHB.Connection.Types.Connection ->
                 CRTC -> IO (Receipt GetCrtcGammaReply)
getCrtcGamma c crtc
  = do receipt <- newEmptyReceiptIO
       let req = MkGetCrtcGamma crtc
       putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequestWithReply c chunk receipt
       return receipt
 
setCrtcGamma ::
               Graphics.XHB.Connection.Types.Connection -> SetCrtcGamma -> IO ()
setCrtcGamma c req
  = do putAction <- serializeExtensionRequest c req
       let chunk = runPut putAction
       sendRequest c chunk