// Package gtk was automatically generated by github.com/bnema/puregotk DO NOT EDIT package gtk import ( "structs" "unsafe" "github.com/ebitengine/purego" "github.com/bnema/puregotk/pkg/core" "github.com/bnema/puregotk/v4/glib" "github.com/bnema/puregotk/v4/gobject" "github.com/bnema/puregotk/v4/gobject/types" ) type GestureZoomClass struct { _ structs.HostLayout } func (x *GestureZoomClass) GoPointer() uintptr { return uintptr(unsafe.Pointer(x)) } // Recognizes 2-finger pinch/zoom gestures. // // Whenever the distance between both tracked sequences changes, the // [signal@Gtk.GestureZoom::scale-changed] signal is emitted to report // the scale factor. type GestureZoom struct { Gesture } var xGestureZoomGLibType func() types.GType func GestureZoomGLibType() types.GType { return xGestureZoomGLibType() } func GestureZoomNewFromInternalPtr(ptr uintptr) *GestureZoom { cls := &GestureZoom{} cls.Ptr = ptr return cls } var xNewGestureZoom func() uintptr // Returns a newly created `GtkGesture` that recognizes // pinch/zoom gestures. func NewGestureZoom() *GestureZoom { var cls *GestureZoom cret := xNewGestureZoom() if cret == 0 { return nil } cls = &GestureZoom{} cls.Ptr = cret return cls } var xGestureZoomGetScaleDelta func(uintptr) float64 // Gets the scale delta. // // If @gesture is active, this function returns the zooming // difference since the gesture was recognized (hence the // starting point is considered 1:1). If @gesture is not // active, 1 is returned. func (x *GestureZoom) GetScaleDelta() float64 { cret := xGestureZoomGetScaleDelta(x.GoPointer()) return cret } func (c *GestureZoom) GoPointer() uintptr { if c == nil { return 0 } return c.Ptr } func (c *GestureZoom) SetGoPointer(ptr uintptr) { c.Ptr = ptr } // Emitted whenever the distance between both tracked sequences changes. func (x *GestureZoom) ConnectScaleChanged(cb *func(GestureZoom, float64)) uint { cbPtr := uintptr(unsafe.Pointer(cb)) if cbRefPtr, ok := glib.GetCallback(cbPtr); ok { handlerID := gobject.SignalConnect(x.GoPointer(), "scale-changed", cbRefPtr) glib.SaveHandlerMapping(handlerID, cbPtr) return handlerID } fcb := func(clsPtr uintptr, ScaleVarp float64) { fa := GestureZoom{} fa.Ptr = clsPtr cbFn := *cb cbFn(fa, ScaleVarp) } cbRefPtr := purego.NewCallback(fcb) glib.SaveCallbackWithClosure(cbPtr, cbRefPtr, cb) handlerID := gobject.SignalConnect(x.GoPointer(), "scale-changed", cbRefPtr) glib.SaveHandlerMapping(handlerID, cbPtr) return handlerID } func init() { core.SetPackageName("GTK", "gtk4") core.SetSharedLibraries("GTK", []string{"libgtk-4.so.1"}) var libs []uintptr for _, libPath := range core.GetPaths("GTK") { lib, err := purego.Dlopen(libPath, purego.RTLD_NOW|purego.RTLD_GLOBAL) if err != nil { panic(err) } libs = append(libs, lib) } core.PuregoSafeRegister(&xGestureZoomGLibType, libs, "gtk_gesture_zoom_get_type") core.PuregoSafeRegister(&xNewGestureZoom, libs, "gtk_gesture_zoom_new") core.PuregoSafeRegister(&xGestureZoomGetScaleDelta, libs, "gtk_gesture_zoom_get_scale_delta") }