// Code generated by wlgen; DO NOT EDIT. package wlrscreencopy import ( "fmt" wayland "github.com/bnema/purego-libwayland/protocol/wayland" "github.com/bnema/purego-libwayland/server" ) var ZwlrScreencopyManagerV1Interface *server.Interface var ZwlrScreencopyFrameV1Interface *server.Interface func init() { ZwlrScreencopyManagerV1Interface = &server.Interface{Name: "zwlr_screencopy_manager_v1", Version: 3} ZwlrScreencopyFrameV1Interface = &server.Interface{Name: "zwlr_screencopy_frame_v1", Version: 3} ZwlrScreencopyManagerV1Interface.Requests = []server.Message{ {Name: "capture_output", Signature: "nio", Types: []*server.Interface{ZwlrScreencopyFrameV1Interface, nil, wayland.OutputInterface}}, {Name: "capture_output_region", Signature: "nioiiii", Types: []*server.Interface{ZwlrScreencopyFrameV1Interface, nil, wayland.OutputInterface, nil, nil, nil, nil}}, {Name: "destroy", Signature: "", Types: []*server.Interface{}}, } ZwlrScreencopyManagerV1Interface.Events = []server.Message{} ZwlrScreencopyFrameV1Interface.Requests = []server.Message{ {Name: "copy", Signature: "o", Types: []*server.Interface{wayland.BufferInterface}}, {Name: "destroy", Signature: "", Types: []*server.Interface{}}, {Name: "copy_with_damage", Signature: "2o", Types: []*server.Interface{wayland.BufferInterface}}, } ZwlrScreencopyFrameV1Interface.Events = []server.Message{ {Name: "buffer", Signature: "uuuu", Types: []*server.Interface{nil, nil, nil, nil}}, {Name: "flags", Signature: "u", Types: []*server.Interface{nil}}, {Name: "ready", Signature: "uuu", Types: []*server.Interface{nil, nil, nil}}, {Name: "failed", Signature: "", Types: []*server.Interface{}}, {Name: "damage", Signature: "2uuuu", Types: []*server.Interface{nil, nil, nil, nil}}, {Name: "linux_dmabuf", Signature: "3uuu", Types: []*server.Interface{nil, nil, nil}}, {Name: "buffer_done", Signature: "3", Types: []*server.Interface{}}, } if err := server.NewInterfaces(ZwlrScreencopyManagerV1Interface, ZwlrScreencopyFrameV1Interface); err != nil { panic(err) } } // ZwlrScreencopyManagerV1 manager to inform clients and begin capturing. type ZwlrScreencopyManagerV1 struct{ *server.Resource } func WrapZwlrScreencopyManagerV1(r *server.Resource) *ZwlrScreencopyManagerV1 { if r == nil { return nil } return &ZwlrScreencopyManagerV1{r} } const ZwlrScreencopyManagerV1RequestCaptureOutput uint32 = 0 const ZwlrScreencopyManagerV1RequestCaptureOutputRegion uint32 = 1 const ZwlrScreencopyManagerV1RequestDestroy uint32 = 2 // ZwlrScreencopyManagerV1Handler handles zwlr_screencopy_manager_v1 requests. type ZwlrScreencopyManagerV1Handler interface { CaptureOutput(self *ZwlrScreencopyManagerV1, frame uint32, overlayCursor int32, output *wayland.Output) CaptureOutputRegion(self *ZwlrScreencopyManagerV1, frame uint32, overlayCursor int32, output *wayland.Output, x int32, y int32, width int32, height int32) Destroy(self *ZwlrScreencopyManagerV1) } func NewZwlrScreencopyManagerV1(c server.Client, version int32, id uint32, h ZwlrScreencopyManagerV1Handler) (*ZwlrScreencopyManagerV1, error) { if h == nil { return nil, fmt.Errorf("purego-libwayland: nil handler for zwlr_screencopy_manager_v1") } var self *ZwlrScreencopyManagerV1 r, err := c.CreateResource(ZwlrScreencopyManagerV1Interface, version, id, func(_ *server.Resource, opcode uint32, args []server.Arg) { switch opcode { case 0: h.CaptureOutput(self, args[0].NewID(), args[1].Int(), wayland.WrapOutput(args[2].Resource())) case 1: h.CaptureOutputRegion(self, args[0].NewID(), args[1].Int(), wayland.WrapOutput(args[2].Resource()), args[3].Int(), args[4].Int(), args[5].Int(), args[6].Int()) case 2: h.Destroy(self) self.Destroy() } }) if err != nil { return nil, err } self = WrapZwlrScreencopyManagerV1(r) r.Data = self return self, nil } func NewZwlrScreencopyManagerV1Global(d *server.Display, version int32, bind server.BindFunc) error { return d.CreateGlobal(ZwlrScreencopyManagerV1Interface, version, bind) } // ZwlrScreencopyFrameV1 a frame ready for copy. type ZwlrScreencopyFrameV1 struct{ *server.Resource } func WrapZwlrScreencopyFrameV1(r *server.Resource) *ZwlrScreencopyFrameV1 { if r == nil { return nil } return &ZwlrScreencopyFrameV1{r} } const ZwlrScreencopyFrameV1RequestCopy uint32 = 0 const ZwlrScreencopyFrameV1RequestDestroy uint32 = 1 const ZwlrScreencopyFrameV1RequestCopyWithDamage uint32 = 2 const ZwlrScreencopyFrameV1EventBuffer uint32 = 0 const ZwlrScreencopyFrameV1EventFlags uint32 = 1 const ZwlrScreencopyFrameV1EventReady uint32 = 2 const ZwlrScreencopyFrameV1EventFailed uint32 = 3 const ZwlrScreencopyFrameV1EventDamage uint32 = 4 const ZwlrScreencopyFrameV1EventLinuxDmabuf uint32 = 5 const ZwlrScreencopyFrameV1EventBufferDone uint32 = 6 // ZwlrScreencopyFrameV1Error . type ZwlrScreencopyFrameV1Error uint32 const ( ZwlrScreencopyFrameV1ErrorAlreadyUsed ZwlrScreencopyFrameV1Error = 0 ZwlrScreencopyFrameV1ErrorInvalidBuffer ZwlrScreencopyFrameV1Error = 1 ) // ZwlrScreencopyFrameV1Flags (bitfield). type ZwlrScreencopyFrameV1Flags uint32 const ( ZwlrScreencopyFrameV1FlagsYInvert ZwlrScreencopyFrameV1Flags = 1 ) // ZwlrScreencopyFrameV1Handler handles zwlr_screencopy_frame_v1 requests. type ZwlrScreencopyFrameV1Handler interface { Copy(self *ZwlrScreencopyFrameV1, buffer *wayland.Buffer) Destroy(self *ZwlrScreencopyFrameV1) CopyWithDamage(self *ZwlrScreencopyFrameV1, buffer *wayland.Buffer) } func NewZwlrScreencopyFrameV1(c server.Client, version int32, id uint32, h ZwlrScreencopyFrameV1Handler) (*ZwlrScreencopyFrameV1, error) { if h == nil { return nil, fmt.Errorf("purego-libwayland: nil handler for zwlr_screencopy_frame_v1") } var self *ZwlrScreencopyFrameV1 r, err := c.CreateResource(ZwlrScreencopyFrameV1Interface, version, id, func(_ *server.Resource, opcode uint32, args []server.Arg) { switch opcode { case 0: h.Copy(self, wayland.WrapBuffer(args[0].Resource())) case 1: h.Destroy(self) self.Destroy() case 2: h.CopyWithDamage(self, wayland.WrapBuffer(args[0].Resource())) } }) if err != nil { return nil, err } self = WrapZwlrScreencopyFrameV1(r) r.Data = self return self, nil } // SendBuffer wl_shm buffer information. func (self *ZwlrScreencopyFrameV1) SendBuffer(format uint32, width uint32, height uint32, stride uint32) { self.PostEvent(ZwlrScreencopyFrameV1EventBuffer, server.Uint(format), server.Uint(width), server.Uint(height), server.Uint(stride)) } // SendFlags frame flags. func (self *ZwlrScreencopyFrameV1) SendFlags(flags uint32) { self.PostEvent(ZwlrScreencopyFrameV1EventFlags, server.Uint(flags)) } // SendReady indicates frame is available for reading. func (self *ZwlrScreencopyFrameV1) SendReady(tvSecHi uint32, tvSecLo uint32, tvNsec uint32) { self.PostEvent(ZwlrScreencopyFrameV1EventReady, server.Uint(tvSecHi), server.Uint(tvSecLo), server.Uint(tvNsec)) } // SendFailed frame copy failed. func (self *ZwlrScreencopyFrameV1) SendFailed() { self.PostEvent(ZwlrScreencopyFrameV1EventFailed) } // SendDamage carries the coordinates of the damaged region (since version 2). func (self *ZwlrScreencopyFrameV1) SendDamage(x uint32, y uint32, width uint32, height uint32) { self.PostEvent(ZwlrScreencopyFrameV1EventDamage, server.Uint(x), server.Uint(y), server.Uint(width), server.Uint(height)) } // SendLinuxDmabuf linux-dmabuf buffer information (since version 3). func (self *ZwlrScreencopyFrameV1) SendLinuxDmabuf(format uint32, width uint32, height uint32) { self.PostEvent(ZwlrScreencopyFrameV1EventLinuxDmabuf, server.Uint(format), server.Uint(width), server.Uint(height)) } // SendBufferDone all buffer types reported (since version 3). func (self *ZwlrScreencopyFrameV1) SendBufferDone() { self.PostEvent(ZwlrScreencopyFrameV1EventBufferDone) } func NewZwlrScreencopyFrameV1Global(d *server.Display, version int32, bind server.BindFunc) error { return d.CreateGlobal(ZwlrScreencopyFrameV1Interface, version, bind) } func resourceOf(v interface{ GetResource() *server.Resource }) *server.Resource { if v == nil { return nil } return v.GetResource() } func (self *ZwlrScreencopyManagerV1) GetResource() *server.Resource { if self == nil { return nil } return self.Resource } func (self *ZwlrScreencopyFrameV1) GetResource() *server.Resource { if self == nil { return nil } return self.Resource }