// CompletionEventNew constructs a CompletionEvent value that implements xgb.Event from a byte slice. func CompletionEventNew(buf []byte) xgb.Event { v := CompletionEvent{} b := 1 // don't read event number b += 1 // padding v.Sequence = xgb.Get16(buf[b:]) b += 2 v.Drawable = xproto.Drawable(xgb.Get32(buf[b:])) b += 4 v.MinorEvent = xgb.Get16(buf[b:]) b += 2 v.MajorEvent = buf[b] b += 1 b += 1 // padding v.Shmseg = Seg(xgb.Get32(buf[b:])) b += 4 v.Offset = xgb.Get32(buf[b:]) b += 4 return v }
func main() { X, err := xgbutil.NewConn() if err != nil { log.Fatal(err) } // Use the "NewDrawable" constructor to create an xgraphics.Image value // from a drawable. (Usually this is done with pixmaps, but drawables // can also be windows.) ximg, err := xgraphics.NewDrawable(X, xproto.Drawable(X.RootWin())) if err != nil { log.Fatal(err) } // Shows the screenshot in a window. ximg.XShowExtra("Screenshot", true) // If you'd like to save it as a png, use: // err = ximg.SavePng("screenshot.png") // if err != nil { // log.Fatal(err) // } xevent.Main(X) }
// BufferSwapCompleteEventNew constructs a BufferSwapCompleteEvent value that implements xgb.Event from a byte slice. func BufferSwapCompleteEventNew(buf []byte) xgb.Event { v := BufferSwapCompleteEvent{} b := 1 // don't read event number b += 1 // padding v.Sequence = xgb.Get16(buf[b:]) b += 2 v.EventType = xgb.Get16(buf[b:]) b += 2 b += 2 // padding v.Drawable = xproto.Drawable(xgb.Get32(buf[b:])) b += 4 v.UstHi = xgb.Get32(buf[b:]) b += 4 v.UstLo = xgb.Get32(buf[b:]) b += 4 v.MscHi = xgb.Get32(buf[b:]) b += 4 v.MscLo = xgb.Get32(buf[b:]) b += 4 v.Sbc = xgb.Get32(buf[b:]) b += 4 return v }
// InvalidateBuffersEventNew constructs a InvalidateBuffersEvent value that implements xgb.Event from a byte slice. func InvalidateBuffersEventNew(buf []byte) xgb.Event { v := InvalidateBuffersEvent{} b := 1 // don't read event number b += 1 // padding v.Sequence = xgb.Get16(buf[b:]) b += 2 v.Drawable = xproto.Drawable(xgb.Get32(buf[b:])) b += 4 return v }