aboutsummaryrefslogtreecommitdiff
path: root/nexgb/randr/randr.go
diff options
context:
space:
mode:
Diffstat (limited to 'nexgb/randr/randr.go')
-rw-r--r--nexgb/randr/randr.go3964
1 files changed, 3964 insertions, 0 deletions
diff --git a/nexgb/randr/randr.go b/nexgb/randr/randr.go
new file mode 100644
index 0000000..4d78691
--- /dev/null
+++ b/nexgb/randr/randr.go
@@ -0,0 +1,3964 @@
+package randr
+
+/*
+ This file was generated by randr.xml on May 10 2012 4:20:27pm EDT.
+ This file is automatically generated. Edit at your peril!
+*/
+
+import (
+ "github.com/BurntSushi/xgb"
+
+ "github.com/BurntSushi/xgb/render"
+ "github.com/BurntSushi/xgb/xproto"
+)
+
+// Init must be called before using the RANDR extension.
+func Init(c *xgb.Conn) error {
+ reply, err := xproto.QueryExtension(c, 5, "RANDR").Reply()
+ switch {
+ case err != nil:
+ return err
+ case !reply.Present:
+ return xgb.Errorf("No extension named RANDR could be found on on the server.")
+ }
+
+ xgb.ExtLock.Lock()
+ c.Extensions["RANDR"] = reply.MajorOpcode
+ for evNum, fun := range xgb.NewExtEventFuncs["RANDR"] {
+ xgb.NewEventFuncs[int(reply.FirstEvent)+evNum] = fun
+ }
+ for errNum, fun := range xgb.NewExtErrorFuncs["RANDR"] {
+ xgb.NewErrorFuncs[int(reply.FirstError)+errNum] = fun
+ }
+ xgb.ExtLock.Unlock()
+
+ return nil
+}
+
+func init() {
+ xgb.NewExtEventFuncs["RANDR"] = make(map[int]xgb.NewEventFun)
+ xgb.NewExtErrorFuncs["RANDR"] = make(map[int]xgb.NewErrorFun)
+}
+
+// Skipping definition for base type 'Int32'
+
+// Skipping definition for base type 'Void'
+
+// Skipping definition for base type 'Byte'
+
+// Skipping definition for base type 'Int8'
+
+// 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'
+
+// Skipping definition for base type 'Float'
+
+// Skipping definition for base type 'Card8'
+
+// Skipping definition for base type 'Int16'
+
+const (
+ RotationRotate0 = 1
+ RotationRotate90 = 2
+ RotationRotate180 = 4
+ RotationRotate270 = 8
+ RotationReflectX = 16
+ RotationReflectY = 32
+)
+
+const (
+ SetConfigSuccess = 0
+ SetConfigInvalidConfigTime = 1
+ SetConfigInvalidTime = 2
+ SetConfigFailed = 3
+)
+
+const (
+ NotifyMaskScreenChange = 1
+ NotifyMaskCrtcChange = 2
+ NotifyMaskOutputChange = 4
+ NotifyMaskOutputProperty = 8
+)
+
+const (
+ ModeFlagHsyncPositive = 1
+ ModeFlagHsyncNegative = 2
+ ModeFlagVsyncPositive = 4
+ ModeFlagVsyncNegative = 8
+ ModeFlagInterlace = 16
+ ModeFlagDoubleScan = 32
+ ModeFlagCsync = 64
+ ModeFlagCsyncPositive = 128
+ ModeFlagCsyncNegative = 256
+ ModeFlagHskewPresent = 512
+ ModeFlagBcast = 1024
+ ModeFlagPixelMultiplex = 2048
+ ModeFlagDoubleClock = 4096
+ ModeFlagHalveClock = 8192
+)
+
+const (
+ ConnectionConnected = 0
+ ConnectionDisconnected = 1
+ ConnectionUnknown = 2
+)
+
+const (
+ NotifyCrtcChange = 0
+ NotifyOutputChange = 1
+ NotifyOutputProperty = 2
+)
+
+type Mode uint32
+
+func NewModeId(c *xgb.Conn) (Mode, error) {
+ id, err := c.NewId()
+ if err != nil {
+ return 0, err
+ }
+ return Mode(id), nil
+}
+
+type Crtc uint32
+
+func NewCrtcId(c *xgb.Conn) (Crtc, error) {
+ id, err := c.NewId()
+ if err != nil {
+ return 0, err
+ }
+ return Crtc(id), nil
+}
+
+type Output uint32
+
+func NewOutputId(c *xgb.Conn) (Output, error) {
+ id, err := c.NewId()
+ if err != nil {
+ return 0, err
+ }
+ return Output(id), nil
+}
+
+// 'ScreenSize' struct definition
+// Size: 8
+type ScreenSize struct {
+ Width uint16
+ Height uint16
+ Mwidth uint16
+ Mheight uint16
+}
+
+// Struct read ScreenSize
+func ScreenSizeRead(buf []byte, v *ScreenSize) int {
+ b := 0
+
+ v.Width = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Height = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Mwidth = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Mheight = xgb.Get16(buf[b:])
+ b += 2
+
+ return b
+}
+
+// Struct list read ScreenSize
+func ScreenSizeReadList(buf []byte, dest []ScreenSize) int {
+ b := 0
+ for i := 0; i < len(dest); i++ {
+ dest[i] = ScreenSize{}
+ b += ScreenSizeRead(buf[b:], &dest[i])
+ }
+ return xgb.Pad(b)
+}
+
+// Struct write ScreenSize
+func (v ScreenSize) Bytes() []byte {
+ buf := make([]byte, 8)
+ b := 0
+
+ xgb.Put16(buf[b:], v.Width)
+ b += 2
+
+ xgb.Put16(buf[b:], v.Height)
+ b += 2
+
+ xgb.Put16(buf[b:], v.Mwidth)
+ b += 2
+
+ xgb.Put16(buf[b:], v.Mheight)
+ b += 2
+
+ return buf
+}
+
+// Write struct list ScreenSize
+func ScreenSizeListBytes(buf []byte, list []ScreenSize) int {
+ b := 0
+ var structBytes []byte
+ for _, item := range list {
+ structBytes = item.Bytes()
+ copy(buf[b:], structBytes)
+ b += xgb.Pad(len(structBytes))
+ }
+ return b
+}
+
+// 'RefreshRates' struct definition
+// Size: (2 + xgb.Pad((int(NRates) * 2)))
+type RefreshRates struct {
+ NRates uint16
+ Rates []uint16 // size: xgb.Pad((int(NRates) * 2))
+}
+
+// Struct read RefreshRates
+func RefreshRatesRead(buf []byte, v *RefreshRates) int {
+ b := 0
+
+ v.NRates = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Rates = make([]uint16, v.NRates)
+ for i := 0; i < int(v.NRates); i++ {
+ v.Rates[i] = xgb.Get16(buf[b:])
+ b += 2
+ }
+ b = xgb.Pad(b)
+
+ return b
+}
+
+// Struct list read RefreshRates
+func RefreshRatesReadList(buf []byte, dest []RefreshRates) int {
+ b := 0
+ for i := 0; i < len(dest); i++ {
+ dest[i] = RefreshRates{}
+ b += RefreshRatesRead(buf[b:], &dest[i])
+ }
+ return xgb.Pad(b)
+}
+
+// Struct write RefreshRates
+func (v RefreshRates) Bytes() []byte {
+ buf := make([]byte, (2 + xgb.Pad((int(v.NRates) * 2))))
+ b := 0
+
+ xgb.Put16(buf[b:], v.NRates)
+ b += 2
+
+ for i := 0; i < int(v.NRates); i++ {
+ xgb.Put16(buf[b:], v.Rates[i])
+ b += 2
+ }
+ b = xgb.Pad(b)
+
+ return buf
+}
+
+// Write struct list RefreshRates
+func RefreshRatesListBytes(buf []byte, list []RefreshRates) int {
+ b := 0
+ var structBytes []byte
+ for _, item := range list {
+ structBytes = item.Bytes()
+ copy(buf[b:], structBytes)
+ b += xgb.Pad(len(structBytes))
+ }
+ return b
+}
+
+// Struct list size RefreshRates
+func RefreshRatesListSize(list []RefreshRates) int {
+ size := 0
+ for _, item := range list {
+ size += (2 + xgb.Pad((int(item.NRates) * 2)))
+ }
+ return size
+}
+
+// 'ModeInfo' struct definition
+// Size: 32
+type ModeInfo struct {
+ Id uint32
+ Width uint16
+ Height uint16
+ DotClock uint32
+ HsyncStart uint16
+ HsyncEnd uint16
+ Htotal uint16
+ Hskew uint16
+ VsyncStart uint16
+ VsyncEnd uint16
+ Vtotal uint16
+ NameLen uint16
+ ModeFlags uint32
+}
+
+// Struct read ModeInfo
+func ModeInfoRead(buf []byte, v *ModeInfo) int {
+ b := 0
+
+ v.Id = xgb.Get32(buf[b:])
+ b += 4
+
+ v.Width = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Height = xgb.Get16(buf[b:])
+ b += 2
+
+ v.DotClock = xgb.Get32(buf[b:])
+ b += 4
+
+ v.HsyncStart = xgb.Get16(buf[b:])
+ b += 2
+
+ v.HsyncEnd = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Htotal = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Hskew = xgb.Get16(buf[b:])
+ b += 2
+
+ v.VsyncStart = xgb.Get16(buf[b:])
+ b += 2
+
+ v.VsyncEnd = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Vtotal = xgb.Get16(buf[b:])
+ b += 2
+
+ v.NameLen = xgb.Get16(buf[b:])
+ b += 2
+
+ v.ModeFlags = xgb.Get32(buf[b:])
+ b += 4
+
+ return b
+}
+
+// Struct list read ModeInfo
+func ModeInfoReadList(buf []byte, dest []ModeInfo) int {
+ b := 0
+ for i := 0; i < len(dest); i++ {
+ dest[i] = ModeInfo{}
+ b += ModeInfoRead(buf[b:], &dest[i])
+ }
+ return xgb.Pad(b)
+}
+
+// Struct write ModeInfo
+func (v ModeInfo) Bytes() []byte {
+ buf := make([]byte, 32)
+ b := 0
+
+ xgb.Put32(buf[b:], v.Id)
+ b += 4
+
+ xgb.Put16(buf[b:], v.Width)
+ b += 2
+
+ xgb.Put16(buf[b:], v.Height)
+ b += 2
+
+ xgb.Put32(buf[b:], v.DotClock)
+ b += 4
+
+ xgb.Put16(buf[b:], v.HsyncStart)
+ b += 2
+
+ xgb.Put16(buf[b:], v.HsyncEnd)
+ b += 2
+
+ xgb.Put16(buf[b:], v.Htotal)
+ b += 2
+
+ xgb.Put16(buf[b:], v.Hskew)
+ b += 2
+
+ xgb.Put16(buf[b:], v.VsyncStart)
+ b += 2
+
+ xgb.Put16(buf[b:], v.VsyncEnd)
+ b += 2
+
+ xgb.Put16(buf[b:], v.Vtotal)
+ b += 2
+
+ xgb.Put16(buf[b:], v.NameLen)
+ b += 2
+
+ xgb.Put32(buf[b:], v.ModeFlags)
+ b += 4
+
+ return buf
+}
+
+// Write struct list ModeInfo
+func ModeInfoListBytes(buf []byte, list []ModeInfo) int {
+ b := 0
+ var structBytes []byte
+ for _, item := range list {
+ structBytes = item.Bytes()
+ copy(buf[b:], structBytes)
+ b += xgb.Pad(len(structBytes))
+ }
+ return b
+}
+
+// 'CrtcChange' struct definition
+// Size: 28
+type CrtcChange struct {
+ Timestamp xproto.Timestamp
+ Window xproto.Window
+ Crtc Crtc
+ Mode Mode
+ Rotation uint16
+ // padding: 2 bytes
+ X int16
+ Y int16
+ Width uint16
+ Height uint16
+}
+
+// Struct read CrtcChange
+func CrtcChangeRead(buf []byte, v *CrtcChange) int {
+ b := 0
+
+ v.Timestamp = xproto.Timestamp(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Window = xproto.Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Crtc = Crtc(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Mode = Mode(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Rotation = xgb.Get16(buf[b:])
+ b += 2
+
+ b += 2 // padding
+
+ v.X = int16(xgb.Get16(buf[b:]))
+ b += 2
+
+ v.Y = int16(xgb.Get16(buf[b:]))
+ b += 2
+
+ v.Width = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Height = xgb.Get16(buf[b:])
+ b += 2
+
+ return b
+}
+
+// Struct list read CrtcChange
+func CrtcChangeReadList(buf []byte, dest []CrtcChange) int {
+ b := 0
+ for i := 0; i < len(dest); i++ {
+ dest[i] = CrtcChange{}
+ b += CrtcChangeRead(buf[b:], &dest[i])
+ }
+ return xgb.Pad(b)
+}
+
+// Struct write CrtcChange
+func (v CrtcChange) Bytes() []byte {
+ buf := make([]byte, 28)
+ b := 0
+
+ xgb.Put32(buf[b:], uint32(v.Timestamp))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(v.Window))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(v.Crtc))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(v.Mode))
+ b += 4
+
+ xgb.Put16(buf[b:], v.Rotation)
+ b += 2
+
+ b += 2 // padding
+
+ xgb.Put16(buf[b:], uint16(v.X))
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(v.Y))
+ b += 2
+
+ xgb.Put16(buf[b:], v.Width)
+ b += 2
+
+ xgb.Put16(buf[b:], v.Height)
+ b += 2
+
+ return buf
+}
+
+// Write struct list CrtcChange
+func CrtcChangeListBytes(buf []byte, list []CrtcChange) int {
+ b := 0
+ var structBytes []byte
+ for _, item := range list {
+ structBytes = item.Bytes()
+ copy(buf[b:], structBytes)
+ b += xgb.Pad(len(structBytes))
+ }
+ return b
+}
+
+// 'OutputChange' struct definition
+// Size: 28
+type OutputChange struct {
+ Timestamp xproto.Timestamp
+ ConfigTimestamp xproto.Timestamp
+ Window xproto.Window
+ Output Output
+ Crtc Crtc
+ Mode Mode
+ Rotation uint16
+ Connection byte
+ SubpixelOrder byte
+}
+
+// Struct read OutputChange
+func OutputChangeRead(buf []byte, v *OutputChange) int {
+ b := 0
+
+ v.Timestamp = xproto.Timestamp(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.ConfigTimestamp = xproto.Timestamp(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Window = xproto.Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Output = Output(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Crtc = Crtc(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Mode = Mode(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Rotation = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Connection = buf[b]
+ b += 1
+
+ v.SubpixelOrder = buf[b]
+ b += 1
+
+ return b
+}
+
+// Struct list read OutputChange
+func OutputChangeReadList(buf []byte, dest []OutputChange) int {
+ b := 0
+ for i := 0; i < len(dest); i++ {
+ dest[i] = OutputChange{}
+ b += OutputChangeRead(buf[b:], &dest[i])
+ }
+ return xgb.Pad(b)
+}
+
+// Struct write OutputChange
+func (v OutputChange) Bytes() []byte {
+ buf := make([]byte, 28)
+ b := 0
+
+ xgb.Put32(buf[b:], uint32(v.Timestamp))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(v.ConfigTimestamp))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(v.Window))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(v.Output))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(v.Crtc))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(v.Mode))
+ b += 4
+
+ xgb.Put16(buf[b:], v.Rotation)
+ b += 2
+
+ buf[b] = v.Connection
+ b += 1
+
+ buf[b] = v.SubpixelOrder
+ b += 1
+
+ return buf
+}
+
+// Write struct list OutputChange
+func OutputChangeListBytes(buf []byte, list []OutputChange) int {
+ b := 0
+ var structBytes []byte
+ for _, item := range list {
+ structBytes = item.Bytes()
+ copy(buf[b:], structBytes)
+ b += xgb.Pad(len(structBytes))
+ }
+ return b
+}
+
+// 'OutputProperty' struct definition
+// Size: 28
+type OutputProperty struct {
+ Window xproto.Window
+ Output Output
+ Atom xproto.Atom
+ Timestamp xproto.Timestamp
+ Status byte
+ // padding: 11 bytes
+}
+
+// Struct read OutputProperty
+func OutputPropertyRead(buf []byte, v *OutputProperty) int {
+ b := 0
+
+ v.Window = xproto.Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Output = Output(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Atom = xproto.Atom(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Timestamp = xproto.Timestamp(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Status = buf[b]
+ b += 1
+
+ b += 11 // padding
+
+ return b
+}
+
+// Struct list read OutputProperty
+func OutputPropertyReadList(buf []byte, dest []OutputProperty) int {
+ b := 0
+ for i := 0; i < len(dest); i++ {
+ dest[i] = OutputProperty{}
+ b += OutputPropertyRead(buf[b:], &dest[i])
+ }
+ return xgb.Pad(b)
+}
+
+// Struct write OutputProperty
+func (v OutputProperty) Bytes() []byte {
+ buf := make([]byte, 28)
+ b := 0
+
+ xgb.Put32(buf[b:], uint32(v.Window))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(v.Output))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(v.Atom))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(v.Timestamp))
+ b += 4
+
+ buf[b] = v.Status
+ b += 1
+
+ b += 11 // padding
+
+ return buf
+}
+
+// Write struct list OutputProperty
+func OutputPropertyListBytes(buf []byte, list []OutputProperty) int {
+ b := 0
+ var structBytes []byte
+ for _, item := range list {
+ structBytes = item.Bytes()
+ copy(buf[b:], structBytes)
+ b += xgb.Pad(len(structBytes))
+ }
+ return b
+}
+
+// Union definition NotifyDataUnion
+// Note that to *create* a Union, you should *never* create
+// this struct directly (unless you know what you're doing).
+// Instead use one of the following constructors for 'NotifyDataUnion':
+// NotifyDataUnionCcNew(Cc CrtcChange) NotifyDataUnion
+// NotifyDataUnionOcNew(Oc OutputChange) NotifyDataUnion
+// NotifyDataUnionOpNew(Op OutputProperty) NotifyDataUnion
+type NotifyDataUnion struct {
+ Cc CrtcChange
+ Oc OutputChange
+ Op OutputProperty
+}
+
+// Union constructor for NotifyDataUnion for field Cc.
+func NotifyDataUnionCcNew(Cc CrtcChange) NotifyDataUnion {
+ var b int
+ buf := make([]byte, 28)
+
+ {
+ structBytes := Cc.Bytes()
+ copy(buf[b:], structBytes)
+ b += xgb.Pad(len(structBytes))
+ }
+
+ // Create the Union type
+ v := NotifyDataUnion{}
+
+ // Now copy buf into all fields
+
+ b = 0 // always read the same bytes
+ v.Cc = CrtcChange{}
+ b += CrtcChangeRead(buf[b:], &v.Cc)
+
+ b = 0 // always read the same bytes
+ v.Oc = OutputChange{}
+ b += OutputChangeRead(buf[b:], &v.Oc)
+
+ b = 0 // always read the same bytes
+ v.Op = OutputProperty{}
+ b += OutputPropertyRead(buf[b:], &v.Op)
+
+ return v
+}
+
+// Union constructor for NotifyDataUnion for field Oc.
+func NotifyDataUnionOcNew(Oc OutputChange) NotifyDataUnion {
+ var b int
+ buf := make([]byte, 28)
+
+ {
+ structBytes := Oc.Bytes()
+ copy(buf[b:], structBytes)
+ b += xgb.Pad(len(structBytes))
+ }
+
+ // Create the Union type
+ v := NotifyDataUnion{}
+
+ // Now copy buf into all fields
+
+ b = 0 // always read the same bytes
+ v.Cc = CrtcChange{}
+ b += CrtcChangeRead(buf[b:], &v.Cc)
+
+ b = 0 // always read the same bytes
+ v.Oc = OutputChange{}
+ b += OutputChangeRead(buf[b:], &v.Oc)
+
+ b = 0 // always read the same bytes
+ v.Op = OutputProperty{}
+ b += OutputPropertyRead(buf[b:], &v.Op)
+
+ return v
+}
+
+// Union constructor for NotifyDataUnion for field Op.
+func NotifyDataUnionOpNew(Op OutputProperty) NotifyDataUnion {
+ var b int
+ buf := make([]byte, 28)
+
+ {
+ structBytes := Op.Bytes()
+ copy(buf[b:], structBytes)
+ b += xgb.Pad(len(structBytes))
+ }
+
+ // Create the Union type
+ v := NotifyDataUnion{}
+
+ // Now copy buf into all fields
+
+ b = 0 // always read the same bytes
+ v.Cc = CrtcChange{}
+ b += CrtcChangeRead(buf[b:], &v.Cc)
+
+ b = 0 // always read the same bytes
+ v.Oc = OutputChange{}
+ b += OutputChangeRead(buf[b:], &v.Oc)
+
+ b = 0 // always read the same bytes
+ v.Op = OutputProperty{}
+ b += OutputPropertyRead(buf[b:], &v.Op)
+
+ return v
+}
+
+// Union read NotifyDataUnion
+func NotifyDataUnionRead(buf []byte, v *NotifyDataUnion) int {
+ var b int
+
+ b = 0 // re-read the same bytes
+ v.Cc = CrtcChange{}
+ b += CrtcChangeRead(buf[b:], &v.Cc)
+
+ b = 0 // re-read the same bytes
+ v.Oc = OutputChange{}
+ b += OutputChangeRead(buf[b:], &v.Oc)
+
+ b = 0 // re-read the same bytes
+ v.Op = OutputProperty{}
+ b += OutputPropertyRead(buf[b:], &v.Op)
+
+ return 28
+}
+
+// Union list read NotifyDataUnion
+func NotifyDataUnionReadList(buf []byte, dest []NotifyDataUnion) int {
+ b := 0
+ for i := 0; i < len(dest); i++ {
+ dest[i] = NotifyDataUnion{}
+ b += NotifyDataUnionRead(buf[b:], &dest[i])
+ }
+ return xgb.Pad(b)
+}
+
+// Union write NotifyDataUnion
+// Each field in a union must contain the same data.
+// So simply pick the first field and write that to the wire.
+func (v NotifyDataUnion) Bytes() []byte {
+ buf := make([]byte, 28)
+ b := 0
+
+ {
+ structBytes := v.Cc.Bytes()
+ copy(buf[b:], structBytes)
+ b += xgb.Pad(len(structBytes))
+ }
+ return buf
+}
+
+// Union list write NotifyDataUnion
+func NotifyDataUnionListBytes(buf []byte, list []NotifyDataUnion) int {
+ b := 0
+ var unionBytes []byte
+ for _, item := range list {
+ unionBytes = item.Bytes()
+ copy(buf[b:], unionBytes)
+ b += xgb.Pad(len(unionBytes))
+ }
+ return b
+}
+
+// Event definition ScreenChangeNotify (0)
+// Size: 32
+
+const ScreenChangeNotify = 0
+
+type ScreenChangeNotifyEvent struct {
+ Sequence uint16
+ Rotation byte
+ Timestamp xproto.Timestamp
+ ConfigTimestamp xproto.Timestamp
+ Root xproto.Window
+ RequestWindow xproto.Window
+ SizeID uint16
+ SubpixelOrder uint16
+ Width uint16
+ Height uint16
+ Mwidth uint16
+ Mheight uint16
+}
+
+// Event read ScreenChangeNotify
+func ScreenChangeNotifyEventNew(buf []byte) xgb.Event {
+ v := ScreenChangeNotifyEvent{}
+ b := 1 // don't read event number
+
+ v.Rotation = buf[b]
+ b += 1
+
+ v.Sequence = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Timestamp = xproto.Timestamp(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.ConfigTimestamp = xproto.Timestamp(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Root = xproto.Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.RequestWindow = xproto.Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.SizeID = xgb.Get16(buf[b:])
+ b += 2
+
+ v.SubpixelOrder = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Width = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Height = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Mwidth = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Mheight = xgb.Get16(buf[b:])
+ b += 2
+
+ return v
+}
+
+// Event write ScreenChangeNotify
+func (v ScreenChangeNotifyEvent) Bytes() []byte {
+ buf := make([]byte, 32)
+ b := 0
+
+ // write event number
+ buf[b] = 0
+ b += 1
+
+ buf[b] = v.Rotation
+ b += 1
+
+ b += 2 // skip sequence number
+
+ xgb.Put32(buf[b:], uint32(v.Timestamp))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(v.ConfigTimestamp))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(v.Root))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(v.RequestWindow))
+ b += 4
+
+ xgb.Put16(buf[b:], v.SizeID)
+ b += 2
+
+ xgb.Put16(buf[b:], v.SubpixelOrder)
+ b += 2
+
+ xgb.Put16(buf[b:], v.Width)
+ b += 2
+
+ xgb.Put16(buf[b:], v.Height)
+ b += 2
+
+ xgb.Put16(buf[b:], v.Mwidth)
+ b += 2
+
+ xgb.Put16(buf[b:], v.Mheight)
+ b += 2
+
+ return buf
+}
+
+func (v ScreenChangeNotifyEvent) ImplementsEvent() {}
+
+func (v ScreenChangeNotifyEvent) SequenceId() uint16 {
+ return v.Sequence
+}
+
+func (v ScreenChangeNotifyEvent) String() string {
+ fieldVals := make([]string, 0, 11)
+ fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", v.Sequence))
+ fieldVals = append(fieldVals, xgb.Sprintf("Rotation: %d", v.Rotation))
+ fieldVals = append(fieldVals, xgb.Sprintf("Timestamp: %d", v.Timestamp))
+ fieldVals = append(fieldVals, xgb.Sprintf("ConfigTimestamp: %d", v.ConfigTimestamp))
+ fieldVals = append(fieldVals, xgb.Sprintf("Root: %d", v.Root))
+ fieldVals = append(fieldVals, xgb.Sprintf("RequestWindow: %d", v.RequestWindow))
+ fieldVals = append(fieldVals, xgb.Sprintf("SizeID: %d", v.SizeID))
+ fieldVals = append(fieldVals, xgb.Sprintf("SubpixelOrder: %d", v.SubpixelOrder))
+ fieldVals = append(fieldVals, xgb.Sprintf("Width: %d", v.Width))
+ fieldVals = append(fieldVals, xgb.Sprintf("Height: %d", v.Height))
+ fieldVals = append(fieldVals, xgb.Sprintf("Mwidth: %d", v.Mwidth))
+ fieldVals = append(fieldVals, xgb.Sprintf("Mheight: %d", v.Mheight))
+ return "ScreenChangeNotify {" + xgb.StringsJoin(fieldVals, ", ") + "}"
+}
+
+func init() {
+ xgb.NewExtEventFuncs["RANDR"][0] = ScreenChangeNotifyEventNew
+}
+
+// Event definition Notify (1)
+// Size: 32
+
+const Notify = 1
+
+type NotifyEvent struct {
+ Sequence uint16
+ SubCode byte
+ U NotifyDataUnion
+}
+
+// Event read Notify
+func NotifyEventNew(buf []byte) xgb.Event {
+ v := NotifyEvent{}
+ b := 1 // don't read event number
+
+ v.SubCode = buf[b]
+ b += 1
+
+ v.Sequence = xgb.Get16(buf[b:])
+ b += 2
+
+ v.U = NotifyDataUnion{}
+ b += NotifyDataUnionRead(buf[b:], &v.U)
+
+ return v
+}
+
+// Event write Notify
+func (v NotifyEvent) Bytes() []byte {
+ buf := make([]byte, 32)
+ b := 0
+
+ // write event number
+ buf[b] = 1
+ b += 1
+
+ buf[b] = v.SubCode
+ b += 1
+
+ b += 2 // skip sequence number
+
+ {
+ unionBytes := v.U.Bytes()
+ copy(buf[b:], unionBytes)
+ b += xgb.Pad(len(unionBytes))
+ }
+
+ return buf
+}
+
+func (v NotifyEvent) ImplementsEvent() {}
+
+func (v NotifyEvent) SequenceId() uint16 {
+ return v.Sequence
+}
+
+func (v NotifyEvent) String() string {
+ fieldVals := make([]string, 0, 2)
+ fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", v.Sequence))
+ fieldVals = append(fieldVals, xgb.Sprintf("SubCode: %d", v.SubCode))
+ return "Notify {" + xgb.StringsJoin(fieldVals, ", ") + "}"
+}
+
+func init() {
+ xgb.NewExtEventFuncs["RANDR"][1] = NotifyEventNew
+}
+
+// Error definition BadOutput (0)
+// Size: 32
+
+const BadBadOutput = 0
+
+type BadOutputError struct {
+ Sequence uint16
+ NiceName string
+}
+
+// Error read BadOutput
+func BadOutputErrorNew(buf []byte) xgb.Error {
+ v := BadOutputError{}
+ v.NiceName = "BadOutput"
+
+ b := 1 // skip error determinant
+ b += 1 // don't read error number
+
+ v.Sequence = xgb.Get16(buf[b:])
+ b += 2
+
+ return v
+}
+
+func (err BadOutputError) ImplementsError() {}
+
+func (err BadOutputError) SequenceId() uint16 {
+ return err.Sequence
+}
+
+func (err BadOutputError) BadId() uint32 {
+ return 0
+}
+
+func (err BadOutputError) Error() string {
+ fieldVals := make([]string, 0, 0)
+ fieldVals = append(fieldVals, "NiceName: "+err.NiceName)
+ fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", err.Sequence))
+ return "BadBadOutput {" + xgb.StringsJoin(fieldVals, ", ") + "}"
+}
+
+func init() {
+ xgb.NewExtErrorFuncs["RANDR"][0] = BadOutputErrorNew
+}
+
+// Error definition BadCrtc (1)
+// Size: 32
+
+const BadBadCrtc = 1
+
+type BadCrtcError struct {
+ Sequence uint16
+ NiceName string
+}
+
+// Error read BadCrtc
+func BadCrtcErrorNew(buf []byte) xgb.Error {
+ v := BadCrtcError{}
+ v.NiceName = "BadCrtc"
+
+ b := 1 // skip error determinant
+ b += 1 // don't read error number
+
+ v.Sequence = xgb.Get16(buf[b:])
+ b += 2
+
+ return v
+}
+
+func (err BadCrtcError) ImplementsError() {}
+
+func (err BadCrtcError) SequenceId() uint16 {
+ return err.Sequence
+}
+
+func (err BadCrtcError) BadId() uint32 {
+ return 0
+}
+
+func (err BadCrtcError) Error() string {
+ fieldVals := make([]string, 0, 0)
+ fieldVals = append(fieldVals, "NiceName: "+err.NiceName)
+ fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", err.Sequence))
+ return "BadBadCrtc {" + xgb.StringsJoin(fieldVals, ", ") + "}"
+}
+
+func init() {
+ xgb.NewExtErrorFuncs["RANDR"][1] = BadCrtcErrorNew
+}
+
+// Error definition BadMode (2)
+// Size: 32
+
+const BadBadMode = 2
+
+type BadModeError struct {
+ Sequence uint16
+ NiceName string
+}
+
+// Error read BadMode
+func BadModeErrorNew(buf []byte) xgb.Error {
+ v := BadModeError{}
+ v.NiceName = "BadMode"
+
+ b := 1 // skip error determinant
+ b += 1 // don't read error number
+
+ v.Sequence = xgb.Get16(buf[b:])
+ b += 2
+
+ return v
+}
+
+func (err BadModeError) ImplementsError() {}
+
+func (err BadModeError) SequenceId() uint16 {
+ return err.Sequence
+}
+
+func (err BadModeError) BadId() uint32 {
+ return 0
+}
+
+func (err BadModeError) Error() string {
+ fieldVals := make([]string, 0, 0)
+ fieldVals = append(fieldVals, "NiceName: "+err.NiceName)
+ fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", err.Sequence))
+ return "BadBadMode {" + xgb.StringsJoin(fieldVals, ", ") + "}"
+}
+
+func init() {
+ xgb.NewExtErrorFuncs["RANDR"][2] = BadModeErrorNew
+}
+
+// Request QueryVersion
+// size: 12
+type QueryVersionCookie struct {
+ *xgb.Cookie
+}
+
+func QueryVersion(c *xgb.Conn, MajorVersion uint32, MinorVersion uint32) QueryVersionCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(queryVersionRequest(c, MajorVersion, MinorVersion), cookie)
+ return QueryVersionCookie{cookie}
+}
+
+func QueryVersionUnchecked(c *xgb.Conn, MajorVersion uint32, MinorVersion uint32) QueryVersionCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(queryVersionRequest(c, MajorVersion, MinorVersion), cookie)
+ return QueryVersionCookie{cookie}
+}
+
+// Request reply for QueryVersion
+// size: 32
+type QueryVersionReply struct {
+ Sequence uint16
+ Length uint32
+ // padding: 1 bytes
+ MajorVersion uint32
+ MinorVersion uint32
+ // padding: 16 bytes
+}
+
+// Waits and reads reply data from request QueryVersion
+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
+}
+
+// Read reply into structure from buffer for QueryVersion
+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
+func queryVersionRequest(c *xgb.Conn, MajorVersion uint32, MinorVersion uint32) []byte {
+ size := 12
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = c.Extensions["RANDR"]
+ 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:], MajorVersion)
+ b += 4
+
+ xgb.Put32(buf[b:], MinorVersion)
+ b += 4
+
+ return buf
+}
+
+// Request SetScreenConfig
+// size: 24
+type SetScreenConfigCookie struct {
+ *xgb.Cookie
+}
+
+func SetScreenConfig(c *xgb.Conn, Window xproto.Window, Timestamp xproto.Timestamp, ConfigTimestamp xproto.Timestamp, SizeID uint16, Rotation uint16, Rate uint16) SetScreenConfigCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(setScreenConfigRequest(c, Window, Timestamp, ConfigTimestamp, SizeID, Rotation, Rate), cookie)
+ return SetScreenConfigCookie{cookie}
+}
+
+func SetScreenConfigUnchecked(c *xgb.Conn, Window xproto.Window, Timestamp xproto.Timestamp, ConfigTimestamp xproto.Timestamp, SizeID uint16, Rotation uint16, Rate uint16) SetScreenConfigCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(setScreenConfigRequest(c, Window, Timestamp, ConfigTimestamp, SizeID, Rotation, Rate), cookie)
+ return SetScreenConfigCookie{cookie}
+}
+
+// Request reply for SetScreenConfig
+// size: 32
+type SetScreenConfigReply struct {
+ Sequence uint16
+ Length uint32
+ Status byte
+ NewTimestamp xproto.Timestamp
+ ConfigTimestamp xproto.Timestamp
+ Root xproto.Window
+ SubpixelOrder uint16
+ // padding: 10 bytes
+}
+
+// Waits and reads reply data from request SetScreenConfig
+func (cook SetScreenConfigCookie) Reply() (*SetScreenConfigReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return setScreenConfigReply(buf), nil
+}
+
+// Read reply into structure from buffer for SetScreenConfig
+func setScreenConfigReply(buf []byte) *SetScreenConfigReply {
+ v := new(SetScreenConfigReply)
+ b := 1 // skip reply determinant
+
+ v.Status = buf[b]
+ b += 1
+
+ v.Sequence = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Length = xgb.Get32(buf[b:]) // 4-byte units
+ b += 4
+
+ v.NewTimestamp = xproto.Timestamp(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.ConfigTimestamp = xproto.Timestamp(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Root = xproto.Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.SubpixelOrder = xgb.Get16(buf[b:])
+ b += 2
+
+ b += 10 // padding
+
+ return v
+}
+
+// Write request to wire for SetScreenConfig
+func setScreenConfigRequest(c *xgb.Conn, Window xproto.Window, Timestamp xproto.Timestamp, ConfigTimestamp xproto.Timestamp, SizeID uint16, Rotation uint16, Rate uint16) []byte {
+ size := 24
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = c.Extensions["RANDR"]
+ 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
+
+ xgb.Put32(buf[b:], uint32(Timestamp))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(ConfigTimestamp))
+ b += 4
+
+ xgb.Put16(buf[b:], SizeID)
+ b += 2
+
+ xgb.Put16(buf[b:], Rotation)
+ b += 2
+
+ xgb.Put16(buf[b:], Rate)
+ b += 2
+
+ b += 2 // padding
+
+ return buf
+}
+
+// Request SelectInput
+// size: 12
+type SelectInputCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for SelectInput
+func SelectInput(c *xgb.Conn, Window xproto.Window, Enable uint16) SelectInputCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(selectInputRequest(c, Window, Enable), cookie)
+ return SelectInputCookie{cookie}
+}
+
+func SelectInputChecked(c *xgb.Conn, Window xproto.Window, Enable uint16) SelectInputCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(selectInputRequest(c, Window, Enable), cookie)
+ return SelectInputCookie{cookie}
+}
+
+func (cook SelectInputCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for SelectInput
+func selectInputRequest(c *xgb.Conn, Window xproto.Window, Enable uint16) []byte {
+ size := 12
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = c.Extensions["RANDR"]
+ 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
+
+ xgb.Put16(buf[b:], Enable)
+ b += 2
+
+ b += 2 // padding
+
+ return buf
+}
+
+// Request GetScreenInfo
+// size: 8
+type GetScreenInfoCookie struct {
+ *xgb.Cookie
+}
+
+func GetScreenInfo(c *xgb.Conn, Window xproto.Window) GetScreenInfoCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(getScreenInfoRequest(c, Window), cookie)
+ return GetScreenInfoCookie{cookie}
+}
+
+func GetScreenInfoUnchecked(c *xgb.Conn, Window xproto.Window) GetScreenInfoCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(getScreenInfoRequest(c, Window), cookie)
+ return GetScreenInfoCookie{cookie}
+}
+
+// Request reply for GetScreenInfo
+// size: ((32 + xgb.Pad((int(NSizes) * 8))) + RefreshRatesListSize(Rates))
+type GetScreenInfoReply struct {
+ Sequence uint16
+ Length uint32
+ Rotations byte
+ Root xproto.Window
+ Timestamp xproto.Timestamp
+ ConfigTimestamp xproto.Timestamp
+ NSizes uint16
+ SizeID uint16
+ Rotation uint16
+ Rate uint16
+ NInfo uint16
+ // padding: 2 bytes
+ Sizes []ScreenSize // size: xgb.Pad((int(NSizes) * 8))
+ Rates []RefreshRates // size: RefreshRatesListSize(Rates)
+}
+
+// Waits and reads reply data from request GetScreenInfo
+func (cook GetScreenInfoCookie) Reply() (*GetScreenInfoReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return getScreenInfoReply(buf), nil
+}
+
+// Read reply into structure from buffer for GetScreenInfo
+func getScreenInfoReply(buf []byte) *GetScreenInfoReply {
+ v := new(GetScreenInfoReply)
+ b := 1 // skip reply determinant
+
+ v.Rotations = buf[b]
+ b += 1
+
+ v.Sequence = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Length = xgb.Get32(buf[b:]) // 4-byte units
+ b += 4
+
+ v.Root = xproto.Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Timestamp = xproto.Timestamp(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.ConfigTimestamp = xproto.Timestamp(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.NSizes = xgb.Get16(buf[b:])
+ b += 2
+
+ v.SizeID = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Rotation = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Rate = xgb.Get16(buf[b:])
+ b += 2
+
+ v.NInfo = xgb.Get16(buf[b:])
+ b += 2
+
+ b += 2 // padding
+
+ v.Sizes = make([]ScreenSize, v.NSizes)
+ b += ScreenSizeReadList(buf[b:], v.Sizes)
+
+ v.Rates = make([]RefreshRates, (int(v.NInfo) - int(v.NSizes)))
+ b += RefreshRatesReadList(buf[b:], v.Rates)
+
+ return v
+}
+
+// Write request to wire for GetScreenInfo
+func getScreenInfoRequest(c *xgb.Conn, Window xproto.Window) []byte {
+ size := 8
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = c.Extensions["RANDR"]
+ 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(Window))
+ b += 4
+
+ return buf
+}
+
+// Request GetScreenSizeRange
+// size: 8
+type GetScreenSizeRangeCookie struct {
+ *xgb.Cookie
+}
+
+func GetScreenSizeRange(c *xgb.Conn, Window xproto.Window) GetScreenSizeRangeCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(getScreenSizeRangeRequest(c, Window), cookie)
+ return GetScreenSizeRangeCookie{cookie}
+}
+
+func GetScreenSizeRangeUnchecked(c *xgb.Conn, Window xproto.Window) GetScreenSizeRangeCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(getScreenSizeRangeRequest(c, Window), cookie)
+ return GetScreenSizeRangeCookie{cookie}
+}
+
+// Request reply for GetScreenSizeRange
+// size: 32
+type GetScreenSizeRangeReply struct {
+ Sequence uint16
+ Length uint32
+ // padding: 1 bytes
+ MinWidth uint16
+ MinHeight uint16
+ MaxWidth uint16
+ MaxHeight uint16
+ // padding: 16 bytes
+}
+
+// Waits and reads reply data from request GetScreenSizeRange
+func (cook GetScreenSizeRangeCookie) Reply() (*GetScreenSizeRangeReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return getScreenSizeRangeReply(buf), nil
+}
+
+// Read reply into structure from buffer for GetScreenSizeRange
+func getScreenSizeRangeReply(buf []byte) *GetScreenSizeRangeReply {
+ v := new(GetScreenSizeRangeReply)
+ 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.MinWidth = xgb.Get16(buf[b:])
+ b += 2
+
+ v.MinHeight = xgb.Get16(buf[b:])
+ b += 2
+
+ v.MaxWidth = xgb.Get16(buf[b:])
+ b += 2
+
+ v.MaxHeight = xgb.Get16(buf[b:])
+ b += 2
+
+ b += 16 // padding
+
+ return v
+}
+
+// Write request to wire for GetScreenSizeRange
+func getScreenSizeRangeRequest(c *xgb.Conn, Window xproto.Window) []byte {
+ size := 8
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = c.Extensions["RANDR"]
+ 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
+
+ return buf
+}
+
+// Request SetScreenSize
+// size: 20
+type SetScreenSizeCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for SetScreenSize
+func SetScreenSize(c *xgb.Conn, Window xproto.Window, Width uint16, Height uint16, MmWidth uint32, MmHeight uint32) SetScreenSizeCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(setScreenSizeRequest(c, Window, Width, Height, MmWidth, MmHeight), cookie)
+ return SetScreenSizeCookie{cookie}
+}
+
+func SetScreenSizeChecked(c *xgb.Conn, Window xproto.Window, Width uint16, Height uint16, MmWidth uint32, MmHeight uint32) SetScreenSizeCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(setScreenSizeRequest(c, Window, Width, Height, MmWidth, MmHeight), cookie)
+ return SetScreenSizeCookie{cookie}
+}
+
+func (cook SetScreenSizeCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for SetScreenSize
+func setScreenSizeRequest(c *xgb.Conn, Window xproto.Window, Width uint16, Height uint16, MmWidth uint32, MmHeight uint32) []byte {
+ size := 20
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = c.Extensions["RANDR"]
+ 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
+
+ xgb.Put16(buf[b:], Width)
+ b += 2
+
+ xgb.Put16(buf[b:], Height)
+ b += 2
+
+ xgb.Put32(buf[b:], MmWidth)
+ b += 4
+
+ xgb.Put32(buf[b:], MmHeight)
+ b += 4
+
+ return buf
+}
+
+// Request GetScreenResources
+// size: 8
+type GetScreenResourcesCookie struct {
+ *xgb.Cookie
+}
+
+func GetScreenResources(c *xgb.Conn, Window xproto.Window) GetScreenResourcesCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(getScreenResourcesRequest(c, Window), cookie)
+ return GetScreenResourcesCookie{cookie}
+}
+
+func GetScreenResourcesUnchecked(c *xgb.Conn, Window xproto.Window) GetScreenResourcesCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(getScreenResourcesRequest(c, Window), cookie)
+ return GetScreenResourcesCookie{cookie}
+}
+
+// Request reply for GetScreenResources
+// size: ((((32 + xgb.Pad((int(NumCrtcs) * 4))) + xgb.Pad((int(NumOutputs) * 4))) + xgb.Pad((int(NumModes) * 32))) + xgb.Pad((int(NamesLen) * 1)))
+type GetScreenResourcesReply struct {
+ Sequence uint16
+ Length uint32
+ // padding: 1 bytes
+ Timestamp xproto.Timestamp
+ ConfigTimestamp xproto.Timestamp
+ NumCrtcs uint16
+ NumOutputs uint16
+ NumModes uint16
+ NamesLen uint16
+ // padding: 8 bytes
+ Crtcs []Crtc // size: xgb.Pad((int(NumCrtcs) * 4))
+ Outputs []Output // size: xgb.Pad((int(NumOutputs) * 4))
+ Modes []ModeInfo // size: xgb.Pad((int(NumModes) * 32))
+ Names []byte // size: xgb.Pad((int(NamesLen) * 1))
+}
+
+// Waits and reads reply data from request GetScreenResources
+func (cook GetScreenResourcesCookie) Reply() (*GetScreenResourcesReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return getScreenResourcesReply(buf), nil
+}
+
+// Read reply into structure from buffer for GetScreenResources
+func getScreenResourcesReply(buf []byte) *GetScreenResourcesReply {
+ v := new(GetScreenResourcesReply)
+ 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.Timestamp = xproto.Timestamp(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.ConfigTimestamp = xproto.Timestamp(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.NumCrtcs = xgb.Get16(buf[b:])
+ b += 2
+
+ v.NumOutputs = xgb.Get16(buf[b:])
+ b += 2
+
+ v.NumModes = xgb.Get16(buf[b:])
+ b += 2
+
+ v.NamesLen = xgb.Get16(buf[b:])
+ b += 2
+
+ b += 8 // padding
+
+ v.Crtcs = make([]Crtc, v.NumCrtcs)
+ for i := 0; i < int(v.NumCrtcs); i++ {
+ v.Crtcs[i] = Crtc(xgb.Get32(buf[b:]))
+ b += 4
+ }
+ b = xgb.Pad(b)
+
+ v.Outputs = make([]Output, v.NumOutputs)
+ for i := 0; i < int(v.NumOutputs); i++ {
+ v.Outputs[i] = Output(xgb.Get32(buf[b:]))
+ b += 4
+ }
+ b = xgb.Pad(b)
+
+ v.Modes = make([]ModeInfo, v.NumModes)
+ b += ModeInfoReadList(buf[b:], v.Modes)
+
+ v.Names = make([]byte, v.NamesLen)
+ copy(v.Names[:v.NamesLen], buf[b:])
+ b += xgb.Pad(int(v.NamesLen))
+
+ return v
+}
+
+// Write request to wire for GetScreenResources
+func getScreenResourcesRequest(c *xgb.Conn, Window xproto.Window) []byte {
+ size := 8
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = c.Extensions["RANDR"]
+ 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
+}
+
+// Request GetOutputInfo
+// size: 12
+type GetOutputInfoCookie struct {
+ *xgb.Cookie
+}
+
+func GetOutputInfo(c *xgb.Conn, Output Output, ConfigTimestamp xproto.Timestamp) GetOutputInfoCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(getOutputInfoRequest(c, Output, ConfigTimestamp), cookie)
+ return GetOutputInfoCookie{cookie}
+}
+
+func GetOutputInfoUnchecked(c *xgb.Conn, Output Output, ConfigTimestamp xproto.Timestamp) GetOutputInfoCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(getOutputInfoRequest(c, Output, ConfigTimestamp), cookie)
+ return GetOutputInfoCookie{cookie}
+}
+
+// Request reply for GetOutputInfo
+// size: ((((36 + xgb.Pad((int(NumCrtcs) * 4))) + xgb.Pad((int(NumModes) * 4))) + xgb.Pad((int(NumClones) * 4))) + xgb.Pad((int(NameLen) * 1)))
+type GetOutputInfoReply struct {
+ Sequence uint16
+ Length uint32
+ Status byte
+ Timestamp xproto.Timestamp
+ Crtc Crtc
+ MmWidth uint32
+ MmHeight uint32
+ Connection byte
+ SubpixelOrder byte
+ NumCrtcs uint16
+ NumModes uint16
+ NumPreferred uint16
+ NumClones uint16
+ NameLen uint16
+ Crtcs []Crtc // size: xgb.Pad((int(NumCrtcs) * 4))
+ Modes []Mode // size: xgb.Pad((int(NumModes) * 4))
+ Clones []Output // size: xgb.Pad((int(NumClones) * 4))
+ Name []byte // size: xgb.Pad((int(NameLen) * 1))
+}
+
+// Waits and reads reply data from request GetOutputInfo
+func (cook GetOutputInfoCookie) Reply() (*GetOutputInfoReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return getOutputInfoReply(buf), nil
+}
+
+// Read reply into structure from buffer for GetOutputInfo
+func getOutputInfoReply(buf []byte) *GetOutputInfoReply {
+ v := new(GetOutputInfoReply)
+ b := 1 // skip reply determinant
+
+ v.Status = buf[b]
+ b += 1
+
+ v.Sequence = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Length = xgb.Get32(buf[b:]) // 4-byte units
+ b += 4
+
+ v.Timestamp = xproto.Timestamp(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Crtc = Crtc(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.MmWidth = xgb.Get32(buf[b:])
+ b += 4
+
+ v.MmHeight = xgb.Get32(buf[b:])
+ b += 4
+
+ v.Connection = buf[b]
+ b += 1
+
+ v.SubpixelOrder = buf[b]
+ b += 1
+
+ v.NumCrtcs = xgb.Get16(buf[b:])
+ b += 2
+
+ v.NumModes = xgb.Get16(buf[b:])
+ b += 2
+
+ v.NumPreferred = xgb.Get16(buf[b:])
+ b += 2
+
+ v.NumClones = xgb.Get16(buf[b:])
+ b += 2
+
+ v.NameLen = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Crtcs = make([]Crtc, v.NumCrtcs)
+ for i := 0; i < int(v.NumCrtcs); i++ {
+ v.Crtcs[i] = Crtc(xgb.Get32(buf[b:]))
+ b += 4
+ }
+ b = xgb.Pad(b)
+
+ v.Modes = make([]Mode, v.NumModes)
+ for i := 0; i < int(v.NumModes); i++ {
+ v.Modes[i] = Mode(xgb.Get32(buf[b:]))
+ b += 4
+ }
+ b = xgb.Pad(b)
+
+ v.Clones = make([]Output, v.NumClones)
+ for i := 0; i < int(v.NumClones); i++ {
+ v.Clones[i] = Output(xgb.Get32(buf[b:]))
+ b += 4
+ }
+ b = xgb.Pad(b)
+
+ v.Name = make([]byte, v.NameLen)
+ copy(v.Name[:v.NameLen], buf[b:])
+ b += xgb.Pad(int(v.NameLen))
+
+ return v
+}
+
+// Write request to wire for GetOutputInfo
+func getOutputInfoRequest(c *xgb.Conn, Output Output, ConfigTimestamp xproto.Timestamp) []byte {
+ size := 12
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = c.Extensions["RANDR"]
+ b += 1
+
+ buf[b] = 9 // 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(Output))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(ConfigTimestamp))
+ b += 4
+
+ return buf
+}
+
+// Request ListOutputProperties
+// size: 8
+type ListOutputPropertiesCookie struct {
+ *xgb.Cookie
+}
+
+func ListOutputProperties(c *xgb.Conn, Output Output) ListOutputPropertiesCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(listOutputPropertiesRequest(c, Output), cookie)
+ return ListOutputPropertiesCookie{cookie}
+}
+
+func ListOutputPropertiesUnchecked(c *xgb.Conn, Output Output) ListOutputPropertiesCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(listOutputPropertiesRequest(c, Output), cookie)
+ return ListOutputPropertiesCookie{cookie}
+}
+
+// Request reply for ListOutputProperties
+// size: (32 + xgb.Pad((int(NumAtoms) * 4)))
+type ListOutputPropertiesReply struct {
+ Sequence uint16
+ Length uint32
+ // padding: 1 bytes
+ NumAtoms uint16
+ // padding: 22 bytes
+ Atoms []xproto.Atom // size: xgb.Pad((int(NumAtoms) * 4))
+}
+
+// Waits and reads reply data from request ListOutputProperties
+func (cook ListOutputPropertiesCookie) Reply() (*ListOutputPropertiesReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return listOutputPropertiesReply(buf), nil
+}
+
+// Read reply into structure from buffer for ListOutputProperties
+func listOutputPropertiesReply(buf []byte) *ListOutputPropertiesReply {
+ v := new(ListOutputPropertiesReply)
+ 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.NumAtoms = xgb.Get16(buf[b:])
+ b += 2
+
+ b += 22 // padding
+
+ v.Atoms = make([]xproto.Atom, v.NumAtoms)
+ for i := 0; i < int(v.NumAtoms); i++ {
+ v.Atoms[i] = xproto.Atom(xgb.Get32(buf[b:]))
+ b += 4
+ }
+ b = xgb.Pad(b)
+
+ return v
+}
+
+// Write request to wire for ListOutputProperties
+func listOutputPropertiesRequest(c *xgb.Conn, Output Output) []byte {
+ size := 8
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = c.Extensions["RANDR"]
+ b += 1
+
+ buf[b] = 10 // 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(Output))
+ b += 4
+
+ return buf
+}
+
+// Request QueryOutputProperty
+// size: 12
+type QueryOutputPropertyCookie struct {
+ *xgb.Cookie
+}
+
+func QueryOutputProperty(c *xgb.Conn, Output Output, Property xproto.Atom) QueryOutputPropertyCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(queryOutputPropertyRequest(c, Output, Property), cookie)
+ return QueryOutputPropertyCookie{cookie}
+}
+
+func QueryOutputPropertyUnchecked(c *xgb.Conn, Output Output, Property xproto.Atom) QueryOutputPropertyCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(queryOutputPropertyRequest(c, Output, Property), cookie)
+ return QueryOutputPropertyCookie{cookie}
+}
+
+// Request reply for QueryOutputProperty
+// size: (32 + xgb.Pad((int(Length) * 4)))
+type QueryOutputPropertyReply struct {
+ Sequence uint16
+ Length uint32
+ // padding: 1 bytes
+ Pending bool
+ Range bool
+ Immutable bool
+ // padding: 21 bytes
+ ValidValues []int32 // size: xgb.Pad((int(Length) * 4))
+}
+
+// Waits and reads reply data from request QueryOutputProperty
+func (cook QueryOutputPropertyCookie) Reply() (*QueryOutputPropertyReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return queryOutputPropertyReply(buf), nil
+}
+
+// Read reply into structure from buffer for QueryOutputProperty
+func queryOutputPropertyReply(buf []byte) *QueryOutputPropertyReply {
+ v := new(QueryOutputPropertyReply)
+ 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
+
+ if buf[b] == 1 {
+ v.Pending = true
+ } else {
+ v.Pending = false
+ }
+ b += 1
+
+ if buf[b] == 1 {
+ v.Range = true
+ } else {
+ v.Range = false
+ }
+ b += 1
+
+ if buf[b] == 1 {
+ v.Immutable = true
+ } else {
+ v.Immutable = false
+ }
+ b += 1
+
+ b += 21 // padding
+
+ v.ValidValues = make([]int32, v.Length)
+ for i := 0; i < int(v.Length); i++ {
+ v.ValidValues[i] = int32(xgb.Get32(buf[b:]))
+ b += 4
+ }
+ b = xgb.Pad(b)
+
+ return v
+}
+
+// Write request to wire for QueryOutputProperty
+func queryOutputPropertyRequest(c *xgb.Conn, Output Output, Property xproto.Atom) []byte {
+ size := 12
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = c.Extensions["RANDR"]
+ b += 1
+
+ buf[b] = 11 // 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(Output))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(Property))
+ b += 4
+
+ return buf
+}
+
+// Request ConfigureOutputProperty
+// size: xgb.Pad((16 + xgb.Pad((len(Values) * 4))))
+type ConfigureOutputPropertyCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for ConfigureOutputProperty
+func ConfigureOutputProperty(c *xgb.Conn, Output Output, Property xproto.Atom, Pending bool, Range bool, Values []int32) ConfigureOutputPropertyCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(configureOutputPropertyRequest(c, Output, Property, Pending, Range, Values), cookie)
+ return ConfigureOutputPropertyCookie{cookie}
+}
+
+func ConfigureOutputPropertyChecked(c *xgb.Conn, Output Output, Property xproto.Atom, Pending bool, Range bool, Values []int32) ConfigureOutputPropertyCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(configureOutputPropertyRequest(c, Output, Property, Pending, Range, Values), cookie)
+ return ConfigureOutputPropertyCookie{cookie}
+}
+
+func (cook ConfigureOutputPropertyCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for ConfigureOutputProperty
+func configureOutputPropertyRequest(c *xgb.Conn, Output Output, Property xproto.Atom, Pending bool, Range bool, Values []int32) []byte {
+ size := xgb.Pad((16 + xgb.Pad((len(Values) * 4))))
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = c.Extensions["RANDR"]
+ b += 1
+
+ buf[b] = 12 // 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(Output))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(Property))
+ b += 4
+
+ if Pending {
+ buf[b] = 1
+ } else {
+ buf[b] = 0
+ }
+ b += 1
+
+ if Range {
+ buf[b] = 1
+ } else {
+ buf[b] = 0
+ }
+ b += 1
+
+ b += 2 // padding
+
+ for i := 0; i < int(len(Values)); i++ {
+ xgb.Put32(buf[b:], uint32(Values[i]))
+ b += 4
+ }
+ b = xgb.Pad(b)
+
+ return buf
+}
+
+// Request ChangeOutputProperty
+// size: xgb.Pad((24 + xgb.Pad((((int(NumUnits) * int(Format)) / 8) * 1))))
+type ChangeOutputPropertyCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for ChangeOutputProperty
+func ChangeOutputProperty(c *xgb.Conn, Output Output, Property xproto.Atom, Type xproto.Atom, Format byte, Mode byte, NumUnits uint32, Data []byte) ChangeOutputPropertyCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(changeOutputPropertyRequest(c, Output, Property, Type, Format, Mode, NumUnits, Data), cookie)
+ return ChangeOutputPropertyCookie{cookie}
+}
+
+func ChangeOutputPropertyChecked(c *xgb.Conn, Output Output, Property xproto.Atom, Type xproto.Atom, Format byte, Mode byte, NumUnits uint32, Data []byte) ChangeOutputPropertyCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(changeOutputPropertyRequest(c, Output, Property, Type, Format, Mode, NumUnits, Data), cookie)
+ return ChangeOutputPropertyCookie{cookie}
+}
+
+func (cook ChangeOutputPropertyCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for ChangeOutputProperty
+func changeOutputPropertyRequest(c *xgb.Conn, Output Output, Property xproto.Atom, Type xproto.Atom, Format byte, Mode byte, NumUnits uint32, Data []byte) []byte {
+ size := xgb.Pad((24 + xgb.Pad((((int(NumUnits) * int(Format)) / 8) * 1))))
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = c.Extensions["RANDR"]
+ b += 1
+
+ buf[b] = 13 // 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(Output))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(Property))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(Type))
+ b += 4
+
+ buf[b] = Format
+ b += 1
+
+ buf[b] = Mode
+ b += 1
+
+ b += 2 // padding
+
+ xgb.Put32(buf[b:], NumUnits)
+ b += 4
+
+ copy(buf[b:], Data[:((int(NumUnits)*int(Format))/8)])
+ b += xgb.Pad(int(((int(NumUnits) * int(Format)) / 8)))
+
+ return buf
+}
+
+// Request DeleteOutputProperty
+// size: 12
+type DeleteOutputPropertyCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for DeleteOutputProperty
+func DeleteOutputProperty(c *xgb.Conn, Output Output, Property xproto.Atom) DeleteOutputPropertyCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(deleteOutputPropertyRequest(c, Output, Property), cookie)
+ return DeleteOutputPropertyCookie{cookie}
+}
+
+func DeleteOutputPropertyChecked(c *xgb.Conn, Output Output, Property xproto.Atom) DeleteOutputPropertyCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(deleteOutputPropertyRequest(c, Output, Property), cookie)
+ return DeleteOutputPropertyCookie{cookie}
+}
+
+func (cook DeleteOutputPropertyCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for DeleteOutputProperty
+func deleteOutputPropertyRequest(c *xgb.Conn, Output Output, Property xproto.Atom) []byte {
+ size := 12
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = c.Extensions["RANDR"]
+ b += 1
+
+ buf[b] = 14 // 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(Output))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(Property))
+ b += 4
+
+ return buf
+}
+
+// Request GetOutputProperty
+// size: 28
+type GetOutputPropertyCookie struct {
+ *xgb.Cookie
+}
+
+func GetOutputProperty(c *xgb.Conn, Output Output, Property xproto.Atom, Type xproto.Atom, LongOffset uint32, LongLength uint32, Delete bool, Pending bool) GetOutputPropertyCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(getOutputPropertyRequest(c, Output, Property, Type, LongOffset, LongLength, Delete, Pending), cookie)
+ return GetOutputPropertyCookie{cookie}
+}
+
+func GetOutputPropertyUnchecked(c *xgb.Conn, Output Output, Property xproto.Atom, Type xproto.Atom, LongOffset uint32, LongLength uint32, Delete bool, Pending bool) GetOutputPropertyCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(getOutputPropertyRequest(c, Output, Property, Type, LongOffset, LongLength, Delete, Pending), cookie)
+ return GetOutputPropertyCookie{cookie}
+}
+
+// Request reply for GetOutputProperty
+// size: (32 + xgb.Pad(((int(NumItems) * (int(Format) / 8)) * 1)))
+type GetOutputPropertyReply struct {
+ Sequence uint16
+ Length uint32
+ Format byte
+ Type xproto.Atom
+ BytesAfter uint32
+ NumItems uint32
+ // padding: 12 bytes
+ Data []byte // size: xgb.Pad(((int(NumItems) * (int(Format) / 8)) * 1))
+}
+
+// Waits and reads reply data from request GetOutputProperty
+func (cook GetOutputPropertyCookie) Reply() (*GetOutputPropertyReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return getOutputPropertyReply(buf), nil
+}
+
+// Read reply into structure from buffer for GetOutputProperty
+func getOutputPropertyReply(buf []byte) *GetOutputPropertyReply {
+ v := new(GetOutputPropertyReply)
+ b := 1 // skip reply determinant
+
+ v.Format = buf[b]
+ b += 1
+
+ v.Sequence = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Length = xgb.Get32(buf[b:]) // 4-byte units
+ b += 4
+
+ v.Type = xproto.Atom(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.BytesAfter = xgb.Get32(buf[b:])
+ b += 4
+
+ v.NumItems = xgb.Get32(buf[b:])
+ b += 4
+
+ b += 12 // padding
+
+ v.Data = make([]byte, (int(v.NumItems) * (int(v.Format) / 8)))
+ copy(v.Data[:(int(v.NumItems)*(int(v.Format)/8))], buf[b:])
+ b += xgb.Pad(int((int(v.NumItems) * (int(v.Format) / 8))))
+
+ return v
+}
+
+// Write request to wire for GetOutputProperty
+func getOutputPropertyRequest(c *xgb.Conn, Output Output, Property xproto.Atom, Type xproto.Atom, LongOffset uint32, LongLength uint32, Delete bool, Pending bool) []byte {
+ size := 28
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = c.Extensions["RANDR"]
+ b += 1
+
+ buf[b] = 15 // 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(Output))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(Property))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(Type))
+ b += 4
+
+ xgb.Put32(buf[b:], LongOffset)
+ b += 4
+
+ xgb.Put32(buf[b:], LongLength)
+ b += 4
+
+ if Delete {
+ buf[b] = 1
+ } else {
+ buf[b] = 0
+ }
+ b += 1
+
+ if Pending {
+ buf[b] = 1
+ } else {
+ buf[b] = 0
+ }
+ b += 1
+
+ b += 2 // padding
+
+ return buf
+}
+
+// Request CreateMode
+// size: xgb.Pad((40 + xgb.Pad((len(Name) * 1))))
+type CreateModeCookie struct {
+ *xgb.Cookie
+}
+
+func CreateMode(c *xgb.Conn, Window xproto.Window, ModeInfo ModeInfo, Name string) CreateModeCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(createModeRequest(c, Window, ModeInfo, Name), cookie)
+ return CreateModeCookie{cookie}
+}
+
+func CreateModeUnchecked(c *xgb.Conn, Window xproto.Window, ModeInfo ModeInfo, Name string) CreateModeCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(createModeRequest(c, Window, ModeInfo, Name), cookie)
+ return CreateModeCookie{cookie}
+}
+
+// Request reply for CreateMode
+// size: 32
+type CreateModeReply struct {
+ Sequence uint16
+ Length uint32
+ // padding: 1 bytes
+ Mode Mode
+ // padding: 20 bytes
+}
+
+// Waits and reads reply data from request CreateMode
+func (cook CreateModeCookie) Reply() (*CreateModeReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return createModeReply(buf), nil
+}
+
+// Read reply into structure from buffer for CreateMode
+func createModeReply(buf []byte) *CreateModeReply {
+ v := new(CreateModeReply)
+ 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.Mode = Mode(xgb.Get32(buf[b:]))
+ b += 4
+
+ b += 20 // padding
+
+ return v
+}
+
+// Write request to wire for CreateMode
+func createModeRequest(c *xgb.Conn, Window xproto.Window, ModeInfo ModeInfo, Name string) []byte {
+ size := xgb.Pad((40 + xgb.Pad((len(Name) * 1))))
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = c.Extensions["RANDR"]
+ b += 1
+
+ buf[b] = 16 // 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
+
+ {
+ structBytes := ModeInfo.Bytes()
+ copy(buf[b:], structBytes)
+ b += xgb.Pad(len(structBytes))
+ }
+
+ copy(buf[b:], Name[:len(Name)])
+ b += xgb.Pad(int(len(Name)))
+
+ return buf
+}
+
+// Request DestroyMode
+// size: 8
+type DestroyModeCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for DestroyMode
+func DestroyMode(c *xgb.Conn, Mode Mode) DestroyModeCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(destroyModeRequest(c, Mode), cookie)
+ return DestroyModeCookie{cookie}
+}
+
+func DestroyModeChecked(c *xgb.Conn, Mode Mode) DestroyModeCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(destroyModeRequest(c, Mode), cookie)
+ return DestroyModeCookie{cookie}
+}
+
+func (cook DestroyModeCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for DestroyMode
+func destroyModeRequest(c *xgb.Conn, Mode Mode) []byte {
+ size := 8
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = c.Extensions["RANDR"]
+ b += 1
+
+ buf[b] = 17 // 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(Mode))
+ b += 4
+
+ return buf
+}
+
+// Request AddOutputMode
+// size: 12
+type AddOutputModeCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for AddOutputMode
+func AddOutputMode(c *xgb.Conn, Output Output, Mode Mode) AddOutputModeCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(addOutputModeRequest(c, Output, Mode), cookie)
+ return AddOutputModeCookie{cookie}
+}
+
+func AddOutputModeChecked(c *xgb.Conn, Output Output, Mode Mode) AddOutputModeCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(addOutputModeRequest(c, Output, Mode), cookie)
+ return AddOutputModeCookie{cookie}
+}
+
+func (cook AddOutputModeCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for AddOutputMode
+func addOutputModeRequest(c *xgb.Conn, Output Output, Mode Mode) []byte {
+ size := 12
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = c.Extensions["RANDR"]
+ b += 1
+
+ buf[b] = 18 // 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(Output))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(Mode))
+ b += 4
+
+ return buf
+}
+
+// Request DeleteOutputMode
+// size: 12
+type DeleteOutputModeCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for DeleteOutputMode
+func DeleteOutputMode(c *xgb.Conn, Output Output, Mode Mode) DeleteOutputModeCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(deleteOutputModeRequest(c, Output, Mode), cookie)
+ return DeleteOutputModeCookie{cookie}
+}
+
+func DeleteOutputModeChecked(c *xgb.Conn, Output Output, Mode Mode) DeleteOutputModeCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(deleteOutputModeRequest(c, Output, Mode), cookie)
+ return DeleteOutputModeCookie{cookie}
+}
+
+func (cook DeleteOutputModeCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for DeleteOutputMode
+func deleteOutputModeRequest(c *xgb.Conn, Output Output, Mode Mode) []byte {
+ size := 12
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = c.Extensions["RANDR"]
+ b += 1
+
+ buf[b] = 19 // 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(Output))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(Mode))
+ b += 4
+
+ return buf
+}
+
+// Request GetCrtcInfo
+// size: 12
+type GetCrtcInfoCookie struct {
+ *xgb.Cookie
+}
+
+func GetCrtcInfo(c *xgb.Conn, Crtc Crtc, ConfigTimestamp xproto.Timestamp) GetCrtcInfoCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(getCrtcInfoRequest(c, Crtc, ConfigTimestamp), cookie)
+ return GetCrtcInfoCookie{cookie}
+}
+
+func GetCrtcInfoUnchecked(c *xgb.Conn, Crtc Crtc, ConfigTimestamp xproto.Timestamp) GetCrtcInfoCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(getCrtcInfoRequest(c, Crtc, ConfigTimestamp), cookie)
+ return GetCrtcInfoCookie{cookie}
+}
+
+// Request reply for GetCrtcInfo
+// size: ((32 + xgb.Pad((int(NumOutputs) * 4))) + xgb.Pad((int(NumPossibleOutputs) * 4)))
+type GetCrtcInfoReply struct {
+ Sequence uint16
+ Length uint32
+ Status byte
+ Timestamp xproto.Timestamp
+ X int16
+ Y int16
+ Width uint16
+ Height uint16
+ Mode Mode
+ Rotation uint16
+ Rotations uint16
+ NumOutputs uint16
+ NumPossibleOutputs uint16
+ Outputs []Output // size: xgb.Pad((int(NumOutputs) * 4))
+ Possible []Output // size: xgb.Pad((int(NumPossibleOutputs) * 4))
+}
+
+// Waits and reads reply data from request GetCrtcInfo
+func (cook GetCrtcInfoCookie) Reply() (*GetCrtcInfoReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return getCrtcInfoReply(buf), nil
+}
+
+// Read reply into structure from buffer for GetCrtcInfo
+func getCrtcInfoReply(buf []byte) *GetCrtcInfoReply {
+ v := new(GetCrtcInfoReply)
+ b := 1 // skip reply determinant
+
+ v.Status = buf[b]
+ b += 1
+
+ v.Sequence = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Length = xgb.Get32(buf[b:]) // 4-byte units
+ b += 4
+
+ v.Timestamp = xproto.Timestamp(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.X = int16(xgb.Get16(buf[b:]))
+ b += 2
+
+ v.Y = int16(xgb.Get16(buf[b:]))
+ b += 2
+
+ v.Width = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Height = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Mode = Mode(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Rotation = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Rotations = xgb.Get16(buf[b:])
+ b += 2
+
+ v.NumOutputs = xgb.Get16(buf[b:])
+ b += 2
+
+ v.NumPossibleOutputs = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Outputs = make([]Output, v.NumOutputs)
+ for i := 0; i < int(v.NumOutputs); i++ {
+ v.Outputs[i] = Output(xgb.Get32(buf[b:]))
+ b += 4
+ }
+ b = xgb.Pad(b)
+
+ v.Possible = make([]Output, v.NumPossibleOutputs)
+ for i := 0; i < int(v.NumPossibleOutputs); i++ {
+ v.Possible[i] = Output(xgb.Get32(buf[b:]))
+ b += 4
+ }
+ b = xgb.Pad(b)
+
+ return v
+}
+
+// Write request to wire for GetCrtcInfo
+func getCrtcInfoRequest(c *xgb.Conn, Crtc Crtc, ConfigTimestamp xproto.Timestamp) []byte {
+ size := 12
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = c.Extensions["RANDR"]
+ b += 1
+
+ buf[b] = 20 // 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(Crtc))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(ConfigTimestamp))
+ b += 4
+
+ return buf
+}
+
+// Request SetCrtcConfig
+// size: xgb.Pad((28 + xgb.Pad((len(Outputs) * 4))))
+type SetCrtcConfigCookie struct {
+ *xgb.Cookie
+}
+
+func SetCrtcConfig(c *xgb.Conn, Crtc Crtc, Timestamp xproto.Timestamp, ConfigTimestamp xproto.Timestamp, X int16, Y int16, Mode Mode, Rotation uint16, Outputs []Output) SetCrtcConfigCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(setCrtcConfigRequest(c, Crtc, Timestamp, ConfigTimestamp, X, Y, Mode, Rotation, Outputs), cookie)
+ return SetCrtcConfigCookie{cookie}
+}
+
+func SetCrtcConfigUnchecked(c *xgb.Conn, Crtc Crtc, Timestamp xproto.Timestamp, ConfigTimestamp xproto.Timestamp, X int16, Y int16, Mode Mode, Rotation uint16, Outputs []Output) SetCrtcConfigCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(setCrtcConfigRequest(c, Crtc, Timestamp, ConfigTimestamp, X, Y, Mode, Rotation, Outputs), cookie)
+ return SetCrtcConfigCookie{cookie}
+}
+
+// Request reply for SetCrtcConfig
+// size: 32
+type SetCrtcConfigReply struct {
+ Sequence uint16
+ Length uint32
+ Status byte
+ Timestamp xproto.Timestamp
+ // padding: 20 bytes
+}
+
+// Waits and reads reply data from request SetCrtcConfig
+func (cook SetCrtcConfigCookie) Reply() (*SetCrtcConfigReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return setCrtcConfigReply(buf), nil
+}
+
+// Read reply into structure from buffer for SetCrtcConfig
+func setCrtcConfigReply(buf []byte) *SetCrtcConfigReply {
+ v := new(SetCrtcConfigReply)
+ b := 1 // skip reply determinant
+
+ v.Status = buf[b]
+ b += 1
+
+ v.Sequence = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Length = xgb.Get32(buf[b:]) // 4-byte units
+ b += 4
+
+ v.Timestamp = xproto.Timestamp(xgb.Get32(buf[b:]))
+ b += 4
+
+ b += 20 // padding
+
+ return v
+}
+
+// Write request to wire for SetCrtcConfig
+func setCrtcConfigRequest(c *xgb.Conn, Crtc Crtc, Timestamp xproto.Timestamp, ConfigTimestamp xproto.Timestamp, X int16, Y int16, Mode Mode, Rotation uint16, Outputs []Output) []byte {
+ size := xgb.Pad((28 + xgb.Pad((len(Outputs) * 4))))
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = c.Extensions["RANDR"]
+ b += 1
+
+ buf[b] = 21 // 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(Crtc))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(Timestamp))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(ConfigTimestamp))
+ b += 4
+
+ xgb.Put16(buf[b:], uint16(X))
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(Y))
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Mode))
+ b += 4
+
+ xgb.Put16(buf[b:], Rotation)
+ b += 2
+
+ b += 2 // padding
+
+ for i := 0; i < int(len(Outputs)); i++ {
+ xgb.Put32(buf[b:], uint32(Outputs[i]))
+ b += 4
+ }
+ b = xgb.Pad(b)
+
+ return buf
+}
+
+// Request GetCrtcGammaSize
+// size: 8
+type GetCrtcGammaSizeCookie struct {
+ *xgb.Cookie
+}
+
+func GetCrtcGammaSize(c *xgb.Conn, Crtc Crtc) GetCrtcGammaSizeCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(getCrtcGammaSizeRequest(c, Crtc), cookie)
+ return GetCrtcGammaSizeCookie{cookie}
+}
+
+func GetCrtcGammaSizeUnchecked(c *xgb.Conn, Crtc Crtc) GetCrtcGammaSizeCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(getCrtcGammaSizeRequest(c, Crtc), cookie)
+ return GetCrtcGammaSizeCookie{cookie}
+}
+
+// Request reply for GetCrtcGammaSize
+// size: 32
+type GetCrtcGammaSizeReply struct {
+ Sequence uint16
+ Length uint32
+ // padding: 1 bytes
+ Size uint16
+ // padding: 22 bytes
+}
+
+// Waits and reads reply data from request GetCrtcGammaSize
+func (cook GetCrtcGammaSizeCookie) Reply() (*GetCrtcGammaSizeReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return getCrtcGammaSizeReply(buf), nil
+}
+
+// Read reply into structure from buffer for GetCrtcGammaSize
+func getCrtcGammaSizeReply(buf []byte) *GetCrtcGammaSizeReply {
+ v := new(GetCrtcGammaSizeReply)
+ 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.Size = xgb.Get16(buf[b:])
+ b += 2
+
+ b += 22 // padding
+
+ return v
+}
+
+// Write request to wire for GetCrtcGammaSize
+func getCrtcGammaSizeRequest(c *xgb.Conn, Crtc Crtc) []byte {
+ size := 8
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = c.Extensions["RANDR"]
+ b += 1
+
+ buf[b] = 22 // 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(Crtc))
+ b += 4
+
+ return buf
+}
+
+// Request GetCrtcGamma
+// size: 8
+type GetCrtcGammaCookie struct {
+ *xgb.Cookie
+}
+
+func GetCrtcGamma(c *xgb.Conn, Crtc Crtc) GetCrtcGammaCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(getCrtcGammaRequest(c, Crtc), cookie)
+ return GetCrtcGammaCookie{cookie}
+}
+
+func GetCrtcGammaUnchecked(c *xgb.Conn, Crtc Crtc) GetCrtcGammaCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(getCrtcGammaRequest(c, Crtc), cookie)
+ return GetCrtcGammaCookie{cookie}
+}
+
+// Request reply for GetCrtcGamma
+// size: (((32 + xgb.Pad((int(Size) * 2))) + xgb.Pad((int(Size) * 2))) + xgb.Pad((int(Size) * 2)))
+type GetCrtcGammaReply struct {
+ Sequence uint16
+ Length uint32
+ // padding: 1 bytes
+ Size uint16
+ // padding: 22 bytes
+ Red []uint16 // size: xgb.Pad((int(Size) * 2))
+ Green []uint16 // size: xgb.Pad((int(Size) * 2))
+ Blue []uint16 // size: xgb.Pad((int(Size) * 2))
+}
+
+// Waits and reads reply data from request GetCrtcGamma
+func (cook GetCrtcGammaCookie) Reply() (*GetCrtcGammaReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return getCrtcGammaReply(buf), nil
+}
+
+// Read reply into structure from buffer for GetCrtcGamma
+func getCrtcGammaReply(buf []byte) *GetCrtcGammaReply {
+ v := new(GetCrtcGammaReply)
+ 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.Size = xgb.Get16(buf[b:])
+ b += 2
+
+ b += 22 // padding
+
+ v.Red = make([]uint16, v.Size)
+ for i := 0; i < int(v.Size); i++ {
+ v.Red[i] = xgb.Get16(buf[b:])
+ b += 2
+ }
+ b = xgb.Pad(b)
+
+ v.Green = make([]uint16, v.Size)
+ for i := 0; i < int(v.Size); i++ {
+ v.Green[i] = xgb.Get16(buf[b:])
+ b += 2
+ }
+ b = xgb.Pad(b)
+
+ v.Blue = make([]uint16, v.Size)
+ for i := 0; i < int(v.Size); i++ {
+ v.Blue[i] = xgb.Get16(buf[b:])
+ b += 2
+ }
+ b = xgb.Pad(b)
+
+ return v
+}
+
+// Write request to wire for GetCrtcGamma
+func getCrtcGammaRequest(c *xgb.Conn, Crtc Crtc) []byte {
+ size := 8
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = c.Extensions["RANDR"]
+ b += 1
+
+ buf[b] = 23 // 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(Crtc))
+ b += 4
+
+ return buf
+}
+
+// Request SetCrtcGamma
+// size: xgb.Pad((((12 + xgb.Pad((int(Size) * 2))) + xgb.Pad((int(Size) * 2))) + xgb.Pad((int(Size) * 2))))
+type SetCrtcGammaCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for SetCrtcGamma
+func SetCrtcGamma(c *xgb.Conn, Crtc Crtc, Size uint16, Red []uint16, Green []uint16, Blue []uint16) SetCrtcGammaCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(setCrtcGammaRequest(c, Crtc, Size, Red, Green, Blue), cookie)
+ return SetCrtcGammaCookie{cookie}
+}
+
+func SetCrtcGammaChecked(c *xgb.Conn, Crtc Crtc, Size uint16, Red []uint16, Green []uint16, Blue []uint16) SetCrtcGammaCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(setCrtcGammaRequest(c, Crtc, Size, Red, Green, Blue), cookie)
+ return SetCrtcGammaCookie{cookie}
+}
+
+func (cook SetCrtcGammaCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for SetCrtcGamma
+func setCrtcGammaRequest(c *xgb.Conn, Crtc Crtc, Size uint16, Red []uint16, Green []uint16, Blue []uint16) []byte {
+ size := xgb.Pad((((12 + xgb.Pad((int(Size) * 2))) + xgb.Pad((int(Size) * 2))) + xgb.Pad((int(Size) * 2))))
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = c.Extensions["RANDR"]
+ b += 1
+
+ buf[b] = 24 // 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(Crtc))
+ b += 4
+
+ xgb.Put16(buf[b:], Size)
+ b += 2
+
+ b += 2 // padding
+
+ for i := 0; i < int(Size); i++ {
+ xgb.Put16(buf[b:], Red[i])
+ b += 2
+ }
+ b = xgb.Pad(b)
+
+ for i := 0; i < int(Size); i++ {
+ xgb.Put16(buf[b:], Green[i])
+ b += 2
+ }
+ b = xgb.Pad(b)
+
+ for i := 0; i < int(Size); i++ {
+ xgb.Put16(buf[b:], Blue[i])
+ b += 2
+ }
+ b = xgb.Pad(b)
+
+ return buf
+}
+
+// Request GetScreenResourcesCurrent
+// size: 8
+type GetScreenResourcesCurrentCookie struct {
+ *xgb.Cookie
+}
+
+func GetScreenResourcesCurrent(c *xgb.Conn, Window xproto.Window) GetScreenResourcesCurrentCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(getScreenResourcesCurrentRequest(c, Window), cookie)
+ return GetScreenResourcesCurrentCookie{cookie}
+}
+
+func GetScreenResourcesCurrentUnchecked(c *xgb.Conn, Window xproto.Window) GetScreenResourcesCurrentCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(getScreenResourcesCurrentRequest(c, Window), cookie)
+ return GetScreenResourcesCurrentCookie{cookie}
+}
+
+// Request reply for GetScreenResourcesCurrent
+// size: ((((32 + xgb.Pad((int(NumCrtcs) * 4))) + xgb.Pad((int(NumOutputs) * 4))) + xgb.Pad((int(NumModes) * 32))) + xgb.Pad((int(NamesLen) * 1)))
+type GetScreenResourcesCurrentReply struct {
+ Sequence uint16
+ Length uint32
+ // padding: 1 bytes
+ Timestamp xproto.Timestamp
+ ConfigTimestamp xproto.Timestamp
+ NumCrtcs uint16
+ NumOutputs uint16
+ NumModes uint16
+ NamesLen uint16
+ // padding: 8 bytes
+ Crtcs []Crtc // size: xgb.Pad((int(NumCrtcs) * 4))
+ Outputs []Output // size: xgb.Pad((int(NumOutputs) * 4))
+ Modes []ModeInfo // size: xgb.Pad((int(NumModes) * 32))
+ Names []byte // size: xgb.Pad((int(NamesLen) * 1))
+}
+
+// Waits and reads reply data from request GetScreenResourcesCurrent
+func (cook GetScreenResourcesCurrentCookie) Reply() (*GetScreenResourcesCurrentReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return getScreenResourcesCurrentReply(buf), nil
+}
+
+// Read reply into structure from buffer for GetScreenResourcesCurrent
+func getScreenResourcesCurrentReply(buf []byte) *GetScreenResourcesCurrentReply {
+ v := new(GetScreenResourcesCurrentReply)
+ 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.Timestamp = xproto.Timestamp(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.ConfigTimestamp = xproto.Timestamp(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.NumCrtcs = xgb.Get16(buf[b:])
+ b += 2
+
+ v.NumOutputs = xgb.Get16(buf[b:])
+ b += 2
+
+ v.NumModes = xgb.Get16(buf[b:])
+ b += 2
+
+ v.NamesLen = xgb.Get16(buf[b:])
+ b += 2
+
+ b += 8 // padding
+
+ v.Crtcs = make([]Crtc, v.NumCrtcs)
+ for i := 0; i < int(v.NumCrtcs); i++ {
+ v.Crtcs[i] = Crtc(xgb.Get32(buf[b:]))
+ b += 4
+ }
+ b = xgb.Pad(b)
+
+ v.Outputs = make([]Output, v.NumOutputs)
+ for i := 0; i < int(v.NumOutputs); i++ {
+ v.Outputs[i] = Output(xgb.Get32(buf[b:]))
+ b += 4
+ }
+ b = xgb.Pad(b)
+
+ v.Modes = make([]ModeInfo, v.NumModes)
+ b += ModeInfoReadList(buf[b:], v.Modes)
+
+ v.Names = make([]byte, v.NamesLen)
+ copy(v.Names[:v.NamesLen], buf[b:])
+ b += xgb.Pad(int(v.NamesLen))
+
+ return v
+}
+
+// Write request to wire for GetScreenResourcesCurrent
+func getScreenResourcesCurrentRequest(c *xgb.Conn, Window xproto.Window) []byte {
+ size := 8
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = c.Extensions["RANDR"]
+ b += 1
+
+ buf[b] = 25 // 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
+}
+
+// Request SetCrtcTransform
+// size: xgb.Pad(((48 + xgb.Pad((int(FilterLen) * 1))) + xgb.Pad((len(FilterParams) * 4))))
+type SetCrtcTransformCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for SetCrtcTransform
+func SetCrtcTransform(c *xgb.Conn, Crtc Crtc, Transform render.Transform, FilterLen uint16, FilterName string, FilterParams []render.Fixed) SetCrtcTransformCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(setCrtcTransformRequest(c, Crtc, Transform, FilterLen, FilterName, FilterParams), cookie)
+ return SetCrtcTransformCookie{cookie}
+}
+
+func SetCrtcTransformChecked(c *xgb.Conn, Crtc Crtc, Transform render.Transform, FilterLen uint16, FilterName string, FilterParams []render.Fixed) SetCrtcTransformCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(setCrtcTransformRequest(c, Crtc, Transform, FilterLen, FilterName, FilterParams), cookie)
+ return SetCrtcTransformCookie{cookie}
+}
+
+func (cook SetCrtcTransformCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for SetCrtcTransform
+func setCrtcTransformRequest(c *xgb.Conn, Crtc Crtc, Transform render.Transform, FilterLen uint16, FilterName string, FilterParams []render.Fixed) []byte {
+ size := xgb.Pad(((48 + xgb.Pad((int(FilterLen) * 1))) + xgb.Pad((len(FilterParams) * 4))))
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = c.Extensions["RANDR"]
+ b += 1
+
+ buf[b] = 26 // 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(Crtc))
+ b += 4
+
+ {
+ structBytes := Transform.Bytes()
+ copy(buf[b:], structBytes)
+ b += xgb.Pad(len(structBytes))
+ }
+
+ xgb.Put16(buf[b:], FilterLen)
+ b += 2
+
+ b += 2 // padding
+
+ copy(buf[b:], FilterName[:FilterLen])
+ b += xgb.Pad(int(FilterLen))
+
+ for i := 0; i < int(len(FilterParams)); i++ {
+ xgb.Put32(buf[b:], uint32(FilterParams[i]))
+ b += 4
+ }
+ b = xgb.Pad(b)
+
+ return buf
+}
+
+// Request GetCrtcTransform
+// size: 8
+type GetCrtcTransformCookie struct {
+ *xgb.Cookie
+}
+
+func GetCrtcTransform(c *xgb.Conn, Crtc Crtc) GetCrtcTransformCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(getCrtcTransformRequest(c, Crtc), cookie)
+ return GetCrtcTransformCookie{cookie}
+}
+
+func GetCrtcTransformUnchecked(c *xgb.Conn, Crtc Crtc) GetCrtcTransformCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(getCrtcTransformRequest(c, Crtc), cookie)
+ return GetCrtcTransformCookie{cookie}
+}
+
+// Request reply for GetCrtcTransform
+// size: ((((96 + xgb.Pad((int(PendingLen) * 1))) + xgb.Pad((int(PendingNparams) * 4))) + xgb.Pad((int(CurrentLen) * 1))) + xgb.Pad((int(CurrentNparams) * 4)))
+type GetCrtcTransformReply struct {
+ Sequence uint16
+ Length uint32
+ // padding: 1 bytes
+ PendingTransform render.Transform
+ HasTransforms bool
+ // padding: 3 bytes
+ CurrentTransform render.Transform
+ // padding: 4 bytes
+ PendingLen uint16
+ PendingNparams uint16
+ CurrentLen uint16
+ CurrentNparams uint16
+ PendingFilterName string // size: xgb.Pad((int(PendingLen) * 1))
+ PendingParams []render.Fixed // size: xgb.Pad((int(PendingNparams) * 4))
+ CurrentFilterName string // size: xgb.Pad((int(CurrentLen) * 1))
+ CurrentParams []render.Fixed // size: xgb.Pad((int(CurrentNparams) * 4))
+}
+
+// Waits and reads reply data from request GetCrtcTransform
+func (cook GetCrtcTransformCookie) Reply() (*GetCrtcTransformReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return getCrtcTransformReply(buf), nil
+}
+
+// Read reply into structure from buffer for GetCrtcTransform
+func getCrtcTransformReply(buf []byte) *GetCrtcTransformReply {
+ v := new(GetCrtcTransformReply)
+ 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.PendingTransform = render.Transform{}
+ b += render.TransformRead(buf[b:], &v.PendingTransform)
+
+ if buf[b] == 1 {
+ v.HasTransforms = true
+ } else {
+ v.HasTransforms = false
+ }
+ b += 1
+
+ b += 3 // padding
+
+ v.CurrentTransform = render.Transform{}
+ b += render.TransformRead(buf[b:], &v.CurrentTransform)
+
+ b += 4 // padding
+
+ v.PendingLen = xgb.Get16(buf[b:])
+ b += 2
+
+ v.PendingNparams = xgb.Get16(buf[b:])
+ b += 2
+
+ v.CurrentLen = xgb.Get16(buf[b:])
+ b += 2
+
+ v.CurrentNparams = xgb.Get16(buf[b:])
+ b += 2
+
+ {
+ byteString := make([]byte, v.PendingLen)
+ copy(byteString[:v.PendingLen], buf[b:])
+ v.PendingFilterName = string(byteString)
+ b += xgb.Pad(int(v.PendingLen))
+ }
+
+ v.PendingParams = make([]render.Fixed, v.PendingNparams)
+ for i := 0; i < int(v.PendingNparams); i++ {
+ v.PendingParams[i] = render.Fixed(xgb.Get32(buf[b:]))
+ b += 4
+ }
+ b = xgb.Pad(b)
+
+ {
+ byteString := make([]byte, v.CurrentLen)
+ copy(byteString[:v.CurrentLen], buf[b:])
+ v.CurrentFilterName = string(byteString)
+ b += xgb.Pad(int(v.CurrentLen))
+ }
+
+ v.CurrentParams = make([]render.Fixed, v.CurrentNparams)
+ for i := 0; i < int(v.CurrentNparams); i++ {
+ v.CurrentParams[i] = render.Fixed(xgb.Get32(buf[b:]))
+ b += 4
+ }
+ b = xgb.Pad(b)
+
+ return v
+}
+
+// Write request to wire for GetCrtcTransform
+func getCrtcTransformRequest(c *xgb.Conn, Crtc Crtc) []byte {
+ size := 8
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = c.Extensions["RANDR"]
+ b += 1
+
+ buf[b] = 27 // 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(Crtc))
+ b += 4
+
+ return buf
+}
+
+// Request GetPanning
+// size: 8
+type GetPanningCookie struct {
+ *xgb.Cookie
+}
+
+func GetPanning(c *xgb.Conn, Crtc Crtc) GetPanningCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(getPanningRequest(c, Crtc), cookie)
+ return GetPanningCookie{cookie}
+}
+
+func GetPanningUnchecked(c *xgb.Conn, Crtc Crtc) GetPanningCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(getPanningRequest(c, Crtc), cookie)
+ return GetPanningCookie{cookie}
+}
+
+// Request reply for GetPanning
+// size: 36
+type GetPanningReply struct {
+ Sequence uint16
+ Length uint32
+ Status byte
+ Timestamp xproto.Timestamp
+ Left uint16
+ Top uint16
+ Width uint16
+ Height uint16
+ TrackLeft uint16
+ TrackTop uint16
+ TrackWidth uint16
+ TrackHeight uint16
+ BorderLeft int16
+ BorderTop int16
+ BorderRight int16
+ BorderBottom int16
+}
+
+// Waits and reads reply data from request GetPanning
+func (cook GetPanningCookie) Reply() (*GetPanningReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return getPanningReply(buf), nil
+}
+
+// Read reply into structure from buffer for GetPanning
+func getPanningReply(buf []byte) *GetPanningReply {
+ v := new(GetPanningReply)
+ b := 1 // skip reply determinant
+
+ v.Status = buf[b]
+ b += 1
+
+ v.Sequence = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Length = xgb.Get32(buf[b:]) // 4-byte units
+ b += 4
+
+ v.Timestamp = xproto.Timestamp(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Left = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Top = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Width = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Height = xgb.Get16(buf[b:])
+ b += 2
+
+ v.TrackLeft = xgb.Get16(buf[b:])
+ b += 2
+
+ v.TrackTop = xgb.Get16(buf[b:])
+ b += 2
+
+ v.TrackWidth = xgb.Get16(buf[b:])
+ b += 2
+
+ v.TrackHeight = xgb.Get16(buf[b:])
+ b += 2
+
+ v.BorderLeft = int16(xgb.Get16(buf[b:]))
+ b += 2
+
+ v.BorderTop = int16(xgb.Get16(buf[b:]))
+ b += 2
+
+ v.BorderRight = int16(xgb.Get16(buf[b:]))
+ b += 2
+
+ v.BorderBottom = int16(xgb.Get16(buf[b:]))
+ b += 2
+
+ return v
+}
+
+// Write request to wire for GetPanning
+func getPanningRequest(c *xgb.Conn, Crtc Crtc) []byte {
+ size := 8
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = c.Extensions["RANDR"]
+ b += 1
+
+ buf[b] = 28 // 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(Crtc))
+ b += 4
+
+ return buf
+}
+
+// Request SetPanning
+// size: 36
+type SetPanningCookie struct {
+ *xgb.Cookie
+}
+
+func SetPanning(c *xgb.Conn, Crtc Crtc, Timestamp xproto.Timestamp, Left uint16, Top uint16, Width uint16, Height uint16, TrackLeft uint16, TrackTop uint16, TrackWidth uint16, TrackHeight uint16, BorderLeft int16, BorderTop int16, BorderRight int16, BorderBottom int16) SetPanningCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(setPanningRequest(c, Crtc, Timestamp, Left, Top, Width, Height, TrackLeft, TrackTop, TrackWidth, TrackHeight, BorderLeft, BorderTop, BorderRight, BorderBottom), cookie)
+ return SetPanningCookie{cookie}
+}
+
+func SetPanningUnchecked(c *xgb.Conn, Crtc Crtc, Timestamp xproto.Timestamp, Left uint16, Top uint16, Width uint16, Height uint16, TrackLeft uint16, TrackTop uint16, TrackWidth uint16, TrackHeight uint16, BorderLeft int16, BorderTop int16, BorderRight int16, BorderBottom int16) SetPanningCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(setPanningRequest(c, Crtc, Timestamp, Left, Top, Width, Height, TrackLeft, TrackTop, TrackWidth, TrackHeight, BorderLeft, BorderTop, BorderRight, BorderBottom), cookie)
+ return SetPanningCookie{cookie}
+}
+
+// Request reply for SetPanning
+// size: 12
+type SetPanningReply struct {
+ Sequence uint16
+ Length uint32
+ Status byte
+ Timestamp xproto.Timestamp
+}
+
+// Waits and reads reply data from request SetPanning
+func (cook SetPanningCookie) Reply() (*SetPanningReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return setPanningReply(buf), nil
+}
+
+// Read reply into structure from buffer for SetPanning
+func setPanningReply(buf []byte) *SetPanningReply {
+ v := new(SetPanningReply)
+ b := 1 // skip reply determinant
+
+ v.Status = buf[b]
+ b += 1
+
+ v.Sequence = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Length = xgb.Get32(buf[b:]) // 4-byte units
+ b += 4
+
+ v.Timestamp = xproto.Timestamp(xgb.Get32(buf[b:]))
+ b += 4
+
+ return v
+}
+
+// Write request to wire for SetPanning
+func setPanningRequest(c *xgb.Conn, Crtc Crtc, Timestamp xproto.Timestamp, Left uint16, Top uint16, Width uint16, Height uint16, TrackLeft uint16, TrackTop uint16, TrackWidth uint16, TrackHeight uint16, BorderLeft int16, BorderTop int16, BorderRight int16, BorderBottom int16) []byte {
+ size := 36
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = c.Extensions["RANDR"]
+ b += 1
+
+ buf[b] = 29 // 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(Crtc))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(Timestamp))
+ b += 4
+
+ xgb.Put16(buf[b:], Left)
+ b += 2
+
+ xgb.Put16(buf[b:], Top)
+ b += 2
+
+ xgb.Put16(buf[b:], Width)
+ b += 2
+
+ xgb.Put16(buf[b:], Height)
+ b += 2
+
+ xgb.Put16(buf[b:], TrackLeft)
+ b += 2
+
+ xgb.Put16(buf[b:], TrackTop)
+ b += 2
+
+ xgb.Put16(buf[b:], TrackWidth)
+ b += 2
+
+ xgb.Put16(buf[b:], TrackHeight)
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(BorderLeft))
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(BorderTop))
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(BorderRight))
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(BorderBottom))
+ b += 2
+
+ return buf
+}
+
+// Request SetOutputPrimary
+// size: 12
+type SetOutputPrimaryCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for SetOutputPrimary
+func SetOutputPrimary(c *xgb.Conn, Window xproto.Window, Output Output) SetOutputPrimaryCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(setOutputPrimaryRequest(c, Window, Output), cookie)
+ return SetOutputPrimaryCookie{cookie}
+}
+
+func SetOutputPrimaryChecked(c *xgb.Conn, Window xproto.Window, Output Output) SetOutputPrimaryCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(setOutputPrimaryRequest(c, Window, Output), cookie)
+ return SetOutputPrimaryCookie{cookie}
+}
+
+func (cook SetOutputPrimaryCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for SetOutputPrimary
+func setOutputPrimaryRequest(c *xgb.Conn, Window xproto.Window, Output Output) []byte {
+ size := 12
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = c.Extensions["RANDR"]
+ b += 1
+
+ buf[b] = 30 // 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(Output))
+ b += 4
+
+ return buf
+}
+
+// Request GetOutputPrimary
+// size: 8
+type GetOutputPrimaryCookie struct {
+ *xgb.Cookie
+}
+
+func GetOutputPrimary(c *xgb.Conn, Window xproto.Window) GetOutputPrimaryCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(getOutputPrimaryRequest(c, Window), cookie)
+ return GetOutputPrimaryCookie{cookie}
+}
+
+func GetOutputPrimaryUnchecked(c *xgb.Conn, Window xproto.Window) GetOutputPrimaryCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(getOutputPrimaryRequest(c, Window), cookie)
+ return GetOutputPrimaryCookie{cookie}
+}
+
+// Request reply for GetOutputPrimary
+// size: 12
+type GetOutputPrimaryReply struct {
+ Sequence uint16
+ Length uint32
+ // padding: 1 bytes
+ Output Output
+}
+
+// Waits and reads reply data from request GetOutputPrimary
+func (cook GetOutputPrimaryCookie) Reply() (*GetOutputPrimaryReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return getOutputPrimaryReply(buf), nil
+}
+
+// Read reply into structure from buffer for GetOutputPrimary
+func getOutputPrimaryReply(buf []byte) *GetOutputPrimaryReply {
+ v := new(GetOutputPrimaryReply)
+ 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.Output = Output(xgb.Get32(buf[b:]))
+ b += 4
+
+ return v
+}
+
+// Write request to wire for GetOutputPrimary
+func getOutputPrimaryRequest(c *xgb.Conn, Window xproto.Window) []byte {
+ size := 8
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = c.Extensions["RANDR"]
+ b += 1
+
+ buf[b] = 31 // 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
+}