aboutsummaryrefslogtreecommitdiff
path: root/nexgb/xproto
diff options
context:
space:
mode:
authorAndrew Gallant (Ocelot) <Andrew.Gallant@tufts.edu>2012-05-10 17:01:42 -0400
committerAndrew Gallant (Ocelot) <Andrew.Gallant@tufts.edu>2012-05-10 17:01:42 -0400
commit0c50dc6241fa21712e041cfa2bfb9db4ccaef10a (patch)
tree90a3200414c8ad6df8e7983a8e73fedfbe2b324e /nexgb/xproto
parente239bb3c68a4981a3916534203c2fbd6b96f593c (diff)
downloadhaven-0c50dc6241fa21712e041cfa2bfb9db4ccaef10a.tar.gz
haven-0c50dc6241fa21712e041cfa2bfb9db4ccaef10a.tar.xz
haven-0c50dc6241fa21712e041cfa2bfb9db4ccaef10a.zip
a huge commit. splitting extensions into their own sub-packages.
Diffstat (limited to 'nexgb/xproto')
-rw-r--r--nexgb/xproto/xproto.go14347
-rw-r--r--nexgb/xproto/xproto_test.go365
2 files changed, 14712 insertions, 0 deletions
diff --git a/nexgb/xproto/xproto.go b/nexgb/xproto/xproto.go
new file mode 100644
index 0000000..2516225
--- /dev/null
+++ b/nexgb/xproto/xproto.go
@@ -0,0 +1,14347 @@
+package xproto
+
+/*
+ This file was generated by xproto.xml on May 10 2012 4:20:28pm EDT.
+ This file is automatically generated. Edit at your peril!
+*/
+
+import (
+ "github.com/BurntSushi/xgb"
+)
+
+// Setup parses the setup bytes retrieved when
+// connecting into a SetupInfo struct.
+func Setup(c *xgb.Conn) *SetupInfo {
+ setup := new(SetupInfo)
+ SetupInfoRead(c.SetupBytes, setup)
+ return setup
+}
+
+// DefaultScreen gets the default screen info from SetupInfo.
+func (s *SetupInfo) DefaultScreen(c *xgb.Conn) *ScreenInfo {
+ return &s.Roots[c.DefaultScreen]
+}
+
+// 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'
+
+// Skipping definition for base type 'Int32'
+
+// Skipping definition for base type 'Void'
+
+// Skipping definition for base type 'Byte'
+
+const (
+ VisualClassStaticGray = 0
+ VisualClassGrayScale = 1
+ VisualClassStaticColor = 2
+ VisualClassPseudoColor = 3
+ VisualClassTrueColor = 4
+ VisualClassDirectColor = 5
+)
+
+const (
+ EventMaskNoEvent = 0
+ EventMaskKeyPress = 1
+ EventMaskKeyRelease = 2
+ EventMaskButtonPress = 4
+ EventMaskButtonRelease = 8
+ EventMaskEnterWindow = 16
+ EventMaskLeaveWindow = 32
+ EventMaskPointerMotion = 64
+ EventMaskPointerMotionHint = 128
+ EventMaskButton1Motion = 256
+ EventMaskButton2Motion = 512
+ EventMaskButton3Motion = 1024
+ EventMaskButton4Motion = 2048
+ EventMaskButton5Motion = 4096
+ EventMaskButtonMotion = 8192
+ EventMaskKeymapState = 16384
+ EventMaskExposure = 32768
+ EventMaskVisibilityChange = 65536
+ EventMaskStructureNotify = 131072
+ EventMaskResizeRedirect = 262144
+ EventMaskSubstructureNotify = 524288
+ EventMaskSubstructureRedirect = 1048576
+ EventMaskFocusChange = 2097152
+ EventMaskPropertyChange = 4194304
+ EventMaskColorMapChange = 8388608
+ EventMaskOwnerGrabButton = 16777216
+)
+
+const (
+ BackingStoreNotUseful = 0
+ BackingStoreWhenMapped = 1
+ BackingStoreAlways = 2
+)
+
+const (
+ ImageOrderLSBFirst = 0
+ ImageOrderMSBFirst = 1
+)
+
+const (
+ ModMaskShift = 1
+ ModMaskLock = 2
+ ModMaskControl = 4
+ ModMask1 = 8
+ ModMask2 = 16
+ ModMask3 = 32
+ ModMask4 = 64
+ ModMask5 = 128
+ ModMaskAny = 32768
+)
+
+const (
+ KeyButMaskShift = 1
+ KeyButMaskLock = 2
+ KeyButMaskControl = 4
+ KeyButMaskMod1 = 8
+ KeyButMaskMod2 = 16
+ KeyButMaskMod3 = 32
+ KeyButMaskMod4 = 64
+ KeyButMaskMod5 = 128
+ KeyButMaskButton1 = 256
+ KeyButMaskButton2 = 512
+ KeyButMaskButton3 = 1024
+ KeyButMaskButton4 = 2048
+ KeyButMaskButton5 = 4096
+)
+
+const (
+ WindowNone = 0
+)
+
+const (
+ ButtonMask1 = 256
+ ButtonMask2 = 512
+ ButtonMask3 = 1024
+ ButtonMask4 = 2048
+ ButtonMask5 = 4096
+ ButtonMaskAny = 32768
+)
+
+const (
+ MotionNormal = 0
+ MotionHint = 1
+)
+
+const (
+ NotifyDetailAncestor = 0
+ NotifyDetailVirtual = 1
+ NotifyDetailInferior = 2
+ NotifyDetailNonlinear = 3
+ NotifyDetailNonlinearVirtual = 4
+ NotifyDetailPointer = 5
+ NotifyDetailPointerRoot = 6
+ NotifyDetailNone = 7
+)
+
+const (
+ NotifyModeNormal = 0
+ NotifyModeGrab = 1
+ NotifyModeUngrab = 2
+ NotifyModeWhileGrabbed = 3
+)
+
+const (
+ VisibilityUnobscured = 0
+ VisibilityPartiallyObscured = 1
+ VisibilityFullyObscured = 2
+)
+
+const (
+ PlaceOnTop = 0
+ PlaceOnBottom = 1
+)
+
+const (
+ PropertyNewValue = 0
+ PropertyDelete = 1
+)
+
+const (
+ TimeCurrentTime = 0
+)
+
+const (
+ AtomNone = 0
+ AtomAny = 0
+ AtomPrimary = 1
+ AtomSecondary = 2
+ AtomArc = 3
+ AtomAtom = 4
+ AtomBitmap = 5
+ AtomCardinal = 6
+ AtomColormap = 7
+ AtomCursor = 8
+ AtomCutBuffer0 = 9
+ AtomCutBuffer1 = 10
+ AtomCutBuffer2 = 11
+ AtomCutBuffer3 = 12
+ AtomCutBuffer4 = 13
+ AtomCutBuffer5 = 14
+ AtomCutBuffer6 = 15
+ AtomCutBuffer7 = 16
+ AtomDrawable = 17
+ AtomFont = 18
+ AtomInteger = 19
+ AtomPixmap = 20
+ AtomPoint = 21
+ AtomRectangle = 22
+ AtomResourceManager = 23
+ AtomRgbColorMap = 24
+ AtomRgbBestMap = 25
+ AtomRgbBlueMap = 26
+ AtomRgbDefaultMap = 27
+ AtomRgbGrayMap = 28
+ AtomRgbGreenMap = 29
+ AtomRgbRedMap = 30
+ AtomString = 31
+ AtomVisualid = 32
+ AtomWindow = 33
+ AtomWmCommand = 34
+ AtomWmHints = 35
+ AtomWmClientMachine = 36
+ AtomWmIconName = 37
+ AtomWmIconSize = 38
+ AtomWmName = 39
+ AtomWmNormalHints = 40
+ AtomWmSizeHints = 41
+ AtomWmZoomHints = 42
+ AtomMinSpace = 43
+ AtomNormSpace = 44
+ AtomMaxSpace = 45
+ AtomEndSpace = 46
+ AtomSuperscriptX = 47
+ AtomSuperscriptY = 48
+ AtomSubscriptX = 49
+ AtomSubscriptY = 50
+ AtomUnderlinePosition = 51
+ AtomUnderlineThickness = 52
+ AtomStrikeoutAscent = 53
+ AtomStrikeoutDescent = 54
+ AtomItalicAngle = 55
+ AtomXHeight = 56
+ AtomQuadWidth = 57
+ AtomWeight = 58
+ AtomPointSize = 59
+ AtomResolution = 60
+ AtomCopyright = 61
+ AtomNotice = 62
+ AtomFontName = 63
+ AtomFamilyName = 64
+ AtomFullName = 65
+ AtomCapHeight = 66
+ AtomWmClass = 67
+ AtomWmTransientFor = 68
+)
+
+const (
+ ColormapStateUninstalled = 0
+ ColormapStateInstalled = 1
+)
+
+const (
+ ColormapNone = 0
+)
+
+const (
+ MappingModifier = 0
+ MappingKeyboard = 1
+ MappingPointer = 2
+)
+
+const (
+ WindowClassCopyFromParent = 0
+ WindowClassInputOutput = 1
+ WindowClassInputOnly = 2
+)
+
+const (
+ CwBackPixmap = 1
+ CwBackPixel = 2
+ CwBorderPixmap = 4
+ CwBorderPixel = 8
+ CwBitGravity = 16
+ CwWinGravity = 32
+ CwBackingStore = 64
+ CwBackingPlanes = 128
+ CwBackingPixel = 256
+ CwOverrideRedirect = 512
+ CwSaveUnder = 1024
+ CwEventMask = 2048
+ CwDontPropagate = 4096
+ CwColormap = 8192
+ CwCursor = 16384
+)
+
+const (
+ BackPixmapNone = 0
+ BackPixmapParentRelative = 1
+)
+
+const (
+ GravityBitForget = 0
+ GravityWinUnmap = 0
+ GravityNorthWest = 1
+ GravityNorth = 2
+ GravityNorthEast = 3
+ GravityWest = 4
+ GravityCenter = 5
+ GravityEast = 6
+ GravitySouthWest = 7
+ GravitySouth = 8
+ GravitySouthEast = 9
+ GravityStatic = 10
+)
+
+const (
+ MapStateUnmapped = 0
+ MapStateUnviewable = 1
+ MapStateViewable = 2
+)
+
+const (
+ SetModeInsert = 0
+ SetModeDelete = 1
+)
+
+const (
+ ConfigWindowX = 1
+ ConfigWindowY = 2
+ ConfigWindowWidth = 4
+ ConfigWindowHeight = 8
+ ConfigWindowBorderWidth = 16
+ ConfigWindowSibling = 32
+ ConfigWindowStackMode = 64
+)
+
+const (
+ StackModeAbove = 0
+ StackModeBelow = 1
+ StackModeTopIf = 2
+ StackModeBottomIf = 3
+ StackModeOpposite = 4
+)
+
+const (
+ CirculateRaiseLowest = 0
+ CirculateLowerHighest = 1
+)
+
+const (
+ PropModeReplace = 0
+ PropModePrepend = 1
+ PropModeAppend = 2
+)
+
+const (
+ GetPropertyTypeAny = 0
+)
+
+const (
+ SendEventDestPointerWindow = 0
+ SendEventDestItemFocus = 1
+)
+
+const (
+ GrabModeSync = 0
+ GrabModeAsync = 1
+)
+
+const (
+ GrabStatusSuccess = 0
+ GrabStatusAlreadyGrabbed = 1
+ GrabStatusInvalidTime = 2
+ GrabStatusNotViewable = 3
+ GrabStatusFrozen = 4
+)
+
+const (
+ CursorNone = 0
+)
+
+const (
+ ButtonIndexAny = 0
+ ButtonIndex1 = 1
+ ButtonIndex2 = 2
+ ButtonIndex3 = 3
+ ButtonIndex4 = 4
+ ButtonIndex5 = 5
+)
+
+const (
+ GrabAny = 0
+)
+
+const (
+ AllowAsyncPointer = 0
+ AllowSyncPointer = 1
+ AllowReplayPointer = 2
+ AllowAsyncKeyboard = 3
+ AllowSyncKeyboard = 4
+ AllowReplayKeyboard = 5
+ AllowAsyncBoth = 6
+ AllowSyncBoth = 7
+)
+
+const (
+ InputFocusNone = 0
+ InputFocusPointerRoot = 1
+ InputFocusParent = 2
+ InputFocusFollowKeyboard = 3
+)
+
+const (
+ FontDrawLeftToRight = 0
+ FontDrawRightToLeft = 1
+)
+
+const (
+ GcFunction = 1
+ GcPlaneMask = 2
+ GcForeground = 4
+ GcBackground = 8
+ GcLineWidth = 16
+ GcLineStyle = 32
+ GcCapStyle = 64
+ GcJoinStyle = 128
+ GcFillStyle = 256
+ GcFillRule = 512
+ GcTile = 1024
+ GcStipple = 2048
+ GcTileStippleOriginX = 4096
+ GcTileStippleOriginY = 8192
+ GcFont = 16384
+ GcSubwindowMode = 32768
+ GcGraphicsExposures = 65536
+ GcClipOriginX = 131072
+ GcClipOriginY = 262144
+ GcClipMask = 524288
+ GcDashOffset = 1048576
+ GcDashList = 2097152
+ GcArcMode = 4194304
+)
+
+const (
+ GxClear = 0
+ GxAnd = 1
+ GxAndReverse = 2
+ GxCopy = 3
+ GxAndInverted = 4
+ GxNoop = 5
+ GxXor = 6
+ GxOr = 7
+ GxNor = 8
+ GxEquiv = 9
+ GxInvert = 10
+ GxOrReverse = 11
+ GxCopyInverted = 12
+ GxOrInverted = 13
+ GxNand = 14
+ GxSet = 15
+)
+
+const (
+ LineStyleSolid = 0
+ LineStyleOnOffDash = 1
+ LineStyleDoubleDash = 2
+)
+
+const (
+ CapStyleNotLast = 0
+ CapStyleButt = 1
+ CapStyleRound = 2
+ CapStyleProjecting = 3
+)
+
+const (
+ JoinStyleMiter = 0
+ JoinStyleRound = 1
+ JoinStyleBevel = 2
+)
+
+const (
+ FillStyleSolid = 0
+ FillStyleTiled = 1
+ FillStyleStippled = 2
+ FillStyleOpaqueStippled = 3
+)
+
+const (
+ FillRuleEvenOdd = 0
+ FillRuleWinding = 1
+)
+
+const (
+ SubwindowModeClipByChildren = 0
+ SubwindowModeIncludeInferiors = 1
+)
+
+const (
+ ArcModeChord = 0
+ ArcModePieSlice = 1
+)
+
+const (
+ ClipOrderingUnsorted = 0
+ ClipOrderingYSorted = 1
+ ClipOrderingYXSorted = 2
+ ClipOrderingYXBanded = 3
+)
+
+const (
+ CoordModeOrigin = 0
+ CoordModePrevious = 1
+)
+
+const (
+ PolyShapeComplex = 0
+ PolyShapeNonconvex = 1
+ PolyShapeConvex = 2
+)
+
+const (
+ ImageFormatXYBitmap = 0
+ ImageFormatXYPixmap = 1
+ ImageFormatZPixmap = 2
+)
+
+const (
+ ColormapAllocNone = 0
+ ColormapAllocAll = 1
+)
+
+const (
+ ColorFlagRed = 1
+ ColorFlagGreen = 2
+ ColorFlagBlue = 4
+)
+
+const (
+ PixmapNone = 0
+)
+
+const (
+ FontNone = 0
+)
+
+const (
+ QueryShapeOfLargestCursor = 0
+ QueryShapeOfFastestTile = 1
+ QueryShapeOfFastestStipple = 2
+)
+
+const (
+ KbKeyClickPercent = 1
+ KbBellPercent = 2
+ KbBellPitch = 4
+ KbBellDuration = 8
+ KbLed = 16
+ KbLedMode = 32
+ KbKey = 64
+ KbAutoRepeatMode = 128
+)
+
+const (
+ LedModeOff = 0
+ LedModeOn = 1
+)
+
+const (
+ AutoRepeatModeOff = 0
+ AutoRepeatModeOn = 1
+ AutoRepeatModeDefault = 2
+)
+
+const (
+ BlankingNotPreferred = 0
+ BlankingPreferred = 1
+ BlankingDefault = 2
+)
+
+const (
+ ExposuresNotAllowed = 0
+ ExposuresAllowed = 1
+ ExposuresDefault = 2
+)
+
+const (
+ HostModeInsert = 0
+ HostModeDelete = 1
+)
+
+const (
+ FamilyInternet = 0
+ FamilyDECnet = 1
+ FamilyChaos = 2
+ FamilyServerInterpreted = 5
+ FamilyInternet6 = 6
+)
+
+const (
+ AccessControlDisable = 0
+ AccessControlEnable = 1
+)
+
+const (
+ CloseDownDestroyAll = 0
+ CloseDownRetainPermanent = 1
+ CloseDownRetainTemporary = 2
+)
+
+const (
+ KillAllTemporary = 0
+)
+
+const (
+ ScreenSaverReset = 0
+ ScreenSaverActive = 1
+)
+
+const (
+ MappingStatusSuccess = 0
+ MappingStatusBusy = 1
+ MappingStatusFailure = 2
+)
+
+const (
+ MapIndexShift = 0
+ MapIndexLock = 1
+ MapIndexControl = 2
+ MapIndex1 = 3
+ MapIndex2 = 4
+ MapIndex3 = 5
+ MapIndex4 = 6
+ MapIndex5 = 7
+)
+
+type Window uint32
+
+func NewWindowId(c *xgb.Conn) (Window, error) {
+ id, err := c.NewId()
+ if err != nil {
+ return 0, err
+ }
+ return Window(id), nil
+}
+
+type Pixmap uint32
+
+func NewPixmapId(c *xgb.Conn) (Pixmap, error) {
+ id, err := c.NewId()
+ if err != nil {
+ return 0, err
+ }
+ return Pixmap(id), nil
+}
+
+type Cursor uint32
+
+func NewCursorId(c *xgb.Conn) (Cursor, error) {
+ id, err := c.NewId()
+ if err != nil {
+ return 0, err
+ }
+ return Cursor(id), nil
+}
+
+type Font uint32
+
+func NewFontId(c *xgb.Conn) (Font, error) {
+ id, err := c.NewId()
+ if err != nil {
+ return 0, err
+ }
+ return Font(id), nil
+}
+
+type Gcontext uint32
+
+func NewGcontextId(c *xgb.Conn) (Gcontext, error) {
+ id, err := c.NewId()
+ if err != nil {
+ return 0, err
+ }
+ return Gcontext(id), nil
+}
+
+type Colormap uint32
+
+func NewColormapId(c *xgb.Conn) (Colormap, error) {
+ id, err := c.NewId()
+ if err != nil {
+ return 0, err
+ }
+ return Colormap(id), nil
+}
+
+type Atom uint32
+
+func NewAtomId(c *xgb.Conn) (Atom, error) {
+ id, err := c.NewId()
+ if err != nil {
+ return 0, err
+ }
+ return Atom(id), nil
+}
+
+type Drawable uint32
+
+func NewDrawableId(c *xgb.Conn) (Drawable, error) {
+ id, err := c.NewId()
+ if err != nil {
+ return 0, err
+ }
+ return Drawable(id), nil
+}
+
+type Fontable uint32
+
+func NewFontableId(c *xgb.Conn) (Fontable, error) {
+ id, err := c.NewId()
+ if err != nil {
+ return 0, err
+ }
+ return Fontable(id), nil
+}
+
+type Visualid uint32
+
+type Timestamp uint32
+
+type Keysym uint32
+
+type Keycode byte
+
+type Button byte
+
+// 'Char2b' struct definition
+// Size: 2
+type Char2b struct {
+ Byte1 byte
+ Byte2 byte
+}
+
+// Struct read Char2b
+func Char2bRead(buf []byte, v *Char2b) int {
+ b := 0
+
+ v.Byte1 = buf[b]
+ b += 1
+
+ v.Byte2 = buf[b]
+ b += 1
+
+ return b
+}
+
+// Struct list read Char2b
+func Char2bReadList(buf []byte, dest []Char2b) int {
+ b := 0
+ for i := 0; i < len(dest); i++ {
+ dest[i] = Char2b{}
+ b += Char2bRead(buf[b:], &dest[i])
+ }
+ return xgb.Pad(b)
+}
+
+// Struct write Char2b
+func (v Char2b) Bytes() []byte {
+ buf := make([]byte, 2)
+ b := 0
+
+ buf[b] = v.Byte1
+ b += 1
+
+ buf[b] = v.Byte2
+ b += 1
+
+ return buf
+}
+
+// Write struct list Char2b
+func Char2bListBytes(buf []byte, list []Char2b) int {
+ b := 0
+ var structBytes []byte
+ for _, item := range list {
+ structBytes = item.Bytes()
+ copy(buf[b:], structBytes)
+ b += xgb.Pad(len(structBytes))
+ }
+ return b
+}
+
+// 'Point' struct definition
+// Size: 4
+type Point struct {
+ X int16
+ Y int16
+}
+
+// Struct read Point
+func PointRead(buf []byte, v *Point) int {
+ b := 0
+
+ v.X = int16(xgb.Get16(buf[b:]))
+ b += 2
+
+ v.Y = int16(xgb.Get16(buf[b:]))
+ b += 2
+
+ return b
+}
+
+// Struct list read Point
+func PointReadList(buf []byte, dest []Point) int {
+ b := 0
+ for i := 0; i < len(dest); i++ {
+ dest[i] = Point{}
+ b += PointRead(buf[b:], &dest[i])
+ }
+ return xgb.Pad(b)
+}
+
+// Struct write Point
+func (v Point) Bytes() []byte {
+ buf := make([]byte, 4)
+ b := 0
+
+ xgb.Put16(buf[b:], uint16(v.X))
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(v.Y))
+ b += 2
+
+ return buf
+}
+
+// Write struct list Point
+func PointListBytes(buf []byte, list []Point) int {
+ b := 0
+ var structBytes []byte
+ for _, item := range list {
+ structBytes = item.Bytes()
+ copy(buf[b:], structBytes)
+ b += xgb.Pad(len(structBytes))
+ }
+ return b
+}
+
+// 'Rectangle' struct definition
+// Size: 8
+type Rectangle struct {
+ X int16
+ Y int16
+ Width uint16
+ Height uint16
+}
+
+// Struct read Rectangle
+func RectangleRead(buf []byte, v *Rectangle) int {
+ b := 0
+
+ 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 Rectangle
+func RectangleReadList(buf []byte, dest []Rectangle) int {
+ b := 0
+ for i := 0; i < len(dest); i++ {
+ dest[i] = Rectangle{}
+ b += RectangleRead(buf[b:], &dest[i])
+ }
+ return xgb.Pad(b)
+}
+
+// Struct write Rectangle
+func (v Rectangle) Bytes() []byte {
+ buf := make([]byte, 8)
+ b := 0
+
+ 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 Rectangle
+func RectangleListBytes(buf []byte, list []Rectangle) int {
+ b := 0
+ var structBytes []byte
+ for _, item := range list {
+ structBytes = item.Bytes()
+ copy(buf[b:], structBytes)
+ b += xgb.Pad(len(structBytes))
+ }
+ return b
+}
+
+// 'Arc' struct definition
+// Size: 12
+type Arc struct {
+ X int16
+ Y int16
+ Width uint16
+ Height uint16
+ Angle1 int16
+ Angle2 int16
+}
+
+// Struct read Arc
+func ArcRead(buf []byte, v *Arc) int {
+ b := 0
+
+ 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.Angle1 = int16(xgb.Get16(buf[b:]))
+ b += 2
+
+ v.Angle2 = int16(xgb.Get16(buf[b:]))
+ b += 2
+
+ return b
+}
+
+// Struct list read Arc
+func ArcReadList(buf []byte, dest []Arc) int {
+ b := 0
+ for i := 0; i < len(dest); i++ {
+ dest[i] = Arc{}
+ b += ArcRead(buf[b:], &dest[i])
+ }
+ return xgb.Pad(b)
+}
+
+// Struct write Arc
+func (v Arc) Bytes() []byte {
+ buf := make([]byte, 12)
+ b := 0
+
+ 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
+
+ xgb.Put16(buf[b:], uint16(v.Angle1))
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(v.Angle2))
+ b += 2
+
+ return buf
+}
+
+// Write struct list Arc
+func ArcListBytes(buf []byte, list []Arc) int {
+ b := 0
+ var structBytes []byte
+ for _, item := range list {
+ structBytes = item.Bytes()
+ copy(buf[b:], structBytes)
+ b += xgb.Pad(len(structBytes))
+ }
+ return b
+}
+
+// 'Format' struct definition
+// Size: 8
+type Format struct {
+ Depth byte
+ BitsPerPixel byte
+ ScanlinePad byte
+ // padding: 5 bytes
+}
+
+// Struct read Format
+func FormatRead(buf []byte, v *Format) int {
+ b := 0
+
+ v.Depth = buf[b]
+ b += 1
+
+ v.BitsPerPixel = buf[b]
+ b += 1
+
+ v.ScanlinePad = buf[b]
+ b += 1
+
+ b += 5 // padding
+
+ return b
+}
+
+// Struct list read Format
+func FormatReadList(buf []byte, dest []Format) int {
+ b := 0
+ for i := 0; i < len(dest); i++ {
+ dest[i] = Format{}
+ b += FormatRead(buf[b:], &dest[i])
+ }
+ return xgb.Pad(b)
+}
+
+// Struct write Format
+func (v Format) Bytes() []byte {
+ buf := make([]byte, 8)
+ b := 0
+
+ buf[b] = v.Depth
+ b += 1
+
+ buf[b] = v.BitsPerPixel
+ b += 1
+
+ buf[b] = v.ScanlinePad
+ b += 1
+
+ b += 5 // padding
+
+ return buf
+}
+
+// Write struct list Format
+func FormatListBytes(buf []byte, list []Format) int {
+ b := 0
+ var structBytes []byte
+ for _, item := range list {
+ structBytes = item.Bytes()
+ copy(buf[b:], structBytes)
+ b += xgb.Pad(len(structBytes))
+ }
+ return b
+}
+
+// 'VisualInfo' struct definition
+// Size: 24
+type VisualInfo struct {
+ VisualId Visualid
+ Class byte
+ BitsPerRgbValue byte
+ ColormapEntries uint16
+ RedMask uint32
+ GreenMask uint32
+ BlueMask uint32
+ // padding: 4 bytes
+}
+
+// Struct read VisualInfo
+func VisualInfoRead(buf []byte, v *VisualInfo) int {
+ b := 0
+
+ v.VisualId = Visualid(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Class = buf[b]
+ b += 1
+
+ v.BitsPerRgbValue = buf[b]
+ b += 1
+
+ v.ColormapEntries = xgb.Get16(buf[b:])
+ b += 2
+
+ v.RedMask = xgb.Get32(buf[b:])
+ b += 4
+
+ v.GreenMask = xgb.Get32(buf[b:])
+ b += 4
+
+ v.BlueMask = xgb.Get32(buf[b:])
+ b += 4
+
+ b += 4 // padding
+
+ return b
+}
+
+// Struct list read VisualInfo
+func VisualInfoReadList(buf []byte, dest []VisualInfo) int {
+ b := 0
+ for i := 0; i < len(dest); i++ {
+ dest[i] = VisualInfo{}
+ b += VisualInfoRead(buf[b:], &dest[i])
+ }
+ return xgb.Pad(b)
+}
+
+// Struct write VisualInfo
+func (v VisualInfo) Bytes() []byte {
+ buf := make([]byte, 24)
+ b := 0
+
+ xgb.Put32(buf[b:], uint32(v.VisualId))
+ b += 4
+
+ buf[b] = v.Class
+ b += 1
+
+ buf[b] = v.BitsPerRgbValue
+ b += 1
+
+ xgb.Put16(buf[b:], v.ColormapEntries)
+ b += 2
+
+ xgb.Put32(buf[b:], v.RedMask)
+ b += 4
+
+ xgb.Put32(buf[b:], v.GreenMask)
+ b += 4
+
+ xgb.Put32(buf[b:], v.BlueMask)
+ b += 4
+
+ b += 4 // padding
+
+ return buf
+}
+
+// Write struct list VisualInfo
+func VisualInfoListBytes(buf []byte, list []VisualInfo) int {
+ b := 0
+ var structBytes []byte
+ for _, item := range list {
+ structBytes = item.Bytes()
+ copy(buf[b:], structBytes)
+ b += xgb.Pad(len(structBytes))
+ }
+ return b
+}
+
+// 'DepthInfo' struct definition
+// Size: (8 + xgb.Pad((int(VisualsLen) * 24)))
+type DepthInfo struct {
+ Depth byte
+ // padding: 1 bytes
+ VisualsLen uint16
+ // padding: 4 bytes
+ Visuals []VisualInfo // size: xgb.Pad((int(VisualsLen) * 24))
+}
+
+// Struct read DepthInfo
+func DepthInfoRead(buf []byte, v *DepthInfo) int {
+ b := 0
+
+ v.Depth = buf[b]
+ b += 1
+
+ b += 1 // padding
+
+ v.VisualsLen = xgb.Get16(buf[b:])
+ b += 2
+
+ b += 4 // padding
+
+ v.Visuals = make([]VisualInfo, v.VisualsLen)
+ b += VisualInfoReadList(buf[b:], v.Visuals)
+
+ return b
+}
+
+// Struct list read DepthInfo
+func DepthInfoReadList(buf []byte, dest []DepthInfo) int {
+ b := 0
+ for i := 0; i < len(dest); i++ {
+ dest[i] = DepthInfo{}
+ b += DepthInfoRead(buf[b:], &dest[i])
+ }
+ return xgb.Pad(b)
+}
+
+// Struct write DepthInfo
+func (v DepthInfo) Bytes() []byte {
+ buf := make([]byte, (8 + xgb.Pad((int(v.VisualsLen) * 24))))
+ b := 0
+
+ buf[b] = v.Depth
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], v.VisualsLen)
+ b += 2
+
+ b += 4 // padding
+
+ b += VisualInfoListBytes(buf[b:], v.Visuals)
+
+ return buf
+}
+
+// Write struct list DepthInfo
+func DepthInfoListBytes(buf []byte, list []DepthInfo) 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 DepthInfo
+func DepthInfoListSize(list []DepthInfo) int {
+ size := 0
+ for _, item := range list {
+ size += (8 + xgb.Pad((int(item.VisualsLen) * 24)))
+ }
+ return size
+}
+
+// 'ScreenInfo' struct definition
+// Size: (40 + DepthInfoListSize(AllowedDepths))
+type ScreenInfo struct {
+ Root Window
+ DefaultColormap Colormap
+ WhitePixel uint32
+ BlackPixel uint32
+ CurrentInputMasks uint32
+ WidthInPixels uint16
+ HeightInPixels uint16
+ WidthInMillimeters uint16
+ HeightInMillimeters uint16
+ MinInstalledMaps uint16
+ MaxInstalledMaps uint16
+ RootVisual Visualid
+ BackingStores byte
+ SaveUnders bool
+ RootDepth byte
+ AllowedDepthsLen byte
+ AllowedDepths []DepthInfo // size: DepthInfoListSize(AllowedDepths)
+}
+
+// Struct read ScreenInfo
+func ScreenInfoRead(buf []byte, v *ScreenInfo) int {
+ b := 0
+
+ v.Root = Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.DefaultColormap = Colormap(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.WhitePixel = xgb.Get32(buf[b:])
+ b += 4
+
+ v.BlackPixel = xgb.Get32(buf[b:])
+ b += 4
+
+ v.CurrentInputMasks = xgb.Get32(buf[b:])
+ b += 4
+
+ v.WidthInPixels = xgb.Get16(buf[b:])
+ b += 2
+
+ v.HeightInPixels = xgb.Get16(buf[b:])
+ b += 2
+
+ v.WidthInMillimeters = xgb.Get16(buf[b:])
+ b += 2
+
+ v.HeightInMillimeters = xgb.Get16(buf[b:])
+ b += 2
+
+ v.MinInstalledMaps = xgb.Get16(buf[b:])
+ b += 2
+
+ v.MaxInstalledMaps = xgb.Get16(buf[b:])
+ b += 2
+
+ v.RootVisual = Visualid(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.BackingStores = buf[b]
+ b += 1
+
+ if buf[b] == 1 {
+ v.SaveUnders = true
+ } else {
+ v.SaveUnders = false
+ }
+ b += 1
+
+ v.RootDepth = buf[b]
+ b += 1
+
+ v.AllowedDepthsLen = buf[b]
+ b += 1
+
+ v.AllowedDepths = make([]DepthInfo, v.AllowedDepthsLen)
+ b += DepthInfoReadList(buf[b:], v.AllowedDepths)
+
+ return b
+}
+
+// Struct list read ScreenInfo
+func ScreenInfoReadList(buf []byte, dest []ScreenInfo) int {
+ b := 0
+ for i := 0; i < len(dest); i++ {
+ dest[i] = ScreenInfo{}
+ b += ScreenInfoRead(buf[b:], &dest[i])
+ }
+ return xgb.Pad(b)
+}
+
+// Struct write ScreenInfo
+func (v ScreenInfo) Bytes() []byte {
+ buf := make([]byte, (40 + DepthInfoListSize(v.AllowedDepths)))
+ b := 0
+
+ xgb.Put32(buf[b:], uint32(v.Root))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(v.DefaultColormap))
+ b += 4
+
+ xgb.Put32(buf[b:], v.WhitePixel)
+ b += 4
+
+ xgb.Put32(buf[b:], v.BlackPixel)
+ b += 4
+
+ xgb.Put32(buf[b:], v.CurrentInputMasks)
+ b += 4
+
+ xgb.Put16(buf[b:], v.WidthInPixels)
+ b += 2
+
+ xgb.Put16(buf[b:], v.HeightInPixels)
+ b += 2
+
+ xgb.Put16(buf[b:], v.WidthInMillimeters)
+ b += 2
+
+ xgb.Put16(buf[b:], v.HeightInMillimeters)
+ b += 2
+
+ xgb.Put16(buf[b:], v.MinInstalledMaps)
+ b += 2
+
+ xgb.Put16(buf[b:], v.MaxInstalledMaps)
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(v.RootVisual))
+ b += 4
+
+ buf[b] = v.BackingStores
+ b += 1
+
+ if v.SaveUnders {
+ buf[b] = 1
+ } else {
+ buf[b] = 0
+ }
+ b += 1
+
+ buf[b] = v.RootDepth
+ b += 1
+
+ buf[b] = v.AllowedDepthsLen
+ b += 1
+
+ b += DepthInfoListBytes(buf[b:], v.AllowedDepths)
+
+ return buf
+}
+
+// Write struct list ScreenInfo
+func ScreenInfoListBytes(buf []byte, list []ScreenInfo) 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 ScreenInfo
+func ScreenInfoListSize(list []ScreenInfo) int {
+ size := 0
+ for _, item := range list {
+ size += (40 + DepthInfoListSize(item.AllowedDepths))
+ }
+ return size
+}
+
+// 'SetupRequest' struct definition
+// Size: ((12 + xgb.Pad((int(AuthorizationProtocolNameLen) * 1))) + xgb.Pad((int(AuthorizationProtocolDataLen) * 1)))
+type SetupRequest struct {
+ ByteOrder byte
+ // padding: 1 bytes
+ ProtocolMajorVersion uint16
+ ProtocolMinorVersion uint16
+ AuthorizationProtocolNameLen uint16
+ AuthorizationProtocolDataLen uint16
+ // padding: 2 bytes
+ AuthorizationProtocolName string // size: xgb.Pad((int(AuthorizationProtocolNameLen) * 1))
+ AuthorizationProtocolData string // size: xgb.Pad((int(AuthorizationProtocolDataLen) * 1))
+}
+
+// Struct read SetupRequest
+func SetupRequestRead(buf []byte, v *SetupRequest) int {
+ b := 0
+
+ v.ByteOrder = buf[b]
+ b += 1
+
+ b += 1 // padding
+
+ v.ProtocolMajorVersion = xgb.Get16(buf[b:])
+ b += 2
+
+ v.ProtocolMinorVersion = xgb.Get16(buf[b:])
+ b += 2
+
+ v.AuthorizationProtocolNameLen = xgb.Get16(buf[b:])
+ b += 2
+
+ v.AuthorizationProtocolDataLen = xgb.Get16(buf[b:])
+ b += 2
+
+ b += 2 // padding
+
+ {
+ byteString := make([]byte, v.AuthorizationProtocolNameLen)
+ copy(byteString[:v.AuthorizationProtocolNameLen], buf[b:])
+ v.AuthorizationProtocolName = string(byteString)
+ b += xgb.Pad(int(v.AuthorizationProtocolNameLen))
+ }
+
+ {
+ byteString := make([]byte, v.AuthorizationProtocolDataLen)
+ copy(byteString[:v.AuthorizationProtocolDataLen], buf[b:])
+ v.AuthorizationProtocolData = string(byteString)
+ b += xgb.Pad(int(v.AuthorizationProtocolDataLen))
+ }
+
+ return b
+}
+
+// Struct list read SetupRequest
+func SetupRequestReadList(buf []byte, dest []SetupRequest) int {
+ b := 0
+ for i := 0; i < len(dest); i++ {
+ dest[i] = SetupRequest{}
+ b += SetupRequestRead(buf[b:], &dest[i])
+ }
+ return xgb.Pad(b)
+}
+
+// Struct write SetupRequest
+func (v SetupRequest) Bytes() []byte {
+ buf := make([]byte, ((12 + xgb.Pad((int(v.AuthorizationProtocolNameLen) * 1))) + xgb.Pad((int(v.AuthorizationProtocolDataLen) * 1))))
+ b := 0
+
+ buf[b] = v.ByteOrder
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], v.ProtocolMajorVersion)
+ b += 2
+
+ xgb.Put16(buf[b:], v.ProtocolMinorVersion)
+ b += 2
+
+ xgb.Put16(buf[b:], v.AuthorizationProtocolNameLen)
+ b += 2
+
+ xgb.Put16(buf[b:], v.AuthorizationProtocolDataLen)
+ b += 2
+
+ b += 2 // padding
+
+ copy(buf[b:], v.AuthorizationProtocolName[:v.AuthorizationProtocolNameLen])
+ b += xgb.Pad(int(v.AuthorizationProtocolNameLen))
+
+ copy(buf[b:], v.AuthorizationProtocolData[:v.AuthorizationProtocolDataLen])
+ b += xgb.Pad(int(v.AuthorizationProtocolDataLen))
+
+ return buf
+}
+
+// Write struct list SetupRequest
+func SetupRequestListBytes(buf []byte, list []SetupRequest) 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 SetupRequest
+func SetupRequestListSize(list []SetupRequest) int {
+ size := 0
+ for _, item := range list {
+ size += ((12 + xgb.Pad((int(item.AuthorizationProtocolNameLen) * 1))) + xgb.Pad((int(item.AuthorizationProtocolDataLen) * 1)))
+ }
+ return size
+}
+
+// 'SetupFailed' struct definition
+// Size: (8 + xgb.Pad((int(ReasonLen) * 1)))
+type SetupFailed struct {
+ Status byte
+ ReasonLen byte
+ ProtocolMajorVersion uint16
+ ProtocolMinorVersion uint16
+ Length uint16
+ Reason string // size: xgb.Pad((int(ReasonLen) * 1))
+}
+
+// Struct read SetupFailed
+func SetupFailedRead(buf []byte, v *SetupFailed) int {
+ b := 0
+
+ v.Status = buf[b]
+ b += 1
+
+ v.ReasonLen = buf[b]
+ b += 1
+
+ v.ProtocolMajorVersion = xgb.Get16(buf[b:])
+ b += 2
+
+ v.ProtocolMinorVersion = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Length = xgb.Get16(buf[b:])
+ b += 2
+
+ {
+ byteString := make([]byte, v.ReasonLen)
+ copy(byteString[:v.ReasonLen], buf[b:])
+ v.Reason = string(byteString)
+ b += xgb.Pad(int(v.ReasonLen))
+ }
+
+ return b
+}
+
+// Struct list read SetupFailed
+func SetupFailedReadList(buf []byte, dest []SetupFailed) int {
+ b := 0
+ for i := 0; i < len(dest); i++ {
+ dest[i] = SetupFailed{}
+ b += SetupFailedRead(buf[b:], &dest[i])
+ }
+ return xgb.Pad(b)
+}
+
+// Struct write SetupFailed
+func (v SetupFailed) Bytes() []byte {
+ buf := make([]byte, (8 + xgb.Pad((int(v.ReasonLen) * 1))))
+ b := 0
+
+ buf[b] = v.Status
+ b += 1
+
+ buf[b] = v.ReasonLen
+ b += 1
+
+ xgb.Put16(buf[b:], v.ProtocolMajorVersion)
+ b += 2
+
+ xgb.Put16(buf[b:], v.ProtocolMinorVersion)
+ b += 2
+
+ xgb.Put16(buf[b:], v.Length)
+ b += 2
+
+ copy(buf[b:], v.Reason[:v.ReasonLen])
+ b += xgb.Pad(int(v.ReasonLen))
+
+ return buf
+}
+
+// Write struct list SetupFailed
+func SetupFailedListBytes(buf []byte, list []SetupFailed) 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 SetupFailed
+func SetupFailedListSize(list []SetupFailed) int {
+ size := 0
+ for _, item := range list {
+ size += (8 + xgb.Pad((int(item.ReasonLen) * 1)))
+ }
+ return size
+}
+
+// 'SetupAuthenticate' struct definition
+// Size: (8 + xgb.Pad(((int(Length) * 4) * 1)))
+type SetupAuthenticate struct {
+ Status byte
+ // padding: 5 bytes
+ Length uint16
+ Reason string // size: xgb.Pad(((int(Length) * 4) * 1))
+}
+
+// Struct read SetupAuthenticate
+func SetupAuthenticateRead(buf []byte, v *SetupAuthenticate) int {
+ b := 0
+
+ v.Status = buf[b]
+ b += 1
+
+ b += 5 // padding
+
+ v.Length = xgb.Get16(buf[b:])
+ b += 2
+
+ {
+ byteString := make([]byte, (int(v.Length) * 4))
+ copy(byteString[:(int(v.Length)*4)], buf[b:])
+ v.Reason = string(byteString)
+ b += xgb.Pad(int((int(v.Length) * 4)))
+ }
+
+ return b
+}
+
+// Struct list read SetupAuthenticate
+func SetupAuthenticateReadList(buf []byte, dest []SetupAuthenticate) int {
+ b := 0
+ for i := 0; i < len(dest); i++ {
+ dest[i] = SetupAuthenticate{}
+ b += SetupAuthenticateRead(buf[b:], &dest[i])
+ }
+ return xgb.Pad(b)
+}
+
+// Struct write SetupAuthenticate
+func (v SetupAuthenticate) Bytes() []byte {
+ buf := make([]byte, (8 + xgb.Pad(((int(v.Length) * 4) * 1))))
+ b := 0
+
+ buf[b] = v.Status
+ b += 1
+
+ b += 5 // padding
+
+ xgb.Put16(buf[b:], v.Length)
+ b += 2
+
+ copy(buf[b:], v.Reason[:(int(v.Length)*4)])
+ b += xgb.Pad(int((int(v.Length) * 4)))
+
+ return buf
+}
+
+// Write struct list SetupAuthenticate
+func SetupAuthenticateListBytes(buf []byte, list []SetupAuthenticate) 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 SetupAuthenticate
+func SetupAuthenticateListSize(list []SetupAuthenticate) int {
+ size := 0
+ for _, item := range list {
+ size += (8 + xgb.Pad(((int(item.Length) * 4) * 1)))
+ }
+ return size
+}
+
+// 'SetupInfo' struct definition
+// Size: (((40 + xgb.Pad((int(VendorLen) * 1))) + xgb.Pad((int(PixmapFormatsLen) * 8))) + ScreenInfoListSize(Roots))
+type SetupInfo struct {
+ Status byte
+ // padding: 1 bytes
+ ProtocolMajorVersion uint16
+ ProtocolMinorVersion uint16
+ Length uint16
+ ReleaseNumber uint32
+ ResourceIdBase uint32
+ ResourceIdMask uint32
+ MotionBufferSize uint32
+ VendorLen uint16
+ MaximumRequestLength uint16
+ RootsLen byte
+ PixmapFormatsLen byte
+ ImageByteOrder byte
+ BitmapFormatBitOrder byte
+ BitmapFormatScanlineUnit byte
+ BitmapFormatScanlinePad byte
+ MinKeycode Keycode
+ MaxKeycode Keycode
+ // padding: 4 bytes
+ Vendor string // size: xgb.Pad((int(VendorLen) * 1))
+ PixmapFormats []Format // size: xgb.Pad((int(PixmapFormatsLen) * 8))
+ Roots []ScreenInfo // size: ScreenInfoListSize(Roots)
+}
+
+// Struct read SetupInfo
+func SetupInfoRead(buf []byte, v *SetupInfo) int {
+ b := 0
+
+ v.Status = buf[b]
+ b += 1
+
+ b += 1 // padding
+
+ v.ProtocolMajorVersion = xgb.Get16(buf[b:])
+ b += 2
+
+ v.ProtocolMinorVersion = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Length = xgb.Get16(buf[b:])
+ b += 2
+
+ v.ReleaseNumber = xgb.Get32(buf[b:])
+ b += 4
+
+ v.ResourceIdBase = xgb.Get32(buf[b:])
+ b += 4
+
+ v.ResourceIdMask = xgb.Get32(buf[b:])
+ b += 4
+
+ v.MotionBufferSize = xgb.Get32(buf[b:])
+ b += 4
+
+ v.VendorLen = xgb.Get16(buf[b:])
+ b += 2
+
+ v.MaximumRequestLength = xgb.Get16(buf[b:])
+ b += 2
+
+ v.RootsLen = buf[b]
+ b += 1
+
+ v.PixmapFormatsLen = buf[b]
+ b += 1
+
+ v.ImageByteOrder = buf[b]
+ b += 1
+
+ v.BitmapFormatBitOrder = buf[b]
+ b += 1
+
+ v.BitmapFormatScanlineUnit = buf[b]
+ b += 1
+
+ v.BitmapFormatScanlinePad = buf[b]
+ b += 1
+
+ v.MinKeycode = Keycode(buf[b])
+ b += 1
+
+ v.MaxKeycode = Keycode(buf[b])
+ b += 1
+
+ b += 4 // padding
+
+ {
+ byteString := make([]byte, v.VendorLen)
+ copy(byteString[:v.VendorLen], buf[b:])
+ v.Vendor = string(byteString)
+ b += xgb.Pad(int(v.VendorLen))
+ }
+
+ v.PixmapFormats = make([]Format, v.PixmapFormatsLen)
+ b += FormatReadList(buf[b:], v.PixmapFormats)
+
+ v.Roots = make([]ScreenInfo, v.RootsLen)
+ b += ScreenInfoReadList(buf[b:], v.Roots)
+
+ return b
+}
+
+// Struct list read SetupInfo
+func SetupInfoReadList(buf []byte, dest []SetupInfo) int {
+ b := 0
+ for i := 0; i < len(dest); i++ {
+ dest[i] = SetupInfo{}
+ b += SetupInfoRead(buf[b:], &dest[i])
+ }
+ return xgb.Pad(b)
+}
+
+// Struct write SetupInfo
+func (v SetupInfo) Bytes() []byte {
+ buf := make([]byte, (((40 + xgb.Pad((int(v.VendorLen) * 1))) + xgb.Pad((int(v.PixmapFormatsLen) * 8))) + ScreenInfoListSize(v.Roots)))
+ b := 0
+
+ buf[b] = v.Status
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], v.ProtocolMajorVersion)
+ b += 2
+
+ xgb.Put16(buf[b:], v.ProtocolMinorVersion)
+ b += 2
+
+ xgb.Put16(buf[b:], v.Length)
+ b += 2
+
+ xgb.Put32(buf[b:], v.ReleaseNumber)
+ b += 4
+
+ xgb.Put32(buf[b:], v.ResourceIdBase)
+ b += 4
+
+ xgb.Put32(buf[b:], v.ResourceIdMask)
+ b += 4
+
+ xgb.Put32(buf[b:], v.MotionBufferSize)
+ b += 4
+
+ xgb.Put16(buf[b:], v.VendorLen)
+ b += 2
+
+ xgb.Put16(buf[b:], v.MaximumRequestLength)
+ b += 2
+
+ buf[b] = v.RootsLen
+ b += 1
+
+ buf[b] = v.PixmapFormatsLen
+ b += 1
+
+ buf[b] = v.ImageByteOrder
+ b += 1
+
+ buf[b] = v.BitmapFormatBitOrder
+ b += 1
+
+ buf[b] = v.BitmapFormatScanlineUnit
+ b += 1
+
+ buf[b] = v.BitmapFormatScanlinePad
+ b += 1
+
+ buf[b] = byte(v.MinKeycode)
+ b += 1
+
+ buf[b] = byte(v.MaxKeycode)
+ b += 1
+
+ b += 4 // padding
+
+ copy(buf[b:], v.Vendor[:v.VendorLen])
+ b += xgb.Pad(int(v.VendorLen))
+
+ b += FormatListBytes(buf[b:], v.PixmapFormats)
+
+ b += ScreenInfoListBytes(buf[b:], v.Roots)
+
+ return buf
+}
+
+// Write struct list SetupInfo
+func SetupInfoListBytes(buf []byte, list []SetupInfo) 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 SetupInfo
+func SetupInfoListSize(list []SetupInfo) int {
+ size := 0
+ for _, item := range list {
+ size += (((40 + xgb.Pad((int(item.VendorLen) * 1))) + xgb.Pad((int(item.PixmapFormatsLen) * 8))) + ScreenInfoListSize(item.Roots))
+ }
+ return size
+}
+
+// 'Timecoord' struct definition
+// Size: 8
+type Timecoord struct {
+ Time Timestamp
+ X int16
+ Y int16
+}
+
+// Struct read Timecoord
+func TimecoordRead(buf []byte, v *Timecoord) int {
+ b := 0
+
+ v.Time = 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
+
+ return b
+}
+
+// Struct list read Timecoord
+func TimecoordReadList(buf []byte, dest []Timecoord) int {
+ b := 0
+ for i := 0; i < len(dest); i++ {
+ dest[i] = Timecoord{}
+ b += TimecoordRead(buf[b:], &dest[i])
+ }
+ return xgb.Pad(b)
+}
+
+// Struct write Timecoord
+func (v Timecoord) Bytes() []byte {
+ buf := make([]byte, 8)
+ b := 0
+
+ xgb.Put32(buf[b:], uint32(v.Time))
+ b += 4
+
+ xgb.Put16(buf[b:], uint16(v.X))
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(v.Y))
+ b += 2
+
+ return buf
+}
+
+// Write struct list Timecoord
+func TimecoordListBytes(buf []byte, list []Timecoord) int {
+ b := 0
+ var structBytes []byte
+ for _, item := range list {
+ structBytes = item.Bytes()
+ copy(buf[b:], structBytes)
+ b += xgb.Pad(len(structBytes))
+ }
+ return b
+}
+
+// 'Fontprop' struct definition
+// Size: 8
+type Fontprop struct {
+ Name Atom
+ Value uint32
+}
+
+// Struct read Fontprop
+func FontpropRead(buf []byte, v *Fontprop) int {
+ b := 0
+
+ v.Name = Atom(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Value = xgb.Get32(buf[b:])
+ b += 4
+
+ return b
+}
+
+// Struct list read Fontprop
+func FontpropReadList(buf []byte, dest []Fontprop) int {
+ b := 0
+ for i := 0; i < len(dest); i++ {
+ dest[i] = Fontprop{}
+ b += FontpropRead(buf[b:], &dest[i])
+ }
+ return xgb.Pad(b)
+}
+
+// Struct write Fontprop
+func (v Fontprop) Bytes() []byte {
+ buf := make([]byte, 8)
+ b := 0
+
+ xgb.Put32(buf[b:], uint32(v.Name))
+ b += 4
+
+ xgb.Put32(buf[b:], v.Value)
+ b += 4
+
+ return buf
+}
+
+// Write struct list Fontprop
+func FontpropListBytes(buf []byte, list []Fontprop) int {
+ b := 0
+ var structBytes []byte
+ for _, item := range list {
+ structBytes = item.Bytes()
+ copy(buf[b:], structBytes)
+ b += xgb.Pad(len(structBytes))
+ }
+ return b
+}
+
+// 'Charinfo' struct definition
+// Size: 12
+type Charinfo struct {
+ LeftSideBearing int16
+ RightSideBearing int16
+ CharacterWidth int16
+ Ascent int16
+ Descent int16
+ Attributes uint16
+}
+
+// Struct read Charinfo
+func CharinfoRead(buf []byte, v *Charinfo) int {
+ b := 0
+
+ v.LeftSideBearing = int16(xgb.Get16(buf[b:]))
+ b += 2
+
+ v.RightSideBearing = int16(xgb.Get16(buf[b:]))
+ b += 2
+
+ v.CharacterWidth = int16(xgb.Get16(buf[b:]))
+ b += 2
+
+ v.Ascent = int16(xgb.Get16(buf[b:]))
+ b += 2
+
+ v.Descent = int16(xgb.Get16(buf[b:]))
+ b += 2
+
+ v.Attributes = xgb.Get16(buf[b:])
+ b += 2
+
+ return b
+}
+
+// Struct list read Charinfo
+func CharinfoReadList(buf []byte, dest []Charinfo) int {
+ b := 0
+ for i := 0; i < len(dest); i++ {
+ dest[i] = Charinfo{}
+ b += CharinfoRead(buf[b:], &dest[i])
+ }
+ return xgb.Pad(b)
+}
+
+// Struct write Charinfo
+func (v Charinfo) Bytes() []byte {
+ buf := make([]byte, 12)
+ b := 0
+
+ xgb.Put16(buf[b:], uint16(v.LeftSideBearing))
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(v.RightSideBearing))
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(v.CharacterWidth))
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(v.Ascent))
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(v.Descent))
+ b += 2
+
+ xgb.Put16(buf[b:], v.Attributes)
+ b += 2
+
+ return buf
+}
+
+// Write struct list Charinfo
+func CharinfoListBytes(buf []byte, list []Charinfo) int {
+ b := 0
+ var structBytes []byte
+ for _, item := range list {
+ structBytes = item.Bytes()
+ copy(buf[b:], structBytes)
+ b += xgb.Pad(len(structBytes))
+ }
+ return b
+}
+
+// 'Str' struct definition
+// Size: (1 + xgb.Pad((int(NameLen) * 1)))
+type Str struct {
+ NameLen byte
+ Name string // size: xgb.Pad((int(NameLen) * 1))
+}
+
+// Struct read Str
+func StrRead(buf []byte, v *Str) int {
+ b := 0
+
+ v.NameLen = buf[b]
+ b += 1
+
+ {
+ byteString := make([]byte, v.NameLen)
+ copy(byteString[:v.NameLen], buf[b:])
+ v.Name = string(byteString)
+ b += xgb.Pad(int(v.NameLen))
+ }
+
+ return b
+}
+
+// Struct list read Str
+func StrReadList(buf []byte, dest []Str) int {
+ b := 0
+ for i := 0; i < len(dest); i++ {
+ dest[i] = Str{}
+ b += StrRead(buf[b:], &dest[i])
+ }
+ return xgb.Pad(b)
+}
+
+// Struct write Str
+func (v Str) Bytes() []byte {
+ buf := make([]byte, (1 + xgb.Pad((int(v.NameLen) * 1))))
+ b := 0
+
+ buf[b] = v.NameLen
+ b += 1
+
+ copy(buf[b:], v.Name[:v.NameLen])
+ b += xgb.Pad(int(v.NameLen))
+
+ return buf
+}
+
+// Write struct list Str
+func StrListBytes(buf []byte, list []Str) 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 Str
+func StrListSize(list []Str) int {
+ size := 0
+ for _, item := range list {
+ size += (1 + xgb.Pad((int(item.NameLen) * 1)))
+ }
+ return size
+}
+
+// 'Segment' struct definition
+// Size: 8
+type Segment struct {
+ X1 int16
+ Y1 int16
+ X2 int16
+ Y2 int16
+}
+
+// Struct read Segment
+func SegmentRead(buf []byte, v *Segment) int {
+ b := 0
+
+ v.X1 = int16(xgb.Get16(buf[b:]))
+ b += 2
+
+ v.Y1 = int16(xgb.Get16(buf[b:]))
+ b += 2
+
+ v.X2 = int16(xgb.Get16(buf[b:]))
+ b += 2
+
+ v.Y2 = int16(xgb.Get16(buf[b:]))
+ b += 2
+
+ return b
+}
+
+// Struct list read Segment
+func SegmentReadList(buf []byte, dest []Segment) int {
+ b := 0
+ for i := 0; i < len(dest); i++ {
+ dest[i] = Segment{}
+ b += SegmentRead(buf[b:], &dest[i])
+ }
+ return xgb.Pad(b)
+}
+
+// Struct write Segment
+func (v Segment) Bytes() []byte {
+ buf := make([]byte, 8)
+ b := 0
+
+ xgb.Put16(buf[b:], uint16(v.X1))
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(v.Y1))
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(v.X2))
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(v.Y2))
+ b += 2
+
+ return buf
+}
+
+// Write struct list Segment
+func SegmentListBytes(buf []byte, list []Segment) int {
+ b := 0
+ var structBytes []byte
+ for _, item := range list {
+ structBytes = item.Bytes()
+ copy(buf[b:], structBytes)
+ b += xgb.Pad(len(structBytes))
+ }
+ return b
+}
+
+// 'Coloritem' struct definition
+// Size: 12
+type Coloritem struct {
+ Pixel uint32
+ Red uint16
+ Green uint16
+ Blue uint16
+ Flags byte
+ // padding: 1 bytes
+}
+
+// Struct read Coloritem
+func ColoritemRead(buf []byte, v *Coloritem) int {
+ b := 0
+
+ v.Pixel = xgb.Get32(buf[b:])
+ b += 4
+
+ v.Red = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Green = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Blue = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Flags = buf[b]
+ b += 1
+
+ b += 1 // padding
+
+ return b
+}
+
+// Struct list read Coloritem
+func ColoritemReadList(buf []byte, dest []Coloritem) int {
+ b := 0
+ for i := 0; i < len(dest); i++ {
+ dest[i] = Coloritem{}
+ b += ColoritemRead(buf[b:], &dest[i])
+ }
+ return xgb.Pad(b)
+}
+
+// Struct write Coloritem
+func (v Coloritem) Bytes() []byte {
+ buf := make([]byte, 12)
+ b := 0
+
+ xgb.Put32(buf[b:], v.Pixel)
+ b += 4
+
+ xgb.Put16(buf[b:], v.Red)
+ b += 2
+
+ xgb.Put16(buf[b:], v.Green)
+ b += 2
+
+ xgb.Put16(buf[b:], v.Blue)
+ b += 2
+
+ buf[b] = v.Flags
+ b += 1
+
+ b += 1 // padding
+
+ return buf
+}
+
+// Write struct list Coloritem
+func ColoritemListBytes(buf []byte, list []Coloritem) int {
+ b := 0
+ var structBytes []byte
+ for _, item := range list {
+ structBytes = item.Bytes()
+ copy(buf[b:], structBytes)
+ b += xgb.Pad(len(structBytes))
+ }
+ return b
+}
+
+// 'Rgb' struct definition
+// Size: 8
+type Rgb struct {
+ Red uint16
+ Green uint16
+ Blue uint16
+ // padding: 2 bytes
+}
+
+// Struct read Rgb
+func RgbRead(buf []byte, v *Rgb) int {
+ b := 0
+
+ v.Red = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Green = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Blue = xgb.Get16(buf[b:])
+ b += 2
+
+ b += 2 // padding
+
+ return b
+}
+
+// Struct list read Rgb
+func RgbReadList(buf []byte, dest []Rgb) int {
+ b := 0
+ for i := 0; i < len(dest); i++ {
+ dest[i] = Rgb{}
+ b += RgbRead(buf[b:], &dest[i])
+ }
+ return xgb.Pad(b)
+}
+
+// Struct write Rgb
+func (v Rgb) Bytes() []byte {
+ buf := make([]byte, 8)
+ b := 0
+
+ xgb.Put16(buf[b:], v.Red)
+ b += 2
+
+ xgb.Put16(buf[b:], v.Green)
+ b += 2
+
+ xgb.Put16(buf[b:], v.Blue)
+ b += 2
+
+ b += 2 // padding
+
+ return buf
+}
+
+// Write struct list Rgb
+func RgbListBytes(buf []byte, list []Rgb) int {
+ b := 0
+ var structBytes []byte
+ for _, item := range list {
+ structBytes = item.Bytes()
+ copy(buf[b:], structBytes)
+ b += xgb.Pad(len(structBytes))
+ }
+ return b
+}
+
+// 'Host' struct definition
+// Size: (4 + xgb.Pad((int(AddressLen) * 1)))
+type Host struct {
+ Family byte
+ // padding: 1 bytes
+ AddressLen uint16
+ Address []byte // size: xgb.Pad((int(AddressLen) * 1))
+}
+
+// Struct read Host
+func HostRead(buf []byte, v *Host) int {
+ b := 0
+
+ v.Family = buf[b]
+ b += 1
+
+ b += 1 // padding
+
+ v.AddressLen = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Address = make([]byte, v.AddressLen)
+ copy(v.Address[:v.AddressLen], buf[b:])
+ b += xgb.Pad(int(v.AddressLen))
+
+ return b
+}
+
+// Struct list read Host
+func HostReadList(buf []byte, dest []Host) int {
+ b := 0
+ for i := 0; i < len(dest); i++ {
+ dest[i] = Host{}
+ b += HostRead(buf[b:], &dest[i])
+ }
+ return xgb.Pad(b)
+}
+
+// Struct write Host
+func (v Host) Bytes() []byte {
+ buf := make([]byte, (4 + xgb.Pad((int(v.AddressLen) * 1))))
+ b := 0
+
+ buf[b] = v.Family
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], v.AddressLen)
+ b += 2
+
+ copy(buf[b:], v.Address[:v.AddressLen])
+ b += xgb.Pad(int(v.AddressLen))
+
+ return buf
+}
+
+// Write struct list Host
+func HostListBytes(buf []byte, list []Host) 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 Host
+func HostListSize(list []Host) int {
+ size := 0
+ for _, item := range list {
+ size += (4 + xgb.Pad((int(item.AddressLen) * 1)))
+ }
+ return size
+}
+
+// Union definition ClientMessageDataUnion
+// 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 'ClientMessageDataUnion':
+// ClientMessageDataUnionData8New(Data8 []byte) ClientMessageDataUnion
+// ClientMessageDataUnionData16New(Data16 []uint16) ClientMessageDataUnion
+// ClientMessageDataUnionData32New(Data32 []uint32) ClientMessageDataUnion
+type ClientMessageDataUnion struct {
+ Data8 []byte // size: 20
+ Data16 []uint16 // size: 20
+ Data32 []uint32 // size: 20
+}
+
+// Union constructor for ClientMessageDataUnion for field Data8.
+func ClientMessageDataUnionData8New(Data8 []byte) ClientMessageDataUnion {
+ var b int
+ buf := make([]byte, 20)
+
+ copy(buf[b:], Data8[:20])
+ b += xgb.Pad(int(20))
+
+ // Create the Union type
+ v := ClientMessageDataUnion{}
+
+ // Now copy buf into all fields
+
+ b = 0 // always read the same bytes
+ v.Data8 = make([]byte, 20)
+ copy(v.Data8[:20], buf[b:])
+ b += xgb.Pad(int(20))
+
+ b = 0 // always read the same bytes
+ v.Data16 = make([]uint16, 10)
+ for i := 0; i < int(10); i++ {
+ v.Data16[i] = xgb.Get16(buf[b:])
+ b += 2
+ }
+ b = xgb.Pad(b)
+
+ b = 0 // always read the same bytes
+ v.Data32 = make([]uint32, 5)
+ for i := 0; i < int(5); i++ {
+ v.Data32[i] = xgb.Get32(buf[b:])
+ b += 4
+ }
+ b = xgb.Pad(b)
+
+ return v
+}
+
+// Union constructor for ClientMessageDataUnion for field Data16.
+func ClientMessageDataUnionData16New(Data16 []uint16) ClientMessageDataUnion {
+ var b int
+ buf := make([]byte, 20)
+
+ for i := 0; i < int(10); i++ {
+ xgb.Put16(buf[b:], Data16[i])
+ b += 2
+ }
+ b = xgb.Pad(b)
+
+ // Create the Union type
+ v := ClientMessageDataUnion{}
+
+ // Now copy buf into all fields
+
+ b = 0 // always read the same bytes
+ v.Data8 = make([]byte, 20)
+ copy(v.Data8[:20], buf[b:])
+ b += xgb.Pad(int(20))
+
+ b = 0 // always read the same bytes
+ v.Data16 = make([]uint16, 10)
+ for i := 0; i < int(10); i++ {
+ v.Data16[i] = xgb.Get16(buf[b:])
+ b += 2
+ }
+ b = xgb.Pad(b)
+
+ b = 0 // always read the same bytes
+ v.Data32 = make([]uint32, 5)
+ for i := 0; i < int(5); i++ {
+ v.Data32[i] = xgb.Get32(buf[b:])
+ b += 4
+ }
+ b = xgb.Pad(b)
+
+ return v
+}
+
+// Union constructor for ClientMessageDataUnion for field Data32.
+func ClientMessageDataUnionData32New(Data32 []uint32) ClientMessageDataUnion {
+ var b int
+ buf := make([]byte, 20)
+
+ for i := 0; i < int(5); i++ {
+ xgb.Put32(buf[b:], Data32[i])
+ b += 4
+ }
+ b = xgb.Pad(b)
+
+ // Create the Union type
+ v := ClientMessageDataUnion{}
+
+ // Now copy buf into all fields
+
+ b = 0 // always read the same bytes
+ v.Data8 = make([]byte, 20)
+ copy(v.Data8[:20], buf[b:])
+ b += xgb.Pad(int(20))
+
+ b = 0 // always read the same bytes
+ v.Data16 = make([]uint16, 10)
+ for i := 0; i < int(10); i++ {
+ v.Data16[i] = xgb.Get16(buf[b:])
+ b += 2
+ }
+ b = xgb.Pad(b)
+
+ b = 0 // always read the same bytes
+ v.Data32 = make([]uint32, 5)
+ for i := 0; i < int(5); i++ {
+ v.Data32[i] = xgb.Get32(buf[b:])
+ b += 4
+ }
+ b = xgb.Pad(b)
+
+ return v
+}
+
+// Union read ClientMessageDataUnion
+func ClientMessageDataUnionRead(buf []byte, v *ClientMessageDataUnion) int {
+ var b int
+
+ b = 0 // re-read the same bytes
+ v.Data8 = make([]byte, 20)
+ copy(v.Data8[:20], buf[b:])
+ b += xgb.Pad(int(20))
+
+ b = 0 // re-read the same bytes
+ v.Data16 = make([]uint16, 10)
+ for i := 0; i < int(10); i++ {
+ v.Data16[i] = xgb.Get16(buf[b:])
+ b += 2
+ }
+ b = xgb.Pad(b)
+
+ b = 0 // re-read the same bytes
+ v.Data32 = make([]uint32, 5)
+ for i := 0; i < int(5); i++ {
+ v.Data32[i] = xgb.Get32(buf[b:])
+ b += 4
+ }
+ b = xgb.Pad(b)
+
+ return 20
+}
+
+// Union list read ClientMessageDataUnion
+func ClientMessageDataUnionReadList(buf []byte, dest []ClientMessageDataUnion) int {
+ b := 0
+ for i := 0; i < len(dest); i++ {
+ dest[i] = ClientMessageDataUnion{}
+ b += ClientMessageDataUnionRead(buf[b:], &dest[i])
+ }
+ return xgb.Pad(b)
+}
+
+// Union write ClientMessageDataUnion
+// Each field in a union must contain the same data.
+// So simply pick the first field and write that to the wire.
+func (v ClientMessageDataUnion) Bytes() []byte {
+ buf := make([]byte, 20)
+ b := 0
+
+ copy(buf[b:], v.Data8[:20])
+ b += xgb.Pad(int(20))
+ return buf
+}
+
+// Union list write ClientMessageDataUnion
+func ClientMessageDataUnionListBytes(buf []byte, list []ClientMessageDataUnion) 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 KeyPress (2)
+// Size: 32
+
+const KeyPress = 2
+
+type KeyPressEvent struct {
+ Sequence uint16
+ Detail Keycode
+ Time Timestamp
+ Root Window
+ Event Window
+ Child Window
+ RootX int16
+ RootY int16
+ EventX int16
+ EventY int16
+ State uint16
+ SameScreen bool
+ // padding: 1 bytes
+}
+
+// Event read KeyPress
+func KeyPressEventNew(buf []byte) xgb.Event {
+ v := KeyPressEvent{}
+ b := 1 // don't read event number
+
+ v.Detail = Keycode(buf[b])
+ b += 1
+
+ v.Sequence = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Time = Timestamp(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Root = Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Event = Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Child = Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.RootX = int16(xgb.Get16(buf[b:]))
+ b += 2
+
+ v.RootY = int16(xgb.Get16(buf[b:]))
+ b += 2
+
+ v.EventX = int16(xgb.Get16(buf[b:]))
+ b += 2
+
+ v.EventY = int16(xgb.Get16(buf[b:]))
+ b += 2
+
+ v.State = xgb.Get16(buf[b:])
+ b += 2
+
+ if buf[b] == 1 {
+ v.SameScreen = true
+ } else {
+ v.SameScreen = false
+ }
+ b += 1
+
+ b += 1 // padding
+
+ return v
+}
+
+// Event write KeyPress
+func (v KeyPressEvent) Bytes() []byte {
+ buf := make([]byte, 32)
+ b := 0
+
+ // write event number
+ buf[b] = 2
+ b += 1
+
+ buf[b] = byte(v.Detail)
+ b += 1
+
+ b += 2 // skip sequence number
+
+ xgb.Put32(buf[b:], uint32(v.Time))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(v.Root))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(v.Event))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(v.Child))
+ b += 4
+
+ xgb.Put16(buf[b:], uint16(v.RootX))
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(v.RootY))
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(v.EventX))
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(v.EventY))
+ b += 2
+
+ xgb.Put16(buf[b:], v.State)
+ b += 2
+
+ if v.SameScreen {
+ buf[b] = 1
+ } else {
+ buf[b] = 0
+ }
+ b += 1
+
+ b += 1 // padding
+
+ return buf
+}
+
+func (v KeyPressEvent) ImplementsEvent() {}
+
+func (v KeyPressEvent) SequenceId() uint16 {
+ return v.Sequence
+}
+
+func (v KeyPressEvent) String() string {
+ fieldVals := make([]string, 0, 12)
+ fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", v.Sequence))
+ fieldVals = append(fieldVals, xgb.Sprintf("Detail: %d", v.Detail))
+ fieldVals = append(fieldVals, xgb.Sprintf("Time: %d", v.Time))
+ fieldVals = append(fieldVals, xgb.Sprintf("Root: %d", v.Root))
+ fieldVals = append(fieldVals, xgb.Sprintf("Event: %d", v.Event))
+ fieldVals = append(fieldVals, xgb.Sprintf("Child: %d", v.Child))
+ fieldVals = append(fieldVals, xgb.Sprintf("RootX: %d", v.RootX))
+ fieldVals = append(fieldVals, xgb.Sprintf("RootY: %d", v.RootY))
+ fieldVals = append(fieldVals, xgb.Sprintf("EventX: %d", v.EventX))
+ fieldVals = append(fieldVals, xgb.Sprintf("EventY: %d", v.EventY))
+ fieldVals = append(fieldVals, xgb.Sprintf("State: %d", v.State))
+ fieldVals = append(fieldVals, xgb.Sprintf("SameScreen: %t", v.SameScreen))
+ return "KeyPress {" + xgb.StringsJoin(fieldVals, ", ") + "}"
+}
+
+func init() {
+ xgb.NewEventFuncs[2] = KeyPressEventNew
+}
+
+// Event definition ButtonPress (4)
+// Size: 32
+
+const ButtonPress = 4
+
+type ButtonPressEvent struct {
+ Sequence uint16
+ Detail Button
+ Time Timestamp
+ Root Window
+ Event Window
+ Child Window
+ RootX int16
+ RootY int16
+ EventX int16
+ EventY int16
+ State uint16
+ SameScreen bool
+ // padding: 1 bytes
+}
+
+// Event read ButtonPress
+func ButtonPressEventNew(buf []byte) xgb.Event {
+ v := ButtonPressEvent{}
+ b := 1 // don't read event number
+
+ v.Detail = Button(buf[b])
+ b += 1
+
+ v.Sequence = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Time = Timestamp(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Root = Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Event = Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Child = Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.RootX = int16(xgb.Get16(buf[b:]))
+ b += 2
+
+ v.RootY = int16(xgb.Get16(buf[b:]))
+ b += 2
+
+ v.EventX = int16(xgb.Get16(buf[b:]))
+ b += 2
+
+ v.EventY = int16(xgb.Get16(buf[b:]))
+ b += 2
+
+ v.State = xgb.Get16(buf[b:])
+ b += 2
+
+ if buf[b] == 1 {
+ v.SameScreen = true
+ } else {
+ v.SameScreen = false
+ }
+ b += 1
+
+ b += 1 // padding
+
+ return v
+}
+
+// Event write ButtonPress
+func (v ButtonPressEvent) Bytes() []byte {
+ buf := make([]byte, 32)
+ b := 0
+
+ // write event number
+ buf[b] = 4
+ b += 1
+
+ buf[b] = byte(v.Detail)
+ b += 1
+
+ b += 2 // skip sequence number
+
+ xgb.Put32(buf[b:], uint32(v.Time))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(v.Root))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(v.Event))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(v.Child))
+ b += 4
+
+ xgb.Put16(buf[b:], uint16(v.RootX))
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(v.RootY))
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(v.EventX))
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(v.EventY))
+ b += 2
+
+ xgb.Put16(buf[b:], v.State)
+ b += 2
+
+ if v.SameScreen {
+ buf[b] = 1
+ } else {
+ buf[b] = 0
+ }
+ b += 1
+
+ b += 1 // padding
+
+ return buf
+}
+
+func (v ButtonPressEvent) ImplementsEvent() {}
+
+func (v ButtonPressEvent) SequenceId() uint16 {
+ return v.Sequence
+}
+
+func (v ButtonPressEvent) String() string {
+ fieldVals := make([]string, 0, 12)
+ fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", v.Sequence))
+ fieldVals = append(fieldVals, xgb.Sprintf("Detail: %d", v.Detail))
+ fieldVals = append(fieldVals, xgb.Sprintf("Time: %d", v.Time))
+ fieldVals = append(fieldVals, xgb.Sprintf("Root: %d", v.Root))
+ fieldVals = append(fieldVals, xgb.Sprintf("Event: %d", v.Event))
+ fieldVals = append(fieldVals, xgb.Sprintf("Child: %d", v.Child))
+ fieldVals = append(fieldVals, xgb.Sprintf("RootX: %d", v.RootX))
+ fieldVals = append(fieldVals, xgb.Sprintf("RootY: %d", v.RootY))
+ fieldVals = append(fieldVals, xgb.Sprintf("EventX: %d", v.EventX))
+ fieldVals = append(fieldVals, xgb.Sprintf("EventY: %d", v.EventY))
+ fieldVals = append(fieldVals, xgb.Sprintf("State: %d", v.State))
+ fieldVals = append(fieldVals, xgb.Sprintf("SameScreen: %t", v.SameScreen))
+ return "ButtonPress {" + xgb.StringsJoin(fieldVals, ", ") + "}"
+}
+
+func init() {
+ xgb.NewEventFuncs[4] = ButtonPressEventNew
+}
+
+// Event definition MotionNotify (6)
+// Size: 32
+
+const MotionNotify = 6
+
+type MotionNotifyEvent struct {
+ Sequence uint16
+ Detail byte
+ Time Timestamp
+ Root Window
+ Event Window
+ Child Window
+ RootX int16
+ RootY int16
+ EventX int16
+ EventY int16
+ State uint16
+ SameScreen bool
+ // padding: 1 bytes
+}
+
+// Event read MotionNotify
+func MotionNotifyEventNew(buf []byte) xgb.Event {
+ v := MotionNotifyEvent{}
+ b := 1 // don't read event number
+
+ v.Detail = buf[b]
+ b += 1
+
+ v.Sequence = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Time = Timestamp(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Root = Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Event = Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Child = Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.RootX = int16(xgb.Get16(buf[b:]))
+ b += 2
+
+ v.RootY = int16(xgb.Get16(buf[b:]))
+ b += 2
+
+ v.EventX = int16(xgb.Get16(buf[b:]))
+ b += 2
+
+ v.EventY = int16(xgb.Get16(buf[b:]))
+ b += 2
+
+ v.State = xgb.Get16(buf[b:])
+ b += 2
+
+ if buf[b] == 1 {
+ v.SameScreen = true
+ } else {
+ v.SameScreen = false
+ }
+ b += 1
+
+ b += 1 // padding
+
+ return v
+}
+
+// Event write MotionNotify
+func (v MotionNotifyEvent) Bytes() []byte {
+ buf := make([]byte, 32)
+ b := 0
+
+ // write event number
+ buf[b] = 6
+ b += 1
+
+ buf[b] = v.Detail
+ b += 1
+
+ b += 2 // skip sequence number
+
+ xgb.Put32(buf[b:], uint32(v.Time))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(v.Root))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(v.Event))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(v.Child))
+ b += 4
+
+ xgb.Put16(buf[b:], uint16(v.RootX))
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(v.RootY))
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(v.EventX))
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(v.EventY))
+ b += 2
+
+ xgb.Put16(buf[b:], v.State)
+ b += 2
+
+ if v.SameScreen {
+ buf[b] = 1
+ } else {
+ buf[b] = 0
+ }
+ b += 1
+
+ b += 1 // padding
+
+ return buf
+}
+
+func (v MotionNotifyEvent) ImplementsEvent() {}
+
+func (v MotionNotifyEvent) SequenceId() uint16 {
+ return v.Sequence
+}
+
+func (v MotionNotifyEvent) String() string {
+ fieldVals := make([]string, 0, 12)
+ fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", v.Sequence))
+ fieldVals = append(fieldVals, xgb.Sprintf("Detail: %d", v.Detail))
+ fieldVals = append(fieldVals, xgb.Sprintf("Time: %d", v.Time))
+ fieldVals = append(fieldVals, xgb.Sprintf("Root: %d", v.Root))
+ fieldVals = append(fieldVals, xgb.Sprintf("Event: %d", v.Event))
+ fieldVals = append(fieldVals, xgb.Sprintf("Child: %d", v.Child))
+ fieldVals = append(fieldVals, xgb.Sprintf("RootX: %d", v.RootX))
+ fieldVals = append(fieldVals, xgb.Sprintf("RootY: %d", v.RootY))
+ fieldVals = append(fieldVals, xgb.Sprintf("EventX: %d", v.EventX))
+ fieldVals = append(fieldVals, xgb.Sprintf("EventY: %d", v.EventY))
+ fieldVals = append(fieldVals, xgb.Sprintf("State: %d", v.State))
+ fieldVals = append(fieldVals, xgb.Sprintf("SameScreen: %t", v.SameScreen))
+ return "MotionNotify {" + xgb.StringsJoin(fieldVals, ", ") + "}"
+}
+
+func init() {
+ xgb.NewEventFuncs[6] = MotionNotifyEventNew
+}
+
+// Event definition EnterNotify (7)
+// Size: 32
+
+const EnterNotify = 7
+
+type EnterNotifyEvent struct {
+ Sequence uint16
+ Detail byte
+ Time Timestamp
+ Root Window
+ Event Window
+ Child Window
+ RootX int16
+ RootY int16
+ EventX int16
+ EventY int16
+ State uint16
+ Mode byte
+ SameScreenFocus byte
+}
+
+// Event read EnterNotify
+func EnterNotifyEventNew(buf []byte) xgb.Event {
+ v := EnterNotifyEvent{}
+ b := 1 // don't read event number
+
+ v.Detail = buf[b]
+ b += 1
+
+ v.Sequence = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Time = Timestamp(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Root = Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Event = Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Child = Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.RootX = int16(xgb.Get16(buf[b:]))
+ b += 2
+
+ v.RootY = int16(xgb.Get16(buf[b:]))
+ b += 2
+
+ v.EventX = int16(xgb.Get16(buf[b:]))
+ b += 2
+
+ v.EventY = int16(xgb.Get16(buf[b:]))
+ b += 2
+
+ v.State = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Mode = buf[b]
+ b += 1
+
+ v.SameScreenFocus = buf[b]
+ b += 1
+
+ return v
+}
+
+// Event write EnterNotify
+func (v EnterNotifyEvent) Bytes() []byte {
+ buf := make([]byte, 32)
+ b := 0
+
+ // write event number
+ buf[b] = 7
+ b += 1
+
+ buf[b] = v.Detail
+ b += 1
+
+ b += 2 // skip sequence number
+
+ xgb.Put32(buf[b:], uint32(v.Time))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(v.Root))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(v.Event))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(v.Child))
+ b += 4
+
+ xgb.Put16(buf[b:], uint16(v.RootX))
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(v.RootY))
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(v.EventX))
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(v.EventY))
+ b += 2
+
+ xgb.Put16(buf[b:], v.State)
+ b += 2
+
+ buf[b] = v.Mode
+ b += 1
+
+ buf[b] = v.SameScreenFocus
+ b += 1
+
+ return buf
+}
+
+func (v EnterNotifyEvent) ImplementsEvent() {}
+
+func (v EnterNotifyEvent) SequenceId() uint16 {
+ return v.Sequence
+}
+
+func (v EnterNotifyEvent) String() string {
+ fieldVals := make([]string, 0, 12)
+ fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", v.Sequence))
+ fieldVals = append(fieldVals, xgb.Sprintf("Detail: %d", v.Detail))
+ fieldVals = append(fieldVals, xgb.Sprintf("Time: %d", v.Time))
+ fieldVals = append(fieldVals, xgb.Sprintf("Root: %d", v.Root))
+ fieldVals = append(fieldVals, xgb.Sprintf("Event: %d", v.Event))
+ fieldVals = append(fieldVals, xgb.Sprintf("Child: %d", v.Child))
+ fieldVals = append(fieldVals, xgb.Sprintf("RootX: %d", v.RootX))
+ fieldVals = append(fieldVals, xgb.Sprintf("RootY: %d", v.RootY))
+ fieldVals = append(fieldVals, xgb.Sprintf("EventX: %d", v.EventX))
+ fieldVals = append(fieldVals, xgb.Sprintf("EventY: %d", v.EventY))
+ fieldVals = append(fieldVals, xgb.Sprintf("State: %d", v.State))
+ fieldVals = append(fieldVals, xgb.Sprintf("Mode: %d", v.Mode))
+ fieldVals = append(fieldVals, xgb.Sprintf("SameScreenFocus: %d", v.SameScreenFocus))
+ return "EnterNotify {" + xgb.StringsJoin(fieldVals, ", ") + "}"
+}
+
+func init() {
+ xgb.NewEventFuncs[7] = EnterNotifyEventNew
+}
+
+// Event definition FocusIn (9)
+// Size: 32
+
+const FocusIn = 9
+
+type FocusInEvent struct {
+ Sequence uint16
+ Detail byte
+ Event Window
+ Mode byte
+ // padding: 3 bytes
+}
+
+// Event read FocusIn
+func FocusInEventNew(buf []byte) xgb.Event {
+ v := FocusInEvent{}
+ b := 1 // don't read event number
+
+ v.Detail = buf[b]
+ b += 1
+
+ v.Sequence = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Event = Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Mode = buf[b]
+ b += 1
+
+ b += 3 // padding
+
+ return v
+}
+
+// Event write FocusIn
+func (v FocusInEvent) Bytes() []byte {
+ buf := make([]byte, 32)
+ b := 0
+
+ // write event number
+ buf[b] = 9
+ b += 1
+
+ buf[b] = v.Detail
+ b += 1
+
+ b += 2 // skip sequence number
+
+ xgb.Put32(buf[b:], uint32(v.Event))
+ b += 4
+
+ buf[b] = v.Mode
+ b += 1
+
+ b += 3 // padding
+
+ return buf
+}
+
+func (v FocusInEvent) ImplementsEvent() {}
+
+func (v FocusInEvent) SequenceId() uint16 {
+ return v.Sequence
+}
+
+func (v FocusInEvent) String() string {
+ fieldVals := make([]string, 0, 4)
+ fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", v.Sequence))
+ fieldVals = append(fieldVals, xgb.Sprintf("Detail: %d", v.Detail))
+ fieldVals = append(fieldVals, xgb.Sprintf("Event: %d", v.Event))
+ fieldVals = append(fieldVals, xgb.Sprintf("Mode: %d", v.Mode))
+ return "FocusIn {" + xgb.StringsJoin(fieldVals, ", ") + "}"
+}
+
+func init() {
+ xgb.NewEventFuncs[9] = FocusInEventNew
+}
+
+// Event definition KeymapNotify (11)
+// Size: 32
+
+const KeymapNotify = 11
+
+type KeymapNotifyEvent struct {
+ Keys []byte // size: 32
+}
+
+// Event read KeymapNotify
+func KeymapNotifyEventNew(buf []byte) xgb.Event {
+ v := KeymapNotifyEvent{}
+ b := 1 // don't read event number
+
+ v.Keys = make([]byte, 31)
+ copy(v.Keys[:31], buf[b:])
+ b += xgb.Pad(int(31))
+
+ return v
+}
+
+// Event write KeymapNotify
+func (v KeymapNotifyEvent) Bytes() []byte {
+ buf := make([]byte, 32)
+ b := 0
+
+ // write event number
+ buf[b] = 11
+ b += 1
+
+ copy(buf[b:], v.Keys[:31])
+ b += xgb.Pad(int(31))
+
+ return buf
+}
+
+func (v KeymapNotifyEvent) ImplementsEvent() {}
+
+func (v KeymapNotifyEvent) SequenceId() uint16 {
+ return uint16(0)
+}
+
+func (v KeymapNotifyEvent) String() string {
+ fieldVals := make([]string, 0, 1)
+ return "KeymapNotify {" + xgb.StringsJoin(fieldVals, ", ") + "}"
+}
+
+func init() {
+ xgb.NewEventFuncs[11] = KeymapNotifyEventNew
+}
+
+// Event definition Expose (12)
+// Size: 32
+
+const Expose = 12
+
+type ExposeEvent struct {
+ Sequence uint16
+ // padding: 1 bytes
+ Window Window
+ X uint16
+ Y uint16
+ Width uint16
+ Height uint16
+ Count uint16
+ // padding: 2 bytes
+}
+
+// Event read Expose
+func ExposeEventNew(buf []byte) xgb.Event {
+ v := ExposeEvent{}
+ b := 1 // don't read event number
+
+ b += 1 // padding
+
+ v.Sequence = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Window = Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.X = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Y = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Width = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Height = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Count = xgb.Get16(buf[b:])
+ b += 2
+
+ b += 2 // padding
+
+ return v
+}
+
+// Event write Expose
+func (v ExposeEvent) Bytes() []byte {
+ buf := make([]byte, 32)
+ b := 0
+
+ // write event number
+ buf[b] = 12
+ b += 1
+
+ b += 1 // padding
+
+ b += 2 // skip sequence number
+
+ xgb.Put32(buf[b:], uint32(v.Window))
+ b += 4
+
+ xgb.Put16(buf[b:], v.X)
+ b += 2
+
+ xgb.Put16(buf[b:], v.Y)
+ b += 2
+
+ xgb.Put16(buf[b:], v.Width)
+ b += 2
+
+ xgb.Put16(buf[b:], v.Height)
+ b += 2
+
+ xgb.Put16(buf[b:], v.Count)
+ b += 2
+
+ b += 2 // padding
+
+ return buf
+}
+
+func (v ExposeEvent) ImplementsEvent() {}
+
+func (v ExposeEvent) SequenceId() uint16 {
+ return v.Sequence
+}
+
+func (v ExposeEvent) String() string {
+ fieldVals := make([]string, 0, 8)
+ fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", v.Sequence))
+ fieldVals = append(fieldVals, xgb.Sprintf("Window: %d", v.Window))
+ fieldVals = append(fieldVals, xgb.Sprintf("X: %d", v.X))
+ fieldVals = append(fieldVals, xgb.Sprintf("Y: %d", v.Y))
+ fieldVals = append(fieldVals, xgb.Sprintf("Width: %d", v.Width))
+ fieldVals = append(fieldVals, xgb.Sprintf("Height: %d", v.Height))
+ fieldVals = append(fieldVals, xgb.Sprintf("Count: %d", v.Count))
+ return "Expose {" + xgb.StringsJoin(fieldVals, ", ") + "}"
+}
+
+func init() {
+ xgb.NewEventFuncs[12] = ExposeEventNew
+}
+
+// Event definition GraphicsExposure (13)
+// Size: 32
+
+const GraphicsExposure = 13
+
+type GraphicsExposureEvent struct {
+ Sequence uint16
+ // padding: 1 bytes
+ Drawable Drawable
+ X uint16
+ Y uint16
+ Width uint16
+ Height uint16
+ MinorOpcode uint16
+ Count uint16
+ MajorOpcode byte
+ // padding: 3 bytes
+}
+
+// Event read GraphicsExposure
+func GraphicsExposureEventNew(buf []byte) xgb.Event {
+ v := GraphicsExposureEvent{}
+ b := 1 // don't read event number
+
+ b += 1 // padding
+
+ v.Sequence = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Drawable = Drawable(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.X = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Y = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Width = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Height = xgb.Get16(buf[b:])
+ b += 2
+
+ v.MinorOpcode = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Count = xgb.Get16(buf[b:])
+ b += 2
+
+ v.MajorOpcode = buf[b]
+ b += 1
+
+ b += 3 // padding
+
+ return v
+}
+
+// Event write GraphicsExposure
+func (v GraphicsExposureEvent) Bytes() []byte {
+ buf := make([]byte, 32)
+ b := 0
+
+ // write event number
+ buf[b] = 13
+ b += 1
+
+ b += 1 // padding
+
+ b += 2 // skip sequence number
+
+ xgb.Put32(buf[b:], uint32(v.Drawable))
+ b += 4
+
+ xgb.Put16(buf[b:], v.X)
+ b += 2
+
+ xgb.Put16(buf[b:], v.Y)
+ b += 2
+
+ xgb.Put16(buf[b:], v.Width)
+ b += 2
+
+ xgb.Put16(buf[b:], v.Height)
+ b += 2
+
+ xgb.Put16(buf[b:], v.MinorOpcode)
+ b += 2
+
+ xgb.Put16(buf[b:], v.Count)
+ b += 2
+
+ buf[b] = v.MajorOpcode
+ b += 1
+
+ b += 3 // padding
+
+ return buf
+}
+
+func (v GraphicsExposureEvent) ImplementsEvent() {}
+
+func (v GraphicsExposureEvent) SequenceId() uint16 {
+ return v.Sequence
+}
+
+func (v GraphicsExposureEvent) String() string {
+ fieldVals := make([]string, 0, 10)
+ fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", v.Sequence))
+ fieldVals = append(fieldVals, xgb.Sprintf("Drawable: %d", v.Drawable))
+ fieldVals = append(fieldVals, xgb.Sprintf("X: %d", v.X))
+ fieldVals = append(fieldVals, xgb.Sprintf("Y: %d", v.Y))
+ fieldVals = append(fieldVals, xgb.Sprintf("Width: %d", v.Width))
+ fieldVals = append(fieldVals, xgb.Sprintf("Height: %d", v.Height))
+ fieldVals = append(fieldVals, xgb.Sprintf("MinorOpcode: %d", v.MinorOpcode))
+ fieldVals = append(fieldVals, xgb.Sprintf("Count: %d", v.Count))
+ fieldVals = append(fieldVals, xgb.Sprintf("MajorOpcode: %d", v.MajorOpcode))
+ return "GraphicsExposure {" + xgb.StringsJoin(fieldVals, ", ") + "}"
+}
+
+func init() {
+ xgb.NewEventFuncs[13] = GraphicsExposureEventNew
+}
+
+// Event definition NoExposure (14)
+// Size: 32
+
+const NoExposure = 14
+
+type NoExposureEvent struct {
+ Sequence uint16
+ // padding: 1 bytes
+ Drawable Drawable
+ MinorOpcode uint16
+ MajorOpcode byte
+ // padding: 1 bytes
+}
+
+// Event read NoExposure
+func NoExposureEventNew(buf []byte) xgb.Event {
+ v := NoExposureEvent{}
+ b := 1 // don't read event number
+
+ b += 1 // padding
+
+ v.Sequence = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Drawable = Drawable(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.MinorOpcode = xgb.Get16(buf[b:])
+ b += 2
+
+ v.MajorOpcode = buf[b]
+ b += 1
+
+ b += 1 // padding
+
+ return v
+}
+
+// Event write NoExposure
+func (v NoExposureEvent) Bytes() []byte {
+ buf := make([]byte, 32)
+ b := 0
+
+ // write event number
+ buf[b] = 14
+ b += 1
+
+ b += 1 // padding
+
+ b += 2 // skip sequence number
+
+ xgb.Put32(buf[b:], uint32(v.Drawable))
+ b += 4
+
+ xgb.Put16(buf[b:], v.MinorOpcode)
+ b += 2
+
+ buf[b] = v.MajorOpcode
+ b += 1
+
+ b += 1 // padding
+
+ return buf
+}
+
+func (v NoExposureEvent) ImplementsEvent() {}
+
+func (v NoExposureEvent) SequenceId() uint16 {
+ return v.Sequence
+}
+
+func (v NoExposureEvent) String() string {
+ fieldVals := make([]string, 0, 5)
+ fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", v.Sequence))
+ fieldVals = append(fieldVals, xgb.Sprintf("Drawable: %d", v.Drawable))
+ fieldVals = append(fieldVals, xgb.Sprintf("MinorOpcode: %d", v.MinorOpcode))
+ fieldVals = append(fieldVals, xgb.Sprintf("MajorOpcode: %d", v.MajorOpcode))
+ return "NoExposure {" + xgb.StringsJoin(fieldVals, ", ") + "}"
+}
+
+func init() {
+ xgb.NewEventFuncs[14] = NoExposureEventNew
+}
+
+// Event definition VisibilityNotify (15)
+// Size: 32
+
+const VisibilityNotify = 15
+
+type VisibilityNotifyEvent struct {
+ Sequence uint16
+ // padding: 1 bytes
+ Window Window
+ State byte
+ // padding: 3 bytes
+}
+
+// Event read VisibilityNotify
+func VisibilityNotifyEventNew(buf []byte) xgb.Event {
+ v := VisibilityNotifyEvent{}
+ b := 1 // don't read event number
+
+ b += 1 // padding
+
+ v.Sequence = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Window = Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.State = buf[b]
+ b += 1
+
+ b += 3 // padding
+
+ return v
+}
+
+// Event write VisibilityNotify
+func (v VisibilityNotifyEvent) Bytes() []byte {
+ buf := make([]byte, 32)
+ b := 0
+
+ // write event number
+ buf[b] = 15
+ b += 1
+
+ b += 1 // padding
+
+ b += 2 // skip sequence number
+
+ xgb.Put32(buf[b:], uint32(v.Window))
+ b += 4
+
+ buf[b] = v.State
+ b += 1
+
+ b += 3 // padding
+
+ return buf
+}
+
+func (v VisibilityNotifyEvent) ImplementsEvent() {}
+
+func (v VisibilityNotifyEvent) SequenceId() uint16 {
+ return v.Sequence
+}
+
+func (v VisibilityNotifyEvent) String() string {
+ fieldVals := make([]string, 0, 4)
+ fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", v.Sequence))
+ fieldVals = append(fieldVals, xgb.Sprintf("Window: %d", v.Window))
+ fieldVals = append(fieldVals, xgb.Sprintf("State: %d", v.State))
+ return "VisibilityNotify {" + xgb.StringsJoin(fieldVals, ", ") + "}"
+}
+
+func init() {
+ xgb.NewEventFuncs[15] = VisibilityNotifyEventNew
+}
+
+// Event definition CreateNotify (16)
+// Size: 32
+
+const CreateNotify = 16
+
+type CreateNotifyEvent struct {
+ Sequence uint16
+ // padding: 1 bytes
+ Parent Window
+ Window Window
+ X int16
+ Y int16
+ Width uint16
+ Height uint16
+ BorderWidth uint16
+ OverrideRedirect bool
+ // padding: 1 bytes
+}
+
+// Event read CreateNotify
+func CreateNotifyEventNew(buf []byte) xgb.Event {
+ v := CreateNotifyEvent{}
+ b := 1 // don't read event number
+
+ b += 1 // padding
+
+ v.Sequence = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Parent = Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Window = Window(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.BorderWidth = xgb.Get16(buf[b:])
+ b += 2
+
+ if buf[b] == 1 {
+ v.OverrideRedirect = true
+ } else {
+ v.OverrideRedirect = false
+ }
+ b += 1
+
+ b += 1 // padding
+
+ return v
+}
+
+// Event write CreateNotify
+func (v CreateNotifyEvent) Bytes() []byte {
+ buf := make([]byte, 32)
+ b := 0
+
+ // write event number
+ buf[b] = 16
+ b += 1
+
+ b += 1 // padding
+
+ b += 2 // skip sequence number
+
+ xgb.Put32(buf[b:], uint32(v.Parent))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(v.Window))
+ b += 4
+
+ 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
+
+ xgb.Put16(buf[b:], v.BorderWidth)
+ b += 2
+
+ if v.OverrideRedirect {
+ buf[b] = 1
+ } else {
+ buf[b] = 0
+ }
+ b += 1
+
+ b += 1 // padding
+
+ return buf
+}
+
+func (v CreateNotifyEvent) ImplementsEvent() {}
+
+func (v CreateNotifyEvent) SequenceId() uint16 {
+ return v.Sequence
+}
+
+func (v CreateNotifyEvent) String() string {
+ fieldVals := make([]string, 0, 10)
+ fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", v.Sequence))
+ fieldVals = append(fieldVals, xgb.Sprintf("Parent: %d", v.Parent))
+ fieldVals = append(fieldVals, xgb.Sprintf("Window: %d", v.Window))
+ fieldVals = append(fieldVals, xgb.Sprintf("X: %d", v.X))
+ fieldVals = append(fieldVals, xgb.Sprintf("Y: %d", v.Y))
+ fieldVals = append(fieldVals, xgb.Sprintf("Width: %d", v.Width))
+ fieldVals = append(fieldVals, xgb.Sprintf("Height: %d", v.Height))
+ fieldVals = append(fieldVals, xgb.Sprintf("BorderWidth: %d", v.BorderWidth))
+ fieldVals = append(fieldVals, xgb.Sprintf("OverrideRedirect: %t", v.OverrideRedirect))
+ return "CreateNotify {" + xgb.StringsJoin(fieldVals, ", ") + "}"
+}
+
+func init() {
+ xgb.NewEventFuncs[16] = CreateNotifyEventNew
+}
+
+// Event definition DestroyNotify (17)
+// Size: 32
+
+const DestroyNotify = 17
+
+type DestroyNotifyEvent struct {
+ Sequence uint16
+ // padding: 1 bytes
+ Event Window
+ Window Window
+}
+
+// Event read DestroyNotify
+func DestroyNotifyEventNew(buf []byte) xgb.Event {
+ v := DestroyNotifyEvent{}
+ b := 1 // don't read event number
+
+ b += 1 // padding
+
+ v.Sequence = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Event = Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Window = Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ return v
+}
+
+// Event write DestroyNotify
+func (v DestroyNotifyEvent) Bytes() []byte {
+ buf := make([]byte, 32)
+ b := 0
+
+ // write event number
+ buf[b] = 17
+ b += 1
+
+ b += 1 // padding
+
+ b += 2 // skip sequence number
+
+ xgb.Put32(buf[b:], uint32(v.Event))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(v.Window))
+ b += 4
+
+ return buf
+}
+
+func (v DestroyNotifyEvent) ImplementsEvent() {}
+
+func (v DestroyNotifyEvent) SequenceId() uint16 {
+ return v.Sequence
+}
+
+func (v DestroyNotifyEvent) String() string {
+ fieldVals := make([]string, 0, 3)
+ fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", v.Sequence))
+ fieldVals = append(fieldVals, xgb.Sprintf("Event: %d", v.Event))
+ fieldVals = append(fieldVals, xgb.Sprintf("Window: %d", v.Window))
+ return "DestroyNotify {" + xgb.StringsJoin(fieldVals, ", ") + "}"
+}
+
+func init() {
+ xgb.NewEventFuncs[17] = DestroyNotifyEventNew
+}
+
+// Event definition UnmapNotify (18)
+// Size: 32
+
+const UnmapNotify = 18
+
+type UnmapNotifyEvent struct {
+ Sequence uint16
+ // padding: 1 bytes
+ Event Window
+ Window Window
+ FromConfigure bool
+ // padding: 3 bytes
+}
+
+// Event read UnmapNotify
+func UnmapNotifyEventNew(buf []byte) xgb.Event {
+ v := UnmapNotifyEvent{}
+ b := 1 // don't read event number
+
+ b += 1 // padding
+
+ v.Sequence = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Event = Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Window = Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ if buf[b] == 1 {
+ v.FromConfigure = true
+ } else {
+ v.FromConfigure = false
+ }
+ b += 1
+
+ b += 3 // padding
+
+ return v
+}
+
+// Event write UnmapNotify
+func (v UnmapNotifyEvent) Bytes() []byte {
+ buf := make([]byte, 32)
+ b := 0
+
+ // write event number
+ buf[b] = 18
+ b += 1
+
+ b += 1 // padding
+
+ b += 2 // skip sequence number
+
+ xgb.Put32(buf[b:], uint32(v.Event))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(v.Window))
+ b += 4
+
+ if v.FromConfigure {
+ buf[b] = 1
+ } else {
+ buf[b] = 0
+ }
+ b += 1
+
+ b += 3 // padding
+
+ return buf
+}
+
+func (v UnmapNotifyEvent) ImplementsEvent() {}
+
+func (v UnmapNotifyEvent) SequenceId() uint16 {
+ return v.Sequence
+}
+
+func (v UnmapNotifyEvent) String() string {
+ fieldVals := make([]string, 0, 5)
+ fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", v.Sequence))
+ fieldVals = append(fieldVals, xgb.Sprintf("Event: %d", v.Event))
+ fieldVals = append(fieldVals, xgb.Sprintf("Window: %d", v.Window))
+ fieldVals = append(fieldVals, xgb.Sprintf("FromConfigure: %t", v.FromConfigure))
+ return "UnmapNotify {" + xgb.StringsJoin(fieldVals, ", ") + "}"
+}
+
+func init() {
+ xgb.NewEventFuncs[18] = UnmapNotifyEventNew
+}
+
+// Event definition MapNotify (19)
+// Size: 32
+
+const MapNotify = 19
+
+type MapNotifyEvent struct {
+ Sequence uint16
+ // padding: 1 bytes
+ Event Window
+ Window Window
+ OverrideRedirect bool
+ // padding: 3 bytes
+}
+
+// Event read MapNotify
+func MapNotifyEventNew(buf []byte) xgb.Event {
+ v := MapNotifyEvent{}
+ b := 1 // don't read event number
+
+ b += 1 // padding
+
+ v.Sequence = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Event = Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Window = Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ if buf[b] == 1 {
+ v.OverrideRedirect = true
+ } else {
+ v.OverrideRedirect = false
+ }
+ b += 1
+
+ b += 3 // padding
+
+ return v
+}
+
+// Event write MapNotify
+func (v MapNotifyEvent) Bytes() []byte {
+ buf := make([]byte, 32)
+ b := 0
+
+ // write event number
+ buf[b] = 19
+ b += 1
+
+ b += 1 // padding
+
+ b += 2 // skip sequence number
+
+ xgb.Put32(buf[b:], uint32(v.Event))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(v.Window))
+ b += 4
+
+ if v.OverrideRedirect {
+ buf[b] = 1
+ } else {
+ buf[b] = 0
+ }
+ b += 1
+
+ b += 3 // padding
+
+ return buf
+}
+
+func (v MapNotifyEvent) ImplementsEvent() {}
+
+func (v MapNotifyEvent) SequenceId() uint16 {
+ return v.Sequence
+}
+
+func (v MapNotifyEvent) String() string {
+ fieldVals := make([]string, 0, 5)
+ fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", v.Sequence))
+ fieldVals = append(fieldVals, xgb.Sprintf("Event: %d", v.Event))
+ fieldVals = append(fieldVals, xgb.Sprintf("Window: %d", v.Window))
+ fieldVals = append(fieldVals, xgb.Sprintf("OverrideRedirect: %t", v.OverrideRedirect))
+ return "MapNotify {" + xgb.StringsJoin(fieldVals, ", ") + "}"
+}
+
+func init() {
+ xgb.NewEventFuncs[19] = MapNotifyEventNew
+}
+
+// Event definition MapRequest (20)
+// Size: 32
+
+const MapRequest = 20
+
+type MapRequestEvent struct {
+ Sequence uint16
+ // padding: 1 bytes
+ Parent Window
+ Window Window
+}
+
+// Event read MapRequest
+func MapRequestEventNew(buf []byte) xgb.Event {
+ v := MapRequestEvent{}
+ b := 1 // don't read event number
+
+ b += 1 // padding
+
+ v.Sequence = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Parent = Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Window = Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ return v
+}
+
+// Event write MapRequest
+func (v MapRequestEvent) Bytes() []byte {
+ buf := make([]byte, 32)
+ b := 0
+
+ // write event number
+ buf[b] = 20
+ b += 1
+
+ b += 1 // padding
+
+ b += 2 // skip sequence number
+
+ xgb.Put32(buf[b:], uint32(v.Parent))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(v.Window))
+ b += 4
+
+ return buf
+}
+
+func (v MapRequestEvent) ImplementsEvent() {}
+
+func (v MapRequestEvent) SequenceId() uint16 {
+ return v.Sequence
+}
+
+func (v MapRequestEvent) String() string {
+ fieldVals := make([]string, 0, 3)
+ fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", v.Sequence))
+ fieldVals = append(fieldVals, xgb.Sprintf("Parent: %d", v.Parent))
+ fieldVals = append(fieldVals, xgb.Sprintf("Window: %d", v.Window))
+ return "MapRequest {" + xgb.StringsJoin(fieldVals, ", ") + "}"
+}
+
+func init() {
+ xgb.NewEventFuncs[20] = MapRequestEventNew
+}
+
+// Event definition ReparentNotify (21)
+// Size: 32
+
+const ReparentNotify = 21
+
+type ReparentNotifyEvent struct {
+ Sequence uint16
+ // padding: 1 bytes
+ Event Window
+ Window Window
+ Parent Window
+ X int16
+ Y int16
+ OverrideRedirect bool
+ // padding: 3 bytes
+}
+
+// Event read ReparentNotify
+func ReparentNotifyEventNew(buf []byte) xgb.Event {
+ v := ReparentNotifyEvent{}
+ b := 1 // don't read event number
+
+ b += 1 // padding
+
+ v.Sequence = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Event = Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Window = Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Parent = Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.X = int16(xgb.Get16(buf[b:]))
+ b += 2
+
+ v.Y = int16(xgb.Get16(buf[b:]))
+ b += 2
+
+ if buf[b] == 1 {
+ v.OverrideRedirect = true
+ } else {
+ v.OverrideRedirect = false
+ }
+ b += 1
+
+ b += 3 // padding
+
+ return v
+}
+
+// Event write ReparentNotify
+func (v ReparentNotifyEvent) Bytes() []byte {
+ buf := make([]byte, 32)
+ b := 0
+
+ // write event number
+ buf[b] = 21
+ b += 1
+
+ b += 1 // padding
+
+ b += 2 // skip sequence number
+
+ xgb.Put32(buf[b:], uint32(v.Event))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(v.Window))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(v.Parent))
+ b += 4
+
+ xgb.Put16(buf[b:], uint16(v.X))
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(v.Y))
+ b += 2
+
+ if v.OverrideRedirect {
+ buf[b] = 1
+ } else {
+ buf[b] = 0
+ }
+ b += 1
+
+ b += 3 // padding
+
+ return buf
+}
+
+func (v ReparentNotifyEvent) ImplementsEvent() {}
+
+func (v ReparentNotifyEvent) SequenceId() uint16 {
+ return v.Sequence
+}
+
+func (v ReparentNotifyEvent) String() string {
+ fieldVals := make([]string, 0, 8)
+ fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", v.Sequence))
+ fieldVals = append(fieldVals, xgb.Sprintf("Event: %d", v.Event))
+ fieldVals = append(fieldVals, xgb.Sprintf("Window: %d", v.Window))
+ fieldVals = append(fieldVals, xgb.Sprintf("Parent: %d", v.Parent))
+ fieldVals = append(fieldVals, xgb.Sprintf("X: %d", v.X))
+ fieldVals = append(fieldVals, xgb.Sprintf("Y: %d", v.Y))
+ fieldVals = append(fieldVals, xgb.Sprintf("OverrideRedirect: %t", v.OverrideRedirect))
+ return "ReparentNotify {" + xgb.StringsJoin(fieldVals, ", ") + "}"
+}
+
+func init() {
+ xgb.NewEventFuncs[21] = ReparentNotifyEventNew
+}
+
+// Event definition ConfigureNotify (22)
+// Size: 32
+
+const ConfigureNotify = 22
+
+type ConfigureNotifyEvent struct {
+ Sequence uint16
+ // padding: 1 bytes
+ Event Window
+ Window Window
+ AboveSibling Window
+ X int16
+ Y int16
+ Width uint16
+ Height uint16
+ BorderWidth uint16
+ OverrideRedirect bool
+ // padding: 1 bytes
+}
+
+// Event read ConfigureNotify
+func ConfigureNotifyEventNew(buf []byte) xgb.Event {
+ v := ConfigureNotifyEvent{}
+ b := 1 // don't read event number
+
+ b += 1 // padding
+
+ v.Sequence = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Event = Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Window = Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.AboveSibling = Window(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.BorderWidth = xgb.Get16(buf[b:])
+ b += 2
+
+ if buf[b] == 1 {
+ v.OverrideRedirect = true
+ } else {
+ v.OverrideRedirect = false
+ }
+ b += 1
+
+ b += 1 // padding
+
+ return v
+}
+
+// Event write ConfigureNotify
+func (v ConfigureNotifyEvent) Bytes() []byte {
+ buf := make([]byte, 32)
+ b := 0
+
+ // write event number
+ buf[b] = 22
+ b += 1
+
+ b += 1 // padding
+
+ b += 2 // skip sequence number
+
+ xgb.Put32(buf[b:], uint32(v.Event))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(v.Window))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(v.AboveSibling))
+ b += 4
+
+ 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
+
+ xgb.Put16(buf[b:], v.BorderWidth)
+ b += 2
+
+ if v.OverrideRedirect {
+ buf[b] = 1
+ } else {
+ buf[b] = 0
+ }
+ b += 1
+
+ b += 1 // padding
+
+ return buf
+}
+
+func (v ConfigureNotifyEvent) ImplementsEvent() {}
+
+func (v ConfigureNotifyEvent) SequenceId() uint16 {
+ return v.Sequence
+}
+
+func (v ConfigureNotifyEvent) String() string {
+ fieldVals := make([]string, 0, 11)
+ fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", v.Sequence))
+ fieldVals = append(fieldVals, xgb.Sprintf("Event: %d", v.Event))
+ fieldVals = append(fieldVals, xgb.Sprintf("Window: %d", v.Window))
+ fieldVals = append(fieldVals, xgb.Sprintf("AboveSibling: %d", v.AboveSibling))
+ fieldVals = append(fieldVals, xgb.Sprintf("X: %d", v.X))
+ fieldVals = append(fieldVals, xgb.Sprintf("Y: %d", v.Y))
+ fieldVals = append(fieldVals, xgb.Sprintf("Width: %d", v.Width))
+ fieldVals = append(fieldVals, xgb.Sprintf("Height: %d", v.Height))
+ fieldVals = append(fieldVals, xgb.Sprintf("BorderWidth: %d", v.BorderWidth))
+ fieldVals = append(fieldVals, xgb.Sprintf("OverrideRedirect: %t", v.OverrideRedirect))
+ return "ConfigureNotify {" + xgb.StringsJoin(fieldVals, ", ") + "}"
+}
+
+func init() {
+ xgb.NewEventFuncs[22] = ConfigureNotifyEventNew
+}
+
+// Event definition ConfigureRequest (23)
+// Size: 32
+
+const ConfigureRequest = 23
+
+type ConfigureRequestEvent struct {
+ Sequence uint16
+ StackMode byte
+ Parent Window
+ Window Window
+ Sibling Window
+ X int16
+ Y int16
+ Width uint16
+ Height uint16
+ BorderWidth uint16
+ ValueMask uint16
+}
+
+// Event read ConfigureRequest
+func ConfigureRequestEventNew(buf []byte) xgb.Event {
+ v := ConfigureRequestEvent{}
+ b := 1 // don't read event number
+
+ v.StackMode = buf[b]
+ b += 1
+
+ v.Sequence = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Parent = Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Window = Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Sibling = Window(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.BorderWidth = xgb.Get16(buf[b:])
+ b += 2
+
+ v.ValueMask = xgb.Get16(buf[b:])
+ b += 2
+
+ return v
+}
+
+// Event write ConfigureRequest
+func (v ConfigureRequestEvent) Bytes() []byte {
+ buf := make([]byte, 32)
+ b := 0
+
+ // write event number
+ buf[b] = 23
+ b += 1
+
+ buf[b] = v.StackMode
+ b += 1
+
+ b += 2 // skip sequence number
+
+ xgb.Put32(buf[b:], uint32(v.Parent))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(v.Window))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(v.Sibling))
+ b += 4
+
+ 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
+
+ xgb.Put16(buf[b:], v.BorderWidth)
+ b += 2
+
+ xgb.Put16(buf[b:], v.ValueMask)
+ b += 2
+
+ return buf
+}
+
+func (v ConfigureRequestEvent) ImplementsEvent() {}
+
+func (v ConfigureRequestEvent) SequenceId() uint16 {
+ return v.Sequence
+}
+
+func (v ConfigureRequestEvent) String() string {
+ fieldVals := make([]string, 0, 10)
+ fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", v.Sequence))
+ fieldVals = append(fieldVals, xgb.Sprintf("StackMode: %d", v.StackMode))
+ fieldVals = append(fieldVals, xgb.Sprintf("Parent: %d", v.Parent))
+ fieldVals = append(fieldVals, xgb.Sprintf("Window: %d", v.Window))
+ fieldVals = append(fieldVals, xgb.Sprintf("Sibling: %d", v.Sibling))
+ fieldVals = append(fieldVals, xgb.Sprintf("X: %d", v.X))
+ fieldVals = append(fieldVals, xgb.Sprintf("Y: %d", v.Y))
+ fieldVals = append(fieldVals, xgb.Sprintf("Width: %d", v.Width))
+ fieldVals = append(fieldVals, xgb.Sprintf("Height: %d", v.Height))
+ fieldVals = append(fieldVals, xgb.Sprintf("BorderWidth: %d", v.BorderWidth))
+ fieldVals = append(fieldVals, xgb.Sprintf("ValueMask: %d", v.ValueMask))
+ return "ConfigureRequest {" + xgb.StringsJoin(fieldVals, ", ") + "}"
+}
+
+func init() {
+ xgb.NewEventFuncs[23] = ConfigureRequestEventNew
+}
+
+// Event definition GravityNotify (24)
+// Size: 32
+
+const GravityNotify = 24
+
+type GravityNotifyEvent struct {
+ Sequence uint16
+ // padding: 1 bytes
+ Event Window
+ Window Window
+ X int16
+ Y int16
+}
+
+// Event read GravityNotify
+func GravityNotifyEventNew(buf []byte) xgb.Event {
+ v := GravityNotifyEvent{}
+ b := 1 // don't read event number
+
+ b += 1 // padding
+
+ v.Sequence = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Event = Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Window = Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.X = int16(xgb.Get16(buf[b:]))
+ b += 2
+
+ v.Y = int16(xgb.Get16(buf[b:]))
+ b += 2
+
+ return v
+}
+
+// Event write GravityNotify
+func (v GravityNotifyEvent) Bytes() []byte {
+ buf := make([]byte, 32)
+ b := 0
+
+ // write event number
+ buf[b] = 24
+ b += 1
+
+ b += 1 // padding
+
+ b += 2 // skip sequence number
+
+ xgb.Put32(buf[b:], uint32(v.Event))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(v.Window))
+ b += 4
+
+ xgb.Put16(buf[b:], uint16(v.X))
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(v.Y))
+ b += 2
+
+ return buf
+}
+
+func (v GravityNotifyEvent) ImplementsEvent() {}
+
+func (v GravityNotifyEvent) SequenceId() uint16 {
+ return v.Sequence
+}
+
+func (v GravityNotifyEvent) String() string {
+ fieldVals := make([]string, 0, 5)
+ fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", v.Sequence))
+ fieldVals = append(fieldVals, xgb.Sprintf("Event: %d", v.Event))
+ fieldVals = append(fieldVals, xgb.Sprintf("Window: %d", v.Window))
+ fieldVals = append(fieldVals, xgb.Sprintf("X: %d", v.X))
+ fieldVals = append(fieldVals, xgb.Sprintf("Y: %d", v.Y))
+ return "GravityNotify {" + xgb.StringsJoin(fieldVals, ", ") + "}"
+}
+
+func init() {
+ xgb.NewEventFuncs[24] = GravityNotifyEventNew
+}
+
+// Event definition ResizeRequest (25)
+// Size: 32
+
+const ResizeRequest = 25
+
+type ResizeRequestEvent struct {
+ Sequence uint16
+ // padding: 1 bytes
+ Window Window
+ Width uint16
+ Height uint16
+}
+
+// Event read ResizeRequest
+func ResizeRequestEventNew(buf []byte) xgb.Event {
+ v := ResizeRequestEvent{}
+ b := 1 // don't read event number
+
+ b += 1 // padding
+
+ v.Sequence = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Window = Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Width = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Height = xgb.Get16(buf[b:])
+ b += 2
+
+ return v
+}
+
+// Event write ResizeRequest
+func (v ResizeRequestEvent) Bytes() []byte {
+ buf := make([]byte, 32)
+ b := 0
+
+ // write event number
+ buf[b] = 25
+ b += 1
+
+ b += 1 // padding
+
+ b += 2 // skip sequence number
+
+ xgb.Put32(buf[b:], uint32(v.Window))
+ b += 4
+
+ xgb.Put16(buf[b:], v.Width)
+ b += 2
+
+ xgb.Put16(buf[b:], v.Height)
+ b += 2
+
+ return buf
+}
+
+func (v ResizeRequestEvent) ImplementsEvent() {}
+
+func (v ResizeRequestEvent) SequenceId() uint16 {
+ return v.Sequence
+}
+
+func (v ResizeRequestEvent) String() string {
+ fieldVals := make([]string, 0, 4)
+ fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", v.Sequence))
+ fieldVals = append(fieldVals, xgb.Sprintf("Window: %d", v.Window))
+ fieldVals = append(fieldVals, xgb.Sprintf("Width: %d", v.Width))
+ fieldVals = append(fieldVals, xgb.Sprintf("Height: %d", v.Height))
+ return "ResizeRequest {" + xgb.StringsJoin(fieldVals, ", ") + "}"
+}
+
+func init() {
+ xgb.NewEventFuncs[25] = ResizeRequestEventNew
+}
+
+// Event definition CirculateNotify (26)
+// Size: 32
+
+const CirculateNotify = 26
+
+type CirculateNotifyEvent struct {
+ Sequence uint16
+ // padding: 1 bytes
+ Event Window
+ Window Window
+ // padding: 4 bytes
+ Place byte
+ // padding: 3 bytes
+}
+
+// Event read CirculateNotify
+func CirculateNotifyEventNew(buf []byte) xgb.Event {
+ v := CirculateNotifyEvent{}
+ b := 1 // don't read event number
+
+ b += 1 // padding
+
+ v.Sequence = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Event = Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Window = Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ b += 4 // padding
+
+ v.Place = buf[b]
+ b += 1
+
+ b += 3 // padding
+
+ return v
+}
+
+// Event write CirculateNotify
+func (v CirculateNotifyEvent) Bytes() []byte {
+ buf := make([]byte, 32)
+ b := 0
+
+ // write event number
+ buf[b] = 26
+ b += 1
+
+ b += 1 // padding
+
+ b += 2 // skip sequence number
+
+ xgb.Put32(buf[b:], uint32(v.Event))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(v.Window))
+ b += 4
+
+ b += 4 // padding
+
+ buf[b] = v.Place
+ b += 1
+
+ b += 3 // padding
+
+ return buf
+}
+
+func (v CirculateNotifyEvent) ImplementsEvent() {}
+
+func (v CirculateNotifyEvent) SequenceId() uint16 {
+ return v.Sequence
+}
+
+func (v CirculateNotifyEvent) String() string {
+ fieldVals := make([]string, 0, 6)
+ fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", v.Sequence))
+ fieldVals = append(fieldVals, xgb.Sprintf("Event: %d", v.Event))
+ fieldVals = append(fieldVals, xgb.Sprintf("Window: %d", v.Window))
+ fieldVals = append(fieldVals, xgb.Sprintf("Place: %d", v.Place))
+ return "CirculateNotify {" + xgb.StringsJoin(fieldVals, ", ") + "}"
+}
+
+func init() {
+ xgb.NewEventFuncs[26] = CirculateNotifyEventNew
+}
+
+// Event definition PropertyNotify (28)
+// Size: 32
+
+const PropertyNotify = 28
+
+type PropertyNotifyEvent struct {
+ Sequence uint16
+ // padding: 1 bytes
+ Window Window
+ Atom Atom
+ Time Timestamp
+ State byte
+ // padding: 3 bytes
+}
+
+// Event read PropertyNotify
+func PropertyNotifyEventNew(buf []byte) xgb.Event {
+ v := PropertyNotifyEvent{}
+ b := 1 // don't read event number
+
+ b += 1 // padding
+
+ v.Sequence = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Window = Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Atom = Atom(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Time = Timestamp(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.State = buf[b]
+ b += 1
+
+ b += 3 // padding
+
+ return v
+}
+
+// Event write PropertyNotify
+func (v PropertyNotifyEvent) Bytes() []byte {
+ buf := make([]byte, 32)
+ b := 0
+
+ // write event number
+ buf[b] = 28
+ b += 1
+
+ b += 1 // padding
+
+ b += 2 // skip sequence number
+
+ xgb.Put32(buf[b:], uint32(v.Window))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(v.Atom))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(v.Time))
+ b += 4
+
+ buf[b] = v.State
+ b += 1
+
+ b += 3 // padding
+
+ return buf
+}
+
+func (v PropertyNotifyEvent) ImplementsEvent() {}
+
+func (v PropertyNotifyEvent) SequenceId() uint16 {
+ return v.Sequence
+}
+
+func (v PropertyNotifyEvent) String() string {
+ fieldVals := make([]string, 0, 6)
+ fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", v.Sequence))
+ fieldVals = append(fieldVals, xgb.Sprintf("Window: %d", v.Window))
+ fieldVals = append(fieldVals, xgb.Sprintf("Atom: %d", v.Atom))
+ fieldVals = append(fieldVals, xgb.Sprintf("Time: %d", v.Time))
+ fieldVals = append(fieldVals, xgb.Sprintf("State: %d", v.State))
+ return "PropertyNotify {" + xgb.StringsJoin(fieldVals, ", ") + "}"
+}
+
+func init() {
+ xgb.NewEventFuncs[28] = PropertyNotifyEventNew
+}
+
+// Event definition SelectionClear (29)
+// Size: 32
+
+const SelectionClear = 29
+
+type SelectionClearEvent struct {
+ Sequence uint16
+ // padding: 1 bytes
+ Time Timestamp
+ Owner Window
+ Selection Atom
+}
+
+// Event read SelectionClear
+func SelectionClearEventNew(buf []byte) xgb.Event {
+ v := SelectionClearEvent{}
+ b := 1 // don't read event number
+
+ b += 1 // padding
+
+ v.Sequence = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Time = Timestamp(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Owner = Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Selection = Atom(xgb.Get32(buf[b:]))
+ b += 4
+
+ return v
+}
+
+// Event write SelectionClear
+func (v SelectionClearEvent) Bytes() []byte {
+ buf := make([]byte, 32)
+ b := 0
+
+ // write event number
+ buf[b] = 29
+ b += 1
+
+ b += 1 // padding
+
+ b += 2 // skip sequence number
+
+ xgb.Put32(buf[b:], uint32(v.Time))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(v.Owner))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(v.Selection))
+ b += 4
+
+ return buf
+}
+
+func (v SelectionClearEvent) ImplementsEvent() {}
+
+func (v SelectionClearEvent) SequenceId() uint16 {
+ return v.Sequence
+}
+
+func (v SelectionClearEvent) String() string {
+ fieldVals := make([]string, 0, 4)
+ fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", v.Sequence))
+ fieldVals = append(fieldVals, xgb.Sprintf("Time: %d", v.Time))
+ fieldVals = append(fieldVals, xgb.Sprintf("Owner: %d", v.Owner))
+ fieldVals = append(fieldVals, xgb.Sprintf("Selection: %d", v.Selection))
+ return "SelectionClear {" + xgb.StringsJoin(fieldVals, ", ") + "}"
+}
+
+func init() {
+ xgb.NewEventFuncs[29] = SelectionClearEventNew
+}
+
+// Event definition SelectionRequest (30)
+// Size: 32
+
+const SelectionRequest = 30
+
+type SelectionRequestEvent struct {
+ Sequence uint16
+ // padding: 1 bytes
+ Time Timestamp
+ Owner Window
+ Requestor Window
+ Selection Atom
+ Target Atom
+ Property Atom
+}
+
+// Event read SelectionRequest
+func SelectionRequestEventNew(buf []byte) xgb.Event {
+ v := SelectionRequestEvent{}
+ b := 1 // don't read event number
+
+ b += 1 // padding
+
+ v.Sequence = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Time = Timestamp(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Owner = Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Requestor = Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Selection = Atom(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Target = Atom(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Property = Atom(xgb.Get32(buf[b:]))
+ b += 4
+
+ return v
+}
+
+// Event write SelectionRequest
+func (v SelectionRequestEvent) Bytes() []byte {
+ buf := make([]byte, 32)
+ b := 0
+
+ // write event number
+ buf[b] = 30
+ b += 1
+
+ b += 1 // padding
+
+ b += 2 // skip sequence number
+
+ xgb.Put32(buf[b:], uint32(v.Time))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(v.Owner))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(v.Requestor))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(v.Selection))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(v.Target))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(v.Property))
+ b += 4
+
+ return buf
+}
+
+func (v SelectionRequestEvent) ImplementsEvent() {}
+
+func (v SelectionRequestEvent) SequenceId() uint16 {
+ return v.Sequence
+}
+
+func (v SelectionRequestEvent) String() string {
+ fieldVals := make([]string, 0, 7)
+ fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", v.Sequence))
+ fieldVals = append(fieldVals, xgb.Sprintf("Time: %d", v.Time))
+ fieldVals = append(fieldVals, xgb.Sprintf("Owner: %d", v.Owner))
+ fieldVals = append(fieldVals, xgb.Sprintf("Requestor: %d", v.Requestor))
+ fieldVals = append(fieldVals, xgb.Sprintf("Selection: %d", v.Selection))
+ fieldVals = append(fieldVals, xgb.Sprintf("Target: %d", v.Target))
+ fieldVals = append(fieldVals, xgb.Sprintf("Property: %d", v.Property))
+ return "SelectionRequest {" + xgb.StringsJoin(fieldVals, ", ") + "}"
+}
+
+func init() {
+ xgb.NewEventFuncs[30] = SelectionRequestEventNew
+}
+
+// Event definition SelectionNotify (31)
+// Size: 32
+
+const SelectionNotify = 31
+
+type SelectionNotifyEvent struct {
+ Sequence uint16
+ // padding: 1 bytes
+ Time Timestamp
+ Requestor Window
+ Selection Atom
+ Target Atom
+ Property Atom
+}
+
+// Event read SelectionNotify
+func SelectionNotifyEventNew(buf []byte) xgb.Event {
+ v := SelectionNotifyEvent{}
+ b := 1 // don't read event number
+
+ b += 1 // padding
+
+ v.Sequence = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Time = Timestamp(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Requestor = Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Selection = Atom(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Target = Atom(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Property = Atom(xgb.Get32(buf[b:]))
+ b += 4
+
+ return v
+}
+
+// Event write SelectionNotify
+func (v SelectionNotifyEvent) Bytes() []byte {
+ buf := make([]byte, 32)
+ b := 0
+
+ // write event number
+ buf[b] = 31
+ b += 1
+
+ b += 1 // padding
+
+ b += 2 // skip sequence number
+
+ xgb.Put32(buf[b:], uint32(v.Time))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(v.Requestor))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(v.Selection))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(v.Target))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(v.Property))
+ b += 4
+
+ return buf
+}
+
+func (v SelectionNotifyEvent) ImplementsEvent() {}
+
+func (v SelectionNotifyEvent) SequenceId() uint16 {
+ return v.Sequence
+}
+
+func (v SelectionNotifyEvent) String() string {
+ fieldVals := make([]string, 0, 6)
+ fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", v.Sequence))
+ fieldVals = append(fieldVals, xgb.Sprintf("Time: %d", v.Time))
+ fieldVals = append(fieldVals, xgb.Sprintf("Requestor: %d", v.Requestor))
+ fieldVals = append(fieldVals, xgb.Sprintf("Selection: %d", v.Selection))
+ fieldVals = append(fieldVals, xgb.Sprintf("Target: %d", v.Target))
+ fieldVals = append(fieldVals, xgb.Sprintf("Property: %d", v.Property))
+ return "SelectionNotify {" + xgb.StringsJoin(fieldVals, ", ") + "}"
+}
+
+func init() {
+ xgb.NewEventFuncs[31] = SelectionNotifyEventNew
+}
+
+// Event definition ColormapNotify (32)
+// Size: 32
+
+const ColormapNotify = 32
+
+type ColormapNotifyEvent struct {
+ Sequence uint16
+ // padding: 1 bytes
+ Window Window
+ Colormap Colormap
+ New bool
+ State byte
+ // padding: 2 bytes
+}
+
+// Event read ColormapNotify
+func ColormapNotifyEventNew(buf []byte) xgb.Event {
+ v := ColormapNotifyEvent{}
+ b := 1 // don't read event number
+
+ b += 1 // padding
+
+ v.Sequence = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Window = Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Colormap = Colormap(xgb.Get32(buf[b:]))
+ b += 4
+
+ if buf[b] == 1 {
+ v.New = true
+ } else {
+ v.New = false
+ }
+ b += 1
+
+ v.State = buf[b]
+ b += 1
+
+ b += 2 // padding
+
+ return v
+}
+
+// Event write ColormapNotify
+func (v ColormapNotifyEvent) Bytes() []byte {
+ buf := make([]byte, 32)
+ b := 0
+
+ // write event number
+ buf[b] = 32
+ b += 1
+
+ b += 1 // padding
+
+ b += 2 // skip sequence number
+
+ xgb.Put32(buf[b:], uint32(v.Window))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(v.Colormap))
+ b += 4
+
+ if v.New {
+ buf[b] = 1
+ } else {
+ buf[b] = 0
+ }
+ b += 1
+
+ buf[b] = v.State
+ b += 1
+
+ b += 2 // padding
+
+ return buf
+}
+
+func (v ColormapNotifyEvent) ImplementsEvent() {}
+
+func (v ColormapNotifyEvent) SequenceId() uint16 {
+ return v.Sequence
+}
+
+func (v ColormapNotifyEvent) String() string {
+ fieldVals := make([]string, 0, 6)
+ fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", v.Sequence))
+ fieldVals = append(fieldVals, xgb.Sprintf("Window: %d", v.Window))
+ fieldVals = append(fieldVals, xgb.Sprintf("Colormap: %d", v.Colormap))
+ fieldVals = append(fieldVals, xgb.Sprintf("New: %t", v.New))
+ fieldVals = append(fieldVals, xgb.Sprintf("State: %d", v.State))
+ return "ColormapNotify {" + xgb.StringsJoin(fieldVals, ", ") + "}"
+}
+
+func init() {
+ xgb.NewEventFuncs[32] = ColormapNotifyEventNew
+}
+
+// Event definition ClientMessage (33)
+// Size: 32
+
+const ClientMessage = 33
+
+type ClientMessageEvent struct {
+ Sequence uint16
+ Format byte
+ Window Window
+ Type Atom
+ Data ClientMessageDataUnion
+}
+
+// Event read ClientMessage
+func ClientMessageEventNew(buf []byte) xgb.Event {
+ v := ClientMessageEvent{}
+ b := 1 // don't read event number
+
+ v.Format = buf[b]
+ b += 1
+
+ v.Sequence = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Window = Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Type = Atom(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Data = ClientMessageDataUnion{}
+ b += ClientMessageDataUnionRead(buf[b:], &v.Data)
+
+ return v
+}
+
+// Event write ClientMessage
+func (v ClientMessageEvent) Bytes() []byte {
+ buf := make([]byte, 32)
+ b := 0
+
+ // write event number
+ buf[b] = 33
+ b += 1
+
+ buf[b] = v.Format
+ b += 1
+
+ b += 2 // skip sequence number
+
+ xgb.Put32(buf[b:], uint32(v.Window))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(v.Type))
+ b += 4
+
+ {
+ unionBytes := v.Data.Bytes()
+ copy(buf[b:], unionBytes)
+ b += xgb.Pad(len(unionBytes))
+ }
+
+ return buf
+}
+
+func (v ClientMessageEvent) ImplementsEvent() {}
+
+func (v ClientMessageEvent) SequenceId() uint16 {
+ return v.Sequence
+}
+
+func (v ClientMessageEvent) String() string {
+ fieldVals := make([]string, 0, 4)
+ fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", v.Sequence))
+ fieldVals = append(fieldVals, xgb.Sprintf("Format: %d", v.Format))
+ fieldVals = append(fieldVals, xgb.Sprintf("Window: %d", v.Window))
+ fieldVals = append(fieldVals, xgb.Sprintf("Type: %d", v.Type))
+ return "ClientMessage {" + xgb.StringsJoin(fieldVals, ", ") + "}"
+}
+
+func init() {
+ xgb.NewEventFuncs[33] = ClientMessageEventNew
+}
+
+// Event definition MappingNotify (34)
+// Size: 32
+
+const MappingNotify = 34
+
+type MappingNotifyEvent struct {
+ Sequence uint16
+ // padding: 1 bytes
+ Request byte
+ FirstKeycode Keycode
+ Count byte
+ // padding: 1 bytes
+}
+
+// Event read MappingNotify
+func MappingNotifyEventNew(buf []byte) xgb.Event {
+ v := MappingNotifyEvent{}
+ b := 1 // don't read event number
+
+ b += 1 // padding
+
+ v.Sequence = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Request = buf[b]
+ b += 1
+
+ v.FirstKeycode = Keycode(buf[b])
+ b += 1
+
+ v.Count = buf[b]
+ b += 1
+
+ b += 1 // padding
+
+ return v
+}
+
+// Event write MappingNotify
+func (v MappingNotifyEvent) Bytes() []byte {
+ buf := make([]byte, 32)
+ b := 0
+
+ // write event number
+ buf[b] = 34
+ b += 1
+
+ b += 1 // padding
+
+ b += 2 // skip sequence number
+
+ buf[b] = v.Request
+ b += 1
+
+ buf[b] = byte(v.FirstKeycode)
+ b += 1
+
+ buf[b] = v.Count
+ b += 1
+
+ b += 1 // padding
+
+ return buf
+}
+
+func (v MappingNotifyEvent) ImplementsEvent() {}
+
+func (v MappingNotifyEvent) SequenceId() uint16 {
+ return v.Sequence
+}
+
+func (v MappingNotifyEvent) String() string {
+ fieldVals := make([]string, 0, 5)
+ fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", v.Sequence))
+ fieldVals = append(fieldVals, xgb.Sprintf("Request: %d", v.Request))
+ fieldVals = append(fieldVals, xgb.Sprintf("FirstKeycode: %d", v.FirstKeycode))
+ fieldVals = append(fieldVals, xgb.Sprintf("Count: %d", v.Count))
+ return "MappingNotify {" + xgb.StringsJoin(fieldVals, ", ") + "}"
+}
+
+func init() {
+ xgb.NewEventFuncs[34] = MappingNotifyEventNew
+}
+
+// EventCopy definition KeyRelease (3)
+
+const KeyRelease = 3
+
+type KeyReleaseEvent KeyPressEvent
+
+func KeyReleaseEventNew(buf []byte) xgb.Event {
+ return KeyReleaseEvent(KeyPressEventNew(buf).(KeyPressEvent))
+}
+
+func (v KeyReleaseEvent) Bytes() []byte {
+ return KeyPressEvent(v).Bytes()
+}
+
+func (v KeyReleaseEvent) ImplementsEvent() {}
+
+func (v KeyReleaseEvent) SequenceId() uint16 {
+ return v.Sequence
+}
+
+func (v KeyReleaseEvent) String() string {
+ fieldVals := make([]string, 0, 12)
+ fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", v.Sequence))
+ fieldVals = append(fieldVals, xgb.Sprintf("Detail: %d", v.Detail))
+ fieldVals = append(fieldVals, xgb.Sprintf("Time: %d", v.Time))
+ fieldVals = append(fieldVals, xgb.Sprintf("Root: %d", v.Root))
+ fieldVals = append(fieldVals, xgb.Sprintf("Event: %d", v.Event))
+ fieldVals = append(fieldVals, xgb.Sprintf("Child: %d", v.Child))
+ fieldVals = append(fieldVals, xgb.Sprintf("RootX: %d", v.RootX))
+ fieldVals = append(fieldVals, xgb.Sprintf("RootY: %d", v.RootY))
+ fieldVals = append(fieldVals, xgb.Sprintf("EventX: %d", v.EventX))
+ fieldVals = append(fieldVals, xgb.Sprintf("EventY: %d", v.EventY))
+ fieldVals = append(fieldVals, xgb.Sprintf("State: %d", v.State))
+ fieldVals = append(fieldVals, xgb.Sprintf("SameScreen: %t", v.SameScreen))
+ return "KeyRelease {" + xgb.StringsJoin(fieldVals, ", ") + "}"
+}
+
+func init() {
+ xgb.NewEventFuncs[3] = KeyReleaseEventNew
+}
+
+// EventCopy definition ButtonRelease (5)
+
+const ButtonRelease = 5
+
+type ButtonReleaseEvent ButtonPressEvent
+
+func ButtonReleaseEventNew(buf []byte) xgb.Event {
+ return ButtonReleaseEvent(ButtonPressEventNew(buf).(ButtonPressEvent))
+}
+
+func (v ButtonReleaseEvent) Bytes() []byte {
+ return ButtonPressEvent(v).Bytes()
+}
+
+func (v ButtonReleaseEvent) ImplementsEvent() {}
+
+func (v ButtonReleaseEvent) SequenceId() uint16 {
+ return v.Sequence
+}
+
+func (v ButtonReleaseEvent) String() string {
+ fieldVals := make([]string, 0, 12)
+ fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", v.Sequence))
+ fieldVals = append(fieldVals, xgb.Sprintf("Detail: %d", v.Detail))
+ fieldVals = append(fieldVals, xgb.Sprintf("Time: %d", v.Time))
+ fieldVals = append(fieldVals, xgb.Sprintf("Root: %d", v.Root))
+ fieldVals = append(fieldVals, xgb.Sprintf("Event: %d", v.Event))
+ fieldVals = append(fieldVals, xgb.Sprintf("Child: %d", v.Child))
+ fieldVals = append(fieldVals, xgb.Sprintf("RootX: %d", v.RootX))
+ fieldVals = append(fieldVals, xgb.Sprintf("RootY: %d", v.RootY))
+ fieldVals = append(fieldVals, xgb.Sprintf("EventX: %d", v.EventX))
+ fieldVals = append(fieldVals, xgb.Sprintf("EventY: %d", v.EventY))
+ fieldVals = append(fieldVals, xgb.Sprintf("State: %d", v.State))
+ fieldVals = append(fieldVals, xgb.Sprintf("SameScreen: %t", v.SameScreen))
+ return "ButtonRelease {" + xgb.StringsJoin(fieldVals, ", ") + "}"
+}
+
+func init() {
+ xgb.NewEventFuncs[5] = ButtonReleaseEventNew
+}
+
+// EventCopy definition LeaveNotify (8)
+
+const LeaveNotify = 8
+
+type LeaveNotifyEvent EnterNotifyEvent
+
+func LeaveNotifyEventNew(buf []byte) xgb.Event {
+ return LeaveNotifyEvent(EnterNotifyEventNew(buf).(EnterNotifyEvent))
+}
+
+func (v LeaveNotifyEvent) Bytes() []byte {
+ return EnterNotifyEvent(v).Bytes()
+}
+
+func (v LeaveNotifyEvent) ImplementsEvent() {}
+
+func (v LeaveNotifyEvent) SequenceId() uint16 {
+ return v.Sequence
+}
+
+func (v LeaveNotifyEvent) String() string {
+ fieldVals := make([]string, 0, 12)
+ fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", v.Sequence))
+ fieldVals = append(fieldVals, xgb.Sprintf("Detail: %d", v.Detail))
+ fieldVals = append(fieldVals, xgb.Sprintf("Time: %d", v.Time))
+ fieldVals = append(fieldVals, xgb.Sprintf("Root: %d", v.Root))
+ fieldVals = append(fieldVals, xgb.Sprintf("Event: %d", v.Event))
+ fieldVals = append(fieldVals, xgb.Sprintf("Child: %d", v.Child))
+ fieldVals = append(fieldVals, xgb.Sprintf("RootX: %d", v.RootX))
+ fieldVals = append(fieldVals, xgb.Sprintf("RootY: %d", v.RootY))
+ fieldVals = append(fieldVals, xgb.Sprintf("EventX: %d", v.EventX))
+ fieldVals = append(fieldVals, xgb.Sprintf("EventY: %d", v.EventY))
+ fieldVals = append(fieldVals, xgb.Sprintf("State: %d", v.State))
+ fieldVals = append(fieldVals, xgb.Sprintf("Mode: %d", v.Mode))
+ fieldVals = append(fieldVals, xgb.Sprintf("SameScreenFocus: %d", v.SameScreenFocus))
+ return "LeaveNotify {" + xgb.StringsJoin(fieldVals, ", ") + "}"
+}
+
+func init() {
+ xgb.NewEventFuncs[8] = LeaveNotifyEventNew
+}
+
+// EventCopy definition FocusOut (10)
+
+const FocusOut = 10
+
+type FocusOutEvent FocusInEvent
+
+func FocusOutEventNew(buf []byte) xgb.Event {
+ return FocusOutEvent(FocusInEventNew(buf).(FocusInEvent))
+}
+
+func (v FocusOutEvent) Bytes() []byte {
+ return FocusInEvent(v).Bytes()
+}
+
+func (v FocusOutEvent) ImplementsEvent() {}
+
+func (v FocusOutEvent) SequenceId() uint16 {
+ return v.Sequence
+}
+
+func (v FocusOutEvent) String() string {
+ fieldVals := make([]string, 0, 4)
+ fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", v.Sequence))
+ fieldVals = append(fieldVals, xgb.Sprintf("Detail: %d", v.Detail))
+ fieldVals = append(fieldVals, xgb.Sprintf("Event: %d", v.Event))
+ fieldVals = append(fieldVals, xgb.Sprintf("Mode: %d", v.Mode))
+ return "FocusOut {" + xgb.StringsJoin(fieldVals, ", ") + "}"
+}
+
+func init() {
+ xgb.NewEventFuncs[10] = FocusOutEventNew
+}
+
+// EventCopy definition CirculateRequest (27)
+
+const CirculateRequest = 27
+
+type CirculateRequestEvent CirculateNotifyEvent
+
+func CirculateRequestEventNew(buf []byte) xgb.Event {
+ return CirculateRequestEvent(CirculateNotifyEventNew(buf).(CirculateNotifyEvent))
+}
+
+func (v CirculateRequestEvent) Bytes() []byte {
+ return CirculateNotifyEvent(v).Bytes()
+}
+
+func (v CirculateRequestEvent) ImplementsEvent() {}
+
+func (v CirculateRequestEvent) SequenceId() uint16 {
+ return v.Sequence
+}
+
+func (v CirculateRequestEvent) String() string {
+ fieldVals := make([]string, 0, 6)
+ fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", v.Sequence))
+ fieldVals = append(fieldVals, xgb.Sprintf("Event: %d", v.Event))
+ fieldVals = append(fieldVals, xgb.Sprintf("Window: %d", v.Window))
+ fieldVals = append(fieldVals, xgb.Sprintf("Place: %d", v.Place))
+ return "CirculateRequest {" + xgb.StringsJoin(fieldVals, ", ") + "}"
+}
+
+func init() {
+ xgb.NewEventFuncs[27] = CirculateRequestEventNew
+}
+
+// Error definition Request (1)
+// Size: 32
+
+const BadRequest = 1
+
+type RequestError struct {
+ Sequence uint16
+ NiceName string
+ BadValue uint32
+ MinorOpcode uint16
+ MajorOpcode byte
+ // padding: 1 bytes
+}
+
+// Error read Request
+func RequestErrorNew(buf []byte) xgb.Error {
+ v := RequestError{}
+ v.NiceName = "Request"
+
+ b := 1 // skip error determinant
+ b += 1 // don't read error number
+
+ v.Sequence = xgb.Get16(buf[b:])
+ b += 2
+
+ v.BadValue = xgb.Get32(buf[b:])
+ b += 4
+
+ v.MinorOpcode = xgb.Get16(buf[b:])
+ b += 2
+
+ v.MajorOpcode = buf[b]
+ b += 1
+
+ b += 1 // padding
+
+ return v
+}
+
+func (err RequestError) ImplementsError() {}
+
+func (err RequestError) SequenceId() uint16 {
+ return err.Sequence
+}
+
+func (err RequestError) BadId() uint32 {
+ return err.BadValue
+}
+
+func (err RequestError) Error() string {
+ fieldVals := make([]string, 0, 4)
+ fieldVals = append(fieldVals, "NiceName: "+err.NiceName)
+ fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", err.Sequence))
+ fieldVals = append(fieldVals, xgb.Sprintf("BadValue: %d", err.BadValue))
+ fieldVals = append(fieldVals, xgb.Sprintf("MinorOpcode: %d", err.MinorOpcode))
+ fieldVals = append(fieldVals, xgb.Sprintf("MajorOpcode: %d", err.MajorOpcode))
+ return "BadRequest {" + xgb.StringsJoin(fieldVals, ", ") + "}"
+}
+
+func init() {
+ xgb.NewErrorFuncs[1] = RequestErrorNew
+}
+
+// Error definition Value (2)
+// Size: 32
+
+const BadValue = 2
+
+type ValueError struct {
+ Sequence uint16
+ NiceName string
+ BadValue uint32
+ MinorOpcode uint16
+ MajorOpcode byte
+ // padding: 1 bytes
+}
+
+// Error read Value
+func ValueErrorNew(buf []byte) xgb.Error {
+ v := ValueError{}
+ v.NiceName = "Value"
+
+ b := 1 // skip error determinant
+ b += 1 // don't read error number
+
+ v.Sequence = xgb.Get16(buf[b:])
+ b += 2
+
+ v.BadValue = xgb.Get32(buf[b:])
+ b += 4
+
+ v.MinorOpcode = xgb.Get16(buf[b:])
+ b += 2
+
+ v.MajorOpcode = buf[b]
+ b += 1
+
+ b += 1 // padding
+
+ return v
+}
+
+func (err ValueError) ImplementsError() {}
+
+func (err ValueError) SequenceId() uint16 {
+ return err.Sequence
+}
+
+func (err ValueError) BadId() uint32 {
+ return err.BadValue
+}
+
+func (err ValueError) Error() string {
+ fieldVals := make([]string, 0, 4)
+ fieldVals = append(fieldVals, "NiceName: "+err.NiceName)
+ fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", err.Sequence))
+ fieldVals = append(fieldVals, xgb.Sprintf("BadValue: %d", err.BadValue))
+ fieldVals = append(fieldVals, xgb.Sprintf("MinorOpcode: %d", err.MinorOpcode))
+ fieldVals = append(fieldVals, xgb.Sprintf("MajorOpcode: %d", err.MajorOpcode))
+ return "BadValue {" + xgb.StringsJoin(fieldVals, ", ") + "}"
+}
+
+func init() {
+ xgb.NewErrorFuncs[2] = ValueErrorNew
+}
+
+// ErrorCopy definition Window (3)
+
+const BadWindow = 3
+
+type WindowError ValueError
+
+func WindowErrorNew(buf []byte) xgb.Error {
+ v := WindowError(ValueErrorNew(buf).(ValueError))
+ v.NiceName = "Window"
+ return v
+}
+
+func (err WindowError) ImplementsError() {}
+
+func (err WindowError) SequenceId() uint16 {
+ return err.Sequence
+}
+
+func (err WindowError) BadId() uint32 {
+ return err.BadValue
+}
+
+func (err WindowError) Error() string {
+ fieldVals := make([]string, 0, 4)
+ fieldVals = append(fieldVals, "NiceName: "+err.NiceName)
+ fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", err.Sequence))
+ fieldVals = append(fieldVals, xgb.Sprintf("BadValue: %d", err.BadValue))
+ fieldVals = append(fieldVals, xgb.Sprintf("MinorOpcode: %d", err.MinorOpcode))
+ fieldVals = append(fieldVals, xgb.Sprintf("MajorOpcode: %d", err.MajorOpcode))
+ return "BadWindow {" + xgb.StringsJoin(fieldVals, ", ") + "}"
+}
+
+func init() {
+ xgb.NewErrorFuncs[3] = WindowErrorNew
+}
+
+// ErrorCopy definition Pixmap (4)
+
+const BadPixmap = 4
+
+type PixmapError ValueError
+
+func PixmapErrorNew(buf []byte) xgb.Error {
+ v := PixmapError(ValueErrorNew(buf).(ValueError))
+ v.NiceName = "Pixmap"
+ return v
+}
+
+func (err PixmapError) ImplementsError() {}
+
+func (err PixmapError) SequenceId() uint16 {
+ return err.Sequence
+}
+
+func (err PixmapError) BadId() uint32 {
+ return err.BadValue
+}
+
+func (err PixmapError) Error() string {
+ fieldVals := make([]string, 0, 4)
+ fieldVals = append(fieldVals, "NiceName: "+err.NiceName)
+ fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", err.Sequence))
+ fieldVals = append(fieldVals, xgb.Sprintf("BadValue: %d", err.BadValue))
+ fieldVals = append(fieldVals, xgb.Sprintf("MinorOpcode: %d", err.MinorOpcode))
+ fieldVals = append(fieldVals, xgb.Sprintf("MajorOpcode: %d", err.MajorOpcode))
+ return "BadPixmap {" + xgb.StringsJoin(fieldVals, ", ") + "}"
+}
+
+func init() {
+ xgb.NewErrorFuncs[4] = PixmapErrorNew
+}
+
+// ErrorCopy definition Atom (5)
+
+const BadAtom = 5
+
+type AtomError ValueError
+
+func AtomErrorNew(buf []byte) xgb.Error {
+ v := AtomError(ValueErrorNew(buf).(ValueError))
+ v.NiceName = "Atom"
+ return v
+}
+
+func (err AtomError) ImplementsError() {}
+
+func (err AtomError) SequenceId() uint16 {
+ return err.Sequence
+}
+
+func (err AtomError) BadId() uint32 {
+ return err.BadValue
+}
+
+func (err AtomError) Error() string {
+ fieldVals := make([]string, 0, 4)
+ fieldVals = append(fieldVals, "NiceName: "+err.NiceName)
+ fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", err.Sequence))
+ fieldVals = append(fieldVals, xgb.Sprintf("BadValue: %d", err.BadValue))
+ fieldVals = append(fieldVals, xgb.Sprintf("MinorOpcode: %d", err.MinorOpcode))
+ fieldVals = append(fieldVals, xgb.Sprintf("MajorOpcode: %d", err.MajorOpcode))
+ return "BadAtom {" + xgb.StringsJoin(fieldVals, ", ") + "}"
+}
+
+func init() {
+ xgb.NewErrorFuncs[5] = AtomErrorNew
+}
+
+// ErrorCopy definition Cursor (6)
+
+const BadCursor = 6
+
+type CursorError ValueError
+
+func CursorErrorNew(buf []byte) xgb.Error {
+ v := CursorError(ValueErrorNew(buf).(ValueError))
+ v.NiceName = "Cursor"
+ return v
+}
+
+func (err CursorError) ImplementsError() {}
+
+func (err CursorError) SequenceId() uint16 {
+ return err.Sequence
+}
+
+func (err CursorError) BadId() uint32 {
+ return err.BadValue
+}
+
+func (err CursorError) Error() string {
+ fieldVals := make([]string, 0, 4)
+ fieldVals = append(fieldVals, "NiceName: "+err.NiceName)
+ fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", err.Sequence))
+ fieldVals = append(fieldVals, xgb.Sprintf("BadValue: %d", err.BadValue))
+ fieldVals = append(fieldVals, xgb.Sprintf("MinorOpcode: %d", err.MinorOpcode))
+ fieldVals = append(fieldVals, xgb.Sprintf("MajorOpcode: %d", err.MajorOpcode))
+ return "BadCursor {" + xgb.StringsJoin(fieldVals, ", ") + "}"
+}
+
+func init() {
+ xgb.NewErrorFuncs[6] = CursorErrorNew
+}
+
+// ErrorCopy definition Font (7)
+
+const BadFont = 7
+
+type FontError ValueError
+
+func FontErrorNew(buf []byte) xgb.Error {
+ v := FontError(ValueErrorNew(buf).(ValueError))
+ v.NiceName = "Font"
+ return v
+}
+
+func (err FontError) ImplementsError() {}
+
+func (err FontError) SequenceId() uint16 {
+ return err.Sequence
+}
+
+func (err FontError) BadId() uint32 {
+ return err.BadValue
+}
+
+func (err FontError) Error() string {
+ fieldVals := make([]string, 0, 4)
+ fieldVals = append(fieldVals, "NiceName: "+err.NiceName)
+ fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", err.Sequence))
+ fieldVals = append(fieldVals, xgb.Sprintf("BadValue: %d", err.BadValue))
+ fieldVals = append(fieldVals, xgb.Sprintf("MinorOpcode: %d", err.MinorOpcode))
+ fieldVals = append(fieldVals, xgb.Sprintf("MajorOpcode: %d", err.MajorOpcode))
+ return "BadFont {" + xgb.StringsJoin(fieldVals, ", ") + "}"
+}
+
+func init() {
+ xgb.NewErrorFuncs[7] = FontErrorNew
+}
+
+// ErrorCopy definition Match (8)
+
+const BadMatch = 8
+
+type MatchError RequestError
+
+func MatchErrorNew(buf []byte) xgb.Error {
+ v := MatchError(RequestErrorNew(buf).(RequestError))
+ v.NiceName = "Match"
+ return v
+}
+
+func (err MatchError) ImplementsError() {}
+
+func (err MatchError) SequenceId() uint16 {
+ return err.Sequence
+}
+
+func (err MatchError) BadId() uint32 {
+ return err.BadValue
+}
+
+func (err MatchError) Error() string {
+ fieldVals := make([]string, 0, 4)
+ fieldVals = append(fieldVals, "NiceName: "+err.NiceName)
+ fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", err.Sequence))
+ fieldVals = append(fieldVals, xgb.Sprintf("BadValue: %d", err.BadValue))
+ fieldVals = append(fieldVals, xgb.Sprintf("MinorOpcode: %d", err.MinorOpcode))
+ fieldVals = append(fieldVals, xgb.Sprintf("MajorOpcode: %d", err.MajorOpcode))
+ return "BadMatch {" + xgb.StringsJoin(fieldVals, ", ") + "}"
+}
+
+func init() {
+ xgb.NewErrorFuncs[8] = MatchErrorNew
+}
+
+// ErrorCopy definition Drawable (9)
+
+const BadDrawable = 9
+
+type DrawableError ValueError
+
+func DrawableErrorNew(buf []byte) xgb.Error {
+ v := DrawableError(ValueErrorNew(buf).(ValueError))
+ v.NiceName = "Drawable"
+ return v
+}
+
+func (err DrawableError) ImplementsError() {}
+
+func (err DrawableError) SequenceId() uint16 {
+ return err.Sequence
+}
+
+func (err DrawableError) BadId() uint32 {
+ return err.BadValue
+}
+
+func (err DrawableError) Error() string {
+ fieldVals := make([]string, 0, 4)
+ fieldVals = append(fieldVals, "NiceName: "+err.NiceName)
+ fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", err.Sequence))
+ fieldVals = append(fieldVals, xgb.Sprintf("BadValue: %d", err.BadValue))
+ fieldVals = append(fieldVals, xgb.Sprintf("MinorOpcode: %d", err.MinorOpcode))
+ fieldVals = append(fieldVals, xgb.Sprintf("MajorOpcode: %d", err.MajorOpcode))
+ return "BadDrawable {" + xgb.StringsJoin(fieldVals, ", ") + "}"
+}
+
+func init() {
+ xgb.NewErrorFuncs[9] = DrawableErrorNew
+}
+
+// ErrorCopy definition Access (10)
+
+const BadAccess = 10
+
+type AccessError RequestError
+
+func AccessErrorNew(buf []byte) xgb.Error {
+ v := AccessError(RequestErrorNew(buf).(RequestError))
+ v.NiceName = "Access"
+ return v
+}
+
+func (err AccessError) ImplementsError() {}
+
+func (err AccessError) SequenceId() uint16 {
+ return err.Sequence
+}
+
+func (err AccessError) BadId() uint32 {
+ return err.BadValue
+}
+
+func (err AccessError) Error() string {
+ fieldVals := make([]string, 0, 4)
+ fieldVals = append(fieldVals, "NiceName: "+err.NiceName)
+ fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", err.Sequence))
+ fieldVals = append(fieldVals, xgb.Sprintf("BadValue: %d", err.BadValue))
+ fieldVals = append(fieldVals, xgb.Sprintf("MinorOpcode: %d", err.MinorOpcode))
+ fieldVals = append(fieldVals, xgb.Sprintf("MajorOpcode: %d", err.MajorOpcode))
+ return "BadAccess {" + xgb.StringsJoin(fieldVals, ", ") + "}"
+}
+
+func init() {
+ xgb.NewErrorFuncs[10] = AccessErrorNew
+}
+
+// ErrorCopy definition Alloc (11)
+
+const BadAlloc = 11
+
+type AllocError RequestError
+
+func AllocErrorNew(buf []byte) xgb.Error {
+ v := AllocError(RequestErrorNew(buf).(RequestError))
+ v.NiceName = "Alloc"
+ return v
+}
+
+func (err AllocError) ImplementsError() {}
+
+func (err AllocError) SequenceId() uint16 {
+ return err.Sequence
+}
+
+func (err AllocError) BadId() uint32 {
+ return err.BadValue
+}
+
+func (err AllocError) Error() string {
+ fieldVals := make([]string, 0, 4)
+ fieldVals = append(fieldVals, "NiceName: "+err.NiceName)
+ fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", err.Sequence))
+ fieldVals = append(fieldVals, xgb.Sprintf("BadValue: %d", err.BadValue))
+ fieldVals = append(fieldVals, xgb.Sprintf("MinorOpcode: %d", err.MinorOpcode))
+ fieldVals = append(fieldVals, xgb.Sprintf("MajorOpcode: %d", err.MajorOpcode))
+ return "BadAlloc {" + xgb.StringsJoin(fieldVals, ", ") + "}"
+}
+
+func init() {
+ xgb.NewErrorFuncs[11] = AllocErrorNew
+}
+
+// ErrorCopy definition Colormap (12)
+
+const BadColormap = 12
+
+type ColormapError ValueError
+
+func ColormapErrorNew(buf []byte) xgb.Error {
+ v := ColormapError(ValueErrorNew(buf).(ValueError))
+ v.NiceName = "Colormap"
+ return v
+}
+
+func (err ColormapError) ImplementsError() {}
+
+func (err ColormapError) SequenceId() uint16 {
+ return err.Sequence
+}
+
+func (err ColormapError) BadId() uint32 {
+ return err.BadValue
+}
+
+func (err ColormapError) Error() string {
+ fieldVals := make([]string, 0, 4)
+ fieldVals = append(fieldVals, "NiceName: "+err.NiceName)
+ fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", err.Sequence))
+ fieldVals = append(fieldVals, xgb.Sprintf("BadValue: %d", err.BadValue))
+ fieldVals = append(fieldVals, xgb.Sprintf("MinorOpcode: %d", err.MinorOpcode))
+ fieldVals = append(fieldVals, xgb.Sprintf("MajorOpcode: %d", err.MajorOpcode))
+ return "BadColormap {" + xgb.StringsJoin(fieldVals, ", ") + "}"
+}
+
+func init() {
+ xgb.NewErrorFuncs[12] = ColormapErrorNew
+}
+
+// ErrorCopy definition GContext (13)
+
+const BadGContext = 13
+
+type GContextError ValueError
+
+func GContextErrorNew(buf []byte) xgb.Error {
+ v := GContextError(ValueErrorNew(buf).(ValueError))
+ v.NiceName = "GContext"
+ return v
+}
+
+func (err GContextError) ImplementsError() {}
+
+func (err GContextError) SequenceId() uint16 {
+ return err.Sequence
+}
+
+func (err GContextError) BadId() uint32 {
+ return err.BadValue
+}
+
+func (err GContextError) Error() string {
+ fieldVals := make([]string, 0, 4)
+ fieldVals = append(fieldVals, "NiceName: "+err.NiceName)
+ fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", err.Sequence))
+ fieldVals = append(fieldVals, xgb.Sprintf("BadValue: %d", err.BadValue))
+ fieldVals = append(fieldVals, xgb.Sprintf("MinorOpcode: %d", err.MinorOpcode))
+ fieldVals = append(fieldVals, xgb.Sprintf("MajorOpcode: %d", err.MajorOpcode))
+ return "BadGContext {" + xgb.StringsJoin(fieldVals, ", ") + "}"
+}
+
+func init() {
+ xgb.NewErrorFuncs[13] = GContextErrorNew
+}
+
+// ErrorCopy definition IDChoice (14)
+
+const BadIDChoice = 14
+
+type IDChoiceError ValueError
+
+func IDChoiceErrorNew(buf []byte) xgb.Error {
+ v := IDChoiceError(ValueErrorNew(buf).(ValueError))
+ v.NiceName = "IDChoice"
+ return v
+}
+
+func (err IDChoiceError) ImplementsError() {}
+
+func (err IDChoiceError) SequenceId() uint16 {
+ return err.Sequence
+}
+
+func (err IDChoiceError) BadId() uint32 {
+ return err.BadValue
+}
+
+func (err IDChoiceError) Error() string {
+ fieldVals := make([]string, 0, 4)
+ fieldVals = append(fieldVals, "NiceName: "+err.NiceName)
+ fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", err.Sequence))
+ fieldVals = append(fieldVals, xgb.Sprintf("BadValue: %d", err.BadValue))
+ fieldVals = append(fieldVals, xgb.Sprintf("MinorOpcode: %d", err.MinorOpcode))
+ fieldVals = append(fieldVals, xgb.Sprintf("MajorOpcode: %d", err.MajorOpcode))
+ return "BadIDChoice {" + xgb.StringsJoin(fieldVals, ", ") + "}"
+}
+
+func init() {
+ xgb.NewErrorFuncs[14] = IDChoiceErrorNew
+}
+
+// ErrorCopy definition Name (15)
+
+const BadName = 15
+
+type NameError RequestError
+
+func NameErrorNew(buf []byte) xgb.Error {
+ v := NameError(RequestErrorNew(buf).(RequestError))
+ v.NiceName = "Name"
+ return v
+}
+
+func (err NameError) ImplementsError() {}
+
+func (err NameError) SequenceId() uint16 {
+ return err.Sequence
+}
+
+func (err NameError) BadId() uint32 {
+ return err.BadValue
+}
+
+func (err NameError) Error() string {
+ fieldVals := make([]string, 0, 4)
+ fieldVals = append(fieldVals, "NiceName: "+err.NiceName)
+ fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", err.Sequence))
+ fieldVals = append(fieldVals, xgb.Sprintf("BadValue: %d", err.BadValue))
+ fieldVals = append(fieldVals, xgb.Sprintf("MinorOpcode: %d", err.MinorOpcode))
+ fieldVals = append(fieldVals, xgb.Sprintf("MajorOpcode: %d", err.MajorOpcode))
+ return "BadName {" + xgb.StringsJoin(fieldVals, ", ") + "}"
+}
+
+func init() {
+ xgb.NewErrorFuncs[15] = NameErrorNew
+}
+
+// ErrorCopy definition Length (16)
+
+const BadLength = 16
+
+type LengthError RequestError
+
+func LengthErrorNew(buf []byte) xgb.Error {
+ v := LengthError(RequestErrorNew(buf).(RequestError))
+ v.NiceName = "Length"
+ return v
+}
+
+func (err LengthError) ImplementsError() {}
+
+func (err LengthError) SequenceId() uint16 {
+ return err.Sequence
+}
+
+func (err LengthError) BadId() uint32 {
+ return err.BadValue
+}
+
+func (err LengthError) Error() string {
+ fieldVals := make([]string, 0, 4)
+ fieldVals = append(fieldVals, "NiceName: "+err.NiceName)
+ fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", err.Sequence))
+ fieldVals = append(fieldVals, xgb.Sprintf("BadValue: %d", err.BadValue))
+ fieldVals = append(fieldVals, xgb.Sprintf("MinorOpcode: %d", err.MinorOpcode))
+ fieldVals = append(fieldVals, xgb.Sprintf("MajorOpcode: %d", err.MajorOpcode))
+ return "BadLength {" + xgb.StringsJoin(fieldVals, ", ") + "}"
+}
+
+func init() {
+ xgb.NewErrorFuncs[16] = LengthErrorNew
+}
+
+// ErrorCopy definition Implementation (17)
+
+const BadImplementation = 17
+
+type ImplementationError RequestError
+
+func ImplementationErrorNew(buf []byte) xgb.Error {
+ v := ImplementationError(RequestErrorNew(buf).(RequestError))
+ v.NiceName = "Implementation"
+ return v
+}
+
+func (err ImplementationError) ImplementsError() {}
+
+func (err ImplementationError) SequenceId() uint16 {
+ return err.Sequence
+}
+
+func (err ImplementationError) BadId() uint32 {
+ return err.BadValue
+}
+
+func (err ImplementationError) Error() string {
+ fieldVals := make([]string, 0, 4)
+ fieldVals = append(fieldVals, "NiceName: "+err.NiceName)
+ fieldVals = append(fieldVals, xgb.Sprintf("Sequence: %d", err.Sequence))
+ fieldVals = append(fieldVals, xgb.Sprintf("BadValue: %d", err.BadValue))
+ fieldVals = append(fieldVals, xgb.Sprintf("MinorOpcode: %d", err.MinorOpcode))
+ fieldVals = append(fieldVals, xgb.Sprintf("MajorOpcode: %d", err.MajorOpcode))
+ return "BadImplementation {" + xgb.StringsJoin(fieldVals, ", ") + "}"
+}
+
+func init() {
+ xgb.NewErrorFuncs[17] = ImplementationErrorNew
+}
+
+// Request CreateWindow
+// size: xgb.Pad((28 + (4 + xgb.Pad((4 * xgb.PopCount(int(ValueMask)))))))
+type CreateWindowCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for CreateWindow
+func CreateWindow(c *xgb.Conn, Depth byte, Wid Window, Parent Window, X int16, Y int16, Width uint16, Height uint16, BorderWidth uint16, Class uint16, Visual Visualid, ValueMask uint32, ValueList []uint32) CreateWindowCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(createWindowRequest(c, Depth, Wid, Parent, X, Y, Width, Height, BorderWidth, Class, Visual, ValueMask, ValueList), cookie)
+ return CreateWindowCookie{cookie}
+}
+
+func CreateWindowChecked(c *xgb.Conn, Depth byte, Wid Window, Parent Window, X int16, Y int16, Width uint16, Height uint16, BorderWidth uint16, Class uint16, Visual Visualid, ValueMask uint32, ValueList []uint32) CreateWindowCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(createWindowRequest(c, Depth, Wid, Parent, X, Y, Width, Height, BorderWidth, Class, Visual, ValueMask, ValueList), cookie)
+ return CreateWindowCookie{cookie}
+}
+
+func (cook CreateWindowCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for CreateWindow
+func createWindowRequest(c *xgb.Conn, Depth byte, Wid Window, Parent Window, X int16, Y int16, Width uint16, Height uint16, BorderWidth uint16, Class uint16, Visual Visualid, ValueMask uint32, ValueList []uint32) []byte {
+ size := xgb.Pad((28 + (4 + xgb.Pad((4 * xgb.PopCount(int(ValueMask)))))))
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 1 // request opcode
+ b += 1
+
+ buf[b] = Depth
+ b += 1
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Wid))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(Parent))
+ b += 4
+
+ xgb.Put16(buf[b:], uint16(X))
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(Y))
+ b += 2
+
+ xgb.Put16(buf[b:], Width)
+ b += 2
+
+ xgb.Put16(buf[b:], Height)
+ b += 2
+
+ xgb.Put16(buf[b:], BorderWidth)
+ b += 2
+
+ xgb.Put16(buf[b:], Class)
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Visual))
+ b += 4
+
+ xgb.Put32(buf[b:], ValueMask)
+ b += 4
+ for i := 0; i < xgb.PopCount(int(ValueMask)); i++ {
+ xgb.Put32(buf[b:], ValueList[i])
+ b += 4
+ }
+ b = xgb.Pad(b)
+
+ return buf
+}
+
+// Request ChangeWindowAttributes
+// size: xgb.Pad((8 + (4 + xgb.Pad((4 * xgb.PopCount(int(ValueMask)))))))
+type ChangeWindowAttributesCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for ChangeWindowAttributes
+func ChangeWindowAttributes(c *xgb.Conn, Window Window, ValueMask uint32, ValueList []uint32) ChangeWindowAttributesCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(changeWindowAttributesRequest(c, Window, ValueMask, ValueList), cookie)
+ return ChangeWindowAttributesCookie{cookie}
+}
+
+func ChangeWindowAttributesChecked(c *xgb.Conn, Window Window, ValueMask uint32, ValueList []uint32) ChangeWindowAttributesCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(changeWindowAttributesRequest(c, Window, ValueMask, ValueList), cookie)
+ return ChangeWindowAttributesCookie{cookie}
+}
+
+func (cook ChangeWindowAttributesCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for ChangeWindowAttributes
+func changeWindowAttributesRequest(c *xgb.Conn, Window Window, ValueMask uint32, ValueList []uint32) []byte {
+ size := xgb.Pad((8 + (4 + xgb.Pad((4 * xgb.PopCount(int(ValueMask)))))))
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 2 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ 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:], ValueMask)
+ b += 4
+ for i := 0; i < xgb.PopCount(int(ValueMask)); i++ {
+ xgb.Put32(buf[b:], ValueList[i])
+ b += 4
+ }
+ b = xgb.Pad(b)
+
+ return buf
+}
+
+// Request GetWindowAttributes
+// size: 8
+type GetWindowAttributesCookie struct {
+ *xgb.Cookie
+}
+
+func GetWindowAttributes(c *xgb.Conn, Window Window) GetWindowAttributesCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(getWindowAttributesRequest(c, Window), cookie)
+ return GetWindowAttributesCookie{cookie}
+}
+
+func GetWindowAttributesUnchecked(c *xgb.Conn, Window Window) GetWindowAttributesCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(getWindowAttributesRequest(c, Window), cookie)
+ return GetWindowAttributesCookie{cookie}
+}
+
+// Request reply for GetWindowAttributes
+// size: 44
+type GetWindowAttributesReply struct {
+ Sequence uint16
+ Length uint32
+ BackingStore byte
+ Visual Visualid
+ Class uint16
+ BitGravity byte
+ WinGravity byte
+ BackingPlanes uint32
+ BackingPixel uint32
+ SaveUnder bool
+ MapIsInstalled bool
+ MapState byte
+ OverrideRedirect bool
+ Colormap Colormap
+ AllEventMasks uint32
+ YourEventMask uint32
+ DoNotPropagateMask uint16
+ // padding: 2 bytes
+}
+
+// Waits and reads reply data from request GetWindowAttributes
+func (cook GetWindowAttributesCookie) Reply() (*GetWindowAttributesReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return getWindowAttributesReply(buf), nil
+}
+
+// Read reply into structure from buffer for GetWindowAttributes
+func getWindowAttributesReply(buf []byte) *GetWindowAttributesReply {
+ v := new(GetWindowAttributesReply)
+ b := 1 // skip reply determinant
+
+ v.BackingStore = buf[b]
+ b += 1
+
+ v.Sequence = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Length = xgb.Get32(buf[b:]) // 4-byte units
+ b += 4
+
+ v.Visual = Visualid(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Class = xgb.Get16(buf[b:])
+ b += 2
+
+ v.BitGravity = buf[b]
+ b += 1
+
+ v.WinGravity = buf[b]
+ b += 1
+
+ v.BackingPlanes = xgb.Get32(buf[b:])
+ b += 4
+
+ v.BackingPixel = xgb.Get32(buf[b:])
+ b += 4
+
+ if buf[b] == 1 {
+ v.SaveUnder = true
+ } else {
+ v.SaveUnder = false
+ }
+ b += 1
+
+ if buf[b] == 1 {
+ v.MapIsInstalled = true
+ } else {
+ v.MapIsInstalled = false
+ }
+ b += 1
+
+ v.MapState = buf[b]
+ b += 1
+
+ if buf[b] == 1 {
+ v.OverrideRedirect = true
+ } else {
+ v.OverrideRedirect = false
+ }
+ b += 1
+
+ v.Colormap = Colormap(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.AllEventMasks = xgb.Get32(buf[b:])
+ b += 4
+
+ v.YourEventMask = xgb.Get32(buf[b:])
+ b += 4
+
+ v.DoNotPropagateMask = xgb.Get16(buf[b:])
+ b += 2
+
+ b += 2 // padding
+
+ return v
+}
+
+// Write request to wire for GetWindowAttributes
+func getWindowAttributesRequest(c *xgb.Conn, Window Window) []byte {
+ size := 8
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 3 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ 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 DestroyWindow
+// size: 8
+type DestroyWindowCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for DestroyWindow
+func DestroyWindow(c *xgb.Conn, Window Window) DestroyWindowCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(destroyWindowRequest(c, Window), cookie)
+ return DestroyWindowCookie{cookie}
+}
+
+func DestroyWindowChecked(c *xgb.Conn, Window Window) DestroyWindowCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(destroyWindowRequest(c, Window), cookie)
+ return DestroyWindowCookie{cookie}
+}
+
+func (cook DestroyWindowCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for DestroyWindow
+func destroyWindowRequest(c *xgb.Conn, Window Window) []byte {
+ size := 8
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 4 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ 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 DestroySubwindows
+// size: 8
+type DestroySubwindowsCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for DestroySubwindows
+func DestroySubwindows(c *xgb.Conn, Window Window) DestroySubwindowsCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(destroySubwindowsRequest(c, Window), cookie)
+ return DestroySubwindowsCookie{cookie}
+}
+
+func DestroySubwindowsChecked(c *xgb.Conn, Window Window) DestroySubwindowsCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(destroySubwindowsRequest(c, Window), cookie)
+ return DestroySubwindowsCookie{cookie}
+}
+
+func (cook DestroySubwindowsCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for DestroySubwindows
+func destroySubwindowsRequest(c *xgb.Conn, Window Window) []byte {
+ size := 8
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 5 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ 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 ChangeSaveSet
+// size: 8
+type ChangeSaveSetCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for ChangeSaveSet
+func ChangeSaveSet(c *xgb.Conn, Mode byte, Window Window) ChangeSaveSetCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(changeSaveSetRequest(c, Mode, Window), cookie)
+ return ChangeSaveSetCookie{cookie}
+}
+
+func ChangeSaveSetChecked(c *xgb.Conn, Mode byte, Window Window) ChangeSaveSetCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(changeSaveSetRequest(c, Mode, Window), cookie)
+ return ChangeSaveSetCookie{cookie}
+}
+
+func (cook ChangeSaveSetCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for ChangeSaveSet
+func changeSaveSetRequest(c *xgb.Conn, Mode byte, Window Window) []byte {
+ size := 8
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 6 // request opcode
+ b += 1
+
+ buf[b] = Mode
+ 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 ReparentWindow
+// size: 16
+type ReparentWindowCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for ReparentWindow
+func ReparentWindow(c *xgb.Conn, Window Window, Parent Window, X int16, Y int16) ReparentWindowCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(reparentWindowRequest(c, Window, Parent, X, Y), cookie)
+ return ReparentWindowCookie{cookie}
+}
+
+func ReparentWindowChecked(c *xgb.Conn, Window Window, Parent Window, X int16, Y int16) ReparentWindowCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(reparentWindowRequest(c, Window, Parent, X, Y), cookie)
+ return ReparentWindowCookie{cookie}
+}
+
+func (cook ReparentWindowCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for ReparentWindow
+func reparentWindowRequest(c *xgb.Conn, Window Window, Parent Window, X int16, Y int16) []byte {
+ size := 16
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 7 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ 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(Parent))
+ b += 4
+
+ xgb.Put16(buf[b:], uint16(X))
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(Y))
+ b += 2
+
+ return buf
+}
+
+// Request MapWindow
+// size: 8
+type MapWindowCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for MapWindow
+func MapWindow(c *xgb.Conn, Window Window) MapWindowCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(mapWindowRequest(c, Window), cookie)
+ return MapWindowCookie{cookie}
+}
+
+func MapWindowChecked(c *xgb.Conn, Window Window) MapWindowCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(mapWindowRequest(c, Window), cookie)
+ return MapWindowCookie{cookie}
+}
+
+func (cook MapWindowCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for MapWindow
+func mapWindowRequest(c *xgb.Conn, Window Window) []byte {
+ size := 8
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 8 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ 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 MapSubwindows
+// size: 8
+type MapSubwindowsCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for MapSubwindows
+func MapSubwindows(c *xgb.Conn, Window Window) MapSubwindowsCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(mapSubwindowsRequest(c, Window), cookie)
+ return MapSubwindowsCookie{cookie}
+}
+
+func MapSubwindowsChecked(c *xgb.Conn, Window Window) MapSubwindowsCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(mapSubwindowsRequest(c, Window), cookie)
+ return MapSubwindowsCookie{cookie}
+}
+
+func (cook MapSubwindowsCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for MapSubwindows
+func mapSubwindowsRequest(c *xgb.Conn, Window Window) []byte {
+ size := 8
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 9 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ 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 UnmapWindow
+// size: 8
+type UnmapWindowCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for UnmapWindow
+func UnmapWindow(c *xgb.Conn, Window Window) UnmapWindowCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(unmapWindowRequest(c, Window), cookie)
+ return UnmapWindowCookie{cookie}
+}
+
+func UnmapWindowChecked(c *xgb.Conn, Window Window) UnmapWindowCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(unmapWindowRequest(c, Window), cookie)
+ return UnmapWindowCookie{cookie}
+}
+
+func (cook UnmapWindowCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for UnmapWindow
+func unmapWindowRequest(c *xgb.Conn, Window Window) []byte {
+ size := 8
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 10 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ 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 UnmapSubwindows
+// size: 8
+type UnmapSubwindowsCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for UnmapSubwindows
+func UnmapSubwindows(c *xgb.Conn, Window Window) UnmapSubwindowsCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(unmapSubwindowsRequest(c, Window), cookie)
+ return UnmapSubwindowsCookie{cookie}
+}
+
+func UnmapSubwindowsChecked(c *xgb.Conn, Window Window) UnmapSubwindowsCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(unmapSubwindowsRequest(c, Window), cookie)
+ return UnmapSubwindowsCookie{cookie}
+}
+
+func (cook UnmapSubwindowsCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for UnmapSubwindows
+func unmapSubwindowsRequest(c *xgb.Conn, Window Window) []byte {
+ size := 8
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 11 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ 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 ConfigureWindow
+// size: xgb.Pad((10 + (2 + xgb.Pad((4 * xgb.PopCount(int(ValueMask)))))))
+type ConfigureWindowCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for ConfigureWindow
+func ConfigureWindow(c *xgb.Conn, Window Window, ValueMask uint16, ValueList []uint32) ConfigureWindowCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(configureWindowRequest(c, Window, ValueMask, ValueList), cookie)
+ return ConfigureWindowCookie{cookie}
+}
+
+func ConfigureWindowChecked(c *xgb.Conn, Window Window, ValueMask uint16, ValueList []uint32) ConfigureWindowCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(configureWindowRequest(c, Window, ValueMask, ValueList), cookie)
+ return ConfigureWindowCookie{cookie}
+}
+
+func (cook ConfigureWindowCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for ConfigureWindow
+func configureWindowRequest(c *xgb.Conn, Window Window, ValueMask uint16, ValueList []uint32) []byte {
+ size := xgb.Pad((10 + (2 + xgb.Pad((4 * xgb.PopCount(int(ValueMask)))))))
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 12 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ 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:], ValueMask)
+ b += 2
+
+ b += 2 // padding
+
+ for i := 0; i < xgb.PopCount(int(ValueMask)); i++ {
+ xgb.Put32(buf[b:], ValueList[i])
+ b += 4
+ }
+ b = xgb.Pad(b)
+
+ return buf
+}
+
+// Request CirculateWindow
+// size: 8
+type CirculateWindowCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for CirculateWindow
+func CirculateWindow(c *xgb.Conn, Direction byte, Window Window) CirculateWindowCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(circulateWindowRequest(c, Direction, Window), cookie)
+ return CirculateWindowCookie{cookie}
+}
+
+func CirculateWindowChecked(c *xgb.Conn, Direction byte, Window Window) CirculateWindowCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(circulateWindowRequest(c, Direction, Window), cookie)
+ return CirculateWindowCookie{cookie}
+}
+
+func (cook CirculateWindowCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for CirculateWindow
+func circulateWindowRequest(c *xgb.Conn, Direction byte, Window Window) []byte {
+ size := 8
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 13 // request opcode
+ b += 1
+
+ buf[b] = Direction
+ 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 GetGeometry
+// size: 8
+type GetGeometryCookie struct {
+ *xgb.Cookie
+}
+
+func GetGeometry(c *xgb.Conn, Drawable Drawable) GetGeometryCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(getGeometryRequest(c, Drawable), cookie)
+ return GetGeometryCookie{cookie}
+}
+
+func GetGeometryUnchecked(c *xgb.Conn, Drawable Drawable) GetGeometryCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(getGeometryRequest(c, Drawable), cookie)
+ return GetGeometryCookie{cookie}
+}
+
+// Request reply for GetGeometry
+// size: 24
+type GetGeometryReply struct {
+ Sequence uint16
+ Length uint32
+ Depth byte
+ Root Window
+ X int16
+ Y int16
+ Width uint16
+ Height uint16
+ BorderWidth uint16
+ // padding: 2 bytes
+}
+
+// Waits and reads reply data from request GetGeometry
+func (cook GetGeometryCookie) Reply() (*GetGeometryReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return getGeometryReply(buf), nil
+}
+
+// Read reply into structure from buffer for GetGeometry
+func getGeometryReply(buf []byte) *GetGeometryReply {
+ v := new(GetGeometryReply)
+ b := 1 // skip reply determinant
+
+ v.Depth = 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 = Window(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.BorderWidth = xgb.Get16(buf[b:])
+ b += 2
+
+ b += 2 // padding
+
+ return v
+}
+
+// Write request to wire for GetGeometry
+func getGeometryRequest(c *xgb.Conn, Drawable Drawable) []byte {
+ size := 8
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 14 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Drawable))
+ b += 4
+
+ return buf
+}
+
+// Request QueryTree
+// size: 8
+type QueryTreeCookie struct {
+ *xgb.Cookie
+}
+
+func QueryTree(c *xgb.Conn, Window Window) QueryTreeCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(queryTreeRequest(c, Window), cookie)
+ return QueryTreeCookie{cookie}
+}
+
+func QueryTreeUnchecked(c *xgb.Conn, Window Window) QueryTreeCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(queryTreeRequest(c, Window), cookie)
+ return QueryTreeCookie{cookie}
+}
+
+// Request reply for QueryTree
+// size: (32 + xgb.Pad((int(ChildrenLen) * 4)))
+type QueryTreeReply struct {
+ Sequence uint16
+ Length uint32
+ // padding: 1 bytes
+ Root Window
+ Parent Window
+ ChildrenLen uint16
+ // padding: 14 bytes
+ Children []Window // size: xgb.Pad((int(ChildrenLen) * 4))
+}
+
+// Waits and reads reply data from request QueryTree
+func (cook QueryTreeCookie) Reply() (*QueryTreeReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return queryTreeReply(buf), nil
+}
+
+// Read reply into structure from buffer for QueryTree
+func queryTreeReply(buf []byte) *QueryTreeReply {
+ v := new(QueryTreeReply)
+ 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.Root = Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Parent = Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.ChildrenLen = xgb.Get16(buf[b:])
+ b += 2
+
+ b += 14 // padding
+
+ v.Children = make([]Window, v.ChildrenLen)
+ for i := 0; i < int(v.ChildrenLen); i++ {
+ v.Children[i] = Window(xgb.Get32(buf[b:]))
+ b += 4
+ }
+ b = xgb.Pad(b)
+
+ return v
+}
+
+// Write request to wire for QueryTree
+func queryTreeRequest(c *xgb.Conn, Window Window) []byte {
+ size := 8
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 15 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ 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 InternAtom
+// size: xgb.Pad((8 + xgb.Pad((int(NameLen) * 1))))
+type InternAtomCookie struct {
+ *xgb.Cookie
+}
+
+func InternAtom(c *xgb.Conn, OnlyIfExists bool, NameLen uint16, Name string) InternAtomCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(internAtomRequest(c, OnlyIfExists, NameLen, Name), cookie)
+ return InternAtomCookie{cookie}
+}
+
+func InternAtomUnchecked(c *xgb.Conn, OnlyIfExists bool, NameLen uint16, Name string) InternAtomCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(internAtomRequest(c, OnlyIfExists, NameLen, Name), cookie)
+ return InternAtomCookie{cookie}
+}
+
+// Request reply for InternAtom
+// size: 12
+type InternAtomReply struct {
+ Sequence uint16
+ Length uint32
+ // padding: 1 bytes
+ Atom Atom
+}
+
+// Waits and reads reply data from request InternAtom
+func (cook InternAtomCookie) Reply() (*InternAtomReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return internAtomReply(buf), nil
+}
+
+// Read reply into structure from buffer for InternAtom
+func internAtomReply(buf []byte) *InternAtomReply {
+ v := new(InternAtomReply)
+ 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.Atom = Atom(xgb.Get32(buf[b:]))
+ b += 4
+
+ return v
+}
+
+// Write request to wire for InternAtom
+func internAtomRequest(c *xgb.Conn, OnlyIfExists bool, NameLen uint16, Name string) []byte {
+ size := xgb.Pad((8 + xgb.Pad((int(NameLen) * 1))))
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 16 // request opcode
+ b += 1
+
+ if OnlyIfExists {
+ buf[b] = 1
+ } else {
+ buf[b] = 0
+ }
+ b += 1
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put16(buf[b:], NameLen)
+ b += 2
+
+ b += 2 // padding
+
+ copy(buf[b:], Name[:NameLen])
+ b += xgb.Pad(int(NameLen))
+
+ return buf
+}
+
+// Request GetAtomName
+// size: 8
+type GetAtomNameCookie struct {
+ *xgb.Cookie
+}
+
+func GetAtomName(c *xgb.Conn, Atom Atom) GetAtomNameCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(getAtomNameRequest(c, Atom), cookie)
+ return GetAtomNameCookie{cookie}
+}
+
+func GetAtomNameUnchecked(c *xgb.Conn, Atom Atom) GetAtomNameCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(getAtomNameRequest(c, Atom), cookie)
+ return GetAtomNameCookie{cookie}
+}
+
+// Request reply for GetAtomName
+// size: (32 + xgb.Pad((int(NameLen) * 1)))
+type GetAtomNameReply struct {
+ Sequence uint16
+ Length uint32
+ // padding: 1 bytes
+ NameLen uint16
+ // padding: 22 bytes
+ Name string // size: xgb.Pad((int(NameLen) * 1))
+}
+
+// Waits and reads reply data from request GetAtomName
+func (cook GetAtomNameCookie) Reply() (*GetAtomNameReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return getAtomNameReply(buf), nil
+}
+
+// Read reply into structure from buffer for GetAtomName
+func getAtomNameReply(buf []byte) *GetAtomNameReply {
+ v := new(GetAtomNameReply)
+ 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.NameLen = xgb.Get16(buf[b:])
+ b += 2
+
+ b += 22 // padding
+
+ {
+ byteString := make([]byte, v.NameLen)
+ copy(byteString[:v.NameLen], buf[b:])
+ v.Name = string(byteString)
+ b += xgb.Pad(int(v.NameLen))
+ }
+
+ return v
+}
+
+// Write request to wire for GetAtomName
+func getAtomNameRequest(c *xgb.Conn, Atom Atom) []byte {
+ size := 8
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 17 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Atom))
+ b += 4
+
+ return buf
+}
+
+// Request ChangeProperty
+// size: xgb.Pad((24 + xgb.Pad((((int(DataLen) * int(Format)) / 8) * 1))))
+type ChangePropertyCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for ChangeProperty
+func ChangeProperty(c *xgb.Conn, Mode byte, Window Window, Property Atom, Type Atom, Format byte, DataLen uint32, Data []byte) ChangePropertyCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(changePropertyRequest(c, Mode, Window, Property, Type, Format, DataLen, Data), cookie)
+ return ChangePropertyCookie{cookie}
+}
+
+func ChangePropertyChecked(c *xgb.Conn, Mode byte, Window Window, Property Atom, Type Atom, Format byte, DataLen uint32, Data []byte) ChangePropertyCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(changePropertyRequest(c, Mode, Window, Property, Type, Format, DataLen, Data), cookie)
+ return ChangePropertyCookie{cookie}
+}
+
+func (cook ChangePropertyCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for ChangeProperty
+func changePropertyRequest(c *xgb.Conn, Mode byte, Window Window, Property Atom, Type Atom, Format byte, DataLen uint32, Data []byte) []byte {
+ size := xgb.Pad((24 + xgb.Pad((((int(DataLen) * int(Format)) / 8) * 1))))
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 18 // request opcode
+ b += 1
+
+ buf[b] = Mode
+ 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(Property))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(Type))
+ b += 4
+
+ buf[b] = Format
+ b += 1
+
+ b += 3 // padding
+
+ xgb.Put32(buf[b:], DataLen)
+ b += 4
+
+ copy(buf[b:], Data[:((int(DataLen)*int(Format))/8)])
+ b += xgb.Pad(int(((int(DataLen) * int(Format)) / 8)))
+
+ return buf
+}
+
+// Request DeleteProperty
+// size: 12
+type DeletePropertyCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for DeleteProperty
+func DeleteProperty(c *xgb.Conn, Window Window, Property Atom) DeletePropertyCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(deletePropertyRequest(c, Window, Property), cookie)
+ return DeletePropertyCookie{cookie}
+}
+
+func DeletePropertyChecked(c *xgb.Conn, Window Window, Property Atom) DeletePropertyCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(deletePropertyRequest(c, Window, Property), cookie)
+ return DeletePropertyCookie{cookie}
+}
+
+func (cook DeletePropertyCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for DeleteProperty
+func deletePropertyRequest(c *xgb.Conn, Window Window, Property Atom) []byte {
+ size := 12
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 19 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ 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(Property))
+ b += 4
+
+ return buf
+}
+
+// Request GetProperty
+// size: 24
+type GetPropertyCookie struct {
+ *xgb.Cookie
+}
+
+func GetProperty(c *xgb.Conn, Delete bool, Window Window, Property Atom, Type Atom, LongOffset uint32, LongLength uint32) GetPropertyCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(getPropertyRequest(c, Delete, Window, Property, Type, LongOffset, LongLength), cookie)
+ return GetPropertyCookie{cookie}
+}
+
+func GetPropertyUnchecked(c *xgb.Conn, Delete bool, Window Window, Property Atom, Type Atom, LongOffset uint32, LongLength uint32) GetPropertyCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(getPropertyRequest(c, Delete, Window, Property, Type, LongOffset, LongLength), cookie)
+ return GetPropertyCookie{cookie}
+}
+
+// Request reply for GetProperty
+// size: (32 + xgb.Pad(((int(ValueLen) * (int(Format) / 8)) * 1)))
+type GetPropertyReply struct {
+ Sequence uint16
+ Length uint32
+ Format byte
+ Type Atom
+ BytesAfter uint32
+ ValueLen uint32
+ // padding: 12 bytes
+ Value []byte // size: xgb.Pad(((int(ValueLen) * (int(Format) / 8)) * 1))
+}
+
+// Waits and reads reply data from request GetProperty
+func (cook GetPropertyCookie) Reply() (*GetPropertyReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return getPropertyReply(buf), nil
+}
+
+// Read reply into structure from buffer for GetProperty
+func getPropertyReply(buf []byte) *GetPropertyReply {
+ v := new(GetPropertyReply)
+ 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 = Atom(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.BytesAfter = xgb.Get32(buf[b:])
+ b += 4
+
+ v.ValueLen = xgb.Get32(buf[b:])
+ b += 4
+
+ b += 12 // padding
+
+ v.Value = make([]byte, (int(v.ValueLen) * (int(v.Format) / 8)))
+ copy(v.Value[:(int(v.ValueLen)*(int(v.Format)/8))], buf[b:])
+ b += xgb.Pad(int((int(v.ValueLen) * (int(v.Format) / 8))))
+
+ return v
+}
+
+// Write request to wire for GetProperty
+func getPropertyRequest(c *xgb.Conn, Delete bool, Window Window, Property Atom, Type Atom, LongOffset uint32, LongLength uint32) []byte {
+ size := 24
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 20 // request opcode
+ b += 1
+
+ if Delete {
+ buf[b] = 1
+ } else {
+ buf[b] = 0
+ }
+ 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(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
+
+ return buf
+}
+
+// Request ListProperties
+// size: 8
+type ListPropertiesCookie struct {
+ *xgb.Cookie
+}
+
+func ListProperties(c *xgb.Conn, Window Window) ListPropertiesCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(listPropertiesRequest(c, Window), cookie)
+ return ListPropertiesCookie{cookie}
+}
+
+func ListPropertiesUnchecked(c *xgb.Conn, Window Window) ListPropertiesCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(listPropertiesRequest(c, Window), cookie)
+ return ListPropertiesCookie{cookie}
+}
+
+// Request reply for ListProperties
+// size: (32 + xgb.Pad((int(AtomsLen) * 4)))
+type ListPropertiesReply struct {
+ Sequence uint16
+ Length uint32
+ // padding: 1 bytes
+ AtomsLen uint16
+ // padding: 22 bytes
+ Atoms []Atom // size: xgb.Pad((int(AtomsLen) * 4))
+}
+
+// Waits and reads reply data from request ListProperties
+func (cook ListPropertiesCookie) Reply() (*ListPropertiesReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return listPropertiesReply(buf), nil
+}
+
+// Read reply into structure from buffer for ListProperties
+func listPropertiesReply(buf []byte) *ListPropertiesReply {
+ v := new(ListPropertiesReply)
+ 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.AtomsLen = xgb.Get16(buf[b:])
+ b += 2
+
+ b += 22 // padding
+
+ v.Atoms = make([]Atom, v.AtomsLen)
+ for i := 0; i < int(v.AtomsLen); i++ {
+ v.Atoms[i] = Atom(xgb.Get32(buf[b:]))
+ b += 4
+ }
+ b = xgb.Pad(b)
+
+ return v
+}
+
+// Write request to wire for ListProperties
+func listPropertiesRequest(c *xgb.Conn, Window Window) []byte {
+ size := 8
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 21 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ 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 SetSelectionOwner
+// size: 16
+type SetSelectionOwnerCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for SetSelectionOwner
+func SetSelectionOwner(c *xgb.Conn, Owner Window, Selection Atom, Time Timestamp) SetSelectionOwnerCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(setSelectionOwnerRequest(c, Owner, Selection, Time), cookie)
+ return SetSelectionOwnerCookie{cookie}
+}
+
+func SetSelectionOwnerChecked(c *xgb.Conn, Owner Window, Selection Atom, Time Timestamp) SetSelectionOwnerCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(setSelectionOwnerRequest(c, Owner, Selection, Time), cookie)
+ return SetSelectionOwnerCookie{cookie}
+}
+
+func (cook SetSelectionOwnerCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for SetSelectionOwner
+func setSelectionOwnerRequest(c *xgb.Conn, Owner Window, Selection Atom, Time Timestamp) []byte {
+ size := 16
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 22 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Owner))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(Selection))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(Time))
+ b += 4
+
+ return buf
+}
+
+// Request GetSelectionOwner
+// size: 8
+type GetSelectionOwnerCookie struct {
+ *xgb.Cookie
+}
+
+func GetSelectionOwner(c *xgb.Conn, Selection Atom) GetSelectionOwnerCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(getSelectionOwnerRequest(c, Selection), cookie)
+ return GetSelectionOwnerCookie{cookie}
+}
+
+func GetSelectionOwnerUnchecked(c *xgb.Conn, Selection Atom) GetSelectionOwnerCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(getSelectionOwnerRequest(c, Selection), cookie)
+ return GetSelectionOwnerCookie{cookie}
+}
+
+// Request reply for GetSelectionOwner
+// size: 12
+type GetSelectionOwnerReply struct {
+ Sequence uint16
+ Length uint32
+ // padding: 1 bytes
+ Owner Window
+}
+
+// Waits and reads reply data from request GetSelectionOwner
+func (cook GetSelectionOwnerCookie) Reply() (*GetSelectionOwnerReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return getSelectionOwnerReply(buf), nil
+}
+
+// Read reply into structure from buffer for GetSelectionOwner
+func getSelectionOwnerReply(buf []byte) *GetSelectionOwnerReply {
+ v := new(GetSelectionOwnerReply)
+ 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.Owner = Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ return v
+}
+
+// Write request to wire for GetSelectionOwner
+func getSelectionOwnerRequest(c *xgb.Conn, Selection Atom) []byte {
+ size := 8
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 23 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Selection))
+ b += 4
+
+ return buf
+}
+
+// Request ConvertSelection
+// size: 24
+type ConvertSelectionCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for ConvertSelection
+func ConvertSelection(c *xgb.Conn, Requestor Window, Selection Atom, Target Atom, Property Atom, Time Timestamp) ConvertSelectionCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(convertSelectionRequest(c, Requestor, Selection, Target, Property, Time), cookie)
+ return ConvertSelectionCookie{cookie}
+}
+
+func ConvertSelectionChecked(c *xgb.Conn, Requestor Window, Selection Atom, Target Atom, Property Atom, Time Timestamp) ConvertSelectionCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(convertSelectionRequest(c, Requestor, Selection, Target, Property, Time), cookie)
+ return ConvertSelectionCookie{cookie}
+}
+
+func (cook ConvertSelectionCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for ConvertSelection
+func convertSelectionRequest(c *xgb.Conn, Requestor Window, Selection Atom, Target Atom, Property Atom, Time Timestamp) []byte {
+ size := 24
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 24 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Requestor))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(Selection))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(Target))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(Property))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(Time))
+ b += 4
+
+ return buf
+}
+
+// Request SendEvent
+// size: 44
+type SendEventCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for SendEvent
+func SendEvent(c *xgb.Conn, Propagate bool, Destination Window, EventMask uint32, Event string) SendEventCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(sendEventRequest(c, Propagate, Destination, EventMask, Event), cookie)
+ return SendEventCookie{cookie}
+}
+
+func SendEventChecked(c *xgb.Conn, Propagate bool, Destination Window, EventMask uint32, Event string) SendEventCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(sendEventRequest(c, Propagate, Destination, EventMask, Event), cookie)
+ return SendEventCookie{cookie}
+}
+
+func (cook SendEventCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for SendEvent
+func sendEventRequest(c *xgb.Conn, Propagate bool, Destination Window, EventMask uint32, Event string) []byte {
+ size := 44
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 25 // request opcode
+ b += 1
+
+ if Propagate {
+ buf[b] = 1
+ } else {
+ buf[b] = 0
+ }
+ b += 1
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Destination))
+ b += 4
+
+ xgb.Put32(buf[b:], EventMask)
+ b += 4
+
+ copy(buf[b:], Event[:32])
+ b += xgb.Pad(int(32))
+
+ return buf
+}
+
+// Request GrabPointer
+// size: 24
+type GrabPointerCookie struct {
+ *xgb.Cookie
+}
+
+func GrabPointer(c *xgb.Conn, OwnerEvents bool, GrabWindow Window, EventMask uint16, PointerMode byte, KeyboardMode byte, ConfineTo Window, Cursor Cursor, Time Timestamp) GrabPointerCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(grabPointerRequest(c, OwnerEvents, GrabWindow, EventMask, PointerMode, KeyboardMode, ConfineTo, Cursor, Time), cookie)
+ return GrabPointerCookie{cookie}
+}
+
+func GrabPointerUnchecked(c *xgb.Conn, OwnerEvents bool, GrabWindow Window, EventMask uint16, PointerMode byte, KeyboardMode byte, ConfineTo Window, Cursor Cursor, Time Timestamp) GrabPointerCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(grabPointerRequest(c, OwnerEvents, GrabWindow, EventMask, PointerMode, KeyboardMode, ConfineTo, Cursor, Time), cookie)
+ return GrabPointerCookie{cookie}
+}
+
+// Request reply for GrabPointer
+// size: 8
+type GrabPointerReply struct {
+ Sequence uint16
+ Length uint32
+ Status byte
+}
+
+// Waits and reads reply data from request GrabPointer
+func (cook GrabPointerCookie) Reply() (*GrabPointerReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return grabPointerReply(buf), nil
+}
+
+// Read reply into structure from buffer for GrabPointer
+func grabPointerReply(buf []byte) *GrabPointerReply {
+ v := new(GrabPointerReply)
+ 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
+
+ return v
+}
+
+// Write request to wire for GrabPointer
+func grabPointerRequest(c *xgb.Conn, OwnerEvents bool, GrabWindow Window, EventMask uint16, PointerMode byte, KeyboardMode byte, ConfineTo Window, Cursor Cursor, Time Timestamp) []byte {
+ size := 24
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 26 // request opcode
+ b += 1
+
+ if OwnerEvents {
+ buf[b] = 1
+ } else {
+ buf[b] = 0
+ }
+ b += 1
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(GrabWindow))
+ b += 4
+
+ xgb.Put16(buf[b:], EventMask)
+ b += 2
+
+ buf[b] = PointerMode
+ b += 1
+
+ buf[b] = KeyboardMode
+ b += 1
+
+ xgb.Put32(buf[b:], uint32(ConfineTo))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(Cursor))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(Time))
+ b += 4
+
+ return buf
+}
+
+// Request UngrabPointer
+// size: 8
+type UngrabPointerCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for UngrabPointer
+func UngrabPointer(c *xgb.Conn, Time Timestamp) UngrabPointerCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(ungrabPointerRequest(c, Time), cookie)
+ return UngrabPointerCookie{cookie}
+}
+
+func UngrabPointerChecked(c *xgb.Conn, Time Timestamp) UngrabPointerCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(ungrabPointerRequest(c, Time), cookie)
+ return UngrabPointerCookie{cookie}
+}
+
+func (cook UngrabPointerCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for UngrabPointer
+func ungrabPointerRequest(c *xgb.Conn, Time Timestamp) []byte {
+ size := 8
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 27 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Time))
+ b += 4
+
+ return buf
+}
+
+// Request GrabButton
+// size: 24
+type GrabButtonCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for GrabButton
+func GrabButton(c *xgb.Conn, OwnerEvents bool, GrabWindow Window, EventMask uint16, PointerMode byte, KeyboardMode byte, ConfineTo Window, Cursor Cursor, Button byte, Modifiers uint16) GrabButtonCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(grabButtonRequest(c, OwnerEvents, GrabWindow, EventMask, PointerMode, KeyboardMode, ConfineTo, Cursor, Button, Modifiers), cookie)
+ return GrabButtonCookie{cookie}
+}
+
+func GrabButtonChecked(c *xgb.Conn, OwnerEvents bool, GrabWindow Window, EventMask uint16, PointerMode byte, KeyboardMode byte, ConfineTo Window, Cursor Cursor, Button byte, Modifiers uint16) GrabButtonCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(grabButtonRequest(c, OwnerEvents, GrabWindow, EventMask, PointerMode, KeyboardMode, ConfineTo, Cursor, Button, Modifiers), cookie)
+ return GrabButtonCookie{cookie}
+}
+
+func (cook GrabButtonCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for GrabButton
+func grabButtonRequest(c *xgb.Conn, OwnerEvents bool, GrabWindow Window, EventMask uint16, PointerMode byte, KeyboardMode byte, ConfineTo Window, Cursor Cursor, Button byte, Modifiers uint16) []byte {
+ size := 24
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 28 // request opcode
+ b += 1
+
+ if OwnerEvents {
+ buf[b] = 1
+ } else {
+ buf[b] = 0
+ }
+ b += 1
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(GrabWindow))
+ b += 4
+
+ xgb.Put16(buf[b:], EventMask)
+ b += 2
+
+ buf[b] = PointerMode
+ b += 1
+
+ buf[b] = KeyboardMode
+ b += 1
+
+ xgb.Put32(buf[b:], uint32(ConfineTo))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(Cursor))
+ b += 4
+
+ buf[b] = Button
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], Modifiers)
+ b += 2
+
+ return buf
+}
+
+// Request UngrabButton
+// size: 12
+type UngrabButtonCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for UngrabButton
+func UngrabButton(c *xgb.Conn, Button byte, GrabWindow Window, Modifiers uint16) UngrabButtonCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(ungrabButtonRequest(c, Button, GrabWindow, Modifiers), cookie)
+ return UngrabButtonCookie{cookie}
+}
+
+func UngrabButtonChecked(c *xgb.Conn, Button byte, GrabWindow Window, Modifiers uint16) UngrabButtonCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(ungrabButtonRequest(c, Button, GrabWindow, Modifiers), cookie)
+ return UngrabButtonCookie{cookie}
+}
+
+func (cook UngrabButtonCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for UngrabButton
+func ungrabButtonRequest(c *xgb.Conn, Button byte, GrabWindow Window, Modifiers uint16) []byte {
+ size := 12
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 29 // request opcode
+ b += 1
+
+ buf[b] = Button
+ b += 1
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(GrabWindow))
+ b += 4
+
+ xgb.Put16(buf[b:], Modifiers)
+ b += 2
+
+ b += 2 // padding
+
+ return buf
+}
+
+// Request ChangeActivePointerGrab
+// size: 16
+type ChangeActivePointerGrabCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for ChangeActivePointerGrab
+func ChangeActivePointerGrab(c *xgb.Conn, Cursor Cursor, Time Timestamp, EventMask uint16) ChangeActivePointerGrabCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(changeActivePointerGrabRequest(c, Cursor, Time, EventMask), cookie)
+ return ChangeActivePointerGrabCookie{cookie}
+}
+
+func ChangeActivePointerGrabChecked(c *xgb.Conn, Cursor Cursor, Time Timestamp, EventMask uint16) ChangeActivePointerGrabCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(changeActivePointerGrabRequest(c, Cursor, Time, EventMask), cookie)
+ return ChangeActivePointerGrabCookie{cookie}
+}
+
+func (cook ChangeActivePointerGrabCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for ChangeActivePointerGrab
+func changeActivePointerGrabRequest(c *xgb.Conn, Cursor Cursor, Time Timestamp, EventMask uint16) []byte {
+ size := 16
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 30 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Cursor))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(Time))
+ b += 4
+
+ xgb.Put16(buf[b:], EventMask)
+ b += 2
+
+ b += 2 // padding
+
+ return buf
+}
+
+// Request GrabKeyboard
+// size: 16
+type GrabKeyboardCookie struct {
+ *xgb.Cookie
+}
+
+func GrabKeyboard(c *xgb.Conn, OwnerEvents bool, GrabWindow Window, Time Timestamp, PointerMode byte, KeyboardMode byte) GrabKeyboardCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(grabKeyboardRequest(c, OwnerEvents, GrabWindow, Time, PointerMode, KeyboardMode), cookie)
+ return GrabKeyboardCookie{cookie}
+}
+
+func GrabKeyboardUnchecked(c *xgb.Conn, OwnerEvents bool, GrabWindow Window, Time Timestamp, PointerMode byte, KeyboardMode byte) GrabKeyboardCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(grabKeyboardRequest(c, OwnerEvents, GrabWindow, Time, PointerMode, KeyboardMode), cookie)
+ return GrabKeyboardCookie{cookie}
+}
+
+// Request reply for GrabKeyboard
+// size: 8
+type GrabKeyboardReply struct {
+ Sequence uint16
+ Length uint32
+ Status byte
+}
+
+// Waits and reads reply data from request GrabKeyboard
+func (cook GrabKeyboardCookie) Reply() (*GrabKeyboardReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return grabKeyboardReply(buf), nil
+}
+
+// Read reply into structure from buffer for GrabKeyboard
+func grabKeyboardReply(buf []byte) *GrabKeyboardReply {
+ v := new(GrabKeyboardReply)
+ 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
+
+ return v
+}
+
+// Write request to wire for GrabKeyboard
+func grabKeyboardRequest(c *xgb.Conn, OwnerEvents bool, GrabWindow Window, Time Timestamp, PointerMode byte, KeyboardMode byte) []byte {
+ size := 16
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 31 // request opcode
+ b += 1
+
+ if OwnerEvents {
+ buf[b] = 1
+ } else {
+ buf[b] = 0
+ }
+ b += 1
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(GrabWindow))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(Time))
+ b += 4
+
+ buf[b] = PointerMode
+ b += 1
+
+ buf[b] = KeyboardMode
+ b += 1
+
+ b += 2 // padding
+
+ return buf
+}
+
+// Request UngrabKeyboard
+// size: 8
+type UngrabKeyboardCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for UngrabKeyboard
+func UngrabKeyboard(c *xgb.Conn, Time Timestamp) UngrabKeyboardCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(ungrabKeyboardRequest(c, Time), cookie)
+ return UngrabKeyboardCookie{cookie}
+}
+
+func UngrabKeyboardChecked(c *xgb.Conn, Time Timestamp) UngrabKeyboardCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(ungrabKeyboardRequest(c, Time), cookie)
+ return UngrabKeyboardCookie{cookie}
+}
+
+func (cook UngrabKeyboardCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for UngrabKeyboard
+func ungrabKeyboardRequest(c *xgb.Conn, Time Timestamp) []byte {
+ size := 8
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 32 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Time))
+ b += 4
+
+ return buf
+}
+
+// Request GrabKey
+// size: 16
+type GrabKeyCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for GrabKey
+func GrabKey(c *xgb.Conn, OwnerEvents bool, GrabWindow Window, Modifiers uint16, Key Keycode, PointerMode byte, KeyboardMode byte) GrabKeyCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(grabKeyRequest(c, OwnerEvents, GrabWindow, Modifiers, Key, PointerMode, KeyboardMode), cookie)
+ return GrabKeyCookie{cookie}
+}
+
+func GrabKeyChecked(c *xgb.Conn, OwnerEvents bool, GrabWindow Window, Modifiers uint16, Key Keycode, PointerMode byte, KeyboardMode byte) GrabKeyCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(grabKeyRequest(c, OwnerEvents, GrabWindow, Modifiers, Key, PointerMode, KeyboardMode), cookie)
+ return GrabKeyCookie{cookie}
+}
+
+func (cook GrabKeyCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for GrabKey
+func grabKeyRequest(c *xgb.Conn, OwnerEvents bool, GrabWindow Window, Modifiers uint16, Key Keycode, PointerMode byte, KeyboardMode byte) []byte {
+ size := 16
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 33 // request opcode
+ b += 1
+
+ if OwnerEvents {
+ buf[b] = 1
+ } else {
+ buf[b] = 0
+ }
+ b += 1
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(GrabWindow))
+ b += 4
+
+ xgb.Put16(buf[b:], Modifiers)
+ b += 2
+
+ buf[b] = byte(Key)
+ b += 1
+
+ buf[b] = PointerMode
+ b += 1
+
+ buf[b] = KeyboardMode
+ b += 1
+
+ b += 3 // padding
+
+ return buf
+}
+
+// Request UngrabKey
+// size: 12
+type UngrabKeyCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for UngrabKey
+func UngrabKey(c *xgb.Conn, Key Keycode, GrabWindow Window, Modifiers uint16) UngrabKeyCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(ungrabKeyRequest(c, Key, GrabWindow, Modifiers), cookie)
+ return UngrabKeyCookie{cookie}
+}
+
+func UngrabKeyChecked(c *xgb.Conn, Key Keycode, GrabWindow Window, Modifiers uint16) UngrabKeyCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(ungrabKeyRequest(c, Key, GrabWindow, Modifiers), cookie)
+ return UngrabKeyCookie{cookie}
+}
+
+func (cook UngrabKeyCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for UngrabKey
+func ungrabKeyRequest(c *xgb.Conn, Key Keycode, GrabWindow Window, Modifiers uint16) []byte {
+ size := 12
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 34 // request opcode
+ b += 1
+
+ buf[b] = byte(Key)
+ b += 1
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(GrabWindow))
+ b += 4
+
+ xgb.Put16(buf[b:], Modifiers)
+ b += 2
+
+ b += 2 // padding
+
+ return buf
+}
+
+// Request AllowEvents
+// size: 8
+type AllowEventsCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for AllowEvents
+func AllowEvents(c *xgb.Conn, Mode byte, Time Timestamp) AllowEventsCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(allowEventsRequest(c, Mode, Time), cookie)
+ return AllowEventsCookie{cookie}
+}
+
+func AllowEventsChecked(c *xgb.Conn, Mode byte, Time Timestamp) AllowEventsCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(allowEventsRequest(c, Mode, Time), cookie)
+ return AllowEventsCookie{cookie}
+}
+
+func (cook AllowEventsCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for AllowEvents
+func allowEventsRequest(c *xgb.Conn, Mode byte, Time Timestamp) []byte {
+ size := 8
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 35 // request opcode
+ b += 1
+
+ buf[b] = Mode
+ b += 1
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Time))
+ b += 4
+
+ return buf
+}
+
+// Request GrabServer
+// size: 4
+type GrabServerCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for GrabServer
+func GrabServer(c *xgb.Conn) GrabServerCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(grabServerRequest(c), cookie)
+ return GrabServerCookie{cookie}
+}
+
+func GrabServerChecked(c *xgb.Conn) GrabServerCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(grabServerRequest(c), cookie)
+ return GrabServerCookie{cookie}
+}
+
+func (cook GrabServerCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for GrabServer
+func grabServerRequest(c *xgb.Conn) []byte {
+ size := 4
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 36 // request opcode
+ b += 1
+
+ b += 1 // padding
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ return buf
+}
+
+// Request UngrabServer
+// size: 4
+type UngrabServerCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for UngrabServer
+func UngrabServer(c *xgb.Conn) UngrabServerCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(ungrabServerRequest(c), cookie)
+ return UngrabServerCookie{cookie}
+}
+
+func UngrabServerChecked(c *xgb.Conn) UngrabServerCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(ungrabServerRequest(c), cookie)
+ return UngrabServerCookie{cookie}
+}
+
+func (cook UngrabServerCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for UngrabServer
+func ungrabServerRequest(c *xgb.Conn) []byte {
+ size := 4
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 37 // request opcode
+ b += 1
+
+ b += 1 // padding
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ return buf
+}
+
+// Request QueryPointer
+// size: 8
+type QueryPointerCookie struct {
+ *xgb.Cookie
+}
+
+func QueryPointer(c *xgb.Conn, Window Window) QueryPointerCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(queryPointerRequest(c, Window), cookie)
+ return QueryPointerCookie{cookie}
+}
+
+func QueryPointerUnchecked(c *xgb.Conn, Window Window) QueryPointerCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(queryPointerRequest(c, Window), cookie)
+ return QueryPointerCookie{cookie}
+}
+
+// Request reply for QueryPointer
+// size: 28
+type QueryPointerReply struct {
+ Sequence uint16
+ Length uint32
+ SameScreen bool
+ Root Window
+ Child Window
+ RootX int16
+ RootY int16
+ WinX int16
+ WinY int16
+ Mask uint16
+ // padding: 2 bytes
+}
+
+// Waits and reads reply data from request QueryPointer
+func (cook QueryPointerCookie) Reply() (*QueryPointerReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return queryPointerReply(buf), nil
+}
+
+// Read reply into structure from buffer for QueryPointer
+func queryPointerReply(buf []byte) *QueryPointerReply {
+ v := new(QueryPointerReply)
+ b := 1 // skip reply determinant
+
+ if buf[b] == 1 {
+ v.SameScreen = true
+ } else {
+ v.SameScreen = false
+ }
+ b += 1
+
+ v.Sequence = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Length = xgb.Get32(buf[b:]) // 4-byte units
+ b += 4
+
+ v.Root = Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.Child = Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.RootX = int16(xgb.Get16(buf[b:]))
+ b += 2
+
+ v.RootY = int16(xgb.Get16(buf[b:]))
+ b += 2
+
+ v.WinX = int16(xgb.Get16(buf[b:]))
+ b += 2
+
+ v.WinY = int16(xgb.Get16(buf[b:]))
+ b += 2
+
+ v.Mask = xgb.Get16(buf[b:])
+ b += 2
+
+ b += 2 // padding
+
+ return v
+}
+
+// Write request to wire for QueryPointer
+func queryPointerRequest(c *xgb.Conn, Window Window) []byte {
+ size := 8
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 38 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ 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 GetMotionEvents
+// size: 16
+type GetMotionEventsCookie struct {
+ *xgb.Cookie
+}
+
+func GetMotionEvents(c *xgb.Conn, Window Window, Start Timestamp, Stop Timestamp) GetMotionEventsCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(getMotionEventsRequest(c, Window, Start, Stop), cookie)
+ return GetMotionEventsCookie{cookie}
+}
+
+func GetMotionEventsUnchecked(c *xgb.Conn, Window Window, Start Timestamp, Stop Timestamp) GetMotionEventsCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(getMotionEventsRequest(c, Window, Start, Stop), cookie)
+ return GetMotionEventsCookie{cookie}
+}
+
+// Request reply for GetMotionEvents
+// size: (32 + xgb.Pad((int(EventsLen) * 8)))
+type GetMotionEventsReply struct {
+ Sequence uint16
+ Length uint32
+ // padding: 1 bytes
+ EventsLen uint32
+ // padding: 20 bytes
+ Events []Timecoord // size: xgb.Pad((int(EventsLen) * 8))
+}
+
+// Waits and reads reply data from request GetMotionEvents
+func (cook GetMotionEventsCookie) Reply() (*GetMotionEventsReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return getMotionEventsReply(buf), nil
+}
+
+// Read reply into structure from buffer for GetMotionEvents
+func getMotionEventsReply(buf []byte) *GetMotionEventsReply {
+ v := new(GetMotionEventsReply)
+ 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.EventsLen = xgb.Get32(buf[b:])
+ b += 4
+
+ b += 20 // padding
+
+ v.Events = make([]Timecoord, v.EventsLen)
+ b += TimecoordReadList(buf[b:], v.Events)
+
+ return v
+}
+
+// Write request to wire for GetMotionEvents
+func getMotionEventsRequest(c *xgb.Conn, Window Window, Start Timestamp, Stop Timestamp) []byte {
+ size := 16
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 39 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ 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(Start))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(Stop))
+ b += 4
+
+ return buf
+}
+
+// Request TranslateCoordinates
+// size: 16
+type TranslateCoordinatesCookie struct {
+ *xgb.Cookie
+}
+
+func TranslateCoordinates(c *xgb.Conn, SrcWindow Window, DstWindow Window, SrcX int16, SrcY int16) TranslateCoordinatesCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(translateCoordinatesRequest(c, SrcWindow, DstWindow, SrcX, SrcY), cookie)
+ return TranslateCoordinatesCookie{cookie}
+}
+
+func TranslateCoordinatesUnchecked(c *xgb.Conn, SrcWindow Window, DstWindow Window, SrcX int16, SrcY int16) TranslateCoordinatesCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(translateCoordinatesRequest(c, SrcWindow, DstWindow, SrcX, SrcY), cookie)
+ return TranslateCoordinatesCookie{cookie}
+}
+
+// Request reply for TranslateCoordinates
+// size: 16
+type TranslateCoordinatesReply struct {
+ Sequence uint16
+ Length uint32
+ SameScreen bool
+ Child Window
+ DstX int16
+ DstY int16
+}
+
+// Waits and reads reply data from request TranslateCoordinates
+func (cook TranslateCoordinatesCookie) Reply() (*TranslateCoordinatesReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return translateCoordinatesReply(buf), nil
+}
+
+// Read reply into structure from buffer for TranslateCoordinates
+func translateCoordinatesReply(buf []byte) *TranslateCoordinatesReply {
+ v := new(TranslateCoordinatesReply)
+ b := 1 // skip reply determinant
+
+ if buf[b] == 1 {
+ v.SameScreen = true
+ } else {
+ v.SameScreen = false
+ }
+ b += 1
+
+ v.Sequence = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Length = xgb.Get32(buf[b:]) // 4-byte units
+ b += 4
+
+ v.Child = Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.DstX = int16(xgb.Get16(buf[b:]))
+ b += 2
+
+ v.DstY = int16(xgb.Get16(buf[b:]))
+ b += 2
+
+ return v
+}
+
+// Write request to wire for TranslateCoordinates
+func translateCoordinatesRequest(c *xgb.Conn, SrcWindow Window, DstWindow Window, SrcX int16, SrcY int16) []byte {
+ size := 16
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 40 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(SrcWindow))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(DstWindow))
+ b += 4
+
+ xgb.Put16(buf[b:], uint16(SrcX))
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(SrcY))
+ b += 2
+
+ return buf
+}
+
+// Request WarpPointer
+// size: 24
+type WarpPointerCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for WarpPointer
+func WarpPointer(c *xgb.Conn, SrcWindow Window, DstWindow Window, SrcX int16, SrcY int16, SrcWidth uint16, SrcHeight uint16, DstX int16, DstY int16) WarpPointerCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(warpPointerRequest(c, SrcWindow, DstWindow, SrcX, SrcY, SrcWidth, SrcHeight, DstX, DstY), cookie)
+ return WarpPointerCookie{cookie}
+}
+
+func WarpPointerChecked(c *xgb.Conn, SrcWindow Window, DstWindow Window, SrcX int16, SrcY int16, SrcWidth uint16, SrcHeight uint16, DstX int16, DstY int16) WarpPointerCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(warpPointerRequest(c, SrcWindow, DstWindow, SrcX, SrcY, SrcWidth, SrcHeight, DstX, DstY), cookie)
+ return WarpPointerCookie{cookie}
+}
+
+func (cook WarpPointerCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for WarpPointer
+func warpPointerRequest(c *xgb.Conn, SrcWindow Window, DstWindow Window, SrcX int16, SrcY int16, SrcWidth uint16, SrcHeight uint16, DstX int16, DstY int16) []byte {
+ size := 24
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 41 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(SrcWindow))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(DstWindow))
+ b += 4
+
+ xgb.Put16(buf[b:], uint16(SrcX))
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(SrcY))
+ b += 2
+
+ xgb.Put16(buf[b:], SrcWidth)
+ b += 2
+
+ xgb.Put16(buf[b:], SrcHeight)
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(DstX))
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(DstY))
+ b += 2
+
+ return buf
+}
+
+// Request SetInputFocus
+// size: 12
+type SetInputFocusCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for SetInputFocus
+func SetInputFocus(c *xgb.Conn, RevertTo byte, Focus Window, Time Timestamp) SetInputFocusCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(setInputFocusRequest(c, RevertTo, Focus, Time), cookie)
+ return SetInputFocusCookie{cookie}
+}
+
+func SetInputFocusChecked(c *xgb.Conn, RevertTo byte, Focus Window, Time Timestamp) SetInputFocusCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(setInputFocusRequest(c, RevertTo, Focus, Time), cookie)
+ return SetInputFocusCookie{cookie}
+}
+
+func (cook SetInputFocusCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for SetInputFocus
+func setInputFocusRequest(c *xgb.Conn, RevertTo byte, Focus Window, Time Timestamp) []byte {
+ size := 12
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 42 // request opcode
+ b += 1
+
+ buf[b] = RevertTo
+ b += 1
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Focus))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(Time))
+ b += 4
+
+ return buf
+}
+
+// Request GetInputFocus
+// size: 4
+type GetInputFocusCookie struct {
+ *xgb.Cookie
+}
+
+func GetInputFocus(c *xgb.Conn) GetInputFocusCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(getInputFocusRequest(c), cookie)
+ return GetInputFocusCookie{cookie}
+}
+
+func GetInputFocusUnchecked(c *xgb.Conn) GetInputFocusCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(getInputFocusRequest(c), cookie)
+ return GetInputFocusCookie{cookie}
+}
+
+// Request reply for GetInputFocus
+// size: 12
+type GetInputFocusReply struct {
+ Sequence uint16
+ Length uint32
+ RevertTo byte
+ Focus Window
+}
+
+// Waits and reads reply data from request GetInputFocus
+func (cook GetInputFocusCookie) Reply() (*GetInputFocusReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return getInputFocusReply(buf), nil
+}
+
+// Read reply into structure from buffer for GetInputFocus
+func getInputFocusReply(buf []byte) *GetInputFocusReply {
+ v := new(GetInputFocusReply)
+ b := 1 // skip reply determinant
+
+ v.RevertTo = buf[b]
+ b += 1
+
+ v.Sequence = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Length = xgb.Get32(buf[b:]) // 4-byte units
+ b += 4
+
+ v.Focus = Window(xgb.Get32(buf[b:]))
+ b += 4
+
+ return v
+}
+
+// Write request to wire for GetInputFocus
+func getInputFocusRequest(c *xgb.Conn) []byte {
+ size := 4
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 43 // request opcode
+ b += 1
+
+ b += 1 // padding
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ return buf
+}
+
+// Request QueryKeymap
+// size: 4
+type QueryKeymapCookie struct {
+ *xgb.Cookie
+}
+
+func QueryKeymap(c *xgb.Conn) QueryKeymapCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(queryKeymapRequest(c), cookie)
+ return QueryKeymapCookie{cookie}
+}
+
+func QueryKeymapUnchecked(c *xgb.Conn) QueryKeymapCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(queryKeymapRequest(c), cookie)
+ return QueryKeymapCookie{cookie}
+}
+
+// Request reply for QueryKeymap
+// size: 40
+type QueryKeymapReply struct {
+ Sequence uint16
+ Length uint32
+ // padding: 1 bytes
+ Keys []byte // size: 32
+}
+
+// Waits and reads reply data from request QueryKeymap
+func (cook QueryKeymapCookie) Reply() (*QueryKeymapReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return queryKeymapReply(buf), nil
+}
+
+// Read reply into structure from buffer for QueryKeymap
+func queryKeymapReply(buf []byte) *QueryKeymapReply {
+ v := new(QueryKeymapReply)
+ 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.Keys = make([]byte, 32)
+ copy(v.Keys[:32], buf[b:])
+ b += xgb.Pad(int(32))
+
+ return v
+}
+
+// Write request to wire for QueryKeymap
+func queryKeymapRequest(c *xgb.Conn) []byte {
+ size := 4
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 44 // request opcode
+ b += 1
+
+ b += 1 // padding
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ return buf
+}
+
+// Request OpenFont
+// size: xgb.Pad((12 + xgb.Pad((int(NameLen) * 1))))
+type OpenFontCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for OpenFont
+func OpenFont(c *xgb.Conn, Fid Font, NameLen uint16, Name string) OpenFontCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(openFontRequest(c, Fid, NameLen, Name), cookie)
+ return OpenFontCookie{cookie}
+}
+
+func OpenFontChecked(c *xgb.Conn, Fid Font, NameLen uint16, Name string) OpenFontCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(openFontRequest(c, Fid, NameLen, Name), cookie)
+ return OpenFontCookie{cookie}
+}
+
+func (cook OpenFontCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for OpenFont
+func openFontRequest(c *xgb.Conn, Fid Font, NameLen uint16, Name string) []byte {
+ size := xgb.Pad((12 + xgb.Pad((int(NameLen) * 1))))
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 45 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Fid))
+ b += 4
+
+ xgb.Put16(buf[b:], NameLen)
+ b += 2
+
+ b += 2 // padding
+
+ copy(buf[b:], Name[:NameLen])
+ b += xgb.Pad(int(NameLen))
+
+ return buf
+}
+
+// Request CloseFont
+// size: 8
+type CloseFontCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for CloseFont
+func CloseFont(c *xgb.Conn, Font Font) CloseFontCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(closeFontRequest(c, Font), cookie)
+ return CloseFontCookie{cookie}
+}
+
+func CloseFontChecked(c *xgb.Conn, Font Font) CloseFontCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(closeFontRequest(c, Font), cookie)
+ return CloseFontCookie{cookie}
+}
+
+func (cook CloseFontCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for CloseFont
+func closeFontRequest(c *xgb.Conn, Font Font) []byte {
+ size := 8
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 46 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Font))
+ b += 4
+
+ return buf
+}
+
+// Request QueryFont
+// size: 8
+type QueryFontCookie struct {
+ *xgb.Cookie
+}
+
+func QueryFont(c *xgb.Conn, Font Fontable) QueryFontCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(queryFontRequest(c, Font), cookie)
+ return QueryFontCookie{cookie}
+}
+
+func QueryFontUnchecked(c *xgb.Conn, Font Fontable) QueryFontCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(queryFontRequest(c, Font), cookie)
+ return QueryFontCookie{cookie}
+}
+
+// Request reply for QueryFont
+// size: ((60 + xgb.Pad((int(PropertiesLen) * 8))) + xgb.Pad((int(CharInfosLen) * 12)))
+type QueryFontReply struct {
+ Sequence uint16
+ Length uint32
+ // padding: 1 bytes
+ MinBounds Charinfo
+ // padding: 4 bytes
+ MaxBounds Charinfo
+ // padding: 4 bytes
+ MinCharOrByte2 uint16
+ MaxCharOrByte2 uint16
+ DefaultChar uint16
+ PropertiesLen uint16
+ DrawDirection byte
+ MinByte1 byte
+ MaxByte1 byte
+ AllCharsExist bool
+ FontAscent int16
+ FontDescent int16
+ CharInfosLen uint32
+ Properties []Fontprop // size: xgb.Pad((int(PropertiesLen) * 8))
+ CharInfos []Charinfo // size: xgb.Pad((int(CharInfosLen) * 12))
+}
+
+// Waits and reads reply data from request QueryFont
+func (cook QueryFontCookie) Reply() (*QueryFontReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return queryFontReply(buf), nil
+}
+
+// Read reply into structure from buffer for QueryFont
+func queryFontReply(buf []byte) *QueryFontReply {
+ v := new(QueryFontReply)
+ 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.MinBounds = Charinfo{}
+ b += CharinfoRead(buf[b:], &v.MinBounds)
+
+ b += 4 // padding
+
+ v.MaxBounds = Charinfo{}
+ b += CharinfoRead(buf[b:], &v.MaxBounds)
+
+ b += 4 // padding
+
+ v.MinCharOrByte2 = xgb.Get16(buf[b:])
+ b += 2
+
+ v.MaxCharOrByte2 = xgb.Get16(buf[b:])
+ b += 2
+
+ v.DefaultChar = xgb.Get16(buf[b:])
+ b += 2
+
+ v.PropertiesLen = xgb.Get16(buf[b:])
+ b += 2
+
+ v.DrawDirection = buf[b]
+ b += 1
+
+ v.MinByte1 = buf[b]
+ b += 1
+
+ v.MaxByte1 = buf[b]
+ b += 1
+
+ if buf[b] == 1 {
+ v.AllCharsExist = true
+ } else {
+ v.AllCharsExist = false
+ }
+ b += 1
+
+ v.FontAscent = int16(xgb.Get16(buf[b:]))
+ b += 2
+
+ v.FontDescent = int16(xgb.Get16(buf[b:]))
+ b += 2
+
+ v.CharInfosLen = xgb.Get32(buf[b:])
+ b += 4
+
+ v.Properties = make([]Fontprop, v.PropertiesLen)
+ b += FontpropReadList(buf[b:], v.Properties)
+
+ v.CharInfos = make([]Charinfo, v.CharInfosLen)
+ b += CharinfoReadList(buf[b:], v.CharInfos)
+
+ return v
+}
+
+// Write request to wire for QueryFont
+func queryFontRequest(c *xgb.Conn, Font Fontable) []byte {
+ size := 8
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 47 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Font))
+ b += 4
+
+ return buf
+}
+
+// Request QueryTextExtents
+// size: xgb.Pad((8 + xgb.Pad((len(String) * 2))))
+type QueryTextExtentsCookie struct {
+ *xgb.Cookie
+}
+
+func QueryTextExtents(c *xgb.Conn, Font Fontable, String []Char2b, StringLen uint16) QueryTextExtentsCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(queryTextExtentsRequest(c, Font, String, StringLen), cookie)
+ return QueryTextExtentsCookie{cookie}
+}
+
+func QueryTextExtentsUnchecked(c *xgb.Conn, Font Fontable, String []Char2b, StringLen uint16) QueryTextExtentsCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(queryTextExtentsRequest(c, Font, String, StringLen), cookie)
+ return QueryTextExtentsCookie{cookie}
+}
+
+// Request reply for QueryTextExtents
+// size: 28
+type QueryTextExtentsReply struct {
+ Sequence uint16
+ Length uint32
+ DrawDirection byte
+ FontAscent int16
+ FontDescent int16
+ OverallAscent int16
+ OverallDescent int16
+ OverallWidth int32
+ OverallLeft int32
+ OverallRight int32
+}
+
+// Waits and reads reply data from request QueryTextExtents
+func (cook QueryTextExtentsCookie) Reply() (*QueryTextExtentsReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return queryTextExtentsReply(buf), nil
+}
+
+// Read reply into structure from buffer for QueryTextExtents
+func queryTextExtentsReply(buf []byte) *QueryTextExtentsReply {
+ v := new(QueryTextExtentsReply)
+ b := 1 // skip reply determinant
+
+ v.DrawDirection = buf[b]
+ b += 1
+
+ v.Sequence = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Length = xgb.Get32(buf[b:]) // 4-byte units
+ b += 4
+
+ v.FontAscent = int16(xgb.Get16(buf[b:]))
+ b += 2
+
+ v.FontDescent = int16(xgb.Get16(buf[b:]))
+ b += 2
+
+ v.OverallAscent = int16(xgb.Get16(buf[b:]))
+ b += 2
+
+ v.OverallDescent = int16(xgb.Get16(buf[b:]))
+ b += 2
+
+ v.OverallWidth = int32(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.OverallLeft = int32(xgb.Get32(buf[b:]))
+ b += 4
+
+ v.OverallRight = int32(xgb.Get32(buf[b:]))
+ b += 4
+
+ return v
+}
+
+// Write request to wire for QueryTextExtents
+func queryTextExtentsRequest(c *xgb.Conn, Font Fontable, String []Char2b, StringLen uint16) []byte {
+ size := xgb.Pad((8 + xgb.Pad((len(String) * 2))))
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 48 // request opcode
+ b += 1
+
+ buf[b] = byte((int(StringLen) & 1))
+ b += 1
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Font))
+ b += 4
+
+ b += Char2bListBytes(buf[b:], String)
+
+ // skip writing local field: StringLen (2) :: uint16
+
+ return buf
+}
+
+// Request ListFonts
+// size: xgb.Pad((8 + xgb.Pad((int(PatternLen) * 1))))
+type ListFontsCookie struct {
+ *xgb.Cookie
+}
+
+func ListFonts(c *xgb.Conn, MaxNames uint16, PatternLen uint16, Pattern string) ListFontsCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(listFontsRequest(c, MaxNames, PatternLen, Pattern), cookie)
+ return ListFontsCookie{cookie}
+}
+
+func ListFontsUnchecked(c *xgb.Conn, MaxNames uint16, PatternLen uint16, Pattern string) ListFontsCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(listFontsRequest(c, MaxNames, PatternLen, Pattern), cookie)
+ return ListFontsCookie{cookie}
+}
+
+// Request reply for ListFonts
+// size: (32 + StrListSize(Names))
+type ListFontsReply struct {
+ Sequence uint16
+ Length uint32
+ // padding: 1 bytes
+ NamesLen uint16
+ // padding: 22 bytes
+ Names []Str // size: StrListSize(Names)
+}
+
+// Waits and reads reply data from request ListFonts
+func (cook ListFontsCookie) Reply() (*ListFontsReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return listFontsReply(buf), nil
+}
+
+// Read reply into structure from buffer for ListFonts
+func listFontsReply(buf []byte) *ListFontsReply {
+ v := new(ListFontsReply)
+ 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.NamesLen = xgb.Get16(buf[b:])
+ b += 2
+
+ b += 22 // padding
+
+ v.Names = make([]Str, v.NamesLen)
+ b += StrReadList(buf[b:], v.Names)
+
+ return v
+}
+
+// Write request to wire for ListFonts
+func listFontsRequest(c *xgb.Conn, MaxNames uint16, PatternLen uint16, Pattern string) []byte {
+ size := xgb.Pad((8 + xgb.Pad((int(PatternLen) * 1))))
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 49 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put16(buf[b:], MaxNames)
+ b += 2
+
+ xgb.Put16(buf[b:], PatternLen)
+ b += 2
+
+ copy(buf[b:], Pattern[:PatternLen])
+ b += xgb.Pad(int(PatternLen))
+
+ return buf
+}
+
+// Request ListFontsWithInfo
+// size: xgb.Pad((8 + xgb.Pad((int(PatternLen) * 1))))
+type ListFontsWithInfoCookie struct {
+ *xgb.Cookie
+}
+
+func ListFontsWithInfo(c *xgb.Conn, MaxNames uint16, PatternLen uint16, Pattern string) ListFontsWithInfoCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(listFontsWithInfoRequest(c, MaxNames, PatternLen, Pattern), cookie)
+ return ListFontsWithInfoCookie{cookie}
+}
+
+func ListFontsWithInfoUnchecked(c *xgb.Conn, MaxNames uint16, PatternLen uint16, Pattern string) ListFontsWithInfoCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(listFontsWithInfoRequest(c, MaxNames, PatternLen, Pattern), cookie)
+ return ListFontsWithInfoCookie{cookie}
+}
+
+// Request reply for ListFontsWithInfo
+// size: ((60 + xgb.Pad((int(PropertiesLen) * 8))) + xgb.Pad((int(NameLen) * 1)))
+type ListFontsWithInfoReply struct {
+ Sequence uint16
+ Length uint32
+ NameLen byte
+ MinBounds Charinfo
+ // padding: 4 bytes
+ MaxBounds Charinfo
+ // padding: 4 bytes
+ MinCharOrByte2 uint16
+ MaxCharOrByte2 uint16
+ DefaultChar uint16
+ PropertiesLen uint16
+ DrawDirection byte
+ MinByte1 byte
+ MaxByte1 byte
+ AllCharsExist bool
+ FontAscent int16
+ FontDescent int16
+ RepliesHint uint32
+ Properties []Fontprop // size: xgb.Pad((int(PropertiesLen) * 8))
+ Name string // size: xgb.Pad((int(NameLen) * 1))
+}
+
+// Waits and reads reply data from request ListFontsWithInfo
+func (cook ListFontsWithInfoCookie) Reply() (*ListFontsWithInfoReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return listFontsWithInfoReply(buf), nil
+}
+
+// Read reply into structure from buffer for ListFontsWithInfo
+func listFontsWithInfoReply(buf []byte) *ListFontsWithInfoReply {
+ v := new(ListFontsWithInfoReply)
+ b := 1 // skip reply determinant
+
+ v.NameLen = buf[b]
+ b += 1
+
+ v.Sequence = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Length = xgb.Get32(buf[b:]) // 4-byte units
+ b += 4
+
+ v.MinBounds = Charinfo{}
+ b += CharinfoRead(buf[b:], &v.MinBounds)
+
+ b += 4 // padding
+
+ v.MaxBounds = Charinfo{}
+ b += CharinfoRead(buf[b:], &v.MaxBounds)
+
+ b += 4 // padding
+
+ v.MinCharOrByte2 = xgb.Get16(buf[b:])
+ b += 2
+
+ v.MaxCharOrByte2 = xgb.Get16(buf[b:])
+ b += 2
+
+ v.DefaultChar = xgb.Get16(buf[b:])
+ b += 2
+
+ v.PropertiesLen = xgb.Get16(buf[b:])
+ b += 2
+
+ v.DrawDirection = buf[b]
+ b += 1
+
+ v.MinByte1 = buf[b]
+ b += 1
+
+ v.MaxByte1 = buf[b]
+ b += 1
+
+ if buf[b] == 1 {
+ v.AllCharsExist = true
+ } else {
+ v.AllCharsExist = false
+ }
+ b += 1
+
+ v.FontAscent = int16(xgb.Get16(buf[b:]))
+ b += 2
+
+ v.FontDescent = int16(xgb.Get16(buf[b:]))
+ b += 2
+
+ v.RepliesHint = xgb.Get32(buf[b:])
+ b += 4
+
+ v.Properties = make([]Fontprop, v.PropertiesLen)
+ b += FontpropReadList(buf[b:], v.Properties)
+
+ {
+ byteString := make([]byte, v.NameLen)
+ copy(byteString[:v.NameLen], buf[b:])
+ v.Name = string(byteString)
+ b += xgb.Pad(int(v.NameLen))
+ }
+
+ return v
+}
+
+// Write request to wire for ListFontsWithInfo
+func listFontsWithInfoRequest(c *xgb.Conn, MaxNames uint16, PatternLen uint16, Pattern string) []byte {
+ size := xgb.Pad((8 + xgb.Pad((int(PatternLen) * 1))))
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 50 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put16(buf[b:], MaxNames)
+ b += 2
+
+ xgb.Put16(buf[b:], PatternLen)
+ b += 2
+
+ copy(buf[b:], Pattern[:PatternLen])
+ b += xgb.Pad(int(PatternLen))
+
+ return buf
+}
+
+// Request SetFontPath
+// size: xgb.Pad((8 + StrListSize(Font)))
+type SetFontPathCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for SetFontPath
+func SetFontPath(c *xgb.Conn, FontQty uint16, Font []Str) SetFontPathCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(setFontPathRequest(c, FontQty, Font), cookie)
+ return SetFontPathCookie{cookie}
+}
+
+func SetFontPathChecked(c *xgb.Conn, FontQty uint16, Font []Str) SetFontPathCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(setFontPathRequest(c, FontQty, Font), cookie)
+ return SetFontPathCookie{cookie}
+}
+
+func (cook SetFontPathCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for SetFontPath
+func setFontPathRequest(c *xgb.Conn, FontQty uint16, Font []Str) []byte {
+ size := xgb.Pad((8 + StrListSize(Font)))
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 51 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put16(buf[b:], FontQty)
+ b += 2
+
+ b += 2 // padding
+
+ b += StrListBytes(buf[b:], Font)
+
+ return buf
+}
+
+// Request GetFontPath
+// size: 4
+type GetFontPathCookie struct {
+ *xgb.Cookie
+}
+
+func GetFontPath(c *xgb.Conn) GetFontPathCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(getFontPathRequest(c), cookie)
+ return GetFontPathCookie{cookie}
+}
+
+func GetFontPathUnchecked(c *xgb.Conn) GetFontPathCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(getFontPathRequest(c), cookie)
+ return GetFontPathCookie{cookie}
+}
+
+// Request reply for GetFontPath
+// size: (32 + StrListSize(Path))
+type GetFontPathReply struct {
+ Sequence uint16
+ Length uint32
+ // padding: 1 bytes
+ PathLen uint16
+ // padding: 22 bytes
+ Path []Str // size: StrListSize(Path)
+}
+
+// Waits and reads reply data from request GetFontPath
+func (cook GetFontPathCookie) Reply() (*GetFontPathReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return getFontPathReply(buf), nil
+}
+
+// Read reply into structure from buffer for GetFontPath
+func getFontPathReply(buf []byte) *GetFontPathReply {
+ v := new(GetFontPathReply)
+ 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.PathLen = xgb.Get16(buf[b:])
+ b += 2
+
+ b += 22 // padding
+
+ v.Path = make([]Str, v.PathLen)
+ b += StrReadList(buf[b:], v.Path)
+
+ return v
+}
+
+// Write request to wire for GetFontPath
+func getFontPathRequest(c *xgb.Conn) []byte {
+ size := 4
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 52 // request opcode
+ b += 1
+
+ b += 1 // padding
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ return buf
+}
+
+// Request CreatePixmap
+// size: 16
+type CreatePixmapCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for CreatePixmap
+func CreatePixmap(c *xgb.Conn, Depth byte, Pid Pixmap, Drawable Drawable, Width uint16, Height uint16) CreatePixmapCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(createPixmapRequest(c, Depth, Pid, Drawable, Width, Height), cookie)
+ return CreatePixmapCookie{cookie}
+}
+
+func CreatePixmapChecked(c *xgb.Conn, Depth byte, Pid Pixmap, Drawable Drawable, Width uint16, Height uint16) CreatePixmapCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(createPixmapRequest(c, Depth, Pid, Drawable, Width, Height), cookie)
+ return CreatePixmapCookie{cookie}
+}
+
+func (cook CreatePixmapCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for CreatePixmap
+func createPixmapRequest(c *xgb.Conn, Depth byte, Pid Pixmap, Drawable Drawable, Width uint16, Height uint16) []byte {
+ size := 16
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 53 // request opcode
+ b += 1
+
+ buf[b] = Depth
+ b += 1
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Pid))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(Drawable))
+ b += 4
+
+ xgb.Put16(buf[b:], Width)
+ b += 2
+
+ xgb.Put16(buf[b:], Height)
+ b += 2
+
+ return buf
+}
+
+// Request FreePixmap
+// size: 8
+type FreePixmapCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for FreePixmap
+func FreePixmap(c *xgb.Conn, Pixmap Pixmap) FreePixmapCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(freePixmapRequest(c, Pixmap), cookie)
+ return FreePixmapCookie{cookie}
+}
+
+func FreePixmapChecked(c *xgb.Conn, Pixmap Pixmap) FreePixmapCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(freePixmapRequest(c, Pixmap), cookie)
+ return FreePixmapCookie{cookie}
+}
+
+func (cook FreePixmapCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for FreePixmap
+func freePixmapRequest(c *xgb.Conn, Pixmap Pixmap) []byte {
+ size := 8
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 54 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Pixmap))
+ b += 4
+
+ return buf
+}
+
+// Request CreateGC
+// size: xgb.Pad((12 + (4 + xgb.Pad((4 * xgb.PopCount(int(ValueMask)))))))
+type CreateGCCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for CreateGC
+func CreateGC(c *xgb.Conn, Cid Gcontext, Drawable Drawable, ValueMask uint32, ValueList []uint32) CreateGCCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(createGCRequest(c, Cid, Drawable, ValueMask, ValueList), cookie)
+ return CreateGCCookie{cookie}
+}
+
+func CreateGCChecked(c *xgb.Conn, Cid Gcontext, Drawable Drawable, ValueMask uint32, ValueList []uint32) CreateGCCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(createGCRequest(c, Cid, Drawable, ValueMask, ValueList), cookie)
+ return CreateGCCookie{cookie}
+}
+
+func (cook CreateGCCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for CreateGC
+func createGCRequest(c *xgb.Conn, Cid Gcontext, Drawable Drawable, ValueMask uint32, ValueList []uint32) []byte {
+ size := xgb.Pad((12 + (4 + xgb.Pad((4 * xgb.PopCount(int(ValueMask)))))))
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 55 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Cid))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(Drawable))
+ b += 4
+
+ xgb.Put32(buf[b:], ValueMask)
+ b += 4
+ for i := 0; i < xgb.PopCount(int(ValueMask)); i++ {
+ xgb.Put32(buf[b:], ValueList[i])
+ b += 4
+ }
+ b = xgb.Pad(b)
+
+ return buf
+}
+
+// Request ChangeGC
+// size: xgb.Pad((8 + (4 + xgb.Pad((4 * xgb.PopCount(int(ValueMask)))))))
+type ChangeGCCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for ChangeGC
+func ChangeGC(c *xgb.Conn, Gc Gcontext, ValueMask uint32, ValueList []uint32) ChangeGCCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(changeGCRequest(c, Gc, ValueMask, ValueList), cookie)
+ return ChangeGCCookie{cookie}
+}
+
+func ChangeGCChecked(c *xgb.Conn, Gc Gcontext, ValueMask uint32, ValueList []uint32) ChangeGCCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(changeGCRequest(c, Gc, ValueMask, ValueList), cookie)
+ return ChangeGCCookie{cookie}
+}
+
+func (cook ChangeGCCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for ChangeGC
+func changeGCRequest(c *xgb.Conn, Gc Gcontext, ValueMask uint32, ValueList []uint32) []byte {
+ size := xgb.Pad((8 + (4 + xgb.Pad((4 * xgb.PopCount(int(ValueMask)))))))
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 56 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Gc))
+ b += 4
+
+ xgb.Put32(buf[b:], ValueMask)
+ b += 4
+ for i := 0; i < xgb.PopCount(int(ValueMask)); i++ {
+ xgb.Put32(buf[b:], ValueList[i])
+ b += 4
+ }
+ b = xgb.Pad(b)
+
+ return buf
+}
+
+// Request CopyGC
+// size: 16
+type CopyGCCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for CopyGC
+func CopyGC(c *xgb.Conn, SrcGc Gcontext, DstGc Gcontext, ValueMask uint32) CopyGCCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(copyGCRequest(c, SrcGc, DstGc, ValueMask), cookie)
+ return CopyGCCookie{cookie}
+}
+
+func CopyGCChecked(c *xgb.Conn, SrcGc Gcontext, DstGc Gcontext, ValueMask uint32) CopyGCCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(copyGCRequest(c, SrcGc, DstGc, ValueMask), cookie)
+ return CopyGCCookie{cookie}
+}
+
+func (cook CopyGCCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for CopyGC
+func copyGCRequest(c *xgb.Conn, SrcGc Gcontext, DstGc Gcontext, ValueMask uint32) []byte {
+ size := 16
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 57 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(SrcGc))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(DstGc))
+ b += 4
+
+ xgb.Put32(buf[b:], ValueMask)
+ b += 4
+
+ return buf
+}
+
+// Request SetDashes
+// size: xgb.Pad((12 + xgb.Pad((int(DashesLen) * 1))))
+type SetDashesCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for SetDashes
+func SetDashes(c *xgb.Conn, Gc Gcontext, DashOffset uint16, DashesLen uint16, Dashes []byte) SetDashesCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(setDashesRequest(c, Gc, DashOffset, DashesLen, Dashes), cookie)
+ return SetDashesCookie{cookie}
+}
+
+func SetDashesChecked(c *xgb.Conn, Gc Gcontext, DashOffset uint16, DashesLen uint16, Dashes []byte) SetDashesCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(setDashesRequest(c, Gc, DashOffset, DashesLen, Dashes), cookie)
+ return SetDashesCookie{cookie}
+}
+
+func (cook SetDashesCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for SetDashes
+func setDashesRequest(c *xgb.Conn, Gc Gcontext, DashOffset uint16, DashesLen uint16, Dashes []byte) []byte {
+ size := xgb.Pad((12 + xgb.Pad((int(DashesLen) * 1))))
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 58 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Gc))
+ b += 4
+
+ xgb.Put16(buf[b:], DashOffset)
+ b += 2
+
+ xgb.Put16(buf[b:], DashesLen)
+ b += 2
+
+ copy(buf[b:], Dashes[:DashesLen])
+ b += xgb.Pad(int(DashesLen))
+
+ return buf
+}
+
+// Request SetClipRectangles
+// size: xgb.Pad((12 + xgb.Pad((len(Rectangles) * 8))))
+type SetClipRectanglesCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for SetClipRectangles
+func SetClipRectangles(c *xgb.Conn, Ordering byte, Gc Gcontext, ClipXOrigin int16, ClipYOrigin int16, Rectangles []Rectangle) SetClipRectanglesCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(setClipRectanglesRequest(c, Ordering, Gc, ClipXOrigin, ClipYOrigin, Rectangles), cookie)
+ return SetClipRectanglesCookie{cookie}
+}
+
+func SetClipRectanglesChecked(c *xgb.Conn, Ordering byte, Gc Gcontext, ClipXOrigin int16, ClipYOrigin int16, Rectangles []Rectangle) SetClipRectanglesCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(setClipRectanglesRequest(c, Ordering, Gc, ClipXOrigin, ClipYOrigin, Rectangles), cookie)
+ return SetClipRectanglesCookie{cookie}
+}
+
+func (cook SetClipRectanglesCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for SetClipRectangles
+func setClipRectanglesRequest(c *xgb.Conn, Ordering byte, Gc Gcontext, ClipXOrigin int16, ClipYOrigin int16, Rectangles []Rectangle) []byte {
+ size := xgb.Pad((12 + xgb.Pad((len(Rectangles) * 8))))
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 59 // request opcode
+ b += 1
+
+ buf[b] = Ordering
+ b += 1
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Gc))
+ b += 4
+
+ xgb.Put16(buf[b:], uint16(ClipXOrigin))
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(ClipYOrigin))
+ b += 2
+
+ b += RectangleListBytes(buf[b:], Rectangles)
+
+ return buf
+}
+
+// Request FreeGC
+// size: 8
+type FreeGCCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for FreeGC
+func FreeGC(c *xgb.Conn, Gc Gcontext) FreeGCCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(freeGCRequest(c, Gc), cookie)
+ return FreeGCCookie{cookie}
+}
+
+func FreeGCChecked(c *xgb.Conn, Gc Gcontext) FreeGCCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(freeGCRequest(c, Gc), cookie)
+ return FreeGCCookie{cookie}
+}
+
+func (cook FreeGCCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for FreeGC
+func freeGCRequest(c *xgb.Conn, Gc Gcontext) []byte {
+ size := 8
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 60 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Gc))
+ b += 4
+
+ return buf
+}
+
+// Request ClearArea
+// size: 16
+type ClearAreaCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for ClearArea
+func ClearArea(c *xgb.Conn, Exposures bool, Window Window, X int16, Y int16, Width uint16, Height uint16) ClearAreaCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(clearAreaRequest(c, Exposures, Window, X, Y, Width, Height), cookie)
+ return ClearAreaCookie{cookie}
+}
+
+func ClearAreaChecked(c *xgb.Conn, Exposures bool, Window Window, X int16, Y int16, Width uint16, Height uint16) ClearAreaCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(clearAreaRequest(c, Exposures, Window, X, Y, Width, Height), cookie)
+ return ClearAreaCookie{cookie}
+}
+
+func (cook ClearAreaCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for ClearArea
+func clearAreaRequest(c *xgb.Conn, Exposures bool, Window Window, X int16, Y int16, Width uint16, Height uint16) []byte {
+ size := 16
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 61 // request opcode
+ b += 1
+
+ if Exposures {
+ buf[b] = 1
+ } else {
+ buf[b] = 0
+ }
+ 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:], uint16(X))
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(Y))
+ b += 2
+
+ xgb.Put16(buf[b:], Width)
+ b += 2
+
+ xgb.Put16(buf[b:], Height)
+ b += 2
+
+ return buf
+}
+
+// Request CopyArea
+// size: 28
+type CopyAreaCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for CopyArea
+func CopyArea(c *xgb.Conn, SrcDrawable Drawable, DstDrawable Drawable, Gc Gcontext, SrcX int16, SrcY int16, DstX int16, DstY int16, Width uint16, Height uint16) CopyAreaCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(copyAreaRequest(c, SrcDrawable, DstDrawable, Gc, SrcX, SrcY, DstX, DstY, Width, Height), cookie)
+ return CopyAreaCookie{cookie}
+}
+
+func CopyAreaChecked(c *xgb.Conn, SrcDrawable Drawable, DstDrawable Drawable, Gc Gcontext, SrcX int16, SrcY int16, DstX int16, DstY int16, Width uint16, Height uint16) CopyAreaCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(copyAreaRequest(c, SrcDrawable, DstDrawable, Gc, SrcX, SrcY, DstX, DstY, Width, Height), cookie)
+ return CopyAreaCookie{cookie}
+}
+
+func (cook CopyAreaCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for CopyArea
+func copyAreaRequest(c *xgb.Conn, SrcDrawable Drawable, DstDrawable Drawable, Gc Gcontext, SrcX int16, SrcY int16, DstX int16, DstY int16, Width uint16, Height uint16) []byte {
+ size := 28
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 62 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(SrcDrawable))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(DstDrawable))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(Gc))
+ b += 4
+
+ xgb.Put16(buf[b:], uint16(SrcX))
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(SrcY))
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(DstX))
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(DstY))
+ b += 2
+
+ xgb.Put16(buf[b:], Width)
+ b += 2
+
+ xgb.Put16(buf[b:], Height)
+ b += 2
+
+ return buf
+}
+
+// Request CopyPlane
+// size: 32
+type CopyPlaneCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for CopyPlane
+func CopyPlane(c *xgb.Conn, SrcDrawable Drawable, DstDrawable Drawable, Gc Gcontext, SrcX int16, SrcY int16, DstX int16, DstY int16, Width uint16, Height uint16, BitPlane uint32) CopyPlaneCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(copyPlaneRequest(c, SrcDrawable, DstDrawable, Gc, SrcX, SrcY, DstX, DstY, Width, Height, BitPlane), cookie)
+ return CopyPlaneCookie{cookie}
+}
+
+func CopyPlaneChecked(c *xgb.Conn, SrcDrawable Drawable, DstDrawable Drawable, Gc Gcontext, SrcX int16, SrcY int16, DstX int16, DstY int16, Width uint16, Height uint16, BitPlane uint32) CopyPlaneCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(copyPlaneRequest(c, SrcDrawable, DstDrawable, Gc, SrcX, SrcY, DstX, DstY, Width, Height, BitPlane), cookie)
+ return CopyPlaneCookie{cookie}
+}
+
+func (cook CopyPlaneCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for CopyPlane
+func copyPlaneRequest(c *xgb.Conn, SrcDrawable Drawable, DstDrawable Drawable, Gc Gcontext, SrcX int16, SrcY int16, DstX int16, DstY int16, Width uint16, Height uint16, BitPlane uint32) []byte {
+ size := 32
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 63 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(SrcDrawable))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(DstDrawable))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(Gc))
+ b += 4
+
+ xgb.Put16(buf[b:], uint16(SrcX))
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(SrcY))
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(DstX))
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(DstY))
+ b += 2
+
+ xgb.Put16(buf[b:], Width)
+ b += 2
+
+ xgb.Put16(buf[b:], Height)
+ b += 2
+
+ xgb.Put32(buf[b:], BitPlane)
+ b += 4
+
+ return buf
+}
+
+// Request PolyPoint
+// size: xgb.Pad((12 + xgb.Pad((len(Points) * 4))))
+type PolyPointCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for PolyPoint
+func PolyPoint(c *xgb.Conn, CoordinateMode byte, Drawable Drawable, Gc Gcontext, Points []Point) PolyPointCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(polyPointRequest(c, CoordinateMode, Drawable, Gc, Points), cookie)
+ return PolyPointCookie{cookie}
+}
+
+func PolyPointChecked(c *xgb.Conn, CoordinateMode byte, Drawable Drawable, Gc Gcontext, Points []Point) PolyPointCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(polyPointRequest(c, CoordinateMode, Drawable, Gc, Points), cookie)
+ return PolyPointCookie{cookie}
+}
+
+func (cook PolyPointCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for PolyPoint
+func polyPointRequest(c *xgb.Conn, CoordinateMode byte, Drawable Drawable, Gc Gcontext, Points []Point) []byte {
+ size := xgb.Pad((12 + xgb.Pad((len(Points) * 4))))
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 64 // request opcode
+ b += 1
+
+ buf[b] = CoordinateMode
+ b += 1
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Drawable))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(Gc))
+ b += 4
+
+ b += PointListBytes(buf[b:], Points)
+
+ return buf
+}
+
+// Request PolyLine
+// size: xgb.Pad((12 + xgb.Pad((len(Points) * 4))))
+type PolyLineCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for PolyLine
+func PolyLine(c *xgb.Conn, CoordinateMode byte, Drawable Drawable, Gc Gcontext, Points []Point) PolyLineCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(polyLineRequest(c, CoordinateMode, Drawable, Gc, Points), cookie)
+ return PolyLineCookie{cookie}
+}
+
+func PolyLineChecked(c *xgb.Conn, CoordinateMode byte, Drawable Drawable, Gc Gcontext, Points []Point) PolyLineCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(polyLineRequest(c, CoordinateMode, Drawable, Gc, Points), cookie)
+ return PolyLineCookie{cookie}
+}
+
+func (cook PolyLineCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for PolyLine
+func polyLineRequest(c *xgb.Conn, CoordinateMode byte, Drawable Drawable, Gc Gcontext, Points []Point) []byte {
+ size := xgb.Pad((12 + xgb.Pad((len(Points) * 4))))
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 65 // request opcode
+ b += 1
+
+ buf[b] = CoordinateMode
+ b += 1
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Drawable))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(Gc))
+ b += 4
+
+ b += PointListBytes(buf[b:], Points)
+
+ return buf
+}
+
+// Request PolySegment
+// size: xgb.Pad((12 + xgb.Pad((len(Segments) * 8))))
+type PolySegmentCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for PolySegment
+func PolySegment(c *xgb.Conn, Drawable Drawable, Gc Gcontext, Segments []Segment) PolySegmentCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(polySegmentRequest(c, Drawable, Gc, Segments), cookie)
+ return PolySegmentCookie{cookie}
+}
+
+func PolySegmentChecked(c *xgb.Conn, Drawable Drawable, Gc Gcontext, Segments []Segment) PolySegmentCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(polySegmentRequest(c, Drawable, Gc, Segments), cookie)
+ return PolySegmentCookie{cookie}
+}
+
+func (cook PolySegmentCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for PolySegment
+func polySegmentRequest(c *xgb.Conn, Drawable Drawable, Gc Gcontext, Segments []Segment) []byte {
+ size := xgb.Pad((12 + xgb.Pad((len(Segments) * 8))))
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 66 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Drawable))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(Gc))
+ b += 4
+
+ b += SegmentListBytes(buf[b:], Segments)
+
+ return buf
+}
+
+// Request PolyRectangle
+// size: xgb.Pad((12 + xgb.Pad((len(Rectangles) * 8))))
+type PolyRectangleCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for PolyRectangle
+func PolyRectangle(c *xgb.Conn, Drawable Drawable, Gc Gcontext, Rectangles []Rectangle) PolyRectangleCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(polyRectangleRequest(c, Drawable, Gc, Rectangles), cookie)
+ return PolyRectangleCookie{cookie}
+}
+
+func PolyRectangleChecked(c *xgb.Conn, Drawable Drawable, Gc Gcontext, Rectangles []Rectangle) PolyRectangleCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(polyRectangleRequest(c, Drawable, Gc, Rectangles), cookie)
+ return PolyRectangleCookie{cookie}
+}
+
+func (cook PolyRectangleCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for PolyRectangle
+func polyRectangleRequest(c *xgb.Conn, Drawable Drawable, Gc Gcontext, Rectangles []Rectangle) []byte {
+ size := xgb.Pad((12 + xgb.Pad((len(Rectangles) * 8))))
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 67 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Drawable))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(Gc))
+ b += 4
+
+ b += RectangleListBytes(buf[b:], Rectangles)
+
+ return buf
+}
+
+// Request PolyArc
+// size: xgb.Pad((12 + xgb.Pad((len(Arcs) * 12))))
+type PolyArcCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for PolyArc
+func PolyArc(c *xgb.Conn, Drawable Drawable, Gc Gcontext, Arcs []Arc) PolyArcCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(polyArcRequest(c, Drawable, Gc, Arcs), cookie)
+ return PolyArcCookie{cookie}
+}
+
+func PolyArcChecked(c *xgb.Conn, Drawable Drawable, Gc Gcontext, Arcs []Arc) PolyArcCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(polyArcRequest(c, Drawable, Gc, Arcs), cookie)
+ return PolyArcCookie{cookie}
+}
+
+func (cook PolyArcCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for PolyArc
+func polyArcRequest(c *xgb.Conn, Drawable Drawable, Gc Gcontext, Arcs []Arc) []byte {
+ size := xgb.Pad((12 + xgb.Pad((len(Arcs) * 12))))
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 68 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Drawable))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(Gc))
+ b += 4
+
+ b += ArcListBytes(buf[b:], Arcs)
+
+ return buf
+}
+
+// Request FillPoly
+// size: xgb.Pad((16 + xgb.Pad((len(Points) * 4))))
+type FillPolyCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for FillPoly
+func FillPoly(c *xgb.Conn, Drawable Drawable, Gc Gcontext, Shape byte, CoordinateMode byte, Points []Point) FillPolyCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(fillPolyRequest(c, Drawable, Gc, Shape, CoordinateMode, Points), cookie)
+ return FillPolyCookie{cookie}
+}
+
+func FillPolyChecked(c *xgb.Conn, Drawable Drawable, Gc Gcontext, Shape byte, CoordinateMode byte, Points []Point) FillPolyCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(fillPolyRequest(c, Drawable, Gc, Shape, CoordinateMode, Points), cookie)
+ return FillPolyCookie{cookie}
+}
+
+func (cook FillPolyCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for FillPoly
+func fillPolyRequest(c *xgb.Conn, Drawable Drawable, Gc Gcontext, Shape byte, CoordinateMode byte, Points []Point) []byte {
+ size := xgb.Pad((16 + xgb.Pad((len(Points) * 4))))
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 69 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Drawable))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(Gc))
+ b += 4
+
+ buf[b] = Shape
+ b += 1
+
+ buf[b] = CoordinateMode
+ b += 1
+
+ b += 2 // padding
+
+ b += PointListBytes(buf[b:], Points)
+
+ return buf
+}
+
+// Request PolyFillRectangle
+// size: xgb.Pad((12 + xgb.Pad((len(Rectangles) * 8))))
+type PolyFillRectangleCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for PolyFillRectangle
+func PolyFillRectangle(c *xgb.Conn, Drawable Drawable, Gc Gcontext, Rectangles []Rectangle) PolyFillRectangleCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(polyFillRectangleRequest(c, Drawable, Gc, Rectangles), cookie)
+ return PolyFillRectangleCookie{cookie}
+}
+
+func PolyFillRectangleChecked(c *xgb.Conn, Drawable Drawable, Gc Gcontext, Rectangles []Rectangle) PolyFillRectangleCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(polyFillRectangleRequest(c, Drawable, Gc, Rectangles), cookie)
+ return PolyFillRectangleCookie{cookie}
+}
+
+func (cook PolyFillRectangleCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for PolyFillRectangle
+func polyFillRectangleRequest(c *xgb.Conn, Drawable Drawable, Gc Gcontext, Rectangles []Rectangle) []byte {
+ size := xgb.Pad((12 + xgb.Pad((len(Rectangles) * 8))))
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 70 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Drawable))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(Gc))
+ b += 4
+
+ b += RectangleListBytes(buf[b:], Rectangles)
+
+ return buf
+}
+
+// Request PolyFillArc
+// size: xgb.Pad((12 + xgb.Pad((len(Arcs) * 12))))
+type PolyFillArcCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for PolyFillArc
+func PolyFillArc(c *xgb.Conn, Drawable Drawable, Gc Gcontext, Arcs []Arc) PolyFillArcCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(polyFillArcRequest(c, Drawable, Gc, Arcs), cookie)
+ return PolyFillArcCookie{cookie}
+}
+
+func PolyFillArcChecked(c *xgb.Conn, Drawable Drawable, Gc Gcontext, Arcs []Arc) PolyFillArcCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(polyFillArcRequest(c, Drawable, Gc, Arcs), cookie)
+ return PolyFillArcCookie{cookie}
+}
+
+func (cook PolyFillArcCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for PolyFillArc
+func polyFillArcRequest(c *xgb.Conn, Drawable Drawable, Gc Gcontext, Arcs []Arc) []byte {
+ size := xgb.Pad((12 + xgb.Pad((len(Arcs) * 12))))
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 71 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Drawable))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(Gc))
+ b += 4
+
+ b += ArcListBytes(buf[b:], Arcs)
+
+ return buf
+}
+
+// Request PutImage
+// size: xgb.Pad((24 + xgb.Pad((len(Data) * 1))))
+type PutImageCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for PutImage
+func PutImage(c *xgb.Conn, Format byte, Drawable Drawable, Gc Gcontext, Width uint16, Height uint16, DstX int16, DstY int16, LeftPad byte, Depth byte, Data []byte) PutImageCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(putImageRequest(c, Format, Drawable, Gc, Width, Height, DstX, DstY, LeftPad, Depth, Data), cookie)
+ return PutImageCookie{cookie}
+}
+
+func PutImageChecked(c *xgb.Conn, Format byte, Drawable Drawable, Gc Gcontext, Width uint16, Height uint16, DstX int16, DstY int16, LeftPad byte, Depth byte, Data []byte) PutImageCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(putImageRequest(c, Format, Drawable, Gc, Width, Height, DstX, DstY, LeftPad, Depth, Data), cookie)
+ return PutImageCookie{cookie}
+}
+
+func (cook PutImageCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for PutImage
+func putImageRequest(c *xgb.Conn, Format byte, Drawable Drawable, Gc Gcontext, Width uint16, Height uint16, DstX int16, DstY int16, LeftPad byte, Depth byte, Data []byte) []byte {
+ size := xgb.Pad((24 + xgb.Pad((len(Data) * 1))))
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 72 // request opcode
+ b += 1
+
+ buf[b] = Format
+ b += 1
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Drawable))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(Gc))
+ b += 4
+
+ xgb.Put16(buf[b:], Width)
+ b += 2
+
+ xgb.Put16(buf[b:], Height)
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(DstX))
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(DstY))
+ b += 2
+
+ buf[b] = LeftPad
+ b += 1
+
+ buf[b] = Depth
+ b += 1
+
+ b += 2 // padding
+
+ copy(buf[b:], Data[:len(Data)])
+ b += xgb.Pad(int(len(Data)))
+
+ return buf
+}
+
+// Request GetImage
+// size: 20
+type GetImageCookie struct {
+ *xgb.Cookie
+}
+
+func GetImage(c *xgb.Conn, Format byte, Drawable Drawable, X int16, Y int16, Width uint16, Height uint16, PlaneMask uint32) GetImageCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(getImageRequest(c, Format, Drawable, X, Y, Width, Height, PlaneMask), cookie)
+ return GetImageCookie{cookie}
+}
+
+func GetImageUnchecked(c *xgb.Conn, Format byte, Drawable Drawable, X int16, Y int16, Width uint16, Height uint16, PlaneMask uint32) GetImageCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(getImageRequest(c, Format, Drawable, X, Y, Width, Height, PlaneMask), cookie)
+ return GetImageCookie{cookie}
+}
+
+// Request reply for GetImage
+// size: (32 + xgb.Pad(((int(Length) * 4) * 1)))
+type GetImageReply struct {
+ Sequence uint16
+ Length uint32
+ Depth byte
+ Visual Visualid
+ // padding: 20 bytes
+ Data []byte // size: xgb.Pad(((int(Length) * 4) * 1))
+}
+
+// Waits and reads reply data from request GetImage
+func (cook GetImageCookie) Reply() (*GetImageReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return getImageReply(buf), nil
+}
+
+// Read reply into structure from buffer for GetImage
+func getImageReply(buf []byte) *GetImageReply {
+ v := new(GetImageReply)
+ b := 1 // skip reply determinant
+
+ v.Depth = buf[b]
+ b += 1
+
+ v.Sequence = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Length = xgb.Get32(buf[b:]) // 4-byte units
+ b += 4
+
+ v.Visual = Visualid(xgb.Get32(buf[b:]))
+ b += 4
+
+ b += 20 // padding
+
+ v.Data = make([]byte, (int(v.Length) * 4))
+ copy(v.Data[:(int(v.Length)*4)], buf[b:])
+ b += xgb.Pad(int((int(v.Length) * 4)))
+
+ return v
+}
+
+// Write request to wire for GetImage
+func getImageRequest(c *xgb.Conn, Format byte, Drawable Drawable, X int16, Y int16, Width uint16, Height uint16, PlaneMask uint32) []byte {
+ size := 20
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 73 // request opcode
+ b += 1
+
+ buf[b] = Format
+ b += 1
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Drawable))
+ b += 4
+
+ xgb.Put16(buf[b:], uint16(X))
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(Y))
+ b += 2
+
+ xgb.Put16(buf[b:], Width)
+ b += 2
+
+ xgb.Put16(buf[b:], Height)
+ b += 2
+
+ xgb.Put32(buf[b:], PlaneMask)
+ b += 4
+
+ return buf
+}
+
+// Request PolyText8
+// size: xgb.Pad((16 + xgb.Pad((len(Items) * 1))))
+type PolyText8Cookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for PolyText8
+func PolyText8(c *xgb.Conn, Drawable Drawable, Gc Gcontext, X int16, Y int16, Items []byte) PolyText8Cookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(polyText8Request(c, Drawable, Gc, X, Y, Items), cookie)
+ return PolyText8Cookie{cookie}
+}
+
+func PolyText8Checked(c *xgb.Conn, Drawable Drawable, Gc Gcontext, X int16, Y int16, Items []byte) PolyText8Cookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(polyText8Request(c, Drawable, Gc, X, Y, Items), cookie)
+ return PolyText8Cookie{cookie}
+}
+
+func (cook PolyText8Cookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for PolyText8
+func polyText8Request(c *xgb.Conn, Drawable Drawable, Gc Gcontext, X int16, Y int16, Items []byte) []byte {
+ size := xgb.Pad((16 + xgb.Pad((len(Items) * 1))))
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 74 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Drawable))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(Gc))
+ b += 4
+
+ xgb.Put16(buf[b:], uint16(X))
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(Y))
+ b += 2
+
+ copy(buf[b:], Items[:len(Items)])
+ b += xgb.Pad(int(len(Items)))
+
+ return buf
+}
+
+// Request PolyText16
+// size: xgb.Pad((16 + xgb.Pad((len(Items) * 1))))
+type PolyText16Cookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for PolyText16
+func PolyText16(c *xgb.Conn, Drawable Drawable, Gc Gcontext, X int16, Y int16, Items []byte) PolyText16Cookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(polyText16Request(c, Drawable, Gc, X, Y, Items), cookie)
+ return PolyText16Cookie{cookie}
+}
+
+func PolyText16Checked(c *xgb.Conn, Drawable Drawable, Gc Gcontext, X int16, Y int16, Items []byte) PolyText16Cookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(polyText16Request(c, Drawable, Gc, X, Y, Items), cookie)
+ return PolyText16Cookie{cookie}
+}
+
+func (cook PolyText16Cookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for PolyText16
+func polyText16Request(c *xgb.Conn, Drawable Drawable, Gc Gcontext, X int16, Y int16, Items []byte) []byte {
+ size := xgb.Pad((16 + xgb.Pad((len(Items) * 1))))
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 75 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Drawable))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(Gc))
+ b += 4
+
+ xgb.Put16(buf[b:], uint16(X))
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(Y))
+ b += 2
+
+ copy(buf[b:], Items[:len(Items)])
+ b += xgb.Pad(int(len(Items)))
+
+ return buf
+}
+
+// Request ImageText8
+// size: xgb.Pad((16 + xgb.Pad((int(StringLen) * 1))))
+type ImageText8Cookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for ImageText8
+func ImageText8(c *xgb.Conn, StringLen byte, Drawable Drawable, Gc Gcontext, X int16, Y int16, String string) ImageText8Cookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(imageText8Request(c, StringLen, Drawable, Gc, X, Y, String), cookie)
+ return ImageText8Cookie{cookie}
+}
+
+func ImageText8Checked(c *xgb.Conn, StringLen byte, Drawable Drawable, Gc Gcontext, X int16, Y int16, String string) ImageText8Cookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(imageText8Request(c, StringLen, Drawable, Gc, X, Y, String), cookie)
+ return ImageText8Cookie{cookie}
+}
+
+func (cook ImageText8Cookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for ImageText8
+func imageText8Request(c *xgb.Conn, StringLen byte, Drawable Drawable, Gc Gcontext, X int16, Y int16, String string) []byte {
+ size := xgb.Pad((16 + xgb.Pad((int(StringLen) * 1))))
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 76 // request opcode
+ b += 1
+
+ buf[b] = StringLen
+ b += 1
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Drawable))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(Gc))
+ b += 4
+
+ xgb.Put16(buf[b:], uint16(X))
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(Y))
+ b += 2
+
+ copy(buf[b:], String[:StringLen])
+ b += xgb.Pad(int(StringLen))
+
+ return buf
+}
+
+// Request ImageText16
+// size: xgb.Pad((16 + xgb.Pad((int(StringLen) * 2))))
+type ImageText16Cookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for ImageText16
+func ImageText16(c *xgb.Conn, StringLen byte, Drawable Drawable, Gc Gcontext, X int16, Y int16, String []Char2b) ImageText16Cookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(imageText16Request(c, StringLen, Drawable, Gc, X, Y, String), cookie)
+ return ImageText16Cookie{cookie}
+}
+
+func ImageText16Checked(c *xgb.Conn, StringLen byte, Drawable Drawable, Gc Gcontext, X int16, Y int16, String []Char2b) ImageText16Cookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(imageText16Request(c, StringLen, Drawable, Gc, X, Y, String), cookie)
+ return ImageText16Cookie{cookie}
+}
+
+func (cook ImageText16Cookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for ImageText16
+func imageText16Request(c *xgb.Conn, StringLen byte, Drawable Drawable, Gc Gcontext, X int16, Y int16, String []Char2b) []byte {
+ size := xgb.Pad((16 + xgb.Pad((int(StringLen) * 2))))
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 77 // request opcode
+ b += 1
+
+ buf[b] = StringLen
+ b += 1
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Drawable))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(Gc))
+ b += 4
+
+ xgb.Put16(buf[b:], uint16(X))
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(Y))
+ b += 2
+
+ b += Char2bListBytes(buf[b:], String)
+
+ return buf
+}
+
+// Request CreateColormap
+// size: 16
+type CreateColormapCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for CreateColormap
+func CreateColormap(c *xgb.Conn, Alloc byte, Mid Colormap, Window Window, Visual Visualid) CreateColormapCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(createColormapRequest(c, Alloc, Mid, Window, Visual), cookie)
+ return CreateColormapCookie{cookie}
+}
+
+func CreateColormapChecked(c *xgb.Conn, Alloc byte, Mid Colormap, Window Window, Visual Visualid) CreateColormapCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(createColormapRequest(c, Alloc, Mid, Window, Visual), cookie)
+ return CreateColormapCookie{cookie}
+}
+
+func (cook CreateColormapCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for CreateColormap
+func createColormapRequest(c *xgb.Conn, Alloc byte, Mid Colormap, Window Window, Visual Visualid) []byte {
+ size := 16
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 78 // request opcode
+ b += 1
+
+ buf[b] = Alloc
+ b += 1
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Mid))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(Window))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(Visual))
+ b += 4
+
+ return buf
+}
+
+// Request FreeColormap
+// size: 8
+type FreeColormapCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for FreeColormap
+func FreeColormap(c *xgb.Conn, Cmap Colormap) FreeColormapCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(freeColormapRequest(c, Cmap), cookie)
+ return FreeColormapCookie{cookie}
+}
+
+func FreeColormapChecked(c *xgb.Conn, Cmap Colormap) FreeColormapCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(freeColormapRequest(c, Cmap), cookie)
+ return FreeColormapCookie{cookie}
+}
+
+func (cook FreeColormapCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for FreeColormap
+func freeColormapRequest(c *xgb.Conn, Cmap Colormap) []byte {
+ size := 8
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 79 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Cmap))
+ b += 4
+
+ return buf
+}
+
+// Request CopyColormapAndFree
+// size: 12
+type CopyColormapAndFreeCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for CopyColormapAndFree
+func CopyColormapAndFree(c *xgb.Conn, Mid Colormap, SrcCmap Colormap) CopyColormapAndFreeCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(copyColormapAndFreeRequest(c, Mid, SrcCmap), cookie)
+ return CopyColormapAndFreeCookie{cookie}
+}
+
+func CopyColormapAndFreeChecked(c *xgb.Conn, Mid Colormap, SrcCmap Colormap) CopyColormapAndFreeCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(copyColormapAndFreeRequest(c, Mid, SrcCmap), cookie)
+ return CopyColormapAndFreeCookie{cookie}
+}
+
+func (cook CopyColormapAndFreeCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for CopyColormapAndFree
+func copyColormapAndFreeRequest(c *xgb.Conn, Mid Colormap, SrcCmap Colormap) []byte {
+ size := 12
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 80 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Mid))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(SrcCmap))
+ b += 4
+
+ return buf
+}
+
+// Request InstallColormap
+// size: 8
+type InstallColormapCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for InstallColormap
+func InstallColormap(c *xgb.Conn, Cmap Colormap) InstallColormapCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(installColormapRequest(c, Cmap), cookie)
+ return InstallColormapCookie{cookie}
+}
+
+func InstallColormapChecked(c *xgb.Conn, Cmap Colormap) InstallColormapCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(installColormapRequest(c, Cmap), cookie)
+ return InstallColormapCookie{cookie}
+}
+
+func (cook InstallColormapCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for InstallColormap
+func installColormapRequest(c *xgb.Conn, Cmap Colormap) []byte {
+ size := 8
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 81 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Cmap))
+ b += 4
+
+ return buf
+}
+
+// Request UninstallColormap
+// size: 8
+type UninstallColormapCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for UninstallColormap
+func UninstallColormap(c *xgb.Conn, Cmap Colormap) UninstallColormapCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(uninstallColormapRequest(c, Cmap), cookie)
+ return UninstallColormapCookie{cookie}
+}
+
+func UninstallColormapChecked(c *xgb.Conn, Cmap Colormap) UninstallColormapCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(uninstallColormapRequest(c, Cmap), cookie)
+ return UninstallColormapCookie{cookie}
+}
+
+func (cook UninstallColormapCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for UninstallColormap
+func uninstallColormapRequest(c *xgb.Conn, Cmap Colormap) []byte {
+ size := 8
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 82 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Cmap))
+ b += 4
+
+ return buf
+}
+
+// Request ListInstalledColormaps
+// size: 8
+type ListInstalledColormapsCookie struct {
+ *xgb.Cookie
+}
+
+func ListInstalledColormaps(c *xgb.Conn, Window Window) ListInstalledColormapsCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(listInstalledColormapsRequest(c, Window), cookie)
+ return ListInstalledColormapsCookie{cookie}
+}
+
+func ListInstalledColormapsUnchecked(c *xgb.Conn, Window Window) ListInstalledColormapsCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(listInstalledColormapsRequest(c, Window), cookie)
+ return ListInstalledColormapsCookie{cookie}
+}
+
+// Request reply for ListInstalledColormaps
+// size: (32 + xgb.Pad((int(CmapsLen) * 4)))
+type ListInstalledColormapsReply struct {
+ Sequence uint16
+ Length uint32
+ // padding: 1 bytes
+ CmapsLen uint16
+ // padding: 22 bytes
+ Cmaps []Colormap // size: xgb.Pad((int(CmapsLen) * 4))
+}
+
+// Waits and reads reply data from request ListInstalledColormaps
+func (cook ListInstalledColormapsCookie) Reply() (*ListInstalledColormapsReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return listInstalledColormapsReply(buf), nil
+}
+
+// Read reply into structure from buffer for ListInstalledColormaps
+func listInstalledColormapsReply(buf []byte) *ListInstalledColormapsReply {
+ v := new(ListInstalledColormapsReply)
+ 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.CmapsLen = xgb.Get16(buf[b:])
+ b += 2
+
+ b += 22 // padding
+
+ v.Cmaps = make([]Colormap, v.CmapsLen)
+ for i := 0; i < int(v.CmapsLen); i++ {
+ v.Cmaps[i] = Colormap(xgb.Get32(buf[b:]))
+ b += 4
+ }
+ b = xgb.Pad(b)
+
+ return v
+}
+
+// Write request to wire for ListInstalledColormaps
+func listInstalledColormapsRequest(c *xgb.Conn, Window Window) []byte {
+ size := 8
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 83 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ 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 AllocColor
+// size: 16
+type AllocColorCookie struct {
+ *xgb.Cookie
+}
+
+func AllocColor(c *xgb.Conn, Cmap Colormap, Red uint16, Green uint16, Blue uint16) AllocColorCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(allocColorRequest(c, Cmap, Red, Green, Blue), cookie)
+ return AllocColorCookie{cookie}
+}
+
+func AllocColorUnchecked(c *xgb.Conn, Cmap Colormap, Red uint16, Green uint16, Blue uint16) AllocColorCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(allocColorRequest(c, Cmap, Red, Green, Blue), cookie)
+ return AllocColorCookie{cookie}
+}
+
+// Request reply for AllocColor
+// size: 20
+type AllocColorReply struct {
+ Sequence uint16
+ Length uint32
+ // padding: 1 bytes
+ Red uint16
+ Green uint16
+ Blue uint16
+ // padding: 2 bytes
+ Pixel uint32
+}
+
+// Waits and reads reply data from request AllocColor
+func (cook AllocColorCookie) Reply() (*AllocColorReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return allocColorReply(buf), nil
+}
+
+// Read reply into structure from buffer for AllocColor
+func allocColorReply(buf []byte) *AllocColorReply {
+ v := new(AllocColorReply)
+ 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.Red = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Green = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Blue = xgb.Get16(buf[b:])
+ b += 2
+
+ b += 2 // padding
+
+ v.Pixel = xgb.Get32(buf[b:])
+ b += 4
+
+ return v
+}
+
+// Write request to wire for AllocColor
+func allocColorRequest(c *xgb.Conn, Cmap Colormap, Red uint16, Green uint16, Blue uint16) []byte {
+ size := 16
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 84 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Cmap))
+ b += 4
+
+ xgb.Put16(buf[b:], Red)
+ b += 2
+
+ xgb.Put16(buf[b:], Green)
+ b += 2
+
+ xgb.Put16(buf[b:], Blue)
+ b += 2
+
+ b += 2 // padding
+
+ return buf
+}
+
+// Request AllocNamedColor
+// size: xgb.Pad((12 + xgb.Pad((int(NameLen) * 1))))
+type AllocNamedColorCookie struct {
+ *xgb.Cookie
+}
+
+func AllocNamedColor(c *xgb.Conn, Cmap Colormap, NameLen uint16, Name string) AllocNamedColorCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(allocNamedColorRequest(c, Cmap, NameLen, Name), cookie)
+ return AllocNamedColorCookie{cookie}
+}
+
+func AllocNamedColorUnchecked(c *xgb.Conn, Cmap Colormap, NameLen uint16, Name string) AllocNamedColorCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(allocNamedColorRequest(c, Cmap, NameLen, Name), cookie)
+ return AllocNamedColorCookie{cookie}
+}
+
+// Request reply for AllocNamedColor
+// size: 24
+type AllocNamedColorReply struct {
+ Sequence uint16
+ Length uint32
+ // padding: 1 bytes
+ Pixel uint32
+ ExactRed uint16
+ ExactGreen uint16
+ ExactBlue uint16
+ VisualRed uint16
+ VisualGreen uint16
+ VisualBlue uint16
+}
+
+// Waits and reads reply data from request AllocNamedColor
+func (cook AllocNamedColorCookie) Reply() (*AllocNamedColorReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return allocNamedColorReply(buf), nil
+}
+
+// Read reply into structure from buffer for AllocNamedColor
+func allocNamedColorReply(buf []byte) *AllocNamedColorReply {
+ v := new(AllocNamedColorReply)
+ 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.Pixel = xgb.Get32(buf[b:])
+ b += 4
+
+ v.ExactRed = xgb.Get16(buf[b:])
+ b += 2
+
+ v.ExactGreen = xgb.Get16(buf[b:])
+ b += 2
+
+ v.ExactBlue = xgb.Get16(buf[b:])
+ b += 2
+
+ v.VisualRed = xgb.Get16(buf[b:])
+ b += 2
+
+ v.VisualGreen = xgb.Get16(buf[b:])
+ b += 2
+
+ v.VisualBlue = xgb.Get16(buf[b:])
+ b += 2
+
+ return v
+}
+
+// Write request to wire for AllocNamedColor
+func allocNamedColorRequest(c *xgb.Conn, Cmap Colormap, NameLen uint16, Name string) []byte {
+ size := xgb.Pad((12 + xgb.Pad((int(NameLen) * 1))))
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 85 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Cmap))
+ b += 4
+
+ xgb.Put16(buf[b:], NameLen)
+ b += 2
+
+ b += 2 // padding
+
+ copy(buf[b:], Name[:NameLen])
+ b += xgb.Pad(int(NameLen))
+
+ return buf
+}
+
+// Request AllocColorCells
+// size: 12
+type AllocColorCellsCookie struct {
+ *xgb.Cookie
+}
+
+func AllocColorCells(c *xgb.Conn, Contiguous bool, Cmap Colormap, Colors uint16, Planes uint16) AllocColorCellsCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(allocColorCellsRequest(c, Contiguous, Cmap, Colors, Planes), cookie)
+ return AllocColorCellsCookie{cookie}
+}
+
+func AllocColorCellsUnchecked(c *xgb.Conn, Contiguous bool, Cmap Colormap, Colors uint16, Planes uint16) AllocColorCellsCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(allocColorCellsRequest(c, Contiguous, Cmap, Colors, Planes), cookie)
+ return AllocColorCellsCookie{cookie}
+}
+
+// Request reply for AllocColorCells
+// size: ((32 + xgb.Pad((int(PixelsLen) * 4))) + xgb.Pad((int(MasksLen) * 4)))
+type AllocColorCellsReply struct {
+ Sequence uint16
+ Length uint32
+ // padding: 1 bytes
+ PixelsLen uint16
+ MasksLen uint16
+ // padding: 20 bytes
+ Pixels []uint32 // size: xgb.Pad((int(PixelsLen) * 4))
+ Masks []uint32 // size: xgb.Pad((int(MasksLen) * 4))
+}
+
+// Waits and reads reply data from request AllocColorCells
+func (cook AllocColorCellsCookie) Reply() (*AllocColorCellsReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return allocColorCellsReply(buf), nil
+}
+
+// Read reply into structure from buffer for AllocColorCells
+func allocColorCellsReply(buf []byte) *AllocColorCellsReply {
+ v := new(AllocColorCellsReply)
+ 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.PixelsLen = xgb.Get16(buf[b:])
+ b += 2
+
+ v.MasksLen = xgb.Get16(buf[b:])
+ b += 2
+
+ b += 20 // padding
+
+ v.Pixels = make([]uint32, v.PixelsLen)
+ for i := 0; i < int(v.PixelsLen); i++ {
+ v.Pixels[i] = xgb.Get32(buf[b:])
+ b += 4
+ }
+ b = xgb.Pad(b)
+
+ v.Masks = make([]uint32, v.MasksLen)
+ for i := 0; i < int(v.MasksLen); i++ {
+ v.Masks[i] = xgb.Get32(buf[b:])
+ b += 4
+ }
+ b = xgb.Pad(b)
+
+ return v
+}
+
+// Write request to wire for AllocColorCells
+func allocColorCellsRequest(c *xgb.Conn, Contiguous bool, Cmap Colormap, Colors uint16, Planes uint16) []byte {
+ size := 12
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 86 // request opcode
+ b += 1
+
+ if Contiguous {
+ buf[b] = 1
+ } else {
+ buf[b] = 0
+ }
+ b += 1
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Cmap))
+ b += 4
+
+ xgb.Put16(buf[b:], Colors)
+ b += 2
+
+ xgb.Put16(buf[b:], Planes)
+ b += 2
+
+ return buf
+}
+
+// Request AllocColorPlanes
+// size: 16
+type AllocColorPlanesCookie struct {
+ *xgb.Cookie
+}
+
+func AllocColorPlanes(c *xgb.Conn, Contiguous bool, Cmap Colormap, Colors uint16, Reds uint16, Greens uint16, Blues uint16) AllocColorPlanesCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(allocColorPlanesRequest(c, Contiguous, Cmap, Colors, Reds, Greens, Blues), cookie)
+ return AllocColorPlanesCookie{cookie}
+}
+
+func AllocColorPlanesUnchecked(c *xgb.Conn, Contiguous bool, Cmap Colormap, Colors uint16, Reds uint16, Greens uint16, Blues uint16) AllocColorPlanesCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(allocColorPlanesRequest(c, Contiguous, Cmap, Colors, Reds, Greens, Blues), cookie)
+ return AllocColorPlanesCookie{cookie}
+}
+
+// Request reply for AllocColorPlanes
+// size: (32 + xgb.Pad((int(PixelsLen) * 4)))
+type AllocColorPlanesReply struct {
+ Sequence uint16
+ Length uint32
+ // padding: 1 bytes
+ PixelsLen uint16
+ // padding: 2 bytes
+ RedMask uint32
+ GreenMask uint32
+ BlueMask uint32
+ // padding: 8 bytes
+ Pixels []uint32 // size: xgb.Pad((int(PixelsLen) * 4))
+}
+
+// Waits and reads reply data from request AllocColorPlanes
+func (cook AllocColorPlanesCookie) Reply() (*AllocColorPlanesReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return allocColorPlanesReply(buf), nil
+}
+
+// Read reply into structure from buffer for AllocColorPlanes
+func allocColorPlanesReply(buf []byte) *AllocColorPlanesReply {
+ v := new(AllocColorPlanesReply)
+ 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.PixelsLen = xgb.Get16(buf[b:])
+ b += 2
+
+ b += 2 // padding
+
+ v.RedMask = xgb.Get32(buf[b:])
+ b += 4
+
+ v.GreenMask = xgb.Get32(buf[b:])
+ b += 4
+
+ v.BlueMask = xgb.Get32(buf[b:])
+ b += 4
+
+ b += 8 // padding
+
+ v.Pixels = make([]uint32, v.PixelsLen)
+ for i := 0; i < int(v.PixelsLen); i++ {
+ v.Pixels[i] = xgb.Get32(buf[b:])
+ b += 4
+ }
+ b = xgb.Pad(b)
+
+ return v
+}
+
+// Write request to wire for AllocColorPlanes
+func allocColorPlanesRequest(c *xgb.Conn, Contiguous bool, Cmap Colormap, Colors uint16, Reds uint16, Greens uint16, Blues uint16) []byte {
+ size := 16
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 87 // request opcode
+ b += 1
+
+ if Contiguous {
+ buf[b] = 1
+ } else {
+ buf[b] = 0
+ }
+ b += 1
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Cmap))
+ b += 4
+
+ xgb.Put16(buf[b:], Colors)
+ b += 2
+
+ xgb.Put16(buf[b:], Reds)
+ b += 2
+
+ xgb.Put16(buf[b:], Greens)
+ b += 2
+
+ xgb.Put16(buf[b:], Blues)
+ b += 2
+
+ return buf
+}
+
+// Request FreeColors
+// size: xgb.Pad((12 + xgb.Pad((len(Pixels) * 4))))
+type FreeColorsCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for FreeColors
+func FreeColors(c *xgb.Conn, Cmap Colormap, PlaneMask uint32, Pixels []uint32) FreeColorsCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(freeColorsRequest(c, Cmap, PlaneMask, Pixels), cookie)
+ return FreeColorsCookie{cookie}
+}
+
+func FreeColorsChecked(c *xgb.Conn, Cmap Colormap, PlaneMask uint32, Pixels []uint32) FreeColorsCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(freeColorsRequest(c, Cmap, PlaneMask, Pixels), cookie)
+ return FreeColorsCookie{cookie}
+}
+
+func (cook FreeColorsCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for FreeColors
+func freeColorsRequest(c *xgb.Conn, Cmap Colormap, PlaneMask uint32, Pixels []uint32) []byte {
+ size := xgb.Pad((12 + xgb.Pad((len(Pixels) * 4))))
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 88 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Cmap))
+ b += 4
+
+ xgb.Put32(buf[b:], PlaneMask)
+ b += 4
+
+ for i := 0; i < int(len(Pixels)); i++ {
+ xgb.Put32(buf[b:], Pixels[i])
+ b += 4
+ }
+ b = xgb.Pad(b)
+
+ return buf
+}
+
+// Request StoreColors
+// size: xgb.Pad((8 + xgb.Pad((len(Items) * 12))))
+type StoreColorsCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for StoreColors
+func StoreColors(c *xgb.Conn, Cmap Colormap, Items []Coloritem) StoreColorsCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(storeColorsRequest(c, Cmap, Items), cookie)
+ return StoreColorsCookie{cookie}
+}
+
+func StoreColorsChecked(c *xgb.Conn, Cmap Colormap, Items []Coloritem) StoreColorsCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(storeColorsRequest(c, Cmap, Items), cookie)
+ return StoreColorsCookie{cookie}
+}
+
+func (cook StoreColorsCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for StoreColors
+func storeColorsRequest(c *xgb.Conn, Cmap Colormap, Items []Coloritem) []byte {
+ size := xgb.Pad((8 + xgb.Pad((len(Items) * 12))))
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 89 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Cmap))
+ b += 4
+
+ b += ColoritemListBytes(buf[b:], Items)
+
+ return buf
+}
+
+// Request StoreNamedColor
+// size: xgb.Pad((16 + xgb.Pad((int(NameLen) * 1))))
+type StoreNamedColorCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for StoreNamedColor
+func StoreNamedColor(c *xgb.Conn, Flags byte, Cmap Colormap, Pixel uint32, NameLen uint16, Name string) StoreNamedColorCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(storeNamedColorRequest(c, Flags, Cmap, Pixel, NameLen, Name), cookie)
+ return StoreNamedColorCookie{cookie}
+}
+
+func StoreNamedColorChecked(c *xgb.Conn, Flags byte, Cmap Colormap, Pixel uint32, NameLen uint16, Name string) StoreNamedColorCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(storeNamedColorRequest(c, Flags, Cmap, Pixel, NameLen, Name), cookie)
+ return StoreNamedColorCookie{cookie}
+}
+
+func (cook StoreNamedColorCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for StoreNamedColor
+func storeNamedColorRequest(c *xgb.Conn, Flags byte, Cmap Colormap, Pixel uint32, NameLen uint16, Name string) []byte {
+ size := xgb.Pad((16 + xgb.Pad((int(NameLen) * 1))))
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 90 // request opcode
+ b += 1
+
+ buf[b] = Flags
+ b += 1
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Cmap))
+ b += 4
+
+ xgb.Put32(buf[b:], Pixel)
+ b += 4
+
+ xgb.Put16(buf[b:], NameLen)
+ b += 2
+
+ b += 2 // padding
+
+ copy(buf[b:], Name[:NameLen])
+ b += xgb.Pad(int(NameLen))
+
+ return buf
+}
+
+// Request QueryColors
+// size: xgb.Pad((8 + xgb.Pad((len(Pixels) * 4))))
+type QueryColorsCookie struct {
+ *xgb.Cookie
+}
+
+func QueryColors(c *xgb.Conn, Cmap Colormap, Pixels []uint32) QueryColorsCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(queryColorsRequest(c, Cmap, Pixels), cookie)
+ return QueryColorsCookie{cookie}
+}
+
+func QueryColorsUnchecked(c *xgb.Conn, Cmap Colormap, Pixels []uint32) QueryColorsCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(queryColorsRequest(c, Cmap, Pixels), cookie)
+ return QueryColorsCookie{cookie}
+}
+
+// Request reply for QueryColors
+// size: (32 + xgb.Pad((int(ColorsLen) * 8)))
+type QueryColorsReply struct {
+ Sequence uint16
+ Length uint32
+ // padding: 1 bytes
+ ColorsLen uint16
+ // padding: 22 bytes
+ Colors []Rgb // size: xgb.Pad((int(ColorsLen) * 8))
+}
+
+// Waits and reads reply data from request QueryColors
+func (cook QueryColorsCookie) Reply() (*QueryColorsReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return queryColorsReply(buf), nil
+}
+
+// Read reply into structure from buffer for QueryColors
+func queryColorsReply(buf []byte) *QueryColorsReply {
+ v := new(QueryColorsReply)
+ 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.ColorsLen = xgb.Get16(buf[b:])
+ b += 2
+
+ b += 22 // padding
+
+ v.Colors = make([]Rgb, v.ColorsLen)
+ b += RgbReadList(buf[b:], v.Colors)
+
+ return v
+}
+
+// Write request to wire for QueryColors
+func queryColorsRequest(c *xgb.Conn, Cmap Colormap, Pixels []uint32) []byte {
+ size := xgb.Pad((8 + xgb.Pad((len(Pixels) * 4))))
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 91 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Cmap))
+ b += 4
+
+ for i := 0; i < int(len(Pixels)); i++ {
+ xgb.Put32(buf[b:], Pixels[i])
+ b += 4
+ }
+ b = xgb.Pad(b)
+
+ return buf
+}
+
+// Request LookupColor
+// size: xgb.Pad((12 + xgb.Pad((int(NameLen) * 1))))
+type LookupColorCookie struct {
+ *xgb.Cookie
+}
+
+func LookupColor(c *xgb.Conn, Cmap Colormap, NameLen uint16, Name string) LookupColorCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(lookupColorRequest(c, Cmap, NameLen, Name), cookie)
+ return LookupColorCookie{cookie}
+}
+
+func LookupColorUnchecked(c *xgb.Conn, Cmap Colormap, NameLen uint16, Name string) LookupColorCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(lookupColorRequest(c, Cmap, NameLen, Name), cookie)
+ return LookupColorCookie{cookie}
+}
+
+// Request reply for LookupColor
+// size: 20
+type LookupColorReply struct {
+ Sequence uint16
+ Length uint32
+ // padding: 1 bytes
+ ExactRed uint16
+ ExactGreen uint16
+ ExactBlue uint16
+ VisualRed uint16
+ VisualGreen uint16
+ VisualBlue uint16
+}
+
+// Waits and reads reply data from request LookupColor
+func (cook LookupColorCookie) Reply() (*LookupColorReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return lookupColorReply(buf), nil
+}
+
+// Read reply into structure from buffer for LookupColor
+func lookupColorReply(buf []byte) *LookupColorReply {
+ v := new(LookupColorReply)
+ 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.ExactRed = xgb.Get16(buf[b:])
+ b += 2
+
+ v.ExactGreen = xgb.Get16(buf[b:])
+ b += 2
+
+ v.ExactBlue = xgb.Get16(buf[b:])
+ b += 2
+
+ v.VisualRed = xgb.Get16(buf[b:])
+ b += 2
+
+ v.VisualGreen = xgb.Get16(buf[b:])
+ b += 2
+
+ v.VisualBlue = xgb.Get16(buf[b:])
+ b += 2
+
+ return v
+}
+
+// Write request to wire for LookupColor
+func lookupColorRequest(c *xgb.Conn, Cmap Colormap, NameLen uint16, Name string) []byte {
+ size := xgb.Pad((12 + xgb.Pad((int(NameLen) * 1))))
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 92 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Cmap))
+ b += 4
+
+ xgb.Put16(buf[b:], NameLen)
+ b += 2
+
+ b += 2 // padding
+
+ copy(buf[b:], Name[:NameLen])
+ b += xgb.Pad(int(NameLen))
+
+ return buf
+}
+
+// Request CreateCursor
+// size: 32
+type CreateCursorCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for CreateCursor
+func CreateCursor(c *xgb.Conn, Cid Cursor, Source Pixmap, Mask Pixmap, ForeRed uint16, ForeGreen uint16, ForeBlue uint16, BackRed uint16, BackGreen uint16, BackBlue uint16, X uint16, Y uint16) CreateCursorCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(createCursorRequest(c, Cid, Source, Mask, ForeRed, ForeGreen, ForeBlue, BackRed, BackGreen, BackBlue, X, Y), cookie)
+ return CreateCursorCookie{cookie}
+}
+
+func CreateCursorChecked(c *xgb.Conn, Cid Cursor, Source Pixmap, Mask Pixmap, ForeRed uint16, ForeGreen uint16, ForeBlue uint16, BackRed uint16, BackGreen uint16, BackBlue uint16, X uint16, Y uint16) CreateCursorCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(createCursorRequest(c, Cid, Source, Mask, ForeRed, ForeGreen, ForeBlue, BackRed, BackGreen, BackBlue, X, Y), cookie)
+ return CreateCursorCookie{cookie}
+}
+
+func (cook CreateCursorCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for CreateCursor
+func createCursorRequest(c *xgb.Conn, Cid Cursor, Source Pixmap, Mask Pixmap, ForeRed uint16, ForeGreen uint16, ForeBlue uint16, BackRed uint16, BackGreen uint16, BackBlue uint16, X uint16, Y uint16) []byte {
+ size := 32
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 93 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Cid))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(Source))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(Mask))
+ b += 4
+
+ xgb.Put16(buf[b:], ForeRed)
+ b += 2
+
+ xgb.Put16(buf[b:], ForeGreen)
+ b += 2
+
+ xgb.Put16(buf[b:], ForeBlue)
+ b += 2
+
+ xgb.Put16(buf[b:], BackRed)
+ b += 2
+
+ xgb.Put16(buf[b:], BackGreen)
+ b += 2
+
+ xgb.Put16(buf[b:], BackBlue)
+ b += 2
+
+ xgb.Put16(buf[b:], X)
+ b += 2
+
+ xgb.Put16(buf[b:], Y)
+ b += 2
+
+ return buf
+}
+
+// Request CreateGlyphCursor
+// size: 32
+type CreateGlyphCursorCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for CreateGlyphCursor
+func CreateGlyphCursor(c *xgb.Conn, Cid Cursor, SourceFont Font, MaskFont Font, SourceChar uint16, MaskChar uint16, ForeRed uint16, ForeGreen uint16, ForeBlue uint16, BackRed uint16, BackGreen uint16, BackBlue uint16) CreateGlyphCursorCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(createGlyphCursorRequest(c, Cid, SourceFont, MaskFont, SourceChar, MaskChar, ForeRed, ForeGreen, ForeBlue, BackRed, BackGreen, BackBlue), cookie)
+ return CreateGlyphCursorCookie{cookie}
+}
+
+func CreateGlyphCursorChecked(c *xgb.Conn, Cid Cursor, SourceFont Font, MaskFont Font, SourceChar uint16, MaskChar uint16, ForeRed uint16, ForeGreen uint16, ForeBlue uint16, BackRed uint16, BackGreen uint16, BackBlue uint16) CreateGlyphCursorCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(createGlyphCursorRequest(c, Cid, SourceFont, MaskFont, SourceChar, MaskChar, ForeRed, ForeGreen, ForeBlue, BackRed, BackGreen, BackBlue), cookie)
+ return CreateGlyphCursorCookie{cookie}
+}
+
+func (cook CreateGlyphCursorCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for CreateGlyphCursor
+func createGlyphCursorRequest(c *xgb.Conn, Cid Cursor, SourceFont Font, MaskFont Font, SourceChar uint16, MaskChar uint16, ForeRed uint16, ForeGreen uint16, ForeBlue uint16, BackRed uint16, BackGreen uint16, BackBlue uint16) []byte {
+ size := 32
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 94 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Cid))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(SourceFont))
+ b += 4
+
+ xgb.Put32(buf[b:], uint32(MaskFont))
+ b += 4
+
+ xgb.Put16(buf[b:], SourceChar)
+ b += 2
+
+ xgb.Put16(buf[b:], MaskChar)
+ b += 2
+
+ xgb.Put16(buf[b:], ForeRed)
+ b += 2
+
+ xgb.Put16(buf[b:], ForeGreen)
+ b += 2
+
+ xgb.Put16(buf[b:], ForeBlue)
+ b += 2
+
+ xgb.Put16(buf[b:], BackRed)
+ b += 2
+
+ xgb.Put16(buf[b:], BackGreen)
+ b += 2
+
+ xgb.Put16(buf[b:], BackBlue)
+ b += 2
+
+ return buf
+}
+
+// Request FreeCursor
+// size: 8
+type FreeCursorCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for FreeCursor
+func FreeCursor(c *xgb.Conn, Cursor Cursor) FreeCursorCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(freeCursorRequest(c, Cursor), cookie)
+ return FreeCursorCookie{cookie}
+}
+
+func FreeCursorChecked(c *xgb.Conn, Cursor Cursor) FreeCursorCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(freeCursorRequest(c, Cursor), cookie)
+ return FreeCursorCookie{cookie}
+}
+
+func (cook FreeCursorCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for FreeCursor
+func freeCursorRequest(c *xgb.Conn, Cursor Cursor) []byte {
+ size := 8
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 95 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Cursor))
+ b += 4
+
+ return buf
+}
+
+// Request RecolorCursor
+// size: 20
+type RecolorCursorCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for RecolorCursor
+func RecolorCursor(c *xgb.Conn, Cursor Cursor, ForeRed uint16, ForeGreen uint16, ForeBlue uint16, BackRed uint16, BackGreen uint16, BackBlue uint16) RecolorCursorCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(recolorCursorRequest(c, Cursor, ForeRed, ForeGreen, ForeBlue, BackRed, BackGreen, BackBlue), cookie)
+ return RecolorCursorCookie{cookie}
+}
+
+func RecolorCursorChecked(c *xgb.Conn, Cursor Cursor, ForeRed uint16, ForeGreen uint16, ForeBlue uint16, BackRed uint16, BackGreen uint16, BackBlue uint16) RecolorCursorCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(recolorCursorRequest(c, Cursor, ForeRed, ForeGreen, ForeBlue, BackRed, BackGreen, BackBlue), cookie)
+ return RecolorCursorCookie{cookie}
+}
+
+func (cook RecolorCursorCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for RecolorCursor
+func recolorCursorRequest(c *xgb.Conn, Cursor Cursor, ForeRed uint16, ForeGreen uint16, ForeBlue uint16, BackRed uint16, BackGreen uint16, BackBlue uint16) []byte {
+ size := 20
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 96 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Cursor))
+ b += 4
+
+ xgb.Put16(buf[b:], ForeRed)
+ b += 2
+
+ xgb.Put16(buf[b:], ForeGreen)
+ b += 2
+
+ xgb.Put16(buf[b:], ForeBlue)
+ b += 2
+
+ xgb.Put16(buf[b:], BackRed)
+ b += 2
+
+ xgb.Put16(buf[b:], BackGreen)
+ b += 2
+
+ xgb.Put16(buf[b:], BackBlue)
+ b += 2
+
+ return buf
+}
+
+// Request QueryBestSize
+// size: 12
+type QueryBestSizeCookie struct {
+ *xgb.Cookie
+}
+
+func QueryBestSize(c *xgb.Conn, Class byte, Drawable Drawable, Width uint16, Height uint16) QueryBestSizeCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(queryBestSizeRequest(c, Class, Drawable, Width, Height), cookie)
+ return QueryBestSizeCookie{cookie}
+}
+
+func QueryBestSizeUnchecked(c *xgb.Conn, Class byte, Drawable Drawable, Width uint16, Height uint16) QueryBestSizeCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(queryBestSizeRequest(c, Class, Drawable, Width, Height), cookie)
+ return QueryBestSizeCookie{cookie}
+}
+
+// Request reply for QueryBestSize
+// size: 12
+type QueryBestSizeReply struct {
+ Sequence uint16
+ Length uint32
+ // padding: 1 bytes
+ Width uint16
+ Height uint16
+}
+
+// Waits and reads reply data from request QueryBestSize
+func (cook QueryBestSizeCookie) Reply() (*QueryBestSizeReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return queryBestSizeReply(buf), nil
+}
+
+// Read reply into structure from buffer for QueryBestSize
+func queryBestSizeReply(buf []byte) *QueryBestSizeReply {
+ v := new(QueryBestSizeReply)
+ 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.Width = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Height = xgb.Get16(buf[b:])
+ b += 2
+
+ return v
+}
+
+// Write request to wire for QueryBestSize
+func queryBestSizeRequest(c *xgb.Conn, Class byte, Drawable Drawable, Width uint16, Height uint16) []byte {
+ size := 12
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 97 // request opcode
+ b += 1
+
+ buf[b] = Class
+ b += 1
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], uint32(Drawable))
+ b += 4
+
+ xgb.Put16(buf[b:], Width)
+ b += 2
+
+ xgb.Put16(buf[b:], Height)
+ b += 2
+
+ return buf
+}
+
+// Request QueryExtension
+// size: xgb.Pad((8 + xgb.Pad((int(NameLen) * 1))))
+type QueryExtensionCookie struct {
+ *xgb.Cookie
+}
+
+func QueryExtension(c *xgb.Conn, NameLen uint16, Name string) QueryExtensionCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(queryExtensionRequest(c, NameLen, Name), cookie)
+ return QueryExtensionCookie{cookie}
+}
+
+func QueryExtensionUnchecked(c *xgb.Conn, NameLen uint16, Name string) QueryExtensionCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(queryExtensionRequest(c, NameLen, Name), cookie)
+ return QueryExtensionCookie{cookie}
+}
+
+// Request reply for QueryExtension
+// size: 12
+type QueryExtensionReply struct {
+ Sequence uint16
+ Length uint32
+ // padding: 1 bytes
+ Present bool
+ MajorOpcode byte
+ FirstEvent byte
+ FirstError byte
+}
+
+// Waits and reads reply data from request QueryExtension
+func (cook QueryExtensionCookie) Reply() (*QueryExtensionReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return queryExtensionReply(buf), nil
+}
+
+// Read reply into structure from buffer for QueryExtension
+func queryExtensionReply(buf []byte) *QueryExtensionReply {
+ v := new(QueryExtensionReply)
+ 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.Present = true
+ } else {
+ v.Present = false
+ }
+ b += 1
+
+ v.MajorOpcode = buf[b]
+ b += 1
+
+ v.FirstEvent = buf[b]
+ b += 1
+
+ v.FirstError = buf[b]
+ b += 1
+
+ return v
+}
+
+// Write request to wire for QueryExtension
+func queryExtensionRequest(c *xgb.Conn, NameLen uint16, Name string) []byte {
+ size := xgb.Pad((8 + xgb.Pad((int(NameLen) * 1))))
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 98 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put16(buf[b:], NameLen)
+ b += 2
+
+ b += 2 // padding
+
+ copy(buf[b:], Name[:NameLen])
+ b += xgb.Pad(int(NameLen))
+
+ return buf
+}
+
+// Request ListExtensions
+// size: 4
+type ListExtensionsCookie struct {
+ *xgb.Cookie
+}
+
+func ListExtensions(c *xgb.Conn) ListExtensionsCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(listExtensionsRequest(c), cookie)
+ return ListExtensionsCookie{cookie}
+}
+
+func ListExtensionsUnchecked(c *xgb.Conn) ListExtensionsCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(listExtensionsRequest(c), cookie)
+ return ListExtensionsCookie{cookie}
+}
+
+// Request reply for ListExtensions
+// size: (32 + StrListSize(Names))
+type ListExtensionsReply struct {
+ Sequence uint16
+ Length uint32
+ NamesLen byte
+ // padding: 24 bytes
+ Names []Str // size: StrListSize(Names)
+}
+
+// Waits and reads reply data from request ListExtensions
+func (cook ListExtensionsCookie) Reply() (*ListExtensionsReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return listExtensionsReply(buf), nil
+}
+
+// Read reply into structure from buffer for ListExtensions
+func listExtensionsReply(buf []byte) *ListExtensionsReply {
+ v := new(ListExtensionsReply)
+ b := 1 // skip reply determinant
+
+ v.NamesLen = buf[b]
+ b += 1
+
+ v.Sequence = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Length = xgb.Get32(buf[b:]) // 4-byte units
+ b += 4
+
+ b += 24 // padding
+
+ v.Names = make([]Str, v.NamesLen)
+ b += StrReadList(buf[b:], v.Names)
+
+ return v
+}
+
+// Write request to wire for ListExtensions
+func listExtensionsRequest(c *xgb.Conn) []byte {
+ size := 4
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 99 // request opcode
+ b += 1
+
+ b += 1 // padding
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ return buf
+}
+
+// Request ChangeKeyboardMapping
+// size: xgb.Pad((8 + xgb.Pad(((int(KeycodeCount) * int(KeysymsPerKeycode)) * 4))))
+type ChangeKeyboardMappingCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for ChangeKeyboardMapping
+func ChangeKeyboardMapping(c *xgb.Conn, KeycodeCount byte, FirstKeycode Keycode, KeysymsPerKeycode byte, Keysyms []Keysym) ChangeKeyboardMappingCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(changeKeyboardMappingRequest(c, KeycodeCount, FirstKeycode, KeysymsPerKeycode, Keysyms), cookie)
+ return ChangeKeyboardMappingCookie{cookie}
+}
+
+func ChangeKeyboardMappingChecked(c *xgb.Conn, KeycodeCount byte, FirstKeycode Keycode, KeysymsPerKeycode byte, Keysyms []Keysym) ChangeKeyboardMappingCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(changeKeyboardMappingRequest(c, KeycodeCount, FirstKeycode, KeysymsPerKeycode, Keysyms), cookie)
+ return ChangeKeyboardMappingCookie{cookie}
+}
+
+func (cook ChangeKeyboardMappingCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for ChangeKeyboardMapping
+func changeKeyboardMappingRequest(c *xgb.Conn, KeycodeCount byte, FirstKeycode Keycode, KeysymsPerKeycode byte, Keysyms []Keysym) []byte {
+ size := xgb.Pad((8 + xgb.Pad(((int(KeycodeCount) * int(KeysymsPerKeycode)) * 4))))
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 100 // request opcode
+ b += 1
+
+ buf[b] = KeycodeCount
+ b += 1
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ buf[b] = byte(FirstKeycode)
+ b += 1
+
+ buf[b] = KeysymsPerKeycode
+ b += 1
+
+ b += 2 // padding
+
+ for i := 0; i < int((int(KeycodeCount) * int(KeysymsPerKeycode))); i++ {
+ xgb.Put32(buf[b:], uint32(Keysyms[i]))
+ b += 4
+ }
+ b = xgb.Pad(b)
+
+ return buf
+}
+
+// Request GetKeyboardMapping
+// size: 8
+type GetKeyboardMappingCookie struct {
+ *xgb.Cookie
+}
+
+func GetKeyboardMapping(c *xgb.Conn, FirstKeycode Keycode, Count byte) GetKeyboardMappingCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(getKeyboardMappingRequest(c, FirstKeycode, Count), cookie)
+ return GetKeyboardMappingCookie{cookie}
+}
+
+func GetKeyboardMappingUnchecked(c *xgb.Conn, FirstKeycode Keycode, Count byte) GetKeyboardMappingCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(getKeyboardMappingRequest(c, FirstKeycode, Count), cookie)
+ return GetKeyboardMappingCookie{cookie}
+}
+
+// Request reply for GetKeyboardMapping
+// size: (32 + xgb.Pad((int(Length) * 4)))
+type GetKeyboardMappingReply struct {
+ Sequence uint16
+ Length uint32
+ KeysymsPerKeycode byte
+ // padding: 24 bytes
+ Keysyms []Keysym // size: xgb.Pad((int(Length) * 4))
+}
+
+// Waits and reads reply data from request GetKeyboardMapping
+func (cook GetKeyboardMappingCookie) Reply() (*GetKeyboardMappingReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return getKeyboardMappingReply(buf), nil
+}
+
+// Read reply into structure from buffer for GetKeyboardMapping
+func getKeyboardMappingReply(buf []byte) *GetKeyboardMappingReply {
+ v := new(GetKeyboardMappingReply)
+ b := 1 // skip reply determinant
+
+ v.KeysymsPerKeycode = buf[b]
+ b += 1
+
+ v.Sequence = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Length = xgb.Get32(buf[b:]) // 4-byte units
+ b += 4
+
+ b += 24 // padding
+
+ v.Keysyms = make([]Keysym, v.Length)
+ for i := 0; i < int(v.Length); i++ {
+ v.Keysyms[i] = Keysym(xgb.Get32(buf[b:]))
+ b += 4
+ }
+ b = xgb.Pad(b)
+
+ return v
+}
+
+// Write request to wire for GetKeyboardMapping
+func getKeyboardMappingRequest(c *xgb.Conn, FirstKeycode Keycode, Count byte) []byte {
+ size := 8
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 101 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ buf[b] = byte(FirstKeycode)
+ b += 1
+
+ buf[b] = Count
+ b += 1
+
+ return buf
+}
+
+// Request ChangeKeyboardControl
+// size: xgb.Pad((4 + (4 + xgb.Pad((4 * xgb.PopCount(int(ValueMask)))))))
+type ChangeKeyboardControlCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for ChangeKeyboardControl
+func ChangeKeyboardControl(c *xgb.Conn, ValueMask uint32, ValueList []uint32) ChangeKeyboardControlCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(changeKeyboardControlRequest(c, ValueMask, ValueList), cookie)
+ return ChangeKeyboardControlCookie{cookie}
+}
+
+func ChangeKeyboardControlChecked(c *xgb.Conn, ValueMask uint32, ValueList []uint32) ChangeKeyboardControlCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(changeKeyboardControlRequest(c, ValueMask, ValueList), cookie)
+ return ChangeKeyboardControlCookie{cookie}
+}
+
+func (cook ChangeKeyboardControlCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for ChangeKeyboardControl
+func changeKeyboardControlRequest(c *xgb.Conn, ValueMask uint32, ValueList []uint32) []byte {
+ size := xgb.Pad((4 + (4 + xgb.Pad((4 * xgb.PopCount(int(ValueMask)))))))
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 102 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], ValueMask)
+ b += 4
+ for i := 0; i < xgb.PopCount(int(ValueMask)); i++ {
+ xgb.Put32(buf[b:], ValueList[i])
+ b += 4
+ }
+ b = xgb.Pad(b)
+
+ return buf
+}
+
+// Request GetKeyboardControl
+// size: 4
+type GetKeyboardControlCookie struct {
+ *xgb.Cookie
+}
+
+func GetKeyboardControl(c *xgb.Conn) GetKeyboardControlCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(getKeyboardControlRequest(c), cookie)
+ return GetKeyboardControlCookie{cookie}
+}
+
+func GetKeyboardControlUnchecked(c *xgb.Conn) GetKeyboardControlCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(getKeyboardControlRequest(c), cookie)
+ return GetKeyboardControlCookie{cookie}
+}
+
+// Request reply for GetKeyboardControl
+// size: 52
+type GetKeyboardControlReply struct {
+ Sequence uint16
+ Length uint32
+ GlobalAutoRepeat byte
+ LedMask uint32
+ KeyClickPercent byte
+ BellPercent byte
+ BellPitch uint16
+ BellDuration uint16
+ // padding: 2 bytes
+ AutoRepeats []byte // size: 32
+}
+
+// Waits and reads reply data from request GetKeyboardControl
+func (cook GetKeyboardControlCookie) Reply() (*GetKeyboardControlReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return getKeyboardControlReply(buf), nil
+}
+
+// Read reply into structure from buffer for GetKeyboardControl
+func getKeyboardControlReply(buf []byte) *GetKeyboardControlReply {
+ v := new(GetKeyboardControlReply)
+ b := 1 // skip reply determinant
+
+ v.GlobalAutoRepeat = buf[b]
+ b += 1
+
+ v.Sequence = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Length = xgb.Get32(buf[b:]) // 4-byte units
+ b += 4
+
+ v.LedMask = xgb.Get32(buf[b:])
+ b += 4
+
+ v.KeyClickPercent = buf[b]
+ b += 1
+
+ v.BellPercent = buf[b]
+ b += 1
+
+ v.BellPitch = xgb.Get16(buf[b:])
+ b += 2
+
+ v.BellDuration = xgb.Get16(buf[b:])
+ b += 2
+
+ b += 2 // padding
+
+ v.AutoRepeats = make([]byte, 32)
+ copy(v.AutoRepeats[:32], buf[b:])
+ b += xgb.Pad(int(32))
+
+ return v
+}
+
+// Write request to wire for GetKeyboardControl
+func getKeyboardControlRequest(c *xgb.Conn) []byte {
+ size := 4
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 103 // request opcode
+ b += 1
+
+ b += 1 // padding
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ return buf
+}
+
+// Request Bell
+// size: 4
+type BellCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for Bell
+func Bell(c *xgb.Conn, Percent int8) BellCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(bellRequest(c, Percent), cookie)
+ return BellCookie{cookie}
+}
+
+func BellChecked(c *xgb.Conn, Percent int8) BellCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(bellRequest(c, Percent), cookie)
+ return BellCookie{cookie}
+}
+
+func (cook BellCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for Bell
+func bellRequest(c *xgb.Conn, Percent int8) []byte {
+ size := 4
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 104 // request opcode
+ b += 1
+
+ buf[b] = byte(Percent)
+ b += 1
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ return buf
+}
+
+// Request ChangePointerControl
+// size: 12
+type ChangePointerControlCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for ChangePointerControl
+func ChangePointerControl(c *xgb.Conn, AccelerationNumerator int16, AccelerationDenominator int16, Threshold int16, DoAcceleration bool, DoThreshold bool) ChangePointerControlCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(changePointerControlRequest(c, AccelerationNumerator, AccelerationDenominator, Threshold, DoAcceleration, DoThreshold), cookie)
+ return ChangePointerControlCookie{cookie}
+}
+
+func ChangePointerControlChecked(c *xgb.Conn, AccelerationNumerator int16, AccelerationDenominator int16, Threshold int16, DoAcceleration bool, DoThreshold bool) ChangePointerControlCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(changePointerControlRequest(c, AccelerationNumerator, AccelerationDenominator, Threshold, DoAcceleration, DoThreshold), cookie)
+ return ChangePointerControlCookie{cookie}
+}
+
+func (cook ChangePointerControlCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for ChangePointerControl
+func changePointerControlRequest(c *xgb.Conn, AccelerationNumerator int16, AccelerationDenominator int16, Threshold int16, DoAcceleration bool, DoThreshold bool) []byte {
+ size := 12
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 105 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(AccelerationNumerator))
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(AccelerationDenominator))
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(Threshold))
+ b += 2
+
+ if DoAcceleration {
+ buf[b] = 1
+ } else {
+ buf[b] = 0
+ }
+ b += 1
+
+ if DoThreshold {
+ buf[b] = 1
+ } else {
+ buf[b] = 0
+ }
+ b += 1
+
+ return buf
+}
+
+// Request GetPointerControl
+// size: 4
+type GetPointerControlCookie struct {
+ *xgb.Cookie
+}
+
+func GetPointerControl(c *xgb.Conn) GetPointerControlCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(getPointerControlRequest(c), cookie)
+ return GetPointerControlCookie{cookie}
+}
+
+func GetPointerControlUnchecked(c *xgb.Conn) GetPointerControlCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(getPointerControlRequest(c), cookie)
+ return GetPointerControlCookie{cookie}
+}
+
+// Request reply for GetPointerControl
+// size: 32
+type GetPointerControlReply struct {
+ Sequence uint16
+ Length uint32
+ // padding: 1 bytes
+ AccelerationNumerator uint16
+ AccelerationDenominator uint16
+ Threshold uint16
+ // padding: 18 bytes
+}
+
+// Waits and reads reply data from request GetPointerControl
+func (cook GetPointerControlCookie) Reply() (*GetPointerControlReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return getPointerControlReply(buf), nil
+}
+
+// Read reply into structure from buffer for GetPointerControl
+func getPointerControlReply(buf []byte) *GetPointerControlReply {
+ v := new(GetPointerControlReply)
+ 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.AccelerationNumerator = xgb.Get16(buf[b:])
+ b += 2
+
+ v.AccelerationDenominator = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Threshold = xgb.Get16(buf[b:])
+ b += 2
+
+ b += 18 // padding
+
+ return v
+}
+
+// Write request to wire for GetPointerControl
+func getPointerControlRequest(c *xgb.Conn) []byte {
+ size := 4
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 106 // request opcode
+ b += 1
+
+ b += 1 // padding
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ return buf
+}
+
+// Request SetScreenSaver
+// size: 12
+type SetScreenSaverCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for SetScreenSaver
+func SetScreenSaver(c *xgb.Conn, Timeout int16, Interval int16, PreferBlanking byte, AllowExposures byte) SetScreenSaverCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(setScreenSaverRequest(c, Timeout, Interval, PreferBlanking, AllowExposures), cookie)
+ return SetScreenSaverCookie{cookie}
+}
+
+func SetScreenSaverChecked(c *xgb.Conn, Timeout int16, Interval int16, PreferBlanking byte, AllowExposures byte) SetScreenSaverCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(setScreenSaverRequest(c, Timeout, Interval, PreferBlanking, AllowExposures), cookie)
+ return SetScreenSaverCookie{cookie}
+}
+
+func (cook SetScreenSaverCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for SetScreenSaver
+func setScreenSaverRequest(c *xgb.Conn, Timeout int16, Interval int16, PreferBlanking byte, AllowExposures byte) []byte {
+ size := 12
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 107 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(Timeout))
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(Interval))
+ b += 2
+
+ buf[b] = PreferBlanking
+ b += 1
+
+ buf[b] = AllowExposures
+ b += 1
+
+ return buf
+}
+
+// Request GetScreenSaver
+// size: 4
+type GetScreenSaverCookie struct {
+ *xgb.Cookie
+}
+
+func GetScreenSaver(c *xgb.Conn) GetScreenSaverCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(getScreenSaverRequest(c), cookie)
+ return GetScreenSaverCookie{cookie}
+}
+
+func GetScreenSaverUnchecked(c *xgb.Conn) GetScreenSaverCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(getScreenSaverRequest(c), cookie)
+ return GetScreenSaverCookie{cookie}
+}
+
+// Request reply for GetScreenSaver
+// size: 32
+type GetScreenSaverReply struct {
+ Sequence uint16
+ Length uint32
+ // padding: 1 bytes
+ Timeout uint16
+ Interval uint16
+ PreferBlanking byte
+ AllowExposures byte
+ // padding: 18 bytes
+}
+
+// Waits and reads reply data from request GetScreenSaver
+func (cook GetScreenSaverCookie) Reply() (*GetScreenSaverReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return getScreenSaverReply(buf), nil
+}
+
+// Read reply into structure from buffer for GetScreenSaver
+func getScreenSaverReply(buf []byte) *GetScreenSaverReply {
+ v := new(GetScreenSaverReply)
+ 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.Timeout = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Interval = xgb.Get16(buf[b:])
+ b += 2
+
+ v.PreferBlanking = buf[b]
+ b += 1
+
+ v.AllowExposures = buf[b]
+ b += 1
+
+ b += 18 // padding
+
+ return v
+}
+
+// Write request to wire for GetScreenSaver
+func getScreenSaverRequest(c *xgb.Conn) []byte {
+ size := 4
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 108 // request opcode
+ b += 1
+
+ b += 1 // padding
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ return buf
+}
+
+// Request ChangeHosts
+// size: xgb.Pad((8 + xgb.Pad((int(AddressLen) * 1))))
+type ChangeHostsCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for ChangeHosts
+func ChangeHosts(c *xgb.Conn, Mode byte, Family byte, AddressLen uint16, Address []byte) ChangeHostsCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(changeHostsRequest(c, Mode, Family, AddressLen, Address), cookie)
+ return ChangeHostsCookie{cookie}
+}
+
+func ChangeHostsChecked(c *xgb.Conn, Mode byte, Family byte, AddressLen uint16, Address []byte) ChangeHostsCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(changeHostsRequest(c, Mode, Family, AddressLen, Address), cookie)
+ return ChangeHostsCookie{cookie}
+}
+
+func (cook ChangeHostsCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for ChangeHosts
+func changeHostsRequest(c *xgb.Conn, Mode byte, Family byte, AddressLen uint16, Address []byte) []byte {
+ size := xgb.Pad((8 + xgb.Pad((int(AddressLen) * 1))))
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 109 // request opcode
+ b += 1
+
+ buf[b] = Mode
+ b += 1
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ buf[b] = Family
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], AddressLen)
+ b += 2
+
+ copy(buf[b:], Address[:AddressLen])
+ b += xgb.Pad(int(AddressLen))
+
+ return buf
+}
+
+// Request ListHosts
+// size: 4
+type ListHostsCookie struct {
+ *xgb.Cookie
+}
+
+func ListHosts(c *xgb.Conn) ListHostsCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(listHostsRequest(c), cookie)
+ return ListHostsCookie{cookie}
+}
+
+func ListHostsUnchecked(c *xgb.Conn) ListHostsCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(listHostsRequest(c), cookie)
+ return ListHostsCookie{cookie}
+}
+
+// Request reply for ListHosts
+// size: (32 + HostListSize(Hosts))
+type ListHostsReply struct {
+ Sequence uint16
+ Length uint32
+ Mode byte
+ HostsLen uint16
+ // padding: 22 bytes
+ Hosts []Host // size: HostListSize(Hosts)
+}
+
+// Waits and reads reply data from request ListHosts
+func (cook ListHostsCookie) Reply() (*ListHostsReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return listHostsReply(buf), nil
+}
+
+// Read reply into structure from buffer for ListHosts
+func listHostsReply(buf []byte) *ListHostsReply {
+ v := new(ListHostsReply)
+ b := 1 // skip reply determinant
+
+ v.Mode = buf[b]
+ b += 1
+
+ v.Sequence = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Length = xgb.Get32(buf[b:]) // 4-byte units
+ b += 4
+
+ v.HostsLen = xgb.Get16(buf[b:])
+ b += 2
+
+ b += 22 // padding
+
+ v.Hosts = make([]Host, v.HostsLen)
+ b += HostReadList(buf[b:], v.Hosts)
+
+ return v
+}
+
+// Write request to wire for ListHosts
+func listHostsRequest(c *xgb.Conn) []byte {
+ size := 4
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 110 // request opcode
+ b += 1
+
+ b += 1 // padding
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ return buf
+}
+
+// Request SetAccessControl
+// size: 4
+type SetAccessControlCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for SetAccessControl
+func SetAccessControl(c *xgb.Conn, Mode byte) SetAccessControlCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(setAccessControlRequest(c, Mode), cookie)
+ return SetAccessControlCookie{cookie}
+}
+
+func SetAccessControlChecked(c *xgb.Conn, Mode byte) SetAccessControlCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(setAccessControlRequest(c, Mode), cookie)
+ return SetAccessControlCookie{cookie}
+}
+
+func (cook SetAccessControlCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for SetAccessControl
+func setAccessControlRequest(c *xgb.Conn, Mode byte) []byte {
+ size := 4
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 111 // request opcode
+ b += 1
+
+ buf[b] = Mode
+ b += 1
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ return buf
+}
+
+// Request SetCloseDownMode
+// size: 4
+type SetCloseDownModeCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for SetCloseDownMode
+func SetCloseDownMode(c *xgb.Conn, Mode byte) SetCloseDownModeCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(setCloseDownModeRequest(c, Mode), cookie)
+ return SetCloseDownModeCookie{cookie}
+}
+
+func SetCloseDownModeChecked(c *xgb.Conn, Mode byte) SetCloseDownModeCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(setCloseDownModeRequest(c, Mode), cookie)
+ return SetCloseDownModeCookie{cookie}
+}
+
+func (cook SetCloseDownModeCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for SetCloseDownMode
+func setCloseDownModeRequest(c *xgb.Conn, Mode byte) []byte {
+ size := 4
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 112 // request opcode
+ b += 1
+
+ buf[b] = Mode
+ b += 1
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ return buf
+}
+
+// Request KillClient
+// size: 8
+type KillClientCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for KillClient
+func KillClient(c *xgb.Conn, Resource uint32) KillClientCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(killClientRequest(c, Resource), cookie)
+ return KillClientCookie{cookie}
+}
+
+func KillClientChecked(c *xgb.Conn, Resource uint32) KillClientCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(killClientRequest(c, Resource), cookie)
+ return KillClientCookie{cookie}
+}
+
+func (cook KillClientCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for KillClient
+func killClientRequest(c *xgb.Conn, Resource uint32) []byte {
+ size := 8
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 113 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ xgb.Put32(buf[b:], Resource)
+ b += 4
+
+ return buf
+}
+
+// Request RotateProperties
+// size: xgb.Pad((12 + xgb.Pad((int(AtomsLen) * 4))))
+type RotatePropertiesCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for RotateProperties
+func RotateProperties(c *xgb.Conn, Window Window, AtomsLen uint16, Delta int16, Atoms []Atom) RotatePropertiesCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(rotatePropertiesRequest(c, Window, AtomsLen, Delta, Atoms), cookie)
+ return RotatePropertiesCookie{cookie}
+}
+
+func RotatePropertiesChecked(c *xgb.Conn, Window Window, AtomsLen uint16, Delta int16, Atoms []Atom) RotatePropertiesCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(rotatePropertiesRequest(c, Window, AtomsLen, Delta, Atoms), cookie)
+ return RotatePropertiesCookie{cookie}
+}
+
+func (cook RotatePropertiesCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for RotateProperties
+func rotatePropertiesRequest(c *xgb.Conn, Window Window, AtomsLen uint16, Delta int16, Atoms []Atom) []byte {
+ size := xgb.Pad((12 + xgb.Pad((int(AtomsLen) * 4))))
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 114 // request opcode
+ b += 1
+
+ b += 1 // padding
+
+ 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:], AtomsLen)
+ b += 2
+
+ xgb.Put16(buf[b:], uint16(Delta))
+ b += 2
+
+ for i := 0; i < int(AtomsLen); i++ {
+ xgb.Put32(buf[b:], uint32(Atoms[i]))
+ b += 4
+ }
+ b = xgb.Pad(b)
+
+ return buf
+}
+
+// Request ForceScreenSaver
+// size: 4
+type ForceScreenSaverCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for ForceScreenSaver
+func ForceScreenSaver(c *xgb.Conn, Mode byte) ForceScreenSaverCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(forceScreenSaverRequest(c, Mode), cookie)
+ return ForceScreenSaverCookie{cookie}
+}
+
+func ForceScreenSaverChecked(c *xgb.Conn, Mode byte) ForceScreenSaverCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(forceScreenSaverRequest(c, Mode), cookie)
+ return ForceScreenSaverCookie{cookie}
+}
+
+func (cook ForceScreenSaverCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for ForceScreenSaver
+func forceScreenSaverRequest(c *xgb.Conn, Mode byte) []byte {
+ size := 4
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 115 // request opcode
+ b += 1
+
+ buf[b] = Mode
+ b += 1
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ return buf
+}
+
+// Request SetPointerMapping
+// size: xgb.Pad((4 + xgb.Pad((int(MapLen) * 1))))
+type SetPointerMappingCookie struct {
+ *xgb.Cookie
+}
+
+func SetPointerMapping(c *xgb.Conn, MapLen byte, Map []byte) SetPointerMappingCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(setPointerMappingRequest(c, MapLen, Map), cookie)
+ return SetPointerMappingCookie{cookie}
+}
+
+func SetPointerMappingUnchecked(c *xgb.Conn, MapLen byte, Map []byte) SetPointerMappingCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(setPointerMappingRequest(c, MapLen, Map), cookie)
+ return SetPointerMappingCookie{cookie}
+}
+
+// Request reply for SetPointerMapping
+// size: 8
+type SetPointerMappingReply struct {
+ Sequence uint16
+ Length uint32
+ Status byte
+}
+
+// Waits and reads reply data from request SetPointerMapping
+func (cook SetPointerMappingCookie) Reply() (*SetPointerMappingReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return setPointerMappingReply(buf), nil
+}
+
+// Read reply into structure from buffer for SetPointerMapping
+func setPointerMappingReply(buf []byte) *SetPointerMappingReply {
+ v := new(SetPointerMappingReply)
+ 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
+
+ return v
+}
+
+// Write request to wire for SetPointerMapping
+func setPointerMappingRequest(c *xgb.Conn, MapLen byte, Map []byte) []byte {
+ size := xgb.Pad((4 + xgb.Pad((int(MapLen) * 1))))
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 116 // request opcode
+ b += 1
+
+ buf[b] = MapLen
+ b += 1
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ copy(buf[b:], Map[:MapLen])
+ b += xgb.Pad(int(MapLen))
+
+ return buf
+}
+
+// Request GetPointerMapping
+// size: 4
+type GetPointerMappingCookie struct {
+ *xgb.Cookie
+}
+
+func GetPointerMapping(c *xgb.Conn) GetPointerMappingCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(getPointerMappingRequest(c), cookie)
+ return GetPointerMappingCookie{cookie}
+}
+
+func GetPointerMappingUnchecked(c *xgb.Conn) GetPointerMappingCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(getPointerMappingRequest(c), cookie)
+ return GetPointerMappingCookie{cookie}
+}
+
+// Request reply for GetPointerMapping
+// size: (32 + xgb.Pad((int(MapLen) * 1)))
+type GetPointerMappingReply struct {
+ Sequence uint16
+ Length uint32
+ MapLen byte
+ // padding: 24 bytes
+ Map []byte // size: xgb.Pad((int(MapLen) * 1))
+}
+
+// Waits and reads reply data from request GetPointerMapping
+func (cook GetPointerMappingCookie) Reply() (*GetPointerMappingReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return getPointerMappingReply(buf), nil
+}
+
+// Read reply into structure from buffer for GetPointerMapping
+func getPointerMappingReply(buf []byte) *GetPointerMappingReply {
+ v := new(GetPointerMappingReply)
+ b := 1 // skip reply determinant
+
+ v.MapLen = buf[b]
+ b += 1
+
+ v.Sequence = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Length = xgb.Get32(buf[b:]) // 4-byte units
+ b += 4
+
+ b += 24 // padding
+
+ v.Map = make([]byte, v.MapLen)
+ copy(v.Map[:v.MapLen], buf[b:])
+ b += xgb.Pad(int(v.MapLen))
+
+ return v
+}
+
+// Write request to wire for GetPointerMapping
+func getPointerMappingRequest(c *xgb.Conn) []byte {
+ size := 4
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 117 // request opcode
+ b += 1
+
+ b += 1 // padding
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ return buf
+}
+
+// Request SetModifierMapping
+// size: xgb.Pad((4 + xgb.Pad(((int(KeycodesPerModifier) * 8) * 1))))
+type SetModifierMappingCookie struct {
+ *xgb.Cookie
+}
+
+func SetModifierMapping(c *xgb.Conn, KeycodesPerModifier byte, Keycodes []Keycode) SetModifierMappingCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(setModifierMappingRequest(c, KeycodesPerModifier, Keycodes), cookie)
+ return SetModifierMappingCookie{cookie}
+}
+
+func SetModifierMappingUnchecked(c *xgb.Conn, KeycodesPerModifier byte, Keycodes []Keycode) SetModifierMappingCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(setModifierMappingRequest(c, KeycodesPerModifier, Keycodes), cookie)
+ return SetModifierMappingCookie{cookie}
+}
+
+// Request reply for SetModifierMapping
+// size: 8
+type SetModifierMappingReply struct {
+ Sequence uint16
+ Length uint32
+ Status byte
+}
+
+// Waits and reads reply data from request SetModifierMapping
+func (cook SetModifierMappingCookie) Reply() (*SetModifierMappingReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return setModifierMappingReply(buf), nil
+}
+
+// Read reply into structure from buffer for SetModifierMapping
+func setModifierMappingReply(buf []byte) *SetModifierMappingReply {
+ v := new(SetModifierMappingReply)
+ 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
+
+ return v
+}
+
+// Write request to wire for SetModifierMapping
+func setModifierMappingRequest(c *xgb.Conn, KeycodesPerModifier byte, Keycodes []Keycode) []byte {
+ size := xgb.Pad((4 + xgb.Pad(((int(KeycodesPerModifier) * 8) * 1))))
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 118 // request opcode
+ b += 1
+
+ buf[b] = KeycodesPerModifier
+ b += 1
+
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ for i := 0; i < int((int(KeycodesPerModifier) * 8)); i++ {
+ buf[b] = byte(Keycodes[i])
+ b += 1
+ }
+ b = xgb.Pad(b)
+
+ return buf
+}
+
+// Request GetModifierMapping
+// size: 4
+type GetModifierMappingCookie struct {
+ *xgb.Cookie
+}
+
+func GetModifierMapping(c *xgb.Conn) GetModifierMappingCookie {
+ cookie := c.NewCookie(true, true)
+ c.NewRequest(getModifierMappingRequest(c), cookie)
+ return GetModifierMappingCookie{cookie}
+}
+
+func GetModifierMappingUnchecked(c *xgb.Conn) GetModifierMappingCookie {
+ cookie := c.NewCookie(false, true)
+ c.NewRequest(getModifierMappingRequest(c), cookie)
+ return GetModifierMappingCookie{cookie}
+}
+
+// Request reply for GetModifierMapping
+// size: (32 + xgb.Pad(((int(KeycodesPerModifier) * 8) * 1)))
+type GetModifierMappingReply struct {
+ Sequence uint16
+ Length uint32
+ KeycodesPerModifier byte
+ // padding: 24 bytes
+ Keycodes []Keycode // size: xgb.Pad(((int(KeycodesPerModifier) * 8) * 1))
+}
+
+// Waits and reads reply data from request GetModifierMapping
+func (cook GetModifierMappingCookie) Reply() (*GetModifierMappingReply, error) {
+ buf, err := cook.Cookie.Reply()
+ if err != nil {
+ return nil, err
+ }
+ if buf == nil {
+ return nil, nil
+ }
+ return getModifierMappingReply(buf), nil
+}
+
+// Read reply into structure from buffer for GetModifierMapping
+func getModifierMappingReply(buf []byte) *GetModifierMappingReply {
+ v := new(GetModifierMappingReply)
+ b := 1 // skip reply determinant
+
+ v.KeycodesPerModifier = buf[b]
+ b += 1
+
+ v.Sequence = xgb.Get16(buf[b:])
+ b += 2
+
+ v.Length = xgb.Get32(buf[b:]) // 4-byte units
+ b += 4
+
+ b += 24 // padding
+
+ v.Keycodes = make([]Keycode, (int(v.KeycodesPerModifier) * 8))
+ for i := 0; i < int((int(v.KeycodesPerModifier) * 8)); i++ {
+ v.Keycodes[i] = Keycode(buf[b])
+ b += 1
+ }
+ b = xgb.Pad(b)
+
+ return v
+}
+
+// Write request to wire for GetModifierMapping
+func getModifierMappingRequest(c *xgb.Conn) []byte {
+ size := 4
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 119 // request opcode
+ b += 1
+
+ b += 1 // padding
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ return buf
+}
+
+// Request NoOperation
+// size: 4
+type NoOperationCookie struct {
+ *xgb.Cookie
+}
+
+// Write request to wire for NoOperation
+func NoOperation(c *xgb.Conn) NoOperationCookie {
+ cookie := c.NewCookie(false, false)
+ c.NewRequest(noOperationRequest(c), cookie)
+ return NoOperationCookie{cookie}
+}
+
+func NoOperationChecked(c *xgb.Conn) NoOperationCookie {
+ cookie := c.NewCookie(true, false)
+ c.NewRequest(noOperationRequest(c), cookie)
+ return NoOperationCookie{cookie}
+}
+
+func (cook NoOperationCookie) Check() error {
+ return cook.Cookie.Check()
+}
+
+// Write request to wire for NoOperation
+func noOperationRequest(c *xgb.Conn) []byte {
+ size := 4
+ b := 0
+ buf := make([]byte, size)
+
+ buf[b] = 127 // request opcode
+ b += 1
+
+ b += 1 // padding
+ xgb.Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units
+ b += 2
+
+ return buf
+}
diff --git a/nexgb/xproto/xproto_test.go b/nexgb/xproto/xproto_test.go
new file mode 100644
index 0000000..f061198
--- /dev/null
+++ b/nexgb/xproto/xproto_test.go
@@ -0,0 +1,365 @@
+package xproto
+
+/*
+ Tests for XGB.
+
+ These tests only test the core X protocol at the moment. It isn't even
+ close to complete coverage (and probably never will be), but it does test
+ a number of different corners: requests with no replies, requests without
+ replies, checked (i.e., synchronous) errors, unchecked (i.e., asynchronous)
+ errors, and sequence number wrapping.
+
+ There are also a couple of benchmarks that show the difference between
+ correctly issuing lots of requests and gathering replies and
+ incorrectly doing the same. (This particular difference is one of the
+ claimed advantages of the XCB, and therefore XGB, family.
+*/
+
+import (
+ "fmt"
+ "log"
+ "math/rand"
+ "testing"
+ "time"
+
+ "github.com/BurntSushi/xgb"
+)
+
+// The X connection used throughout testing.
+var X *xgb.Conn
+
+// init initializes the X connection, seeds the RNG and starts waiting
+// for events.
+func init() {
+ var err error
+
+ X, err = xgb.NewConn()
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ rand.Seed(time.Now().UnixNano())
+
+ go grabEvents()
+}
+
+/******************************************************************************/
+// Tests
+/******************************************************************************/
+
+// TestSynchronousError purposefully causes a BadWindow error in a
+// MapWindow request, and checks it synchronously.
+func TestSynchronousError(t *testing.T) {
+ err := MapWindowChecked(X, 0).Check() // resource 0 is always invalid
+ if err == nil {
+ t.Fatalf("MapWindow: A MapWindow request that should return an " +
+ "error has returned a nil error.")
+ }
+ verifyMapWindowError(t, err)
+}
+
+// TestAsynchronousError does the same thing as TestSynchronousError, but
+// grabs the error asynchronously instead.
+func TestAsynchronousError(t *testing.T) {
+ MapWindow(X, 0) // resource id 0 is always invalid
+
+ evOrErr := waitForEvent(t, 5)
+ if evOrErr.ev != nil {
+ t.Fatalf("After issuing an erroneous MapWindow request, we have "+
+ "received an event rather than an error: %s", evOrErr.ev)
+ }
+ verifyMapWindowError(t, evOrErr.err)
+}
+
+// TestCookieBuffer issues (2^16) + n requets *without* replies to guarantee
+// that the sequence number wraps and that the cookie buffer will have to
+// flush itself (since there are no replies coming in to flush it).
+// And just like TestSequenceWrap, we issue another request with a reply
+// at the end to make sure XGB is still working properly.
+func TestCookieBuffer(t *testing.T) {
+ n := (1 << 16) + 10
+ for i := 0; i < n; i++ {
+ NoOperation(X)
+ }
+ TestProperty(t)
+}
+
+// TestSequenceWrap issues (2^16) + n requests w/ replies to guarantee that the
+// sequence number (which is a 16 bit integer) will wrap. It then issues one
+// final request to ensure things still work properly.
+func TestSequenceWrap(t *testing.T) {
+ n := (1 << 16) + 10
+ for i := 0; i < n; i++ {
+ _, err := InternAtom(X, false, 5, "RANDO").Reply()
+ if err != nil {
+ t.Fatalf("InternAtom: %s", err)
+ }
+ }
+ TestProperty(t)
+}
+
+// TestProperty tests whether a random value can be set and read.
+func TestProperty(t *testing.T) {
+ propName := randString(20) // whatevs
+ writeVal := randString(20)
+ readVal, err := changeAndGetProp(propName, writeVal)
+ if err != nil {
+ t.Error(err)
+ }
+
+ if readVal != writeVal {
+ t.Errorf("The value written, '%s', is not the same as the "+
+ "value read '%s'.", writeVal, readVal)
+ }
+}
+
+// TestWindowEvents creates a window, maps it, listens for configure notify
+// events, issues a configure request, and checks for the appropriate
+// configure notify event.
+// This probably violates the notion of "test one thing and test it well,"
+// but testing X stuff is unique since it involves so much state.
+// Each request is checked to make sure there are no errors returned. If there
+// is an error, the test is failed.
+// You may see a window appear quickly and then disappear. Do not be alarmed :P
+// It's possible that this test will yield a false negative because we cannot
+// control our environment. That is, the window manager could override the
+// placement set. However, we set override redirect on the window, so the
+// window manager *shouldn't* touch our window if it is well-behaved.
+func TestWindowEvents(t *testing.T) {
+ // The geometry to set the window.
+ gx, gy, gw, gh := 200, 400, 1000, 300
+
+ wid, err := NewWindowId(X)
+ if err != nil {
+ t.Fatalf("NewId: %s", err)
+ }
+
+ screen := Setup(X).DefaultScreen(X) // alias
+ err = CreateWindowChecked(X, screen.RootDepth, wid, screen.Root,
+ 0, 0, 500, 500, 0,
+ WindowClassInputOutput, screen.RootVisual,
+ CwBackPixel|CwOverrideRedirect, []uint32{0xffffffff, 1}).Check()
+ if err != nil {
+ t.Fatalf("CreateWindow: %s", err)
+ }
+
+ err = MapWindowChecked(X, wid).Check()
+ if err != nil {
+ t.Fatalf("MapWindow: %s", err)
+ }
+
+ // We don't listen in the CreateWindow request so that we don't get
+ // a MapNotify event.
+ err = ChangeWindowAttributesChecked(X, wid,
+ CwEventMask, []uint32{EventMaskStructureNotify}).Check()
+ if err != nil {
+ t.Fatalf("ChangeWindowAttributes: %s", err)
+ }
+
+ err = ConfigureWindowChecked(X, wid,
+ ConfigWindowX|ConfigWindowY|
+ ConfigWindowWidth|ConfigWindowHeight,
+ []uint32{uint32(gx), uint32(gy), uint32(gw), uint32(gh)}).Check()
+ if err != nil {
+ t.Fatalf("ConfigureWindow: %s", err)
+ }
+
+ TestProperty(t)
+
+ evOrErr := waitForEvent(t, 5)
+ switch event := evOrErr.ev.(type) {
+ case ConfigureNotifyEvent:
+ if event.X != int16(gx) {
+ t.Fatalf("x was set to %d but ConfigureNotify reports %d",
+ gx, event.X)
+ }
+ if event.Y != int16(gy) {
+ t.Fatalf("y was set to %d but ConfigureNotify reports %d",
+ gy, event.Y)
+ }
+ if event.Width != uint16(gw) {
+ t.Fatalf("width was set to %d but ConfigureNotify reports %d",
+ gw, event.Width)
+ }
+ if event.Height != uint16(gh) {
+ t.Fatalf("height was set to %d but ConfigureNotify reports %d",
+ gh, event.Height)
+ }
+ default:
+ t.Fatalf("Expected a ConfigureNotifyEvent but got %T instead.", event)
+ }
+
+ // Okay, clean up!
+ err = ChangeWindowAttributesChecked(X, wid,
+ CwEventMask, []uint32{0}).Check()
+ if err != nil {
+ t.Fatalf("ChangeWindowAttributes: %s", err)
+ }
+
+ err = DestroyWindowChecked(X, wid).Check()
+ if err != nil {
+ t.Fatalf("DestroyWindow: %s", err)
+ }
+}
+
+/******************************************************************************/
+// Benchmarks
+/******************************************************************************/
+
+// BenchmarkInternAtomsGood shows how many requests with replies
+// *should* be sent and gathered from the server. Namely, send as many
+// requests as you can at once, then go back and gather up all the replies.
+// More importantly, this approach can exploit parallelism when
+// GOMAXPROCS > 1.
+// Run with `go test -run 'nomatch' -bench '.*' -cpu 1,2,6` if you have
+// multiple cores to see the improvement that parallelism brings.
+func BenchmarkInternAtomsGood(b *testing.B) {
+ b.StopTimer()
+ names := seqNames(b.N)
+
+ b.StartTimer()
+ cookies := make([]InternAtomCookie, b.N)
+ for i := 0; i < b.N; i++ {
+ cookies[i] = InternAtom(X, false, uint16(len(names[i])), names[i])
+ }
+ for _, cookie := range cookies {
+ cookie.Reply()
+ }
+}
+
+// BenchmarkInternAtomsBad shows how *not* to issue a lot of requests with
+// replies. Namely, each subsequent request isn't issued *until* the last
+// reply is made. This implies a round trip to the X server for every
+// iteration.
+func BenchmarkInternAtomsPoor(b *testing.B) {
+ b.StopTimer()
+ names := seqNames(b.N)
+
+ b.StartTimer()
+ for i := 0; i < b.N; i++ {
+ InternAtom(X, false, uint16(len(names[i])), names[i]).Reply()
+ }
+}
+
+/******************************************************************************/
+// Helper functions
+/******************************************************************************/
+
+// changeAndGetProp sets property 'prop' with value 'val'.
+// It then gets the value of that property and returns it.
+// (It's used to check that the 'val' going in is the same 'val' going out.)
+// It tests both requests with and without replies (GetProperty and
+// ChangeProperty respectively.)
+func changeAndGetProp(prop, val string) (string, error) {
+ setup := Setup(X)
+ root := setup.DefaultScreen(X).Root
+
+ propAtom, err := InternAtom(X, false, uint16(len(prop)), prop).Reply()
+ if err != nil {
+ return "", fmt.Errorf("InternAtom: %s", err)
+ }
+
+ typName := "UTF8_STRING"
+ typAtom, err := InternAtom(X, false, uint16(len(typName)), typName).Reply()
+ if err != nil {
+ return "", fmt.Errorf("InternAtom: %s", err)
+ }
+
+ err = ChangePropertyChecked(X, PropModeReplace, root, propAtom.Atom,
+ typAtom.Atom, 8, uint32(len(val)), []byte(val)).Check()
+ if err != nil {
+ return "", fmt.Errorf("ChangeProperty: %s", err)
+ }
+
+ reply, err := GetProperty(X, false, root, propAtom.Atom,
+ GetPropertyTypeAny, 0, (1<<32)-1).Reply()
+ if err != nil {
+ return "", fmt.Errorf("GetProperty: %s", err)
+ }
+ if reply.Format != 8 {
+ return "", fmt.Errorf("Property reply format is %d but it should be 8.",
+ reply.Format)
+ }
+
+ return string(reply.Value), nil
+}
+
+// verifyMapWindowError takes an error that is returned with an invalid
+// MapWindow request with a window Id of 0 and makes sure the error is the
+// right type and contains the correct values.
+func verifyMapWindowError(t *testing.T, err error) {
+ switch e := err.(type) {
+ case WindowError:
+ if e.BadValue != 0 {
+ t.Fatalf("WindowError should report a bad value of 0 but "+
+ "it reports %d instead.", e.BadValue)
+ }
+ if e.MajorOpcode != 8 {
+ t.Fatalf("WindowError should report a major opcode of 8 "+
+ "(which is a MapWindow request), but it reports %d instead.",
+ e.MajorOpcode)
+ }
+ default:
+ t.Fatalf("Expected a WindowError but got %T instead.", e)
+ }
+}
+
+// randString generates a random string of length n.
+func randString(n int) string {
+ byts := make([]byte, n)
+ for i := 0; i < n; i++ {
+ rando := rand.Intn(53)
+ switch {
+ case rando <= 25:
+ byts[i] = byte(65 + rando)
+ case rando <= 51:
+ byts[i] = byte(97 + rando - 26)
+ default:
+ byts[i] = ' '
+ }
+ }
+ return string(byts)
+}
+
+// seqNames creates a slice of NAME0, NAME1, ..., NAMEN.
+func seqNames(n int) []string {
+ names := make([]string, n)
+ for i := range names {
+ names[i] = fmt.Sprintf("NAME%d", i)
+ }
+ return names
+}
+
+// evErr represents a value that is either an event or an error.
+type evErr struct {
+ ev xgb.Event
+ err xgb.Error
+}
+
+// channel used to pass evErrs.
+var evOrErrChan = make(chan evErr, 0)
+
+// grabEvents is a goroutine that reads events off the wire.
+// We used this instead of WaitForEvent directly in our tests so that
+// we can timeout and fail a test.
+func grabEvents() {
+ for {
+ ev, err := X.WaitForEvent()
+ evOrErrChan <- evErr{ev, err}
+ }
+}
+
+// waitForEvent asks the evOrErrChan channel for an event.
+// If it doesn't get an event in 'n' seconds, the current test is failed.
+func waitForEvent(t *testing.T, n int) evErr {
+ var evOrErr evErr
+
+ select {
+ case evOrErr = <-evOrErrChan:
+ case <-time.After(time.Second * 5):
+ t.Fatalf("After waiting 5 seconds for an event or an error, " +
+ "we have timed out.")
+ }
+
+ return evOrErr
+}