package xgb /* This file was generated by shape.xml on May 7 2012 9:17:57pm 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" // ShapeInit must be called before using the SHAPE extension. func (c *Conn) ShapeInit() error { reply, err := c.QueryExtension(5, "SHAPE").Reply() switch { case err != nil: return err case !reply.Present: return errorf("No extension named SHAPE could be found on on the server.") } c.extLock.Lock() c.extensions["SHAPE"] = reply.MajorOpcode for evNum, fun := range newExtEventFuncs["SHAPE"] { newEventFuncs[int(reply.FirstEvent)+evNum] = fun } for errNum, fun := range newExtErrorFuncs["SHAPE"] { newErrorFuncs[int(reply.FirstError)+errNum] = fun } c.extLock.Unlock() return nil } func init() { newExtEventFuncs["SHAPE"] = make(map[int]newEventFun) newExtErrorFuncs["SHAPE"] = make(map[int]newErrorFun) } // Skipping definition for base type 'Void' // Skipping definition for base type 'Byte' // Skipping definition for base type 'Int8' // Skipping definition for base type 'Card16' // Skipping definition for base type 'Char' // Skipping definition for base type 'Card32' // Skipping definition for base type 'Double' // Skipping definition for base type 'Bool' // Skipping definition for base type 'Float' // Skipping definition for base type 'Id' // Skipping definition for base type 'Card8' // Skipping definition for base type 'Int16' // Skipping definition for base type 'Int32' 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() { newExtEventFuncs["SHAPE"][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 }