From 135cee57610cccd10009b264cce7fbcd5af367cb Mon Sep 17 00:00:00 2001 From: "Andrew Gallant (Ocelot)" Date: Sun, 6 May 2012 03:06:48 -0400 Subject: auto-generated Go code ftw. ~65,000 lines. woooheee --- nexgb/auto_shape.go | 871 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 871 insertions(+) create mode 100644 nexgb/auto_shape.go (limited to 'nexgb/auto_shape.go') diff --git a/nexgb/auto_shape.go b/nexgb/auto_shape.go new file mode 100644 index 0000000..b5c5f04 --- /dev/null +++ b/nexgb/auto_shape.go @@ -0,0 +1,871 @@ +package xgb + +/* + This file was generated by shape.xml on May 6 2012 3:00:44am EDT. + This file is automatically generated. Edit at your peril! +*/ + +// Imports are not necessary for XGB because everything is +// in one package. They are still listed here for reference. +// import "xproto" + +// Skipping definition for base type 'Card16' + +// Skipping definition for base type 'Char' + +// Skipping definition for base type 'Card32' + +// Skipping definition for base type 'Double' + +// Skipping definition for base type 'Bool' + +// Skipping definition for base type 'Float' + +// Skipping definition for base type 'Id' + +// Skipping definition for base type 'Card8' + +// Skipping definition for base type 'Int16' + +// Skipping definition for base type 'Int32' + +// Skipping definition for base type 'Void' + +// Skipping definition for base type 'Byte' + +// Skipping definition for base type 'Int8' + +const ( + ShapeSoSet = 0 + ShapeSoUnion = 1 + ShapeSoIntersect = 2 + ShapeSoSubtract = 3 + ShapeSoInvert = 4 +) + +const ( + ShapeSkBounding = 0 + ShapeSkClip = 1 + ShapeSkInput = 2 +) + +type ShapeOp byte + +type ShapeKind byte + +// Event definition ShapeNotify (0) +// Size: 32 + +const ShapeNotify = 0 + +type ShapeNotifyEvent struct { + Sequence uint16 + ShapeKind ShapeKind + AffectedWindow Id + ExtentsX int16 + ExtentsY int16 + ExtentsWidth uint16 + ExtentsHeight uint16 + ServerTime Timestamp + Shaped bool + // padding: 11 bytes +} + +// Event read ShapeNotify +func NewShapeNotifyEvent(buf []byte) Event { + v := ShapeNotifyEvent{} + b := 1 // don't read event number + + v.ShapeKind = ShapeKind(buf[b]) + b += 1 + + v.Sequence = Get16(buf[b:]) + b += 2 + + v.AffectedWindow = Id(Get32(buf[b:])) + b += 4 + + v.ExtentsX = int16(Get16(buf[b:])) + b += 2 + + v.ExtentsY = int16(Get16(buf[b:])) + b += 2 + + v.ExtentsWidth = Get16(buf[b:]) + b += 2 + + v.ExtentsHeight = Get16(buf[b:]) + b += 2 + + v.ServerTime = Timestamp(Get32(buf[b:])) + b += 4 + + if buf[b] == 1 { + v.Shaped = true + } else { + v.Shaped = false + } + b += 1 + + b += 11 // padding + + return v +} + +// Event write ShapeNotify +func (v ShapeNotifyEvent) Bytes() []byte { + buf := make([]byte, 32) + b := 0 + + // write event number + buf[b] = 0 + b += 1 + + buf[b] = byte(v.ShapeKind) + b += 1 + + b += 2 // skip sequence number + + Put32(buf[b:], uint32(v.AffectedWindow)) + b += 4 + + Put16(buf[b:], uint16(v.ExtentsX)) + b += 2 + + Put16(buf[b:], uint16(v.ExtentsY)) + b += 2 + + Put16(buf[b:], v.ExtentsWidth) + b += 2 + + Put16(buf[b:], v.ExtentsHeight) + b += 2 + + Put32(buf[b:], uint32(v.ServerTime)) + b += 4 + + if v.Shaped { + buf[b] = 1 + } else { + buf[b] = 0 + } + b += 1 + + b += 11 // padding + + return buf +} + +func (v ShapeNotifyEvent) ImplementsEvent() {} + +func (v ShapeNotifyEvent) SequenceId() uint16 { + return v.Sequence +} + +func (v ShapeNotifyEvent) String() string { + fieldVals := make([]string, 0, 9) + fieldVals = append(fieldVals, sprintf("Sequence: %d", v.Sequence)) + fieldVals = append(fieldVals, sprintf("ShapeKind: %d", v.ShapeKind)) + fieldVals = append(fieldVals, sprintf("AffectedWindow: %d", v.AffectedWindow)) + fieldVals = append(fieldVals, sprintf("ExtentsX: %d", v.ExtentsX)) + fieldVals = append(fieldVals, sprintf("ExtentsY: %d", v.ExtentsY)) + fieldVals = append(fieldVals, sprintf("ExtentsWidth: %d", v.ExtentsWidth)) + fieldVals = append(fieldVals, sprintf("ExtentsHeight: %d", v.ExtentsHeight)) + fieldVals = append(fieldVals, sprintf("ServerTime: %d", v.ServerTime)) + fieldVals = append(fieldVals, sprintf("Shaped: %t", v.Shaped)) + return "ShapeNotify {" + stringsJoin(fieldVals, ", ") + "}" +} + +func init() { + newEventFuncs[0] = NewShapeNotifyEvent +} + +// Request ShapeQueryVersion +// size: 4 +type ShapeQueryVersionCookie struct { + *cookie +} + +func (c *Conn) ShapeQueryVersion() ShapeQueryVersionCookie { + cookie := c.newCookie(true, true) + c.newRequest(c.shapeQueryVersionRequest(), cookie) + return ShapeQueryVersionCookie{cookie} +} + +func (c *Conn) ShapeQueryVersionUnchecked() ShapeQueryVersionCookie { + cookie := c.newCookie(false, true) + c.newRequest(c.shapeQueryVersionRequest(), cookie) + return ShapeQueryVersionCookie{cookie} +} + +// Request reply for ShapeQueryVersion +// size: 12 +type ShapeQueryVersionReply struct { + Sequence uint16 + Length uint32 + // padding: 1 bytes + MajorVersion uint16 + MinorVersion uint16 +} + +// Waits and reads reply data from request ShapeQueryVersion +func (cook ShapeQueryVersionCookie) Reply() (*ShapeQueryVersionReply, error) { + buf, err := cook.reply() + if err != nil { + return nil, err + } + if buf == nil { + return nil, nil + } + return shapeQueryVersionReply(buf), nil +} + +// Read reply into structure from buffer for ShapeQueryVersion +func shapeQueryVersionReply(buf []byte) *ShapeQueryVersionReply { + v := new(ShapeQueryVersionReply) + b := 1 // skip reply determinant + + b += 1 // padding + + v.Sequence = Get16(buf[b:]) + b += 2 + + v.Length = Get32(buf[b:]) // 4-byte units + b += 4 + + v.MajorVersion = Get16(buf[b:]) + b += 2 + + v.MinorVersion = Get16(buf[b:]) + b += 2 + + return v +} + +func (cook ShapeQueryVersionCookie) Check() error { + return cook.check() +} + +// Write request to wire for ShapeQueryVersion +func (c *Conn) shapeQueryVersionRequest() []byte { + size := 4 + b := 0 + buf := make([]byte, size) + + buf[b] = c.extensions["SHAPE"] + b += 1 + + buf[b] = 0 // request opcode + b += 1 + + Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units + b += 2 + + return buf +} + +// Request ShapeRectangles +// size: pad((16 + pad((len(Rectangles) * 8)))) +type ShapeRectanglesCookie struct { + *cookie +} + +// Write request to wire for ShapeRectangles +func (c *Conn) ShapeRectangles(Operation ShapeOp, DestinationKind ShapeKind, Ordering byte, DestinationWindow Id, XOffset int16, YOffset int16, Rectangles []Rectangle) ShapeRectanglesCookie { + cookie := c.newCookie(false, false) + c.newRequest(c.shapeRectanglesRequest(Operation, DestinationKind, Ordering, DestinationWindow, XOffset, YOffset, Rectangles), cookie) + return ShapeRectanglesCookie{cookie} +} + +func (c *Conn) ShapeRectanglesChecked(Operation ShapeOp, DestinationKind ShapeKind, Ordering byte, DestinationWindow Id, XOffset int16, YOffset int16, Rectangles []Rectangle) ShapeRectanglesCookie { + cookie := c.newCookie(true, false) + c.newRequest(c.shapeRectanglesRequest(Operation, DestinationKind, Ordering, DestinationWindow, XOffset, YOffset, Rectangles), cookie) + return ShapeRectanglesCookie{cookie} +} + +func (cook ShapeRectanglesCookie) Check() error { + return cook.check() +} + +// Write request to wire for ShapeRectangles +func (c *Conn) shapeRectanglesRequest(Operation ShapeOp, DestinationKind ShapeKind, Ordering byte, DestinationWindow Id, XOffset int16, YOffset int16, Rectangles []Rectangle) []byte { + size := pad((16 + pad((len(Rectangles) * 8)))) + b := 0 + buf := make([]byte, size) + + buf[b] = c.extensions["SHAPE"] + b += 1 + + buf[b] = 1 // request opcode + b += 1 + + Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units + b += 2 + + buf[b] = byte(Operation) + b += 1 + + buf[b] = byte(DestinationKind) + b += 1 + + buf[b] = Ordering + b += 1 + + b += 1 // padding + + Put32(buf[b:], uint32(DestinationWindow)) + b += 4 + + Put16(buf[b:], uint16(XOffset)) + b += 2 + + Put16(buf[b:], uint16(YOffset)) + b += 2 + + b += RectangleListBytes(buf[b:], Rectangles) + + return buf +} + +// Request ShapeMask +// size: 20 +type ShapeMaskCookie struct { + *cookie +} + +// Write request to wire for ShapeMask +func (c *Conn) ShapeMask(Operation ShapeOp, DestinationKind ShapeKind, DestinationWindow Id, XOffset int16, YOffset int16, SourceBitmap Id) ShapeMaskCookie { + cookie := c.newCookie(false, false) + c.newRequest(c.shapeMaskRequest(Operation, DestinationKind, DestinationWindow, XOffset, YOffset, SourceBitmap), cookie) + return ShapeMaskCookie{cookie} +} + +func (c *Conn) ShapeMaskChecked(Operation ShapeOp, DestinationKind ShapeKind, DestinationWindow Id, XOffset int16, YOffset int16, SourceBitmap Id) ShapeMaskCookie { + cookie := c.newCookie(true, false) + c.newRequest(c.shapeMaskRequest(Operation, DestinationKind, DestinationWindow, XOffset, YOffset, SourceBitmap), cookie) + return ShapeMaskCookie{cookie} +} + +func (cook ShapeMaskCookie) Check() error { + return cook.check() +} + +// Write request to wire for ShapeMask +func (c *Conn) shapeMaskRequest(Operation ShapeOp, DestinationKind ShapeKind, DestinationWindow Id, XOffset int16, YOffset int16, SourceBitmap Id) []byte { + size := 20 + b := 0 + buf := make([]byte, size) + + buf[b] = c.extensions["SHAPE"] + b += 1 + + buf[b] = 2 // request opcode + b += 1 + + Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units + b += 2 + + buf[b] = byte(Operation) + b += 1 + + buf[b] = byte(DestinationKind) + b += 1 + + b += 2 // padding + + Put32(buf[b:], uint32(DestinationWindow)) + b += 4 + + Put16(buf[b:], uint16(XOffset)) + b += 2 + + Put16(buf[b:], uint16(YOffset)) + b += 2 + + Put32(buf[b:], uint32(SourceBitmap)) + b += 4 + + return buf +} + +// Request ShapeCombine +// size: 20 +type ShapeCombineCookie struct { + *cookie +} + +// Write request to wire for ShapeCombine +func (c *Conn) ShapeCombine(Operation ShapeOp, DestinationKind ShapeKind, SourceKind ShapeKind, DestinationWindow Id, XOffset int16, YOffset int16, SourceWindow Id) ShapeCombineCookie { + cookie := c.newCookie(false, false) + c.newRequest(c.shapeCombineRequest(Operation, DestinationKind, SourceKind, DestinationWindow, XOffset, YOffset, SourceWindow), cookie) + return ShapeCombineCookie{cookie} +} + +func (c *Conn) ShapeCombineChecked(Operation ShapeOp, DestinationKind ShapeKind, SourceKind ShapeKind, DestinationWindow Id, XOffset int16, YOffset int16, SourceWindow Id) ShapeCombineCookie { + cookie := c.newCookie(true, false) + c.newRequest(c.shapeCombineRequest(Operation, DestinationKind, SourceKind, DestinationWindow, XOffset, YOffset, SourceWindow), cookie) + return ShapeCombineCookie{cookie} +} + +func (cook ShapeCombineCookie) Check() error { + return cook.check() +} + +// Write request to wire for ShapeCombine +func (c *Conn) shapeCombineRequest(Operation ShapeOp, DestinationKind ShapeKind, SourceKind ShapeKind, DestinationWindow Id, XOffset int16, YOffset int16, SourceWindow Id) []byte { + size := 20 + b := 0 + buf := make([]byte, size) + + buf[b] = c.extensions["SHAPE"] + b += 1 + + buf[b] = 3 // request opcode + b += 1 + + Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units + b += 2 + + buf[b] = byte(Operation) + b += 1 + + buf[b] = byte(DestinationKind) + b += 1 + + buf[b] = byte(SourceKind) + b += 1 + + b += 1 // padding + + Put32(buf[b:], uint32(DestinationWindow)) + b += 4 + + Put16(buf[b:], uint16(XOffset)) + b += 2 + + Put16(buf[b:], uint16(YOffset)) + b += 2 + + Put32(buf[b:], uint32(SourceWindow)) + b += 4 + + return buf +} + +// Request ShapeOffset +// size: 16 +type ShapeOffsetCookie struct { + *cookie +} + +// Write request to wire for ShapeOffset +func (c *Conn) ShapeOffset(DestinationKind ShapeKind, DestinationWindow Id, XOffset int16, YOffset int16) ShapeOffsetCookie { + cookie := c.newCookie(false, false) + c.newRequest(c.shapeOffsetRequest(DestinationKind, DestinationWindow, XOffset, YOffset), cookie) + return ShapeOffsetCookie{cookie} +} + +func (c *Conn) ShapeOffsetChecked(DestinationKind ShapeKind, DestinationWindow Id, XOffset int16, YOffset int16) ShapeOffsetCookie { + cookie := c.newCookie(true, false) + c.newRequest(c.shapeOffsetRequest(DestinationKind, DestinationWindow, XOffset, YOffset), cookie) + return ShapeOffsetCookie{cookie} +} + +func (cook ShapeOffsetCookie) Check() error { + return cook.check() +} + +// Write request to wire for ShapeOffset +func (c *Conn) shapeOffsetRequest(DestinationKind ShapeKind, DestinationWindow Id, XOffset int16, YOffset int16) []byte { + size := 16 + b := 0 + buf := make([]byte, size) + + buf[b] = c.extensions["SHAPE"] + b += 1 + + buf[b] = 4 // request opcode + b += 1 + + Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units + b += 2 + + buf[b] = byte(DestinationKind) + b += 1 + + b += 3 // padding + + Put32(buf[b:], uint32(DestinationWindow)) + b += 4 + + Put16(buf[b:], uint16(XOffset)) + b += 2 + + Put16(buf[b:], uint16(YOffset)) + b += 2 + + return buf +} + +// Request ShapeQueryExtents +// size: 8 +type ShapeQueryExtentsCookie struct { + *cookie +} + +func (c *Conn) ShapeQueryExtents(DestinationWindow Id) ShapeQueryExtentsCookie { + cookie := c.newCookie(true, true) + c.newRequest(c.shapeQueryExtentsRequest(DestinationWindow), cookie) + return ShapeQueryExtentsCookie{cookie} +} + +func (c *Conn) ShapeQueryExtentsUnchecked(DestinationWindow Id) ShapeQueryExtentsCookie { + cookie := c.newCookie(false, true) + c.newRequest(c.shapeQueryExtentsRequest(DestinationWindow), cookie) + return ShapeQueryExtentsCookie{cookie} +} + +// Request reply for ShapeQueryExtents +// size: 28 +type ShapeQueryExtentsReply struct { + Sequence uint16 + Length uint32 + // padding: 1 bytes + BoundingShaped bool + ClipShaped bool + // padding: 2 bytes + BoundingShapeExtentsX int16 + BoundingShapeExtentsY int16 + BoundingShapeExtentsWidth uint16 + BoundingShapeExtentsHeight uint16 + ClipShapeExtentsX int16 + ClipShapeExtentsY int16 + ClipShapeExtentsWidth uint16 + ClipShapeExtentsHeight uint16 +} + +// Waits and reads reply data from request ShapeQueryExtents +func (cook ShapeQueryExtentsCookie) Reply() (*ShapeQueryExtentsReply, error) { + buf, err := cook.reply() + if err != nil { + return nil, err + } + if buf == nil { + return nil, nil + } + return shapeQueryExtentsReply(buf), nil +} + +// Read reply into structure from buffer for ShapeQueryExtents +func shapeQueryExtentsReply(buf []byte) *ShapeQueryExtentsReply { + v := new(ShapeQueryExtentsReply) + b := 1 // skip reply determinant + + b += 1 // padding + + v.Sequence = Get16(buf[b:]) + b += 2 + + v.Length = Get32(buf[b:]) // 4-byte units + b += 4 + + if buf[b] == 1 { + v.BoundingShaped = true + } else { + v.BoundingShaped = false + } + b += 1 + + if buf[b] == 1 { + v.ClipShaped = true + } else { + v.ClipShaped = false + } + b += 1 + + b += 2 // padding + + v.BoundingShapeExtentsX = int16(Get16(buf[b:])) + b += 2 + + v.BoundingShapeExtentsY = int16(Get16(buf[b:])) + b += 2 + + v.BoundingShapeExtentsWidth = Get16(buf[b:]) + b += 2 + + v.BoundingShapeExtentsHeight = Get16(buf[b:]) + b += 2 + + v.ClipShapeExtentsX = int16(Get16(buf[b:])) + b += 2 + + v.ClipShapeExtentsY = int16(Get16(buf[b:])) + b += 2 + + v.ClipShapeExtentsWidth = Get16(buf[b:]) + b += 2 + + v.ClipShapeExtentsHeight = Get16(buf[b:]) + b += 2 + + return v +} + +func (cook ShapeQueryExtentsCookie) Check() error { + return cook.check() +} + +// Write request to wire for ShapeQueryExtents +func (c *Conn) shapeQueryExtentsRequest(DestinationWindow Id) []byte { + size := 8 + b := 0 + buf := make([]byte, size) + + buf[b] = c.extensions["SHAPE"] + b += 1 + + buf[b] = 5 // request opcode + b += 1 + + Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units + b += 2 + + Put32(buf[b:], uint32(DestinationWindow)) + b += 4 + + return buf +} + +// Request ShapeSelectInput +// size: 12 +type ShapeSelectInputCookie struct { + *cookie +} + +// Write request to wire for ShapeSelectInput +func (c *Conn) ShapeSelectInput(DestinationWindow Id, Enable bool) ShapeSelectInputCookie { + cookie := c.newCookie(false, false) + c.newRequest(c.shapeSelectInputRequest(DestinationWindow, Enable), cookie) + return ShapeSelectInputCookie{cookie} +} + +func (c *Conn) ShapeSelectInputChecked(DestinationWindow Id, Enable bool) ShapeSelectInputCookie { + cookie := c.newCookie(true, false) + c.newRequest(c.shapeSelectInputRequest(DestinationWindow, Enable), cookie) + return ShapeSelectInputCookie{cookie} +} + +func (cook ShapeSelectInputCookie) Check() error { + return cook.check() +} + +// Write request to wire for ShapeSelectInput +func (c *Conn) shapeSelectInputRequest(DestinationWindow Id, Enable bool) []byte { + size := 12 + b := 0 + buf := make([]byte, size) + + buf[b] = c.extensions["SHAPE"] + b += 1 + + buf[b] = 6 // request opcode + b += 1 + + Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units + b += 2 + + Put32(buf[b:], uint32(DestinationWindow)) + b += 4 + + if Enable { + buf[b] = 1 + } else { + buf[b] = 0 + } + b += 1 + + b += 3 // padding + + return buf +} + +// Request ShapeInputSelected +// size: 8 +type ShapeInputSelectedCookie struct { + *cookie +} + +func (c *Conn) ShapeInputSelected(DestinationWindow Id) ShapeInputSelectedCookie { + cookie := c.newCookie(true, true) + c.newRequest(c.shapeInputSelectedRequest(DestinationWindow), cookie) + return ShapeInputSelectedCookie{cookie} +} + +func (c *Conn) ShapeInputSelectedUnchecked(DestinationWindow Id) ShapeInputSelectedCookie { + cookie := c.newCookie(false, true) + c.newRequest(c.shapeInputSelectedRequest(DestinationWindow), cookie) + return ShapeInputSelectedCookie{cookie} +} + +// Request reply for ShapeInputSelected +// size: 8 +type ShapeInputSelectedReply struct { + Sequence uint16 + Length uint32 + Enabled bool +} + +// Waits and reads reply data from request ShapeInputSelected +func (cook ShapeInputSelectedCookie) Reply() (*ShapeInputSelectedReply, error) { + buf, err := cook.reply() + if err != nil { + return nil, err + } + if buf == nil { + return nil, nil + } + return shapeInputSelectedReply(buf), nil +} + +// Read reply into structure from buffer for ShapeInputSelected +func shapeInputSelectedReply(buf []byte) *ShapeInputSelectedReply { + v := new(ShapeInputSelectedReply) + b := 1 // skip reply determinant + + if buf[b] == 1 { + v.Enabled = true + } else { + v.Enabled = false + } + b += 1 + + v.Sequence = Get16(buf[b:]) + b += 2 + + v.Length = Get32(buf[b:]) // 4-byte units + b += 4 + + return v +} + +func (cook ShapeInputSelectedCookie) Check() error { + return cook.check() +} + +// Write request to wire for ShapeInputSelected +func (c *Conn) shapeInputSelectedRequest(DestinationWindow Id) []byte { + size := 8 + b := 0 + buf := make([]byte, size) + + buf[b] = c.extensions["SHAPE"] + b += 1 + + buf[b] = 7 // request opcode + b += 1 + + Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units + b += 2 + + Put32(buf[b:], uint32(DestinationWindow)) + b += 4 + + return buf +} + +// Request ShapeGetRectangles +// size: 12 +type ShapeGetRectanglesCookie struct { + *cookie +} + +func (c *Conn) ShapeGetRectangles(Window Id, SourceKind ShapeKind) ShapeGetRectanglesCookie { + cookie := c.newCookie(true, true) + c.newRequest(c.shapeGetRectanglesRequest(Window, SourceKind), cookie) + return ShapeGetRectanglesCookie{cookie} +} + +func (c *Conn) ShapeGetRectanglesUnchecked(Window Id, SourceKind ShapeKind) ShapeGetRectanglesCookie { + cookie := c.newCookie(false, true) + c.newRequest(c.shapeGetRectanglesRequest(Window, SourceKind), cookie) + return ShapeGetRectanglesCookie{cookie} +} + +// Request reply for ShapeGetRectangles +// size: (32 + pad((int(RectanglesLen) * 8))) +type ShapeGetRectanglesReply struct { + Sequence uint16 + Length uint32 + Ordering byte + RectanglesLen uint32 + // padding: 20 bytes + Rectangles []Rectangle // size: pad((int(RectanglesLen) * 8)) +} + +// Waits and reads reply data from request ShapeGetRectangles +func (cook ShapeGetRectanglesCookie) Reply() (*ShapeGetRectanglesReply, error) { + buf, err := cook.reply() + if err != nil { + return nil, err + } + if buf == nil { + return nil, nil + } + return shapeGetRectanglesReply(buf), nil +} + +// Read reply into structure from buffer for ShapeGetRectangles +func shapeGetRectanglesReply(buf []byte) *ShapeGetRectanglesReply { + v := new(ShapeGetRectanglesReply) + b := 1 // skip reply determinant + + v.Ordering = buf[b] + b += 1 + + v.Sequence = Get16(buf[b:]) + b += 2 + + v.Length = Get32(buf[b:]) // 4-byte units + b += 4 + + v.RectanglesLen = Get32(buf[b:]) + b += 4 + + b += 20 // padding + + v.Rectangles = make([]Rectangle, v.RectanglesLen) + b += ReadRectangleList(buf[b:], v.Rectangles) + + return v +} + +func (cook ShapeGetRectanglesCookie) Check() error { + return cook.check() +} + +// Write request to wire for ShapeGetRectangles +func (c *Conn) shapeGetRectanglesRequest(Window Id, SourceKind ShapeKind) []byte { + size := 12 + b := 0 + buf := make([]byte, size) + + buf[b] = c.extensions["SHAPE"] + b += 1 + + buf[b] = 8 // request opcode + b += 1 + + Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units + b += 2 + + Put32(buf[b:], uint32(Window)) + b += 4 + + buf[b] = byte(SourceKind) + b += 1 + + b += 3 // padding + + return buf +} -- cgit v1.2.3