package xgb /* This file was generated by randr.xml on May 6 2012 3:00:44am EDT. This file is automatically generated. Edit at your peril! */ // Imports are not necessary for XGB because everything is // in one package. They are still listed here for reference. // import "xproto" // import "render" // 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 'Id' // Skipping definition for base type 'Card8' // Skipping definition for base type 'Int16' const ( RandrRotationRotate0 = 1 RandrRotationRotate90 = 2 RandrRotationRotate180 = 4 RandrRotationRotate270 = 8 RandrRotationReflectX = 16 RandrRotationReflectY = 32 ) const ( RandrSetConfigSuccess = 0 RandrSetConfigInvalidConfigTime = 1 RandrSetConfigInvalidTime = 2 RandrSetConfigFailed = 3 ) const ( RandrNotifyMaskScreenChange = 1 RandrNotifyMaskCrtcChange = 2 RandrNotifyMaskOutputChange = 4 RandrNotifyMaskOutputProperty = 8 ) const ( RandrModeFlagHsyncPositive = 1 RandrModeFlagHsyncNegative = 2 RandrModeFlagVsyncPositive = 4 RandrModeFlagVsyncNegative = 8 RandrModeFlagInterlace = 16 RandrModeFlagDoubleScan = 32 RandrModeFlagCsync = 64 RandrModeFlagCsyncPositive = 128 RandrModeFlagCsyncNegative = 256 RandrModeFlagHskewPresent = 512 RandrModeFlagBcast = 1024 RandrModeFlagPixelMultiplex = 2048 RandrModeFlagDoubleClock = 4096 RandrModeFlagHalveClock = 8192 ) const ( RandrConnectionConnected = 0 RandrConnectionDisconnected = 1 RandrConnectionUnknown = 2 ) const ( RandrNotifyCrtcChange = 0 RandrNotifyOutputChange = 1 RandrNotifyOutputProperty = 2 ) // Skipping resource definition of 'Mode' // Skipping resource definition of 'Crtc' // Skipping resource definition of 'Output' // 'RandrScreenSize' struct definition // Size: 8 type RandrScreenSize struct { Width uint16 Height uint16 Mwidth uint16 Mheight uint16 } // Struct read RandrScreenSize func ReadRandrScreenSize(buf []byte, v *RandrScreenSize) int { b := 0 v.Width = Get16(buf[b:]) b += 2 v.Height = Get16(buf[b:]) b += 2 v.Mwidth = Get16(buf[b:]) b += 2 v.Mheight = Get16(buf[b:]) b += 2 return b } // Struct list read RandrScreenSize func ReadRandrScreenSizeList(buf []byte, dest []RandrScreenSize) int { b := 0 for i := 0; i < len(dest); i++ { dest[i] = RandrScreenSize{} b += ReadRandrScreenSize(buf[b:], &dest[i]) } return pad(b) } // Struct write RandrScreenSize func (v RandrScreenSize) Bytes() []byte { buf := make([]byte, 8) b := 0 Put16(buf[b:], v.Width) b += 2 Put16(buf[b:], v.Height) b += 2 Put16(buf[b:], v.Mwidth) b += 2 Put16(buf[b:], v.Mheight) b += 2 return buf } // Write struct list RandrScreenSize func RandrScreenSizeListBytes(buf []byte, list []RandrScreenSize) int { b := 0 var structBytes []byte for _, item := range list { structBytes = item.Bytes() copy(buf[b:], structBytes) b += pad(len(structBytes)) } return b } // 'RandrRefreshRates' struct definition // Size: (2 + pad((int(NRates) * 2))) type RandrRefreshRates struct { NRates uint16 Rates []uint16 // size: pad((int(NRates) * 2)) } // Struct read RandrRefreshRates func ReadRandrRefreshRates(buf []byte, v *RandrRefreshRates) int { b := 0 v.NRates = Get16(buf[b:]) b += 2 v.Rates = make([]uint16, v.NRates) for i := 0; i < int(v.NRates); i++ { v.Rates[i] = Get16(buf[b:]) b += 2 } b = pad(b) return b } // Struct list read RandrRefreshRates func ReadRandrRefreshRatesList(buf []byte, dest []RandrRefreshRates) int { b := 0 for i := 0; i < len(dest); i++ { dest[i] = RandrRefreshRates{} b += ReadRandrRefreshRates(buf[b:], &dest[i]) } return pad(b) } // Struct write RandrRefreshRates func (v RandrRefreshRates) Bytes() []byte { buf := make([]byte, (2 + pad((int(v.NRates) * 2)))) b := 0 Put16(buf[b:], v.NRates) b += 2 for i := 0; i < int(v.NRates); i++ { Put16(buf[b:], v.Rates[i]) b += 2 } b = pad(b) return buf } // Write struct list RandrRefreshRates func RandrRefreshRatesListBytes(buf []byte, list []RandrRefreshRates) int { b := 0 var structBytes []byte for _, item := range list { structBytes = item.Bytes() copy(buf[b:], structBytes) b += pad(len(structBytes)) } return b } // Struct list size RandrRefreshRates func RandrRefreshRatesListSize(list []RandrRefreshRates) int { size := 0 for _, item := range list { size += (2 + pad((int(item.NRates) * 2))) } return size } // 'RandrModeInfo' struct definition // Size: 32 type RandrModeInfo 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 RandrModeInfo func ReadRandrModeInfo(buf []byte, v *RandrModeInfo) int { b := 0 v.Id = Get32(buf[b:]) b += 4 v.Width = Get16(buf[b:]) b += 2 v.Height = Get16(buf[b:]) b += 2 v.DotClock = Get32(buf[b:]) b += 4 v.HsyncStart = Get16(buf[b:]) b += 2 v.HsyncEnd = Get16(buf[b:]) b += 2 v.Htotal = Get16(buf[b:]) b += 2 v.Hskew = Get16(buf[b:]) b += 2 v.VsyncStart = Get16(buf[b:]) b += 2 v.VsyncEnd = Get16(buf[b:]) b += 2 v.Vtotal = Get16(buf[b:]) b += 2 v.NameLen = Get16(buf[b:]) b += 2 v.ModeFlags = Get32(buf[b:]) b += 4 return b } // Struct list read RandrModeInfo func ReadRandrModeInfoList(buf []byte, dest []RandrModeInfo) int { b := 0 for i := 0; i < len(dest); i++ { dest[i] = RandrModeInfo{} b += ReadRandrModeInfo(buf[b:], &dest[i]) } return pad(b) } // Struct write RandrModeInfo func (v RandrModeInfo) Bytes() []byte { buf := make([]byte, 32) b := 0 Put32(buf[b:], v.Id) b += 4 Put16(buf[b:], v.Width) b += 2 Put16(buf[b:], v.Height) b += 2 Put32(buf[b:], v.DotClock) b += 4 Put16(buf[b:], v.HsyncStart) b += 2 Put16(buf[b:], v.HsyncEnd) b += 2 Put16(buf[b:], v.Htotal) b += 2 Put16(buf[b:], v.Hskew) b += 2 Put16(buf[b:], v.VsyncStart) b += 2 Put16(buf[b:], v.VsyncEnd) b += 2 Put16(buf[b:], v.Vtotal) b += 2 Put16(buf[b:], v.NameLen) b += 2 Put32(buf[b:], v.ModeFlags) b += 4 return buf } // Write struct list RandrModeInfo func RandrModeInfoListBytes(buf []byte, list []RandrModeInfo) int { b := 0 var structBytes []byte for _, item := range list { structBytes = item.Bytes() copy(buf[b:], structBytes) b += pad(len(structBytes)) } return b } // 'RandrCrtcChange' struct definition // Size: 28 type RandrCrtcChange struct { Timestamp Timestamp Window Id Crtc Id Mode Id Rotation uint16 // padding: 2 bytes X int16 Y int16 Width uint16 Height uint16 } // Struct read RandrCrtcChange func ReadRandrCrtcChange(buf []byte, v *RandrCrtcChange) int { b := 0 v.Timestamp = Timestamp(Get32(buf[b:])) b += 4 v.Window = Id(Get32(buf[b:])) b += 4 v.Crtc = Id(Get32(buf[b:])) b += 4 v.Mode = Id(Get32(buf[b:])) b += 4 v.Rotation = Get16(buf[b:]) b += 2 b += 2 // padding v.X = int16(Get16(buf[b:])) b += 2 v.Y = int16(Get16(buf[b:])) b += 2 v.Width = Get16(buf[b:]) b += 2 v.Height = Get16(buf[b:]) b += 2 return b } // Struct list read RandrCrtcChange func ReadRandrCrtcChangeList(buf []byte, dest []RandrCrtcChange) int { b := 0 for i := 0; i < len(dest); i++ { dest[i] = RandrCrtcChange{} b += ReadRandrCrtcChange(buf[b:], &dest[i]) } return pad(b) } // Struct write RandrCrtcChange func (v RandrCrtcChange) Bytes() []byte { buf := make([]byte, 28) b := 0 Put32(buf[b:], uint32(v.Timestamp)) b += 4 Put32(buf[b:], uint32(v.Window)) b += 4 Put32(buf[b:], uint32(v.Crtc)) b += 4 Put32(buf[b:], uint32(v.Mode)) b += 4 Put16(buf[b:], v.Rotation) b += 2 b += 2 // padding Put16(buf[b:], uint16(v.X)) b += 2 Put16(buf[b:], uint16(v.Y)) b += 2 Put16(buf[b:], v.Width) b += 2 Put16(buf[b:], v.Height) b += 2 return buf } // Write struct list RandrCrtcChange func RandrCrtcChangeListBytes(buf []byte, list []RandrCrtcChange) int { b := 0 var structBytes []byte for _, item := range list { structBytes = item.Bytes() copy(buf[b:], structBytes) b += pad(len(structBytes)) } return b } // 'RandrOutputChange' struct definition // Size: 28 type RandrOutputChange struct { Timestamp Timestamp ConfigTimestamp Timestamp Window Id Output Id Crtc Id Mode Id Rotation uint16 Connection byte SubpixelOrder byte } // Struct read RandrOutputChange func ReadRandrOutputChange(buf []byte, v *RandrOutputChange) int { b := 0 v.Timestamp = Timestamp(Get32(buf[b:])) b += 4 v.ConfigTimestamp = Timestamp(Get32(buf[b:])) b += 4 v.Window = Id(Get32(buf[b:])) b += 4 v.Output = Id(Get32(buf[b:])) b += 4 v.Crtc = Id(Get32(buf[b:])) b += 4 v.Mode = Id(Get32(buf[b:])) b += 4 v.Rotation = Get16(buf[b:]) b += 2 v.Connection = buf[b] b += 1 v.SubpixelOrder = buf[b] b += 1 return b } // Struct list read RandrOutputChange func ReadRandrOutputChangeList(buf []byte, dest []RandrOutputChange) int { b := 0 for i := 0; i < len(dest); i++ { dest[i] = RandrOutputChange{} b += ReadRandrOutputChange(buf[b:], &dest[i]) } return pad(b) } // Struct write RandrOutputChange func (v RandrOutputChange) Bytes() []byte { buf := make([]byte, 28) b := 0 Put32(buf[b:], uint32(v.Timestamp)) b += 4 Put32(buf[b:], uint32(v.ConfigTimestamp)) b += 4 Put32(buf[b:], uint32(v.Window)) b += 4 Put32(buf[b:], uint32(v.Output)) b += 4 Put32(buf[b:], uint32(v.Crtc)) b += 4 Put32(buf[b:], uint32(v.Mode)) b += 4 Put16(buf[b:], v.Rotation) b += 2 buf[b] = v.Connection b += 1 buf[b] = v.SubpixelOrder b += 1 return buf } // Write struct list RandrOutputChange func RandrOutputChangeListBytes(buf []byte, list []RandrOutputChange) int { b := 0 var structBytes []byte for _, item := range list { structBytes = item.Bytes() copy(buf[b:], structBytes) b += pad(len(structBytes)) } return b } // 'RandrOutputProperty' struct definition // Size: 28 type RandrOutputProperty struct { Window Id Output Id Atom Id Timestamp Timestamp Status byte // padding: 11 bytes } // Struct read RandrOutputProperty func ReadRandrOutputProperty(buf []byte, v *RandrOutputProperty) int { b := 0 v.Window = Id(Get32(buf[b:])) b += 4 v.Output = Id(Get32(buf[b:])) b += 4 v.Atom = Id(Get32(buf[b:])) b += 4 v.Timestamp = Timestamp(Get32(buf[b:])) b += 4 v.Status = buf[b] b += 1 b += 11 // padding return b } // Struct list read RandrOutputProperty func ReadRandrOutputPropertyList(buf []byte, dest []RandrOutputProperty) int { b := 0 for i := 0; i < len(dest); i++ { dest[i] = RandrOutputProperty{} b += ReadRandrOutputProperty(buf[b:], &dest[i]) } return pad(b) } // Struct write RandrOutputProperty func (v RandrOutputProperty) Bytes() []byte { buf := make([]byte, 28) b := 0 Put32(buf[b:], uint32(v.Window)) b += 4 Put32(buf[b:], uint32(v.Output)) b += 4 Put32(buf[b:], uint32(v.Atom)) b += 4 Put32(buf[b:], uint32(v.Timestamp)) b += 4 buf[b] = v.Status b += 1 b += 11 // padding return buf } // Write struct list RandrOutputProperty func RandrOutputPropertyListBytes(buf []byte, list []RandrOutputProperty) int { b := 0 var structBytes []byte for _, item := range list { structBytes = item.Bytes() copy(buf[b:], structBytes) b += pad(len(structBytes)) } return b } // Union definition RandrNotifyDataUnion // 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 'RandrNotifyDataUnion': // NewRandrNotifyDataUnionCc(Cc RandrCrtcChange) RandrNotifyDataUnion // NewRandrNotifyDataUnionOc(Oc RandrOutputChange) RandrNotifyDataUnion // NewRandrNotifyDataUnionOp(Op RandrOutputProperty) RandrNotifyDataUnion type RandrNotifyDataUnion struct { Cc RandrCrtcChange Oc RandrOutputChange Op RandrOutputProperty } // Union constructor for RandrNotifyDataUnion for field Cc. func NewRandrNotifyDataUnionCc(Cc RandrCrtcChange) RandrNotifyDataUnion { var b int buf := make([]byte, 28) { structBytes := Cc.Bytes() copy(buf[b:], structBytes) b += pad(len(structBytes)) } // Create the Union type v := RandrNotifyDataUnion{} // Now copy buf into all fields b = 0 // always read the same bytes v.Cc = RandrCrtcChange{} b += ReadRandrCrtcChange(buf[b:], &v.Cc) b = 0 // always read the same bytes v.Oc = RandrOutputChange{} b += ReadRandrOutputChange(buf[b:], &v.Oc) b = 0 // always read the same bytes v.Op = RandrOutputProperty{} b += ReadRandrOutputProperty(buf[b:], &v.Op) return v } // Union constructor for RandrNotifyDataUnion for field Oc. func NewRandrNotifyDataUnionOc(Oc RandrOutputChange) RandrNotifyDataUnion { var b int buf := make([]byte, 28) { structBytes := Oc.Bytes() copy(buf[b:], structBytes) b += pad(len(structBytes)) } // Create the Union type v := RandrNotifyDataUnion{} // Now copy buf into all fields b = 0 // always read the same bytes v.Cc = RandrCrtcChange{} b += ReadRandrCrtcChange(buf[b:], &v.Cc) b = 0 // always read the same bytes v.Oc = RandrOutputChange{} b += ReadRandrOutputChange(buf[b:], &v.Oc) b = 0 // always read the same bytes v.Op = RandrOutputProperty{} b += ReadRandrOutputProperty(buf[b:], &v.Op) return v } // Union constructor for RandrNotifyDataUnion for field Op. func NewRandrNotifyDataUnionOp(Op RandrOutputProperty) RandrNotifyDataUnion { var b int buf := make([]byte, 28) { structBytes := Op.Bytes() copy(buf[b:], structBytes) b += pad(len(structBytes)) } // Create the Union type v := RandrNotifyDataUnion{} // Now copy buf into all fields b = 0 // always read the same bytes v.Cc = RandrCrtcChange{} b += ReadRandrCrtcChange(buf[b:], &v.Cc) b = 0 // always read the same bytes v.Oc = RandrOutputChange{} b += ReadRandrOutputChange(buf[b:], &v.Oc) b = 0 // always read the same bytes v.Op = RandrOutputProperty{} b += ReadRandrOutputProperty(buf[b:], &v.Op) return v } // Union read RandrNotifyDataUnion func ReadRandrNotifyDataUnion(buf []byte, v *RandrNotifyDataUnion) int { var b int b = 0 // re-read the same bytes v.Cc = RandrCrtcChange{} b += ReadRandrCrtcChange(buf[b:], &v.Cc) b = 0 // re-read the same bytes v.Oc = RandrOutputChange{} b += ReadRandrOutputChange(buf[b:], &v.Oc) b = 0 // re-read the same bytes v.Op = RandrOutputProperty{} b += ReadRandrOutputProperty(buf[b:], &v.Op) return 28 } // Union list read RandrNotifyDataUnion func ReadRandrNotifyDataUnionList(buf []byte, dest []RandrNotifyDataUnion) int { b := 0 for i := 0; i < len(dest); i++ { dest[i] = RandrNotifyDataUnion{} b += ReadRandrNotifyDataUnion(buf[b:], &dest[i]) } return pad(b) } // Union write RandrNotifyDataUnion // Each field in a union must contain the same data. // So simply pick the first field and write that to the wire. func (v RandrNotifyDataUnion) Bytes() []byte { buf := make([]byte, 28) b := 0 { structBytes := v.Cc.Bytes() copy(buf[b:], structBytes) b += pad(len(structBytes)) } return buf } // Union list write RandrNotifyDataUnion func RandrNotifyDataUnionListBytes(buf []byte, list []RandrNotifyDataUnion) int { b := 0 var unionBytes []byte for _, item := range list { unionBytes = item.Bytes() copy(buf[b:], unionBytes) b += pad(len(unionBytes)) } return b } // Event definition RandrScreenChangeNotify (0) // Size: 32 const RandrScreenChangeNotify = 0 type RandrScreenChangeNotifyEvent struct { Sequence uint16 Rotation byte Timestamp Timestamp ConfigTimestamp Timestamp Root Id RequestWindow Id SizeID uint16 SubpixelOrder uint16 Width uint16 Height uint16 Mwidth uint16 Mheight uint16 } // Event read RandrScreenChangeNotify func NewRandrScreenChangeNotifyEvent(buf []byte) Event { v := RandrScreenChangeNotifyEvent{} b := 1 // don't read event number v.Rotation = buf[b] b += 1 v.Sequence = Get16(buf[b:]) b += 2 v.Timestamp = Timestamp(Get32(buf[b:])) b += 4 v.ConfigTimestamp = Timestamp(Get32(buf[b:])) b += 4 v.Root = Id(Get32(buf[b:])) b += 4 v.RequestWindow = Id(Get32(buf[b:])) b += 4 v.SizeID = Get16(buf[b:]) b += 2 v.SubpixelOrder = Get16(buf[b:]) b += 2 v.Width = Get16(buf[b:]) b += 2 v.Height = Get16(buf[b:]) b += 2 v.Mwidth = Get16(buf[b:]) b += 2 v.Mheight = Get16(buf[b:]) b += 2 return v } // Event write RandrScreenChangeNotify func (v RandrScreenChangeNotifyEvent) 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 Put32(buf[b:], uint32(v.Timestamp)) b += 4 Put32(buf[b:], uint32(v.ConfigTimestamp)) b += 4 Put32(buf[b:], uint32(v.Root)) b += 4 Put32(buf[b:], uint32(v.RequestWindow)) b += 4 Put16(buf[b:], v.SizeID) b += 2 Put16(buf[b:], v.SubpixelOrder) b += 2 Put16(buf[b:], v.Width) b += 2 Put16(buf[b:], v.Height) b += 2 Put16(buf[b:], v.Mwidth) b += 2 Put16(buf[b:], v.Mheight) b += 2 return buf } func (v RandrScreenChangeNotifyEvent) ImplementsEvent() {} func (v RandrScreenChangeNotifyEvent) SequenceId() uint16 { return v.Sequence } func (v RandrScreenChangeNotifyEvent) String() string { fieldVals := make([]string, 0, 11) fieldVals = append(fieldVals, sprintf("Sequence: %d", v.Sequence)) fieldVals = append(fieldVals, sprintf("Rotation: %d", v.Rotation)) fieldVals = append(fieldVals, sprintf("Timestamp: %d", v.Timestamp)) fieldVals = append(fieldVals, sprintf("ConfigTimestamp: %d", v.ConfigTimestamp)) fieldVals = append(fieldVals, sprintf("Root: %d", v.Root)) fieldVals = append(fieldVals, sprintf("RequestWindow: %d", v.RequestWindow)) fieldVals = append(fieldVals, sprintf("SizeID: %d", v.SizeID)) fieldVals = append(fieldVals, sprintf("SubpixelOrder: %d", v.SubpixelOrder)) fieldVals = append(fieldVals, sprintf("Width: %d", v.Width)) fieldVals = append(fieldVals, sprintf("Height: %d", v.Height)) fieldVals = append(fieldVals, sprintf("Mwidth: %d", v.Mwidth)) fieldVals = append(fieldVals, sprintf("Mheight: %d", v.Mheight)) return "RandrScreenChangeNotify {" + stringsJoin(fieldVals, ", ") + "}" } func init() { newEventFuncs[0] = NewRandrScreenChangeNotifyEvent } // Event definition RandrNotify (1) // Size: 32 const RandrNotify = 1 type RandrNotifyEvent struct { Sequence uint16 SubCode byte U RandrNotifyDataUnion } // Event read RandrNotify func NewRandrNotifyEvent(buf []byte) Event { v := RandrNotifyEvent{} b := 1 // don't read event number v.SubCode = buf[b] b += 1 v.Sequence = Get16(buf[b:]) b += 2 v.U = RandrNotifyDataUnion{} b += ReadRandrNotifyDataUnion(buf[b:], &v.U) return v } // Event write RandrNotify func (v RandrNotifyEvent) 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 += pad(len(unionBytes)) } return buf } func (v RandrNotifyEvent) ImplementsEvent() {} func (v RandrNotifyEvent) SequenceId() uint16 { return v.Sequence } func (v RandrNotifyEvent) String() string { fieldVals := make([]string, 0, 2) fieldVals = append(fieldVals, sprintf("Sequence: %d", v.Sequence)) fieldVals = append(fieldVals, sprintf("SubCode: %d", v.SubCode)) return "RandrNotify {" + stringsJoin(fieldVals, ", ") + "}" } func init() { newEventFuncs[1] = NewRandrNotifyEvent } // Error definition RandrBadOutput (0) // Size: 32 const BadRandrBadOutput = 0 type RandrBadOutputError struct { Sequence uint16 NiceName string } // Error read RandrBadOutput func NewRandrBadOutputError(buf []byte) Error { v := RandrBadOutputError{} v.NiceName = "RandrBadOutput" b := 1 // skip error determinant b += 1 // don't read error number v.Sequence = Get16(buf[b:]) b += 2 return v } func (err RandrBadOutputError) ImplementsError() {} func (err RandrBadOutputError) SequenceId() uint16 { return err.Sequence } func (err RandrBadOutputError) BadId() Id { return 0 } func (err RandrBadOutputError) Error() string { fieldVals := make([]string, 0, 0) fieldVals = append(fieldVals, "NiceName: "+err.NiceName) fieldVals = append(fieldVals, sprintf("Sequence: %d", err.Sequence)) return "BadRandrBadOutput {" + stringsJoin(fieldVals, ", ") + "}" } func init() { newErrorFuncs[0] = NewRandrBadOutputError } // Error definition RandrBadCrtc (1) // Size: 32 const BadRandrBadCrtc = 1 type RandrBadCrtcError struct { Sequence uint16 NiceName string } // Error read RandrBadCrtc func NewRandrBadCrtcError(buf []byte) Error { v := RandrBadCrtcError{} v.NiceName = "RandrBadCrtc" b := 1 // skip error determinant b += 1 // don't read error number v.Sequence = Get16(buf[b:]) b += 2 return v } func (err RandrBadCrtcError) ImplementsError() {} func (err RandrBadCrtcError) SequenceId() uint16 { return err.Sequence } func (err RandrBadCrtcError) BadId() Id { return 0 } func (err RandrBadCrtcError) Error() string { fieldVals := make([]string, 0, 0) fieldVals = append(fieldVals, "NiceName: "+err.NiceName) fieldVals = append(fieldVals, sprintf("Sequence: %d", err.Sequence)) return "BadRandrBadCrtc {" + stringsJoin(fieldVals, ", ") + "}" } func init() { newErrorFuncs[1] = NewRandrBadCrtcError } // Error definition RandrBadMode (2) // Size: 32 const BadRandrBadMode = 2 type RandrBadModeError struct { Sequence uint16 NiceName string } // Error read RandrBadMode func NewRandrBadModeError(buf []byte) Error { v := RandrBadModeError{} v.NiceName = "RandrBadMode" b := 1 // skip error determinant b += 1 // don't read error number v.Sequence = Get16(buf[b:]) b += 2 return v } func (err RandrBadModeError) ImplementsError() {} func (err RandrBadModeError) SequenceId() uint16 { return err.Sequence } func (err RandrBadModeError) BadId() Id { return 0 } func (err RandrBadModeError) Error() string { fieldVals := make([]string, 0, 0) fieldVals = append(fieldVals, "NiceName: "+err.NiceName) fieldVals = append(fieldVals, sprintf("Sequence: %d", err.Sequence)) return "BadRandrBadMode {" + stringsJoin(fieldVals, ", ") + "}" } func init() { newErrorFuncs[2] = NewRandrBadModeError } // Request RandrQueryVersion // size: 12 type RandrQueryVersionCookie struct { *cookie } func (c *Conn) RandrQueryVersion(MajorVersion uint32, MinorVersion uint32) RandrQueryVersionCookie { cookie := c.newCookie(true, true) c.newRequest(c.randrQueryVersionRequest(MajorVersion, MinorVersion), cookie) return RandrQueryVersionCookie{cookie} } func (c *Conn) RandrQueryVersionUnchecked(MajorVersion uint32, MinorVersion uint32) RandrQueryVersionCookie { cookie := c.newCookie(false, true) c.newRequest(c.randrQueryVersionRequest(MajorVersion, MinorVersion), cookie) return RandrQueryVersionCookie{cookie} } // Request reply for RandrQueryVersion // size: 32 type RandrQueryVersionReply struct { Sequence uint16 Length uint32 // padding: 1 bytes MajorVersion uint32 MinorVersion uint32 // padding: 16 bytes } // Waits and reads reply data from request RandrQueryVersion func (cook RandrQueryVersionCookie) Reply() (*RandrQueryVersionReply, error) { buf, err := cook.reply() if err != nil { return nil, err } if buf == nil { return nil, nil } return randrQueryVersionReply(buf), nil } // Read reply into structure from buffer for RandrQueryVersion func randrQueryVersionReply(buf []byte) *RandrQueryVersionReply { v := new(RandrQueryVersionReply) b := 1 // skip reply determinant b += 1 // padding v.Sequence = Get16(buf[b:]) b += 2 v.Length = Get32(buf[b:]) // 4-byte units b += 4 v.MajorVersion = Get32(buf[b:]) b += 4 v.MinorVersion = Get32(buf[b:]) b += 4 b += 16 // padding return v } func (cook RandrQueryVersionCookie) Check() error { return cook.check() } // Write request to wire for RandrQueryVersion func (c *Conn) randrQueryVersionRequest(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 Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units b += 2 Put32(buf[b:], MajorVersion) b += 4 Put32(buf[b:], MinorVersion) b += 4 return buf } // Request RandrSetScreenConfig // size: 24 type RandrSetScreenConfigCookie struct { *cookie } func (c *Conn) RandrSetScreenConfig(Window Id, Timestamp Timestamp, ConfigTimestamp Timestamp, SizeID uint16, Rotation uint16, Rate uint16) RandrSetScreenConfigCookie { cookie := c.newCookie(true, true) c.newRequest(c.randrSetScreenConfigRequest(Window, Timestamp, ConfigTimestamp, SizeID, Rotation, Rate), cookie) return RandrSetScreenConfigCookie{cookie} } func (c *Conn) RandrSetScreenConfigUnchecked(Window Id, Timestamp Timestamp, ConfigTimestamp Timestamp, SizeID uint16, Rotation uint16, Rate uint16) RandrSetScreenConfigCookie { cookie := c.newCookie(false, true) c.newRequest(c.randrSetScreenConfigRequest(Window, Timestamp, ConfigTimestamp, SizeID, Rotation, Rate), cookie) return RandrSetScreenConfigCookie{cookie} } // Request reply for RandrSetScreenConfig // size: 32 type RandrSetScreenConfigReply struct { Sequence uint16 Length uint32 Status byte NewTimestamp Timestamp ConfigTimestamp Timestamp Root Id SubpixelOrder uint16 // padding: 10 bytes } // Waits and reads reply data from request RandrSetScreenConfig func (cook RandrSetScreenConfigCookie) Reply() (*RandrSetScreenConfigReply, error) { buf, err := cook.reply() if err != nil { return nil, err } if buf == nil { return nil, nil } return randrSetScreenConfigReply(buf), nil } // Read reply into structure from buffer for RandrSetScreenConfig func randrSetScreenConfigReply(buf []byte) *RandrSetScreenConfigReply { v := new(RandrSetScreenConfigReply) b := 1 // skip reply determinant v.Status = buf[b] b += 1 v.Sequence = Get16(buf[b:]) b += 2 v.Length = Get32(buf[b:]) // 4-byte units b += 4 v.NewTimestamp = Timestamp(Get32(buf[b:])) b += 4 v.ConfigTimestamp = Timestamp(Get32(buf[b:])) b += 4 v.Root = Id(Get32(buf[b:])) b += 4 v.SubpixelOrder = Get16(buf[b:]) b += 2 b += 10 // padding return v } func (cook RandrSetScreenConfigCookie) Check() error { return cook.check() } // Write request to wire for RandrSetScreenConfig func (c *Conn) randrSetScreenConfigRequest(Window Id, Timestamp Timestamp, ConfigTimestamp 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 Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units b += 2 Put32(buf[b:], uint32(Window)) b += 4 Put32(buf[b:], uint32(Timestamp)) b += 4 Put32(buf[b:], uint32(ConfigTimestamp)) b += 4 Put16(buf[b:], SizeID) b += 2 Put16(buf[b:], Rotation) b += 2 Put16(buf[b:], Rate) b += 2 b += 2 // padding return buf } // Request RandrSelectInput // size: 12 type RandrSelectInputCookie struct { *cookie } // Write request to wire for RandrSelectInput func (c *Conn) RandrSelectInput(Window Id, Enable uint16) RandrSelectInputCookie { cookie := c.newCookie(false, false) c.newRequest(c.randrSelectInputRequest(Window, Enable), cookie) return RandrSelectInputCookie{cookie} } func (c *Conn) RandrSelectInputChecked(Window Id, Enable uint16) RandrSelectInputCookie { cookie := c.newCookie(true, false) c.newRequest(c.randrSelectInputRequest(Window, Enable), cookie) return RandrSelectInputCookie{cookie} } func (cook RandrSelectInputCookie) Check() error { return cook.check() } // Write request to wire for RandrSelectInput func (c *Conn) randrSelectInputRequest(Window Id, 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 Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units b += 2 Put32(buf[b:], uint32(Window)) b += 4 Put16(buf[b:], Enable) b += 2 b += 2 // padding return buf } // Request RandrGetScreenInfo // size: 8 type RandrGetScreenInfoCookie struct { *cookie } func (c *Conn) RandrGetScreenInfo(Window Id) RandrGetScreenInfoCookie { cookie := c.newCookie(true, true) c.newRequest(c.randrGetScreenInfoRequest(Window), cookie) return RandrGetScreenInfoCookie{cookie} } func (c *Conn) RandrGetScreenInfoUnchecked(Window Id) RandrGetScreenInfoCookie { cookie := c.newCookie(false, true) c.newRequest(c.randrGetScreenInfoRequest(Window), cookie) return RandrGetScreenInfoCookie{cookie} } // Request reply for RandrGetScreenInfo // size: ((32 + pad((int(NSizes) * 8))) + RandrRefreshRatesListSize(Rates)) type RandrGetScreenInfoReply struct { Sequence uint16 Length uint32 Rotations byte Root Id Timestamp Timestamp ConfigTimestamp Timestamp NSizes uint16 SizeID uint16 Rotation uint16 Rate uint16 NInfo uint16 // padding: 2 bytes Sizes []RandrScreenSize // size: pad((int(NSizes) * 8)) Rates []RandrRefreshRates // size: RandrRefreshRatesListSize(Rates) } // Waits and reads reply data from request RandrGetScreenInfo func (cook RandrGetScreenInfoCookie) Reply() (*RandrGetScreenInfoReply, error) { buf, err := cook.reply() if err != nil { return nil, err } if buf == nil { return nil, nil } return randrGetScreenInfoReply(buf), nil } // Read reply into structure from buffer for RandrGetScreenInfo func randrGetScreenInfoReply(buf []byte) *RandrGetScreenInfoReply { v := new(RandrGetScreenInfoReply) b := 1 // skip reply determinant v.Rotations = buf[b] b += 1 v.Sequence = Get16(buf[b:]) b += 2 v.Length = Get32(buf[b:]) // 4-byte units b += 4 v.Root = Id(Get32(buf[b:])) b += 4 v.Timestamp = Timestamp(Get32(buf[b:])) b += 4 v.ConfigTimestamp = Timestamp(Get32(buf[b:])) b += 4 v.NSizes = Get16(buf[b:]) b += 2 v.SizeID = Get16(buf[b:]) b += 2 v.Rotation = Get16(buf[b:]) b += 2 v.Rate = Get16(buf[b:]) b += 2 v.NInfo = Get16(buf[b:]) b += 2 b += 2 // padding v.Sizes = make([]RandrScreenSize, v.NSizes) b += ReadRandrScreenSizeList(buf[b:], v.Sizes) v.Rates = make([]RandrRefreshRates, (int(v.NInfo) - int(v.NSizes))) b += ReadRandrRefreshRatesList(buf[b:], v.Rates) return v } func (cook RandrGetScreenInfoCookie) Check() error { return cook.check() } // Write request to wire for RandrGetScreenInfo func (c *Conn) randrGetScreenInfoRequest(Window Id) []byte { size := 8 b := 0 buf := make([]byte, size) buf[b] = c.extensions["RANDR"] b += 1 buf[b] = 5 // request opcode b += 1 Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units b += 2 Put32(buf[b:], uint32(Window)) b += 4 return buf } // Request RandrGetScreenSizeRange // size: 8 type RandrGetScreenSizeRangeCookie struct { *cookie } func (c *Conn) RandrGetScreenSizeRange(Window Id) RandrGetScreenSizeRangeCookie { cookie := c.newCookie(true, true) c.newRequest(c.randrGetScreenSizeRangeRequest(Window), cookie) return RandrGetScreenSizeRangeCookie{cookie} } func (c *Conn) RandrGetScreenSizeRangeUnchecked(Window Id) RandrGetScreenSizeRangeCookie { cookie := c.newCookie(false, true) c.newRequest(c.randrGetScreenSizeRangeRequest(Window), cookie) return RandrGetScreenSizeRangeCookie{cookie} } // Request reply for RandrGetScreenSizeRange // size: 32 type RandrGetScreenSizeRangeReply 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 RandrGetScreenSizeRange func (cook RandrGetScreenSizeRangeCookie) Reply() (*RandrGetScreenSizeRangeReply, error) { buf, err := cook.reply() if err != nil { return nil, err } if buf == nil { return nil, nil } return randrGetScreenSizeRangeReply(buf), nil } // Read reply into structure from buffer for RandrGetScreenSizeRange func randrGetScreenSizeRangeReply(buf []byte) *RandrGetScreenSizeRangeReply { v := new(RandrGetScreenSizeRangeReply) b := 1 // skip reply determinant b += 1 // padding v.Sequence = Get16(buf[b:]) b += 2 v.Length = Get32(buf[b:]) // 4-byte units b += 4 v.MinWidth = Get16(buf[b:]) b += 2 v.MinHeight = Get16(buf[b:]) b += 2 v.MaxWidth = Get16(buf[b:]) b += 2 v.MaxHeight = Get16(buf[b:]) b += 2 b += 16 // padding return v } func (cook RandrGetScreenSizeRangeCookie) Check() error { return cook.check() } // Write request to wire for RandrGetScreenSizeRange func (c *Conn) randrGetScreenSizeRangeRequest(Window Id) []byte { size := 8 b := 0 buf := make([]byte, size) buf[b] = c.extensions["RANDR"] b += 1 buf[b] = 6 // request opcode b += 1 Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units b += 2 Put32(buf[b:], uint32(Window)) b += 4 return buf } // Request RandrSetScreenSize // size: 20 type RandrSetScreenSizeCookie struct { *cookie } // Write request to wire for RandrSetScreenSize func (c *Conn) RandrSetScreenSize(Window Id, Width uint16, Height uint16, MmWidth uint32, MmHeight uint32) RandrSetScreenSizeCookie { cookie := c.newCookie(false, false) c.newRequest(c.randrSetScreenSizeRequest(Window, Width, Height, MmWidth, MmHeight), cookie) return RandrSetScreenSizeCookie{cookie} } func (c *Conn) RandrSetScreenSizeChecked(Window Id, Width uint16, Height uint16, MmWidth uint32, MmHeight uint32) RandrSetScreenSizeCookie { cookie := c.newCookie(true, false) c.newRequest(c.randrSetScreenSizeRequest(Window, Width, Height, MmWidth, MmHeight), cookie) return RandrSetScreenSizeCookie{cookie} } func (cook RandrSetScreenSizeCookie) Check() error { return cook.check() } // Write request to wire for RandrSetScreenSize func (c *Conn) randrSetScreenSizeRequest(Window Id, 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 Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units b += 2 Put32(buf[b:], uint32(Window)) b += 4 Put16(buf[b:], Width) b += 2 Put16(buf[b:], Height) b += 2 Put32(buf[b:], MmWidth) b += 4 Put32(buf[b:], MmHeight) b += 4 return buf } // Request RandrGetScreenResources // size: 8 type RandrGetScreenResourcesCookie struct { *cookie } func (c *Conn) RandrGetScreenResources(Window Id) RandrGetScreenResourcesCookie { cookie := c.newCookie(true, true) c.newRequest(c.randrGetScreenResourcesRequest(Window), cookie) return RandrGetScreenResourcesCookie{cookie} } func (c *Conn) RandrGetScreenResourcesUnchecked(Window Id) RandrGetScreenResourcesCookie { cookie := c.newCookie(false, true) c.newRequest(c.randrGetScreenResourcesRequest(Window), cookie) return RandrGetScreenResourcesCookie{cookie} } // Request reply for RandrGetScreenResources // size: ((((32 + pad((int(NumCrtcs) * 4))) + pad((int(NumOutputs) * 4))) + pad((int(NumModes) * 32))) + pad((int(NamesLen) * 1))) type RandrGetScreenResourcesReply struct { Sequence uint16 Length uint32 // padding: 1 bytes Timestamp Timestamp ConfigTimestamp Timestamp NumCrtcs uint16 NumOutputs uint16 NumModes uint16 NamesLen uint16 // padding: 8 bytes Crtcs []Id // size: pad((int(NumCrtcs) * 4)) Outputs []Id // size: pad((int(NumOutputs) * 4)) Modes []RandrModeInfo // size: pad((int(NumModes) * 32)) Names []byte // size: pad((int(NamesLen) * 1)) } // Waits and reads reply data from request RandrGetScreenResources func (cook RandrGetScreenResourcesCookie) Reply() (*RandrGetScreenResourcesReply, error) { buf, err := cook.reply() if err != nil { return nil, err } if buf == nil { return nil, nil } return randrGetScreenResourcesReply(buf), nil } // Read reply into structure from buffer for RandrGetScreenResources func randrGetScreenResourcesReply(buf []byte) *RandrGetScreenResourcesReply { v := new(RandrGetScreenResourcesReply) b := 1 // skip reply determinant b += 1 // padding v.Sequence = Get16(buf[b:]) b += 2 v.Length = Get32(buf[b:]) // 4-byte units b += 4 v.Timestamp = Timestamp(Get32(buf[b:])) b += 4 v.ConfigTimestamp = Timestamp(Get32(buf[b:])) b += 4 v.NumCrtcs = Get16(buf[b:]) b += 2 v.NumOutputs = Get16(buf[b:]) b += 2 v.NumModes = Get16(buf[b:]) b += 2 v.NamesLen = Get16(buf[b:]) b += 2 b += 8 // padding v.Crtcs = make([]Id, v.NumCrtcs) for i := 0; i < int(v.NumCrtcs); i++ { v.Crtcs[i] = Id(Get32(buf[b:])) b += 4 } b = pad(b) v.Outputs = make([]Id, v.NumOutputs) for i := 0; i < int(v.NumOutputs); i++ { v.Outputs[i] = Id(Get32(buf[b:])) b += 4 } b = pad(b) v.Modes = make([]RandrModeInfo, v.NumModes) b += ReadRandrModeInfoList(buf[b:], v.Modes) v.Names = make([]byte, v.NamesLen) copy(v.Names[:v.NamesLen], buf[b:]) b += pad(int(v.NamesLen)) return v } func (cook RandrGetScreenResourcesCookie) Check() error { return cook.check() } // Write request to wire for RandrGetScreenResources func (c *Conn) randrGetScreenResourcesRequest(Window Id) []byte { size := 8 b := 0 buf := make([]byte, size) buf[b] = c.extensions["RANDR"] b += 1 buf[b] = 8 // request opcode b += 1 Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units b += 2 Put32(buf[b:], uint32(Window)) b += 4 return buf } // Request RandrGetOutputInfo // size: 12 type RandrGetOutputInfoCookie struct { *cookie } func (c *Conn) RandrGetOutputInfo(Output Id, ConfigTimestamp Timestamp) RandrGetOutputInfoCookie { cookie := c.newCookie(true, true) c.newRequest(c.randrGetOutputInfoRequest(Output, ConfigTimestamp), cookie) return RandrGetOutputInfoCookie{cookie} } func (c *Conn) RandrGetOutputInfoUnchecked(Output Id, ConfigTimestamp Timestamp) RandrGetOutputInfoCookie { cookie := c.newCookie(false, true) c.newRequest(c.randrGetOutputInfoRequest(Output, ConfigTimestamp), cookie) return RandrGetOutputInfoCookie{cookie} } // Request reply for RandrGetOutputInfo // size: ((((36 + pad((int(NumCrtcs) * 4))) + pad((int(NumModes) * 4))) + pad((int(NumClones) * 4))) + pad((int(NameLen) * 1))) type RandrGetOutputInfoReply struct { Sequence uint16 Length uint32 Status byte Timestamp Timestamp Crtc Id MmWidth uint32 MmHeight uint32 Connection byte SubpixelOrder byte NumCrtcs uint16 NumModes uint16 NumPreferred uint16 NumClones uint16 NameLen uint16 Crtcs []Id // size: pad((int(NumCrtcs) * 4)) Modes []Id // size: pad((int(NumModes) * 4)) Clones []Id // size: pad((int(NumClones) * 4)) Name []byte // size: pad((int(NameLen) * 1)) } // Waits and reads reply data from request RandrGetOutputInfo func (cook RandrGetOutputInfoCookie) Reply() (*RandrGetOutputInfoReply, error) { buf, err := cook.reply() if err != nil { return nil, err } if buf == nil { return nil, nil } return randrGetOutputInfoReply(buf), nil } // Read reply into structure from buffer for RandrGetOutputInfo func randrGetOutputInfoReply(buf []byte) *RandrGetOutputInfoReply { v := new(RandrGetOutputInfoReply) b := 1 // skip reply determinant v.Status = buf[b] b += 1 v.Sequence = Get16(buf[b:]) b += 2 v.Length = Get32(buf[b:]) // 4-byte units b += 4 v.Timestamp = Timestamp(Get32(buf[b:])) b += 4 v.Crtc = Id(Get32(buf[b:])) b += 4 v.MmWidth = Get32(buf[b:]) b += 4 v.MmHeight = Get32(buf[b:]) b += 4 v.Connection = buf[b] b += 1 v.SubpixelOrder = buf[b] b += 1 v.NumCrtcs = Get16(buf[b:]) b += 2 v.NumModes = Get16(buf[b:]) b += 2 v.NumPreferred = Get16(buf[b:]) b += 2 v.NumClones = Get16(buf[b:]) b += 2 v.NameLen = Get16(buf[b:]) b += 2 v.Crtcs = make([]Id, v.NumCrtcs) for i := 0; i < int(v.NumCrtcs); i++ { v.Crtcs[i] = Id(Get32(buf[b:])) b += 4 } b = pad(b) v.Modes = make([]Id, v.NumModes) for i := 0; i < int(v.NumModes); i++ { v.Modes[i] = Id(Get32(buf[b:])) b += 4 } b = pad(b) v.Clones = make([]Id, v.NumClones) for i := 0; i < int(v.NumClones); i++ { v.Clones[i] = Id(Get32(buf[b:])) b += 4 } b = pad(b) v.Name = make([]byte, v.NameLen) copy(v.Name[:v.NameLen], buf[b:]) b += pad(int(v.NameLen)) return v } func (cook RandrGetOutputInfoCookie) Check() error { return cook.check() } // Write request to wire for RandrGetOutputInfo func (c *Conn) randrGetOutputInfoRequest(Output Id, ConfigTimestamp Timestamp) []byte { size := 12 b := 0 buf := make([]byte, size) buf[b] = c.extensions["RANDR"] b += 1 buf[b] = 9 // request opcode b += 1 Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units b += 2 Put32(buf[b:], uint32(Output)) b += 4 Put32(buf[b:], uint32(ConfigTimestamp)) b += 4 return buf } // Request RandrListOutputProperties // size: 8 type RandrListOutputPropertiesCookie struct { *cookie } func (c *Conn) RandrListOutputProperties(Output Id) RandrListOutputPropertiesCookie { cookie := c.newCookie(true, true) c.newRequest(c.randrListOutputPropertiesRequest(Output), cookie) return RandrListOutputPropertiesCookie{cookie} } func (c *Conn) RandrListOutputPropertiesUnchecked(Output Id) RandrListOutputPropertiesCookie { cookie := c.newCookie(false, true) c.newRequest(c.randrListOutputPropertiesRequest(Output), cookie) return RandrListOutputPropertiesCookie{cookie} } // Request reply for RandrListOutputProperties // size: (32 + pad((int(NumAtoms) * 4))) type RandrListOutputPropertiesReply struct { Sequence uint16 Length uint32 // padding: 1 bytes NumAtoms uint16 // padding: 22 bytes Atoms []Id // size: pad((int(NumAtoms) * 4)) } // Waits and reads reply data from request RandrListOutputProperties func (cook RandrListOutputPropertiesCookie) Reply() (*RandrListOutputPropertiesReply, error) { buf, err := cook.reply() if err != nil { return nil, err } if buf == nil { return nil, nil } return randrListOutputPropertiesReply(buf), nil } // Read reply into structure from buffer for RandrListOutputProperties func randrListOutputPropertiesReply(buf []byte) *RandrListOutputPropertiesReply { v := new(RandrListOutputPropertiesReply) b := 1 // skip reply determinant b += 1 // padding v.Sequence = Get16(buf[b:]) b += 2 v.Length = Get32(buf[b:]) // 4-byte units b += 4 v.NumAtoms = Get16(buf[b:]) b += 2 b += 22 // padding v.Atoms = make([]Id, v.NumAtoms) for i := 0; i < int(v.NumAtoms); i++ { v.Atoms[i] = Id(Get32(buf[b:])) b += 4 } b = pad(b) return v } func (cook RandrListOutputPropertiesCookie) Check() error { return cook.check() } // Write request to wire for RandrListOutputProperties func (c *Conn) randrListOutputPropertiesRequest(Output Id) []byte { size := 8 b := 0 buf := make([]byte, size) buf[b] = c.extensions["RANDR"] b += 1 buf[b] = 10 // request opcode b += 1 Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units b += 2 Put32(buf[b:], uint32(Output)) b += 4 return buf } // Request RandrQueryOutputProperty // size: 12 type RandrQueryOutputPropertyCookie struct { *cookie } func (c *Conn) RandrQueryOutputProperty(Output Id, Property Id) RandrQueryOutputPropertyCookie { cookie := c.newCookie(true, true) c.newRequest(c.randrQueryOutputPropertyRequest(Output, Property), cookie) return RandrQueryOutputPropertyCookie{cookie} } func (c *Conn) RandrQueryOutputPropertyUnchecked(Output Id, Property Id) RandrQueryOutputPropertyCookie { cookie := c.newCookie(false, true) c.newRequest(c.randrQueryOutputPropertyRequest(Output, Property), cookie) return RandrQueryOutputPropertyCookie{cookie} } // Request reply for RandrQueryOutputProperty // size: (32 + pad((int(Length) * 4))) type RandrQueryOutputPropertyReply struct { Sequence uint16 Length uint32 // padding: 1 bytes Pending bool Range bool Immutable bool // padding: 21 bytes ValidValues []int32 // size: pad((int(Length) * 4)) } // Waits and reads reply data from request RandrQueryOutputProperty func (cook RandrQueryOutputPropertyCookie) Reply() (*RandrQueryOutputPropertyReply, error) { buf, err := cook.reply() if err != nil { return nil, err } if buf == nil { return nil, nil } return randrQueryOutputPropertyReply(buf), nil } // Read reply into structure from buffer for RandrQueryOutputProperty func randrQueryOutputPropertyReply(buf []byte) *RandrQueryOutputPropertyReply { v := new(RandrQueryOutputPropertyReply) b := 1 // skip reply determinant b += 1 // padding v.Sequence = Get16(buf[b:]) b += 2 v.Length = 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(Get32(buf[b:])) b += 4 } b = pad(b) return v } func (cook RandrQueryOutputPropertyCookie) Check() error { return cook.check() } // Write request to wire for RandrQueryOutputProperty func (c *Conn) randrQueryOutputPropertyRequest(Output Id, Property Id) []byte { size := 12 b := 0 buf := make([]byte, size) buf[b] = c.extensions["RANDR"] b += 1 buf[b] = 11 // request opcode b += 1 Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units b += 2 Put32(buf[b:], uint32(Output)) b += 4 Put32(buf[b:], uint32(Property)) b += 4 return buf } // Request RandrConfigureOutputProperty // size: pad((16 + pad((len(Values) * 4)))) type RandrConfigureOutputPropertyCookie struct { *cookie } // Write request to wire for RandrConfigureOutputProperty func (c *Conn) RandrConfigureOutputProperty(Output Id, Property Id, Pending bool, Range bool, Values []int32) RandrConfigureOutputPropertyCookie { cookie := c.newCookie(false, false) c.newRequest(c.randrConfigureOutputPropertyRequest(Output, Property, Pending, Range, Values), cookie) return RandrConfigureOutputPropertyCookie{cookie} } func (c *Conn) RandrConfigureOutputPropertyChecked(Output Id, Property Id, Pending bool, Range bool, Values []int32) RandrConfigureOutputPropertyCookie { cookie := c.newCookie(true, false) c.newRequest(c.randrConfigureOutputPropertyRequest(Output, Property, Pending, Range, Values), cookie) return RandrConfigureOutputPropertyCookie{cookie} } func (cook RandrConfigureOutputPropertyCookie) Check() error { return cook.check() } // Write request to wire for RandrConfigureOutputProperty func (c *Conn) randrConfigureOutputPropertyRequest(Output Id, Property Id, Pending bool, Range bool, Values []int32) []byte { size := pad((16 + pad((len(Values) * 4)))) b := 0 buf := make([]byte, size) buf[b] = c.extensions["RANDR"] b += 1 buf[b] = 12 // request opcode b += 1 Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units b += 2 Put32(buf[b:], uint32(Output)) b += 4 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++ { Put32(buf[b:], uint32(Values[i])) b += 4 } b = pad(b) return buf } // Request RandrChangeOutputProperty // size: pad((24 + pad((((int(NumUnits) * int(Format)) / 8) * 1)))) type RandrChangeOutputPropertyCookie struct { *cookie } // Write request to wire for RandrChangeOutputProperty func (c *Conn) RandrChangeOutputProperty(Output Id, Property Id, Type Id, Format byte, Mode byte, NumUnits uint32, Data []byte) RandrChangeOutputPropertyCookie { cookie := c.newCookie(false, false) c.newRequest(c.randrChangeOutputPropertyRequest(Output, Property, Type, Format, Mode, NumUnits, Data), cookie) return RandrChangeOutputPropertyCookie{cookie} } func (c *Conn) RandrChangeOutputPropertyChecked(Output Id, Property Id, Type Id, Format byte, Mode byte, NumUnits uint32, Data []byte) RandrChangeOutputPropertyCookie { cookie := c.newCookie(true, false) c.newRequest(c.randrChangeOutputPropertyRequest(Output, Property, Type, Format, Mode, NumUnits, Data), cookie) return RandrChangeOutputPropertyCookie{cookie} } func (cook RandrChangeOutputPropertyCookie) Check() error { return cook.check() } // Write request to wire for RandrChangeOutputProperty func (c *Conn) randrChangeOutputPropertyRequest(Output Id, Property Id, Type Id, Format byte, Mode byte, NumUnits uint32, Data []byte) []byte { size := pad((24 + 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 Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units b += 2 Put32(buf[b:], uint32(Output)) b += 4 Put32(buf[b:], uint32(Property)) b += 4 Put32(buf[b:], uint32(Type)) b += 4 buf[b] = Format b += 1 buf[b] = Mode b += 1 b += 2 // padding Put32(buf[b:], NumUnits) b += 4 copy(buf[b:], Data[:((int(NumUnits)*int(Format))/8)]) b += pad(int(((int(NumUnits) * int(Format)) / 8))) return buf } // Request RandrDeleteOutputProperty // size: 12 type RandrDeleteOutputPropertyCookie struct { *cookie } // Write request to wire for RandrDeleteOutputProperty func (c *Conn) RandrDeleteOutputProperty(Output Id, Property Id) RandrDeleteOutputPropertyCookie { cookie := c.newCookie(false, false) c.newRequest(c.randrDeleteOutputPropertyRequest(Output, Property), cookie) return RandrDeleteOutputPropertyCookie{cookie} } func (c *Conn) RandrDeleteOutputPropertyChecked(Output Id, Property Id) RandrDeleteOutputPropertyCookie { cookie := c.newCookie(true, false) c.newRequest(c.randrDeleteOutputPropertyRequest(Output, Property), cookie) return RandrDeleteOutputPropertyCookie{cookie} } func (cook RandrDeleteOutputPropertyCookie) Check() error { return cook.check() } // Write request to wire for RandrDeleteOutputProperty func (c *Conn) randrDeleteOutputPropertyRequest(Output Id, Property Id) []byte { size := 12 b := 0 buf := make([]byte, size) buf[b] = c.extensions["RANDR"] b += 1 buf[b] = 14 // request opcode b += 1 Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units b += 2 Put32(buf[b:], uint32(Output)) b += 4 Put32(buf[b:], uint32(Property)) b += 4 return buf } // Request RandrGetOutputProperty // size: 28 type RandrGetOutputPropertyCookie struct { *cookie } func (c *Conn) RandrGetOutputProperty(Output Id, Property Id, Type Id, LongOffset uint32, LongLength uint32, Delete bool, Pending bool) RandrGetOutputPropertyCookie { cookie := c.newCookie(true, true) c.newRequest(c.randrGetOutputPropertyRequest(Output, Property, Type, LongOffset, LongLength, Delete, Pending), cookie) return RandrGetOutputPropertyCookie{cookie} } func (c *Conn) RandrGetOutputPropertyUnchecked(Output Id, Property Id, Type Id, LongOffset uint32, LongLength uint32, Delete bool, Pending bool) RandrGetOutputPropertyCookie { cookie := c.newCookie(false, true) c.newRequest(c.randrGetOutputPropertyRequest(Output, Property, Type, LongOffset, LongLength, Delete, Pending), cookie) return RandrGetOutputPropertyCookie{cookie} } // Request reply for RandrGetOutputProperty // size: (32 + pad(((int(NumItems) * (int(Format) / 8)) * 1))) type RandrGetOutputPropertyReply struct { Sequence uint16 Length uint32 Format byte Type Id BytesAfter uint32 NumItems uint32 // padding: 12 bytes Data []byte // size: pad(((int(NumItems) * (int(Format) / 8)) * 1)) } // Waits and reads reply data from request RandrGetOutputProperty func (cook RandrGetOutputPropertyCookie) Reply() (*RandrGetOutputPropertyReply, error) { buf, err := cook.reply() if err != nil { return nil, err } if buf == nil { return nil, nil } return randrGetOutputPropertyReply(buf), nil } // Read reply into structure from buffer for RandrGetOutputProperty func randrGetOutputPropertyReply(buf []byte) *RandrGetOutputPropertyReply { v := new(RandrGetOutputPropertyReply) b := 1 // skip reply determinant v.Format = buf[b] b += 1 v.Sequence = Get16(buf[b:]) b += 2 v.Length = Get32(buf[b:]) // 4-byte units b += 4 v.Type = Id(Get32(buf[b:])) b += 4 v.BytesAfter = Get32(buf[b:]) b += 4 v.NumItems = 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 += pad(int((int(v.NumItems) * (int(v.Format) / 8)))) return v } func (cook RandrGetOutputPropertyCookie) Check() error { return cook.check() } // Write request to wire for RandrGetOutputProperty func (c *Conn) randrGetOutputPropertyRequest(Output Id, Property Id, Type Id, 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 Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units b += 2 Put32(buf[b:], uint32(Output)) b += 4 Put32(buf[b:], uint32(Property)) b += 4 Put32(buf[b:], uint32(Type)) b += 4 Put32(buf[b:], LongOffset) b += 4 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 RandrCreateMode // size: pad((40 + pad((len(Name) * 1)))) type RandrCreateModeCookie struct { *cookie } func (c *Conn) RandrCreateMode(Window Id, ModeInfo RandrModeInfo, Name string) RandrCreateModeCookie { cookie := c.newCookie(true, true) c.newRequest(c.randrCreateModeRequest(Window, ModeInfo, Name), cookie) return RandrCreateModeCookie{cookie} } func (c *Conn) RandrCreateModeUnchecked(Window Id, ModeInfo RandrModeInfo, Name string) RandrCreateModeCookie { cookie := c.newCookie(false, true) c.newRequest(c.randrCreateModeRequest(Window, ModeInfo, Name), cookie) return RandrCreateModeCookie{cookie} } // Request reply for RandrCreateMode // size: 32 type RandrCreateModeReply struct { Sequence uint16 Length uint32 // padding: 1 bytes Mode Id // padding: 20 bytes } // Waits and reads reply data from request RandrCreateMode func (cook RandrCreateModeCookie) Reply() (*RandrCreateModeReply, error) { buf, err := cook.reply() if err != nil { return nil, err } if buf == nil { return nil, nil } return randrCreateModeReply(buf), nil } // Read reply into structure from buffer for RandrCreateMode func randrCreateModeReply(buf []byte) *RandrCreateModeReply { v := new(RandrCreateModeReply) b := 1 // skip reply determinant b += 1 // padding v.Sequence = Get16(buf[b:]) b += 2 v.Length = Get32(buf[b:]) // 4-byte units b += 4 v.Mode = Id(Get32(buf[b:])) b += 4 b += 20 // padding return v } func (cook RandrCreateModeCookie) Check() error { return cook.check() } // Write request to wire for RandrCreateMode func (c *Conn) randrCreateModeRequest(Window Id, ModeInfo RandrModeInfo, Name string) []byte { size := pad((40 + pad((len(Name) * 1)))) b := 0 buf := make([]byte, size) buf[b] = c.extensions["RANDR"] b += 1 buf[b] = 16 // request opcode b += 1 Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units b += 2 Put32(buf[b:], uint32(Window)) b += 4 { structBytes := ModeInfo.Bytes() copy(buf[b:], structBytes) b += pad(len(structBytes)) } copy(buf[b:], Name[:len(Name)]) b += pad(int(len(Name))) return buf } // Request RandrDestroyMode // size: 8 type RandrDestroyModeCookie struct { *cookie } // Write request to wire for RandrDestroyMode func (c *Conn) RandrDestroyMode(Mode Id) RandrDestroyModeCookie { cookie := c.newCookie(false, false) c.newRequest(c.randrDestroyModeRequest(Mode), cookie) return RandrDestroyModeCookie{cookie} } func (c *Conn) RandrDestroyModeChecked(Mode Id) RandrDestroyModeCookie { cookie := c.newCookie(true, false) c.newRequest(c.randrDestroyModeRequest(Mode), cookie) return RandrDestroyModeCookie{cookie} } func (cook RandrDestroyModeCookie) Check() error { return cook.check() } // Write request to wire for RandrDestroyMode func (c *Conn) randrDestroyModeRequest(Mode Id) []byte { size := 8 b := 0 buf := make([]byte, size) buf[b] = c.extensions["RANDR"] b += 1 buf[b] = 17 // request opcode b += 1 Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units b += 2 Put32(buf[b:], uint32(Mode)) b += 4 return buf } // Request RandrAddOutputMode // size: 12 type RandrAddOutputModeCookie struct { *cookie } // Write request to wire for RandrAddOutputMode func (c *Conn) RandrAddOutputMode(Output Id, Mode Id) RandrAddOutputModeCookie { cookie := c.newCookie(false, false) c.newRequest(c.randrAddOutputModeRequest(Output, Mode), cookie) return RandrAddOutputModeCookie{cookie} } func (c *Conn) RandrAddOutputModeChecked(Output Id, Mode Id) RandrAddOutputModeCookie { cookie := c.newCookie(true, false) c.newRequest(c.randrAddOutputModeRequest(Output, Mode), cookie) return RandrAddOutputModeCookie{cookie} } func (cook RandrAddOutputModeCookie) Check() error { return cook.check() } // Write request to wire for RandrAddOutputMode func (c *Conn) randrAddOutputModeRequest(Output Id, Mode Id) []byte { size := 12 b := 0 buf := make([]byte, size) buf[b] = c.extensions["RANDR"] b += 1 buf[b] = 18 // request opcode b += 1 Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units b += 2 Put32(buf[b:], uint32(Output)) b += 4 Put32(buf[b:], uint32(Mode)) b += 4 return buf } // Request RandrDeleteOutputMode // size: 12 type RandrDeleteOutputModeCookie struct { *cookie } // Write request to wire for RandrDeleteOutputMode func (c *Conn) RandrDeleteOutputMode(Output Id, Mode Id) RandrDeleteOutputModeCookie { cookie := c.newCookie(false, false) c.newRequest(c.randrDeleteOutputModeRequest(Output, Mode), cookie) return RandrDeleteOutputModeCookie{cookie} } func (c *Conn) RandrDeleteOutputModeChecked(Output Id, Mode Id) RandrDeleteOutputModeCookie { cookie := c.newCookie(true, false) c.newRequest(c.randrDeleteOutputModeRequest(Output, Mode), cookie) return RandrDeleteOutputModeCookie{cookie} } func (cook RandrDeleteOutputModeCookie) Check() error { return cook.check() } // Write request to wire for RandrDeleteOutputMode func (c *Conn) randrDeleteOutputModeRequest(Output Id, Mode Id) []byte { size := 12 b := 0 buf := make([]byte, size) buf[b] = c.extensions["RANDR"] b += 1 buf[b] = 19 // request opcode b += 1 Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units b += 2 Put32(buf[b:], uint32(Output)) b += 4 Put32(buf[b:], uint32(Mode)) b += 4 return buf } // Request RandrGetCrtcInfo // size: 12 type RandrGetCrtcInfoCookie struct { *cookie } func (c *Conn) RandrGetCrtcInfo(Crtc Id, ConfigTimestamp Timestamp) RandrGetCrtcInfoCookie { cookie := c.newCookie(true, true) c.newRequest(c.randrGetCrtcInfoRequest(Crtc, ConfigTimestamp), cookie) return RandrGetCrtcInfoCookie{cookie} } func (c *Conn) RandrGetCrtcInfoUnchecked(Crtc Id, ConfigTimestamp Timestamp) RandrGetCrtcInfoCookie { cookie := c.newCookie(false, true) c.newRequest(c.randrGetCrtcInfoRequest(Crtc, ConfigTimestamp), cookie) return RandrGetCrtcInfoCookie{cookie} } // Request reply for RandrGetCrtcInfo // size: ((32 + pad((int(NumOutputs) * 4))) + pad((int(NumPossibleOutputs) * 4))) type RandrGetCrtcInfoReply struct { Sequence uint16 Length uint32 Status byte Timestamp Timestamp X int16 Y int16 Width uint16 Height uint16 Mode Id Rotation uint16 Rotations uint16 NumOutputs uint16 NumPossibleOutputs uint16 Outputs []Id // size: pad((int(NumOutputs) * 4)) Possible []Id // size: pad((int(NumPossibleOutputs) * 4)) } // Waits and reads reply data from request RandrGetCrtcInfo func (cook RandrGetCrtcInfoCookie) Reply() (*RandrGetCrtcInfoReply, error) { buf, err := cook.reply() if err != nil { return nil, err } if buf == nil { return nil, nil } return randrGetCrtcInfoReply(buf), nil } // Read reply into structure from buffer for RandrGetCrtcInfo func randrGetCrtcInfoReply(buf []byte) *RandrGetCrtcInfoReply { v := new(RandrGetCrtcInfoReply) b := 1 // skip reply determinant v.Status = buf[b] b += 1 v.Sequence = Get16(buf[b:]) b += 2 v.Length = Get32(buf[b:]) // 4-byte units b += 4 v.Timestamp = Timestamp(Get32(buf[b:])) b += 4 v.X = int16(Get16(buf[b:])) b += 2 v.Y = int16(Get16(buf[b:])) b += 2 v.Width = Get16(buf[b:]) b += 2 v.Height = Get16(buf[b:]) b += 2 v.Mode = Id(Get32(buf[b:])) b += 4 v.Rotation = Get16(buf[b:]) b += 2 v.Rotations = Get16(buf[b:]) b += 2 v.NumOutputs = Get16(buf[b:]) b += 2 v.NumPossibleOutputs = Get16(buf[b:]) b += 2 v.Outputs = make([]Id, v.NumOutputs) for i := 0; i < int(v.NumOutputs); i++ { v.Outputs[i] = Id(Get32(buf[b:])) b += 4 } b = pad(b) v.Possible = make([]Id, v.NumPossibleOutputs) for i := 0; i < int(v.NumPossibleOutputs); i++ { v.Possible[i] = Id(Get32(buf[b:])) b += 4 } b = pad(b) return v } func (cook RandrGetCrtcInfoCookie) Check() error { return cook.check() } // Write request to wire for RandrGetCrtcInfo func (c *Conn) randrGetCrtcInfoRequest(Crtc Id, ConfigTimestamp Timestamp) []byte { size := 12 b := 0 buf := make([]byte, size) buf[b] = c.extensions["RANDR"] b += 1 buf[b] = 20 // request opcode b += 1 Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units b += 2 Put32(buf[b:], uint32(Crtc)) b += 4 Put32(buf[b:], uint32(ConfigTimestamp)) b += 4 return buf } // Request RandrSetCrtcConfig // size: pad((28 + pad((len(Outputs) * 4)))) type RandrSetCrtcConfigCookie struct { *cookie } func (c *Conn) RandrSetCrtcConfig(Crtc Id, Timestamp Timestamp, ConfigTimestamp Timestamp, X int16, Y int16, Mode Id, Rotation uint16, Outputs []Id) RandrSetCrtcConfigCookie { cookie := c.newCookie(true, true) c.newRequest(c.randrSetCrtcConfigRequest(Crtc, Timestamp, ConfigTimestamp, X, Y, Mode, Rotation, Outputs), cookie) return RandrSetCrtcConfigCookie{cookie} } func (c *Conn) RandrSetCrtcConfigUnchecked(Crtc Id, Timestamp Timestamp, ConfigTimestamp Timestamp, X int16, Y int16, Mode Id, Rotation uint16, Outputs []Id) RandrSetCrtcConfigCookie { cookie := c.newCookie(false, true) c.newRequest(c.randrSetCrtcConfigRequest(Crtc, Timestamp, ConfigTimestamp, X, Y, Mode, Rotation, Outputs), cookie) return RandrSetCrtcConfigCookie{cookie} } // Request reply for RandrSetCrtcConfig // size: 32 type RandrSetCrtcConfigReply struct { Sequence uint16 Length uint32 Status byte Timestamp Timestamp // padding: 20 bytes } // Waits and reads reply data from request RandrSetCrtcConfig func (cook RandrSetCrtcConfigCookie) Reply() (*RandrSetCrtcConfigReply, error) { buf, err := cook.reply() if err != nil { return nil, err } if buf == nil { return nil, nil } return randrSetCrtcConfigReply(buf), nil } // Read reply into structure from buffer for RandrSetCrtcConfig func randrSetCrtcConfigReply(buf []byte) *RandrSetCrtcConfigReply { v := new(RandrSetCrtcConfigReply) b := 1 // skip reply determinant v.Status = buf[b] b += 1 v.Sequence = Get16(buf[b:]) b += 2 v.Length = Get32(buf[b:]) // 4-byte units b += 4 v.Timestamp = Timestamp(Get32(buf[b:])) b += 4 b += 20 // padding return v } func (cook RandrSetCrtcConfigCookie) Check() error { return cook.check() } // Write request to wire for RandrSetCrtcConfig func (c *Conn) randrSetCrtcConfigRequest(Crtc Id, Timestamp Timestamp, ConfigTimestamp Timestamp, X int16, Y int16, Mode Id, Rotation uint16, Outputs []Id) []byte { size := pad((28 + pad((len(Outputs) * 4)))) b := 0 buf := make([]byte, size) buf[b] = c.extensions["RANDR"] b += 1 buf[b] = 21 // request opcode b += 1 Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units b += 2 Put32(buf[b:], uint32(Crtc)) b += 4 Put32(buf[b:], uint32(Timestamp)) b += 4 Put32(buf[b:], uint32(ConfigTimestamp)) b += 4 Put16(buf[b:], uint16(X)) b += 2 Put16(buf[b:], uint16(Y)) b += 2 Put32(buf[b:], uint32(Mode)) b += 4 Put16(buf[b:], Rotation) b += 2 b += 2 // padding for i := 0; i < int(len(Outputs)); i++ { Put32(buf[b:], uint32(Outputs[i])) b += 4 } b = pad(b) return buf } // Request RandrGetCrtcGammaSize // size: 8 type RandrGetCrtcGammaSizeCookie struct { *cookie } func (c *Conn) RandrGetCrtcGammaSize(Crtc Id) RandrGetCrtcGammaSizeCookie { cookie := c.newCookie(true, true) c.newRequest(c.randrGetCrtcGammaSizeRequest(Crtc), cookie) return RandrGetCrtcGammaSizeCookie{cookie} } func (c *Conn) RandrGetCrtcGammaSizeUnchecked(Crtc Id) RandrGetCrtcGammaSizeCookie { cookie := c.newCookie(false, true) c.newRequest(c.randrGetCrtcGammaSizeRequest(Crtc), cookie) return RandrGetCrtcGammaSizeCookie{cookie} } // Request reply for RandrGetCrtcGammaSize // size: 32 type RandrGetCrtcGammaSizeReply struct { Sequence uint16 Length uint32 // padding: 1 bytes Size uint16 // padding: 22 bytes } // Waits and reads reply data from request RandrGetCrtcGammaSize func (cook RandrGetCrtcGammaSizeCookie) Reply() (*RandrGetCrtcGammaSizeReply, error) { buf, err := cook.reply() if err != nil { return nil, err } if buf == nil { return nil, nil } return randrGetCrtcGammaSizeReply(buf), nil } // Read reply into structure from buffer for RandrGetCrtcGammaSize func randrGetCrtcGammaSizeReply(buf []byte) *RandrGetCrtcGammaSizeReply { v := new(RandrGetCrtcGammaSizeReply) b := 1 // skip reply determinant b += 1 // padding v.Sequence = Get16(buf[b:]) b += 2 v.Length = Get32(buf[b:]) // 4-byte units b += 4 v.Size = Get16(buf[b:]) b += 2 b += 22 // padding return v } func (cook RandrGetCrtcGammaSizeCookie) Check() error { return cook.check() } // Write request to wire for RandrGetCrtcGammaSize func (c *Conn) randrGetCrtcGammaSizeRequest(Crtc Id) []byte { size := 8 b := 0 buf := make([]byte, size) buf[b] = c.extensions["RANDR"] b += 1 buf[b] = 22 // request opcode b += 1 Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units b += 2 Put32(buf[b:], uint32(Crtc)) b += 4 return buf } // Request RandrGetCrtcGamma // size: 8 type RandrGetCrtcGammaCookie struct { *cookie } func (c *Conn) RandrGetCrtcGamma(Crtc Id) RandrGetCrtcGammaCookie { cookie := c.newCookie(true, true) c.newRequest(c.randrGetCrtcGammaRequest(Crtc), cookie) return RandrGetCrtcGammaCookie{cookie} } func (c *Conn) RandrGetCrtcGammaUnchecked(Crtc Id) RandrGetCrtcGammaCookie { cookie := c.newCookie(false, true) c.newRequest(c.randrGetCrtcGammaRequest(Crtc), cookie) return RandrGetCrtcGammaCookie{cookie} } // Request reply for RandrGetCrtcGamma // size: (((32 + pad((int(Size) * 2))) + pad((int(Size) * 2))) + pad((int(Size) * 2))) type RandrGetCrtcGammaReply struct { Sequence uint16 Length uint32 // padding: 1 bytes Size uint16 // padding: 22 bytes Red []uint16 // size: pad((int(Size) * 2)) Green []uint16 // size: pad((int(Size) * 2)) Blue []uint16 // size: pad((int(Size) * 2)) } // Waits and reads reply data from request RandrGetCrtcGamma func (cook RandrGetCrtcGammaCookie) Reply() (*RandrGetCrtcGammaReply, error) { buf, err := cook.reply() if err != nil { return nil, err } if buf == nil { return nil, nil } return randrGetCrtcGammaReply(buf), nil } // Read reply into structure from buffer for RandrGetCrtcGamma func randrGetCrtcGammaReply(buf []byte) *RandrGetCrtcGammaReply { v := new(RandrGetCrtcGammaReply) b := 1 // skip reply determinant b += 1 // padding v.Sequence = Get16(buf[b:]) b += 2 v.Length = Get32(buf[b:]) // 4-byte units b += 4 v.Size = 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] = Get16(buf[b:]) b += 2 } b = pad(b) v.Green = make([]uint16, v.Size) for i := 0; i < int(v.Size); i++ { v.Green[i] = Get16(buf[b:]) b += 2 } b = pad(b) v.Blue = make([]uint16, v.Size) for i := 0; i < int(v.Size); i++ { v.Blue[i] = Get16(buf[b:]) b += 2 } b = pad(b) return v } func (cook RandrGetCrtcGammaCookie) Check() error { return cook.check() } // Write request to wire for RandrGetCrtcGamma func (c *Conn) randrGetCrtcGammaRequest(Crtc Id) []byte { size := 8 b := 0 buf := make([]byte, size) buf[b] = c.extensions["RANDR"] b += 1 buf[b] = 23 // request opcode b += 1 Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units b += 2 Put32(buf[b:], uint32(Crtc)) b += 4 return buf } // Request RandrSetCrtcGamma // size: pad((((12 + pad((int(Size) * 2))) + pad((int(Size) * 2))) + pad((int(Size) * 2)))) type RandrSetCrtcGammaCookie struct { *cookie } // Write request to wire for RandrSetCrtcGamma func (c *Conn) RandrSetCrtcGamma(Crtc Id, Size uint16, Red []uint16, Green []uint16, Blue []uint16) RandrSetCrtcGammaCookie { cookie := c.newCookie(false, false) c.newRequest(c.randrSetCrtcGammaRequest(Crtc, Size, Red, Green, Blue), cookie) return RandrSetCrtcGammaCookie{cookie} } func (c *Conn) RandrSetCrtcGammaChecked(Crtc Id, Size uint16, Red []uint16, Green []uint16, Blue []uint16) RandrSetCrtcGammaCookie { cookie := c.newCookie(true, false) c.newRequest(c.randrSetCrtcGammaRequest(Crtc, Size, Red, Green, Blue), cookie) return RandrSetCrtcGammaCookie{cookie} } func (cook RandrSetCrtcGammaCookie) Check() error { return cook.check() } // Write request to wire for RandrSetCrtcGamma func (c *Conn) randrSetCrtcGammaRequest(Crtc Id, Size uint16, Red []uint16, Green []uint16, Blue []uint16) []byte { size := pad((((12 + pad((int(Size) * 2))) + pad((int(Size) * 2))) + pad((int(Size) * 2)))) b := 0 buf := make([]byte, size) buf[b] = c.extensions["RANDR"] b += 1 buf[b] = 24 // request opcode b += 1 Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units b += 2 Put32(buf[b:], uint32(Crtc)) b += 4 Put16(buf[b:], Size) b += 2 b += 2 // padding for i := 0; i < int(Size); i++ { Put16(buf[b:], Red[i]) b += 2 } b = pad(b) for i := 0; i < int(Size); i++ { Put16(buf[b:], Green[i]) b += 2 } b = pad(b) for i := 0; i < int(Size); i++ { Put16(buf[b:], Blue[i]) b += 2 } b = pad(b) return buf } // Request RandrGetScreenResourcesCurrent // size: 8 type RandrGetScreenResourcesCurrentCookie struct { *cookie } func (c *Conn) RandrGetScreenResourcesCurrent(Window Id) RandrGetScreenResourcesCurrentCookie { cookie := c.newCookie(true, true) c.newRequest(c.randrGetScreenResourcesCurrentRequest(Window), cookie) return RandrGetScreenResourcesCurrentCookie{cookie} } func (c *Conn) RandrGetScreenResourcesCurrentUnchecked(Window Id) RandrGetScreenResourcesCurrentCookie { cookie := c.newCookie(false, true) c.newRequest(c.randrGetScreenResourcesCurrentRequest(Window), cookie) return RandrGetScreenResourcesCurrentCookie{cookie} } // Request reply for RandrGetScreenResourcesCurrent // size: ((((32 + pad((int(NumCrtcs) * 4))) + pad((int(NumOutputs) * 4))) + pad((int(NumModes) * 32))) + pad((int(NamesLen) * 1))) type RandrGetScreenResourcesCurrentReply struct { Sequence uint16 Length uint32 // padding: 1 bytes Timestamp Timestamp ConfigTimestamp Timestamp NumCrtcs uint16 NumOutputs uint16 NumModes uint16 NamesLen uint16 // padding: 8 bytes Crtcs []Id // size: pad((int(NumCrtcs) * 4)) Outputs []Id // size: pad((int(NumOutputs) * 4)) Modes []RandrModeInfo // size: pad((int(NumModes) * 32)) Names []byte // size: pad((int(NamesLen) * 1)) } // Waits and reads reply data from request RandrGetScreenResourcesCurrent func (cook RandrGetScreenResourcesCurrentCookie) Reply() (*RandrGetScreenResourcesCurrentReply, error) { buf, err := cook.reply() if err != nil { return nil, err } if buf == nil { return nil, nil } return randrGetScreenResourcesCurrentReply(buf), nil } // Read reply into structure from buffer for RandrGetScreenResourcesCurrent func randrGetScreenResourcesCurrentReply(buf []byte) *RandrGetScreenResourcesCurrentReply { v := new(RandrGetScreenResourcesCurrentReply) b := 1 // skip reply determinant b += 1 // padding v.Sequence = Get16(buf[b:]) b += 2 v.Length = Get32(buf[b:]) // 4-byte units b += 4 v.Timestamp = Timestamp(Get32(buf[b:])) b += 4 v.ConfigTimestamp = Timestamp(Get32(buf[b:])) b += 4 v.NumCrtcs = Get16(buf[b:]) b += 2 v.NumOutputs = Get16(buf[b:]) b += 2 v.NumModes = Get16(buf[b:]) b += 2 v.NamesLen = Get16(buf[b:]) b += 2 b += 8 // padding v.Crtcs = make([]Id, v.NumCrtcs) for i := 0; i < int(v.NumCrtcs); i++ { v.Crtcs[i] = Id(Get32(buf[b:])) b += 4 } b = pad(b) v.Outputs = make([]Id, v.NumOutputs) for i := 0; i < int(v.NumOutputs); i++ { v.Outputs[i] = Id(Get32(buf[b:])) b += 4 } b = pad(b) v.Modes = make([]RandrModeInfo, v.NumModes) b += ReadRandrModeInfoList(buf[b:], v.Modes) v.Names = make([]byte, v.NamesLen) copy(v.Names[:v.NamesLen], buf[b:]) b += pad(int(v.NamesLen)) return v } func (cook RandrGetScreenResourcesCurrentCookie) Check() error { return cook.check() } // Write request to wire for RandrGetScreenResourcesCurrent func (c *Conn) randrGetScreenResourcesCurrentRequest(Window Id) []byte { size := 8 b := 0 buf := make([]byte, size) buf[b] = c.extensions["RANDR"] b += 1 buf[b] = 25 // request opcode b += 1 Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units b += 2 Put32(buf[b:], uint32(Window)) b += 4 return buf } // Request RandrSetCrtcTransform // size: pad(((48 + pad((int(FilterLen) * 1))) + pad((len(FilterParams) * 4)))) type RandrSetCrtcTransformCookie struct { *cookie } // Write request to wire for RandrSetCrtcTransform func (c *Conn) RandrSetCrtcTransform(Crtc Id, Transform RenderTransform, FilterLen uint16, FilterName string, FilterParams []RenderFixed) RandrSetCrtcTransformCookie { cookie := c.newCookie(false, false) c.newRequest(c.randrSetCrtcTransformRequest(Crtc, Transform, FilterLen, FilterName, FilterParams), cookie) return RandrSetCrtcTransformCookie{cookie} } func (c *Conn) RandrSetCrtcTransformChecked(Crtc Id, Transform RenderTransform, FilterLen uint16, FilterName string, FilterParams []RenderFixed) RandrSetCrtcTransformCookie { cookie := c.newCookie(true, false) c.newRequest(c.randrSetCrtcTransformRequest(Crtc, Transform, FilterLen, FilterName, FilterParams), cookie) return RandrSetCrtcTransformCookie{cookie} } func (cook RandrSetCrtcTransformCookie) Check() error { return cook.check() } // Write request to wire for RandrSetCrtcTransform func (c *Conn) randrSetCrtcTransformRequest(Crtc Id, Transform RenderTransform, FilterLen uint16, FilterName string, FilterParams []RenderFixed) []byte { size := pad(((48 + pad((int(FilterLen) * 1))) + pad((len(FilterParams) * 4)))) b := 0 buf := make([]byte, size) buf[b] = c.extensions["RANDR"] b += 1 buf[b] = 26 // request opcode b += 1 Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units b += 2 Put32(buf[b:], uint32(Crtc)) b += 4 { structBytes := Transform.Bytes() copy(buf[b:], structBytes) b += pad(len(structBytes)) } Put16(buf[b:], FilterLen) b += 2 b += 2 // padding copy(buf[b:], FilterName[:FilterLen]) b += pad(int(FilterLen)) for i := 0; i < int(len(FilterParams)); i++ { Put32(buf[b:], uint32(FilterParams[i])) b += 4 } b = pad(b) return buf } // Request RandrGetCrtcTransform // size: 8 type RandrGetCrtcTransformCookie struct { *cookie } func (c *Conn) RandrGetCrtcTransform(Crtc Id) RandrGetCrtcTransformCookie { cookie := c.newCookie(true, true) c.newRequest(c.randrGetCrtcTransformRequest(Crtc), cookie) return RandrGetCrtcTransformCookie{cookie} } func (c *Conn) RandrGetCrtcTransformUnchecked(Crtc Id) RandrGetCrtcTransformCookie { cookie := c.newCookie(false, true) c.newRequest(c.randrGetCrtcTransformRequest(Crtc), cookie) return RandrGetCrtcTransformCookie{cookie} } // Request reply for RandrGetCrtcTransform // size: ((((96 + pad((int(PendingLen) * 1))) + pad((int(PendingNparams) * 4))) + pad((int(CurrentLen) * 1))) + pad((int(CurrentNparams) * 4))) type RandrGetCrtcTransformReply struct { Sequence uint16 Length uint32 // padding: 1 bytes PendingTransform RenderTransform HasTransforms bool // padding: 3 bytes CurrentTransform RenderTransform // padding: 4 bytes PendingLen uint16 PendingNparams uint16 CurrentLen uint16 CurrentNparams uint16 PendingFilterName string // size: pad((int(PendingLen) * 1)) PendingParams []RenderFixed // size: pad((int(PendingNparams) * 4)) CurrentFilterName string // size: pad((int(CurrentLen) * 1)) CurrentParams []RenderFixed // size: pad((int(CurrentNparams) * 4)) } // Waits and reads reply data from request RandrGetCrtcTransform func (cook RandrGetCrtcTransformCookie) Reply() (*RandrGetCrtcTransformReply, error) { buf, err := cook.reply() if err != nil { return nil, err } if buf == nil { return nil, nil } return randrGetCrtcTransformReply(buf), nil } // Read reply into structure from buffer for RandrGetCrtcTransform func randrGetCrtcTransformReply(buf []byte) *RandrGetCrtcTransformReply { v := new(RandrGetCrtcTransformReply) b := 1 // skip reply determinant b += 1 // padding v.Sequence = Get16(buf[b:]) b += 2 v.Length = Get32(buf[b:]) // 4-byte units b += 4 v.PendingTransform = RenderTransform{} b += ReadRenderTransform(buf[b:], &v.PendingTransform) if buf[b] == 1 { v.HasTransforms = true } else { v.HasTransforms = false } b += 1 b += 3 // padding v.CurrentTransform = RenderTransform{} b += ReadRenderTransform(buf[b:], &v.CurrentTransform) b += 4 // padding v.PendingLen = Get16(buf[b:]) b += 2 v.PendingNparams = Get16(buf[b:]) b += 2 v.CurrentLen = Get16(buf[b:]) b += 2 v.CurrentNparams = Get16(buf[b:]) b += 2 { byteString := make([]byte, v.PendingLen) copy(byteString[:v.PendingLen], buf[b:]) v.PendingFilterName = string(byteString) b += pad(int(v.PendingLen)) } v.PendingParams = make([]RenderFixed, v.PendingNparams) for i := 0; i < int(v.PendingNparams); i++ { v.PendingParams[i] = RenderFixed(Get32(buf[b:])) b += 4 } b = pad(b) { byteString := make([]byte, v.CurrentLen) copy(byteString[:v.CurrentLen], buf[b:]) v.CurrentFilterName = string(byteString) b += pad(int(v.CurrentLen)) } v.CurrentParams = make([]RenderFixed, v.CurrentNparams) for i := 0; i < int(v.CurrentNparams); i++ { v.CurrentParams[i] = RenderFixed(Get32(buf[b:])) b += 4 } b = pad(b) return v } func (cook RandrGetCrtcTransformCookie) Check() error { return cook.check() } // Write request to wire for RandrGetCrtcTransform func (c *Conn) randrGetCrtcTransformRequest(Crtc Id) []byte { size := 8 b := 0 buf := make([]byte, size) buf[b] = c.extensions["RANDR"] b += 1 buf[b] = 27 // request opcode b += 1 Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units b += 2 Put32(buf[b:], uint32(Crtc)) b += 4 return buf } // Request RandrGetPanning // size: 8 type RandrGetPanningCookie struct { *cookie } func (c *Conn) RandrGetPanning(Crtc Id) RandrGetPanningCookie { cookie := c.newCookie(true, true) c.newRequest(c.randrGetPanningRequest(Crtc), cookie) return RandrGetPanningCookie{cookie} } func (c *Conn) RandrGetPanningUnchecked(Crtc Id) RandrGetPanningCookie { cookie := c.newCookie(false, true) c.newRequest(c.randrGetPanningRequest(Crtc), cookie) return RandrGetPanningCookie{cookie} } // Request reply for RandrGetPanning // size: 36 type RandrGetPanningReply struct { Sequence uint16 Length uint32 Status byte Timestamp 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 RandrGetPanning func (cook RandrGetPanningCookie) Reply() (*RandrGetPanningReply, error) { buf, err := cook.reply() if err != nil { return nil, err } if buf == nil { return nil, nil } return randrGetPanningReply(buf), nil } // Read reply into structure from buffer for RandrGetPanning func randrGetPanningReply(buf []byte) *RandrGetPanningReply { v := new(RandrGetPanningReply) b := 1 // skip reply determinant v.Status = buf[b] b += 1 v.Sequence = Get16(buf[b:]) b += 2 v.Length = Get32(buf[b:]) // 4-byte units b += 4 v.Timestamp = Timestamp(Get32(buf[b:])) b += 4 v.Left = Get16(buf[b:]) b += 2 v.Top = Get16(buf[b:]) b += 2 v.Width = Get16(buf[b:]) b += 2 v.Height = Get16(buf[b:]) b += 2 v.TrackLeft = Get16(buf[b:]) b += 2 v.TrackTop = Get16(buf[b:]) b += 2 v.TrackWidth = Get16(buf[b:]) b += 2 v.TrackHeight = Get16(buf[b:]) b += 2 v.BorderLeft = int16(Get16(buf[b:])) b += 2 v.BorderTop = int16(Get16(buf[b:])) b += 2 v.BorderRight = int16(Get16(buf[b:])) b += 2 v.BorderBottom = int16(Get16(buf[b:])) b += 2 return v } func (cook RandrGetPanningCookie) Check() error { return cook.check() } // Write request to wire for RandrGetPanning func (c *Conn) randrGetPanningRequest(Crtc Id) []byte { size := 8 b := 0 buf := make([]byte, size) buf[b] = c.extensions["RANDR"] b += 1 buf[b] = 28 // request opcode b += 1 Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units b += 2 Put32(buf[b:], uint32(Crtc)) b += 4 return buf } // Request RandrSetPanning // size: 36 type RandrSetPanningCookie struct { *cookie } func (c *Conn) RandrSetPanning(Crtc Id, Timestamp 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) RandrSetPanningCookie { cookie := c.newCookie(true, true) c.newRequest(c.randrSetPanningRequest(Crtc, Timestamp, Left, Top, Width, Height, TrackLeft, TrackTop, TrackWidth, TrackHeight, BorderLeft, BorderTop, BorderRight, BorderBottom), cookie) return RandrSetPanningCookie{cookie} } func (c *Conn) RandrSetPanningUnchecked(Crtc Id, Timestamp 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) RandrSetPanningCookie { cookie := c.newCookie(false, true) c.newRequest(c.randrSetPanningRequest(Crtc, Timestamp, Left, Top, Width, Height, TrackLeft, TrackTop, TrackWidth, TrackHeight, BorderLeft, BorderTop, BorderRight, BorderBottom), cookie) return RandrSetPanningCookie{cookie} } // Request reply for RandrSetPanning // size: 12 type RandrSetPanningReply struct { Sequence uint16 Length uint32 Status byte Timestamp Timestamp } // Waits and reads reply data from request RandrSetPanning func (cook RandrSetPanningCookie) Reply() (*RandrSetPanningReply, error) { buf, err := cook.reply() if err != nil { return nil, err } if buf == nil { return nil, nil } return randrSetPanningReply(buf), nil } // Read reply into structure from buffer for RandrSetPanning func randrSetPanningReply(buf []byte) *RandrSetPanningReply { v := new(RandrSetPanningReply) b := 1 // skip reply determinant v.Status = buf[b] b += 1 v.Sequence = Get16(buf[b:]) b += 2 v.Length = Get32(buf[b:]) // 4-byte units b += 4 v.Timestamp = Timestamp(Get32(buf[b:])) b += 4 return v } func (cook RandrSetPanningCookie) Check() error { return cook.check() } // Write request to wire for RandrSetPanning func (c *Conn) randrSetPanningRequest(Crtc Id, Timestamp 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 Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units b += 2 Put32(buf[b:], uint32(Crtc)) b += 4 Put32(buf[b:], uint32(Timestamp)) b += 4 Put16(buf[b:], Left) b += 2 Put16(buf[b:], Top) b += 2 Put16(buf[b:], Width) b += 2 Put16(buf[b:], Height) b += 2 Put16(buf[b:], TrackLeft) b += 2 Put16(buf[b:], TrackTop) b += 2 Put16(buf[b:], TrackWidth) b += 2 Put16(buf[b:], TrackHeight) b += 2 Put16(buf[b:], uint16(BorderLeft)) b += 2 Put16(buf[b:], uint16(BorderTop)) b += 2 Put16(buf[b:], uint16(BorderRight)) b += 2 Put16(buf[b:], uint16(BorderBottom)) b += 2 return buf } // Request RandrSetOutputPrimary // size: 12 type RandrSetOutputPrimaryCookie struct { *cookie } // Write request to wire for RandrSetOutputPrimary func (c *Conn) RandrSetOutputPrimary(Window Id, Output Id) RandrSetOutputPrimaryCookie { cookie := c.newCookie(false, false) c.newRequest(c.randrSetOutputPrimaryRequest(Window, Output), cookie) return RandrSetOutputPrimaryCookie{cookie} } func (c *Conn) RandrSetOutputPrimaryChecked(Window Id, Output Id) RandrSetOutputPrimaryCookie { cookie := c.newCookie(true, false) c.newRequest(c.randrSetOutputPrimaryRequest(Window, Output), cookie) return RandrSetOutputPrimaryCookie{cookie} } func (cook RandrSetOutputPrimaryCookie) Check() error { return cook.check() } // Write request to wire for RandrSetOutputPrimary func (c *Conn) randrSetOutputPrimaryRequest(Window Id, Output Id) []byte { size := 12 b := 0 buf := make([]byte, size) buf[b] = c.extensions["RANDR"] b += 1 buf[b] = 30 // request opcode b += 1 Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units b += 2 Put32(buf[b:], uint32(Window)) b += 4 Put32(buf[b:], uint32(Output)) b += 4 return buf } // Request RandrGetOutputPrimary // size: 8 type RandrGetOutputPrimaryCookie struct { *cookie } func (c *Conn) RandrGetOutputPrimary(Window Id) RandrGetOutputPrimaryCookie { cookie := c.newCookie(true, true) c.newRequest(c.randrGetOutputPrimaryRequest(Window), cookie) return RandrGetOutputPrimaryCookie{cookie} } func (c *Conn) RandrGetOutputPrimaryUnchecked(Window Id) RandrGetOutputPrimaryCookie { cookie := c.newCookie(false, true) c.newRequest(c.randrGetOutputPrimaryRequest(Window), cookie) return RandrGetOutputPrimaryCookie{cookie} } // Request reply for RandrGetOutputPrimary // size: 12 type RandrGetOutputPrimaryReply struct { Sequence uint16 Length uint32 // padding: 1 bytes Output Id } // Waits and reads reply data from request RandrGetOutputPrimary func (cook RandrGetOutputPrimaryCookie) Reply() (*RandrGetOutputPrimaryReply, error) { buf, err := cook.reply() if err != nil { return nil, err } if buf == nil { return nil, nil } return randrGetOutputPrimaryReply(buf), nil } // Read reply into structure from buffer for RandrGetOutputPrimary func randrGetOutputPrimaryReply(buf []byte) *RandrGetOutputPrimaryReply { v := new(RandrGetOutputPrimaryReply) b := 1 // skip reply determinant b += 1 // padding v.Sequence = Get16(buf[b:]) b += 2 v.Length = Get32(buf[b:]) // 4-byte units b += 4 v.Output = Id(Get32(buf[b:])) b += 4 return v } func (cook RandrGetOutputPrimaryCookie) Check() error { return cook.check() } // Write request to wire for RandrGetOutputPrimary func (c *Conn) randrGetOutputPrimaryRequest(Window Id) []byte { size := 8 b := 0 buf := make([]byte, size) buf[b] = c.extensions["RANDR"] b += 1 buf[b] = 31 // request opcode b += 1 Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units b += 2 Put32(buf[b:], uint32(Window)) b += 4 return buf }