func (i *PointerGestureSwipe) AddEndHandler(f PointerGestureSwipeEndHandlerFunc) {
	if f == nil {
		return
	}
	i.endHandlers = append(i.endHandlers, f)
}
AddEndHandler : adds handler for PointerGestureSwipeEndEvent
package pointer_gestures
import (
	"reflect"
	"github.com/rajveermalviya/go-wayland/wayland/client"
)
type PointerGestures struct {
	client.BaseProxy
}
func NewPointerGestures(ctx *client.Context) *PointerGestures {
	zwpPointerGesturesV1 := &PointerGestures{}
	ctx.Register(zwpPointerGesturesV1)
	return zwpPointerGesturesV1
}
func (i *PointerGestures) GetSwipeGesture(pointer *client.Pointer) (*PointerGestureSwipe, error) {
	id := NewPointerGestureSwipe(i.Context())
	const opcode = 0
	const rLen = 8 + 4 + 4
	r := make([]byte, rLen)
	l := 0
	client.PutUint32(r[l:4], i.ID())
	l += 4
	client.PutUint32(r[l:l+4], uint32(rLen<<16|opcode&0x0000ffff))
	l += 4
	client.PutUint32(r[l:l+4], id.ID())
	l += 4
	client.PutUint32(r[l:l+4], pointer.ID())
	l += 4
	err := i.Context().WriteMsg(r, nil)
	return id, err
}
func (i *PointerGestures) GetPinchGesture(pointer *client.Pointer) (*PointerGesturePinch, error) {
	id := NewPointerGesturePinch(i.Context())
	const opcode = 1
	const rLen = 8 + 4 + 4
	r := make([]byte, rLen)
	l := 0
	client.PutUint32(r[l:4], i.ID())
	l += 4
	client.PutUint32(r[l:l+4], uint32(rLen<<16|opcode&0x0000ffff))
	l += 4
	client.PutUint32(r[l:l+4], id.ID())
	l += 4
	client.PutUint32(r[l:l+4], pointer.ID())
	l += 4
	err := i.Context().WriteMsg(r, nil)
	return id, err
}
func (i *PointerGestures) Release() error {
	defer i.Context().Unregister(i)
	const opcode = 2
	const rLen = 8
	r := make([]byte, rLen)
	l := 0
	client.PutUint32(r[l:4], i.ID())
	l += 4
	client.PutUint32(r[l:l+4], uint32(rLen<<16|opcode&0x0000ffff))
	l += 4
	err := i.Context().WriteMsg(r, nil)
	return err
}
type PointerGestureSwipe struct {
	client.BaseProxy
	beginHandlers  []PointerGestureSwipeBeginHandlerFunc
	updateHandlers []PointerGestureSwipeUpdateHandlerFunc
	endHandlers    []PointerGestureSwipeEndHandlerFunc
}
func NewPointerGestureSwipe(ctx *client.Context) *PointerGestureSwipe {
	zwpPointerGestureSwipeV1 := &PointerGestureSwipe{}
	ctx.Register(zwpPointerGestureSwipeV1)
	return zwpPointerGestureSwipeV1
}
func (i *PointerGestureSwipe) Destroy() error {
	defer i.Context().Unregister(i)
	const opcode = 0
	const rLen = 8
	r := make([]byte, rLen)
	l := 0
	client.PutUint32(r[l:4], i.ID())
	l += 4
	client.PutUint32(r[l:l+4], uint32(rLen<<16|opcode&0x0000ffff))
	l += 4
	err := i.Context().WriteMsg(r, nil)
	return err
}
type PointerGestureSwipeBeginEvent struct {
	Serial  uint32
	Time    uint32
	Surface *client.Surface
	Fingers uint32
}
type PointerGestureSwipeBeginHandlerFunc func(PointerGestureSwipeBeginEvent)
func (i *PointerGestureSwipe) AddBeginHandler(f PointerGestureSwipeBeginHandlerFunc) {
	if f == nil {
		return
	}
	i.beginHandlers = append(i.beginHandlers, f)
}
func (i *PointerGestureSwipe) RemoveBeginHandler(f PointerGestureSwipeBeginHandlerFunc) {
	for j, e := range i.beginHandlers {
		if reflect.ValueOf(e).Pointer() == reflect.ValueOf(f).Pointer() {
			i.beginHandlers = append(i.beginHandlers[:j], i.beginHandlers[j+1:]...)
			return
		}
	}
}
type PointerGestureSwipeUpdateEvent struct {
	Time uint32
	Dx   float64
	Dy   float64
}
type PointerGestureSwipeUpdateHandlerFunc func(PointerGestureSwipeUpdateEvent)
func (i *PointerGestureSwipe) AddUpdateHandler(f PointerGestureSwipeUpdateHandlerFunc) {
	if f == nil {
		return
	}
	i.updateHandlers = append(i.updateHandlers, f)
}
func (i *PointerGestureSwipe) RemoveUpdateHandler(f PointerGestureSwipeUpdateHandlerFunc) {
	for j, e := range i.updateHandlers {
		if reflect.ValueOf(e).Pointer() == reflect.ValueOf(f).Pointer() {
			i.updateHandlers = append(i.updateHandlers[:j], i.updateHandlers[j+1:]...)
			return
		}
	}
}
type PointerGestureSwipeEndEvent struct {
	Serial    uint32
	Time      uint32
	Cancelled int32
}
type PointerGestureSwipeEndHandlerFunc func(PointerGestureSwipeEndEvent)