package xgb /* This file was generated by damage.xml on May 8 2012 11:03:23pm EDT. This file is automatically generated. Edit at your peril! */ // Imports are not necessary for XGB because everything is // in one package. They are still listed here for reference. // import "xproto" // import "xfixes" // DamageInit must be called before using the DAMAGE extension. func (c *Conn) DamageInit() error { reply, err := c.QueryExtension(6, "DAMAGE").Reply() switch { case err != nil: return err case !reply.Present: return errorf("No extension named DAMAGE could be found on on the server.") } c.extLock.Lock() c.extensions["DAMAGE"] = reply.MajorOpcode for evNum, fun := range newExtEventFuncs["DAMAGE"] { newEventFuncs[int(reply.FirstEvent)+evNum] = fun } for errNum, fun := range newExtErrorFuncs["DAMAGE"] { newErrorFuncs[int(reply.FirstError)+errNum] = fun } c.extLock.Unlock() return nil } func init() { newExtEventFuncs["DAMAGE"] = make(map[int]newEventFun) newExtErrorFuncs["DAMAGE"] = make(map[int]newErrorFun) } // 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' // 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' const ( DamageReportLevelRawRectangles = 0 DamageReportLevelDeltaRectangles = 1 DamageReportLevelBoundingBox = 2 DamageReportLevelNonEmpty = 3 ) // Skipping resource definition of 'Damage' // Event definition DamageNotify (0) // Size: 32 const DamageNotify = 0 type DamageNotifyEvent struct { Sequence uint16 Level byte Drawable Id Damage Id Timestamp Timestamp Area Rectangle Geometry Rectangle } // Event read DamageNotify func NewDamageNotifyEvent(buf []byte) Event { v := DamageNotifyEvent{} b := 1 // don't read event number v.Level = buf[b] b += 1 v.Sequence = Get16(buf[b:]) b += 2 v.Drawable = Id(Get32(buf[b:])) b += 4 v.Damage = Id(Get32(buf[b:])) b += 4 v.Timestamp = Timestamp(Get32(buf[b:])) b += 4 v.Area = Rectangle{} b += ReadRectangle(buf[b:], &v.Area) v.Geometry = Rectangle{} b += ReadRectangle(buf[b:], &v.Geometry) return v } // Event write DamageNotify func (v DamageNotifyEvent) Bytes() []byte { buf := make([]byte, 32) b := 0 // write event number buf[b] = 0 b += 1 buf[b] = v.Level b += 1 b += 2 // skip sequence number Put32(buf[b:], uint32(v.Drawable)) b += 4 Put32(buf[b:], uint32(v.Damage)) b += 4 Put32(buf[b:], uint32(v.Timestamp)) b += 4 { structBytes := v.Area.Bytes() copy(buf[b:], structBytes) b += pad(len(structBytes)) } { structBytes := v.Geometry.Bytes() copy(buf[b:], structBytes) b += pad(len(structBytes)) } return buf } func (v DamageNotifyEvent) ImplementsEvent() {} func (v DamageNotifyEvent) SequenceId() uint16 { return v.Sequence } func (v DamageNotifyEvent) String() string { fieldVals := make([]string, 0, 6) fieldVals = append(fieldVals, sprintf("Sequence: %d", v.Sequence)) fieldVals = append(fieldVals, sprintf("Level: %d", v.Level)) fieldVals = append(fieldVals, sprintf("Drawable: %d", v.Drawable)) fieldVals = append(fieldVals, sprintf("Damage: %d", v.Damage)) fieldVals = append(fieldVals, sprintf("Timestamp: %d", v.Timestamp)) return "DamageNotify {" + stringsJoin(fieldVals, ", ") + "}" } func init() { newExtEventFuncs["DAMAGE"][0] = NewDamageNotifyEvent } // Error definition DamageBadDamage (0) // Size: 32 const BadDamageBadDamage = 0 type DamageBadDamageError struct { Sequence uint16 NiceName string } // Error read DamageBadDamage func NewDamageBadDamageError(buf []byte) Error { v := DamageBadDamageError{} v.NiceName = "DamageBadDamage" b := 1 // skip error determinant b += 1 // don't read error number v.Sequence = Get16(buf[b:]) b += 2 return v } func (err DamageBadDamageError) ImplementsError() {} func (err DamageBadDamageError) SequenceId() uint16 { return err.Sequence } func (err DamageBadDamageError) BadId() Id { return 0 } func (err DamageBadDamageError) Error() string { fieldVals := make([]string, 0, 0) fieldVals = append(fieldVals, "NiceName: "+err.NiceName) fieldVals = append(fieldVals, sprintf("Sequence: %d", err.Sequence)) return "BadDamageBadDamage {" + stringsJoin(fieldVals, ", ") + "}" } func init() { newExtErrorFuncs["DAMAGE"][0] = NewDamageBadDamageError } // Request DamageQueryVersion // size: 12 type DamageQueryVersionCookie struct { *cookie } func (c *Conn) DamageQueryVersion(ClientMajorVersion uint32, ClientMinorVersion uint32) DamageQueryVersionCookie { cookie := c.newCookie(true, true) c.newRequest(c.damageQueryVersionRequest(ClientMajorVersion, ClientMinorVersion), cookie) return DamageQueryVersionCookie{cookie} } func (c *Conn) DamageQueryVersionUnchecked(ClientMajorVersion uint32, ClientMinorVersion uint32) DamageQueryVersionCookie { cookie := c.newCookie(false, true) c.newRequest(c.damageQueryVersionRequest(ClientMajorVersion, ClientMinorVersion), cookie) return DamageQueryVersionCookie{cookie} } // Request reply for DamageQueryVersion // size: 32 type DamageQueryVersionReply struct { Sequence uint16 Length uint32 // padding: 1 bytes MajorVersion uint32 MinorVersion uint32 // padding: 16 bytes } // Waits and reads reply data from request DamageQueryVersion func (cook DamageQueryVersionCookie) Reply() (*DamageQueryVersionReply, error) { buf, err := cook.reply() if err != nil { return nil, err } if buf == nil { return nil, nil } return damageQueryVersionReply(buf), nil } // Read reply into structure from buffer for DamageQueryVersion func damageQueryVersionReply(buf []byte) *DamageQueryVersionReply { v := new(DamageQueryVersionReply) b := 1 // skip reply determinant b += 1 // padding v.Sequence = Get16(buf[b:]) b += 2 v.Length = Get32(buf[b:]) // 4-byte units b += 4 v.MajorVersion = Get32(buf[b:]) b += 4 v.MinorVersion = Get32(buf[b:]) b += 4 b += 16 // padding return v } func (cook DamageQueryVersionCookie) Check() error { return cook.check() } // Write request to wire for DamageQueryVersion func (c *Conn) damageQueryVersionRequest(ClientMajorVersion uint32, ClientMinorVersion uint32) []byte { size := 12 b := 0 buf := make([]byte, size) buf[b] = c.extensions["DAMAGE"] b += 1 buf[b] = 0 // request opcode b += 1 Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units b += 2 Put32(buf[b:], ClientMajorVersion) b += 4 Put32(buf[b:], ClientMinorVersion) b += 4 return buf } // Request DamageCreate // size: 16 type DamageCreateCookie struct { *cookie } // Write request to wire for DamageCreate func (c *Conn) DamageCreate(Damage Id, Drawable Id, Level byte) DamageCreateCookie { cookie := c.newCookie(false, false) c.newRequest(c.damageCreateRequest(Damage, Drawable, Level), cookie) return DamageCreateCookie{cookie} } func (c *Conn) DamageCreateChecked(Damage Id, Drawable Id, Level byte) DamageCreateCookie { cookie := c.newCookie(true, false) c.newRequest(c.damageCreateRequest(Damage, Drawable, Level), cookie) return DamageCreateCookie{cookie} } func (cook DamageCreateCookie) Check() error { return cook.check() } // Write request to wire for DamageCreate func (c *Conn) damageCreateRequest(Damage Id, Drawable Id, Level byte) []byte { size := 16 b := 0 buf := make([]byte, size) buf[b] = c.extensions["DAMAGE"] b += 1 buf[b] = 1 // request opcode b += 1 Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units b += 2 Put32(buf[b:], uint32(Damage)) b += 4 Put32(buf[b:], uint32(Drawable)) b += 4 buf[b] = Level b += 1 b += 3 // padding return buf } // Request DamageDestroy // size: 8 type DamageDestroyCookie struct { *cookie } // Write request to wire for DamageDestroy func (c *Conn) DamageDestroy(Damage Id) DamageDestroyCookie { cookie := c.newCookie(false, false) c.newRequest(c.damageDestroyRequest(Damage), cookie) return DamageDestroyCookie{cookie} } func (c *Conn) DamageDestroyChecked(Damage Id) DamageDestroyCookie { cookie := c.newCookie(true, false) c.newRequest(c.damageDestroyRequest(Damage), cookie) return DamageDestroyCookie{cookie} } func (cook DamageDestroyCookie) Check() error { return cook.check() } // Write request to wire for DamageDestroy func (c *Conn) damageDestroyRequest(Damage Id) []byte { size := 8 b := 0 buf := make([]byte, size) buf[b] = c.extensions["DAMAGE"] b += 1 buf[b] = 2 // request opcode b += 1 Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units b += 2 Put32(buf[b:], uint32(Damage)) b += 4 return buf } // Request DamageSubtract // size: 16 type DamageSubtractCookie struct { *cookie } // Write request to wire for DamageSubtract func (c *Conn) DamageSubtract(Damage Id, Repair Id, Parts Id) DamageSubtractCookie { cookie := c.newCookie(false, false) c.newRequest(c.damageSubtractRequest(Damage, Repair, Parts), cookie) return DamageSubtractCookie{cookie} } func (c *Conn) DamageSubtractChecked(Damage Id, Repair Id, Parts Id) DamageSubtractCookie { cookie := c.newCookie(true, false) c.newRequest(c.damageSubtractRequest(Damage, Repair, Parts), cookie) return DamageSubtractCookie{cookie} } func (cook DamageSubtractCookie) Check() error { return cook.check() } // Write request to wire for DamageSubtract func (c *Conn) damageSubtractRequest(Damage Id, Repair Id, Parts Id) []byte { size := 16 b := 0 buf := make([]byte, size) buf[b] = c.extensions["DAMAGE"] b += 1 buf[b] = 3 // request opcode b += 1 Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units b += 2 Put32(buf[b:], uint32(Damage)) b += 4 Put32(buf[b:], uint32(Repair)) b += 4 Put32(buf[b:], uint32(Parts)) b += 4 return buf } // Request DamageAdd // size: 12 type DamageAddCookie struct { *cookie } // Write request to wire for DamageAdd func (c *Conn) DamageAdd(Drawable Id, Region Id) DamageAddCookie { cookie := c.newCookie(false, false) c.newRequest(c.damageAddRequest(Drawable, Region), cookie) return DamageAddCookie{cookie} } func (c *Conn) DamageAddChecked(Drawable Id, Region Id) DamageAddCookie { cookie := c.newCookie(true, false) c.newRequest(c.damageAddRequest(Drawable, Region), cookie) return DamageAddCookie{cookie} } func (cook DamageAddCookie) Check() error { return cook.check() } // Write request to wire for DamageAdd func (c *Conn) damageAddRequest(Drawable Id, Region Id) []byte { size := 12 b := 0 buf := make([]byte, size) buf[b] = c.extensions["DAMAGE"] b += 1 buf[b] = 4 // request opcode b += 1 Put16(buf[b:], uint16(size/4)) // write request size in 4-byte units b += 2 Put32(buf[b:], uint32(Drawable)) b += 4 Put32(buf[b:], uint32(Region)) b += 4 return buf }