VT_Player/third_party/gotk3/cairo/translations.go
Stu d4efa91ce1 Add vendored gotk3 GTK3 bindings for Go
Vendor gotk3 library to ensure consistent GTK3 bindings across
environments and simplify dependency management.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-15 05:40:43 -05:00

79 lines
2.4 KiB
Go

package cairo
// #include <stdlib.h>
// #include <cairo.h>
// #include <cairo-gobject.h>
import "C"
// Translate is a wrapper around cairo_translate.
func (v *Context) Translate(tx, ty float64) {
C.cairo_translate(v.native(), C.double(tx), C.double(ty))
}
// Scale is a wrapper around cairo_scale.
func (v *Context) Scale(sx, sy float64) {
C.cairo_scale(v.native(), C.double(sx), C.double(sy))
}
// Rotate is a wrapper around cairo_rotate.
func (v *Context) Rotate(angle float64) {
C.cairo_rotate(v.native(), C.double(angle))
}
// Transform is a wrapper around cairo_transform.
func (v *Context) Transform(matrix *Matrix) {
C.cairo_transform(v.native(), matrix.native())
}
// SetMatrix is a wrapper around cairo_set_matrix.
func (v *Context) SetMatrix(matrix *Matrix) {
C.cairo_set_matrix(v.native(), matrix.native())
}
// GetMatrix is a wrapper around cairo_get_matrix.
func (v *Context) GetMatrix() *Matrix {
var matrix C.cairo_matrix_t
C.cairo_get_matrix(v.native(), &matrix)
return &Matrix{
Xx: float64(matrix.xx),
Yx: float64(matrix.yx),
Xy: float64(matrix.xy),
Yy: float64(matrix.yy),
X0: float64(matrix.x0),
Y0: float64(matrix.y0),
}
}
// IdentityMatrix is a wrapper around cairo_identity_matrix().
//
// Resets the current transformation matrix (CTM) by setting it equal to the
// identity matrix. That is, the user-space and device-space axes will be
// aligned and one user-space unit will transform to one device-space unit.
func (v *Context) IdentityMatrix() {
C.cairo_identity_matrix(v.native())
}
// UserToDevice is a wrapper around cairo_user_to_device.
func (v *Context) UserToDevice(x, y float64) (float64, float64) {
C.cairo_user_to_device(v.native(), (*C.double)(&x), (*C.double)(&y))
return x, y
}
// UserToDeviceDistance is a wrapper around cairo_user_to_device_distance.
func (v *Context) UserToDeviceDistance(dx, dy float64) (float64, float64) {
C.cairo_user_to_device_distance(v.native(), (*C.double)(&dx), (*C.double)(&dy))
return dx, dy
}
// DeviceToUser is a wrapper around cairo_device_to_user.
func (v *Context) DeviceToUser(x, y float64) (float64, float64) {
C.cairo_device_to_user(v.native(), (*C.double)(&x), (*C.double)(&y))
return x, y
}
// DeviceToUserDistance is a wrapper around cairo_device_to_user_distance.
func (v *Context) DeviceToUserDistance(x, y float64) (float64, float64) {
C.cairo_device_to_user_distance(v.native(), (*C.double)(&x), (*C.double)(&y))
return x, y
}