2012-05-11 02:06:22 +02:00
// Package composite is the X client API for the Composite extension.
2012-05-10 23:01:42 +02:00
package composite
/ *
2012-06-05 06:14:34 +02:00
This file was generated by composite . xml on Jun 5 2012 12 : 11 : 58 am EDT .
2012-05-10 23:01:42 +02:00
This file is automatically generated . Edit at your peril !
* /
import (
"github.com/BurntSushi/xgb"
"github.com/BurntSushi/xgb/xfixes"
"github.com/BurntSushi/xgb/xproto"
)
// Init must be called before using the Composite extension.
func Init ( c * xgb . Conn ) error {
reply , err := xproto . QueryExtension ( c , 9 , "Composite" ) . Reply ( )
switch {
case err != nil :
return err
case ! reply . Present :
return xgb . Errorf ( "No extension named Composite could be found on on the server." )
}
xgb . ExtLock . Lock ( )
c . Extensions [ "Composite" ] = reply . MajorOpcode
for evNum , fun := range xgb . NewExtEventFuncs [ "Composite" ] {
xgb . NewEventFuncs [ int ( reply . FirstEvent ) + evNum ] = fun
}
for errNum , fun := range xgb . NewExtErrorFuncs [ "Composite" ] {
xgb . NewErrorFuncs [ int ( reply . FirstError ) + errNum ] = fun
}
xgb . ExtLock . Unlock ( )
return nil
}
func init ( ) {
xgb . NewExtEventFuncs [ "Composite" ] = make ( map [ int ] xgb . NewEventFun )
xgb . NewExtErrorFuncs [ "Composite" ] = make ( map [ int ] xgb . NewErrorFun )
}
2012-05-12 05:58:52 +02:00
// Skipping definition for base type 'Int32'
// Skipping definition for base type 'Void'
// Skipping definition for base type 'Byte'
// Skipping definition for base type 'Int8'
2012-05-10 23:01:42 +02:00
// Skipping definition for base type 'Card16'
// Skipping definition for base type 'Char'
// Skipping definition for base type 'Card32'
// Skipping definition for base type 'Double'
// Skipping definition for base type 'Bool'
2012-06-05 06:14:34 +02:00
// Skipping definition for base type 'Float'
// Skipping definition for base type 'Card8'
// Skipping definition for base type 'Int16'
2012-05-10 23:01:42 +02:00
const (
RedirectAutomatic = 0
RedirectManual = 1
)
2012-05-11 05:57:34 +02:00
// QueryVersionCookie is a cookie used only for QueryVersion requests.
2012-05-10 23:01:42 +02:00
type QueryVersionCookie struct {
* xgb . Cookie
}
2012-05-11 05:57:34 +02:00
// QueryVersion sends a checked request.
// If an error occurs, it will be returned with the reply by calling QueryVersionCookie.Reply()
2012-05-10 23:01:42 +02:00
func QueryVersion ( c * xgb . Conn , ClientMajorVersion uint32 , ClientMinorVersion uint32 ) QueryVersionCookie {
2012-05-12 05:58:52 +02:00
if _ , ok := c . Extensions [ "COMPOSITE" ] ; ! ok {
panic ( "Cannot issue request 'QueryVersion' using the uninitialized extension 'Composite'. composite.Init(connObj) must be called first." )
}
2012-05-10 23:01:42 +02:00
cookie := c . NewCookie ( true , true )
c . NewRequest ( queryVersionRequest ( c , ClientMajorVersion , ClientMinorVersion ) , cookie )
return QueryVersionCookie { cookie }
}
2012-05-11 05:57:34 +02:00
// QueryVersionUnchecked sends an unchecked request.
// If an error occurs, it can only be retrieved using xgb.WaitForEvent or xgb.PollForEvent.
2012-05-10 23:01:42 +02:00
func QueryVersionUnchecked ( c * xgb . Conn , ClientMajorVersion uint32 , ClientMinorVersion uint32 ) QueryVersionCookie {
2012-05-12 05:58:52 +02:00
if _ , ok := c . Extensions [ "COMPOSITE" ] ; ! ok {
panic ( "Cannot issue request 'QueryVersion' using the uninitialized extension 'Composite'. composite.Init(connObj) must be called first." )
}
2012-05-10 23:01:42 +02:00
cookie := c . NewCookie ( false , true )
c . NewRequest ( queryVersionRequest ( c , ClientMajorVersion , ClientMinorVersion ) , cookie )
return QueryVersionCookie { cookie }
}
2012-05-11 05:57:34 +02:00
// QueryVersionReply represents the data returned from a QueryVersion request.
2012-05-10 23:01:42 +02:00
type QueryVersionReply struct {
2012-05-11 05:57:34 +02:00
Sequence uint16 // sequence number of the request for this reply
Length uint32 // number of bytes in this reply
2012-05-10 23:01:42 +02:00
// padding: 1 bytes
MajorVersion uint32
MinorVersion uint32
// padding: 16 bytes
}
2012-05-11 05:57:34 +02:00
// Reply blocks and returns the reply data for a QueryVersion request.
2012-05-10 23:01:42 +02:00
func ( cook QueryVersionCookie ) Reply ( ) ( * QueryVersionReply , error ) {
buf , err := cook . Cookie . Reply ( )
if err != nil {
return nil , err
}
if buf == nil {
return nil , nil
}
return queryVersionReply ( buf ) , nil
}
2012-05-11 05:57:34 +02:00
// queryVersionReply reads a byte slice into a QueryVersionReply value.
2012-05-10 23:01:42 +02:00
func queryVersionReply ( buf [ ] byte ) * QueryVersionReply {
v := new ( QueryVersionReply )
b := 1 // skip reply determinant
b += 1 // padding
v . Sequence = xgb . Get16 ( buf [ b : ] )
b += 2
v . Length = xgb . Get32 ( buf [ b : ] ) // 4-byte units
b += 4
v . MajorVersion = xgb . Get32 ( buf [ b : ] )
b += 4
v . MinorVersion = xgb . Get32 ( buf [ b : ] )
b += 4
b += 16 // padding
return v
}
// Write request to wire for QueryVersion
2012-05-11 05:57:34 +02:00
// queryVersionRequest writes a QueryVersion request to a byte slice.
2012-05-10 23:01:42 +02:00
func queryVersionRequest ( c * xgb . Conn , ClientMajorVersion uint32 , ClientMinorVersion uint32 ) [ ] byte {
size := 12
b := 0
buf := make ( [ ] byte , size )
buf [ b ] = c . Extensions [ "COMPOSITE" ]
b += 1
buf [ b ] = 0 // request opcode
b += 1
xgb . Put16 ( buf [ b : ] , uint16 ( size / 4 ) ) // write request size in 4-byte units
b += 2
xgb . Put32 ( buf [ b : ] , ClientMajorVersion )
b += 4
xgb . Put32 ( buf [ b : ] , ClientMinorVersion )
b += 4
return buf
}
2012-05-11 05:57:34 +02:00
// RedirectWindowCookie is a cookie used only for RedirectWindow requests.
2012-05-10 23:01:42 +02:00
type RedirectWindowCookie struct {
* xgb . Cookie
}
2012-05-11 05:57:34 +02:00
// RedirectWindow sends an unchecked request.
// If an error occurs, it can only be retrieved using xgb.WaitForEvent or xgb.PollForEvent.
2012-05-10 23:01:42 +02:00
func RedirectWindow ( c * xgb . Conn , Window xproto . Window , Update byte ) RedirectWindowCookie {
2012-05-12 05:58:52 +02:00
if _ , ok := c . Extensions [ "COMPOSITE" ] ; ! ok {
panic ( "Cannot issue request 'RedirectWindow' using the uninitialized extension 'Composite'. composite.Init(connObj) must be called first." )
}
2012-05-10 23:01:42 +02:00
cookie := c . NewCookie ( false , false )
c . NewRequest ( redirectWindowRequest ( c , Window , Update ) , cookie )
return RedirectWindowCookie { cookie }
}
2012-05-11 05:57:34 +02:00
// RedirectWindowChecked sends a checked request.
// If an error occurs, it can be retrieved using RedirectWindowCookie.Check()
2012-05-10 23:01:42 +02:00
func RedirectWindowChecked ( c * xgb . Conn , Window xproto . Window , Update byte ) RedirectWindowCookie {
2012-05-12 05:58:52 +02:00
if _ , ok := c . Extensions [ "COMPOSITE" ] ; ! ok {
panic ( "Cannot issue request 'RedirectWindow' using the uninitialized extension 'Composite'. composite.Init(connObj) must be called first." )
}
2012-05-10 23:01:42 +02:00
cookie := c . NewCookie ( true , false )
c . NewRequest ( redirectWindowRequest ( c , Window , Update ) , cookie )
return RedirectWindowCookie { cookie }
}
2012-05-11 05:57:34 +02:00
// Check returns an error if one occurred for checked requests that are not expecting a reply.
// This cannot be called for requests expecting a reply, nor for unchecked requests.
2012-05-10 23:01:42 +02:00
func ( cook RedirectWindowCookie ) Check ( ) error {
return cook . Cookie . Check ( )
}
// Write request to wire for RedirectWindow
2012-05-11 05:57:34 +02:00
// redirectWindowRequest writes a RedirectWindow request to a byte slice.
2012-05-10 23:01:42 +02:00
func redirectWindowRequest ( c * xgb . Conn , Window xproto . Window , Update byte ) [ ] byte {
size := 12
b := 0
buf := make ( [ ] byte , size )
buf [ b ] = c . Extensions [ "COMPOSITE" ]
b += 1
buf [ b ] = 1 // request opcode
b += 1
xgb . Put16 ( buf [ b : ] , uint16 ( size / 4 ) ) // write request size in 4-byte units
b += 2
xgb . Put32 ( buf [ b : ] , uint32 ( Window ) )
b += 4
buf [ b ] = Update
b += 1
b += 3 // padding
return buf
}
2012-05-11 05:57:34 +02:00
// RedirectSubwindowsCookie is a cookie used only for RedirectSubwindows requests.
2012-05-10 23:01:42 +02:00
type RedirectSubwindowsCookie struct {
* xgb . Cookie
}
2012-05-11 05:57:34 +02:00
// RedirectSubwindows sends an unchecked request.
// If an error occurs, it can only be retrieved using xgb.WaitForEvent or xgb.PollForEvent.
2012-05-10 23:01:42 +02:00
func RedirectSubwindows ( c * xgb . Conn , Window xproto . Window , Update byte ) RedirectSubwindowsCookie {
2012-05-12 05:58:52 +02:00
if _ , ok := c . Extensions [ "COMPOSITE" ] ; ! ok {
panic ( "Cannot issue request 'RedirectSubwindows' using the uninitialized extension 'Composite'. composite.Init(connObj) must be called first." )
}
2012-05-10 23:01:42 +02:00
cookie := c . NewCookie ( false , false )
c . NewRequest ( redirectSubwindowsRequest ( c , Window , Update ) , cookie )
return RedirectSubwindowsCookie { cookie }
}
2012-05-11 05:57:34 +02:00
// RedirectSubwindowsChecked sends a checked request.
// If an error occurs, it can be retrieved using RedirectSubwindowsCookie.Check()
2012-05-10 23:01:42 +02:00
func RedirectSubwindowsChecked ( c * xgb . Conn , Window xproto . Window , Update byte ) RedirectSubwindowsCookie {
2012-05-12 05:58:52 +02:00
if _ , ok := c . Extensions [ "COMPOSITE" ] ; ! ok {
panic ( "Cannot issue request 'RedirectSubwindows' using the uninitialized extension 'Composite'. composite.Init(connObj) must be called first." )
}
2012-05-10 23:01:42 +02:00
cookie := c . NewCookie ( true , false )
c . NewRequest ( redirectSubwindowsRequest ( c , Window , Update ) , cookie )
return RedirectSubwindowsCookie { cookie }
}
2012-05-11 05:57:34 +02:00
// Check returns an error if one occurred for checked requests that are not expecting a reply.
// This cannot be called for requests expecting a reply, nor for unchecked requests.
2012-05-10 23:01:42 +02:00
func ( cook RedirectSubwindowsCookie ) Check ( ) error {
return cook . Cookie . Check ( )
}
// Write request to wire for RedirectSubwindows
2012-05-11 05:57:34 +02:00
// redirectSubwindowsRequest writes a RedirectSubwindows request to a byte slice.
2012-05-10 23:01:42 +02:00
func redirectSubwindowsRequest ( c * xgb . Conn , Window xproto . Window , Update byte ) [ ] byte {
size := 12
b := 0
buf := make ( [ ] byte , size )
buf [ b ] = c . Extensions [ "COMPOSITE" ]
b += 1
buf [ b ] = 2 // request opcode
b += 1
xgb . Put16 ( buf [ b : ] , uint16 ( size / 4 ) ) // write request size in 4-byte units
b += 2
xgb . Put32 ( buf [ b : ] , uint32 ( Window ) )
b += 4
buf [ b ] = Update
b += 1
b += 3 // padding
return buf
}
2012-05-11 05:57:34 +02:00
// UnredirectWindowCookie is a cookie used only for UnredirectWindow requests.
2012-05-10 23:01:42 +02:00
type UnredirectWindowCookie struct {
* xgb . Cookie
}
2012-05-11 05:57:34 +02:00
// UnredirectWindow sends an unchecked request.
// If an error occurs, it can only be retrieved using xgb.WaitForEvent or xgb.PollForEvent.
2012-05-10 23:01:42 +02:00
func UnredirectWindow ( c * xgb . Conn , Window xproto . Window , Update byte ) UnredirectWindowCookie {
2012-05-12 05:58:52 +02:00
if _ , ok := c . Extensions [ "COMPOSITE" ] ; ! ok {
panic ( "Cannot issue request 'UnredirectWindow' using the uninitialized extension 'Composite'. composite.Init(connObj) must be called first." )
}
2012-05-10 23:01:42 +02:00
cookie := c . NewCookie ( false , false )
c . NewRequest ( unredirectWindowRequest ( c , Window , Update ) , cookie )
return UnredirectWindowCookie { cookie }
}
2012-05-11 05:57:34 +02:00
// UnredirectWindowChecked sends a checked request.
// If an error occurs, it can be retrieved using UnredirectWindowCookie.Check()
2012-05-10 23:01:42 +02:00
func UnredirectWindowChecked ( c * xgb . Conn , Window xproto . Window , Update byte ) UnredirectWindowCookie {
2012-05-12 05:58:52 +02:00
if _ , ok := c . Extensions [ "COMPOSITE" ] ; ! ok {
panic ( "Cannot issue request 'UnredirectWindow' using the uninitialized extension 'Composite'. composite.Init(connObj) must be called first." )
}
2012-05-10 23:01:42 +02:00
cookie := c . NewCookie ( true , false )
c . NewRequest ( unredirectWindowRequest ( c , Window , Update ) , cookie )
return UnredirectWindowCookie { cookie }
}
2012-05-11 05:57:34 +02:00
// Check returns an error if one occurred for checked requests that are not expecting a reply.
// This cannot be called for requests expecting a reply, nor for unchecked requests.
2012-05-10 23:01:42 +02:00
func ( cook UnredirectWindowCookie ) Check ( ) error {
return cook . Cookie . Check ( )
}
// Write request to wire for UnredirectWindow
2012-05-11 05:57:34 +02:00
// unredirectWindowRequest writes a UnredirectWindow request to a byte slice.
2012-05-10 23:01:42 +02:00
func unredirectWindowRequest ( c * xgb . Conn , Window xproto . Window , Update byte ) [ ] byte {
size := 12
b := 0
buf := make ( [ ] byte , size )
buf [ b ] = c . Extensions [ "COMPOSITE" ]
b += 1
buf [ b ] = 3 // request opcode
b += 1
xgb . Put16 ( buf [ b : ] , uint16 ( size / 4 ) ) // write request size in 4-byte units
b += 2
xgb . Put32 ( buf [ b : ] , uint32 ( Window ) )
b += 4
buf [ b ] = Update
b += 1
b += 3 // padding
return buf
}
2012-05-11 05:57:34 +02:00
// UnredirectSubwindowsCookie is a cookie used only for UnredirectSubwindows requests.
2012-05-10 23:01:42 +02:00
type UnredirectSubwindowsCookie struct {
* xgb . Cookie
}
2012-05-11 05:57:34 +02:00
// UnredirectSubwindows sends an unchecked request.
// If an error occurs, it can only be retrieved using xgb.WaitForEvent or xgb.PollForEvent.
2012-05-10 23:01:42 +02:00
func UnredirectSubwindows ( c * xgb . Conn , Window xproto . Window , Update byte ) UnredirectSubwindowsCookie {
2012-05-12 05:58:52 +02:00
if _ , ok := c . Extensions [ "COMPOSITE" ] ; ! ok {
panic ( "Cannot issue request 'UnredirectSubwindows' using the uninitialized extension 'Composite'. composite.Init(connObj) must be called first." )
}
2012-05-10 23:01:42 +02:00
cookie := c . NewCookie ( false , false )
c . NewRequest ( unredirectSubwindowsRequest ( c , Window , Update ) , cookie )
return UnredirectSubwindowsCookie { cookie }
}
2012-05-11 05:57:34 +02:00
// UnredirectSubwindowsChecked sends a checked request.
// If an error occurs, it can be retrieved using UnredirectSubwindowsCookie.Check()
2012-05-10 23:01:42 +02:00
func UnredirectSubwindowsChecked ( c * xgb . Conn , Window xproto . Window , Update byte ) UnredirectSubwindowsCookie {
2012-05-12 05:58:52 +02:00
if _ , ok := c . Extensions [ "COMPOSITE" ] ; ! ok {
panic ( "Cannot issue request 'UnredirectSubwindows' using the uninitialized extension 'Composite'. composite.Init(connObj) must be called first." )
}
2012-05-10 23:01:42 +02:00
cookie := c . NewCookie ( true , false )
c . NewRequest ( unredirectSubwindowsRequest ( c , Window , Update ) , cookie )
return UnredirectSubwindowsCookie { cookie }
}
2012-05-11 05:57:34 +02:00
// Check returns an error if one occurred for checked requests that are not expecting a reply.
// This cannot be called for requests expecting a reply, nor for unchecked requests.
2012-05-10 23:01:42 +02:00
func ( cook UnredirectSubwindowsCookie ) Check ( ) error {
return cook . Cookie . Check ( )
}
// Write request to wire for UnredirectSubwindows
2012-05-11 05:57:34 +02:00
// unredirectSubwindowsRequest writes a UnredirectSubwindows request to a byte slice.
2012-05-10 23:01:42 +02:00
func unredirectSubwindowsRequest ( c * xgb . Conn , Window xproto . Window , Update byte ) [ ] byte {
size := 12
b := 0
buf := make ( [ ] byte , size )
buf [ b ] = c . Extensions [ "COMPOSITE" ]
b += 1
buf [ b ] = 4 // request opcode
b += 1
xgb . Put16 ( buf [ b : ] , uint16 ( size / 4 ) ) // write request size in 4-byte units
b += 2
xgb . Put32 ( buf [ b : ] , uint32 ( Window ) )
b += 4
buf [ b ] = Update
b += 1
b += 3 // padding
return buf
}
2012-05-11 05:57:34 +02:00
// CreateRegionFromBorderClipCookie is a cookie used only for CreateRegionFromBorderClip requests.
2012-05-10 23:01:42 +02:00
type CreateRegionFromBorderClipCookie struct {
* xgb . Cookie
}
2012-05-11 05:57:34 +02:00
// CreateRegionFromBorderClip sends an unchecked request.
// If an error occurs, it can only be retrieved using xgb.WaitForEvent or xgb.PollForEvent.
2012-05-10 23:01:42 +02:00
func CreateRegionFromBorderClip ( c * xgb . Conn , Region xfixes . Region , Window xproto . Window ) CreateRegionFromBorderClipCookie {
2012-05-12 05:58:52 +02:00
if _ , ok := c . Extensions [ "COMPOSITE" ] ; ! ok {
panic ( "Cannot issue request 'CreateRegionFromBorderClip' using the uninitialized extension 'Composite'. composite.Init(connObj) must be called first." )
}
2012-05-10 23:01:42 +02:00
cookie := c . NewCookie ( false , false )
c . NewRequest ( createRegionFromBorderClipRequest ( c , Region , Window ) , cookie )
return CreateRegionFromBorderClipCookie { cookie }
}
2012-05-11 05:57:34 +02:00
// CreateRegionFromBorderClipChecked sends a checked request.
// If an error occurs, it can be retrieved using CreateRegionFromBorderClipCookie.Check()
2012-05-10 23:01:42 +02:00
func CreateRegionFromBorderClipChecked ( c * xgb . Conn , Region xfixes . Region , Window xproto . Window ) CreateRegionFromBorderClipCookie {
2012-05-12 05:58:52 +02:00
if _ , ok := c . Extensions [ "COMPOSITE" ] ; ! ok {
panic ( "Cannot issue request 'CreateRegionFromBorderClip' using the uninitialized extension 'Composite'. composite.Init(connObj) must be called first." )
}
2012-05-10 23:01:42 +02:00
cookie := c . NewCookie ( true , false )
c . NewRequest ( createRegionFromBorderClipRequest ( c , Region , Window ) , cookie )
return CreateRegionFromBorderClipCookie { cookie }
}
2012-05-11 05:57:34 +02:00
// Check returns an error if one occurred for checked requests that are not expecting a reply.
// This cannot be called for requests expecting a reply, nor for unchecked requests.
2012-05-10 23:01:42 +02:00
func ( cook CreateRegionFromBorderClipCookie ) Check ( ) error {
return cook . Cookie . Check ( )
}
// Write request to wire for CreateRegionFromBorderClip
2012-05-11 05:57:34 +02:00
// createRegionFromBorderClipRequest writes a CreateRegionFromBorderClip request to a byte slice.
2012-05-10 23:01:42 +02:00
func createRegionFromBorderClipRequest ( c * xgb . Conn , Region xfixes . Region , Window xproto . Window ) [ ] byte {
size := 12
b := 0
buf := make ( [ ] byte , size )
buf [ b ] = c . Extensions [ "COMPOSITE" ]
b += 1
buf [ b ] = 5 // request opcode
b += 1
xgb . Put16 ( buf [ b : ] , uint16 ( size / 4 ) ) // write request size in 4-byte units
b += 2
xgb . Put32 ( buf [ b : ] , uint32 ( Region ) )
b += 4
xgb . Put32 ( buf [ b : ] , uint32 ( Window ) )
b += 4
return buf
}
2012-05-11 05:57:34 +02:00
// NameWindowPixmapCookie is a cookie used only for NameWindowPixmap requests.
2012-05-10 23:01:42 +02:00
type NameWindowPixmapCookie struct {
* xgb . Cookie
}
2012-05-11 05:57:34 +02:00
// NameWindowPixmap sends an unchecked request.
// If an error occurs, it can only be retrieved using xgb.WaitForEvent or xgb.PollForEvent.
2012-05-10 23:01:42 +02:00
func NameWindowPixmap ( c * xgb . Conn , Window xproto . Window , Pixmap xproto . Pixmap ) NameWindowPixmapCookie {
2012-05-12 05:58:52 +02:00
if _ , ok := c . Extensions [ "COMPOSITE" ] ; ! ok {
panic ( "Cannot issue request 'NameWindowPixmap' using the uninitialized extension 'Composite'. composite.Init(connObj) must be called first." )
}
2012-05-10 23:01:42 +02:00
cookie := c . NewCookie ( false , false )
c . NewRequest ( nameWindowPixmapRequest ( c , Window , Pixmap ) , cookie )
return NameWindowPixmapCookie { cookie }
}
2012-05-11 05:57:34 +02:00
// NameWindowPixmapChecked sends a checked request.
// If an error occurs, it can be retrieved using NameWindowPixmapCookie.Check()
2012-05-10 23:01:42 +02:00
func NameWindowPixmapChecked ( c * xgb . Conn , Window xproto . Window , Pixmap xproto . Pixmap ) NameWindowPixmapCookie {
2012-05-12 05:58:52 +02:00
if _ , ok := c . Extensions [ "COMPOSITE" ] ; ! ok {
panic ( "Cannot issue request 'NameWindowPixmap' using the uninitialized extension 'Composite'. composite.Init(connObj) must be called first." )
}
2012-05-10 23:01:42 +02:00
cookie := c . NewCookie ( true , false )
c . NewRequest ( nameWindowPixmapRequest ( c , Window , Pixmap ) , cookie )
return NameWindowPixmapCookie { cookie }
}
2012-05-11 05:57:34 +02:00
// Check returns an error if one occurred for checked requests that are not expecting a reply.
// This cannot be called for requests expecting a reply, nor for unchecked requests.
2012-05-10 23:01:42 +02:00
func ( cook NameWindowPixmapCookie ) Check ( ) error {
return cook . Cookie . Check ( )
}
// Write request to wire for NameWindowPixmap
2012-05-11 05:57:34 +02:00
// nameWindowPixmapRequest writes a NameWindowPixmap request to a byte slice.
2012-05-10 23:01:42 +02:00
func nameWindowPixmapRequest ( c * xgb . Conn , Window xproto . Window , Pixmap xproto . Pixmap ) [ ] byte {
size := 12
b := 0
buf := make ( [ ] byte , size )
buf [ b ] = c . Extensions [ "COMPOSITE" ]
b += 1
buf [ b ] = 6 // request opcode
b += 1
xgb . Put16 ( buf [ b : ] , uint16 ( size / 4 ) ) // write request size in 4-byte units
b += 2
xgb . Put32 ( buf [ b : ] , uint32 ( Window ) )
b += 4
xgb . Put32 ( buf [ b : ] , uint32 ( Pixmap ) )
b += 4
return buf
}
2012-05-11 05:57:34 +02:00
// GetOverlayWindowCookie is a cookie used only for GetOverlayWindow requests.
2012-05-10 23:01:42 +02:00
type GetOverlayWindowCookie struct {
* xgb . Cookie
}
2012-05-11 05:57:34 +02:00
// GetOverlayWindow sends a checked request.
// If an error occurs, it will be returned with the reply by calling GetOverlayWindowCookie.Reply()
2012-05-10 23:01:42 +02:00
func GetOverlayWindow ( c * xgb . Conn , Window xproto . Window ) GetOverlayWindowCookie {
2012-05-12 05:58:52 +02:00
if _ , ok := c . Extensions [ "COMPOSITE" ] ; ! ok {
panic ( "Cannot issue request 'GetOverlayWindow' using the uninitialized extension 'Composite'. composite.Init(connObj) must be called first." )
}
2012-05-10 23:01:42 +02:00
cookie := c . NewCookie ( true , true )
c . NewRequest ( getOverlayWindowRequest ( c , Window ) , cookie )
return GetOverlayWindowCookie { cookie }
}
2012-05-11 05:57:34 +02:00
// GetOverlayWindowUnchecked sends an unchecked request.
// If an error occurs, it can only be retrieved using xgb.WaitForEvent or xgb.PollForEvent.
2012-05-10 23:01:42 +02:00
func GetOverlayWindowUnchecked ( c * xgb . Conn , Window xproto . Window ) GetOverlayWindowCookie {
2012-05-12 05:58:52 +02:00
if _ , ok := c . Extensions [ "COMPOSITE" ] ; ! ok {
panic ( "Cannot issue request 'GetOverlayWindow' using the uninitialized extension 'Composite'. composite.Init(connObj) must be called first." )
}
2012-05-10 23:01:42 +02:00
cookie := c . NewCookie ( false , true )
c . NewRequest ( getOverlayWindowRequest ( c , Window ) , cookie )
return GetOverlayWindowCookie { cookie }
}
2012-05-11 05:57:34 +02:00
// GetOverlayWindowReply represents the data returned from a GetOverlayWindow request.
2012-05-10 23:01:42 +02:00
type GetOverlayWindowReply struct {
2012-05-11 05:57:34 +02:00
Sequence uint16 // sequence number of the request for this reply
Length uint32 // number of bytes in this reply
2012-05-10 23:01:42 +02:00
// padding: 1 bytes
OverlayWin xproto . Window
// padding: 20 bytes
}
2012-05-11 05:57:34 +02:00
// Reply blocks and returns the reply data for a GetOverlayWindow request.
2012-05-10 23:01:42 +02:00
func ( cook GetOverlayWindowCookie ) Reply ( ) ( * GetOverlayWindowReply , error ) {
buf , err := cook . Cookie . Reply ( )
if err != nil {
return nil , err
}
if buf == nil {
return nil , nil
}
return getOverlayWindowReply ( buf ) , nil
}
2012-05-11 05:57:34 +02:00
// getOverlayWindowReply reads a byte slice into a GetOverlayWindowReply value.
2012-05-10 23:01:42 +02:00
func getOverlayWindowReply ( buf [ ] byte ) * GetOverlayWindowReply {
v := new ( GetOverlayWindowReply )
b := 1 // skip reply determinant
b += 1 // padding
v . Sequence = xgb . Get16 ( buf [ b : ] )
b += 2
v . Length = xgb . Get32 ( buf [ b : ] ) // 4-byte units
b += 4
v . OverlayWin = xproto . Window ( xgb . Get32 ( buf [ b : ] ) )
b += 4
b += 20 // padding
return v
}
// Write request to wire for GetOverlayWindow
2012-05-11 05:57:34 +02:00
// getOverlayWindowRequest writes a GetOverlayWindow request to a byte slice.
2012-05-10 23:01:42 +02:00
func getOverlayWindowRequest ( c * xgb . Conn , Window xproto . Window ) [ ] byte {
size := 8
b := 0
buf := make ( [ ] byte , size )
buf [ b ] = c . Extensions [ "COMPOSITE" ]
b += 1
buf [ b ] = 7 // request opcode
b += 1
xgb . Put16 ( buf [ b : ] , uint16 ( size / 4 ) ) // write request size in 4-byte units
b += 2
xgb . Put32 ( buf [ b : ] , uint32 ( Window ) )
b += 4
return buf
}
2012-05-11 05:57:34 +02:00
// ReleaseOverlayWindowCookie is a cookie used only for ReleaseOverlayWindow requests.
2012-05-10 23:01:42 +02:00
type ReleaseOverlayWindowCookie struct {
* xgb . Cookie
}
2012-05-11 05:57:34 +02:00
// ReleaseOverlayWindow sends an unchecked request.
// If an error occurs, it can only be retrieved using xgb.WaitForEvent or xgb.PollForEvent.
2012-05-10 23:01:42 +02:00
func ReleaseOverlayWindow ( c * xgb . Conn , Window xproto . Window ) ReleaseOverlayWindowCookie {
2012-05-12 05:58:52 +02:00
if _ , ok := c . Extensions [ "COMPOSITE" ] ; ! ok {
panic ( "Cannot issue request 'ReleaseOverlayWindow' using the uninitialized extension 'Composite'. composite.Init(connObj) must be called first." )
}
2012-05-10 23:01:42 +02:00
cookie := c . NewCookie ( false , false )
c . NewRequest ( releaseOverlayWindowRequest ( c , Window ) , cookie )
return ReleaseOverlayWindowCookie { cookie }
}
2012-05-11 05:57:34 +02:00
// ReleaseOverlayWindowChecked sends a checked request.
// If an error occurs, it can be retrieved using ReleaseOverlayWindowCookie.Check()
2012-05-10 23:01:42 +02:00
func ReleaseOverlayWindowChecked ( c * xgb . Conn , Window xproto . Window ) ReleaseOverlayWindowCookie {
2012-05-12 05:58:52 +02:00
if _ , ok := c . Extensions [ "COMPOSITE" ] ; ! ok {
panic ( "Cannot issue request 'ReleaseOverlayWindow' using the uninitialized extension 'Composite'. composite.Init(connObj) must be called first." )
}
2012-05-10 23:01:42 +02:00
cookie := c . NewCookie ( true , false )
c . NewRequest ( releaseOverlayWindowRequest ( c , Window ) , cookie )
return ReleaseOverlayWindowCookie { cookie }
}
2012-05-11 05:57:34 +02:00
// Check returns an error if one occurred for checked requests that are not expecting a reply.
// This cannot be called for requests expecting a reply, nor for unchecked requests.
2012-05-10 23:01:42 +02:00
func ( cook ReleaseOverlayWindowCookie ) Check ( ) error {
return cook . Cookie . Check ( )
}
// Write request to wire for ReleaseOverlayWindow
2012-05-11 05:57:34 +02:00
// releaseOverlayWindowRequest writes a ReleaseOverlayWindow request to a byte slice.
2012-05-10 23:01:42 +02:00
func releaseOverlayWindowRequest ( c * xgb . Conn , Window xproto . Window ) [ ] byte {
size := 8
b := 0
buf := make ( [ ] byte , size )
buf [ b ] = c . Extensions [ "COMPOSITE" ]
b += 1
buf [ b ] = 8 // request opcode
b += 1
xgb . Put16 ( buf [ b : ] , uint16 ( size / 4 ) ) // write request size in 4-byte units
b += 2
xgb . Put32 ( buf [ b : ] , uint32 ( Window ) )
b += 4
return buf
}