detached 7d292f2

initial commit

commit
7d292f29a68fd087b8058504ca73618ab33315eb
author
jwijenbergh · · 2023-06-17 08:52 UTC
committer
jwijenbergh · · 2023-08-15 10:50 UTC
parent
none (root commit)
signature
GPG Unverified1A2298F6C34F96E5 The key is unknown
696 files · +745353 -0
A LICENSE +21 -0
@@ -0,0 +1,21 @@
1+MIT License
2+
3+Copyright (c) 2023 Jeroen Wijenbergh
4+
5+Permission is hereby granted, free of charge, to any person obtaining a copy
6+of this software and associated documentation files (the "Software"), to deal
7+in the Software without restriction, including without limitation the rights
8+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+copies of the Software, and to permit persons to whom the Software is
10+furnished to do so, subject to the following conditions:
11+
12+The above copyright notice and this permission notice shall be included in all
13+copies or substantial portions of the Software.
14+
15+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+SOFTWARE.
A README.md +95 -0
@@ -0,0 +1,95 @@
1+# Puregotk
2+
3+> **_NOTE:_** This library is currently expiremental and needs thorough testing. Some APIs might be incorrectly exposed
4+
5+Autogenerated GTK4+Adwaita bindings for Go leveraging [purego](https://github.com/ebitengine/purego)
6+
7+# Motivation
8+I created this library because I found that alternative libraries using Cgo had much too slow compilation speed. For my laptop around 15 minutes to build a simple example for [gotk3](https://github.com/gotk3/gotk3) and also [gotk4](https://github.com/diamondburned/gotk4).
9+This is not a fault for these libraries as CGo compilation is just inherently slow in Go. In this project I want to test a new approach by levering purego which allows you to load libraries using dlopen without needing cgo.
10+
11+Compilation speed currently is around 40 seconds for me on basic examples.
12+
13+## Advantages
14+
15+No Cgo needed, thus:
16+* Easy cross compilation
17+* No C toolchain needed
18+* Much faster compile times than alternatives like [gotk3](https://github.com/gotk3/gotk3) & [gotk4](https://github.com/diamondburned/gotk4)
19+
20+## Disadvantages
21+
22+Limitations of this library as compared to the alternatives using cgo:
23+* Some APIs are not possible due to purego not currently supporting struct arguments (that are not pointers)
24+* Currently only support for x86, for ARM I need to figure out how to get callbacks working in purego and contribute to purego
25+
26+# Planned features
27+In order of priority:
28+* General code cleanup
29+* ARM support
30+* Support for OS other than Linux (I only test on Linux currently)
31+* GTK 3 support
32+
33+# Basic example
34+
35+```go
36+package main
37+
38+import (
39+ "os"
40+ "github.com/jwijenbergh/puregotk/v4/gtk"
41+ "github.com/jwijenbergh/puregotk/v4/gio"
42+)
43+
44+func main() {
45+ app := gtk.NewApplication("com.github.jwijenbergh.puregotk.gtk4.hello", gio.GApplicationFlagsNoneValue)
46+ defer app.Unref()
47+ app.ConnectActivate(func (_ gio.Application) {
48+ activate(app)
49+ })
50+
51+ if code := app.Run(len(os.Args), os.Args); code > 0 {
52+ os.Exit(code)
53+ }
54+}
55+
56+func activate(app gtk.Application) {
57+ var window gtk.ApplicationWindow
58+ gtk.NewApplicationWindow(app).Cast(&window)
59+ window.SetTitle("purego")
60+ window.SetChild(gtk.NewLabel("Hello, World!"))
61+ window.SetDefaultSize(500, 500)
62+ window.Show()
63+}
64+```
65+
66+Save this to a main.go and then build & run with
67+
68+```bash
69+CGO_ENABLED=0 go run main.go
70+```
71+
72+> **_NOTE:_** Passing CGO_ENABLED=0 is currently required
73+
74+# Generating the library
75+This library is automatically generated by reading GIR files.
76+
77+To generate the library, run:
78+
79+```bash
80+./gen.sh
81+```
82+
83+In the root of the project. This needs:
84+
85+- Go >= 1.20
86+- [goimports](https://pkg.go.dev/golang.org/x/tools/cmd/goimports)
87+
88+# License
89+
90+[MIT](./LICENSE)
91+
92+# Acknowledgements
93+* [Purego](https://github.com/ebitengine/purego) and the ebitengine team for their great work
94+* [gotk4](https://github.com/diamondburned/gotk4) for some GIR type definitions
95+* [gtk](https://gitlab.com/gnome/gtk) of course
A gen.go +47 -0
@@ -0,0 +1,47 @@
1+package main
2+
3+import (
4+ "os"
5+ "path/filepath"
6+ "strings"
7+ "text/template"
8+
9+ "github.com/jwijenbergh/puregotk/internal/gir/pass"
10+ "github.com/jwijenbergh/puregotk/internal/gir/util"
11+)
12+
13+//go:generate go run gen.go
14+
15+func main() {
16+ dir := "v4"
17+ os.RemoveAll(dir)
18+ var girs []string
19+ filepath.Walk("internal/gir/spec", func(path string, f os.FileInfo, err error) error {
20+ if !strings.HasSuffix(path, ".gir") {
21+ return nil
22+ }
23+ girs = append(girs, path)
24+ return nil
25+ })
26+ p, err := pass.New(girs)
27+ if err != nil {
28+ panic(err)
29+ }
30+ // collect basic type info
31+ p.First()
32+
33+ // Create the template
34+ gotemp, err := template.New("go").Funcs(template.FuncMap{"conv": util.ConvertArgs, "convc": util.ConvertArgsComma}).ParseFiles("templates/go")
35+ if err != nil {
36+ panic(err)
37+ }
38+
39+ // Write go files by making the second pass
40+ p.Second(dir, gotemp)
41+
42+ // Finally copy some extra code that we want in the API
43+ data, err := os.ReadFile("templates/gobject")
44+ if err == nil {
45+ os.WriteFile("v4/gobject/more.go", data, 0o644)
46+ }
47+}
A gen.sh +18 -0
@@ -0,0 +1,18 @@
1+#!/usr/bin/env bash
2+
3+set -e
4+
5+echo "generating go files..."
6+go generate
7+
8+tmp=$(mktemp -d)
9+
10+echo "making sure imports are correct..."
11+GOPATH="$tmp" goimports --srcdir . -w v4 || { rm -r "$tmp"; exit 1; }
12+rm -r "$tmp"
13+
14+echo "formatting files..."
15+go fmt "github.com/jwijenbergh/puregotk/v4/..."
16+
17+echo "running go vet..."
18+go vet ./v4/...
A go.mod +7 -0
@@ -0,0 +1,7 @@
1+module github.com/jwijenbergh/puregotk
2+
3+go 1.20
4+
5+require github.com/jwijenbergh/purego v0.0.0-20230815104821-b26146068cfb
6+
7+require golang.org/x/sys v0.11.0 // indirect
A go.sum +4 -0 generated file: collapsed
A internal/core/core.go +138 -0
@@ -0,0 +1,138 @@
1+// package core implements core functionality for the generated files
2+// this core lib is imported by the generated code
3+package core
4+
5+import (
6+ "bytes"
7+ "fmt"
8+ "os"
9+ "os/exec"
10+ "path/filepath"
11+ "strings"
12+
13+ "github.com/jwijenbergh/purego"
14+)
15+
16+func PuregoSafeRegister(fptr interface{}, handle uintptr, name string) error {
17+ sym, err := purego.Dlsym(handle, name)
18+ if err != nil {
19+ return err
20+ }
21+ purego.RegisterFunc(fptr, sym)
22+ return nil
23+}
24+
25+// paths to where the shared object files should be located
26+// TODO: This needs to be split in architecture and more paths should be added
27+var paths = []string{
28+ "/usr/lib/x86_64-linux-gnu/",
29+}
30+
31+// names is a lookup from library names to shared object filenames
32+var names = map[string][]string{
33+ "ADW": {"libadwaita-1.so"},
34+ "CAIRO": {"libcairo.so"},
35+ "GDK": {"libgtk-4.so"},
36+ "GDKPIXBUF": {"libgdk_pixbuf-2.0.so"},
37+ "GIO": {"libgio-2.0.so"},
38+ "GLIB": {"libglib-2.0.so"},
39+ "GMODULE": {"libgmodule-2.0.so"},
40+ "GOBJECT": {"libgobject-2.0.so"},
41+ "GRAPHENE": {"libgraphene-1.0.so"},
42+ "GSK": {"libgtk-4.so"},
43+ "GTK": {"libgtk-4.so"},
44+ "PANGO": {"libpango-1.0.so"},
45+ "PANGOCAIRO": {"libpangocairo-1.0.so"},
46+}
47+
48+// pkgConfNames is a lookup from library names to pkg-config library names
49+// TODO: Get this from the package name in the gir files with a fallback to gtk's package name
50+var pkgConfNames = map[string]string{
51+ "ADW": "libadwaita-1",
52+ "CAIRO": "cairo",
53+ "GDK": "gtk4",
54+ "GDKPIXBUF": "gdk-pixbuf-2.0",
55+ "GIO": "gio-2.0",
56+ "GLIB": "glib-2.0",
57+ "GMODULE": "gmodule-2.0",
58+ "GOBJECT": "gobject-2.0",
59+ "GRAPHENE": "graphene-gobject-1.0",
60+ "GSK": "gtk4",
61+ "GTK": "gtk4",
62+ "PANGO": "pango",
63+ "PANGOCAIRO": "pangocairo",
64+}
65+
66+// findSo tries to find a shared object from a path and a library name
67+// It does this by mapping the library name to a suitable shared object filename and then trying some suffixes
68+func findSo(path string, name string) string {
69+ for _, n := range names[name] {
70+ suffixes := []string{"", ".0", ".1", ".2"}
71+ fn := filepath.Join(path, n)
72+ for _, s := range suffixes {
73+ if _, err := os.Stat(fn + s); err == nil {
74+ return fn
75+ }
76+ }
77+ }
78+ return ""
79+}
80+
81+// findPkgConf finds a shared object file with pkg-config
82+// it does this by running pkg-config --libs-only-L libname
83+// and then it loops over the directories returned and finds a suitable one
84+func findPkgConf(name string) string {
85+ // try to get with pkg-config
86+ cmd := exec.Command("pkg-config", "--libs-only-L", pkgConfNames[name])
87+ var out, outerr bytes.Buffer
88+ cmd.Stdout = &out
89+ cmd.Stderr = &outerr
90+ err := cmd.Run()
91+ if err != nil {
92+ fmt.Fprintf(os.Stderr, "pkg-config, failed with: %v and stderr: %s\n", err, outerr.String())
93+ return ""
94+ }
95+ outs := strings.Split(out.String(), "-L")
96+ for _, v := range outs {
97+ c := strings.TrimSpace(v)
98+ if c == "" {
99+ continue
100+ }
101+ g := findSo(c, name)
102+ if g != "" {
103+ return g
104+ }
105+ }
106+ return ""
107+}
108+
109+// GetPath gets a shared object file from a library name
110+// it does it in the following order
111+// see if PUREGOTK_LIBNAME_PATH is set
112+// go over the hardcoded paths
113+// find a library name with pkg-config
114+// panic if failed
115+// TODO: Hardcore a library shared object with linker -X flag
116+// This is useful for packaging
117+func GetPath(name string) string {
118+ // try to get from env var
119+ ev := fmt.Sprintf("PUREGOTK_%s_PATH", name)
120+ if v := os.Getenv(ev); v != "" {
121+ return v
122+ }
123+
124+ // try to loop over paths
125+ for _, p := range paths {
126+ g := findSo(p, name)
127+ if g != "" {
128+ return g
129+ }
130+
131+ }
132+ g := findPkgConf(name)
133+ if g != "" {
134+ return g
135+ }
136+
137+ panic(fmt.Sprintf("Path for library: %s not found. Please set the path to this library shared object file manually with env variable: %s. Or make sure pkg-config is setup correctly", strings.ToLower(name), ev))
138+}
A internal/gir/pass/pass.go +303 -0
@@ -0,0 +1,303 @@
1+// package pass implements the first and second pass to go from gir files to go files
2+// the first pass collects basic type information
3+// the second pass uses the basic type information to go over the gir files again and convert it to go files
4+package pass
5+
6+import (
7+ "encoding/xml"
8+ "fmt"
9+ "os"
10+ "strings"
11+ "text/template"
12+
13+ "github.com/jwijenbergh/puregotk/internal/gir/types"
14+ "github.com/jwijenbergh/puregotk/internal/gir/util"
15+)
16+
17+type Pass struct {
18+ Parsed []types.Repository
19+ Types types.KindMap
20+}
21+
22+// New creates a new pass struct by parsing gir files in the string slice
23+// This pass object will then be used to go over these files multiple times up until we have the full info to convert it to go files
24+func New(files []string) (*Pass, error) {
25+ p := Pass{
26+ Parsed: make([]types.Repository, len(files)),
27+ Types: make(types.KindMap),
28+ }
29+ for i, f := range files {
30+ b, err := os.ReadFile(f)
31+ if err != nil {
32+ return nil, err
33+ }
34+ var r types.Repository
35+ err = xml.Unmarshal(b, &r)
36+ if err != nil {
37+ return nil, err
38+ }
39+ p.Parsed[i] = r
40+ }
41+ return &p, nil
42+}
43+
44+func (p *Pass) collectTypes(r types.Repository) {
45+ ns := r.Namespaces[0]
46+ for _, cls := range ns.Classes {
47+ p.Types.Add(ns.Name, cls.Name, types.ClassesType, cls)
48+ }
49+ for _, rec := range ns.Records {
50+ p.Types.Add(ns.Name, rec.Name, types.RecordsType, rec)
51+ }
52+ for _, en := range ns.Enums {
53+ // TODO: This probably shouldn't be aliastype, but we should make dedicated types
54+ p.Types.Add(ns.Name, en.Name, types.AliasType, en)
55+ }
56+ for _, cb := range ns.Callbacks {
57+ p.Types.Add(ns.Name, cb.Name, types.CallbackType, cb)
58+ }
59+ for _, b := range ns.Bitfields {
60+ // TODO: This probably shouldn't be aliastype, but we should make dedicated types
61+ p.Types.Add(ns.Name, b.Name, types.AliasType, b)
62+ }
63+ for _, inter := range ns.Interfaces {
64+ p.Types.Add(ns.Name, inter.Name, types.InterfacesType, inter)
65+ }
66+}
67+
68+// First does a "first pass" meaning it collects basic type information for all the repositories
69+func (p *Pass) First() {
70+ for _, r := range p.Parsed {
71+ p.collectTypes(r)
72+ }
73+}
74+
75+func (p *Pass) writeGo(r types.Repository, gotemp *template.Template, dir string) {
76+ ns := r.Namespaces[0]
77+
78+ aliases := make(map[string][]types.AliasTemplate)
79+ enums := make(map[string][]types.EnumTemplate)
80+ var files []string
81+ for _, el := range ns.Bitfields {
82+ temp := el.Template(ns.Name)
83+ fn := el.FilenameSafe()
84+ files = append(files, fn)
85+ enums[fn] = append(enums[fn], temp)
86+ }
87+
88+ for _, el := range ns.Enums {
89+ temp := el.Template(ns.Name)
90+ fn := el.FilenameSafe()
91+ files = append(files, fn)
92+ enums[fn] = append(enums[fn], temp)
93+ }
94+
95+ records := make(map[string][]types.RecordTemplate)
96+ recordLookup := make(map[string]bool)
97+ for _, rec := range ns.Records {
98+ name := util.SnakeToCamel(rec.Name)
99+ fields := make([]types.RecordField, len(rec.Fields))
100+ fn := rec.FilenameSafe()
101+ files = append(files, fn)
102+ for _, f := range rec.Fields {
103+ _type := f.Translate(ns.Name, p.Types)
104+ if _type == "" {
105+ continue
106+ }
107+ fields = append(fields, types.RecordField{
108+ Name: util.SnakeToCamel(f.Name),
109+ Type: _type,
110+ })
111+ }
112+ records[fn] = append(records[fn], types.RecordTemplate{
113+ Name: name,
114+ Doc: rec.Doc.StringSafe(),
115+ Fields: fields,
116+ })
117+ recordLookup[name] = true
118+ }
119+
120+ callbacks := make(map[string][]types.CallbackTemplate)
121+ // set every callback equal to uintptr as well
122+ for _, cb := range ns.Callbacks {
123+ fn := cb.FilenameSafe()
124+ files = append(files, fn)
125+ cbT := types.CallbackTemplate{
126+ Doc: cb.Doc.StringSafe(),
127+ Name: cb.Name,
128+ Args: cb.Parameters.Template(ns.Name, "", p.Types),
129+ Ret: cb.ReturnValue.Template(ns.Name, "", p.Types),
130+ }
131+ callbacks[fn] = append(callbacks[fn], cbT)
132+ }
133+
134+ interfaces := make(map[string][]types.InterfaceTemplate)
135+ for _, inter := range ns.Interfaces {
136+ fn := inter.FilenameSafe()
137+ files = append(files, fn)
138+ interfaces[fn] = append(interfaces[fn], types.ConvertInterface(ns.Name, "", inter, nil, p.Types))
139+ }
140+
141+ for _, union := range ns.Unions {
142+ fn := union.FilenameSafe()
143+ files = append(files, fn)
144+ name := util.SnakeToCamel(union.Name)
145+ interT := types.AliasTemplate{
146+ Doc: union.Doc.StringSafe(),
147+ Name: name,
148+ // structs are not yet supported in CGO
149+ Value: "uintptr",
150+ }
151+ aliases[fn] = append(aliases[fn], interT)
152+ }
153+
154+ for _, alias := range ns.Aliases {
155+ fn := alias.FilenameSafe()
156+ files = append(files, fn)
157+ typeName := alias.Type.Template(ns.Name, p.Types)
158+ if typeName == "" {
159+ typeName = "uintptr"
160+ }
161+ name := util.SnakeToCamel(alias.Name)
162+ aliasT := types.AliasTemplate{
163+ Doc: alias.Doc.StringSafe(),
164+ Name: name,
165+ // structs are not yet supported in CGO
166+ Value: typeName,
167+ }
168+ aliases[fn] = append(aliases[fn], aliasT)
169+ }
170+
171+ functions := make(map[string][]types.FuncTemplate)
172+ for _, f := range ns.Functions {
173+ name := util.SnakeToCamel(f.Name)
174+ if p.Types.Kind(ns.Name, name) != types.UnknownType {
175+ name = "New" + name
176+ }
177+ fn := f.FilenameSafe()
178+ files = append(files, fn)
179+ functions[fn] = append(functions[fn], types.FuncTemplate{
180+ Name: name,
181+ CName: f.CIdentifier,
182+ Doc: f.Doc.StringSafe(),
183+ Args: f.Parameters.Template(ns.Name, "", p.Types),
184+ Ret: f.ReturnValue.Template(ns.Name, "", p.Types),
185+ })
186+ }
187+
188+ classes := make(map[string][]types.ClassTemplate)
189+ for _, cls := range ns.Classes {
190+ implemented := make(map[string]bool)
191+ constructors := make([]types.FuncTemplate, len(cls.Constructors))
192+ fn := cls.FilenameSafe()
193+ files = append(files, fn)
194+
195+ for i, c := range cls.Constructors {
196+ name := util.SnakeToCamel(c.Name)
197+ constructors[i] = types.FuncTemplate{
198+ Name: name,
199+ CName: c.CIdentifier,
200+ Doc: c.Doc.StringSafe(),
201+ Args: c.Parameters.Template(ns.Name, "", p.Types),
202+ Ret: c.ReturnValue.Template(ns.Name, "", p.Types),
203+ }
204+ }
205+ signals := make([]types.SignalsTemplate, len(cls.Signals))
206+ for i, s := range cls.Signals {
207+ signals[i] = types.SignalsTemplate{
208+ Doc: s.Doc.StringSafe(),
209+ Name: util.DashToCamel(s.Name),
210+ CName: s.Name,
211+ Args: s.Parameters.Template(ns.Name, "", p.Types),
212+ Ret: s.ReturnValue.Template(ns.Name, "", p.Types),
213+ }
214+ }
215+ receivers := make([]types.FuncTemplate, len(cls.Methods))
216+ for i, f := range cls.Methods {
217+ name := util.SnakeToCamel(f.Name)
218+ implemented[name] = true
219+ receivers[i] = types.FuncTemplate{
220+ Doc: f.Doc.StringSafe(),
221+ Name: name,
222+ CName: f.CIdentifier,
223+ Args: f.Parameters.Template(ns.Name, "", p.Types),
224+ Ret: f.ReturnValue.Template(ns.Name, "", p.Types),
225+ }
226+ }
227+ var interfaces []types.InterfaceTemplate
228+ for _, impl := range cls.Implements {
229+ interfaces = append(interfaces, types.GetInterfaceFuncs(ns.Name, impl.Name, implemented, p.Types))
230+ }
231+ classes[fn] = append(classes[fn], types.ClassTemplate{
232+ Doc: cls.Doc.StringSafe(),
233+ Name: cls.Name,
234+ Parent: util.NormalizeNamespace(ns.Name, cls.Parent, true),
235+ Constructors: constructors,
236+ Receivers: receivers,
237+ Interfaces: interfaces,
238+ Signals: signals,
239+ })
240+ }
241+
242+ pkgName := strings.ToLower(ns.Name)
243+ for _, fn := range files {
244+ var includesSlice []string
245+ //includesSlice := make([]string, len(includes[fn]))
246+ //i := 0
247+ //for k, v := range includes[fn] {
248+ // if v {
249+ // includesSlice[i] = k
250+ // }
251+ // i++
252+ //}
253+ methods := 0
254+ for _, i := range interfaces[fn] {
255+ for range i.Methods {
256+ methods += 1
257+ }
258+ }
259+ for _, i := range classes[fn] {
260+ for range i.Constructors {
261+ methods += 1
262+ }
263+ for range i.Receivers {
264+ methods += 1
265+ }
266+ }
267+ // we do not need to add the length of interfaces in here
268+ // as they should only be loaded when there are classes
269+ needsInit := (len(functions[fn]) + methods) > 0
270+
271+ args := types.TemplateArg{
272+ PkgName: pkgName,
273+ PkgEnv: strings.ToUpper(pkgName),
274+ NeedsInit: needsInit,
275+ Imports: includesSlice,
276+ Aliases: aliases[fn],
277+ Callbacks: callbacks[fn],
278+ Records: records[fn],
279+ Enums: enums[fn],
280+ Functions: functions[fn],
281+ Interfaces: interfaces[fn],
282+ Classes: classes[fn],
283+ }
284+
285+ os.MkdirAll(fmt.Sprintf(dir+"/%s", pkgName), 0o755)
286+
287+ f, err := os.Create(fmt.Sprintf(dir+"/%s/%s", pkgName, fn))
288+ if err != nil {
289+ panic(err)
290+ }
291+ err = gotemp.Execute(f, args)
292+ if err != nil {
293+ panic(err)
294+ }
295+
296+ }
297+}
298+
299+func (p *Pass) Second(dir string, gotemp *template.Template) {
300+ for _, r := range p.Parsed {
301+ p.writeGo(r, gotemp, dir)
302+ }
303+}
A internal/gir/spec/Adw-1.gir +29130 -0 large diff (29130 lines changed): collapsed
A internal/gir/spec/GLib-2.0.gir +83214 -0 large diff (83214 lines changed): collapsed
A internal/gir/spec/GModule-2.0.gir +522 -0
@@ -0,0 +1,522 @@
1+<?xml version="1.0"?>
2+<!-- This file was automatically generated from C sources - DO NOT EDIT!
3+To affect the contents of this file, edit the original C definitions,
4+and/or use gtk-doc annotations. -->
5+<repository version="1.2"
6+ xmlns="http://www.gtk.org/introspection/core/1.0"
7+ xmlns:c="http://www.gtk.org/introspection/c/1.0"
8+ xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
9+ <include name="GLib" version="2.0"/>
10+ <package name="gmodule-2.0"/>
11+ <c:include name="gmodule.h"/>
12+ <namespace name="GModule"
13+ version="2.0"
14+ shared-library="libgmodule-2.0.so.0"
15+ c:identifier-prefixes="G"
16+ c:symbol-prefixes="g">
17+ <record name="Module" c:type="GModule" disguised="1">
18+ <doc xml:space="preserve"
19+ filename="gmodule-2.0.c"
20+ line="5">The #GModule struct is an opaque data structure to represent a
21+[dynamically-loaded module][glib-Dynamic-Loading-of-Modules].
22+It should only be accessed via the following functions.</doc>
23+ <source-position filename="gmodule.h" line="65"/>
24+ <method name="close" c:identifier="g_module_close">
25+ <doc xml:space="preserve"
26+ filename="gmodule-2.0.c"
27+ line="185">Closes a module.</doc>
28+ <source-position filename="gmodule.h" line="105"/>
29+ <return-value transfer-ownership="none">
30+ <doc xml:space="preserve"
31+ filename="gmodule-2.0.c"
32+ line="191">%TRUE on success</doc>
33+ <type name="gboolean" c:type="gboolean"/>
34+ </return-value>
35+ <parameters>
36+ <instance-parameter name="module" transfer-ownership="none">
37+ <doc xml:space="preserve"
38+ filename="gmodule-2.0.c"
39+ line="187">a #GModule to close</doc>
40+ <type name="Module" c:type="GModule*"/>
41+ </instance-parameter>
42+ </parameters>
43+ </method>
44+ <method name="make_resident" c:identifier="g_module_make_resident">
45+ <doc xml:space="preserve"
46+ filename="gmodule-2.0.c"
47+ line="204">Ensures that a module will never be unloaded.
48+Any future g_module_close() calls on the module will be ignored.</doc>
49+ <source-position filename="gmodule.h" line="109"/>
50+ <return-value transfer-ownership="none">
51+ <type name="none" c:type="void"/>
52+ </return-value>
53+ <parameters>
54+ <instance-parameter name="module" transfer-ownership="none">
55+ <doc xml:space="preserve"
56+ filename="gmodule-2.0.c"
57+ line="206">a #GModule to make permanently resident</doc>
58+ <type name="Module" c:type="GModule*"/>
59+ </instance-parameter>
60+ </parameters>
61+ </method>
62+ <method name="name" c:identifier="g_module_name">
63+ <doc xml:space="preserve"
64+ filename="gmodule-2.0.c"
65+ line="213">Returns the filename that the module was opened with.
66+
67+If @module refers to the application itself, "main" is returned.</doc>
68+ <source-position filename="gmodule.h" line="123"/>
69+ <return-value transfer-ownership="none">
70+ <doc xml:space="preserve"
71+ filename="gmodule-2.0.c"
72+ line="221">the filename of the module</doc>
73+ <type name="utf8" c:type="const gchar*"/>
74+ </return-value>
75+ <parameters>
76+ <instance-parameter name="module" transfer-ownership="none">
77+ <doc xml:space="preserve"
78+ filename="gmodule-2.0.c"
79+ line="215">a #GModule</doc>
80+ <type name="Module" c:type="GModule*"/>
81+ </instance-parameter>
82+ </parameters>
83+ </method>
84+ <method name="symbol" c:identifier="g_module_symbol">
85+ <doc xml:space="preserve"
86+ filename="gmodule-2.0.c"
87+ line="273">Gets a symbol pointer from a module, such as one exported
88+by %G_MODULE_EXPORT. Note that a valid symbol can be %NULL.</doc>
89+ <source-position filename="gmodule.h" line="117"/>
90+ <return-value transfer-ownership="none">
91+ <doc xml:space="preserve"
92+ filename="gmodule-2.0.c"
93+ line="282">%TRUE on success</doc>
94+ <type name="gboolean" c:type="gboolean"/>
95+ </return-value>
96+ <parameters>
97+ <instance-parameter name="module" transfer-ownership="none">
98+ <doc xml:space="preserve"
99+ filename="gmodule-2.0.c"
100+ line="275">a #GModule</doc>
101+ <type name="Module" c:type="GModule*"/>
102+ </instance-parameter>
103+ <parameter name="symbol_name" transfer-ownership="none">
104+ <doc xml:space="preserve"
105+ filename="gmodule-2.0.c"
106+ line="276">the name of the symbol to find</doc>
107+ <type name="utf8" c:type="const gchar*"/>
108+ </parameter>
109+ <parameter name="symbol"
110+ direction="out"
111+ caller-allocates="0"
112+ transfer-ownership="full"
113+ nullable="1">
114+ <doc xml:space="preserve"
115+ filename="gmodule-2.0.c"
116+ line="277">returns the pointer to the symbol value</doc>
117+ <type name="gpointer" c:type="gpointer*"/>
118+ </parameter>
119+ </parameters>
120+ </method>
121+ <function name="build_path" c:identifier="g_module_build_path">
122+ <doc xml:space="preserve"
123+ filename="gmodule-2.0.c"
124+ line="159">A portable way to build the filename of a module. The platform-specific
125+prefix and suffix are added to the filename, if needed, and the result
126+is added to the directory, using the correct separator character.
127+
128+The directory should specify the directory where the module can be found.
129+It can be %NULL or an empty string to indicate that the module is in a
130+standard platform-specific directory, though this is not recommended
131+since the wrong module may be found.
132+
133+For example, calling g_module_build_path() on a Linux system with a
134+@directory of `/lib` and a @module_name of "mylibrary" will return
135+`/lib/libmylibrary.so`. On a Windows system, using `\Windows` as the
136+directory it will return `\Windows\mylibrary.dll`.</doc>
137+ <source-position filename="gmodule.h" line="137"/>
138+ <return-value transfer-ownership="full">
139+ <doc xml:space="preserve"
140+ filename="gmodule-2.0.c"
141+ line="180">the complete path of the module, including the standard library
142+ prefix and suffix. This should be freed when no longer needed</doc>
143+ <type name="utf8" c:type="gchar*"/>
144+ </return-value>
145+ <parameters>
146+ <parameter name="directory"
147+ transfer-ownership="none"
148+ nullable="1"
149+ allow-none="1">
150+ <doc xml:space="preserve"
151+ filename="gmodule-2.0.c"
152+ line="161">the directory where the module is. This can be
153+ %NULL or the empty string to indicate that the standard platform-specific
154+ directories will be used, though that is not recommended</doc>
155+ <type name="utf8" c:type="const gchar*"/>
156+ </parameter>
157+ <parameter name="module_name" transfer-ownership="none">
158+ <doc xml:space="preserve"
159+ filename="gmodule-2.0.c"
160+ line="164">the name of the module</doc>
161+ <type name="utf8" c:type="const gchar*"/>
162+ </parameter>
163+ </parameters>
164+ </function>
165+ <function name="error" c:identifier="g_module_error">
166+ <doc xml:space="preserve"
167+ filename="gmodule-2.0.c"
168+ line="195">Gets a string describing the last module error.</doc>
169+ <source-position filename="gmodule.h" line="113"/>
170+ <return-value transfer-ownership="none">
171+ <doc xml:space="preserve"
172+ filename="gmodule-2.0.c"
173+ line="200">a string describing the last module error</doc>
174+ <type name="utf8" c:type="const gchar*"/>
175+ </return-value>
176+ </function>
177+ <function name="error_quark" c:identifier="g_module_error_quark">
178+ <return-value transfer-ownership="none">
179+ <type name="GLib.Quark" c:type="GQuark"/>
180+ </return-value>
181+ </function>
182+ <function name="open" c:identifier="g_module_open" introspectable="0">
183+ <doc xml:space="preserve"
184+ filename="gmodule-2.0.c"
185+ line="225">A thin wrapper function around g_module_open_full()</doc>
186+ <source-position filename="gmodule.h" line="95"/>
187+ <return-value>
188+ <doc xml:space="preserve"
189+ filename="gmodule-2.0.c"
190+ line="234">a #GModule on success, or %NULL on failure</doc>
191+ <type name="Module" c:type="GModule*"/>
192+ </return-value>
193+ <parameters>
194+ <parameter name="file_name"
195+ transfer-ownership="none"
196+ nullable="1"
197+ allow-none="1">
198+ <doc xml:space="preserve"
199+ filename="gmodule-2.0.c"
200+ line="227">the name of the file containing the module, or %NULL
201+ to obtain a #GModule representing the main program itself</doc>
202+ <type name="utf8" c:type="const gchar*"/>
203+ </parameter>
204+ <parameter name="flags" transfer-ownership="none">
205+ <doc xml:space="preserve"
206+ filename="gmodule-2.0.c"
207+ line="229">the flags used for opening the module. This can be the
208+ logical OR of any of the #GModuleFlags.</doc>
209+ <type name="ModuleFlags" c:type="GModuleFlags"/>
210+ </parameter>
211+ </parameters>
212+ </function>
213+ <function name="open_full"
214+ c:identifier="g_module_open_full"
215+ version="2.70"
216+ introspectable="0"
217+ throws="1">
218+ <doc xml:space="preserve"
219+ filename="gmodule-2.0.c"
220+ line="238">Opens a module. If the module has already been opened,
221+its reference count is incremented.
222+
223+First of all g_module_open_full() tries to open @file_name as a module.
224+If that fails and @file_name has the ".la"-suffix (and is a libtool
225+archive) it tries to open the corresponding module. If that fails
226+and it doesn't have the proper module suffix for the platform
227+(%G_MODULE_SUFFIX), this suffix will be appended and the corresponding
228+module will be opened. If that fails and @file_name doesn't have the
229+".la"-suffix, this suffix is appended and g_module_open_full() tries to open
230+the corresponding module. If eventually that fails as well, %NULL is
231+returned.</doc>
232+ <source-position filename="gmodule.h" line="99"/>
233+ <return-value>
234+ <doc xml:space="preserve"
235+ filename="gmodule-2.0.c"
236+ line="259">a #GModule on success, or %NULL on failure</doc>
237+ <type name="Module" c:type="GModule*"/>
238+ </return-value>
239+ <parameters>
240+ <parameter name="file_name"
241+ transfer-ownership="none"
242+ nullable="1"
243+ allow-none="1">
244+ <doc xml:space="preserve"
245+ filename="gmodule-2.0.c"
246+ line="240">the name of the file containing the module, or %NULL
247+ to obtain a #GModule representing the main program itself</doc>
248+ <type name="utf8" c:type="const gchar*"/>
249+ </parameter>
250+ <parameter name="flags" transfer-ownership="none">
251+ <doc xml:space="preserve"
252+ filename="gmodule-2.0.c"
253+ line="242">the flags used for opening the module. This can be the
254+ logical OR of any of the #GModuleFlags</doc>
255+ <type name="ModuleFlags" c:type="GModuleFlags"/>
256+ </parameter>
257+ </parameters>
258+ </function>
259+ <function name="supported" c:identifier="g_module_supported">
260+ <doc xml:space="preserve"
261+ filename="gmodule-2.0.c"
262+ line="264">Checks if modules are supported on the current platform.</doc>
263+ <source-position filename="gmodule.h" line="91"/>
264+ <return-value transfer-ownership="none">
265+ <doc xml:space="preserve"
266+ filename="gmodule-2.0.c"
267+ line="269">%TRUE if modules are supported</doc>
268+ <type name="gboolean" c:type="gboolean"/>
269+ </return-value>
270+ </function>
271+ </record>
272+ <callback name="ModuleCheckInit" c:type="GModuleCheckInit">
273+ <doc xml:space="preserve"
274+ filename="gmodule-2.0.c"
275+ line="14">Specifies the type of the module initialization function.
276+If a module contains a function named g_module_check_init() it is called
277+automatically when the module is loaded. It is passed the #GModule structure
278+and should return %NULL on success or a string describing the initialization
279+error.</doc>
280+ <source-position filename="gmodule.h" line="66"/>
281+ <return-value transfer-ownership="none">
282+ <doc xml:space="preserve"
283+ filename="gmodule-2.0.c"
284+ line="24">%NULL on success, or a string describing the initialization error</doc>
285+ <type name="utf8" c:type="const gchar*"/>
286+ </return-value>
287+ <parameters>
288+ <parameter name="module" transfer-ownership="none">
289+ <doc xml:space="preserve"
290+ filename="gmodule-2.0.c"
291+ line="16">the #GModule corresponding to the module which has just been loaded</doc>
292+ <type name="Module" c:type="GModule*"/>
293+ </parameter>
294+ </parameters>
295+ </callback>
296+ <enumeration name="ModuleError"
297+ version="2.70"
298+ c:type="GModuleError"
299+ glib:error-domain="g-module-error-quark">
300+ <doc xml:space="preserve"
301+ filename="gmodule.h"
302+ line="73">Errors returned by g_module_open_full().</doc>
303+ <source-position filename="gmodule.h" line="86"/>
304+ <member name="failed" value="0" c:identifier="G_MODULE_ERROR_FAILED">
305+ <doc xml:space="preserve"
306+ filename="gmodule.h"
307+ line="75">there was an error loading or opening a module file</doc>
308+ </member>
309+ <member name="check_failed"
310+ value="1"
311+ c:identifier="G_MODULE_ERROR_CHECK_FAILED">
312+ <doc xml:space="preserve"
313+ filename="gmodule.h"
314+ line="76">a module returned an error from its `g_module_check_init()` function</doc>
315+ </member>
316+ </enumeration>
317+ <bitfield name="ModuleFlags" c:type="GModuleFlags">
318+ <doc xml:space="preserve"
319+ filename="gmodule.h"
320+ line="44">Flags passed to g_module_open().
321+Note that these flags are not supported on all platforms.</doc>
322+ <source-position filename="gmodule.h" line="63"/>
323+ <member name="lazy" value="1" c:identifier="G_MODULE_BIND_LAZY">
324+ <doc xml:space="preserve"
325+ filename="gmodule.h"
326+ line="46">specifies that symbols are only resolved when
327+ needed. The default action is to bind all symbols when the module
328+ is loaded.</doc>
329+ </member>
330+ <member name="local" value="2" c:identifier="G_MODULE_BIND_LOCAL">
331+ <doc xml:space="preserve"
332+ filename="gmodule.h"
333+ line="49">specifies that symbols in the module should
334+ not be added to the global name space. The default action on most
335+ platforms is to place symbols in the module in the global name space,
336+ which may cause conflicts with existing symbols.</doc>
337+ </member>
338+ <member name="mask" value="3" c:identifier="G_MODULE_BIND_MASK">
339+ <doc xml:space="preserve"
340+ filename="gmodule.h"
341+ line="53">mask for all flags.</doc>
342+ </member>
343+ </bitfield>
344+ <callback name="ModuleUnload" c:type="GModuleUnload">
345+ <doc xml:space="preserve"
346+ filename="gmodule-2.0.c"
347+ line="28">Specifies the type of the module function called when it is unloaded.
348+If a module contains a function named g_module_unload() it is called
349+automatically when the module is unloaded.
350+It is passed the #GModule structure.</doc>
351+ <source-position filename="gmodule.h" line="67"/>
352+ <return-value transfer-ownership="none">
353+ <type name="none" c:type="void"/>
354+ </return-value>
355+ <parameters>
356+ <parameter name="module" transfer-ownership="none">
357+ <doc xml:space="preserve"
358+ filename="gmodule-2.0.c"
359+ line="30">the #GModule about to be unloaded</doc>
360+ <type name="Module" c:type="GModule*"/>
361+ </parameter>
362+ </parameters>
363+ </callback>
364+ <function name="module_build_path"
365+ c:identifier="g_module_build_path"
366+ moved-to="Module.build_path">
367+ <doc xml:space="preserve"
368+ filename="gmodule-2.0.c"
369+ line="159">A portable way to build the filename of a module. The platform-specific
370+prefix and suffix are added to the filename, if needed, and the result
371+is added to the directory, using the correct separator character.
372+
373+The directory should specify the directory where the module can be found.
374+It can be %NULL or an empty string to indicate that the module is in a
375+standard platform-specific directory, though this is not recommended
376+since the wrong module may be found.
377+
378+For example, calling g_module_build_path() on a Linux system with a
379+@directory of `/lib` and a @module_name of "mylibrary" will return
380+`/lib/libmylibrary.so`. On a Windows system, using `\Windows` as the
381+directory it will return `\Windows\mylibrary.dll`.</doc>
382+ <source-position filename="gmodule.h" line="137"/>
383+ <return-value transfer-ownership="full">
384+ <doc xml:space="preserve"
385+ filename="gmodule-2.0.c"
386+ line="180">the complete path of the module, including the standard library
387+ prefix and suffix. This should be freed when no longer needed</doc>
388+ <type name="utf8" c:type="gchar*"/>
389+ </return-value>
390+ <parameters>
391+ <parameter name="directory"
392+ transfer-ownership="none"
393+ nullable="1"
394+ allow-none="1">
395+ <doc xml:space="preserve"
396+ filename="gmodule-2.0.c"
397+ line="161">the directory where the module is. This can be
398+ %NULL or the empty string to indicate that the standard platform-specific
399+ directories will be used, though that is not recommended</doc>
400+ <type name="utf8" c:type="const gchar*"/>
401+ </parameter>
402+ <parameter name="module_name" transfer-ownership="none">
403+ <doc xml:space="preserve"
404+ filename="gmodule-2.0.c"
405+ line="164">the name of the module</doc>
406+ <type name="utf8" c:type="const gchar*"/>
407+ </parameter>
408+ </parameters>
409+ </function>
410+ <function name="module_error"
411+ c:identifier="g_module_error"
412+ moved-to="Module.error">
413+ <doc xml:space="preserve"
414+ filename="gmodule-2.0.c"
415+ line="195">Gets a string describing the last module error.</doc>
416+ <source-position filename="gmodule.h" line="113"/>
417+ <return-value transfer-ownership="none">
418+ <doc xml:space="preserve"
419+ filename="gmodule-2.0.c"
420+ line="200">a string describing the last module error</doc>
421+ <type name="utf8" c:type="const gchar*"/>
422+ </return-value>
423+ </function>
424+ <function name="module_error_quark"
425+ c:identifier="g_module_error_quark"
426+ moved-to="Module.error_quark">
427+ <return-value transfer-ownership="none">
428+ <type name="GLib.Quark" c:type="GQuark"/>
429+ </return-value>
430+ </function>
431+ <function name="module_supported"
432+ c:identifier="g_module_supported"
433+ moved-to="Module.supported">
434+ <doc xml:space="preserve"
435+ filename="gmodule-2.0.c"
436+ line="264">Checks if modules are supported on the current platform.</doc>
437+ <source-position filename="gmodule.h" line="91"/>
438+ <return-value transfer-ownership="none">
439+ <doc xml:space="preserve"
440+ filename="gmodule-2.0.c"
441+ line="269">%TRUE if modules are supported</doc>
442+ <type name="gboolean" c:type="gboolean"/>
443+ </return-value>
444+ </function>
445+ <docsection name="modules">
446+ <doc xml:space="preserve"
447+ filename="gmodule-2.0.c"
448+ line="79">These functions provide a portable way to dynamically load object files
449+(commonly known as 'plug-ins'). The current implementation supports all
450+systems that provide an implementation of dlopen() (e.g. Linux/Sun), as
451+well as Windows platforms via DLLs.
452+
453+A program which wants to use these functions must be linked to the
454+libraries output by the command `pkg-config --libs gmodule-2.0`.
455+
456+To use them you must first determine whether dynamic loading
457+is supported on the platform by calling g_module_supported().
458+If it is, you can open a module with g_module_open(),
459+find the module's symbols (e.g. function names) with g_module_symbol(),
460+and later close the module with g_module_close().
461+g_module_name() will return the file name of a currently opened module.
462+
463+If any of the above functions fail, the error status can be found with
464+g_module_error().
465+
466+The #GModule implementation features reference counting for opened modules,
467+and supports hook functions within a module which are called when the
468+module is loaded and unloaded (see #GModuleCheckInit and #GModuleUnload).
469+
470+If your module introduces static data to common subsystems in the running
471+program, e.g. through calling
472+`g_quark_from_static_string ("my-module-stuff")`,
473+it must ensure that it is never unloaded, by calling g_module_make_resident().
474+
475+Example: Calling a function defined in a GModule
476+|[&lt;!-- language="C" --&gt;
477+// the function signature for 'say_hello'
478+typedef void (* SayHelloFunc) (const char *message);
479+
480+gboolean
481+just_say_hello (const char *filename, GError **error)
482+{
483+ SayHelloFunc say_hello;
484+ GModule *module;
485+
486+ module = g_module_open (filename, G_MODULE_BIND_LAZY);
487+ if (!module)
488+ {
489+ g_set_error (error, FOO_ERROR, FOO_ERROR_BLAH,
490+ "%s", g_module_error ());
491+ return FALSE;
492+ }
493+
494+ if (!g_module_symbol (module, "say_hello", (gpointer *)&amp;say_hello))
495+ {
496+ g_set_error (error, SAY_ERROR, SAY_ERROR_OPEN,
497+ "%s: %s", filename, g_module_error ());
498+ if (!g_module_close (module))
499+ g_warning ("%s: %s", filename, g_module_error ());
500+ return FALSE;
501+ }
502+
503+ if (say_hello == NULL)
504+ {
505+ g_set_error (error, SAY_ERROR, SAY_ERROR_OPEN,
506+ "symbol say_hello is NULL");
507+ if (!g_module_close (module))
508+ g_warning ("%s: %s", filename, g_module_error ());
509+ return FALSE;
510+ }
511+
512+ // call our function in the module
513+ say_hello ("Hello world!");
514+
515+ if (!g_module_close (module))
516+ g_warning ("%s: %s", filename, g_module_error ());
517+ return TRUE;
518+ }
519+]|</doc>
520+ </docsection>
521+ </namespace>
522+</repository>
A internal/gir/spec/GObject-2.0.gir +27133 -0 large diff (27133 lines changed): collapsed
A internal/gir/spec/Gdk-4.0.gir +31079 -0 large diff (31079 lines changed): collapsed
A internal/gir/spec/GdkPixbuf-2.0.gir +7353 -0 large diff (7353 lines changed): collapsed
A internal/gir/spec/Gio-2.0.gir +134893 -0 large diff (134893 lines changed): collapsed
A internal/gir/spec/Graphene-1.0.gir +13375 -0
@@ -0,0 +1,13375 @@
1+<?xml version="1.0"?>
2+<!-- This file was automatically generated from C sources - DO NOT EDIT!
3+To affect the contents of this file, edit the original C definitions,
4+and/or use gtk-doc annotations. -->
5+<repository version="1.2"
6+ xmlns="http://www.gtk.org/introspection/core/1.0"
7+ xmlns:c="http://www.gtk.org/introspection/c/1.0"
8+ xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
9+ <include name="GObject" version="2.0"/>
10+ <package name="graphene-gobject-1.0"/>
11+ <c:include name="graphene-gobject.h"/>
12+ <namespace name="Graphene"
13+ version="1.0"
14+ shared-library="libgraphene-1.0.so.0"
15+ c:identifier-prefixes="Graphene"
16+ c:symbol-prefixes="graphene">
17+ <function-macro name="ALIGNED_DECL"
18+ c:identifier="GRAPHENE_ALIGNED_DECL"
19+ introspectable="0">
20+ <source-position filename="include/graphene-macros.h" line="44"/>
21+ <parameters>
22+ <parameter name="x">
23+ </parameter>
24+ <parameter name="val">
25+ </parameter>
26+ </parameters>
27+ </function-macro>
28+ <record name="Box"
29+ c:type="graphene_box_t"
30+ version="1.2"
31+ glib:type-name="GrapheneBox"
32+ glib:get-type="graphene_box_get_type"
33+ c:symbol-prefix="box">
34+ <doc xml:space="preserve"
35+ filename="include/graphene-box.h"
36+ line="37">A 3D box, described as the volume between a minimum and
37+a maximum vertices.</doc>
38+ <source-position filename="include/graphene-box.h" line="50"/>
39+ <field name="min" readable="0" private="1">
40+ <type name="Vec3" c:type="graphene_vec3_t"/>
41+ </field>
42+ <field name="max" readable="0" private="1">
43+ <type name="Vec3" c:type="graphene_vec3_t"/>
44+ </field>
45+ <constructor name="alloc"
46+ c:identifier="graphene_box_alloc"
47+ version="1.2">
48+ <doc xml:space="preserve"
49+ filename="src/graphene-box.c"
50+ line="53">Allocates a new #graphene_box_t.
51+
52+The contents of the returned structure are undefined.</doc>
53+ <source-position filename="include/graphene-box.h" line="53"/>
54+ <return-value transfer-ownership="full">
55+ <doc xml:space="preserve"
56+ filename="src/graphene-box.c"
57+ line="60">the newly allocated #graphene_box_t structure.
58+ Use graphene_box_free() to free the resources allocated by this function</doc>
59+ <type name="Box" c:type="graphene_box_t*"/>
60+ </return-value>
61+ </constructor>
62+ <method name="contains_box"
63+ c:identifier="graphene_box_contains_box"
64+ version="1.2">
65+ <doc xml:space="preserve"
66+ filename="src/graphene-box.c"
67+ line="624">Checks whether the #graphene_box_t @a contains the given
68+#graphene_box_t @b.</doc>
69+ <source-position filename="include/graphene-box.h" line="127"/>
70+ <return-value transfer-ownership="none">
71+ <doc xml:space="preserve"
72+ filename="src/graphene-box.c"
73+ line="632">`true` if the box is contained in the given box</doc>
74+ <type name="gboolean" c:type="_Bool"/>
75+ </return-value>
76+ <parameters>
77+ <instance-parameter name="a" transfer-ownership="none">
78+ <doc xml:space="preserve"
79+ filename="src/graphene-box.c"
80+ line="626">a #graphene_box_t</doc>
81+ <type name="Box" c:type="const graphene_box_t*"/>
82+ </instance-parameter>
83+ <parameter name="b" transfer-ownership="none">
84+ <doc xml:space="preserve"
85+ filename="src/graphene-box.c"
86+ line="627">a #graphene_box_t</doc>
87+ <type name="Box" c:type="const graphene_box_t*"/>
88+ </parameter>
89+ </parameters>
90+ </method>
91+ <method name="contains_point"
92+ c:identifier="graphene_box_contains_point"
93+ version="1.2">
94+ <doc xml:space="preserve"
95+ filename="src/graphene-box.c"
96+ line="594">Checks whether @box contains the given @point.</doc>
97+ <source-position filename="include/graphene-box.h" line="124"/>
98+ <return-value transfer-ownership="none">
99+ <doc xml:space="preserve"
100+ filename="src/graphene-box.c"
101+ line="601">`true` if the point is contained in the given box</doc>
102+ <type name="gboolean" c:type="_Bool"/>
103+ </return-value>
104+ <parameters>
105+ <instance-parameter name="box" transfer-ownership="none">
106+ <doc xml:space="preserve"
107+ filename="src/graphene-box.c"
108+ line="596">a #graphene_box_t</doc>
109+ <type name="Box" c:type="const graphene_box_t*"/>
110+ </instance-parameter>
111+ <parameter name="point" transfer-ownership="none">
112+ <doc xml:space="preserve"
113+ filename="src/graphene-box.c"
114+ line="597">the coordinates to check</doc>
115+ <type name="Point3D" c:type="const graphene_point3d_t*"/>
116+ </parameter>
117+ </parameters>
118+ </method>
119+ <method name="equal" c:identifier="graphene_box_equal" version="1.2">
120+ <doc xml:space="preserve"
121+ filename="src/graphene-box.c"
122+ line="675">Checks whether the two given boxes are equal.</doc>
123+ <source-position filename="include/graphene-box.h" line="131"/>
124+ <return-value transfer-ownership="none">
125+ <doc xml:space="preserve"
126+ filename="src/graphene-box.c"
127+ line="682">`true` if the boxes are equal</doc>
128+ <type name="gboolean" c:type="_Bool"/>
129+ </return-value>
130+ <parameters>
131+ <instance-parameter name="a" transfer-ownership="none">
132+ <doc xml:space="preserve"
133+ filename="src/graphene-box.c"
134+ line="677">a #graphene_box_t</doc>
135+ <type name="Box" c:type="const graphene_box_t*"/>
136+ </instance-parameter>
137+ <parameter name="b" transfer-ownership="none">
138+ <doc xml:space="preserve"
139+ filename="src/graphene-box.c"
140+ line="678">a #graphene_box_t</doc>
141+ <type name="Box" c:type="const graphene_box_t*"/>
142+ </parameter>
143+ </parameters>
144+ </method>
145+ <method name="expand" c:identifier="graphene_box_expand" version="1.2">
146+ <doc xml:space="preserve"
147+ filename="src/graphene-box.c"
148+ line="270">Expands the dimensions of @box to include the coordinates at @point.</doc>
149+ <source-position filename="include/graphene-box.h" line="78"/>
150+ <return-value transfer-ownership="none">
151+ <type name="none" c:type="void"/>
152+ </return-value>
153+ <parameters>
154+ <instance-parameter name="box" transfer-ownership="none">
155+ <doc xml:space="preserve"
156+ filename="src/graphene-box.c"
157+ line="272">a #graphene_box_t</doc>
158+ <type name="Box" c:type="const graphene_box_t*"/>
159+ </instance-parameter>
160+ <parameter name="point" transfer-ownership="none">
161+ <doc xml:space="preserve"
162+ filename="src/graphene-box.c"
163+ line="273">the coordinates of the point to include</doc>
164+ <type name="Point3D" c:type="const graphene_point3d_t*"/>
165+ </parameter>
166+ <parameter name="res"
167+ direction="out"
168+ caller-allocates="1"
169+ transfer-ownership="none">
170+ <doc xml:space="preserve"
171+ filename="src/graphene-box.c"
172+ line="274">return location for the expanded box</doc>
173+ <type name="Box" c:type="graphene_box_t*"/>
174+ </parameter>
175+ </parameters>
176+ </method>
177+ <method name="expand_scalar"
178+ c:identifier="graphene_box_expand_scalar"
179+ version="1.2">
180+ <doc xml:space="preserve"
181+ filename="src/graphene-box.c"
182+ line="290">Expands the dimensions of @box by the given @scalar value.
183+
184+If @scalar is positive, the #graphene_box_t will grow; if @scalar is
185+negative, the #graphene_box_t will shrink.</doc>
186+ <source-position filename="include/graphene-box.h" line="86"/>
187+ <return-value transfer-ownership="none">
188+ <type name="none" c:type="void"/>
189+ </return-value>
190+ <parameters>
191+ <instance-parameter name="box" transfer-ownership="none">
192+ <doc xml:space="preserve"
193+ filename="src/graphene-box.c"
194+ line="292">a #graphene_box_t</doc>
195+ <type name="Box" c:type="const graphene_box_t*"/>
196+ </instance-parameter>
197+ <parameter name="scalar" transfer-ownership="none">
198+ <doc xml:space="preserve"
199+ filename="src/graphene-box.c"
200+ line="293">a scalar value</doc>
201+ <type name="gfloat" c:type="float"/>
202+ </parameter>
203+ <parameter name="res"
204+ direction="out"
205+ caller-allocates="1"
206+ transfer-ownership="none">
207+ <doc xml:space="preserve"
208+ filename="src/graphene-box.c"
209+ line="294">return location for the expanded box</doc>
210+ <type name="Box" c:type="graphene_box_t*"/>
211+ </parameter>
212+ </parameters>
213+ </method>
214+ <method name="expand_vec3"
215+ c:identifier="graphene_box_expand_vec3"
216+ version="1.2">
217+ <doc xml:space="preserve"
218+ filename="src/graphene-box.c"
219+ line="251">Expands the dimensions of @box to include the coordinates of the
220+given vector.</doc>
221+ <source-position filename="include/graphene-box.h" line="82"/>
222+ <return-value transfer-ownership="none">
223+ <type name="none" c:type="void"/>
224+ </return-value>
225+ <parameters>
226+ <instance-parameter name="box" transfer-ownership="none">
227+ <doc xml:space="preserve"
228+ filename="src/graphene-box.c"
229+ line="253">a #graphene_box_t</doc>
230+ <type name="Box" c:type="const graphene_box_t*"/>
231+ </instance-parameter>
232+ <parameter name="vec" transfer-ownership="none">
233+ <doc xml:space="preserve"
234+ filename="src/graphene-box.c"
235+ line="254">the coordinates of the point to include, as a #graphene_vec3_t</doc>
236+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
237+ </parameter>
238+ <parameter name="res"
239+ direction="out"
240+ caller-allocates="1"
241+ transfer-ownership="none">
242+ <doc xml:space="preserve"
243+ filename="src/graphene-box.c"
244+ line="255">return location for the expanded box</doc>
245+ <type name="Box" c:type="graphene_box_t*"/>
246+ </parameter>
247+ </parameters>
248+ </method>
249+ <method name="free" c:identifier="graphene_box_free" version="1.2">
250+ <doc xml:space="preserve"
251+ filename="src/graphene-box.c"
252+ line="71">Frees the resources allocated by graphene_box_alloc().</doc>
253+ <source-position filename="include/graphene-box.h" line="55"/>
254+ <return-value transfer-ownership="none">
255+ <type name="none" c:type="void"/>
256+ </return-value>
257+ <parameters>
258+ <instance-parameter name="box" transfer-ownership="none">
259+ <doc xml:space="preserve"
260+ filename="src/graphene-box.c"
261+ line="73">a #graphene_box_t</doc>
262+ <type name="Box" c:type="graphene_box_t*"/>
263+ </instance-parameter>
264+ </parameters>
265+ </method>
266+ <method name="get_bounding_sphere"
267+ c:identifier="graphene_box_get_bounding_sphere"
268+ version="1.2">
269+ <doc xml:space="preserve"
270+ filename="src/graphene-box.c"
271+ line="693">Computes the bounding #graphene_sphere_t capable of containing the given
272+#graphene_box_t.</doc>
273+ <source-position filename="include/graphene-box.h" line="120"/>
274+ <return-value transfer-ownership="none">
275+ <type name="none" c:type="void"/>
276+ </return-value>
277+ <parameters>
278+ <instance-parameter name="box" transfer-ownership="none">
279+ <doc xml:space="preserve"
280+ filename="src/graphene-box.c"
281+ line="695">a #graphene_box_t</doc>
282+ <type name="Box" c:type="const graphene_box_t*"/>
283+ </instance-parameter>
284+ <parameter name="sphere"
285+ direction="out"
286+ caller-allocates="1"
287+ transfer-ownership="none">
288+ <doc xml:space="preserve"
289+ filename="src/graphene-box.c"
290+ line="696">return location for the bounding sphere</doc>
291+ <type name="Sphere" c:type="graphene_sphere_t*"/>
292+ </parameter>
293+ </parameters>
294+ </method>
295+ <method name="get_center"
296+ c:identifier="graphene_box_get_center"
297+ version="1.2">
298+ <doc xml:space="preserve"
299+ filename="src/graphene-box.c"
300+ line="503">Retrieves the coordinates of the center of a #graphene_box_t.</doc>
301+ <source-position filename="include/graphene-box.h" line="108"/>
302+ <return-value transfer-ownership="none">
303+ <type name="none" c:type="void"/>
304+ </return-value>
305+ <parameters>
306+ <instance-parameter name="box" transfer-ownership="none">
307+ <doc xml:space="preserve"
308+ filename="src/graphene-box.c"
309+ line="505">a #graphene_box_t</doc>
310+ <type name="Box" c:type="const graphene_box_t*"/>
311+ </instance-parameter>
312+ <parameter name="center"
313+ direction="out"
314+ caller-allocates="1"
315+ transfer-ownership="none">
316+ <doc xml:space="preserve"
317+ filename="src/graphene-box.c"
318+ line="506">return location for the coordinates of
319+ the center</doc>
320+ <type name="Point3D" c:type="graphene_point3d_t*"/>
321+ </parameter>
322+ </parameters>
323+ </method>
324+ <method name="get_depth"
325+ c:identifier="graphene_box_get_depth"
326+ version="1.2">
327+ <doc xml:space="preserve"
328+ filename="src/graphene-box.c"
329+ line="409">Retrieves the size of the @box on the Z axis.</doc>
330+ <source-position filename="include/graphene-box.h" line="103"/>
331+ <return-value transfer-ownership="none">
332+ <doc xml:space="preserve"
333+ filename="src/graphene-box.c"
334+ line="415">the depth of the box</doc>
335+ <type name="gfloat" c:type="float"/>
336+ </return-value>
337+ <parameters>
338+ <instance-parameter name="box" transfer-ownership="none">
339+ <doc xml:space="preserve"
340+ filename="src/graphene-box.c"
341+ line="411">a #graphene_box_t</doc>
342+ <type name="Box" c:type="const graphene_box_t*"/>
343+ </instance-parameter>
344+ </parameters>
345+ </method>
346+ <method name="get_height"
347+ c:identifier="graphene_box_get_height"
348+ version="1.2">
349+ <doc xml:space="preserve"
350+ filename="src/graphene-box.c"
351+ line="391">Retrieves the size of the @box on the Y axis.</doc>
352+ <source-position filename="include/graphene-box.h" line="101"/>
353+ <return-value transfer-ownership="none">
354+ <doc xml:space="preserve"
355+ filename="src/graphene-box.c"
356+ line="397">the height of the box</doc>
357+ <type name="gfloat" c:type="float"/>
358+ </return-value>
359+ <parameters>
360+ <instance-parameter name="box" transfer-ownership="none">
361+ <doc xml:space="preserve"
362+ filename="src/graphene-box.c"
363+ line="393">a #graphene_box_t</doc>
364+ <type name="Box" c:type="const graphene_box_t*"/>
365+ </instance-parameter>
366+ </parameters>
367+ </method>
368+ <method name="get_max" c:identifier="graphene_box_get_max" version="1.2">
369+ <doc xml:space="preserve"
370+ filename="src/graphene-box.c"
371+ line="548">Retrieves the coordinates of the maximum point of the given
372+#graphene_box_t.</doc>
373+ <source-position filename="include/graphene-box.h" line="114"/>
374+ <return-value transfer-ownership="none">
375+ <type name="none" c:type="void"/>
376+ </return-value>
377+ <parameters>
378+ <instance-parameter name="box" transfer-ownership="none">
379+ <doc xml:space="preserve"
380+ filename="src/graphene-box.c"
381+ line="550">a #graphene_box_t</doc>
382+ <type name="Box" c:type="const graphene_box_t*"/>
383+ </instance-parameter>
384+ <parameter name="max"
385+ direction="out"
386+ caller-allocates="1"
387+ transfer-ownership="none">
388+ <doc xml:space="preserve"
389+ filename="src/graphene-box.c"
390+ line="551">return location for the maximum point</doc>
391+ <type name="Point3D" c:type="graphene_point3d_t*"/>
392+ </parameter>
393+ </parameters>
394+ </method>
395+ <method name="get_min" c:identifier="graphene_box_get_min" version="1.2">
396+ <doc xml:space="preserve"
397+ filename="src/graphene-box.c"
398+ line="531">Retrieves the coordinates of the minimum point of the given
399+#graphene_box_t.</doc>
400+ <source-position filename="include/graphene-box.h" line="111"/>
401+ <return-value transfer-ownership="none">
402+ <type name="none" c:type="void"/>
403+ </return-value>
404+ <parameters>
405+ <instance-parameter name="box" transfer-ownership="none">
406+ <doc xml:space="preserve"
407+ filename="src/graphene-box.c"
408+ line="533">a #graphene_box_t</doc>
409+ <type name="Box" c:type="const graphene_box_t*"/>
410+ </instance-parameter>
411+ <parameter name="min"
412+ direction="out"
413+ caller-allocates="1"
414+ transfer-ownership="none">
415+ <doc xml:space="preserve"
416+ filename="src/graphene-box.c"
417+ line="534">return location for the minimum point</doc>
418+ <type name="Point3D" c:type="graphene_point3d_t*"/>
419+ </parameter>
420+ </parameters>
421+ </method>
422+ <method name="get_size"
423+ c:identifier="graphene_box_get_size"
424+ version="1.2">
425+ <doc xml:space="preserve"
426+ filename="src/graphene-box.c"
427+ line="481">Retrieves the size of the box on all three axes, and stores
428+it into the given @size vector.</doc>
429+ <source-position filename="include/graphene-box.h" line="105"/>
430+ <return-value transfer-ownership="none">
431+ <type name="none" c:type="void"/>
432+ </return-value>
433+ <parameters>
434+ <instance-parameter name="box" transfer-ownership="none">
435+ <doc xml:space="preserve"
436+ filename="src/graphene-box.c"
437+ line="483">a #graphene_box_t</doc>
438+ <type name="Box" c:type="const graphene_box_t*"/>
439+ </instance-parameter>
440+ <parameter name="size"
441+ direction="out"
442+ caller-allocates="1"
443+ transfer-ownership="none">
444+ <doc xml:space="preserve"
445+ filename="src/graphene-box.c"
446+ line="484">return location for the size</doc>
447+ <type name="Vec3" c:type="graphene_vec3_t*"/>
448+ </parameter>
449+ </parameters>
450+ </method>
451+ <method name="get_vertices"
452+ c:identifier="graphene_box_get_vertices"
453+ version="1.2">
454+ <doc xml:space="preserve"
455+ filename="src/graphene-box.c"
456+ line="565">Computes the vertices of the given #graphene_box_t.</doc>
457+ <source-position filename="include/graphene-box.h" line="117"/>
458+ <return-value transfer-ownership="none">
459+ <type name="none" c:type="void"/>
460+ </return-value>
461+ <parameters>
462+ <instance-parameter name="box" transfer-ownership="none">
463+ <doc xml:space="preserve"
464+ filename="src/graphene-box.c"
465+ line="567">a #graphene_box_t</doc>
466+ <type name="Box" c:type="const graphene_box_t*"/>
467+ </instance-parameter>
468+ <parameter name="vertices"
469+ direction="out"
470+ caller-allocates="1"
471+ transfer-ownership="none">
472+ <doc xml:space="preserve"
473+ filename="src/graphene-box.c"
474+ line="568">return location for an array
475+ of 8 #graphene_vec3_t</doc>
476+ <array zero-terminated="0"
477+ c:type="graphene_vec3_t*"
478+ fixed-size="8">
479+ <type name="Vec3" c:type="graphene_vec3_t"/>
480+ </array>
481+ </parameter>
482+ </parameters>
483+ </method>
484+ <method name="get_width"
485+ c:identifier="graphene_box_get_width"
486+ version="1.2">
487+ <doc xml:space="preserve"
488+ filename="src/graphene-box.c"
489+ line="373">Retrieves the size of the @box on the X axis.</doc>
490+ <source-position filename="include/graphene-box.h" line="99"/>
491+ <return-value transfer-ownership="none">
492+ <doc xml:space="preserve"
493+ filename="src/graphene-box.c"
494+ line="379">the width of the box</doc>
495+ <type name="gfloat" c:type="float"/>
496+ </return-value>
497+ <parameters>
498+ <instance-parameter name="box" transfer-ownership="none">
499+ <doc xml:space="preserve"
500+ filename="src/graphene-box.c"
501+ line="375">a #graphene_box_t</doc>
502+ <type name="Box" c:type="const graphene_box_t*"/>
503+ </instance-parameter>
504+ </parameters>
505+ </method>
506+ <method name="init" c:identifier="graphene_box_init" version="1.2">
507+ <doc xml:space="preserve"
508+ filename="src/graphene-box.c"
509+ line="85">Initializes the given #graphene_box_t with two vertices.</doc>
510+ <source-position filename="include/graphene-box.h" line="58"/>
511+ <return-value transfer-ownership="none">
512+ <doc xml:space="preserve"
513+ filename="src/graphene-box.c"
514+ line="93">the initialized #graphene_box_t</doc>
515+ <type name="Box" c:type="graphene_box_t*"/>
516+ </return-value>
517+ <parameters>
518+ <instance-parameter name="box" transfer-ownership="none">
519+ <doc xml:space="preserve"
520+ filename="src/graphene-box.c"
521+ line="87">the #graphene_box_t to initialize</doc>
522+ <type name="Box" c:type="graphene_box_t*"/>
523+ </instance-parameter>
524+ <parameter name="min"
525+ transfer-ownership="none"
526+ nullable="1"
527+ allow-none="1">
528+ <doc xml:space="preserve"
529+ filename="src/graphene-box.c"
530+ line="88">the coordinates of the minimum vertex</doc>
531+ <type name="Point3D" c:type="const graphene_point3d_t*"/>
532+ </parameter>
533+ <parameter name="max"
534+ transfer-ownership="none"
535+ nullable="1"
536+ allow-none="1">
537+ <doc xml:space="preserve"
538+ filename="src/graphene-box.c"
539+ line="89">the coordinates of the maximum vertex</doc>
540+ <type name="Point3D" c:type="const graphene_point3d_t*"/>
541+ </parameter>
542+ </parameters>
543+ </method>
544+ <method name="init_from_box"
545+ c:identifier="graphene_box_init_from_box"
546+ version="1.2">
547+ <doc xml:space="preserve"
548+ filename="src/graphene-box.c"
549+ line="178">Initializes the given #graphene_box_t with the vertices of
550+another #graphene_box_t.</doc>
551+ <source-position filename="include/graphene-box.h" line="70"/>
552+ <return-value transfer-ownership="none">
553+ <doc xml:space="preserve"
554+ filename="src/graphene-box.c"
555+ line="186">the initialized #graphene_box_t</doc>
556+ <type name="Box" c:type="graphene_box_t*"/>
557+ </return-value>
558+ <parameters>
559+ <instance-parameter name="box" transfer-ownership="none">
560+ <doc xml:space="preserve"
561+ filename="src/graphene-box.c"
562+ line="180">the #graphene_box_t to initialize</doc>
563+ <type name="Box" c:type="graphene_box_t*"/>
564+ </instance-parameter>
565+ <parameter name="src" transfer-ownership="none">
566+ <doc xml:space="preserve"
567+ filename="src/graphene-box.c"
568+ line="181">a #graphene_box_t</doc>
569+ <type name="Box" c:type="const graphene_box_t*"/>
570+ </parameter>
571+ </parameters>
572+ </method>
573+ <method name="init_from_points"
574+ c:identifier="graphene_box_init_from_points"
575+ version="1.2">
576+ <doc xml:space="preserve"
577+ filename="src/graphene-box.c"
578+ line="115">Initializes the given #graphene_box_t with the given array
579+of vertices.
580+
581+If @n_points is 0, the returned box is initialized with
582+graphene_box_empty().</doc>
583+ <source-position filename="include/graphene-box.h" line="62"/>
584+ <return-value transfer-ownership="none">
585+ <doc xml:space="preserve"
586+ filename="src/graphene-box.c"
587+ line="127">the initialized #graphene_box_t</doc>
588+ <type name="Box" c:type="graphene_box_t*"/>
589+ </return-value>
590+ <parameters>
591+ <instance-parameter name="box" transfer-ownership="none">
592+ <doc xml:space="preserve"
593+ filename="src/graphene-box.c"
594+ line="117">the #graphene_box_t to initialize</doc>
595+ <type name="Box" c:type="graphene_box_t*"/>
596+ </instance-parameter>
597+ <parameter name="n_points" transfer-ownership="none">
598+ <doc xml:space="preserve"
599+ filename="src/graphene-box.c"
600+ line="118">the number #graphene_point3d_t in the @points array</doc>
601+ <type name="guint" c:type="unsigned int"/>
602+ </parameter>
603+ <parameter name="points" transfer-ownership="none">
604+ <doc xml:space="preserve"
605+ filename="src/graphene-box.c"
606+ line="119">an array of #graphene_point3d_t</doc>
607+ <array length="0"
608+ zero-terminated="0"
609+ c:type="const graphene_point3d_t*">
610+ <type name="Point3D" c:type="graphene_point3d_t"/>
611+ </array>
612+ </parameter>
613+ </parameters>
614+ </method>
615+ <method name="init_from_vec3"
616+ c:identifier="graphene_box_init_from_vec3"
617+ version="1.2">
618+ <doc xml:space="preserve"
619+ filename="src/graphene-box.c"
620+ line="200">Initializes the given #graphene_box_t with two vertices
621+stored inside #graphene_vec3_t.</doc>
622+ <source-position filename="include/graphene-box.h" line="73"/>
623+ <return-value transfer-ownership="none">
624+ <doc xml:space="preserve"
625+ filename="src/graphene-box.c"
626+ line="209">the initialized #graphene_box_t</doc>
627+ <type name="Box" c:type="graphene_box_t*"/>
628+ </return-value>
629+ <parameters>
630+ <instance-parameter name="box" transfer-ownership="none">
631+ <doc xml:space="preserve"
632+ filename="src/graphene-box.c"
633+ line="202">the #graphene_box_t to initialize</doc>
634+ <type name="Box" c:type="graphene_box_t*"/>
635+ </instance-parameter>
636+ <parameter name="min"
637+ transfer-ownership="none"
638+ nullable="1"
639+ allow-none="1">
640+ <doc xml:space="preserve"
641+ filename="src/graphene-box.c"
642+ line="203">the coordinates of the minimum vertex</doc>
643+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
644+ </parameter>
645+ <parameter name="max"
646+ transfer-ownership="none"
647+ nullable="1"
648+ allow-none="1">
649+ <doc xml:space="preserve"
650+ filename="src/graphene-box.c"
651+ line="204">the coordinates of the maximum vertex</doc>
652+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
653+ </parameter>
654+ </parameters>
655+ </method>
656+ <method name="init_from_vectors"
657+ c:identifier="graphene_box_init_from_vectors"
658+ version="1.2">
659+ <doc xml:space="preserve"
660+ filename="src/graphene-box.c"
661+ line="149">Initializes the given #graphene_box_t with the given array
662+of vertices.
663+
664+If @n_vectors is 0, the returned box is initialized with
665+graphene_box_empty().</doc>
666+ <source-position filename="include/graphene-box.h" line="66"/>
667+ <return-value transfer-ownership="none">
668+ <doc xml:space="preserve"
669+ filename="src/graphene-box.c"
670+ line="161">the initialized #graphene_box_t</doc>
671+ <type name="Box" c:type="graphene_box_t*"/>
672+ </return-value>
673+ <parameters>
674+ <instance-parameter name="box" transfer-ownership="none">
675+ <doc xml:space="preserve"
676+ filename="src/graphene-box.c"
677+ line="151">the #graphene_box_t to initialize</doc>
678+ <type name="Box" c:type="graphene_box_t*"/>
679+ </instance-parameter>
680+ <parameter name="n_vectors" transfer-ownership="none">
681+ <doc xml:space="preserve"
682+ filename="src/graphene-box.c"
683+ line="152">the number #graphene_point3d_t in the @vectors array</doc>
684+ <type name="guint" c:type="unsigned int"/>
685+ </parameter>
686+ <parameter name="vectors" transfer-ownership="none">
687+ <doc xml:space="preserve"
688+ filename="src/graphene-box.c"
689+ line="153">an array of #graphene_vec3_t</doc>
690+ <array length="0"
691+ zero-terminated="0"
692+ c:type="const graphene_vec3_t*">
693+ <type name="Vec3" c:type="graphene_vec3_t"/>
694+ </array>
695+ </parameter>
696+ </parameters>
697+ </method>
698+ <method name="intersection"
699+ c:identifier="graphene_box_intersection"
700+ version="1.2">
701+ <doc xml:space="preserve"
702+ filename="src/graphene-box.c"
703+ line="334">Intersects the two given #graphene_box_t.
704+
705+If the two boxes do not intersect, @res will contain a degenerate box
706+initialized with graphene_box_empty().</doc>
707+ <source-position filename="include/graphene-box.h" line="94"/>
708+ <return-value transfer-ownership="none">
709+ <doc xml:space="preserve"
710+ filename="src/graphene-box.c"
711+ line="345">true if the two boxes intersect</doc>
712+ <type name="gboolean" c:type="_Bool"/>
713+ </return-value>
714+ <parameters>
715+ <instance-parameter name="a" transfer-ownership="none">
716+ <doc xml:space="preserve"
717+ filename="src/graphene-box.c"
718+ line="336">a #graphene_box_t</doc>
719+ <type name="Box" c:type="const graphene_box_t*"/>
720+ </instance-parameter>
721+ <parameter name="b" transfer-ownership="none">
722+ <doc xml:space="preserve"
723+ filename="src/graphene-box.c"
724+ line="337">a #graphene_box_t</doc>
725+ <type name="Box" c:type="const graphene_box_t*"/>
726+ </parameter>
727+ <parameter name="res"
728+ direction="out"
729+ caller-allocates="1"
730+ transfer-ownership="none"
731+ optional="1"
732+ allow-none="1">
733+ <doc xml:space="preserve"
734+ filename="src/graphene-box.c"
735+ line="338">return location for the result</doc>
736+ <type name="Box" c:type="graphene_box_t*"/>
737+ </parameter>
738+ </parameters>
739+ </method>
740+ <method name="union" c:identifier="graphene_box_union" version="1.2">
741+ <doc xml:space="preserve"
742+ filename="src/graphene-box.c"
743+ line="315">Unions the two given #graphene_box_t.</doc>
744+ <source-position filename="include/graphene-box.h" line="90"/>
745+ <return-value transfer-ownership="none">
746+ <type name="none" c:type="void"/>
747+ </return-value>
748+ <parameters>
749+ <instance-parameter name="a" transfer-ownership="none">
750+ <doc xml:space="preserve"
751+ filename="src/graphene-box.c"
752+ line="317">a #graphene_box_t</doc>
753+ <type name="Box" c:type="const graphene_box_t*"/>
754+ </instance-parameter>
755+ <parameter name="b" transfer-ownership="none">
756+ <doc xml:space="preserve"
757+ filename="src/graphene-box.c"
758+ line="318">the box to union to @a</doc>
759+ <type name="Box" c:type="const graphene_box_t*"/>
760+ </parameter>
761+ <parameter name="res"
762+ direction="out"
763+ caller-allocates="1"
764+ transfer-ownership="none">
765+ <doc xml:space="preserve"
766+ filename="src/graphene-box.c"
767+ line="319">return location for the result</doc>
768+ <type name="Box" c:type="graphene_box_t*"/>
769+ </parameter>
770+ </parameters>
771+ </method>
772+ <function name="empty" c:identifier="graphene_box_empty" version="1.2">
773+ <doc xml:space="preserve"
774+ filename="src/graphene-box.c"
775+ line="908">A degenerate #graphene_box_t that can only be expanded.
776+
777+The returned value is owned by Graphene and should not be modified or freed.</doc>
778+ <source-position filename="include/graphene-box.h" line="145"/>
779+ <return-value transfer-ownership="none">
780+ <doc xml:space="preserve"
781+ filename="src/graphene-box.c"
782+ line="915">a #graphene_box_t</doc>
783+ <type name="Box" c:type="const graphene_box_t*"/>
784+ </return-value>
785+ </function>
786+ <function name="infinite"
787+ c:identifier="graphene_box_infinite"
788+ version="1.2">
789+ <doc xml:space="preserve"
790+ filename="src/graphene-box.c"
791+ line="889">A degenerate #graphene_box_t that cannot be expanded.
792+
793+The returned value is owned by Graphene and should not be modified or freed.</doc>
794+ <source-position filename="include/graphene-box.h" line="143"/>
795+ <return-value transfer-ownership="none">
796+ <doc xml:space="preserve"
797+ filename="src/graphene-box.c"
798+ line="896">a #graphene_box_t</doc>
799+ <type name="Box" c:type="const graphene_box_t*"/>
800+ </return-value>
801+ </function>
802+ <function name="minus_one"
803+ c:identifier="graphene_box_minus_one"
804+ version="1.2">
805+ <doc xml:space="preserve"
806+ filename="src/graphene-box.c"
807+ line="849">A #graphene_box_t with the minimum vertex set at (-1, -1, -1) and the
808+maximum vertex set at (0, 0, 0).
809+
810+The returned value is owned by Graphene and should not be modified or freed.</doc>
811+ <source-position filename="include/graphene-box.h" line="139"/>
812+ <return-value transfer-ownership="none">
813+ <doc xml:space="preserve"
814+ filename="src/graphene-box.c"
815+ line="857">a #graphene_box_t</doc>
816+ <type name="Box" c:type="const graphene_box_t*"/>
817+ </return-value>
818+ </function>
819+ <function name="one" c:identifier="graphene_box_one" version="1.2">
820+ <doc xml:space="preserve"
821+ filename="src/graphene-box.c"
822+ line="829">A #graphene_box_t with the minimum vertex set at (0, 0, 0) and the
823+maximum vertex set at (1, 1, 1).
824+
825+The returned value is owned by Graphene and should not be modified or freed.</doc>
826+ <source-position filename="include/graphene-box.h" line="137"/>
827+ <return-value transfer-ownership="none">
828+ <doc xml:space="preserve"
829+ filename="src/graphene-box.c"
830+ line="837">a #graphene_box_t</doc>
831+ <type name="Box" c:type="const graphene_box_t*"/>
832+ </return-value>
833+ </function>
834+ <function name="one_minus_one"
835+ c:identifier="graphene_box_one_minus_one"
836+ version="1.2">
837+ <doc xml:space="preserve"
838+ filename="src/graphene-box.c"
839+ line="869">A #graphene_box_t with the minimum vertex set at (-1, -1, -1) and the
840+maximum vertex set at (1, 1, 1).
841+
842+The returned value is owned by Graphene and should not be modified or freed.</doc>
843+ <source-position filename="include/graphene-box.h" line="141"/>
844+ <return-value transfer-ownership="none">
845+ <doc xml:space="preserve"
846+ filename="src/graphene-box.c"
847+ line="877">a #graphene_box_t</doc>
848+ <type name="Box" c:type="const graphene_box_t*"/>
849+ </return-value>
850+ </function>
851+ <function name="zero" c:identifier="graphene_box_zero" version="1.2">
852+ <doc xml:space="preserve"
853+ filename="src/graphene-box.c"
854+ line="810">A #graphene_box_t with both the minimum and maximum vertices set at (0, 0, 0).
855+
856+The returned value is owned by Graphene and should not be modified or freed.</doc>
857+ <source-position filename="include/graphene-box.h" line="135"/>
858+ <return-value transfer-ownership="none">
859+ <doc xml:space="preserve"
860+ filename="src/graphene-box.c"
861+ line="817">a #graphene_box_t</doc>
862+ <type name="Box" c:type="const graphene_box_t*"/>
863+ </return-value>
864+ </function>
865+ </record>
866+ <function-macro name="CHECK_VERSION"
867+ c:identifier="GRAPHENE_CHECK_VERSION"
868+ introspectable="0">
869+ <source-position filename="include/graphene-version-macros.h" line="78"/>
870+ <parameters>
871+ <parameter name="major">
872+ </parameter>
873+ <parameter name="minor">
874+ </parameter>
875+ <parameter name="micro">
876+ </parameter>
877+ </parameters>
878+ </function-macro>
879+ <function-macro name="DEPRECATED_FOR"
880+ c:identifier="GRAPHENE_DEPRECATED_FOR"
881+ introspectable="0">
882+ <source-position filename="include/graphene-version-macros.h" line="53"/>
883+ <parameters>
884+ <parameter name="f">
885+ </parameter>
886+ </parameters>
887+ </function-macro>
888+ <function-macro name="DEPRECATED_IN_1_0_FOR"
889+ c:identifier="GRAPHENE_DEPRECATED_IN_1_0_FOR"
890+ introspectable="0">
891+ <source-position filename="include/graphene-version-macros.h"
892+ line="137"/>
893+ <parameters>
894+ <parameter name="f">
895+ </parameter>
896+ </parameters>
897+ </function-macro>
898+ <function-macro name="DEPRECATED_IN_1_10_FOR"
899+ c:identifier="GRAPHENE_DEPRECATED_IN_1_10_FOR"
900+ introspectable="0">
901+ <source-position filename="include/graphene-version-macros.h"
902+ line="203"/>
903+ <parameters>
904+ <parameter name="f">
905+ </parameter>
906+ </parameters>
907+ </function-macro>
908+ <function-macro name="DEPRECATED_IN_1_2_FOR"
909+ c:identifier="GRAPHENE_DEPRECATED_IN_1_2_FOR"
910+ introspectable="0">
911+ <source-position filename="include/graphene-version-macros.h"
912+ line="143"/>
913+ <parameters>
914+ <parameter name="f">
915+ </parameter>
916+ </parameters>
917+ </function-macro>
918+ <function-macro name="DEPRECATED_IN_1_4_FOR"
919+ c:identifier="GRAPHENE_DEPRECATED_IN_1_4_FOR"
920+ introspectable="0">
921+ <source-position filename="include/graphene-version-macros.h"
922+ line="158"/>
923+ <parameters>
924+ <parameter name="f">
925+ </parameter>
926+ </parameters>
927+ </function-macro>
928+ <function-macro name="DEPRECATED_IN_1_6_FOR"
929+ c:identifier="GRAPHENE_DEPRECATED_IN_1_6_FOR"
930+ introspectable="0">
931+ <source-position filename="include/graphene-version-macros.h"
932+ line="173"/>
933+ <parameters>
934+ <parameter name="f">
935+ </parameter>
936+ </parameters>
937+ </function-macro>
938+ <function-macro name="DEPRECATED_IN_1_8_FOR"
939+ c:identifier="GRAPHENE_DEPRECATED_IN_1_8_FOR"
940+ introspectable="0">
941+ <source-position filename="include/graphene-version-macros.h"
942+ line="188"/>
943+ <parameters>
944+ <parameter name="f">
945+ </parameter>
946+ </parameters>
947+ </function-macro>
948+ <function-macro name="ENCODE_VERSION"
949+ c:identifier="GRAPHENE_ENCODE_VERSION"
950+ version="1.0"
951+ introspectable="0">
952+ <doc xml:space="preserve"
953+ filename="include/graphene-version-macros.h"
954+ line="34">Encodes the given components into a value that can be used for
955+version checks.</doc>
956+ <source-position filename="include/graphene-version-macros.h" line="45"/>
957+ <parameters>
958+ <parameter name="major">
959+ <doc xml:space="preserve"
960+ filename="include/graphene-version-macros.h"
961+ line="36">a major version</doc>
962+ </parameter>
963+ <parameter name="minor">
964+ <doc xml:space="preserve"
965+ filename="include/graphene-version-macros.h"
966+ line="37">a minor version</doc>
967+ </parameter>
968+ <parameter name="micro">
969+ <doc xml:space="preserve"
970+ filename="include/graphene-version-macros.h"
971+ line="38">a micro version</doc>
972+ </parameter>
973+ </parameters>
974+ </function-macro>
975+ <record name="Euler"
976+ c:type="graphene_euler_t"
977+ version="1.2"
978+ glib:type-name="GrapheneEuler"
979+ glib:get-type="graphene_euler_get_type"
980+ c:symbol-prefix="euler">
981+ <doc xml:space="preserve"
982+ filename="include/graphene-euler.h"
983+ line="125">Describe a rotation using Euler angles.
984+
985+The contents of the #graphene_euler_t structure are private
986+and should never be accessed directly.</doc>
987+ <source-position filename="include/graphene-euler.h" line="140"/>
988+ <field name="angles" readable="0" private="1">
989+ <type name="Vec3" c:type="graphene_vec3_t"/>
990+ </field>
991+ <field name="order" readable="0" private="1">
992+ <type name="EulerOrder" c:type="graphene_euler_order_t"/>
993+ </field>
994+ <constructor name="alloc"
995+ c:identifier="graphene_euler_alloc"
996+ version="1.2">
997+ <doc xml:space="preserve"
998+ filename="src/graphene-euler.c"
999+ line="370">Allocates a new #graphene_euler_t.
1000+
1001+The contents of the returned structure are undefined.</doc>
1002+ <source-position filename="include/graphene-euler.h" line="143"/>
1003+ <return-value transfer-ownership="full">
1004+ <doc xml:space="preserve"
1005+ filename="src/graphene-euler.c"
1006+ line="377">the newly allocated #graphene_euler_t</doc>
1007+ <type name="Euler" c:type="graphene_euler_t*"/>
1008+ </return-value>
1009+ </constructor>
1010+ <method name="equal" c:identifier="graphene_euler_equal" version="1.2">
1011+ <doc xml:space="preserve"
1012+ filename="src/graphene-euler.c"
1013+ line="681">Checks if two #graphene_euler_t are equal.</doc>
1014+ <source-position filename="include/graphene-euler.h" line="181"/>
1015+ <return-value transfer-ownership="none">
1016+ <doc xml:space="preserve"
1017+ filename="src/graphene-euler.c"
1018+ line="688">`true` if the two #graphene_euler_t are equal</doc>
1019+ <type name="gboolean" c:type="_Bool"/>
1020+ </return-value>
1021+ <parameters>
1022+ <instance-parameter name="a" transfer-ownership="none">
1023+ <doc xml:space="preserve"
1024+ filename="src/graphene-euler.c"
1025+ line="683">a #graphene_euler_t</doc>
1026+ <type name="Euler" c:type="const graphene_euler_t*"/>
1027+ </instance-parameter>
1028+ <parameter name="b" transfer-ownership="none">
1029+ <doc xml:space="preserve"
1030+ filename="src/graphene-euler.c"
1031+ line="684">a #graphene_euler_t</doc>
1032+ <type name="Euler" c:type="const graphene_euler_t*"/>
1033+ </parameter>
1034+ </parameters>
1035+ </method>
1036+ <method name="free" c:identifier="graphene_euler_free" version="1.2">
1037+ <doc xml:space="preserve"
1038+ filename="src/graphene-euler.c"
1039+ line="387">Frees the resources allocated by graphene_euler_alloc().</doc>
1040+ <source-position filename="include/graphene-euler.h" line="145"/>
1041+ <return-value transfer-ownership="none">
1042+ <type name="none" c:type="void"/>
1043+ </return-value>
1044+ <parameters>
1045+ <instance-parameter name="e" transfer-ownership="none">
1046+ <doc xml:space="preserve"
1047+ filename="src/graphene-euler.c"
1048+ line="389">a #graphene_euler_t</doc>
1049+ <type name="Euler" c:type="graphene_euler_t*"/>
1050+ </instance-parameter>
1051+ </parameters>
1052+ </method>
1053+ <method name="get_alpha"
1054+ c:identifier="graphene_euler_get_alpha"
1055+ version="1.10">
1056+ <doc xml:space="preserve"
1057+ filename="src/graphene-euler.c"
1058+ line="790">Retrieves the first component of the Euler angle vector,
1059+depending on the order of rotation.
1060+
1061+See also: graphene_euler_get_x()</doc>
1062+ <source-position filename="include/graphene-euler.h" line="194"/>
1063+ <return-value transfer-ownership="none">
1064+ <doc xml:space="preserve"
1065+ filename="src/graphene-euler.c"
1066+ line="799">the first component of the Euler angle vector, in radians</doc>
1067+ <type name="gfloat" c:type="float"/>
1068+ </return-value>
1069+ <parameters>
1070+ <instance-parameter name="e" transfer-ownership="none">
1071+ <doc xml:space="preserve"
1072+ filename="src/graphene-euler.c"
1073+ line="792">a #graphene_euler_t</doc>
1074+ <type name="Euler" c:type="const graphene_euler_t*"/>
1075+ </instance-parameter>
1076+ </parameters>
1077+ </method>
1078+ <method name="get_beta"
1079+ c:identifier="graphene_euler_get_beta"
1080+ version="1.10">
1081+ <doc xml:space="preserve"
1082+ filename="src/graphene-euler.c"
1083+ line="847">Retrieves the second component of the Euler angle vector,
1084+depending on the order of rotation.
1085+
1086+See also: graphene_euler_get_y()</doc>
1087+ <source-position filename="include/graphene-euler.h" line="196"/>
1088+ <return-value transfer-ownership="none">
1089+ <doc xml:space="preserve"
1090+ filename="src/graphene-euler.c"
1091+ line="856">the second component of the Euler angle vector, in radians</doc>
1092+ <type name="gfloat" c:type="float"/>
1093+ </return-value>
1094+ <parameters>
1095+ <instance-parameter name="e" transfer-ownership="none">
1096+ <doc xml:space="preserve"
1097+ filename="src/graphene-euler.c"
1098+ line="849">a #graphene_euler_t</doc>
1099+ <type name="Euler" c:type="const graphene_euler_t*"/>
1100+ </instance-parameter>
1101+ </parameters>
1102+ </method>
1103+ <method name="get_gamma"
1104+ c:identifier="graphene_euler_get_gamma"
1105+ version="1.10">
1106+ <doc xml:space="preserve"
1107+ filename="src/graphene-euler.c"
1108+ line="904">Retrieves the third component of the Euler angle vector,
1109+depending on the order of rotation.
1110+
1111+See also: graphene_euler_get_z()</doc>
1112+ <source-position filename="include/graphene-euler.h" line="198"/>
1113+ <return-value transfer-ownership="none">
1114+ <doc xml:space="preserve"
1115+ filename="src/graphene-euler.c"
1116+ line="913">the third component of the Euler angle vector, in radians</doc>
1117+ <type name="gfloat" c:type="float"/>
1118+ </return-value>
1119+ <parameters>
1120+ <instance-parameter name="e" transfer-ownership="none">
1121+ <doc xml:space="preserve"
1122+ filename="src/graphene-euler.c"
1123+ line="906">a #graphene_euler_t</doc>
1124+ <type name="Euler" c:type="const graphene_euler_t*"/>
1125+ </instance-parameter>
1126+ </parameters>
1127+ </method>
1128+ <method name="get_order"
1129+ c:identifier="graphene_euler_get_order"
1130+ version="1.2">
1131+ <doc xml:space="preserve"
1132+ filename="src/graphene-euler.c"
1133+ line="747">Retrieves the order used to apply the rotations described in the
1134+#graphene_euler_t structure, when converting to and from other
1135+structures, like #graphene_quaternion_t and #graphene_matrix_t.
1136+
1137+This function does not return the %GRAPHENE_EULER_ORDER_DEFAULT
1138+enumeration value; it will return the effective order of rotation
1139+instead.</doc>
1140+ <source-position filename="include/graphene-euler.h" line="191"/>
1141+ <return-value transfer-ownership="none">
1142+ <doc xml:space="preserve"
1143+ filename="src/graphene-euler.c"
1144+ line="759">the order used to apply the rotations</doc>
1145+ <type name="EulerOrder" c:type="graphene_euler_order_t"/>
1146+ </return-value>
1147+ <parameters>
1148+ <instance-parameter name="e" transfer-ownership="none">
1149+ <doc xml:space="preserve"
1150+ filename="src/graphene-euler.c"
1151+ line="749">a #graphene_euler_t</doc>
1152+ <type name="Euler" c:type="const graphene_euler_t*"/>
1153+ </instance-parameter>
1154+ </parameters>
1155+ </method>
1156+ <method name="get_x" c:identifier="graphene_euler_get_x" version="1.2">
1157+ <doc xml:space="preserve"
1158+ filename="src/graphene-euler.c"
1159+ line="699">Retrieves the rotation angle on the X axis, in degrees.</doc>
1160+ <source-position filename="include/graphene-euler.h" line="185"/>
1161+ <return-value transfer-ownership="none">
1162+ <doc xml:space="preserve"
1163+ filename="src/graphene-euler.c"
1164+ line="705">the rotation angle</doc>
1165+ <type name="gfloat" c:type="float"/>
1166+ </return-value>
1167+ <parameters>
1168+ <instance-parameter name="e" transfer-ownership="none">
1169+ <doc xml:space="preserve"
1170+ filename="src/graphene-euler.c"
1171+ line="701">a #graphene_euler_t</doc>
1172+ <type name="Euler" c:type="const graphene_euler_t*"/>
1173+ </instance-parameter>
1174+ </parameters>
1175+ </method>
1176+ <method name="get_y" c:identifier="graphene_euler_get_y" version="1.2">
1177+ <doc xml:space="preserve"
1178+ filename="src/graphene-euler.c"
1179+ line="715">Retrieves the rotation angle on the Y axis, in degrees.</doc>
1180+ <source-position filename="include/graphene-euler.h" line="187"/>
1181+ <return-value transfer-ownership="none">
1182+ <doc xml:space="preserve"
1183+ filename="src/graphene-euler.c"
1184+ line="721">the rotation angle</doc>
1185+ <type name="gfloat" c:type="float"/>
1186+ </return-value>
1187+ <parameters>
1188+ <instance-parameter name="e" transfer-ownership="none">
1189+ <doc xml:space="preserve"
1190+ filename="src/graphene-euler.c"
1191+ line="717">a #graphene_euler_t</doc>
1192+ <type name="Euler" c:type="const graphene_euler_t*"/>
1193+ </instance-parameter>
1194+ </parameters>
1195+ </method>
1196+ <method name="get_z" c:identifier="graphene_euler_get_z" version="1.2">
1197+ <doc xml:space="preserve"
1198+ filename="src/graphene-euler.c"
1199+ line="731">Retrieves the rotation angle on the Z axis, in degrees.</doc>
1200+ <source-position filename="include/graphene-euler.h" line="189"/>
1201+ <return-value transfer-ownership="none">
1202+ <doc xml:space="preserve"
1203+ filename="src/graphene-euler.c"
1204+ line="737">the rotation angle</doc>
1205+ <type name="gfloat" c:type="float"/>
1206+ </return-value>
1207+ <parameters>
1208+ <instance-parameter name="e" transfer-ownership="none">
1209+ <doc xml:space="preserve"
1210+ filename="src/graphene-euler.c"
1211+ line="733">a #graphene_euler_t</doc>
1212+ <type name="Euler" c:type="const graphene_euler_t*"/>
1213+ </instance-parameter>
1214+ </parameters>
1215+ </method>
1216+ <method name="init" c:identifier="graphene_euler_init" version="1.2">
1217+ <doc xml:space="preserve"
1218+ filename="src/graphene-euler.c"
1219+ line="469">Initializes a #graphene_euler_t using the given angles.
1220+
1221+The order of the rotations is %GRAPHENE_EULER_ORDER_DEFAULT.</doc>
1222+ <source-position filename="include/graphene-euler.h" line="148"/>
1223+ <return-value transfer-ownership="none">
1224+ <doc xml:space="preserve"
1225+ filename="src/graphene-euler.c"
1226+ line="480">the initialized #graphene_euler_t</doc>
1227+ <type name="Euler" c:type="graphene_euler_t*"/>
1228+ </return-value>
1229+ <parameters>
1230+ <instance-parameter name="e" transfer-ownership="none">
1231+ <doc xml:space="preserve"
1232+ filename="src/graphene-euler.c"
1233+ line="471">the #graphene_euler_t to initialize</doc>
1234+ <type name="Euler" c:type="graphene_euler_t*"/>
1235+ </instance-parameter>
1236+ <parameter name="x" transfer-ownership="none">
1237+ <doc xml:space="preserve"
1238+ filename="src/graphene-euler.c"
1239+ line="472">rotation angle on the X axis, in degrees</doc>
1240+ <type name="gfloat" c:type="float"/>
1241+ </parameter>
1242+ <parameter name="y" transfer-ownership="none">
1243+ <doc xml:space="preserve"
1244+ filename="src/graphene-euler.c"
1245+ line="473">rotation angle on the Y axis, in degrees</doc>
1246+ <type name="gfloat" c:type="float"/>
1247+ </parameter>
1248+ <parameter name="z" transfer-ownership="none">
1249+ <doc xml:space="preserve"
1250+ filename="src/graphene-euler.c"
1251+ line="474">rotation angle on the Z axis, in degrees</doc>
1252+ <type name="gfloat" c:type="float"/>
1253+ </parameter>
1254+ </parameters>
1255+ </method>
1256+ <method name="init_from_euler"
1257+ c:identifier="graphene_euler_init_from_euler"
1258+ version="1.2">
1259+ <doc xml:space="preserve"
1260+ filename="src/graphene-euler.c"
1261+ line="619">Initializes a #graphene_euler_t using the angles and order of
1262+another #graphene_euler_t.
1263+
1264+If the #graphene_euler_t @src is %NULL, this function is equivalent
1265+to calling graphene_euler_init() with all angles set to 0.</doc>
1266+ <source-position filename="include/graphene-euler.h" line="171"/>
1267+ <return-value transfer-ownership="none">
1268+ <doc xml:space="preserve"
1269+ filename="src/graphene-euler.c"
1270+ line="630">the initialized #graphene_euler_t</doc>
1271+ <type name="Euler" c:type="graphene_euler_t*"/>
1272+ </return-value>
1273+ <parameters>
1274+ <instance-parameter name="e" transfer-ownership="none">
1275+ <doc xml:space="preserve"
1276+ filename="src/graphene-euler.c"
1277+ line="621">the #graphene_euler_t to initialize</doc>
1278+ <type name="Euler" c:type="graphene_euler_t*"/>
1279+ </instance-parameter>
1280+ <parameter name="src"
1281+ transfer-ownership="none"
1282+ nullable="1"
1283+ allow-none="1">
1284+ <doc xml:space="preserve"
1285+ filename="src/graphene-euler.c"
1286+ line="622">a #graphene_euler_t</doc>
1287+ <type name="Euler" c:type="const graphene_euler_t*"/>
1288+ </parameter>
1289+ </parameters>
1290+ </method>
1291+ <method name="init_from_matrix"
1292+ c:identifier="graphene_euler_init_from_matrix"
1293+ version="1.2">
1294+ <doc xml:space="preserve"
1295+ filename="src/graphene-euler.c"
1296+ line="525">Initializes a #graphene_euler_t using the given rotation matrix.
1297+
1298+If the #graphene_matrix_t @m is %NULL, the #graphene_euler_t will
1299+be initialized with all angles set to 0.</doc>
1300+ <source-position filename="include/graphene-euler.h" line="159"/>
1301+ <return-value transfer-ownership="none">
1302+ <doc xml:space="preserve"
1303+ filename="src/graphene-euler.c"
1304+ line="536">the initialized #graphene_euler_t</doc>
1305+ <type name="Euler" c:type="graphene_euler_t*"/>
1306+ </return-value>
1307+ <parameters>
1308+ <instance-parameter name="e" transfer-ownership="none">
1309+ <doc xml:space="preserve"
1310+ filename="src/graphene-euler.c"
1311+ line="527">the #graphene_euler_t to initialize</doc>
1312+ <type name="Euler" c:type="graphene_euler_t*"/>
1313+ </instance-parameter>
1314+ <parameter name="m"
1315+ transfer-ownership="none"
1316+ nullable="1"
1317+ allow-none="1">
1318+ <doc xml:space="preserve"
1319+ filename="src/graphene-euler.c"
1320+ line="528">a rotation matrix</doc>
1321+ <type name="Matrix" c:type="const graphene_matrix_t*"/>
1322+ </parameter>
1323+ <parameter name="order" transfer-ownership="none">
1324+ <doc xml:space="preserve"
1325+ filename="src/graphene-euler.c"
1326+ line="529">the order used to apply the rotations</doc>
1327+ <type name="EulerOrder" c:type="graphene_euler_order_t"/>
1328+ </parameter>
1329+ </parameters>
1330+ </method>
1331+ <method name="init_from_quaternion"
1332+ c:identifier="graphene_euler_init_from_quaternion"
1333+ version="1.2">
1334+ <doc xml:space="preserve"
1335+ filename="src/graphene-euler.c"
1336+ line="557">Initializes a #graphene_euler_t using the given normalized quaternion.
1337+
1338+If the #graphene_quaternion_t @q is %NULL, the #graphene_euler_t will
1339+be initialized with all angles set to 0.</doc>
1340+ <source-position filename="include/graphene-euler.h" line="163"/>
1341+ <return-value transfer-ownership="none">
1342+ <doc xml:space="preserve"
1343+ filename="src/graphene-euler.c"
1344+ line="568">the initialized #graphene_euler_t</doc>
1345+ <type name="Euler" c:type="graphene_euler_t*"/>
1346+ </return-value>
1347+ <parameters>
1348+ <instance-parameter name="e" transfer-ownership="none">
1349+ <doc xml:space="preserve"
1350+ filename="src/graphene-euler.c"
1351+ line="559">a #graphene_euler_t</doc>
1352+ <type name="Euler" c:type="graphene_euler_t*"/>
1353+ </instance-parameter>
1354+ <parameter name="q"
1355+ transfer-ownership="none"
1356+ nullable="1"
1357+ allow-none="1">
1358+ <doc xml:space="preserve"
1359+ filename="src/graphene-euler.c"
1360+ line="560">a normalized #graphene_quaternion_t</doc>
1361+ <type name="Quaternion" c:type="const graphene_quaternion_t*"/>
1362+ </parameter>
1363+ <parameter name="order" transfer-ownership="none">
1364+ <doc xml:space="preserve"
1365+ filename="src/graphene-euler.c"
1366+ line="561">the order used to apply the rotations</doc>
1367+ <type name="EulerOrder" c:type="graphene_euler_order_t"/>
1368+ </parameter>
1369+ </parameters>
1370+ </method>
1371+ <method name="init_from_radians"
1372+ c:identifier="graphene_euler_init_from_radians"
1373+ version="1.10">
1374+ <doc xml:space="preserve"
1375+ filename="src/graphene-euler.c"
1376+ line="646">Initializes a #graphene_euler_t using the given angles
1377+and order of rotation.</doc>
1378+ <source-position filename="include/graphene-euler.h" line="174"/>
1379+ <return-value transfer-ownership="none">
1380+ <doc xml:space="preserve"
1381+ filename="src/graphene-euler.c"
1382+ line="657">the initialized #graphene_euler_t</doc>
1383+ <type name="Euler" c:type="graphene_euler_t*"/>
1384+ </return-value>
1385+ <parameters>
1386+ <instance-parameter name="e" transfer-ownership="none">
1387+ <doc xml:space="preserve"
1388+ filename="src/graphene-euler.c"
1389+ line="648">the #graphene_euler_t to initialize</doc>
1390+ <type name="Euler" c:type="graphene_euler_t*"/>
1391+ </instance-parameter>
1392+ <parameter name="x" transfer-ownership="none">
1393+ <doc xml:space="preserve"
1394+ filename="src/graphene-euler.c"
1395+ line="649">rotation angle on the X axis, in radians</doc>
1396+ <type name="gfloat" c:type="float"/>
1397+ </parameter>
1398+ <parameter name="y" transfer-ownership="none">
1399+ <doc xml:space="preserve"
1400+ filename="src/graphene-euler.c"
1401+ line="650">rotation angle on the Y axis, in radians</doc>
1402+ <type name="gfloat" c:type="float"/>
1403+ </parameter>
1404+ <parameter name="z" transfer-ownership="none">
1405+ <doc xml:space="preserve"
1406+ filename="src/graphene-euler.c"
1407+ line="651">rotation angle on the Z axis, in radians</doc>
1408+ <type name="gfloat" c:type="float"/>
1409+ </parameter>
1410+ <parameter name="order" transfer-ownership="none">
1411+ <doc xml:space="preserve"
1412+ filename="src/graphene-euler.c"
1413+ line="652">order of rotations</doc>
1414+ <type name="EulerOrder" c:type="graphene_euler_order_t"/>
1415+ </parameter>
1416+ </parameters>
1417+ </method>
1418+ <method name="init_from_vec3"
1419+ c:identifier="graphene_euler_init_from_vec3"
1420+ version="1.2">
1421+ <doc xml:space="preserve"
1422+ filename="src/graphene-euler.c"
1423+ line="587">Initializes a #graphene_euler_t using the angles contained in a
1424+#graphene_vec3_t.
1425+
1426+If the #graphene_vec3_t @v is %NULL, the #graphene_euler_t will be
1427+initialized with all angles set to 0.</doc>
1428+ <source-position filename="include/graphene-euler.h" line="167"/>
1429+ <return-value transfer-ownership="none">
1430+ <doc xml:space="preserve"
1431+ filename="src/graphene-euler.c"
1432+ line="600">the initialized #graphene_euler_t</doc>
1433+ <type name="Euler" c:type="graphene_euler_t*"/>
1434+ </return-value>
1435+ <parameters>
1436+ <instance-parameter name="e" transfer-ownership="none">
1437+ <doc xml:space="preserve"
1438+ filename="src/graphene-euler.c"
1439+ line="589">the #graphene_euler_t to initialize</doc>
1440+ <type name="Euler" c:type="graphene_euler_t*"/>
1441+ </instance-parameter>
1442+ <parameter name="v"
1443+ transfer-ownership="none"
1444+ nullable="1"
1445+ allow-none="1">
1446+ <doc xml:space="preserve"
1447+ filename="src/graphene-euler.c"
1448+ line="590">a #graphene_vec3_t containing the rotation
1449+ angles in degrees</doc>
1450+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
1451+ </parameter>
1452+ <parameter name="order" transfer-ownership="none">
1453+ <doc xml:space="preserve"
1454+ filename="src/graphene-euler.c"
1455+ line="592">the order used to apply the rotations</doc>
1456+ <type name="EulerOrder" c:type="graphene_euler_order_t"/>
1457+ </parameter>
1458+ </parameters>
1459+ </method>
1460+ <method name="init_with_order"
1461+ c:identifier="graphene_euler_init_with_order"
1462+ version="1.2">
1463+ <doc xml:space="preserve"
1464+ filename="src/graphene-euler.c"
1465+ line="497">Initializes a #graphene_euler_t with the given angles and @order.</doc>
1466+ <source-position filename="include/graphene-euler.h" line="153"/>
1467+ <return-value transfer-ownership="none">
1468+ <doc xml:space="preserve"
1469+ filename="src/graphene-euler.c"
1470+ line="507">the initialized #graphene_euler_t</doc>
1471+ <type name="Euler" c:type="graphene_euler_t*"/>
1472+ </return-value>
1473+ <parameters>
1474+ <instance-parameter name="e" transfer-ownership="none">
1475+ <doc xml:space="preserve"
1476+ filename="src/graphene-euler.c"
1477+ line="499">the #graphene_euler_t to initialize</doc>
1478+ <type name="Euler" c:type="graphene_euler_t*"/>
1479+ </instance-parameter>
1480+ <parameter name="x" transfer-ownership="none">
1481+ <doc xml:space="preserve"
1482+ filename="src/graphene-euler.c"
1483+ line="500">rotation angle on the X axis, in degrees</doc>
1484+ <type name="gfloat" c:type="float"/>
1485+ </parameter>
1486+ <parameter name="y" transfer-ownership="none">
1487+ <doc xml:space="preserve"
1488+ filename="src/graphene-euler.c"
1489+ line="501">rotation angle on the Y axis, in degrees</doc>
1490+ <type name="gfloat" c:type="float"/>
1491+ </parameter>
1492+ <parameter name="z" transfer-ownership="none">
1493+ <doc xml:space="preserve"
1494+ filename="src/graphene-euler.c"
1495+ line="502">rotation angle on the Z axis, in degrees</doc>
1496+ <type name="gfloat" c:type="float"/>
1497+ </parameter>
1498+ <parameter name="order" transfer-ownership="none">
1499+ <doc xml:space="preserve"
1500+ filename="src/graphene-euler.c"
1501+ line="503">the order used to apply the rotations</doc>
1502+ <type name="EulerOrder" c:type="graphene_euler_order_t"/>
1503+ </parameter>
1504+ </parameters>
1505+ </method>
1506+ <method name="reorder"
1507+ c:identifier="graphene_euler_reorder"
1508+ version="1.2">
1509+ <doc xml:space="preserve"
1510+ filename="src/graphene-euler.c"
1511+ line="1052">Reorders a #graphene_euler_t using @order.
1512+
1513+This function is equivalent to creating a #graphene_quaternion_t from the
1514+given #graphene_euler_t, and then converting the quaternion into another
1515+#graphene_euler_t.</doc>
1516+ <source-position filename="include/graphene-euler.h" line="211"/>
1517+ <return-value transfer-ownership="none">
1518+ <type name="none" c:type="void"/>
1519+ </return-value>
1520+ <parameters>
1521+ <instance-parameter name="e" transfer-ownership="none">
1522+ <doc xml:space="preserve"
1523+ filename="src/graphene-euler.c"
1524+ line="1054">a #graphene_euler_t</doc>
1525+ <type name="Euler" c:type="const graphene_euler_t*"/>
1526+ </instance-parameter>
1527+ <parameter name="order" transfer-ownership="none">
1528+ <doc xml:space="preserve"
1529+ filename="src/graphene-euler.c"
1530+ line="1055">the new order</doc>
1531+ <type name="EulerOrder" c:type="graphene_euler_order_t"/>
1532+ </parameter>
1533+ <parameter name="res"
1534+ direction="out"
1535+ caller-allocates="1"
1536+ transfer-ownership="none">
1537+ <doc xml:space="preserve"
1538+ filename="src/graphene-euler.c"
1539+ line="1056">return location for the reordered
1540+ #graphene_euler_t</doc>
1541+ <type name="Euler" c:type="graphene_euler_t*"/>
1542+ </parameter>
1543+ </parameters>
1544+ </method>
1545+ <method name="to_matrix"
1546+ c:identifier="graphene_euler_to_matrix"
1547+ version="1.2">
1548+ <doc xml:space="preserve"
1549+ filename="src/graphene-euler.c"
1550+ line="961">Converts a #graphene_euler_t into a transformation matrix expressing
1551+the extrinsic composition of rotations described by the Euler angles.
1552+
1553+The rotations are applied over the reference frame axes in the order
1554+associated with the #graphene_euler_t; for instance, if the order
1555+used to initialize @e is %GRAPHENE_EULER_ORDER_XYZ:
1556+
1557+ * the first rotation moves the body around the X axis with
1558+ an angle φ
1559+ * the second rotation moves the body around the Y axis with
1560+ an angle of ϑ
1561+ * the third rotation moves the body around the Z axis with
1562+ an angle of ψ
1563+
1564+The rotation sign convention is right-handed, to preserve compatibility
1565+between Euler-based, quaternion-based, and angle-axis-based rotations.</doc>
1566+ <source-position filename="include/graphene-euler.h" line="204"/>
1567+ <return-value transfer-ownership="none">
1568+ <type name="none" c:type="void"/>
1569+ </return-value>
1570+ <parameters>
1571+ <instance-parameter name="e" transfer-ownership="none">
1572+ <doc xml:space="preserve"
1573+ filename="src/graphene-euler.c"
1574+ line="963">a #graphene_euler_t</doc>
1575+ <type name="Euler" c:type="const graphene_euler_t*"/>
1576+ </instance-parameter>
1577+ <parameter name="res"
1578+ direction="out"
1579+ caller-allocates="1"
1580+ transfer-ownership="none">
1581+ <doc xml:space="preserve"
1582+ filename="src/graphene-euler.c"
1583+ line="964">return location for a #graphene_matrix_t</doc>
1584+ <type name="Matrix" c:type="graphene_matrix_t*"/>
1585+ </parameter>
1586+ </parameters>
1587+ </method>
1588+ <method name="to_quaternion"
1589+ c:identifier="graphene_euler_to_quaternion"
1590+ version="1.10">
1591+ <doc xml:space="preserve"
1592+ filename="src/graphene-euler.c"
1593+ line="1001">Converts a #graphene_euler_t into a #graphene_quaternion_t.</doc>
1594+ <source-position filename="include/graphene-euler.h" line="207"/>
1595+ <return-value transfer-ownership="none">
1596+ <type name="none" c:type="void"/>
1597+ </return-value>
1598+ <parameters>
1599+ <instance-parameter name="e" transfer-ownership="none">
1600+ <doc xml:space="preserve"
1601+ filename="src/graphene-euler.c"
1602+ line="1003">a #graphene_euler_t</doc>
1603+ <type name="Euler" c:type="const graphene_euler_t*"/>
1604+ </instance-parameter>
1605+ <parameter name="res"
1606+ direction="out"
1607+ caller-allocates="1"
1608+ transfer-ownership="none">
1609+ <doc xml:space="preserve"
1610+ filename="src/graphene-euler.c"
1611+ line="1004">return location for a #graphene_quaternion_t</doc>
1612+ <type name="Quaternion" c:type="graphene_quaternion_t*"/>
1613+ </parameter>
1614+ </parameters>
1615+ </method>
1616+ <method name="to_vec3"
1617+ c:identifier="graphene_euler_to_vec3"
1618+ version="1.2">
1619+ <doc xml:space="preserve"
1620+ filename="src/graphene-euler.c"
1621+ line="772">Retrieves the angles of a #graphene_euler_t and initializes a
1622+#graphene_vec3_t with them.</doc>
1623+ <source-position filename="include/graphene-euler.h" line="201"/>
1624+ <return-value transfer-ownership="none">
1625+ <type name="none" c:type="void"/>
1626+ </return-value>
1627+ <parameters>
1628+ <instance-parameter name="e" transfer-ownership="none">
1629+ <doc xml:space="preserve"
1630+ filename="src/graphene-euler.c"
1631+ line="774">a #graphene_euler_t</doc>
1632+ <type name="Euler" c:type="const graphene_euler_t*"/>
1633+ </instance-parameter>
1634+ <parameter name="res"
1635+ direction="out"
1636+ caller-allocates="1"
1637+ transfer-ownership="none">
1638+ <doc xml:space="preserve"
1639+ filename="src/graphene-euler.c"
1640+ line="775">return location for a #graphene_vec3_t</doc>
1641+ <type name="Vec3" c:type="graphene_vec3_t*"/>
1642+ </parameter>
1643+ </parameters>
1644+ </method>
1645+ </record>
1646+ <enumeration name="EulerOrder"
1647+ version="1.2"
1648+ c:type="graphene_euler_order_t">
1649+ <doc xml:space="preserve"
1650+ filename="include/graphene-euler.h"
1651+ line="37">Specify the order of the rotations on each axis.
1652+
1653+The %GRAPHENE_EULER_ORDER_DEFAULT value is special, and is used
1654+as an alias for one of the other orders.</doc>
1655+ <source-position filename="include/graphene-euler.h" line="123"/>
1656+ <member name="default"
1657+ value="-1"
1658+ c:identifier="GRAPHENE_EULER_ORDER_DEFAULT">
1659+ <doc xml:space="preserve"
1660+ filename="include/graphene-euler.h"
1661+ line="39">Rotate in the default order; the
1662+ default order is one of the following enumeration values</doc>
1663+ </member>
1664+ <member name="xyz" value="0" c:identifier="GRAPHENE_EULER_ORDER_XYZ">
1665+ <doc xml:space="preserve"
1666+ filename="include/graphene-euler.h"
1667+ line="41">Rotate in the X, Y, and Z order. Deprecated in
1668+ Graphene 1.10, it's an alias for %GRAPHENE_EULER_ORDER_SXYZ</doc>
1669+ </member>
1670+ <member name="yzx" value="1" c:identifier="GRAPHENE_EULER_ORDER_YZX">
1671+ <doc xml:space="preserve"
1672+ filename="include/graphene-euler.h"
1673+ line="43">Rotate in the Y, Z, and X order. Deprecated in
1674+ Graphene 1.10, it's an alias for %GRAPHENE_EULER_ORDER_SYZX</doc>
1675+ </member>
1676+ <member name="zxy" value="2" c:identifier="GRAPHENE_EULER_ORDER_ZXY">
1677+ <doc xml:space="preserve"
1678+ filename="include/graphene-euler.h"
1679+ line="45">Rotate in the Z, X, and Y order. Deprecated in
1680+ Graphene 1.10, it's an alias for %GRAPHENE_EULER_ORDER_SZXY</doc>
1681+ </member>
1682+ <member name="xzy" value="3" c:identifier="GRAPHENE_EULER_ORDER_XZY">
1683+ <doc xml:space="preserve"
1684+ filename="include/graphene-euler.h"
1685+ line="47">Rotate in the X, Z, and Y order. Deprecated in
1686+ Graphene 1.10, it's an alias for %GRAPHENE_EULER_ORDER_SXZY</doc>
1687+ </member>
1688+ <member name="yxz" value="4" c:identifier="GRAPHENE_EULER_ORDER_YXZ">
1689+ <doc xml:space="preserve"
1690+ filename="include/graphene-euler.h"
1691+ line="49">Rotate in the Y, X, and Z order. Deprecated in
1692+ Graphene 1.10, it's an alias for %GRAPHENE_EULER_ORDER_SYXZ</doc>
1693+ </member>
1694+ <member name="zyx" value="5" c:identifier="GRAPHENE_EULER_ORDER_ZYX">
1695+ <doc xml:space="preserve"
1696+ filename="include/graphene-euler.h"
1697+ line="51">Rotate in the Z, Y, and X order. Deprecated in
1698+ Graphene 1.10, it's an alias for %GRAPHENE_EULER_ORDER_SZYX</doc>
1699+ </member>
1700+ <member name="sxyz" value="6" c:identifier="GRAPHENE_EULER_ORDER_SXYZ">
1701+ <doc xml:space="preserve"
1702+ filename="include/graphene-euler.h"
1703+ line="53">Defines a static rotation along the X, Y, and Z axes (Since: 1.10)</doc>
1704+ </member>
1705+ <member name="sxyx" value="7" c:identifier="GRAPHENE_EULER_ORDER_SXYX">
1706+ <doc xml:space="preserve"
1707+ filename="include/graphene-euler.h"
1708+ line="54">Defines a static rotation along the X, Y, and X axes (Since: 1.10)</doc>
1709+ </member>
1710+ <member name="sxzy" value="8" c:identifier="GRAPHENE_EULER_ORDER_SXZY">
1711+ <doc xml:space="preserve"
1712+ filename="include/graphene-euler.h"
1713+ line="55">Defines a static rotation along the X, Z, and Y axes (Since: 1.10)</doc>
1714+ </member>
1715+ <member name="sxzx" value="9" c:identifier="GRAPHENE_EULER_ORDER_SXZX">
1716+ <doc xml:space="preserve"
1717+ filename="include/graphene-euler.h"
1718+ line="56">Defines a static rotation along the X, Z, and X axes (Since: 1.10)</doc>
1719+ </member>
1720+ <member name="syzx" value="10" c:identifier="GRAPHENE_EULER_ORDER_SYZX">
1721+ <doc xml:space="preserve"
1722+ filename="include/graphene-euler.h"
1723+ line="57">Defines a static rotation along the Y, Z, and X axes (Since: 1.10)</doc>
1724+ </member>
1725+ <member name="syzy" value="11" c:identifier="GRAPHENE_EULER_ORDER_SYZY">
1726+ <doc xml:space="preserve"
1727+ filename="include/graphene-euler.h"
1728+ line="58">Defines a static rotation along the Y, Z, and Y axes (Since: 1.10)</doc>
1729+ </member>
1730+ <member name="syxz" value="12" c:identifier="GRAPHENE_EULER_ORDER_SYXZ">
1731+ <doc xml:space="preserve"
1732+ filename="include/graphene-euler.h"
1733+ line="59">Defines a static rotation along the Y, X, and Z axes (Since: 1.10)</doc>
1734+ </member>
1735+ <member name="syxy" value="13" c:identifier="GRAPHENE_EULER_ORDER_SYXY">
1736+ <doc xml:space="preserve"
1737+ filename="include/graphene-euler.h"
1738+ line="60">Defines a static rotation along the Y, X, and Y axes (Since: 1.10)</doc>
1739+ </member>
1740+ <member name="szxy" value="14" c:identifier="GRAPHENE_EULER_ORDER_SZXY">
1741+ <doc xml:space="preserve"
1742+ filename="include/graphene-euler.h"
1743+ line="61">Defines a static rotation along the Z, X, and Y axes (Since: 1.10)</doc>
1744+ </member>
1745+ <member name="szxz" value="15" c:identifier="GRAPHENE_EULER_ORDER_SZXZ">
1746+ <doc xml:space="preserve"
1747+ filename="include/graphene-euler.h"
1748+ line="62">Defines a static rotation along the Z, X, and Z axes (Since: 1.10)</doc>
1749+ </member>
1750+ <member name="szyx" value="16" c:identifier="GRAPHENE_EULER_ORDER_SZYX">
1751+ <doc xml:space="preserve"
1752+ filename="include/graphene-euler.h"
1753+ line="63">Defines a static rotation along the Z, Y, and X axes (Since: 1.10)</doc>
1754+ </member>
1755+ <member name="szyz" value="17" c:identifier="GRAPHENE_EULER_ORDER_SZYZ">
1756+ <doc xml:space="preserve"
1757+ filename="include/graphene-euler.h"
1758+ line="64">Defines a static rotation along the Z, Y, and Z axes (Since: 1.10)</doc>
1759+ </member>
1760+ <member name="rzyx" value="18" c:identifier="GRAPHENE_EULER_ORDER_RZYX">
1761+ <doc xml:space="preserve"
1762+ filename="include/graphene-euler.h"
1763+ line="65">Defines a relative rotation along the Z, Y, and X axes (Since: 1.10)</doc>
1764+ </member>
1765+ <member name="rxyx" value="19" c:identifier="GRAPHENE_EULER_ORDER_RXYX">
1766+ <doc xml:space="preserve"
1767+ filename="include/graphene-euler.h"
1768+ line="66">Defines a relative rotation along the X, Y, and X axes (Since: 1.10)</doc>
1769+ </member>
1770+ <member name="ryzx" value="20" c:identifier="GRAPHENE_EULER_ORDER_RYZX">
1771+ <doc xml:space="preserve"
1772+ filename="include/graphene-euler.h"
1773+ line="67">Defines a relative rotation along the Y, Z, and X axes (Since: 1.10)</doc>
1774+ </member>
1775+ <member name="rxzx" value="21" c:identifier="GRAPHENE_EULER_ORDER_RXZX">
1776+ <doc xml:space="preserve"
1777+ filename="include/graphene-euler.h"
1778+ line="68">Defines a relative rotation along the X, Z, and X axes (Since: 1.10)</doc>
1779+ </member>
1780+ <member name="rxzy" value="22" c:identifier="GRAPHENE_EULER_ORDER_RXZY">
1781+ <doc xml:space="preserve"
1782+ filename="include/graphene-euler.h"
1783+ line="69">Defines a relative rotation along the X, Z, and Y axes (Since: 1.10)</doc>
1784+ </member>
1785+ <member name="ryzy" value="23" c:identifier="GRAPHENE_EULER_ORDER_RYZY">
1786+ <doc xml:space="preserve"
1787+ filename="include/graphene-euler.h"
1788+ line="70">Defines a relative rotation along the Y, Z, and Y axes (Since: 1.10)</doc>
1789+ </member>
1790+ <member name="rzxy" value="24" c:identifier="GRAPHENE_EULER_ORDER_RZXY">
1791+ <doc xml:space="preserve"
1792+ filename="include/graphene-euler.h"
1793+ line="71">Defines a relative rotation along the Z, X, and Y axes (Since: 1.10)</doc>
1794+ </member>
1795+ <member name="ryxy" value="25" c:identifier="GRAPHENE_EULER_ORDER_RYXY">
1796+ <doc xml:space="preserve"
1797+ filename="include/graphene-euler.h"
1798+ line="72">Defines a relative rotation along the Y, X, and Y axes (Since: 1.10)</doc>
1799+ </member>
1800+ <member name="ryxz" value="26" c:identifier="GRAPHENE_EULER_ORDER_RYXZ">
1801+ <doc xml:space="preserve"
1802+ filename="include/graphene-euler.h"
1803+ line="73">Defines a relative rotation along the Y, X, and Z axes (Since: 1.10)</doc>
1804+ </member>
1805+ <member name="rzxz" value="27" c:identifier="GRAPHENE_EULER_ORDER_RZXZ">
1806+ <doc xml:space="preserve"
1807+ filename="include/graphene-euler.h"
1808+ line="74">Defines a relative rotation along the Z, X, and Z axes (Since: 1.10)</doc>
1809+ </member>
1810+ <member name="rxyz" value="28" c:identifier="GRAPHENE_EULER_ORDER_RXYZ">
1811+ <doc xml:space="preserve"
1812+ filename="include/graphene-euler.h"
1813+ line="75">Defines a relative rotation along the X, Y, and Z axes (Since: 1.10)</doc>
1814+ </member>
1815+ <member name="rzyz" value="29" c:identifier="GRAPHENE_EULER_ORDER_RZYZ">
1816+ <doc xml:space="preserve"
1817+ filename="include/graphene-euler.h"
1818+ line="76">Defines a relative rotation along the Z, Y, and Z axes (Since: 1.10)</doc>
1819+ </member>
1820+ </enumeration>
1821+ <record name="Frustum"
1822+ c:type="graphene_frustum_t"
1823+ version="1.2"
1824+ glib:type-name="GrapheneFrustum"
1825+ glib:get-type="graphene_frustum_get_type"
1826+ c:symbol-prefix="frustum">
1827+ <doc xml:space="preserve"
1828+ filename="include/graphene-frustum.h"
1829+ line="37">A 3D volume delimited by 2D clip planes.
1830+
1831+The contents of the `graphene_frustum_t` are private, and should not be
1832+modified directly.</doc>
1833+ <source-position filename="include/graphene-frustum.h" line="51"/>
1834+ <field name="planes" readable="0" private="1">
1835+ <array zero-terminated="0" fixed-size="6">
1836+ <type name="Plane" c:type="graphene_plane_t"/>
1837+ </array>
1838+ </field>
1839+ <constructor name="alloc"
1840+ c:identifier="graphene_frustum_alloc"
1841+ version="1.2">
1842+ <doc xml:space="preserve"
1843+ filename="src/graphene-frustum.c"
1844+ line="50">Allocates a new #graphene_frustum_t structure.
1845+
1846+The contents of the returned structure are undefined.</doc>
1847+ <source-position filename="include/graphene-frustum.h" line="54"/>
1848+ <return-value transfer-ownership="full">
1849+ <doc xml:space="preserve"
1850+ filename="src/graphene-frustum.c"
1851+ line="57">the newly allocated #graphene_frustum_t
1852+ structure. Use graphene_frustum_free() to free the resources
1853+ allocated by this function.</doc>
1854+ <type name="Frustum" c:type="graphene_frustum_t*"/>
1855+ </return-value>
1856+ </constructor>
1857+ <method name="contains_point"
1858+ c:identifier="graphene_frustum_contains_point"
1859+ version="1.2">
1860+ <doc xml:space="preserve"
1861+ filename="src/graphene-frustum.c"
1862+ line="212">Checks whether a point is inside the volume defined by the given
1863+#graphene_frustum_t.</doc>
1864+ <source-position filename="include/graphene-frustum.h" line="74"/>
1865+ <return-value transfer-ownership="none">
1866+ <doc xml:space="preserve"
1867+ filename="src/graphene-frustum.c"
1868+ line="220">`true` if the point is inside the frustum</doc>
1869+ <type name="gboolean" c:type="_Bool"/>
1870+ </return-value>
1871+ <parameters>
1872+ <instance-parameter name="f" transfer-ownership="none">
1873+ <doc xml:space="preserve"
1874+ filename="src/graphene-frustum.c"
1875+ line="214">a #graphene_frustum_t</doc>
1876+ <type name="Frustum" c:type="const graphene_frustum_t*"/>
1877+ </instance-parameter>
1878+ <parameter name="point" transfer-ownership="none">
1879+ <doc xml:space="preserve"
1880+ filename="src/graphene-frustum.c"
1881+ line="215">a #graphene_point3d_t</doc>
1882+ <type name="Point3D" c:type="const graphene_point3d_t*"/>
1883+ </parameter>
1884+ </parameters>
1885+ </method>
1886+ <method name="equal" c:identifier="graphene_frustum_equal" version="1.6">
1887+ <doc xml:space="preserve"
1888+ filename="src/graphene-frustum.c"
1889+ line="337">Checks whether the two given #graphene_frustum_t are equal.</doc>
1890+ <source-position filename="include/graphene-frustum.h" line="89"/>
1891+ <return-value transfer-ownership="none">
1892+ <doc xml:space="preserve"
1893+ filename="src/graphene-frustum.c"
1894+ line="344">`true` if the given frustums are equal</doc>
1895+ <type name="gboolean" c:type="_Bool"/>
1896+ </return-value>
1897+ <parameters>
1898+ <instance-parameter name="a" transfer-ownership="none">
1899+ <doc xml:space="preserve"
1900+ filename="src/graphene-frustum.c"
1901+ line="339">a #graphene_frustum_t</doc>
1902+ <type name="Frustum" c:type="const graphene_frustum_t*"/>
1903+ </instance-parameter>
1904+ <parameter name="b" transfer-ownership="none">
1905+ <doc xml:space="preserve"
1906+ filename="src/graphene-frustum.c"
1907+ line="340">a #graphene_frustum_t</doc>
1908+ <type name="Frustum" c:type="const graphene_frustum_t*"/>
1909+ </parameter>
1910+ </parameters>
1911+ </method>
1912+ <method name="free" c:identifier="graphene_frustum_free" version="1.2">
1913+ <doc xml:space="preserve"
1914+ filename="src/graphene-frustum.c"
1915+ line="69">Frees the resources allocated by graphene_frustum_alloc().</doc>
1916+ <source-position filename="include/graphene-frustum.h" line="56"/>
1917+ <return-value transfer-ownership="none">
1918+ <type name="none" c:type="void"/>
1919+ </return-value>
1920+ <parameters>
1921+ <instance-parameter name="f" transfer-ownership="none">
1922+ <doc xml:space="preserve"
1923+ filename="src/graphene-frustum.c"
1924+ line="71">a #graphene_frustum_t</doc>
1925+ <type name="Frustum" c:type="graphene_frustum_t*"/>
1926+ </instance-parameter>
1927+ </parameters>
1928+ </method>
1929+ <method name="get_planes"
1930+ c:identifier="graphene_frustum_get_planes"
1931+ version="1.2">
1932+ <doc xml:space="preserve"
1933+ filename="src/graphene-frustum.c"
1934+ line="194">Retrieves the planes that define the given #graphene_frustum_t.</doc>
1935+ <source-position filename="include/graphene-frustum.h" line="85"/>
1936+ <return-value transfer-ownership="none">
1937+ <type name="none" c:type="void"/>
1938+ </return-value>
1939+ <parameters>
1940+ <instance-parameter name="f" transfer-ownership="none">
1941+ <doc xml:space="preserve"
1942+ filename="src/graphene-frustum.c"
1943+ line="196">a #graphene_frustum_t</doc>
1944+ <type name="Frustum" c:type="const graphene_frustum_t*"/>
1945+ </instance-parameter>
1946+ <parameter name="planes"
1947+ direction="out"
1948+ caller-allocates="1"
1949+ transfer-ownership="none">
1950+ <doc xml:space="preserve"
1951+ filename="src/graphene-frustum.c"
1952+ line="197">return location for an array
1953+ of 6 #graphene_plane_t</doc>
1954+ <array zero-terminated="0"
1955+ c:type="graphene_plane_t*"
1956+ fixed-size="6">
1957+ <type name="Plane" c:type="graphene_plane_t"/>
1958+ </array>
1959+ </parameter>
1960+ </parameters>
1961+ </method>
1962+ <method name="init" c:identifier="graphene_frustum_init" version="1.2">
1963+ <doc xml:space="preserve"
1964+ filename="src/graphene-frustum.c"
1965+ line="83">Initializes the given #graphene_frustum_t using the provided
1966+clipping planes.</doc>
1967+ <source-position filename="include/graphene-frustum.h" line="59"/>
1968+ <return-value transfer-ownership="none">
1969+ <doc xml:space="preserve"
1970+ filename="src/graphene-frustum.c"
1971+ line="96">the initialized frustum</doc>
1972+ <type name="Frustum" c:type="graphene_frustum_t*"/>
1973+ </return-value>
1974+ <parameters>
1975+ <instance-parameter name="f" transfer-ownership="none">
1976+ <doc xml:space="preserve"
1977+ filename="src/graphene-frustum.c"
1978+ line="85">the #graphene_frustum_t to initialize</doc>
1979+ <type name="Frustum" c:type="graphene_frustum_t*"/>
1980+ </instance-parameter>
1981+ <parameter name="p0" transfer-ownership="none">
1982+ <doc xml:space="preserve"
1983+ filename="src/graphene-frustum.c"
1984+ line="86">a clipping plane</doc>
1985+ <type name="Plane" c:type="const graphene_plane_t*"/>
1986+ </parameter>
1987+ <parameter name="p1" transfer-ownership="none">
1988+ <doc xml:space="preserve"
1989+ filename="src/graphene-frustum.c"
1990+ line="87">a clipping plane</doc>
1991+ <type name="Plane" c:type="const graphene_plane_t*"/>
1992+ </parameter>
1993+ <parameter name="p2" transfer-ownership="none">
1994+ <doc xml:space="preserve"
1995+ filename="src/graphene-frustum.c"
1996+ line="88">a clipping plane</doc>
1997+ <type name="Plane" c:type="const graphene_plane_t*"/>
1998+ </parameter>
1999+ <parameter name="p3" transfer-ownership="none">
2000+ <doc xml:space="preserve"
2001+ filename="src/graphene-frustum.c"
2002+ line="89">a clipping plane</doc>
2003+ <type name="Plane" c:type="const graphene_plane_t*"/>
2004+ </parameter>
2005+ <parameter name="p4" transfer-ownership="none">
2006+ <doc xml:space="preserve"
2007+ filename="src/graphene-frustum.c"
2008+ line="90">a clipping plane</doc>
2009+ <type name="Plane" c:type="const graphene_plane_t*"/>
2010+ </parameter>
2011+ <parameter name="p5" transfer-ownership="none">
2012+ <doc xml:space="preserve"
2013+ filename="src/graphene-frustum.c"
2014+ line="91">a clipping plane</doc>
2015+ <type name="Plane" c:type="const graphene_plane_t*"/>
2016+ </parameter>
2017+ </parameters>
2018+ </method>
2019+ <method name="init_from_frustum"
2020+ c:identifier="graphene_frustum_init_from_frustum"
2021+ version="1.2">
2022+ <doc xml:space="preserve"
2023+ filename="src/graphene-frustum.c"
2024+ line="119">Initializes the given #graphene_frustum_t using the clipping
2025+planes of another #graphene_frustum_t.</doc>
2026+ <source-position filename="include/graphene-frustum.h" line="67"/>
2027+ <return-value transfer-ownership="none">
2028+ <doc xml:space="preserve"
2029+ filename="src/graphene-frustum.c"
2030+ line="127">the initialized frustum</doc>
2031+ <type name="Frustum" c:type="graphene_frustum_t*"/>
2032+ </return-value>
2033+ <parameters>
2034+ <instance-parameter name="f" transfer-ownership="none">
2035+ <doc xml:space="preserve"
2036+ filename="src/graphene-frustum.c"
2037+ line="121">the #graphene_frustum_t to initialize</doc>
2038+ <type name="Frustum" c:type="graphene_frustum_t*"/>
2039+ </instance-parameter>
2040+ <parameter name="src" transfer-ownership="none">
2041+ <doc xml:space="preserve"
2042+ filename="src/graphene-frustum.c"
2043+ line="122">a #graphene_frustum_t</doc>
2044+ <type name="Frustum" c:type="const graphene_frustum_t*"/>
2045+ </parameter>
2046+ </parameters>
2047+ </method>
2048+ <method name="init_from_matrix"
2049+ c:identifier="graphene_frustum_init_from_matrix"
2050+ version="1.2">
2051+ <doc xml:space="preserve"
2052+ filename="src/graphene-frustum.c"
2053+ line="141">Initializes a #graphene_frustum_t using the given @matrix.</doc>
2054+ <source-position filename="include/graphene-frustum.h" line="70"/>
2055+ <return-value transfer-ownership="none">
2056+ <doc xml:space="preserve"
2057+ filename="src/graphene-frustum.c"
2058+ line="148">the initialized frustum</doc>
2059+ <type name="Frustum" c:type="graphene_frustum_t*"/>
2060+ </return-value>
2061+ <parameters>
2062+ <instance-parameter name="f" transfer-ownership="none">
2063+ <doc xml:space="preserve"
2064+ filename="src/graphene-frustum.c"
2065+ line="143">a #graphene_frustum_t</doc>
2066+ <type name="Frustum" c:type="graphene_frustum_t*"/>
2067+ </instance-parameter>
2068+ <parameter name="matrix" transfer-ownership="none">
2069+ <doc xml:space="preserve"
2070+ filename="src/graphene-frustum.c"
2071+ line="144">a #graphene_matrix_t</doc>
2072+ <type name="Matrix" c:type="const graphene_matrix_t*"/>
2073+ </parameter>
2074+ </parameters>
2075+ </method>
2076+ <method name="intersects_box"
2077+ c:identifier="graphene_frustum_intersects_box"
2078+ version="1.2">
2079+ <doc xml:space="preserve"
2080+ filename="src/graphene-frustum.c"
2081+ line="273">Checks whether the given @box intersects a plane of
2082+a #graphene_frustum_t.</doc>
2083+ <source-position filename="include/graphene-frustum.h" line="81"/>
2084+ <return-value transfer-ownership="none">
2085+ <doc xml:space="preserve"
2086+ filename="src/graphene-frustum.c"
2087+ line="281">`true` if the box intersects the frustum</doc>
2088+ <type name="gboolean" c:type="_Bool"/>
2089+ </return-value>
2090+ <parameters>
2091+ <instance-parameter name="f" transfer-ownership="none">
2092+ <doc xml:space="preserve"
2093+ filename="src/graphene-frustum.c"
2094+ line="275">a #graphene_frustum_t</doc>
2095+ <type name="Frustum" c:type="const graphene_frustum_t*"/>
2096+ </instance-parameter>
2097+ <parameter name="box" transfer-ownership="none">
2098+ <doc xml:space="preserve"
2099+ filename="src/graphene-frustum.c"
2100+ line="276">a #graphene_box_t</doc>
2101+ <type name="Box" c:type="const graphene_box_t*"/>
2102+ </parameter>
2103+ </parameters>
2104+ </method>
2105+ <method name="intersects_sphere"
2106+ c:identifier="graphene_frustum_intersects_sphere"
2107+ version="1.2">
2108+ <doc xml:space="preserve"
2109+ filename="src/graphene-frustum.c"
2110+ line="242">Checks whether the given @sphere intersects a plane of
2111+a #graphene_frustum_t.</doc>
2112+ <source-position filename="include/graphene-frustum.h" line="78"/>
2113+ <return-value transfer-ownership="none">
2114+ <doc xml:space="preserve"
2115+ filename="src/graphene-frustum.c"
2116+ line="250">`true` if the sphere intersects the frustum</doc>
2117+ <type name="gboolean" c:type="_Bool"/>
2118+ </return-value>
2119+ <parameters>
2120+ <instance-parameter name="f" transfer-ownership="none">
2121+ <doc xml:space="preserve"
2122+ filename="src/graphene-frustum.c"
2123+ line="244">a #graphene_frustum_t</doc>
2124+ <type name="Frustum" c:type="const graphene_frustum_t*"/>
2125+ </instance-parameter>
2126+ <parameter name="sphere" transfer-ownership="none">
2127+ <doc xml:space="preserve"
2128+ filename="src/graphene-frustum.c"
2129+ line="245">a #graphene_sphere_t</doc>
2130+ <type name="Sphere" c:type="const graphene_sphere_t*"/>
2131+ </parameter>
2132+ </parameters>
2133+ </method>
2134+ </record>
2135+ <record name="Matrix"
2136+ c:type="graphene_matrix_t"
2137+ glib:type-name="GrapheneMatrix"
2138+ glib:get-type="graphene_matrix_get_type"
2139+ c:symbol-prefix="matrix">
2140+ <doc xml:space="preserve"
2141+ filename="include/graphene-matrix.h"
2142+ line="32">A structure capable of holding a 4x4 matrix.
2143+
2144+The contents of the #graphene_matrix_t structure are private and
2145+should never be accessed directly.</doc>
2146+ <source-position filename="include/graphene-matrix.h" line="44"/>
2147+ <field name="value" readable="0" private="1">
2148+ <type name="Simd4X4F" c:type="graphene_simd4x4f_t"/>
2149+ </field>
2150+ <constructor name="alloc"
2151+ c:identifier="graphene_matrix_alloc"
2152+ version="1.0">
2153+ <doc xml:space="preserve"
2154+ filename="src/graphene-matrix.c"
2155+ line="107">Allocates a new #graphene_matrix_t.</doc>
2156+ <source-position filename="include/graphene-matrix.h" line="47"/>
2157+ <return-value transfer-ownership="full">
2158+ <doc xml:space="preserve"
2159+ filename="src/graphene-matrix.c"
2160+ line="112">the newly allocated matrix</doc>
2161+ <type name="Matrix" c:type="graphene_matrix_t*"/>
2162+ </return-value>
2163+ </constructor>
2164+ <method name="decompose" c:identifier="graphene_matrix_decompose">
2165+ <doc xml:space="preserve"
2166+ filename="src/graphene-matrix.c"
2167+ line="2041">Decomposes a transformation matrix into its component transformations.
2168+
2169+The algorithm for decomposing a matrix is taken from the
2170+[CSS3 Transforms specification](http://dev.w3.org/csswg/css-transforms/);
2171+specifically, the decomposition code is based on the equivalent code
2172+published in "Graphics Gems II", edited by Jim Arvo, and
2173+[available online](http://web.archive.org/web/20150512160205/http://tog.acm.org/resources/GraphicsGems/gemsii/unmatrix.c).</doc>
2174+ <source-position filename="include/graphene-matrix.h" line="306"/>
2175+ <return-value transfer-ownership="none">
2176+ <doc xml:space="preserve"
2177+ filename="src/graphene-matrix.c"
2178+ line="2058">`true` if the matrix could be decomposed</doc>
2179+ <type name="gboolean" c:type="_Bool"/>
2180+ </return-value>
2181+ <parameters>
2182+ <instance-parameter name="m" transfer-ownership="none">
2183+ <doc xml:space="preserve"
2184+ filename="src/graphene-matrix.c"
2185+ line="2043">a #graphene_matrix_t</doc>
2186+ <type name="Matrix" c:type="const graphene_matrix_t*"/>
2187+ </instance-parameter>
2188+ <parameter name="translate"
2189+ direction="out"
2190+ caller-allocates="1"
2191+ transfer-ownership="none">
2192+ <doc xml:space="preserve"
2193+ filename="src/graphene-matrix.c"
2194+ line="2044">the translation vector</doc>
2195+ <type name="Vec3" c:type="graphene_vec3_t*"/>
2196+ </parameter>
2197+ <parameter name="scale"
2198+ direction="out"
2199+ caller-allocates="1"
2200+ transfer-ownership="none">
2201+ <doc xml:space="preserve"
2202+ filename="src/graphene-matrix.c"
2203+ line="2045">the scale vector</doc>
2204+ <type name="Vec3" c:type="graphene_vec3_t*"/>
2205+ </parameter>
2206+ <parameter name="rotate"
2207+ direction="out"
2208+ caller-allocates="1"
2209+ transfer-ownership="none">
2210+ <doc xml:space="preserve"
2211+ filename="src/graphene-matrix.c"
2212+ line="2046">the rotation quaternion</doc>
2213+ <type name="Quaternion" c:type="graphene_quaternion_t*"/>
2214+ </parameter>
2215+ <parameter name="shear"
2216+ direction="out"
2217+ caller-allocates="1"
2218+ transfer-ownership="none">
2219+ <doc xml:space="preserve"
2220+ filename="src/graphene-matrix.c"
2221+ line="2047">the shear vector</doc>
2222+ <type name="Vec3" c:type="graphene_vec3_t*"/>
2223+ </parameter>
2224+ <parameter name="perspective"
2225+ direction="out"
2226+ caller-allocates="1"
2227+ transfer-ownership="none">
2228+ <doc xml:space="preserve"
2229+ filename="src/graphene-matrix.c"
2230+ line="2048">the perspective vector</doc>
2231+ <type name="Vec4" c:type="graphene_vec4_t*"/>
2232+ </parameter>
2233+ </parameters>
2234+ </method>
2235+ <method name="determinant"
2236+ c:identifier="graphene_matrix_determinant"
2237+ version="1.0">
2238+ <doc xml:space="preserve"
2239+ filename="src/graphene-matrix.c"
2240+ line="833">Computes the determinant of the given matrix.</doc>
2241+ <source-position filename="include/graphene-matrix.h" line="153"/>
2242+ <return-value transfer-ownership="none">
2243+ <doc xml:space="preserve"
2244+ filename="src/graphene-matrix.c"
2245+ line="839">the value of the determinant</doc>
2246+ <type name="gfloat" c:type="float"/>
2247+ </return-value>
2248+ <parameters>
2249+ <instance-parameter name="m" transfer-ownership="none">
2250+ <doc xml:space="preserve"
2251+ filename="src/graphene-matrix.c"
2252+ line="835">a #graphene_matrix_t</doc>
2253+ <type name="Matrix" c:type="const graphene_matrix_t*"/>
2254+ </instance-parameter>
2255+ </parameters>
2256+ </method>
2257+ <method name="equal" c:identifier="graphene_matrix_equal" version="1.10">
2258+ <doc xml:space="preserve"
2259+ filename="src/graphene-matrix.c"
2260+ line="2346">Checks whether the two given #graphene_matrix_t matrices are equal.</doc>
2261+ <source-position filename="include/graphene-matrix.h" line="296"/>
2262+ <return-value transfer-ownership="none">
2263+ <doc xml:space="preserve"
2264+ filename="src/graphene-matrix.c"
2265+ line="2353">`true` if the two matrices are equal, and `false` otherwise</doc>
2266+ <type name="gboolean" c:type="_Bool"/>
2267+ </return-value>
2268+ <parameters>
2269+ <instance-parameter name="a" transfer-ownership="none">
2270+ <doc xml:space="preserve"
2271+ filename="src/graphene-matrix.c"
2272+ line="2348">a #graphene_matrix_t</doc>
2273+ <type name="Matrix" c:type="const graphene_matrix_t*"/>
2274+ </instance-parameter>
2275+ <parameter name="b" transfer-ownership="none">
2276+ <doc xml:space="preserve"
2277+ filename="src/graphene-matrix.c"
2278+ line="2349">a #graphene_matrix_t</doc>
2279+ <type name="Matrix" c:type="const graphene_matrix_t*"/>
2280+ </parameter>
2281+ </parameters>
2282+ </method>
2283+ <method name="equal_fast"
2284+ c:identifier="graphene_matrix_equal_fast"
2285+ version="1.10">
2286+ <doc xml:space="preserve"
2287+ filename="src/graphene-matrix.c"
2288+ line="2364">Checks whether the two given #graphene_matrix_t matrices are
2289+byte-by-byte equal.
2290+
2291+While this function is faster than graphene_matrix_equal(), it
2292+can also return false negatives, so it should be used in
2293+conjuction with either graphene_matrix_equal() or
2294+graphene_matrix_near(). For instance:
2295+
2296+|[&lt;!-- language="C" --&gt;
2297+ if (graphene_matrix_equal_fast (a, b))
2298+ {
2299+ // matrices are definitely the same
2300+ }
2301+ else
2302+ {
2303+ if (graphene_matrix_equal (a, b))
2304+ // matrices contain the same values within an epsilon of FLT_EPSILON
2305+ else if (graphene_matrix_near (a, b, 0.0001))
2306+ // matrices contain the same values within an epsilon of 0.0001
2307+ else
2308+ // matrices are not equal
2309+ }
2310+]|</doc>
2311+ <source-position filename="include/graphene-matrix.h" line="299"/>
2312+ <return-value transfer-ownership="none">
2313+ <doc xml:space="preserve"
2314+ filename="src/graphene-matrix.c"
2315+ line="2393">`true` if the matrices are equal. and `false` otherwise</doc>
2316+ <type name="gboolean" c:type="_Bool"/>
2317+ </return-value>
2318+ <parameters>
2319+ <instance-parameter name="a" transfer-ownership="none">
2320+ <doc xml:space="preserve"
2321+ filename="src/graphene-matrix.c"
2322+ line="2366">a #graphene_matrix_t</doc>
2323+ <type name="Matrix" c:type="const graphene_matrix_t*"/>
2324+ </instance-parameter>
2325+ <parameter name="b" transfer-ownership="none">
2326+ <doc xml:space="preserve"
2327+ filename="src/graphene-matrix.c"
2328+ line="2367">a #graphene_matrix_t</doc>
2329+ <type name="Matrix" c:type="const graphene_matrix_t*"/>
2330+ </parameter>
2331+ </parameters>
2332+ </method>
2333+ <method name="free" c:identifier="graphene_matrix_free" version="1.0">
2334+ <doc xml:space="preserve"
2335+ filename="src/graphene-matrix.c"
2336+ line="122">Frees the resources allocated by graphene_matrix_alloc().</doc>
2337+ <source-position filename="include/graphene-matrix.h" line="49"/>
2338+ <return-value transfer-ownership="none">
2339+ <type name="none" c:type="void"/>
2340+ </return-value>
2341+ <parameters>
2342+ <instance-parameter name="m" transfer-ownership="none">
2343+ <doc xml:space="preserve"
2344+ filename="src/graphene-matrix.c"
2345+ line="124">a #graphene_matrix_t</doc>
2346+ <type name="Matrix" c:type="graphene_matrix_t*"/>
2347+ </instance-parameter>
2348+ </parameters>
2349+ </method>
2350+ <method name="get_row"
2351+ c:identifier="graphene_matrix_get_row"
2352+ version="1.0">
2353+ <doc xml:space="preserve"
2354+ filename="src/graphene-matrix.c"
2355+ line="706">Retrieves the given row vector at @index_ inside a matrix.</doc>
2356+ <source-position filename="include/graphene-matrix.h" line="140"/>
2357+ <return-value transfer-ownership="none">
2358+ <type name="none" c:type="void"/>
2359+ </return-value>
2360+ <parameters>
2361+ <instance-parameter name="m" transfer-ownership="none">
2362+ <doc xml:space="preserve"
2363+ filename="src/graphene-matrix.c"
2364+ line="708">a #graphene_matrix_t</doc>
2365+ <type name="Matrix" c:type="const graphene_matrix_t*"/>
2366+ </instance-parameter>
2367+ <parameter name="index_" transfer-ownership="none">
2368+ <doc xml:space="preserve"
2369+ filename="src/graphene-matrix.c"
2370+ line="709">the index of the row vector, between 0 and 3</doc>
2371+ <type name="guint" c:type="unsigned int"/>
2372+ </parameter>
2373+ <parameter name="res"
2374+ direction="out"
2375+ caller-allocates="1"
2376+ transfer-ownership="none">
2377+ <doc xml:space="preserve"
2378+ filename="src/graphene-matrix.c"
2379+ line="710">return location for the #graphene_vec4_t
2380+ that is used to store the row vector</doc>
2381+ <type name="Vec4" c:type="graphene_vec4_t*"/>
2382+ </parameter>
2383+ </parameters>
2384+ </method>
2385+ <method name="get_value"
2386+ c:identifier="graphene_matrix_get_value"
2387+ version="1.0">
2388+ <doc xml:space="preserve"
2389+ filename="src/graphene-matrix.c"
2390+ line="746">Retrieves the value at the given @row and @col index.</doc>
2391+ <source-position filename="include/graphene-matrix.h" line="144"/>
2392+ <return-value transfer-ownership="none">
2393+ <doc xml:space="preserve"
2394+ filename="src/graphene-matrix.c"
2395+ line="754">the value at the given indices</doc>
2396+ <type name="gfloat" c:type="float"/>
2397+ </return-value>
2398+ <parameters>
2399+ <instance-parameter name="m" transfer-ownership="none">
2400+ <doc xml:space="preserve"
2401+ filename="src/graphene-matrix.c"
2402+ line="748">a #graphene_matrix_t</doc>
2403+ <type name="Matrix" c:type="const graphene_matrix_t*"/>
2404+ </instance-parameter>
2405+ <parameter name="row" transfer-ownership="none">
2406+ <doc xml:space="preserve"
2407+ filename="src/graphene-matrix.c"
2408+ line="749">the row index</doc>
2409+ <type name="guint" c:type="unsigned int"/>
2410+ </parameter>
2411+ <parameter name="col" transfer-ownership="none">
2412+ <doc xml:space="preserve"
2413+ filename="src/graphene-matrix.c"
2414+ line="750">the column index</doc>
2415+ <type name="guint" c:type="unsigned int"/>
2416+ </parameter>
2417+ </parameters>
2418+ </method>
2419+ <method name="get_x_scale"
2420+ c:identifier="graphene_matrix_get_x_scale"
2421+ version="1.0">
2422+ <doc xml:space="preserve"
2423+ filename="src/graphene-matrix.c"
2424+ line="1795">Retrieves the scaling factor on the X axis in @m.</doc>
2425+ <source-position filename="include/graphene-matrix.h" line="279"/>
2426+ <return-value transfer-ownership="none">
2427+ <doc xml:space="preserve"
2428+ filename="src/graphene-matrix.c"
2429+ line="1801">the value of the scaling factor</doc>
2430+ <type name="gfloat" c:type="float"/>
2431+ </return-value>
2432+ <parameters>
2433+ <instance-parameter name="m" transfer-ownership="none">
2434+ <doc xml:space="preserve"
2435+ filename="src/graphene-matrix.c"
2436+ line="1797">a #graphene_matrix_t</doc>
2437+ <type name="Matrix" c:type="const graphene_matrix_t*"/>
2438+ </instance-parameter>
2439+ </parameters>
2440+ </method>
2441+ <method name="get_x_translation"
2442+ c:identifier="graphene_matrix_get_x_translation"
2443+ version="1.10">
2444+ <doc xml:space="preserve"
2445+ filename="src/graphene-matrix.c"
2446+ line="1747">Retrieves the translation component on the X axis from @m.</doc>
2447+ <source-position filename="include/graphene-matrix.h" line="272"/>
2448+ <return-value transfer-ownership="none">
2449+ <doc xml:space="preserve"
2450+ filename="src/graphene-matrix.c"
2451+ line="1753">the translation component</doc>
2452+ <type name="gfloat" c:type="float"/>
2453+ </return-value>
2454+ <parameters>
2455+ <instance-parameter name="m" transfer-ownership="none">
2456+ <doc xml:space="preserve"
2457+ filename="src/graphene-matrix.c"
2458+ line="1749">a #graphene_matrix_t</doc>
2459+ <type name="Matrix" c:type="const graphene_matrix_t*"/>
2460+ </instance-parameter>
2461+ </parameters>
2462+ </method>
2463+ <method name="get_y_scale"
2464+ c:identifier="graphene_matrix_get_y_scale"
2465+ version="1.0">
2466+ <doc xml:space="preserve"
2467+ filename="src/graphene-matrix.c"
2468+ line="1811">Retrieves the scaling factor on the Y axis in @m.</doc>
2469+ <source-position filename="include/graphene-matrix.h" line="281"/>
2470+ <return-value transfer-ownership="none">
2471+ <doc xml:space="preserve"
2472+ filename="src/graphene-matrix.c"
2473+ line="1817">the value of the scaling factor</doc>
2474+ <type name="gfloat" c:type="float"/>
2475+ </return-value>
2476+ <parameters>
2477+ <instance-parameter name="m" transfer-ownership="none">
2478+ <doc xml:space="preserve"
2479+ filename="src/graphene-matrix.c"
2480+ line="1813">a #graphene_matrix_t</doc>
2481+ <type name="Matrix" c:type="const graphene_matrix_t*"/>
2482+ </instance-parameter>
2483+ </parameters>
2484+ </method>
2485+ <method name="get_y_translation"
2486+ c:identifier="graphene_matrix_get_y_translation"
2487+ version="1.10">
2488+ <doc xml:space="preserve"
2489+ filename="src/graphene-matrix.c"
2490+ line="1763">Retrieves the translation component on the Y axis from @m.</doc>
2491+ <source-position filename="include/graphene-matrix.h" line="274"/>
2492+ <return-value transfer-ownership="none">
2493+ <doc xml:space="preserve"
2494+ filename="src/graphene-matrix.c"
2495+ line="1769">the translation component</doc>
2496+ <type name="gfloat" c:type="float"/>
2497+ </return-value>
2498+ <parameters>
2499+ <instance-parameter name="m" transfer-ownership="none">
2500+ <doc xml:space="preserve"
2501+ filename="src/graphene-matrix.c"
2502+ line="1765">a #graphene_matrix_t</doc>
2503+ <type name="Matrix" c:type="const graphene_matrix_t*"/>
2504+ </instance-parameter>
2505+ </parameters>
2506+ </method>
2507+ <method name="get_z_scale"
2508+ c:identifier="graphene_matrix_get_z_scale"
2509+ version="1.0">
2510+ <doc xml:space="preserve"
2511+ filename="src/graphene-matrix.c"
2512+ line="1827">Retrieves the scaling factor on the Z axis in @m.</doc>
2513+ <source-position filename="include/graphene-matrix.h" line="283"/>
2514+ <return-value transfer-ownership="none">
2515+ <doc xml:space="preserve"
2516+ filename="src/graphene-matrix.c"
2517+ line="1833">the value of the scaling factor</doc>
2518+ <type name="gfloat" c:type="float"/>
2519+ </return-value>
2520+ <parameters>
2521+ <instance-parameter name="m" transfer-ownership="none">
2522+ <doc xml:space="preserve"
2523+ filename="src/graphene-matrix.c"
2524+ line="1829">a #graphene_matrix_t</doc>
2525+ <type name="Matrix" c:type="const graphene_matrix_t*"/>
2526+ </instance-parameter>
2527+ </parameters>
2528+ </method>
2529+ <method name="get_z_translation"
2530+ c:identifier="graphene_matrix_get_z_translation"
2531+ version="1.10">
2532+ <doc xml:space="preserve"
2533+ filename="src/graphene-matrix.c"
2534+ line="1779">Retrieves the translation component on the Z axis from @m.</doc>
2535+ <source-position filename="include/graphene-matrix.h" line="276"/>
2536+ <return-value transfer-ownership="none">
2537+ <doc xml:space="preserve"
2538+ filename="src/graphene-matrix.c"
2539+ line="1785">the translation component</doc>
2540+ <type name="gfloat" c:type="float"/>
2541+ </return-value>
2542+ <parameters>
2543+ <instance-parameter name="m" transfer-ownership="none">
2544+ <doc xml:space="preserve"
2545+ filename="src/graphene-matrix.c"
2546+ line="1781">a #graphene_matrix_t</doc>
2547+ <type name="Matrix" c:type="const graphene_matrix_t*"/>
2548+ </instance-parameter>
2549+ </parameters>
2550+ </method>
2551+ <method name="init_from_2d"
2552+ c:identifier="graphene_matrix_init_from_2d"
2553+ version="1.0">
2554+ <doc xml:space="preserve"
2555+ filename="src/graphene-matrix.c"
2556+ line="597">Initializes a #graphene_matrix_t from the values of an affine
2557+transformation matrix.
2558+
2559+The arguments map to the following matrix layout:
2560+
2561+|[&lt;!-- language="plain" --&gt;
2562+ ⎛ xx yx ⎞ ⎛ a b 0 ⎞
2563+ ⎜ xy yy ⎟ = ⎜ c d 0 ⎟
2564+ ⎝ x0 y0 ⎠ ⎝ tx ty 1 ⎠
2565+]|
2566+
2567+This function can be used to convert between an affine matrix type
2568+from other libraries and a #graphene_matrix_t.</doc>
2569+ <source-position filename="include/graphene-matrix.h" line="109"/>
2570+ <return-value transfer-ownership="none">
2571+ <doc xml:space="preserve"
2572+ filename="src/graphene-matrix.c"
2573+ line="621">the initialized matrix</doc>
2574+ <type name="Matrix" c:type="graphene_matrix_t*"/>
2575+ </return-value>
2576+ <parameters>
2577+ <instance-parameter name="m" transfer-ownership="none">
2578+ <doc xml:space="preserve"
2579+ filename="src/graphene-matrix.c"
2580+ line="599">a #graphene_matrix_t</doc>
2581+ <type name="Matrix" c:type="graphene_matrix_t*"/>
2582+ </instance-parameter>
2583+ <parameter name="xx" transfer-ownership="none">
2584+ <doc xml:space="preserve"
2585+ filename="src/graphene-matrix.c"
2586+ line="600">the xx member</doc>
2587+ <type name="gdouble" c:type="double"/>
2588+ </parameter>
2589+ <parameter name="yx" transfer-ownership="none">
2590+ <doc xml:space="preserve"
2591+ filename="src/graphene-matrix.c"
2592+ line="601">the yx member</doc>
2593+ <type name="gdouble" c:type="double"/>
2594+ </parameter>
2595+ <parameter name="xy" transfer-ownership="none">
2596+ <doc xml:space="preserve"
2597+ filename="src/graphene-matrix.c"
2598+ line="602">the xy member</doc>
2599+ <type name="gdouble" c:type="double"/>
2600+ </parameter>
2601+ <parameter name="yy" transfer-ownership="none">
2602+ <doc xml:space="preserve"
2603+ filename="src/graphene-matrix.c"
2604+ line="603">the yy member</doc>
2605+ <type name="gdouble" c:type="double"/>
2606+ </parameter>
2607+ <parameter name="x_0" transfer-ownership="none">
2608+ <doc xml:space="preserve"
2609+ filename="src/graphene-matrix.c"
2610+ line="604">the x0 member</doc>
2611+ <type name="gdouble" c:type="double"/>
2612+ </parameter>
2613+ <parameter name="y_0" transfer-ownership="none">
2614+ <doc xml:space="preserve"
2615+ filename="src/graphene-matrix.c"
2616+ line="605">the y0 member</doc>
2617+ <type name="gdouble" c:type="double"/>
2618+ </parameter>
2619+ </parameters>
2620+ </method>
2621+ <method name="init_from_float"
2622+ c:identifier="graphene_matrix_init_from_float"
2623+ version="1.0">
2624+ <doc xml:space="preserve"
2625+ filename="src/graphene-matrix.c"
2626+ line="180">Initializes a #graphene_matrix_t with the given array of floating
2627+point values.</doc>
2628+ <source-position filename="include/graphene-matrix.h" line="54"/>
2629+ <return-value transfer-ownership="none">
2630+ <doc xml:space="preserve"
2631+ filename="src/graphene-matrix.c"
2632+ line="189">the initialized matrix</doc>
2633+ <type name="Matrix" c:type="graphene_matrix_t*"/>
2634+ </return-value>
2635+ <parameters>
2636+ <instance-parameter name="m" transfer-ownership="none">
2637+ <doc xml:space="preserve"
2638+ filename="src/graphene-matrix.c"
2639+ line="182">a #graphene_matrix_t</doc>
2640+ <type name="Matrix" c:type="graphene_matrix_t*"/>
2641+ </instance-parameter>
2642+ <parameter name="v" transfer-ownership="none">
2643+ <doc xml:space="preserve"
2644+ filename="src/graphene-matrix.c"
2645+ line="183">an array of at least 16 floating
2646+ point values</doc>
2647+ <array zero-terminated="0" c:type="const float*" fixed-size="16">
2648+ <type name="gfloat" c:type="float"/>
2649+ </array>
2650+ </parameter>
2651+ </parameters>
2652+ </method>
2653+ <method name="init_from_matrix"
2654+ c:identifier="graphene_matrix_init_from_matrix"
2655+ version="1.0">
2656+ <doc xml:space="preserve"
2657+ filename="src/graphene-matrix.c"
2658+ line="232">Initializes a #graphene_matrix_t using the values of the
2659+given matrix.</doc>
2660+ <source-position filename="include/graphene-matrix.h" line="63"/>
2661+ <return-value transfer-ownership="none">
2662+ <doc xml:space="preserve"
2663+ filename="src/graphene-matrix.c"
2664+ line="240">the initialized matrix</doc>
2665+ <type name="Matrix" c:type="graphene_matrix_t*"/>
2666+ </return-value>
2667+ <parameters>
2668+ <instance-parameter name="m" transfer-ownership="none">
2669+ <doc xml:space="preserve"
2670+ filename="src/graphene-matrix.c"
2671+ line="234">a #graphene_matrix_t</doc>
2672+ <type name="Matrix" c:type="graphene_matrix_t*"/>
2673+ </instance-parameter>
2674+ <parameter name="src" transfer-ownership="none">
2675+ <doc xml:space="preserve"
2676+ filename="src/graphene-matrix.c"
2677+ line="235">a #graphene_matrix_t</doc>
2678+ <type name="Matrix" c:type="const graphene_matrix_t*"/>
2679+ </parameter>
2680+ </parameters>
2681+ </method>
2682+ <method name="init_from_vec4"
2683+ c:identifier="graphene_matrix_init_from_vec4"
2684+ version="1.0">
2685+ <doc xml:space="preserve"
2686+ filename="src/graphene-matrix.c"
2687+ line="202">Initializes a #graphene_matrix_t with the given four row
2688+vectors.</doc>
2689+ <source-position filename="include/graphene-matrix.h" line="57"/>
2690+ <return-value transfer-ownership="none">
2691+ <doc xml:space="preserve"
2692+ filename="src/graphene-matrix.c"
2693+ line="213">the initialized matrix</doc>
2694+ <type name="Matrix" c:type="graphene_matrix_t*"/>
2695+ </return-value>
2696+ <parameters>
2697+ <instance-parameter name="m" transfer-ownership="none">
2698+ <doc xml:space="preserve"
2699+ filename="src/graphene-matrix.c"
2700+ line="204">a #graphene_matrix_t</doc>
2701+ <type name="Matrix" c:type="graphene_matrix_t*"/>
2702+ </instance-parameter>
2703+ <parameter name="v0" transfer-ownership="none">
2704+ <doc xml:space="preserve"
2705+ filename="src/graphene-matrix.c"
2706+ line="205">the first row vector</doc>
2707+ <type name="Vec4" c:type="const graphene_vec4_t*"/>
2708+ </parameter>
2709+ <parameter name="v1" transfer-ownership="none">
2710+ <doc xml:space="preserve"
2711+ filename="src/graphene-matrix.c"
2712+ line="206">the second row vector</doc>
2713+ <type name="Vec4" c:type="const graphene_vec4_t*"/>
2714+ </parameter>
2715+ <parameter name="v2" transfer-ownership="none">
2716+ <doc xml:space="preserve"
2717+ filename="src/graphene-matrix.c"
2718+ line="207">the third row vector</doc>
2719+ <type name="Vec4" c:type="const graphene_vec4_t*"/>
2720+ </parameter>
2721+ <parameter name="v3" transfer-ownership="none">
2722+ <doc xml:space="preserve"
2723+ filename="src/graphene-matrix.c"
2724+ line="208">the fourth row vector</doc>
2725+ <type name="Vec4" c:type="const graphene_vec4_t*"/>
2726+ </parameter>
2727+ </parameters>
2728+ </method>
2729+ <method name="init_frustum"
2730+ c:identifier="graphene_matrix_init_frustum"
2731+ version="1.2">
2732+ <doc xml:space="preserve"
2733+ filename="src/graphene-matrix.c"
2734+ line="351">Initializes a #graphene_matrix_t compatible with #graphene_frustum_t.
2735+
2736+See also: graphene_frustum_init_from_matrix()</doc>
2737+ <source-position filename="include/graphene-matrix.h" line="85"/>
2738+ <return-value transfer-ownership="none">
2739+ <doc xml:space="preserve"
2740+ filename="src/graphene-matrix.c"
2741+ line="365">the initialized matrix</doc>
2742+ <type name="Matrix" c:type="graphene_matrix_t*"/>
2743+ </return-value>
2744+ <parameters>
2745+ <instance-parameter name="m" transfer-ownership="none">
2746+ <doc xml:space="preserve"
2747+ filename="src/graphene-matrix.c"
2748+ line="353">a #graphene_matrix_t</doc>
2749+ <type name="Matrix" c:type="graphene_matrix_t*"/>
2750+ </instance-parameter>
2751+ <parameter name="left" transfer-ownership="none">
2752+ <doc xml:space="preserve"
2753+ filename="src/graphene-matrix.c"
2754+ line="354">distance of the left clipping plane</doc>
2755+ <type name="gfloat" c:type="float"/>
2756+ </parameter>
2757+ <parameter name="right" transfer-ownership="none">
2758+ <doc xml:space="preserve"
2759+ filename="src/graphene-matrix.c"
2760+ line="355">distance of the right clipping plane</doc>
2761+ <type name="gfloat" c:type="float"/>
2762+ </parameter>
2763+ <parameter name="bottom" transfer-ownership="none">
2764+ <doc xml:space="preserve"
2765+ filename="src/graphene-matrix.c"
2766+ line="356">distance of the bottom clipping plane</doc>
2767+ <type name="gfloat" c:type="float"/>
2768+ </parameter>
2769+ <parameter name="top" transfer-ownership="none">
2770+ <doc xml:space="preserve"
2771+ filename="src/graphene-matrix.c"
2772+ line="357">distance of the top clipping plane</doc>
2773+ <type name="gfloat" c:type="float"/>
2774+ </parameter>
2775+ <parameter name="z_near" transfer-ownership="none">
2776+ <doc xml:space="preserve"
2777+ filename="src/graphene-matrix.c"
2778+ line="358">distance of the near clipping plane</doc>
2779+ <type name="gfloat" c:type="float"/>
2780+ </parameter>
2781+ <parameter name="z_far" transfer-ownership="none">
2782+ <doc xml:space="preserve"
2783+ filename="src/graphene-matrix.c"
2784+ line="359">distance of the far clipping plane</doc>
2785+ <type name="gfloat" c:type="float"/>
2786+ </parameter>
2787+ </parameters>
2788+ </method>
2789+ <method name="init_identity"
2790+ c:identifier="graphene_matrix_init_identity"
2791+ version="1.0">
2792+ <doc xml:space="preserve"
2793+ filename="src/graphene-matrix.c"
2794+ line="162">Initializes a #graphene_matrix_t with the identity matrix.</doc>
2795+ <source-position filename="include/graphene-matrix.h" line="52"/>
2796+ <return-value transfer-ownership="none">
2797+ <doc xml:space="preserve"
2798+ filename="src/graphene-matrix.c"
2799+ line="168">the initialized matrix</doc>
2800+ <type name="Matrix" c:type="graphene_matrix_t*"/>
2801+ </return-value>
2802+ <parameters>
2803+ <instance-parameter name="m" transfer-ownership="none">
2804+ <doc xml:space="preserve"
2805+ filename="src/graphene-matrix.c"
2806+ line="164">a #graphene_matrix_t</doc>
2807+ <type name="Matrix" c:type="graphene_matrix_t*"/>
2808+ </instance-parameter>
2809+ </parameters>
2810+ </method>
2811+ <method name="init_look_at"
2812+ c:identifier="graphene_matrix_init_look_at"
2813+ version="1.0">
2814+ <doc xml:space="preserve"
2815+ filename="src/graphene-matrix.c"
2816+ line="311">Initializes a #graphene_matrix_t so that it positions the "camera"
2817+at the given @eye coordinates towards an object at the @center
2818+coordinates. The top of the camera is aligned to the direction
2819+of the @up vector.
2820+
2821+Before the transform, the camera is assumed to be placed at the
2822+origin, looking towards the negative Z axis, with the top side of
2823+the camera facing in the direction of the Y axis and the right
2824+side in the direction of the X axis.
2825+
2826+In theory, one could use @m to transform a model of such a camera
2827+into world-space. However, it is more common to use the inverse of
2828+@m to transform another object from world coordinates to the view
2829+coordinates of the camera. Typically you would then apply the
2830+camera projection transform to get from view to screen
2831+coordinates.</doc>
2832+ <source-position filename="include/graphene-matrix.h" line="80"/>
2833+ <return-value transfer-ownership="none">
2834+ <doc xml:space="preserve"
2835+ filename="src/graphene-matrix.c"
2836+ line="336">the initialized matrix</doc>
2837+ <type name="Matrix" c:type="graphene_matrix_t*"/>
2838+ </return-value>
2839+ <parameters>
2840+ <instance-parameter name="m" transfer-ownership="none">
2841+ <doc xml:space="preserve"
2842+ filename="src/graphene-matrix.c"
2843+ line="313">a #graphene_matrix_t</doc>
2844+ <type name="Matrix" c:type="graphene_matrix_t*"/>
2845+ </instance-parameter>
2846+ <parameter name="eye" transfer-ownership="none">
2847+ <doc xml:space="preserve"
2848+ filename="src/graphene-matrix.c"
2849+ line="314">the vector describing the position to look from</doc>
2850+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
2851+ </parameter>
2852+ <parameter name="center" transfer-ownership="none">
2853+ <doc xml:space="preserve"
2854+ filename="src/graphene-matrix.c"
2855+ line="315">the vector describing the position to look at</doc>
2856+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
2857+ </parameter>
2858+ <parameter name="up" transfer-ownership="none">
2859+ <doc xml:space="preserve"
2860+ filename="src/graphene-matrix.c"
2861+ line="316">the vector describing the world's upward direction; usually,
2862+ this is the graphene_vec3_y_axis() vector</doc>
2863+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
2864+ </parameter>
2865+ </parameters>
2866+ </method>
2867+ <method name="init_ortho"
2868+ c:identifier="graphene_matrix_init_ortho"
2869+ version="1.0">
2870+ <doc xml:space="preserve"
2871+ filename="src/graphene-matrix.c"
2872+ line="281">Initializes a #graphene_matrix_t with an orthographic projection.</doc>
2873+ <source-position filename="include/graphene-matrix.h" line="72"/>
2874+ <return-value transfer-ownership="none">
2875+ <doc xml:space="preserve"
2876+ filename="src/graphene-matrix.c"
2877+ line="293">the initialized matrix</doc>
2878+ <type name="Matrix" c:type="graphene_matrix_t*"/>
2879+ </return-value>
2880+ <parameters>
2881+ <instance-parameter name="m" transfer-ownership="none">
2882+ <doc xml:space="preserve"
2883+ filename="src/graphene-matrix.c"
2884+ line="283">a #graphene_matrix_t</doc>
2885+ <type name="Matrix" c:type="graphene_matrix_t*"/>
2886+ </instance-parameter>
2887+ <parameter name="left" transfer-ownership="none">
2888+ <doc xml:space="preserve"
2889+ filename="src/graphene-matrix.c"
2890+ line="284">the left edge of the clipping plane</doc>
2891+ <type name="gfloat" c:type="float"/>
2892+ </parameter>
2893+ <parameter name="right" transfer-ownership="none">
2894+ <doc xml:space="preserve"
2895+ filename="src/graphene-matrix.c"
2896+ line="285">the right edge of the clipping plane</doc>
2897+ <type name="gfloat" c:type="float"/>
2898+ </parameter>
2899+ <parameter name="top" transfer-ownership="none">
2900+ <doc xml:space="preserve"
2901+ filename="src/graphene-matrix.c"
2902+ line="286">the top edge of the clipping plane</doc>
2903+ <type name="gfloat" c:type="float"/>
2904+ </parameter>
2905+ <parameter name="bottom" transfer-ownership="none">
2906+ <doc xml:space="preserve"
2907+ filename="src/graphene-matrix.c"
2908+ line="287">the bottom edge of the clipping plane</doc>
2909+ <type name="gfloat" c:type="float"/>
2910+ </parameter>
2911+ <parameter name="z_near" transfer-ownership="none">
2912+ <doc xml:space="preserve"
2913+ filename="src/graphene-matrix.c"
2914+ line="288">the distance of the near clipping plane</doc>
2915+ <type name="gfloat" c:type="float"/>
2916+ </parameter>
2917+ <parameter name="z_far" transfer-ownership="none">
2918+ <doc xml:space="preserve"
2919+ filename="src/graphene-matrix.c"
2920+ line="289">the distance of the far clipping plane</doc>
2921+ <type name="gfloat" c:type="float"/>
2922+ </parameter>
2923+ </parameters>
2924+ </method>
2925+ <method name="init_perspective"
2926+ c:identifier="graphene_matrix_init_perspective"
2927+ version="1.0">
2928+ <doc xml:space="preserve"
2929+ filename="src/graphene-matrix.c"
2930+ line="253">Initializes a #graphene_matrix_t with a perspective projection.</doc>
2931+ <source-position filename="include/graphene-matrix.h" line="66"/>
2932+ <return-value transfer-ownership="none">
2933+ <doc xml:space="preserve"
2934+ filename="src/graphene-matrix.c"
2935+ line="263">the initialized matrix</doc>
2936+ <type name="Matrix" c:type="graphene_matrix_t*"/>
2937+ </return-value>
2938+ <parameters>
2939+ <instance-parameter name="m" transfer-ownership="none">
2940+ <doc xml:space="preserve"
2941+ filename="src/graphene-matrix.c"
2942+ line="255">a #graphene_matrix_t</doc>
2943+ <type name="Matrix" c:type="graphene_matrix_t*"/>
2944+ </instance-parameter>
2945+ <parameter name="fovy" transfer-ownership="none">
2946+ <doc xml:space="preserve"
2947+ filename="src/graphene-matrix.c"
2948+ line="256">the field of view angle, in degrees</doc>
2949+ <type name="gfloat" c:type="float"/>
2950+ </parameter>
2951+ <parameter name="aspect" transfer-ownership="none">
2952+ <doc xml:space="preserve"
2953+ filename="src/graphene-matrix.c"
2954+ line="257">the aspect value</doc>
2955+ <type name="gfloat" c:type="float"/>
2956+ </parameter>
2957+ <parameter name="z_near" transfer-ownership="none">
2958+ <doc xml:space="preserve"
2959+ filename="src/graphene-matrix.c"
2960+ line="258">the near Z plane</doc>
2961+ <type name="gfloat" c:type="float"/>
2962+ </parameter>
2963+ <parameter name="z_far" transfer-ownership="none">
2964+ <doc xml:space="preserve"
2965+ filename="src/graphene-matrix.c"
2966+ line="259">the far Z plane</doc>
2967+ <type name="gfloat" c:type="float"/>
2968+ </parameter>
2969+ </parameters>
2970+ </method>
2971+ <method name="init_rotate"
2972+ c:identifier="graphene_matrix_init_rotate"
2973+ version="1.0">
2974+ <doc xml:space="preserve"
2975+ filename="src/graphene-matrix.c"
2976+ line="468">Initializes @m to represent a rotation of @angle degrees on
2977+the axis represented by the @axis vector.</doc>
2978+ <source-position filename="include/graphene-matrix.h" line="101"/>
2979+ <return-value transfer-ownership="none">
2980+ <doc xml:space="preserve"
2981+ filename="src/graphene-matrix.c"
2982+ line="477">the initialized matrix</doc>
2983+ <type name="Matrix" c:type="graphene_matrix_t*"/>
2984+ </return-value>
2985+ <parameters>
2986+ <instance-parameter name="m" transfer-ownership="none">
2987+ <doc xml:space="preserve"
2988+ filename="src/graphene-matrix.c"
2989+ line="470">a #graphene_matrix_t</doc>
2990+ <type name="Matrix" c:type="graphene_matrix_t*"/>
2991+ </instance-parameter>
2992+ <parameter name="angle" transfer-ownership="none">
2993+ <doc xml:space="preserve"
2994+ filename="src/graphene-matrix.c"
2995+ line="471">the rotation angle, in degrees</doc>
2996+ <type name="gfloat" c:type="float"/>
2997+ </parameter>
2998+ <parameter name="axis" transfer-ownership="none">
2999+ <doc xml:space="preserve"
3000+ filename="src/graphene-matrix.c"
3001+ line="472">the axis vector as a #graphene_vec3_t</doc>
3002+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
3003+ </parameter>
3004+ </parameters>
3005+ </method>
3006+ <method name="init_scale"
3007+ c:identifier="graphene_matrix_init_scale"
3008+ version="1.0">
3009+ <doc xml:space="preserve"
3010+ filename="src/graphene-matrix.c"
3011+ line="383">Initializes a #graphene_matrix_t with the given scaling factors.</doc>
3012+ <source-position filename="include/graphene-matrix.h" line="93"/>
3013+ <return-value transfer-ownership="none">
3014+ <doc xml:space="preserve"
3015+ filename="src/graphene-matrix.c"
3016+ line="392">the initialized matrix</doc>
3017+ <type name="Matrix" c:type="graphene_matrix_t*"/>
3018+ </return-value>
3019+ <parameters>
3020+ <instance-parameter name="m" transfer-ownership="none">
3021+ <doc xml:space="preserve"
3022+ filename="src/graphene-matrix.c"
3023+ line="385">a #graphene_matrix_t</doc>
3024+ <type name="Matrix" c:type="graphene_matrix_t*"/>
3025+ </instance-parameter>
3026+ <parameter name="x" transfer-ownership="none">
3027+ <doc xml:space="preserve"
3028+ filename="src/graphene-matrix.c"
3029+ line="386">the scale factor on the X axis</doc>
3030+ <type name="gfloat" c:type="float"/>
3031+ </parameter>
3032+ <parameter name="y" transfer-ownership="none">
3033+ <doc xml:space="preserve"
3034+ filename="src/graphene-matrix.c"
3035+ line="387">the scale factor on the Y axis</doc>
3036+ <type name="gfloat" c:type="float"/>
3037+ </parameter>
3038+ <parameter name="z" transfer-ownership="none">
3039+ <doc xml:space="preserve"
3040+ filename="src/graphene-matrix.c"
3041+ line="388">the scale factor on the Z axis</doc>
3042+ <type name="gfloat" c:type="float"/>
3043+ </parameter>
3044+ </parameters>
3045+ </method>
3046+ <method name="init_skew"
3047+ c:identifier="graphene_matrix_init_skew"
3048+ version="1.0">
3049+ <doc xml:space="preserve"
3050+ filename="src/graphene-matrix.c"
3051+ line="436">Initializes a #graphene_matrix_t with a skew transformation
3052+with the given factors.</doc>
3053+ <source-position filename="include/graphene-matrix.h" line="105"/>
3054+ <return-value transfer-ownership="none">
3055+ <doc xml:space="preserve"
3056+ filename="src/graphene-matrix.c"
3057+ line="445">the initialized matrix</doc>
3058+ <type name="Matrix" c:type="graphene_matrix_t*"/>
3059+ </return-value>
3060+ <parameters>
3061+ <instance-parameter name="m" transfer-ownership="none">
3062+ <doc xml:space="preserve"
3063+ filename="src/graphene-matrix.c"
3064+ line="438">a #graphene_matrix_t</doc>
3065+ <type name="Matrix" c:type="graphene_matrix_t*"/>
3066+ </instance-parameter>
3067+ <parameter name="x_skew" transfer-ownership="none">
3068+ <doc xml:space="preserve"
3069+ filename="src/graphene-matrix.c"
3070+ line="439">skew factor, in radians, on the X axis</doc>
3071+ <type name="gfloat" c:type="float"/>
3072+ </parameter>
3073+ <parameter name="y_skew" transfer-ownership="none">
3074+ <doc xml:space="preserve"
3075+ filename="src/graphene-matrix.c"
3076+ line="440">skew factor, in radians, on the Y axis</doc>
3077+ <type name="gfloat" c:type="float"/>
3078+ </parameter>
3079+ </parameters>
3080+ </method>
3081+ <method name="init_translate"
3082+ c:identifier="graphene_matrix_init_translate"
3083+ version="1.0">
3084+ <doc xml:space="preserve"
3085+ filename="src/graphene-matrix.c"
3086+ line="411">Initializes a #graphene_matrix_t with a translation to the
3087+given coordinates.</doc>
3088+ <source-position filename="include/graphene-matrix.h" line="98"/>
3089+ <return-value transfer-ownership="none">
3090+ <doc xml:space="preserve"
3091+ filename="src/graphene-matrix.c"
3092+ line="419">the initialized matrix</doc>
3093+ <type name="Matrix" c:type="graphene_matrix_t*"/>
3094+ </return-value>
3095+ <parameters>
3096+ <instance-parameter name="m" transfer-ownership="none">
3097+ <doc xml:space="preserve"
3098+ filename="src/graphene-matrix.c"
3099+ line="413">a #graphene_matrix_t</doc>
3100+ <type name="Matrix" c:type="graphene_matrix_t*"/>
3101+ </instance-parameter>
3102+ <parameter name="p" transfer-ownership="none">
3103+ <doc xml:space="preserve"
3104+ filename="src/graphene-matrix.c"
3105+ line="414">the translation coordinates</doc>
3106+ <type name="Point3D" c:type="const graphene_point3d_t*"/>
3107+ </parameter>
3108+ </parameters>
3109+ </method>
3110+ <method name="interpolate"
3111+ c:identifier="graphene_matrix_interpolate"
3112+ version="1.0">
3113+ <doc xml:space="preserve"
3114+ filename="src/graphene-matrix.c"
3115+ line="2090">Linearly interpolates the two given #graphene_matrix_t by
3116+interpolating the decomposed transformations separately.
3117+
3118+If either matrix cannot be reduced to their transformations
3119+then the interpolation cannot be performed, and this function
3120+will return an identity matrix.</doc>
3121+ <source-position filename="include/graphene-matrix.h" line="286"/>
3122+ <return-value transfer-ownership="none">
3123+ <type name="none" c:type="void"/>
3124+ </return-value>
3125+ <parameters>
3126+ <instance-parameter name="a" transfer-ownership="none">
3127+ <doc xml:space="preserve"
3128+ filename="src/graphene-matrix.c"
3129+ line="2092">a #graphene_matrix_t</doc>
3130+ <type name="Matrix" c:type="const graphene_matrix_t*"/>
3131+ </instance-parameter>
3132+ <parameter name="b" transfer-ownership="none">
3133+ <doc xml:space="preserve"
3134+ filename="src/graphene-matrix.c"
3135+ line="2093">a #graphene_matrix_t</doc>
3136+ <type name="Matrix" c:type="const graphene_matrix_t*"/>
3137+ </parameter>
3138+ <parameter name="factor" transfer-ownership="none">
3139+ <doc xml:space="preserve"
3140+ filename="src/graphene-matrix.c"
3141+ line="2094">the linear interpolation factor</doc>
3142+ <type name="gdouble" c:type="double"/>
3143+ </parameter>
3144+ <parameter name="res"
3145+ direction="out"
3146+ caller-allocates="1"
3147+ transfer-ownership="none">
3148+ <doc xml:space="preserve"
3149+ filename="src/graphene-matrix.c"
3150+ line="2095">return location for the
3151+ interpolated matrix</doc>
3152+ <type name="Matrix" c:type="graphene_matrix_t*"/>
3153+ </parameter>
3154+ </parameters>
3155+ </method>
3156+ <method name="inverse"
3157+ c:identifier="graphene_matrix_inverse"
3158+ version="1.0">
3159+ <doc xml:space="preserve"
3160+ filename="src/graphene-matrix.c"
3161+ line="1679">Inverts the given matrix.</doc>
3162+ <source-position filename="include/graphene-matrix.h" line="261"/>
3163+ <return-value transfer-ownership="none">
3164+ <doc xml:space="preserve"
3165+ filename="src/graphene-matrix.c"
3166+ line="1687">`true` if the matrix is invertible</doc>
3167+ <type name="gboolean" c:type="_Bool"/>
3168+ </return-value>
3169+ <parameters>
3170+ <instance-parameter name="m" transfer-ownership="none">
3171+ <doc xml:space="preserve"
3172+ filename="src/graphene-matrix.c"
3173+ line="1681">a #graphene_matrix_t</doc>
3174+ <type name="Matrix" c:type="const graphene_matrix_t*"/>
3175+ </instance-parameter>
3176+ <parameter name="res"
3177+ direction="out"
3178+ caller-allocates="1"
3179+ transfer-ownership="none">
3180+ <doc xml:space="preserve"
3181+ filename="src/graphene-matrix.c"
3182+ line="1682">return location for the
3183+ inverse matrix</doc>
3184+ <type name="Matrix" c:type="graphene_matrix_t*"/>
3185+ </parameter>
3186+ </parameters>
3187+ </method>
3188+ <method name="is_2d" c:identifier="graphene_matrix_is_2d" version="1.0">
3189+ <doc xml:space="preserve"
3190+ filename="src/graphene-matrix.c"
3191+ line="509">Checks whether the given #graphene_matrix_t is compatible with an
3192+a 2D affine transformation matrix.</doc>
3193+ <source-position filename="include/graphene-matrix.h" line="120"/>
3194+ <return-value transfer-ownership="none">
3195+ <doc xml:space="preserve"
3196+ filename="src/graphene-matrix.c"
3197+ line="516">`true` if the matrix is compatible with an affine
3198+ transformation matrix</doc>
3199+ <type name="gboolean" c:type="_Bool"/>
3200+ </return-value>
3201+ <parameters>
3202+ <instance-parameter name="m" transfer-ownership="none">
3203+ <doc xml:space="preserve"
3204+ filename="src/graphene-matrix.c"
3205+ line="511">a #graphene_matrix_t</doc>
3206+ <type name="Matrix" c:type="const graphene_matrix_t*"/>
3207+ </instance-parameter>
3208+ </parameters>
3209+ </method>
3210+ <method name="is_backface_visible"
3211+ c:identifier="graphene_matrix_is_backface_visible"
3212+ version="1.0">
3213+ <doc xml:space="preserve"
3214+ filename="src/graphene-matrix.c"
3215+ line="555">Checks whether a #graphene_matrix_t has a visible back face.</doc>
3216+ <source-position filename="include/graphene-matrix.h" line="122"/>
3217+ <return-value transfer-ownership="none">
3218+ <doc xml:space="preserve"
3219+ filename="src/graphene-matrix.c"
3220+ line="561">`true` if the back face of the matrix is visible</doc>
3221+ <type name="gboolean" c:type="_Bool"/>
3222+ </return-value>
3223+ <parameters>
3224+ <instance-parameter name="m" transfer-ownership="none">
3225+ <doc xml:space="preserve"
3226+ filename="src/graphene-matrix.c"
3227+ line="557">a #graphene_matrix_t</doc>
3228+ <type name="Matrix" c:type="const graphene_matrix_t*"/>
3229+ </instance-parameter>
3230+ </parameters>
3231+ </method>
3232+ <method name="is_identity"
3233+ c:identifier="graphene_matrix_is_identity"
3234+ version="1.0">
3235+ <doc xml:space="preserve"
3236+ filename="src/graphene-matrix.c"
3237+ line="493">Checks whether the given #graphene_matrix_t is the identity matrix.</doc>
3238+ <source-position filename="include/graphene-matrix.h" line="118"/>
3239+ <return-value transfer-ownership="none">
3240+ <doc xml:space="preserve"
3241+ filename="src/graphene-matrix.c"
3242+ line="499">`true` if the matrix is the identity matrix</doc>
3243+ <type name="gboolean" c:type="_Bool"/>
3244+ </return-value>
3245+ <parameters>
3246+ <instance-parameter name="m" transfer-ownership="none">
3247+ <doc xml:space="preserve"
3248+ filename="src/graphene-matrix.c"
3249+ line="495">a #graphene_matrix_t</doc>
3250+ <type name="Matrix" c:type="const graphene_matrix_t*"/>
3251+ </instance-parameter>
3252+ </parameters>
3253+ </method>
3254+ <method name="is_singular"
3255+ c:identifier="graphene_matrix_is_singular"
3256+ version="1.0">
3257+ <doc xml:space="preserve"
3258+ filename="src/graphene-matrix.c"
3259+ line="577">Checks whether a matrix is singular.</doc>
3260+ <source-position filename="include/graphene-matrix.h" line="124"/>
3261+ <return-value transfer-ownership="none">
3262+ <doc xml:space="preserve"
3263+ filename="src/graphene-matrix.c"
3264+ line="583">`true` if the matrix is singular</doc>
3265+ <type name="gboolean" c:type="_Bool"/>
3266+ </return-value>
3267+ <parameters>
3268+ <instance-parameter name="m" transfer-ownership="none">
3269+ <doc xml:space="preserve"
3270+ filename="src/graphene-matrix.c"
3271+ line="579">a #graphene_matrix_t</doc>
3272+ <type name="Matrix" c:type="const graphene_matrix_t*"/>
3273+ </instance-parameter>
3274+ </parameters>
3275+ </method>
3276+ <method name="multiply"
3277+ c:identifier="graphene_matrix_multiply"
3278+ version="1.0">
3279+ <doc xml:space="preserve"
3280+ filename="src/graphene-matrix.c"
3281+ line="811">Multiplies two #graphene_matrix_t.
3282+
3283+Matrix multiplication is not commutative in general; the order of the factors matters.
3284+The product of this multiplication is (@a × @b)</doc>
3285+ <source-position filename="include/graphene-matrix.h" line="149"/>
3286+ <return-value transfer-ownership="none">
3287+ <type name="none" c:type="void"/>
3288+ </return-value>
3289+ <parameters>
3290+ <instance-parameter name="a" transfer-ownership="none">
3291+ <doc xml:space="preserve"
3292+ filename="src/graphene-matrix.c"
3293+ line="813">a #graphene_matrix_t</doc>
3294+ <type name="Matrix" c:type="const graphene_matrix_t*"/>
3295+ </instance-parameter>
3296+ <parameter name="b" transfer-ownership="none">
3297+ <doc xml:space="preserve"
3298+ filename="src/graphene-matrix.c"
3299+ line="814">a #graphene_matrix_t</doc>
3300+ <type name="Matrix" c:type="const graphene_matrix_t*"/>
3301+ </parameter>
3302+ <parameter name="res"
3303+ direction="out"
3304+ caller-allocates="1"
3305+ transfer-ownership="none">
3306+ <doc xml:space="preserve"
3307+ filename="src/graphene-matrix.c"
3308+ line="815">return location for the matrix
3309+ result</doc>
3310+ <type name="Matrix" c:type="graphene_matrix_t*"/>
3311+ </parameter>
3312+ </parameters>
3313+ </method>
3314+ <method name="near" c:identifier="graphene_matrix_near" version="1.10">
3315+ <doc xml:space="preserve"
3316+ filename="src/graphene-matrix.c"
3317+ line="2306">Compares the two given #graphene_matrix_t matrices and checks
3318+whether their values are within the given @epsilon of each
3319+other.</doc>
3320+ <source-position filename="include/graphene-matrix.h" line="292"/>
3321+ <return-value transfer-ownership="none">
3322+ <doc xml:space="preserve"
3323+ filename="src/graphene-matrix.c"
3324+ line="2316">`true` if the two matrices are near each other, and
3325+ `false` otherwise</doc>
3326+ <type name="gboolean" c:type="_Bool"/>
3327+ </return-value>
3328+ <parameters>
3329+ <instance-parameter name="a" transfer-ownership="none">
3330+ <doc xml:space="preserve"
3331+ filename="src/graphene-matrix.c"
3332+ line="2308">a #graphene_matrix_t</doc>
3333+ <type name="Matrix" c:type="const graphene_matrix_t*"/>
3334+ </instance-parameter>
3335+ <parameter name="b" transfer-ownership="none">
3336+ <doc xml:space="preserve"
3337+ filename="src/graphene-matrix.c"
3338+ line="2309">a #graphene_matrix_t</doc>
3339+ <type name="Matrix" c:type="const graphene_matrix_t*"/>
3340+ </parameter>
3341+ <parameter name="epsilon" transfer-ownership="none">
3342+ <doc xml:space="preserve"
3343+ filename="src/graphene-matrix.c"
3344+ line="2310">the threshold between the two matrices</doc>
3345+ <type name="gfloat" c:type="float"/>
3346+ </parameter>
3347+ </parameters>
3348+ </method>
3349+ <method name="normalize"
3350+ c:identifier="graphene_matrix_normalize"
3351+ version="1.0">
3352+ <doc xml:space="preserve"
3353+ filename="src/graphene-matrix.c"
3354+ line="1720">Normalizes the given #graphene_matrix_t.</doc>
3355+ <source-position filename="include/graphene-matrix.h" line="268"/>
3356+ <return-value transfer-ownership="none">
3357+ <type name="none" c:type="void"/>
3358+ </return-value>
3359+ <parameters>
3360+ <instance-parameter name="m" transfer-ownership="none">
3361+ <doc xml:space="preserve"
3362+ filename="src/graphene-matrix.c"
3363+ line="1722">a #graphene_matrix_t</doc>
3364+ <type name="Matrix" c:type="const graphene_matrix_t*"/>
3365+ </instance-parameter>
3366+ <parameter name="res"
3367+ direction="out"
3368+ caller-allocates="1"
3369+ transfer-ownership="none">
3370+ <doc xml:space="preserve"
3371+ filename="src/graphene-matrix.c"
3372+ line="1723">return location for the normalized matrix</doc>
3373+ <type name="Matrix" c:type="graphene_matrix_t*"/>
3374+ </parameter>
3375+ </parameters>
3376+ </method>
3377+ <method name="perspective"
3378+ c:identifier="graphene_matrix_perspective"
3379+ version="1.0">
3380+ <doc xml:space="preserve"
3381+ filename="src/graphene-matrix.c"
3382+ line="1698">Applies a perspective of @depth to the matrix.</doc>
3383+ <source-position filename="include/graphene-matrix.h" line="264"/>
3384+ <return-value transfer-ownership="none">
3385+ <type name="none" c:type="void"/>
3386+ </return-value>
3387+ <parameters>
3388+ <instance-parameter name="m" transfer-ownership="none">
3389+ <doc xml:space="preserve"
3390+ filename="src/graphene-matrix.c"
3391+ line="1700">a #graphene_matrix_t</doc>
3392+ <type name="Matrix" c:type="const graphene_matrix_t*"/>
3393+ </instance-parameter>
3394+ <parameter name="depth" transfer-ownership="none">
3395+ <doc xml:space="preserve"
3396+ filename="src/graphene-matrix.c"
3397+ line="1701">the depth of the perspective</doc>
3398+ <type name="gfloat" c:type="float"/>
3399+ </parameter>
3400+ <parameter name="res"
3401+ direction="out"
3402+ caller-allocates="1"
3403+ transfer-ownership="none">
3404+ <doc xml:space="preserve"
3405+ filename="src/graphene-matrix.c"
3406+ line="1702">return location for the
3407+ perspective matrix</doc>
3408+ <type name="Matrix" c:type="graphene_matrix_t*"/>
3409+ </parameter>
3410+ </parameters>
3411+ </method>
3412+ <method name="print" c:identifier="graphene_matrix_print" version="1.0">
3413+ <doc xml:space="preserve"
3414+ filename="src/graphene-matrix.c"
3415+ line="2281">Prints the contents of a matrix to the standard error stream.
3416+
3417+This function is only useful for debugging; there are no guarantees
3418+made on the format of the output.</doc>
3419+ <source-position filename="include/graphene-matrix.h" line="303"/>
3420+ <return-value transfer-ownership="none">
3421+ <type name="none" c:type="void"/>
3422+ </return-value>
3423+ <parameters>
3424+ <instance-parameter name="m" transfer-ownership="none">
3425+ <doc xml:space="preserve"
3426+ filename="src/graphene-matrix.c"
3427+ line="2283">The matrix to print</doc>
3428+ <type name="Matrix" c:type="const graphene_matrix_t*"/>
3429+ </instance-parameter>
3430+ </parameters>
3431+ </method>
3432+ <method name="project_point"
3433+ c:identifier="graphene_matrix_project_point"
3434+ version="1.0">
3435+ <doc xml:space="preserve"
3436+ filename="src/graphene-matrix.c"
3437+ line="1165">Projects a #graphene_point_t using the matrix @m.</doc>
3438+ <source-position filename="include/graphene-matrix.h" line="193"/>
3439+ <return-value transfer-ownership="none">
3440+ <type name="none" c:type="void"/>
3441+ </return-value>
3442+ <parameters>
3443+ <instance-parameter name="m" transfer-ownership="none">
3444+ <doc xml:space="preserve"
3445+ filename="src/graphene-matrix.c"
3446+ line="1167">a #graphene_matrix_t</doc>
3447+ <type name="Matrix" c:type="const graphene_matrix_t*"/>
3448+ </instance-parameter>
3449+ <parameter name="p" transfer-ownership="none">
3450+ <doc xml:space="preserve"
3451+ filename="src/graphene-matrix.c"
3452+ line="1168">a #graphene_point_t</doc>
3453+ <type name="Point" c:type="const graphene_point_t*"/>
3454+ </parameter>
3455+ <parameter name="res"
3456+ direction="out"
3457+ caller-allocates="1"
3458+ transfer-ownership="none">
3459+ <doc xml:space="preserve"
3460+ filename="src/graphene-matrix.c"
3461+ line="1169">return location for the projected
3462+ point</doc>
3463+ <type name="Point" c:type="graphene_point_t*"/>
3464+ </parameter>
3465+ </parameters>
3466+ </method>
3467+ <method name="project_rect"
3468+ c:identifier="graphene_matrix_project_rect"
3469+ version="1.2">
3470+ <doc xml:space="preserve"
3471+ filename="src/graphene-matrix.c"
3472+ line="1245">Projects all corners of a #graphene_rect_t using the given matrix.
3473+
3474+See also: graphene_matrix_project_point()</doc>
3475+ <source-position filename="include/graphene-matrix.h" line="201"/>
3476+ <return-value transfer-ownership="none">
3477+ <type name="none" c:type="void"/>
3478+ </return-value>
3479+ <parameters>
3480+ <instance-parameter name="m" transfer-ownership="none">
3481+ <doc xml:space="preserve"
3482+ filename="src/graphene-matrix.c"
3483+ line="1247">a #graphene_matrix_t</doc>
3484+ <type name="Matrix" c:type="const graphene_matrix_t*"/>
3485+ </instance-parameter>
3486+ <parameter name="r" transfer-ownership="none">
3487+ <doc xml:space="preserve"
3488+ filename="src/graphene-matrix.c"
3489+ line="1248">a #graphene_rect_t</doc>
3490+ <type name="Rect" c:type="const graphene_rect_t*"/>
3491+ </parameter>
3492+ <parameter name="res"
3493+ direction="out"
3494+ caller-allocates="1"
3495+ transfer-ownership="none">
3496+ <doc xml:space="preserve"
3497+ filename="src/graphene-matrix.c"
3498+ line="1249">return location for the projected
3499+ rectangle</doc>
3500+ <type name="Quad" c:type="graphene_quad_t*"/>
3501+ </parameter>
3502+ </parameters>
3503+ </method>
3504+ <method name="project_rect_bounds"
3505+ c:identifier="graphene_matrix_project_rect_bounds"
3506+ version="1.0">
3507+ <doc xml:space="preserve"
3508+ filename="src/graphene-matrix.c"
3509+ line="1199">Projects a #graphene_rect_t using the given matrix.
3510+
3511+The resulting rectangle is the axis aligned bounding rectangle capable
3512+of fully containing the projected rectangle.</doc>
3513+ <source-position filename="include/graphene-matrix.h" line="197"/>
3514+ <return-value transfer-ownership="none">
3515+ <type name="none" c:type="void"/>
3516+ </return-value>
3517+ <parameters>
3518+ <instance-parameter name="m" transfer-ownership="none">
3519+ <doc xml:space="preserve"
3520+ filename="src/graphene-matrix.c"
3521+ line="1201">a #graphene_matrix_t</doc>
3522+ <type name="Matrix" c:type="const graphene_matrix_t*"/>
3523+ </instance-parameter>
3524+ <parameter name="r" transfer-ownership="none">
3525+ <doc xml:space="preserve"
3526+ filename="src/graphene-matrix.c"
3527+ line="1202">a #graphene_rect_t</doc>
3528+ <type name="Rect" c:type="const graphene_rect_t*"/>
3529+ </parameter>
3530+ <parameter name="res"
3531+ direction="out"
3532+ caller-allocates="1"
3533+ transfer-ownership="none">
3534+ <doc xml:space="preserve"
3535+ filename="src/graphene-matrix.c"
3536+ line="1203">return location for the projected
3537+ rectangle</doc>
3538+ <type name="Rect" c:type="graphene_rect_t*"/>
3539+ </parameter>
3540+ </parameters>
3541+ </method>
3542+ <method name="rotate"
3543+ c:identifier="graphene_matrix_rotate"
3544+ version="1.0">
3545+ <doc xml:space="preserve"
3546+ filename="src/graphene-matrix.c"
3547+ line="1490">Adds a rotation transformation to @m, using the given @angle
3548+and @axis vector.
3549+
3550+This is the equivalent of calling graphene_matrix_init_rotate() and
3551+then multiplying the matrix @m with the rotation matrix.</doc>
3552+ <source-position filename="include/graphene-matrix.h" line="224"/>
3553+ <return-value transfer-ownership="none">
3554+ <type name="none" c:type="void"/>
3555+ </return-value>
3556+ <parameters>
3557+ <instance-parameter name="m" transfer-ownership="none">
3558+ <doc xml:space="preserve"
3559+ filename="src/graphene-matrix.c"
3560+ line="1492">a #graphene_matrix_t</doc>
3561+ <type name="Matrix" c:type="graphene_matrix_t*"/>
3562+ </instance-parameter>
3563+ <parameter name="angle" transfer-ownership="none">
3564+ <doc xml:space="preserve"
3565+ filename="src/graphene-matrix.c"
3566+ line="1493">the rotation angle, in degrees</doc>
3567+ <type name="gfloat" c:type="float"/>
3568+ </parameter>
3569+ <parameter name="axis" transfer-ownership="none">
3570+ <doc xml:space="preserve"
3571+ filename="src/graphene-matrix.c"
3572+ line="1494">the rotation axis, as a #graphene_vec3_t</doc>
3573+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
3574+ </parameter>
3575+ </parameters>
3576+ </method>
3577+ <method name="rotate_euler"
3578+ c:identifier="graphene_matrix_rotate_euler"
3579+ version="1.2">
3580+ <doc xml:space="preserve"
3581+ filename="src/graphene-matrix.c"
3582+ line="1459">Adds a rotation transformation to @m, using the given
3583+#graphene_euler_t.</doc>
3584+ <source-position filename="include/graphene-matrix.h" line="240"/>
3585+ <return-value transfer-ownership="none">
3586+ <type name="none" c:type="void"/>
3587+ </return-value>
3588+ <parameters>
3589+ <instance-parameter name="m" transfer-ownership="none">
3590+ <doc xml:space="preserve"
3591+ filename="src/graphene-matrix.c"
3592+ line="1461">a #graphene_matrix_t</doc>
3593+ <type name="Matrix" c:type="graphene_matrix_t*"/>
3594+ </instance-parameter>
3595+ <parameter name="e" transfer-ownership="none">
3596+ <doc xml:space="preserve"
3597+ filename="src/graphene-matrix.c"
3598+ line="1462">a rotation described by a #graphene_euler_t</doc>
3599+ <type name="Euler" c:type="const graphene_euler_t*"/>
3600+ </parameter>
3601+ </parameters>
3602+ </method>
3603+ <method name="rotate_quaternion"
3604+ c:identifier="graphene_matrix_rotate_quaternion"
3605+ version="1.2">
3606+ <doc xml:space="preserve"
3607+ filename="src/graphene-matrix.c"
3608+ line="1436">Adds a rotation transformation to @m, using the given
3609+#graphene_quaternion_t.
3610+
3611+This is the equivalent of calling graphene_quaternion_to_matrix() and
3612+then multiplying @m with the rotation matrix.</doc>
3613+ <source-position filename="include/graphene-matrix.h" line="237"/>
3614+ <return-value transfer-ownership="none">
3615+ <type name="none" c:type="void"/>
3616+ </return-value>
3617+ <parameters>
3618+ <instance-parameter name="m" transfer-ownership="none">
3619+ <doc xml:space="preserve"
3620+ filename="src/graphene-matrix.c"
3621+ line="1438">a #graphene_matrix_t</doc>
3622+ <type name="Matrix" c:type="graphene_matrix_t*"/>
3623+ </instance-parameter>
3624+ <parameter name="q" transfer-ownership="none">
3625+ <doc xml:space="preserve"
3626+ filename="src/graphene-matrix.c"
3627+ line="1439">a rotation described by a #graphene_quaternion_t</doc>
3628+ <type name="Quaternion" c:type="const graphene_quaternion_t*"/>
3629+ </parameter>
3630+ </parameters>
3631+ </method>
3632+ <method name="rotate_x"
3633+ c:identifier="graphene_matrix_rotate_x"
3634+ version="1.0">
3635+ <doc xml:space="preserve"
3636+ filename="src/graphene-matrix.c"
3637+ line="1512">Adds a rotation transformation around the X axis to @m, using
3638+the given @angle.
3639+
3640+See also: graphene_matrix_rotate()</doc>
3641+ <source-position filename="include/graphene-matrix.h" line="228"/>
3642+ <return-value transfer-ownership="none">
3643+ <type name="none" c:type="void"/>
3644+ </return-value>
3645+ <parameters>
3646+ <instance-parameter name="m" transfer-ownership="none">
3647+ <doc xml:space="preserve"
3648+ filename="src/graphene-matrix.c"
3649+ line="1514">a #graphene_matrix_t</doc>
3650+ <type name="Matrix" c:type="graphene_matrix_t*"/>
3651+ </instance-parameter>
3652+ <parameter name="angle" transfer-ownership="none">
3653+ <doc xml:space="preserve"
3654+ filename="src/graphene-matrix.c"
3655+ line="1515">the rotation angle, in degrees</doc>
3656+ <type name="gfloat" c:type="float"/>
3657+ </parameter>
3658+ </parameters>
3659+ </method>
3660+ <method name="rotate_y"
3661+ c:identifier="graphene_matrix_rotate_y"
3662+ version="1.0">
3663+ <doc xml:space="preserve"
3664+ filename="src/graphene-matrix.c"
3665+ line="1532">Adds a rotation transformation around the Y axis to @m, using
3666+the given @angle.
3667+
3668+See also: graphene_matrix_rotate()</doc>
3669+ <source-position filename="include/graphene-matrix.h" line="231"/>
3670+ <return-value transfer-ownership="none">
3671+ <type name="none" c:type="void"/>
3672+ </return-value>
3673+ <parameters>
3674+ <instance-parameter name="m" transfer-ownership="none">
3675+ <doc xml:space="preserve"
3676+ filename="src/graphene-matrix.c"
3677+ line="1534">a #graphene_matrix_t</doc>
3678+ <type name="Matrix" c:type="graphene_matrix_t*"/>
3679+ </instance-parameter>
3680+ <parameter name="angle" transfer-ownership="none">
3681+ <doc xml:space="preserve"
3682+ filename="src/graphene-matrix.c"
3683+ line="1535">the rotation angle, in degrees</doc>
3684+ <type name="gfloat" c:type="float"/>
3685+ </parameter>
3686+ </parameters>
3687+ </method>
3688+ <method name="rotate_z"
3689+ c:identifier="graphene_matrix_rotate_z"
3690+ version="1.0">
3691+ <doc xml:space="preserve"
3692+ filename="src/graphene-matrix.c"
3693+ line="1552">Adds a rotation transformation around the Z axis to @m, using
3694+the given @angle.
3695+
3696+See also: graphene_matrix_rotate()</doc>
3697+ <source-position filename="include/graphene-matrix.h" line="234"/>
3698+ <return-value transfer-ownership="none">
3699+ <type name="none" c:type="void"/>
3700+ </return-value>
3701+ <parameters>
3702+ <instance-parameter name="m" transfer-ownership="none">
3703+ <doc xml:space="preserve"
3704+ filename="src/graphene-matrix.c"
3705+ line="1554">a #graphene_matrix_t</doc>
3706+ <type name="Matrix" c:type="graphene_matrix_t*"/>
3707+ </instance-parameter>
3708+ <parameter name="angle" transfer-ownership="none">
3709+ <doc xml:space="preserve"
3710+ filename="src/graphene-matrix.c"
3711+ line="1555">the rotation angle, in degrees</doc>
3712+ <type name="gfloat" c:type="float"/>
3713+ </parameter>
3714+ </parameters>
3715+ </method>
3716+ <method name="scale" c:identifier="graphene_matrix_scale" version="1.0">
3717+ <doc xml:space="preserve"
3718+ filename="src/graphene-matrix.c"
3719+ line="1572">Adds a scaling transformation to @m, using the three
3720+given factors.
3721+
3722+This is the equivalent of calling graphene_matrix_init_scale() and then
3723+multiplying the matrix @m with the scale matrix.</doc>
3724+ <source-position filename="include/graphene-matrix.h" line="243"/>
3725+ <return-value transfer-ownership="none">
3726+ <type name="none" c:type="void"/>
3727+ </return-value>
3728+ <parameters>
3729+ <instance-parameter name="m" transfer-ownership="none">
3730+ <doc xml:space="preserve"
3731+ filename="src/graphene-matrix.c"
3732+ line="1574">a #graphene_matrix_t</doc>
3733+ <type name="Matrix" c:type="graphene_matrix_t*"/>
3734+ </instance-parameter>
3735+ <parameter name="factor_x" transfer-ownership="none">
3736+ <doc xml:space="preserve"
3737+ filename="src/graphene-matrix.c"
3738+ line="1575">scaling factor on the X axis</doc>
3739+ <type name="gfloat" c:type="float"/>
3740+ </parameter>
3741+ <parameter name="factor_y" transfer-ownership="none">
3742+ <doc xml:space="preserve"
3743+ filename="src/graphene-matrix.c"
3744+ line="1576">scaling factor on the Y axis</doc>
3745+ <type name="gfloat" c:type="float"/>
3746+ </parameter>
3747+ <parameter name="factor_z" transfer-ownership="none">
3748+ <doc xml:space="preserve"
3749+ filename="src/graphene-matrix.c"
3750+ line="1577">scaling factor on the Z axis</doc>
3751+ <type name="gfloat" c:type="float"/>
3752+ </parameter>
3753+ </parameters>
3754+ </method>
3755+ <method name="skew_xy"
3756+ c:identifier="graphene_matrix_skew_xy"
3757+ version="1.0">
3758+ <doc xml:space="preserve"
3759+ filename="src/graphene-matrix.c"
3760+ line="1599">Adds a skew of @factor on the X and Y axis to the given matrix.</doc>
3761+ <source-position filename="include/graphene-matrix.h" line="248"/>
3762+ <return-value transfer-ownership="none">
3763+ <type name="none" c:type="void"/>
3764+ </return-value>
3765+ <parameters>
3766+ <instance-parameter name="m" transfer-ownership="none">
3767+ <doc xml:space="preserve"
3768+ filename="src/graphene-matrix.c"
3769+ line="1601">a #graphene_matrix_t</doc>
3770+ <type name="Matrix" c:type="graphene_matrix_t*"/>
3771+ </instance-parameter>
3772+ <parameter name="factor" transfer-ownership="none">
3773+ <doc xml:space="preserve"
3774+ filename="src/graphene-matrix.c"
3775+ line="1602">skew factor</doc>
3776+ <type name="gfloat" c:type="float"/>
3777+ </parameter>
3778+ </parameters>
3779+ </method>
3780+ <method name="skew_xz"
3781+ c:identifier="graphene_matrix_skew_xz"
3782+ version="1.0">
3783+ <doc xml:space="preserve"
3784+ filename="src/graphene-matrix.c"
3785+ line="1620">Adds a skew of @factor on the X and Z axis to the given matrix.</doc>
3786+ <source-position filename="include/graphene-matrix.h" line="251"/>
3787+ <return-value transfer-ownership="none">
3788+ <type name="none" c:type="void"/>
3789+ </return-value>
3790+ <parameters>
3791+ <instance-parameter name="m" transfer-ownership="none">
3792+ <doc xml:space="preserve"
3793+ filename="src/graphene-matrix.c"
3794+ line="1622">a #graphene_matrix_t</doc>
3795+ <type name="Matrix" c:type="graphene_matrix_t*"/>
3796+ </instance-parameter>
3797+ <parameter name="factor" transfer-ownership="none">
3798+ <doc xml:space="preserve"
3799+ filename="src/graphene-matrix.c"
3800+ line="1623">skew factor</doc>
3801+ <type name="gfloat" c:type="float"/>
3802+ </parameter>
3803+ </parameters>
3804+ </method>
3805+ <method name="skew_yz"
3806+ c:identifier="graphene_matrix_skew_yz"
3807+ version="1.0">
3808+ <doc xml:space="preserve"
3809+ filename="src/graphene-matrix.c"
3810+ line="1641">Adds a skew of @factor on the Y and Z axis to the given matrix.</doc>
3811+ <source-position filename="include/graphene-matrix.h" line="254"/>
3812+ <return-value transfer-ownership="none">
3813+ <type name="none" c:type="void"/>
3814+ </return-value>
3815+ <parameters>
3816+ <instance-parameter name="m" transfer-ownership="none">
3817+ <doc xml:space="preserve"
3818+ filename="src/graphene-matrix.c"
3819+ line="1643">a #graphene_matrix_t</doc>
3820+ <type name="Matrix" c:type="graphene_matrix_t*"/>
3821+ </instance-parameter>
3822+ <parameter name="factor" transfer-ownership="none">
3823+ <doc xml:space="preserve"
3824+ filename="src/graphene-matrix.c"
3825+ line="1644">skew factor</doc>
3826+ <type name="gfloat" c:type="float"/>
3827+ </parameter>
3828+ </parameters>
3829+ </method>
3830+ <method name="to_2d" c:identifier="graphene_matrix_to_2d" version="1.0">
3831+ <doc xml:space="preserve"
3832+ filename="src/graphene-matrix.c"
3833+ line="642">Converts a #graphene_matrix_t to an affine transformation
3834+matrix, if the given matrix is compatible.
3835+
3836+The returned values have the following layout:
3837+
3838+|[&lt;!-- language="plain" --&gt;
3839+ ⎛ xx yx ⎞ ⎛ a b 0 ⎞
3840+ ⎜ xy yy ⎟ = ⎜ c d 0 ⎟
3841+ ⎝ x0 y0 ⎠ ⎝ tx ty 1 ⎠
3842+]|
3843+
3844+This function can be used to convert between a #graphene_matrix_t
3845+and an affine matrix type from other libraries.</doc>
3846+ <source-position filename="include/graphene-matrix.h" line="130"/>
3847+ <return-value transfer-ownership="none">
3848+ <doc xml:space="preserve"
3849+ filename="src/graphene-matrix.c"
3850+ line="666">`true` if the matrix is compatible with an affine
3851+ transformation matrix</doc>
3852+ <type name="gboolean" c:type="_Bool"/>
3853+ </return-value>
3854+ <parameters>
3855+ <instance-parameter name="m" transfer-ownership="none">
3856+ <doc xml:space="preserve"
3857+ filename="src/graphene-matrix.c"
3858+ line="644">a #graphene_matrix_t</doc>
3859+ <type name="Matrix" c:type="const graphene_matrix_t*"/>
3860+ </instance-parameter>
3861+ <parameter name="xx"
3862+ direction="out"
3863+ caller-allocates="0"
3864+ transfer-ownership="full">
3865+ <doc xml:space="preserve"
3866+ filename="src/graphene-matrix.c"
3867+ line="645">return location for the xx member</doc>
3868+ <type name="gdouble" c:type="double*"/>
3869+ </parameter>
3870+ <parameter name="yx"
3871+ direction="out"
3872+ caller-allocates="0"
3873+ transfer-ownership="full">
3874+ <doc xml:space="preserve"
3875+ filename="src/graphene-matrix.c"
3876+ line="646">return location for the yx member</doc>
3877+ <type name="gdouble" c:type="double*"/>
3878+ </parameter>
3879+ <parameter name="xy"
3880+ direction="out"
3881+ caller-allocates="0"
3882+ transfer-ownership="full">
3883+ <doc xml:space="preserve"
3884+ filename="src/graphene-matrix.c"
3885+ line="647">return location for the xy member</doc>
3886+ <type name="gdouble" c:type="double*"/>
3887+ </parameter>
3888+ <parameter name="yy"
3889+ direction="out"
3890+ caller-allocates="0"
3891+ transfer-ownership="full">
3892+ <doc xml:space="preserve"
3893+ filename="src/graphene-matrix.c"
3894+ line="648">return location for the yy member</doc>
3895+ <type name="gdouble" c:type="double*"/>
3896+ </parameter>
3897+ <parameter name="x_0"
3898+ direction="out"
3899+ caller-allocates="0"
3900+ transfer-ownership="full">
3901+ <doc xml:space="preserve"
3902+ filename="src/graphene-matrix.c"
3903+ line="649">return location for the x0 member</doc>
3904+ <type name="gdouble" c:type="double*"/>
3905+ </parameter>
3906+ <parameter name="y_0"
3907+ direction="out"
3908+ caller-allocates="0"
3909+ transfer-ownership="full">
3910+ <doc xml:space="preserve"
3911+ filename="src/graphene-matrix.c"
3912+ line="650">return location for the y0 member</doc>
3913+ <type name="gdouble" c:type="double*"/>
3914+ </parameter>
3915+ </parameters>
3916+ </method>
3917+ <method name="to_float"
3918+ c:identifier="graphene_matrix_to_float"
3919+ version="1.0">
3920+ <doc xml:space="preserve"
3921+ filename="src/graphene-matrix.c"
3922+ line="136">Converts a #graphene_matrix_t to an array of floating point
3923+values.</doc>
3924+ <source-position filename="include/graphene-matrix.h" line="127"/>
3925+ <return-value transfer-ownership="none">
3926+ <type name="none" c:type="void"/>
3927+ </return-value>
3928+ <parameters>
3929+ <instance-parameter name="m" transfer-ownership="none">
3930+ <doc xml:space="preserve"
3931+ filename="src/graphene-matrix.c"
3932+ line="138">a #graphene_matrix_t</doc>
3933+ <type name="Matrix" c:type="const graphene_matrix_t*"/>
3934+ </instance-parameter>
3935+ <parameter name="v"
3936+ direction="out"
3937+ caller-allocates="1"
3938+ transfer-ownership="none">
3939+ <doc xml:space="preserve"
3940+ filename="src/graphene-matrix.c"
3941+ line="139">return location
3942+ for an array of floating point values. The array must be capable
3943+ of holding at least 16 values.</doc>
3944+ <array zero-terminated="0" c:type="float*" fixed-size="16">
3945+ <type name="gfloat" c:type="float"/>
3946+ </array>
3947+ </parameter>
3948+ </parameters>
3949+ </method>
3950+ <method name="transform_bounds"
3951+ c:identifier="graphene_matrix_transform_bounds"
3952+ version="1.0">
3953+ <doc xml:space="preserve"
3954+ filename="src/graphene-matrix.c"
3955+ line="1003">Transforms each corner of a #graphene_rect_t using the given matrix @m.
3956+
3957+The result is the axis aligned bounding rectangle containing the coplanar
3958+quadrilateral.
3959+
3960+See also: graphene_matrix_transform_point()</doc>
3961+ <source-position filename="include/graphene-matrix.h" line="176"/>
3962+ <return-value transfer-ownership="none">
3963+ <type name="none" c:type="void"/>
3964+ </return-value>
3965+ <parameters>
3966+ <instance-parameter name="m" transfer-ownership="none">
3967+ <doc xml:space="preserve"
3968+ filename="src/graphene-matrix.c"
3969+ line="1005">a #graphene_matrix_t</doc>
3970+ <type name="Matrix" c:type="const graphene_matrix_t*"/>
3971+ </instance-parameter>
3972+ <parameter name="r" transfer-ownership="none">
3973+ <doc xml:space="preserve"
3974+ filename="src/graphene-matrix.c"
3975+ line="1006">a #graphene_rect_t</doc>
3976+ <type name="Rect" c:type="const graphene_rect_t*"/>
3977+ </parameter>
3978+ <parameter name="res"
3979+ direction="out"
3980+ caller-allocates="1"
3981+ transfer-ownership="none">
3982+ <doc xml:space="preserve"
3983+ filename="src/graphene-matrix.c"
3984+ line="1007">return location for the bounds
3985+ of the transformed rectangle</doc>
3986+ <type name="Rect" c:type="graphene_rect_t*"/>
3987+ </parameter>
3988+ </parameters>
3989+ </method>
3990+ <method name="transform_box"
3991+ c:identifier="graphene_matrix_transform_box"
3992+ version="1.2">
3993+ <doc xml:space="preserve"
3994+ filename="src/graphene-matrix.c"
3995+ line="1108">Transforms the vertices of a #graphene_box_t using the given matrix @m.
3996+
3997+The result is the axis aligned bounding box containing the transformed
3998+vertices.</doc>
3999+ <source-position filename="include/graphene-matrix.h" line="184"/>
4000+ <return-value transfer-ownership="none">
4001+ <type name="none" c:type="void"/>
4002+ </return-value>
4003+ <parameters>
4004+ <instance-parameter name="m" transfer-ownership="none">
4005+ <doc xml:space="preserve"
4006+ filename="src/graphene-matrix.c"
4007+ line="1110">a #graphene_matrix_t</doc>
4008+ <type name="Matrix" c:type="const graphene_matrix_t*"/>
4009+ </instance-parameter>
4010+ <parameter name="b" transfer-ownership="none">
4011+ <doc xml:space="preserve"
4012+ filename="src/graphene-matrix.c"
4013+ line="1111">a #graphene_box_t</doc>
4014+ <type name="Box" c:type="const graphene_box_t*"/>
4015+ </parameter>
4016+ <parameter name="res"
4017+ direction="out"
4018+ caller-allocates="1"
4019+ transfer-ownership="none">
4020+ <doc xml:space="preserve"
4021+ filename="src/graphene-matrix.c"
4022+ line="1112">return location for the bounds
4023+ of the transformed box</doc>
4024+ <type name="Box" c:type="graphene_box_t*"/>
4025+ </parameter>
4026+ </parameters>
4027+ </method>
4028+ <method name="transform_point"
4029+ c:identifier="graphene_matrix_transform_point"
4030+ version="1.0">
4031+ <doc xml:space="preserve"
4032+ filename="src/graphene-matrix.c"
4033+ line="897">Transforms the given #graphene_point_t using the matrix @m.
4034+
4035+Unlike graphene_matrix_transform_vec3(), this function will take into
4036+account the fourth row vector of the #graphene_matrix_t when computing
4037+the dot product of each row vector of the matrix.
4038+
4039+See also: graphene_simd4x4f_point3_mul()</doc>
4040+ <source-position filename="include/graphene-matrix.h" line="164"/>
4041+ <return-value transfer-ownership="none">
4042+ <type name="none" c:type="void"/>
4043+ </return-value>
4044+ <parameters>
4045+ <instance-parameter name="m" transfer-ownership="none">
4046+ <doc xml:space="preserve"
4047+ filename="src/graphene-matrix.c"
4048+ line="899">a #graphene_matrix_t</doc>
4049+ <type name="Matrix" c:type="const graphene_matrix_t*"/>
4050+ </instance-parameter>
4051+ <parameter name="p" transfer-ownership="none">
4052+ <doc xml:space="preserve"
4053+ filename="src/graphene-matrix.c"
4054+ line="900">a #graphene_point_t</doc>
4055+ <type name="Point" c:type="const graphene_point_t*"/>
4056+ </parameter>
4057+ <parameter name="res"
4058+ direction="out"
4059+ caller-allocates="1"
4060+ transfer-ownership="none">
4061+ <doc xml:space="preserve"
4062+ filename="src/graphene-matrix.c"
4063+ line="901">return location for the
4064+ transformed #graphene_point_t</doc>
4065+ <type name="Point" c:type="graphene_point_t*"/>
4066+ </parameter>
4067+ </parameters>
4068+ </method>
4069+ <method name="transform_point3d"
4070+ c:identifier="graphene_matrix_transform_point3d"
4071+ version="1.2">
4072+ <doc xml:space="preserve"
4073+ filename="src/graphene-matrix.c"
4074+ line="928">Transforms the given #graphene_point3d_t using the matrix @m.
4075+
4076+Unlike graphene_matrix_transform_vec3(), this function will take into
4077+account the fourth row vector of the #graphene_matrix_t when computing
4078+the dot product of each row vector of the matrix.
4079+
4080+See also: graphene_simd4x4f_point3_mul()</doc>
4081+ <source-position filename="include/graphene-matrix.h" line="168"/>
4082+ <return-value transfer-ownership="none">
4083+ <type name="none" c:type="void"/>
4084+ </return-value>
4085+ <parameters>
4086+ <instance-parameter name="m" transfer-ownership="none">
4087+ <doc xml:space="preserve"
4088+ filename="src/graphene-matrix.c"
4089+ line="930">a #graphene_matrix_t</doc>
4090+ <type name="Matrix" c:type="const graphene_matrix_t*"/>
4091+ </instance-parameter>
4092+ <parameter name="p" transfer-ownership="none">
4093+ <doc xml:space="preserve"
4094+ filename="src/graphene-matrix.c"
4095+ line="931">a #graphene_point3d_t</doc>
4096+ <type name="Point3D" c:type="const graphene_point3d_t*"/>
4097+ </parameter>
4098+ <parameter name="res"
4099+ direction="out"
4100+ caller-allocates="1"
4101+ transfer-ownership="none">
4102+ <doc xml:space="preserve"
4103+ filename="src/graphene-matrix.c"
4104+ line="932">return location for the result</doc>
4105+ <type name="Point3D" c:type="graphene_point3d_t*"/>
4106+ </parameter>
4107+ </parameters>
4108+ </method>
4109+ <method name="transform_ray"
4110+ c:identifier="graphene_matrix_transform_ray"
4111+ version="1.4">
4112+ <doc xml:space="preserve"
4113+ filename="src/graphene-matrix.c"
4114+ line="1137">Transform a #graphene_ray_t using the given matrix @m.</doc>
4115+ <source-position filename="include/graphene-matrix.h" line="188"/>
4116+ <return-value transfer-ownership="none">
4117+ <type name="none" c:type="void"/>
4118+ </return-value>
4119+ <parameters>
4120+ <instance-parameter name="m" transfer-ownership="none">
4121+ <doc xml:space="preserve"
4122+ filename="src/graphene-matrix.c"
4123+ line="1139">a #graphene_matrix_t</doc>
4124+ <type name="Matrix" c:type="const graphene_matrix_t*"/>
4125+ </instance-parameter>
4126+ <parameter name="r" transfer-ownership="none">
4127+ <doc xml:space="preserve"
4128+ filename="src/graphene-matrix.c"
4129+ line="1140">a #graphene_ray_t</doc>
4130+ <type name="Ray" c:type="const graphene_ray_t*"/>
4131+ </parameter>
4132+ <parameter name="res"
4133+ direction="out"
4134+ caller-allocates="1"
4135+ transfer-ownership="none">
4136+ <doc xml:space="preserve"
4137+ filename="src/graphene-matrix.c"
4138+ line="1141">return location for the
4139+ transformed ray</doc>
4140+ <type name="Ray" c:type="graphene_ray_t*"/>
4141+ </parameter>
4142+ </parameters>
4143+ </method>
4144+ <method name="transform_rect"
4145+ c:identifier="graphene_matrix_transform_rect"
4146+ version="1.0">
4147+ <doc xml:space="preserve"
4148+ filename="src/graphene-matrix.c"
4149+ line="959">Transforms each corner of a #graphene_rect_t using the given matrix @m.
4150+
4151+The result is a coplanar quadrilateral.
4152+
4153+See also: graphene_matrix_transform_point()</doc>
4154+ <source-position filename="include/graphene-matrix.h" line="172"/>
4155+ <return-value transfer-ownership="none">
4156+ <type name="none" c:type="void"/>
4157+ </return-value>
4158+ <parameters>
4159+ <instance-parameter name="m" transfer-ownership="none">
4160+ <doc xml:space="preserve"
4161+ filename="src/graphene-matrix.c"
4162+ line="961">a #graphene_matrix_t</doc>
4163+ <type name="Matrix" c:type="const graphene_matrix_t*"/>
4164+ </instance-parameter>
4165+ <parameter name="r" transfer-ownership="none">
4166+ <doc xml:space="preserve"
4167+ filename="src/graphene-matrix.c"
4168+ line="962">a #graphene_rect_t</doc>
4169+ <type name="Rect" c:type="const graphene_rect_t*"/>
4170+ </parameter>
4171+ <parameter name="res"
4172+ direction="out"
4173+ caller-allocates="1"
4174+ transfer-ownership="none">
4175+ <doc xml:space="preserve"
4176+ filename="src/graphene-matrix.c"
4177+ line="963">return location for the
4178+ transformed quad</doc>
4179+ <type name="Quad" c:type="graphene_quad_t*"/>
4180+ </parameter>
4181+ </parameters>
4182+ </method>
4183+ <method name="transform_sphere"
4184+ c:identifier="graphene_matrix_transform_sphere"
4185+ version="1.2">
4186+ <doc xml:space="preserve"
4187+ filename="src/graphene-matrix.c"
4188+ line="1080">Transforms a #graphene_sphere_t using the given matrix @m. The
4189+result is the bounding sphere containing the transformed sphere.</doc>
4190+ <source-position filename="include/graphene-matrix.h" line="180"/>
4191+ <return-value transfer-ownership="none">
4192+ <type name="none" c:type="void"/>
4193+ </return-value>
4194+ <parameters>
4195+ <instance-parameter name="m" transfer-ownership="none">
4196+ <doc xml:space="preserve"
4197+ filename="src/graphene-matrix.c"
4198+ line="1082">a #graphene_matrix_t</doc>
4199+ <type name="Matrix" c:type="const graphene_matrix_t*"/>
4200+ </instance-parameter>
4201+ <parameter name="s" transfer-ownership="none">
4202+ <doc xml:space="preserve"
4203+ filename="src/graphene-matrix.c"
4204+ line="1083">a #graphene_sphere_t</doc>
4205+ <type name="Sphere" c:type="const graphene_sphere_t*"/>
4206+ </parameter>
4207+ <parameter name="res"
4208+ direction="out"
4209+ caller-allocates="1"
4210+ transfer-ownership="none">
4211+ <doc xml:space="preserve"
4212+ filename="src/graphene-matrix.c"
4213+ line="1084">return location for the bounds
4214+ of the transformed sphere</doc>
4215+ <type name="Sphere" c:type="graphene_sphere_t*"/>
4216+ </parameter>
4217+ </parameters>
4218+ </method>
4219+ <method name="transform_vec3"
4220+ c:identifier="graphene_matrix_transform_vec3"
4221+ version="1.0">
4222+ <doc xml:space="preserve"
4223+ filename="src/graphene-matrix.c"
4224+ line="853">Transforms the given #graphene_vec3_t using the matrix @m.
4225+
4226+This function will multiply the X, Y, and Z row vectors of the matrix @m
4227+with the corresponding components of the vector @v. The W row vector will
4228+be ignored.
4229+
4230+See also: graphene_simd4x4f_vec3_mul()</doc>
4231+ <source-position filename="include/graphene-matrix.h" line="160"/>
4232+ <return-value transfer-ownership="none">
4233+ <type name="none" c:type="void"/>
4234+ </return-value>
4235+ <parameters>
4236+ <instance-parameter name="m" transfer-ownership="none">
4237+ <doc xml:space="preserve"
4238+ filename="src/graphene-matrix.c"
4239+ line="855">a #graphene_matrix_t</doc>
4240+ <type name="Matrix" c:type="const graphene_matrix_t*"/>
4241+ </instance-parameter>
4242+ <parameter name="v" transfer-ownership="none">
4243+ <doc xml:space="preserve"
4244+ filename="src/graphene-matrix.c"
4245+ line="856">a #graphene_vec3_t</doc>
4246+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
4247+ </parameter>
4248+ <parameter name="res"
4249+ direction="out"
4250+ caller-allocates="1"
4251+ transfer-ownership="none">
4252+ <doc xml:space="preserve"
4253+ filename="src/graphene-matrix.c"
4254+ line="857">return location for a #graphene_vec3_t</doc>
4255+ <type name="Vec3" c:type="graphene_vec3_t*"/>
4256+ </parameter>
4257+ </parameters>
4258+ </method>
4259+ <method name="transform_vec4"
4260+ c:identifier="graphene_matrix_transform_vec4"
4261+ version="1.0">
4262+ <doc xml:space="preserve"
4263+ filename="src/graphene-matrix.c"
4264+ line="877">Transforms the given #graphene_vec4_t using the matrix @m.
4265+
4266+See also: graphene_simd4x4f_vec4_mul()</doc>
4267+ <source-position filename="include/graphene-matrix.h" line="156"/>
4268+ <return-value transfer-ownership="none">
4269+ <type name="none" c:type="void"/>
4270+ </return-value>
4271+ <parameters>
4272+ <instance-parameter name="m" transfer-ownership="none">
4273+ <doc xml:space="preserve"
4274+ filename="src/graphene-matrix.c"
4275+ line="879">a #graphene_matrix_t</doc>
4276+ <type name="Matrix" c:type="const graphene_matrix_t*"/>
4277+ </instance-parameter>
4278+ <parameter name="v" transfer-ownership="none">
4279+ <doc xml:space="preserve"
4280+ filename="src/graphene-matrix.c"
4281+ line="880">a #graphene_vec4_t</doc>
4282+ <type name="Vec4" c:type="const graphene_vec4_t*"/>
4283+ </parameter>
4284+ <parameter name="res"
4285+ direction="out"
4286+ caller-allocates="1"
4287+ transfer-ownership="none">
4288+ <doc xml:space="preserve"
4289+ filename="src/graphene-matrix.c"
4290+ line="881">return location for a #graphene_vec4_t</doc>
4291+ <type name="Vec4" c:type="graphene_vec4_t*"/>
4292+ </parameter>
4293+ </parameters>
4294+ </method>
4295+ <method name="translate"
4296+ c:identifier="graphene_matrix_translate"
4297+ version="1.0">
4298+ <doc xml:space="preserve"
4299+ filename="src/graphene-matrix.c"
4300+ line="1413">Adds a translation transformation to @m using the coordinates
4301+of the given #graphene_point3d_t.
4302+
4303+This is the equivalent of calling graphene_matrix_init_translate() and
4304+then multiplying @m with the translation matrix.</doc>
4305+ <source-position filename="include/graphene-matrix.h" line="221"/>
4306+ <return-value transfer-ownership="none">
4307+ <type name="none" c:type="void"/>
4308+ </return-value>
4309+ <parameters>
4310+ <instance-parameter name="m" transfer-ownership="none">
4311+ <doc xml:space="preserve"
4312+ filename="src/graphene-matrix.c"
4313+ line="1415">a #graphene_matrix_t</doc>
4314+ <type name="Matrix" c:type="graphene_matrix_t*"/>
4315+ </instance-parameter>
4316+ <parameter name="pos" transfer-ownership="none">
4317+ <doc xml:space="preserve"
4318+ filename="src/graphene-matrix.c"
4319+ line="1416">a #graphene_point3d_t</doc>
4320+ <type name="Point3D" c:type="const graphene_point3d_t*"/>
4321+ </parameter>
4322+ </parameters>
4323+ </method>
4324+ <method name="transpose"
4325+ c:identifier="graphene_matrix_transpose"
4326+ version="1.0">
4327+ <doc xml:space="preserve"
4328+ filename="src/graphene-matrix.c"
4329+ line="1662">Transposes the given matrix.</doc>
4330+ <source-position filename="include/graphene-matrix.h" line="258"/>
4331+ <return-value transfer-ownership="none">
4332+ <type name="none" c:type="void"/>
4333+ </return-value>
4334+ <parameters>
4335+ <instance-parameter name="m" transfer-ownership="none">
4336+ <doc xml:space="preserve"
4337+ filename="src/graphene-matrix.c"
4338+ line="1664">a #graphene_matrix_t</doc>
4339+ <type name="Matrix" c:type="const graphene_matrix_t*"/>
4340+ </instance-parameter>
4341+ <parameter name="res"
4342+ direction="out"
4343+ caller-allocates="1"
4344+ transfer-ownership="none">
4345+ <doc xml:space="preserve"
4346+ filename="src/graphene-matrix.c"
4347+ line="1665">return location for the
4348+ transposed matrix</doc>
4349+ <type name="Matrix" c:type="graphene_matrix_t*"/>
4350+ </parameter>
4351+ </parameters>
4352+ </method>
4353+ <method name="unproject_point3d"
4354+ c:identifier="graphene_matrix_unproject_point3d"
4355+ version="1.2">
4356+ <doc xml:space="preserve"
4357+ filename="src/graphene-matrix.c"
4358+ line="1373">Unprojects the given @point using the @projection matrix and
4359+a @modelview matrix.</doc>
4360+ <source-position filename="include/graphene-matrix.h" line="215"/>
4361+ <return-value transfer-ownership="none">
4362+ <type name="none" c:type="void"/>
4363+ </return-value>
4364+ <parameters>
4365+ <instance-parameter name="projection" transfer-ownership="none">
4366+ <doc xml:space="preserve"
4367+ filename="src/graphene-matrix.c"
4368+ line="1375">a #graphene_matrix_t for the projection matrix</doc>
4369+ <type name="Matrix" c:type="const graphene_matrix_t*"/>
4370+ </instance-parameter>
4371+ <parameter name="modelview" transfer-ownership="none">
4372+ <doc xml:space="preserve"
4373+ filename="src/graphene-matrix.c"
4374+ line="1376">a #graphene_matrix_t for the modelview matrix; this is
4375+ the inverse of the modelview used when projecting the point</doc>
4376+ <type name="Matrix" c:type="const graphene_matrix_t*"/>
4377+ </parameter>
4378+ <parameter name="point" transfer-ownership="none">
4379+ <doc xml:space="preserve"
4380+ filename="src/graphene-matrix.c"
4381+ line="1378">a #graphene_point3d_t with the coordinates of the point</doc>
4382+ <type name="Point3D" c:type="const graphene_point3d_t*"/>
4383+ </parameter>
4384+ <parameter name="res"
4385+ direction="out"
4386+ caller-allocates="1"
4387+ transfer-ownership="none">
4388+ <doc xml:space="preserve"
4389+ filename="src/graphene-matrix.c"
4390+ line="1379">return location for the unprojected
4391+ point</doc>
4392+ <type name="Point3D" c:type="graphene_point3d_t*"/>
4393+ </parameter>
4394+ </parameters>
4395+ </method>
4396+ <method name="untransform_bounds"
4397+ c:identifier="graphene_matrix_untransform_bounds"
4398+ version="1.0">
4399+ <doc xml:space="preserve"
4400+ filename="src/graphene-matrix.c"
4401+ line="1328">Undoes the transformation on the corners of a #graphene_rect_t using the
4402+given matrix, within the given axis aligned rectangular @bounds.</doc>
4403+ <source-position filename="include/graphene-matrix.h" line="210"/>
4404+ <return-value transfer-ownership="none">
4405+ <type name="none" c:type="void"/>
4406+ </return-value>
4407+ <parameters>
4408+ <instance-parameter name="m" transfer-ownership="none">
4409+ <doc xml:space="preserve"
4410+ filename="src/graphene-matrix.c"
4411+ line="1330">a #graphene_matrix_t</doc>
4412+ <type name="Matrix" c:type="const graphene_matrix_t*"/>
4413+ </instance-parameter>
4414+ <parameter name="r" transfer-ownership="none">
4415+ <doc xml:space="preserve"
4416+ filename="src/graphene-matrix.c"
4417+ line="1331">a #graphene_rect_t</doc>
4418+ <type name="Rect" c:type="const graphene_rect_t*"/>
4419+ </parameter>
4420+ <parameter name="bounds" transfer-ownership="none">
4421+ <doc xml:space="preserve"
4422+ filename="src/graphene-matrix.c"
4423+ line="1332">the bounds of the transformation</doc>
4424+ <type name="Rect" c:type="const graphene_rect_t*"/>
4425+ </parameter>
4426+ <parameter name="res"
4427+ direction="out"
4428+ caller-allocates="1"
4429+ transfer-ownership="none">
4430+ <doc xml:space="preserve"
4431+ filename="src/graphene-matrix.c"
4432+ line="1333">return location for the
4433+ untransformed rectangle</doc>
4434+ <type name="Rect" c:type="graphene_rect_t*"/>
4435+ </parameter>
4436+ </parameters>
4437+ </method>
4438+ <method name="untransform_point"
4439+ c:identifier="graphene_matrix_untransform_point"
4440+ version="1.0">
4441+ <doc xml:space="preserve"
4442+ filename="src/graphene-matrix.c"
4443+ line="1283">Undoes the transformation of a #graphene_point_t using the
4444+given matrix, within the given axis aligned rectangular @bounds.</doc>
4445+ <source-position filename="include/graphene-matrix.h" line="205"/>
4446+ <return-value transfer-ownership="none">
4447+ <doc xml:space="preserve"
4448+ filename="src/graphene-matrix.c"
4449+ line="1294">`true` if the point was successfully untransformed</doc>
4450+ <type name="gboolean" c:type="_Bool"/>
4451+ </return-value>
4452+ <parameters>
4453+ <instance-parameter name="m" transfer-ownership="none">
4454+ <doc xml:space="preserve"
4455+ filename="src/graphene-matrix.c"
4456+ line="1285">a #graphene_matrix_t</doc>
4457+ <type name="Matrix" c:type="const graphene_matrix_t*"/>
4458+ </instance-parameter>
4459+ <parameter name="p" transfer-ownership="none">
4460+ <doc xml:space="preserve"
4461+ filename="src/graphene-matrix.c"
4462+ line="1286">a #graphene_point_t</doc>
4463+ <type name="Point" c:type="const graphene_point_t*"/>
4464+ </parameter>
4465+ <parameter name="bounds" transfer-ownership="none">
4466+ <doc xml:space="preserve"
4467+ filename="src/graphene-matrix.c"
4468+ line="1287">the bounds of the transformation</doc>
4469+ <type name="Rect" c:type="const graphene_rect_t*"/>
4470+ </parameter>
4471+ <parameter name="res"
4472+ direction="out"
4473+ caller-allocates="1"
4474+ transfer-ownership="none">
4475+ <doc xml:space="preserve"
4476+ filename="src/graphene-matrix.c"
4477+ line="1288">return location for the
4478+ untransformed point</doc>
4479+ <type name="Point" c:type="graphene_point_t*"/>
4480+ </parameter>
4481+ </parameters>
4482+ </method>
4483+ </record>
4484+ <constant name="PI" value="3.141593" c:type="GRAPHENE_PI">
4485+ <source-position filename="include/graphene-macros.h" line="112"/>
4486+ <type name="gdouble" c:type="gdouble"/>
4487+ </constant>
4488+ <constant name="PI_2" value="1.570796" c:type="GRAPHENE_PI_2">
4489+ <source-position filename="include/graphene-macros.h" line="113"/>
4490+ <type name="gdouble" c:type="gdouble"/>
4491+ </constant>
4492+ <function-macro name="POINT3D_INIT"
4493+ c:identifier="GRAPHENE_POINT3D_INIT"
4494+ version="1.0"
4495+ introspectable="0">
4496+ <doc xml:space="preserve"
4497+ filename="include/graphene-point3d.h"
4498+ line="36">Initializes a #graphene_point3d_t to the given coordinates when declaring it.</doc>
4499+ <source-position filename="include/graphene-point3d.h" line="46"/>
4500+ <parameters>
4501+ <parameter name="_x">
4502+ <doc xml:space="preserve"
4503+ filename="include/graphene-point3d.h"
4504+ line="38">the X coordinate</doc>
4505+ </parameter>
4506+ <parameter name="_y">
4507+ <doc xml:space="preserve"
4508+ filename="include/graphene-point3d.h"
4509+ line="39">the Y coordinate</doc>
4510+ </parameter>
4511+ <parameter name="_z">
4512+ <doc xml:space="preserve"
4513+ filename="include/graphene-point3d.h"
4514+ line="40">the Z coordinate</doc>
4515+ </parameter>
4516+ </parameters>
4517+ </function-macro>
4518+ <function-macro name="POINT_INIT"
4519+ c:identifier="GRAPHENE_POINT_INIT"
4520+ version="1.0"
4521+ introspectable="0">
4522+ <doc xml:space="preserve"
4523+ filename="include/graphene-point.h"
4524+ line="36">Initializes a #graphene_point_t with the given coordinates
4525+when declaring it, e.g:
4526+
4527+|[&lt;!-- language="C" --&gt;
4528+ graphene_point_t p = GRAPHENE_POINT_INIT (10.f, 10.f);
4529+]|</doc>
4530+ <source-position filename="include/graphene-point.h" line="50"/>
4531+ <parameters>
4532+ <parameter name="_x">
4533+ <doc xml:space="preserve"
4534+ filename="include/graphene-point.h"
4535+ line="38">the X coordinate</doc>
4536+ </parameter>
4537+ <parameter name="_y">
4538+ <doc xml:space="preserve"
4539+ filename="include/graphene-point.h"
4540+ line="39">the Y coordinate</doc>
4541+ </parameter>
4542+ </parameters>
4543+ </function-macro>
4544+ <function-macro name="PRIVATE_FIELD"
4545+ c:identifier="GRAPHENE_PRIVATE_FIELD"
4546+ introspectable="0">
4547+ <source-position filename="include/graphene-macros.h" line="37"/>
4548+ <parameters>
4549+ <parameter name="type">
4550+ </parameter>
4551+ <parameter name="name">
4552+ </parameter>
4553+ </parameters>
4554+ </function-macro>
4555+ <record name="Plane"
4556+ c:type="graphene_plane_t"
4557+ version="1.2"
4558+ glib:type-name="GraphenePlane"
4559+ glib:get-type="graphene_plane_get_type"
4560+ c:symbol-prefix="plane">
4561+ <doc xml:space="preserve"
4562+ filename="include/graphene-plane.h"
4563+ line="37">A 2D plane that extends infinitely in a 3D volume.
4564+
4565+The contents of the `graphene_plane_t` are private, and should not be
4566+modified directly.</doc>
4567+ <source-position filename="include/graphene-plane.h" line="52"/>
4568+ <field name="normal" readable="0" private="1">
4569+ <type name="Vec3" c:type="graphene_vec3_t"/>
4570+ </field>
4571+ <field name="constant" readable="0" private="1">
4572+ <type name="gfloat" c:type="float"/>
4573+ </field>
4574+ <constructor name="alloc"
4575+ c:identifier="graphene_plane_alloc"
4576+ version="1.2">
4577+ <doc xml:space="preserve"
4578+ filename="src/graphene-plane.c"
4579+ line="50">Allocates a new #graphene_plane_t structure.
4580+
4581+The contents of the returned structure are undefined.</doc>
4582+ <source-position filename="include/graphene-plane.h" line="55"/>
4583+ <return-value transfer-ownership="full">
4584+ <doc xml:space="preserve"
4585+ filename="src/graphene-plane.c"
4586+ line="57">the newly allocated #graphene_plane_t.
4587+ Use graphene_plane_free() to free the resources allocated by
4588+ this function</doc>
4589+ <type name="Plane" c:type="graphene_plane_t*"/>
4590+ </return-value>
4591+ </constructor>
4592+ <method name="distance"
4593+ c:identifier="graphene_plane_distance"
4594+ version="1.2">
4595+ <doc xml:space="preserve"
4596+ filename="src/graphene-plane.c"
4597+ line="264">Computes the distance of @point from a #graphene_plane_t.</doc>
4598+ <source-position filename="include/graphene-plane.h" line="89"/>
4599+ <return-value transfer-ownership="none">
4600+ <doc xml:space="preserve"
4601+ filename="src/graphene-plane.c"
4602+ line="271">the distance of the given #graphene_point3d_t from the plane</doc>
4603+ <type name="gfloat" c:type="float"/>
4604+ </return-value>
4605+ <parameters>
4606+ <instance-parameter name="p" transfer-ownership="none">
4607+ <doc xml:space="preserve"
4608+ filename="src/graphene-plane.c"
4609+ line="266">a #graphene_plane_t</doc>
4610+ <type name="Plane" c:type="const graphene_plane_t*"/>
4611+ </instance-parameter>
4612+ <parameter name="point" transfer-ownership="none">
4613+ <doc xml:space="preserve"
4614+ filename="src/graphene-plane.c"
4615+ line="267">a #graphene_point3d_t</doc>
4616+ <type name="Point3D" c:type="const graphene_point3d_t*"/>
4617+ </parameter>
4618+ </parameters>
4619+ </method>
4620+ <method name="equal" c:identifier="graphene_plane_equal" version="1.2">
4621+ <doc xml:space="preserve"
4622+ filename="src/graphene-plane.c"
4623+ line="331">Checks whether the two given #graphene_plane_t are equal.</doc>
4624+ <source-position filename="include/graphene-plane.h" line="86"/>
4625+ <return-value transfer-ownership="none">
4626+ <doc xml:space="preserve"
4627+ filename="src/graphene-plane.c"
4628+ line="338">`true` if the given planes are equal</doc>
4629+ <type name="gboolean" c:type="_Bool"/>
4630+ </return-value>
4631+ <parameters>
4632+ <instance-parameter name="a" transfer-ownership="none">
4633+ <doc xml:space="preserve"
4634+ filename="src/graphene-plane.c"
4635+ line="333">a #graphene_plane_t</doc>
4636+ <type name="Plane" c:type="const graphene_plane_t*"/>
4637+ </instance-parameter>
4638+ <parameter name="b" transfer-ownership="none">
4639+ <doc xml:space="preserve"
4640+ filename="src/graphene-plane.c"
4641+ line="334">a #graphene_plane_t</doc>
4642+ <type name="Plane" c:type="const graphene_plane_t*"/>
4643+ </parameter>
4644+ </parameters>
4645+ </method>
4646+ <method name="free" c:identifier="graphene_plane_free" version="1.2">
4647+ <doc xml:space="preserve"
4648+ filename="src/graphene-plane.c"
4649+ line="69">Frees the resources allocated by graphene_plane_alloc().</doc>
4650+ <source-position filename="include/graphene-plane.h" line="57"/>
4651+ <return-value transfer-ownership="none">
4652+ <type name="none" c:type="void"/>
4653+ </return-value>
4654+ <parameters>
4655+ <instance-parameter name="p" transfer-ownership="none">
4656+ <doc xml:space="preserve"
4657+ filename="src/graphene-plane.c"
4658+ line="71">a #graphene_plane_t</doc>
4659+ <type name="Plane" c:type="graphene_plane_t*"/>
4660+ </instance-parameter>
4661+ </parameters>
4662+ </method>
4663+ <method name="get_constant"
4664+ c:identifier="graphene_plane_get_constant"
4665+ version="1.2">
4666+ <doc xml:space="preserve"
4667+ filename="src/graphene-plane.c"
4668+ line="303">Retrieves the distance along the normal vector of the
4669+given #graphene_plane_t from the origin.</doc>
4670+ <source-position filename="include/graphene-plane.h" line="96"/>
4671+ <return-value transfer-ownership="none">
4672+ <doc xml:space="preserve"
4673+ filename="src/graphene-plane.c"
4674+ line="310">the constant value of the plane</doc>
4675+ <type name="gfloat" c:type="float"/>
4676+ </return-value>
4677+ <parameters>
4678+ <instance-parameter name="p" transfer-ownership="none">
4679+ <doc xml:space="preserve"
4680+ filename="src/graphene-plane.c"
4681+ line="305">a #graphene_plane_t</doc>
4682+ <type name="Plane" c:type="const graphene_plane_t*"/>
4683+ </instance-parameter>
4684+ </parameters>
4685+ </method>
4686+ <method name="get_normal"
4687+ c:identifier="graphene_plane_get_normal"
4688+ version="1.2">
4689+ <doc xml:space="preserve"
4690+ filename="src/graphene-plane.c"
4691+ line="286">Retrieves the normal vector pointing towards the origin of the
4692+given #graphene_plane_t.</doc>
4693+ <source-position filename="include/graphene-plane.h" line="93"/>
4694+ <return-value transfer-ownership="none">
4695+ <type name="none" c:type="void"/>
4696+ </return-value>
4697+ <parameters>
4698+ <instance-parameter name="p" transfer-ownership="none">
4699+ <doc xml:space="preserve"
4700+ filename="src/graphene-plane.c"
4701+ line="288">a #graphene_plane_t</doc>
4702+ <type name="Plane" c:type="const graphene_plane_t*"/>
4703+ </instance-parameter>
4704+ <parameter name="normal"
4705+ direction="out"
4706+ caller-allocates="1"
4707+ transfer-ownership="none">
4708+ <doc xml:space="preserve"
4709+ filename="src/graphene-plane.c"
4710+ line="289">return location for the normal vector</doc>
4711+ <type name="Vec3" c:type="graphene_vec3_t*"/>
4712+ </parameter>
4713+ </parameters>
4714+ </method>
4715+ <method name="init" c:identifier="graphene_plane_init" version="1.2">
4716+ <doc xml:space="preserve"
4717+ filename="src/graphene-plane.c"
4718+ line="83">Initializes the given #graphene_plane_t using the given @normal vector
4719+and @constant values.</doc>
4720+ <source-position filename="include/graphene-plane.h" line="60"/>
4721+ <return-value transfer-ownership="none">
4722+ <doc xml:space="preserve"
4723+ filename="src/graphene-plane.c"
4724+ line="95">the initialized plane</doc>
4725+ <type name="Plane" c:type="graphene_plane_t*"/>
4726+ </return-value>
4727+ <parameters>
4728+ <instance-parameter name="p" transfer-ownership="none">
4729+ <doc xml:space="preserve"
4730+ filename="src/graphene-plane.c"
4731+ line="85">the #graphene_plane_t to initialize</doc>
4732+ <type name="Plane" c:type="graphene_plane_t*"/>
4733+ </instance-parameter>
4734+ <parameter name="normal"
4735+ transfer-ownership="none"
4736+ nullable="1"
4737+ allow-none="1">
4738+ <doc xml:space="preserve"
4739+ filename="src/graphene-plane.c"
4740+ line="86">a unit length normal vector defining the plane
4741+ pointing towards the origin; if unset, we use the X axis by default</doc>
4742+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
4743+ </parameter>
4744+ <parameter name="constant" transfer-ownership="none">
4745+ <doc xml:space="preserve"
4746+ filename="src/graphene-plane.c"
4747+ line="88">the distance from the origin to the plane along the
4748+ normal vector; the sign determines the half-space occupied by the
4749+ plane</doc>
4750+ <type name="gfloat" c:type="float"/>
4751+ </parameter>
4752+ </parameters>
4753+ </method>
4754+ <method name="init_from_plane"
4755+ c:identifier="graphene_plane_init_from_plane"
4756+ version="1.2">
4757+ <doc xml:space="preserve"
4758+ filename="src/graphene-plane.c"
4759+ line="137">Initializes the given #graphene_plane_t using the normal
4760+vector and constant of another #graphene_plane_t.</doc>
4761+ <source-position filename="include/graphene-plane.h" line="67"/>
4762+ <return-value transfer-ownership="none">
4763+ <doc xml:space="preserve"
4764+ filename="src/graphene-plane.c"
4765+ line="145">the initialized plane</doc>
4766+ <type name="Plane" c:type="graphene_plane_t*"/>
4767+ </return-value>
4768+ <parameters>
4769+ <instance-parameter name="p" transfer-ownership="none">
4770+ <doc xml:space="preserve"
4771+ filename="src/graphene-plane.c"
4772+ line="139">the #graphene_plane_t to initialize</doc>
4773+ <type name="Plane" c:type="graphene_plane_t*"/>
4774+ </instance-parameter>
4775+ <parameter name="src" transfer-ownership="none">
4776+ <doc xml:space="preserve"
4777+ filename="src/graphene-plane.c"
4778+ line="140">a #graphene_plane_t</doc>
4779+ <type name="Plane" c:type="const graphene_plane_t*"/>
4780+ </parameter>
4781+ </parameters>
4782+ </method>
4783+ <method name="init_from_point"
4784+ c:identifier="graphene_plane_init_from_point"
4785+ version="1.2">
4786+ <doc xml:space="preserve"
4787+ filename="src/graphene-plane.c"
4788+ line="159">Initializes the given #graphene_plane_t using the given normal vector
4789+and an arbitrary co-planar point.</doc>
4790+ <source-position filename="include/graphene-plane.h" line="70"/>
4791+ <return-value transfer-ownership="none">
4792+ <doc xml:space="preserve"
4793+ filename="src/graphene-plane.c"
4794+ line="168">the initialized plane</doc>
4795+ <type name="Plane" c:type="graphene_plane_t*"/>
4796+ </return-value>
4797+ <parameters>
4798+ <instance-parameter name="p" transfer-ownership="none">
4799+ <doc xml:space="preserve"
4800+ filename="src/graphene-plane.c"
4801+ line="161">the #graphene_plane_t to initialize</doc>
4802+ <type name="Plane" c:type="graphene_plane_t*"/>
4803+ </instance-parameter>
4804+ <parameter name="normal" transfer-ownership="none">
4805+ <doc xml:space="preserve"
4806+ filename="src/graphene-plane.c"
4807+ line="162">a normal vector defining the plane pointing towards the origin</doc>
4808+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
4809+ </parameter>
4810+ <parameter name="point" transfer-ownership="none">
4811+ <doc xml:space="preserve"
4812+ filename="src/graphene-plane.c"
4813+ line="163">a #graphene_point3d_t</doc>
4814+ <type name="Point3D" c:type="const graphene_point3d_t*"/>
4815+ </parameter>
4816+ </parameters>
4817+ </method>
4818+ <method name="init_from_points"
4819+ c:identifier="graphene_plane_init_from_points"
4820+ version="1.2">
4821+ <doc xml:space="preserve"
4822+ filename="src/graphene-plane.c"
4823+ line="187">Initializes the given #graphene_plane_t using the 3 provided co-planar
4824+points.
4825+
4826+The winding order is counter-clockwise, and determines which direction
4827+the normal vector will point.</doc>
4828+ <source-position filename="include/graphene-plane.h" line="74"/>
4829+ <return-value transfer-ownership="none">
4830+ <doc xml:space="preserve"
4831+ filename="src/graphene-plane.c"
4832+ line="200">the initialized plane</doc>
4833+ <type name="Plane" c:type="graphene_plane_t*"/>
4834+ </return-value>
4835+ <parameters>
4836+ <instance-parameter name="p" transfer-ownership="none">
4837+ <doc xml:space="preserve"
4838+ filename="src/graphene-plane.c"
4839+ line="189">the #graphene_plane_t to initialize</doc>
4840+ <type name="Plane" c:type="graphene_plane_t*"/>
4841+ </instance-parameter>
4842+ <parameter name="a" transfer-ownership="none">
4843+ <doc xml:space="preserve"
4844+ filename="src/graphene-plane.c"
4845+ line="190">a #graphene_point3d_t</doc>
4846+ <type name="Point3D" c:type="const graphene_point3d_t*"/>
4847+ </parameter>
4848+ <parameter name="b" transfer-ownership="none">
4849+ <doc xml:space="preserve"
4850+ filename="src/graphene-plane.c"
4851+ line="191">a #graphene_point3d_t</doc>
4852+ <type name="Point3D" c:type="const graphene_point3d_t*"/>
4853+ </parameter>
4854+ <parameter name="c" transfer-ownership="none">
4855+ <doc xml:space="preserve"
4856+ filename="src/graphene-plane.c"
4857+ line="192">a #graphene_point3d_t</doc>
4858+ <type name="Point3D" c:type="const graphene_point3d_t*"/>
4859+ </parameter>
4860+ </parameters>
4861+ </method>
4862+ <method name="init_from_vec4"
4863+ c:identifier="graphene_plane_init_from_vec4"
4864+ version="1.2">
4865+ <doc xml:space="preserve"
4866+ filename="src/graphene-plane.c"
4867+ line="114">Initializes the given #graphene_plane_t using the components of
4868+the given #graphene_vec4_t vector.</doc>
4869+ <source-position filename="include/graphene-plane.h" line="64"/>
4870+ <return-value transfer-ownership="none">
4871+ <doc xml:space="preserve"
4872+ filename="src/graphene-plane.c"
4873+ line="123">the initialized plane</doc>
4874+ <type name="Plane" c:type="graphene_plane_t*"/>
4875+ </return-value>
4876+ <parameters>
4877+ <instance-parameter name="p" transfer-ownership="none">
4878+ <doc xml:space="preserve"
4879+ filename="src/graphene-plane.c"
4880+ line="116">the #graphene_plane_t to initialize</doc>
4881+ <type name="Plane" c:type="graphene_plane_t*"/>
4882+ </instance-parameter>
4883+ <parameter name="src" transfer-ownership="none">
4884+ <doc xml:space="preserve"
4885+ filename="src/graphene-plane.c"
4886+ line="117">a #graphene_vec4_t containing the normal vector in its first
4887+ three components, and the distance in its fourth component</doc>
4888+ <type name="Vec4" c:type="const graphene_vec4_t*"/>
4889+ </parameter>
4890+ </parameters>
4891+ </method>
4892+ <method name="negate" c:identifier="graphene_plane_negate" version="1.2">
4893+ <doc xml:space="preserve"
4894+ filename="src/graphene-plane.c"
4895+ line="246">Negates the normal vector and constant of a #graphene_plane_t, effectively
4896+mirroring the plane across the origin.</doc>
4897+ <source-position filename="include/graphene-plane.h" line="83"/>
4898+ <return-value transfer-ownership="none">
4899+ <type name="none" c:type="void"/>
4900+ </return-value>
4901+ <parameters>
4902+ <instance-parameter name="p" transfer-ownership="none">
4903+ <doc xml:space="preserve"
4904+ filename="src/graphene-plane.c"
4905+ line="248">a #graphene_plane_t</doc>
4906+ <type name="Plane" c:type="const graphene_plane_t*"/>
4907+ </instance-parameter>
4908+ <parameter name="res"
4909+ direction="out"
4910+ caller-allocates="1"
4911+ transfer-ownership="none">
4912+ <doc xml:space="preserve"
4913+ filename="src/graphene-plane.c"
4914+ line="249">return location for the negated plane</doc>
4915+ <type name="Plane" c:type="graphene_plane_t*"/>
4916+ </parameter>
4917+ </parameters>
4918+ </method>
4919+ <method name="normalize"
4920+ c:identifier="graphene_plane_normalize"
4921+ version="1.2">
4922+ <doc xml:space="preserve"
4923+ filename="src/graphene-plane.c"
4924+ line="226">Normalizes the vector of the given #graphene_plane_t,
4925+and adjusts the constant accordingly.</doc>
4926+ <source-position filename="include/graphene-plane.h" line="80"/>
4927+ <return-value transfer-ownership="none">
4928+ <type name="none" c:type="void"/>
4929+ </return-value>
4930+ <parameters>
4931+ <instance-parameter name="p" transfer-ownership="none">
4932+ <doc xml:space="preserve"
4933+ filename="src/graphene-plane.c"
4934+ line="228">a #graphene_plane_t</doc>
4935+ <type name="Plane" c:type="const graphene_plane_t*"/>
4936+ </instance-parameter>
4937+ <parameter name="res"
4938+ direction="out"
4939+ caller-allocates="1"
4940+ transfer-ownership="none">
4941+ <doc xml:space="preserve"
4942+ filename="src/graphene-plane.c"
4943+ line="229">return location for the normalized plane</doc>
4944+ <type name="Plane" c:type="graphene_plane_t*"/>
4945+ </parameter>
4946+ </parameters>
4947+ </method>
4948+ <method name="transform"
4949+ c:identifier="graphene_plane_transform"
4950+ version="1.10">
4951+ <doc xml:space="preserve"
4952+ filename="src/graphene-plane.c"
4953+ line="349">Transforms a #graphene_plane_t @p using the given @matrix
4954+and @normal_matrix.
4955+
4956+If @normal_matrix is %NULL, a transformation matrix for the plane
4957+normal will be computed from @matrix. If you are transforming
4958+multiple planes using the same @matrix it's recommended to compute
4959+the normal matrix beforehand to avoid incurring in the cost of
4960+recomputing it every time.</doc>
4961+ <source-position filename="include/graphene-plane.h" line="99"/>
4962+ <return-value transfer-ownership="none">
4963+ <type name="none" c:type="void"/>
4964+ </return-value>
4965+ <parameters>
4966+ <instance-parameter name="p" transfer-ownership="none">
4967+ <doc xml:space="preserve"
4968+ filename="src/graphene-plane.c"
4969+ line="351">a #graphene_plane_t</doc>
4970+ <type name="Plane" c:type="const graphene_plane_t*"/>
4971+ </instance-parameter>
4972+ <parameter name="matrix" transfer-ownership="none">
4973+ <doc xml:space="preserve"
4974+ filename="src/graphene-plane.c"
4975+ line="352">a #graphene_matrix_t</doc>
4976+ <type name="Matrix" c:type="const graphene_matrix_t*"/>
4977+ </parameter>
4978+ <parameter name="normal_matrix"
4979+ transfer-ownership="none"
4980+ nullable="1"
4981+ allow-none="1">
4982+ <doc xml:space="preserve"
4983+ filename="src/graphene-plane.c"
4984+ line="353">a #graphene_matrix_t</doc>
4985+ <type name="Matrix" c:type="const graphene_matrix_t*"/>
4986+ </parameter>
4987+ <parameter name="res"
4988+ direction="out"
4989+ caller-allocates="1"
4990+ transfer-ownership="none">
4991+ <doc xml:space="preserve"
4992+ filename="src/graphene-plane.c"
4993+ line="354">the transformed plane</doc>
4994+ <type name="Plane" c:type="graphene_plane_t*"/>
4995+ </parameter>
4996+ </parameters>
4997+ </method>
4998+ </record>
4999+ <record name="Point"
5000+ c:type="graphene_point_t"
5001+ version="1.0"
5002+ glib:type-name="GraphenePoint"
5003+ glib:get-type="graphene_point_get_type"
5004+ c:symbol-prefix="point">
5005+ <doc xml:space="preserve"
5006+ filename="include/graphene-point.h"
5007+ line="61">A point with two coordinates.</doc>
5008+ <source-position filename="include/graphene-point.h" line="74"/>
5009+ <field name="x" writable="1">
5010+ <doc xml:space="preserve"
5011+ filename="include/graphene-point.h"
5012+ line="63">the X coordinate of the point</doc>
5013+ <type name="gfloat" c:type="float"/>
5014+ </field>
5015+ <field name="y" writable="1">
5016+ <doc xml:space="preserve"
5017+ filename="include/graphene-point.h"
5018+ line="64">the Y coordinate of the point</doc>
5019+ <type name="gfloat" c:type="float"/>
5020+ </field>
5021+ <constructor name="alloc"
5022+ c:identifier="graphene_point_alloc"
5023+ version="1.0">
5024+ <doc xml:space="preserve"
5025+ filename="src/graphene-point.c"
5026+ line="47">Allocates a new #graphene_point_t structure.
5027+
5028+The coordinates of the returned point are (0, 0).
5029+
5030+It's possible to chain this function with graphene_point_init()
5031+or graphene_point_init_from_point(), e.g.:
5032+
5033+|[&lt;!-- language="C" --&gt;
5034+ graphene_point_t *
5035+ point_new (float x, float y)
5036+ {
5037+ return graphene_point_init (graphene_point_alloc (), x, y);
5038+ }
5039+
5040+ graphene_point_t *
5041+ point_copy (const graphene_point_t *p)
5042+ {
5043+ return graphene_point_init_from_point (graphene_point_alloc (), p);
5044+ }
5045+]|</doc>
5046+ <source-position filename="include/graphene-point.h" line="77"/>
5047+ <return-value transfer-ownership="full">
5048+ <doc xml:space="preserve"
5049+ filename="src/graphene-point.c"
5050+ line="71">the newly allocated #graphene_point_t.
5051+ Use graphene_point_free() to free the resources allocated by
5052+ this function.</doc>
5053+ <type name="Point" c:type="graphene_point_t*"/>
5054+ </return-value>
5055+ </constructor>
5056+ <method name="distance"
5057+ c:identifier="graphene_point_distance"
5058+ version="1.0">
5059+ <doc xml:space="preserve"
5060+ filename="src/graphene-point.c"
5061+ line="196">Computes the distance between @a and @b.</doc>
5062+ <source-position filename="include/graphene-point.h" line="96"/>
5063+ <return-value transfer-ownership="none">
5064+ <doc xml:space="preserve"
5065+ filename="src/graphene-point.c"
5066+ line="205">the distance between the two points</doc>
5067+ <type name="gfloat" c:type="float"/>
5068+ </return-value>
5069+ <parameters>
5070+ <instance-parameter name="a" transfer-ownership="none">
5071+ <doc xml:space="preserve"
5072+ filename="src/graphene-point.c"
5073+ line="198">a #graphene_point_t</doc>
5074+ <type name="Point" c:type="const graphene_point_t*"/>
5075+ </instance-parameter>
5076+ <parameter name="b" transfer-ownership="none">
5077+ <doc xml:space="preserve"
5078+ filename="src/graphene-point.c"
5079+ line="199">a #graphene_point_t</doc>
5080+ <type name="Point" c:type="const graphene_point_t*"/>
5081+ </parameter>
5082+ <parameter name="d_x"
5083+ direction="out"
5084+ caller-allocates="0"
5085+ transfer-ownership="full"
5086+ optional="1"
5087+ allow-none="1">
5088+ <doc xml:space="preserve"
5089+ filename="src/graphene-point.c"
5090+ line="200">distance component on the X axis</doc>
5091+ <type name="gfloat" c:type="float*"/>
5092+ </parameter>
5093+ <parameter name="d_y"
5094+ direction="out"
5095+ caller-allocates="0"
5096+ transfer-ownership="full"
5097+ optional="1"
5098+ allow-none="1">
5099+ <doc xml:space="preserve"
5100+ filename="src/graphene-point.c"
5101+ line="201">distance component on the Y axis</doc>
5102+ <type name="gfloat" c:type="float*"/>
5103+ </parameter>
5104+ </parameters>
5105+ </method>
5106+ <method name="equal" c:identifier="graphene_point_equal" version="1.0">
5107+ <doc xml:space="preserve"
5108+ filename="src/graphene-point.c"
5109+ line="173">Checks if the two points @a and @b point to the same
5110+coordinates.
5111+
5112+This function accounts for floating point fluctuations; if
5113+you want to control the fuzziness of the match, you can use
5114+graphene_point_near() instead.</doc>
5115+ <source-position filename="include/graphene-point.h" line="92"/>
5116+ <return-value transfer-ownership="none">
5117+ <doc xml:space="preserve"
5118+ filename="src/graphene-point.c"
5119+ line="185">`true` if the points have the same coordinates</doc>
5120+ <type name="gboolean" c:type="_Bool"/>
5121+ </return-value>
5122+ <parameters>
5123+ <instance-parameter name="a" transfer-ownership="none">
5124+ <doc xml:space="preserve"
5125+ filename="src/graphene-point.c"
5126+ line="175">a #graphene_point_t</doc>
5127+ <type name="Point" c:type="const graphene_point_t*"/>
5128+ </instance-parameter>
5129+ <parameter name="b" transfer-ownership="none">
5130+ <doc xml:space="preserve"
5131+ filename="src/graphene-point.c"
5132+ line="176">a #graphene_point_t</doc>
5133+ <type name="Point" c:type="const graphene_point_t*"/>
5134+ </parameter>
5135+ </parameters>
5136+ </method>
5137+ <method name="free" c:identifier="graphene_point_free" version="1.0">
5138+ <doc xml:space="preserve"
5139+ filename="src/graphene-point.c"
5140+ line="83">Frees the resources allocated by graphene_point_alloc().</doc>
5141+ <source-position filename="include/graphene-point.h" line="79"/>
5142+ <return-value transfer-ownership="none">
5143+ <type name="none" c:type="void"/>
5144+ </return-value>
5145+ <parameters>
5146+ <instance-parameter name="p" transfer-ownership="none">
5147+ <doc xml:space="preserve"
5148+ filename="src/graphene-point.c"
5149+ line="85">a #graphene_point_t</doc>
5150+ <type name="Point" c:type="graphene_point_t*"/>
5151+ </instance-parameter>
5152+ </parameters>
5153+ </method>
5154+ <method name="init" c:identifier="graphene_point_init" version="1.0">
5155+ <doc xml:space="preserve"
5156+ filename="src/graphene-point.c"
5157+ line="97">Initializes @p to the given @x and @y coordinates.
5158+
5159+It's safe to call this function multiple times.</doc>
5160+ <source-position filename="include/graphene-point.h" line="82"/>
5161+ <return-value transfer-ownership="none">
5162+ <doc xml:space="preserve"
5163+ filename="src/graphene-point.c"
5164+ line="107">the initialized point</doc>
5165+ <type name="Point" c:type="graphene_point_t*"/>
5166+ </return-value>
5167+ <parameters>
5168+ <instance-parameter name="p" transfer-ownership="none">
5169+ <doc xml:space="preserve"
5170+ filename="src/graphene-point.c"
5171+ line="99">a #graphene_point_t</doc>
5172+ <type name="Point" c:type="graphene_point_t*"/>
5173+ </instance-parameter>
5174+ <parameter name="x" transfer-ownership="none">
5175+ <doc xml:space="preserve"
5176+ filename="src/graphene-point.c"
5177+ line="100">the X coordinate</doc>
5178+ <type name="gfloat" c:type="float"/>
5179+ </parameter>
5180+ <parameter name="y" transfer-ownership="none">
5181+ <doc xml:space="preserve"
5182+ filename="src/graphene-point.c"
5183+ line="101">the Y coordinate</doc>
5184+ <type name="gfloat" c:type="float"/>
5185+ </parameter>
5186+ </parameters>
5187+ </method>
5188+ <method name="init_from_point"
5189+ c:identifier="graphene_point_init_from_point"
5190+ version="1.0">
5191+ <doc xml:space="preserve"
5192+ filename="src/graphene-point.c"
5193+ line="122">Initializes @p with the same coordinates of @src.</doc>
5194+ <source-position filename="include/graphene-point.h" line="86"/>
5195+ <return-value transfer-ownership="none">
5196+ <doc xml:space="preserve"
5197+ filename="src/graphene-point.c"
5198+ line="129">the initialized point</doc>
5199+ <type name="Point" c:type="graphene_point_t*"/>
5200+ </return-value>
5201+ <parameters>
5202+ <instance-parameter name="p" transfer-ownership="none">
5203+ <doc xml:space="preserve"
5204+ filename="src/graphene-point.c"
5205+ line="124">a #graphene_point_t</doc>
5206+ <type name="Point" c:type="graphene_point_t*"/>
5207+ </instance-parameter>
5208+ <parameter name="src" transfer-ownership="none">
5209+ <doc xml:space="preserve"
5210+ filename="src/graphene-point.c"
5211+ line="125">the #graphene_point_t to use</doc>
5212+ <type name="Point" c:type="const graphene_point_t*"/>
5213+ </parameter>
5214+ </parameters>
5215+ </method>
5216+ <method name="init_from_vec2"
5217+ c:identifier="graphene_point_init_from_vec2"
5218+ version="1.4">
5219+ <doc xml:space="preserve"
5220+ filename="src/graphene-point.c"
5221+ line="142">Initializes @p with the coordinates inside the given #graphene_vec2_t.</doc>
5222+ <source-position filename="include/graphene-point.h" line="89"/>
5223+ <return-value transfer-ownership="none">
5224+ <doc xml:space="preserve"
5225+ filename="src/graphene-point.c"
5226+ line="149">the initialized point</doc>
5227+ <type name="Point" c:type="graphene_point_t*"/>
5228+ </return-value>
5229+ <parameters>
5230+ <instance-parameter name="p" transfer-ownership="none">
5231+ <doc xml:space="preserve"
5232+ filename="src/graphene-point.c"
5233+ line="144">the #graphene_point_t to initialize</doc>
5234+ <type name="Point" c:type="graphene_point_t*"/>
5235+ </instance-parameter>
5236+ <parameter name="src" transfer-ownership="none">
5237+ <doc xml:space="preserve"
5238+ filename="src/graphene-point.c"
5239+ line="145">a #graphene_vec2_t</doc>
5240+ <type name="Vec2" c:type="const graphene_vec2_t*"/>
5241+ </parameter>
5242+ </parameters>
5243+ </method>
5244+ <method name="interpolate"
5245+ c:identifier="graphene_point_interpolate"
5246+ version="1.0">
5247+ <doc xml:space="preserve"
5248+ filename="src/graphene-point.c"
5249+ line="260">Linearly interpolates the coordinates of @a and @b using the
5250+given @factor.</doc>
5251+ <source-position filename="include/graphene-point.h" line="107"/>
5252+ <return-value transfer-ownership="none">
5253+ <type name="none" c:type="void"/>
5254+ </return-value>
5255+ <parameters>
5256+ <instance-parameter name="a" transfer-ownership="none">
5257+ <doc xml:space="preserve"
5258+ filename="src/graphene-point.c"
5259+ line="262">a #graphene_point_t</doc>
5260+ <type name="Point" c:type="const graphene_point_t*"/>
5261+ </instance-parameter>
5262+ <parameter name="b" transfer-ownership="none">
5263+ <doc xml:space="preserve"
5264+ filename="src/graphene-point.c"
5265+ line="263">a #graphene_point_t</doc>
5266+ <type name="Point" c:type="const graphene_point_t*"/>
5267+ </parameter>
5268+ <parameter name="factor" transfer-ownership="none">
5269+ <doc xml:space="preserve"
5270+ filename="src/graphene-point.c"
5271+ line="264">the linear interpolation factor</doc>
5272+ <type name="gdouble" c:type="double"/>
5273+ </parameter>
5274+ <parameter name="res"
5275+ direction="out"
5276+ caller-allocates="1"
5277+ transfer-ownership="none">
5278+ <doc xml:space="preserve"
5279+ filename="src/graphene-point.c"
5280+ line="265">return location for the interpolated
5281+ point</doc>
5282+ <type name="Point" c:type="graphene_point_t*"/>
5283+ </parameter>
5284+ </parameters>
5285+ </method>
5286+ <method name="near" c:identifier="graphene_point_near" version="1.0">
5287+ <doc xml:space="preserve"
5288+ filename="src/graphene-point.c"
5289+ line="231">Checks whether the two points @a and @b are within
5290+the threshold of @epsilon.</doc>
5291+ <source-position filename="include/graphene-point.h" line="102"/>
5292+ <return-value transfer-ownership="none">
5293+ <doc xml:space="preserve"
5294+ filename="src/graphene-point.c"
5295+ line="240">`true` if the distance is within @epsilon</doc>
5296+ <type name="gboolean" c:type="_Bool"/>
5297+ </return-value>
5298+ <parameters>
5299+ <instance-parameter name="a" transfer-ownership="none">
5300+ <doc xml:space="preserve"
5301+ filename="src/graphene-point.c"
5302+ line="233">a #graphene_point_t</doc>
5303+ <type name="Point" c:type="const graphene_point_t*"/>
5304+ </instance-parameter>
5305+ <parameter name="b" transfer-ownership="none">
5306+ <doc xml:space="preserve"
5307+ filename="src/graphene-point.c"
5308+ line="234">a #graphene_point_t</doc>
5309+ <type name="Point" c:type="const graphene_point_t*"/>
5310+ </parameter>
5311+ <parameter name="epsilon" transfer-ownership="none">
5312+ <doc xml:space="preserve"
5313+ filename="src/graphene-point.c"
5314+ line="235">threshold between the two points</doc>
5315+ <type name="gfloat" c:type="float"/>
5316+ </parameter>
5317+ </parameters>
5318+ </method>
5319+ <method name="to_vec2"
5320+ c:identifier="graphene_point_to_vec2"
5321+ version="1.4">
5322+ <doc xml:space="preserve"
5323+ filename="src/graphene-point.c"
5324+ line="283">Stores the coordinates of the given #graphene_point_t into a
5325+#graphene_vec2_t.</doc>
5326+ <source-position filename="include/graphene-point.h" line="113"/>
5327+ <return-value transfer-ownership="none">
5328+ <type name="none" c:type="void"/>
5329+ </return-value>
5330+ <parameters>
5331+ <instance-parameter name="p" transfer-ownership="none">
5332+ <doc xml:space="preserve"
5333+ filename="src/graphene-point.c"
5334+ line="285">a #graphene_point_t</doc>
5335+ <type name="Point" c:type="const graphene_point_t*"/>
5336+ </instance-parameter>
5337+ <parameter name="v"
5338+ direction="out"
5339+ caller-allocates="1"
5340+ transfer-ownership="none">
5341+ <doc xml:space="preserve"
5342+ filename="src/graphene-point.c"
5343+ line="286">return location for the vertex</doc>
5344+ <type name="Vec2" c:type="graphene_vec2_t*"/>
5345+ </parameter>
5346+ </parameters>
5347+ </method>
5348+ <function name="zero" c:identifier="graphene_point_zero" version="1.0">
5349+ <doc xml:space="preserve"
5350+ filename="src/graphene-point.c"
5351+ line="302">Returns a point fixed at (0, 0).</doc>
5352+ <source-position filename="include/graphene-point.h" line="117"/>
5353+ <return-value transfer-ownership="none">
5354+ <doc xml:space="preserve"
5355+ filename="src/graphene-point.c"
5356+ line="307">a fixed point</doc>
5357+ <type name="Point" c:type="const graphene_point_t*"/>
5358+ </return-value>
5359+ </function>
5360+ </record>
5361+ <record name="Point3D"
5362+ c:type="graphene_point3d_t"
5363+ version="1.0"
5364+ glib:type-name="GraphenePoint3D"
5365+ glib:get-type="graphene_point3d_get_type"
5366+ c:symbol-prefix="point3d">
5367+ <doc xml:space="preserve"
5368+ filename="include/graphene-point3d.h"
5369+ line="57">A point with three components: X, Y, and Z.</doc>
5370+ <source-position filename="include/graphene-point3d.h" line="72"/>
5371+ <field name="x" writable="1">
5372+ <doc xml:space="preserve"
5373+ filename="include/graphene-point3d.h"
5374+ line="59">the X coordinate</doc>
5375+ <type name="gfloat" c:type="float"/>
5376+ </field>
5377+ <field name="y" writable="1">
5378+ <doc xml:space="preserve"
5379+ filename="include/graphene-point3d.h"
5380+ line="60">the Y coordinate</doc>
5381+ <type name="gfloat" c:type="float"/>
5382+ </field>
5383+ <field name="z" writable="1">
5384+ <doc xml:space="preserve"
5385+ filename="include/graphene-point3d.h"
5386+ line="61">the Z coordinate</doc>
5387+ <type name="gfloat" c:type="float"/>
5388+ </field>
5389+ <constructor name="alloc"
5390+ c:identifier="graphene_point3d_alloc"
5391+ version="1.0">
5392+ <doc xml:space="preserve"
5393+ filename="src/graphene-point3d.c"
5394+ line="47">Allocates a #graphene_point3d_t structure.</doc>
5395+ <source-position filename="include/graphene-point3d.h" line="75"/>
5396+ <return-value transfer-ownership="full">
5397+ <doc xml:space="preserve"
5398+ filename="src/graphene-point3d.c"
5399+ line="52">the newly allocated structure.
5400+ Use graphene_point3d_free() to free the resources
5401+ allocated by this function.</doc>
5402+ <type name="Point3D" c:type="graphene_point3d_t*"/>
5403+ </return-value>
5404+ </constructor>
5405+ <method name="cross" c:identifier="graphene_point3d_cross" version="1.0">
5406+ <doc xml:space="preserve"
5407+ filename="src/graphene-point3d.c"
5408+ line="264">Computes the cross product of the two given #graphene_point3d_t.</doc>
5409+ <source-position filename="include/graphene-point3d.h" line="107"/>
5410+ <return-value transfer-ownership="none">
5411+ <type name="none" c:type="void"/>
5412+ </return-value>
5413+ <parameters>
5414+ <instance-parameter name="a" transfer-ownership="none">
5415+ <doc xml:space="preserve"
5416+ filename="src/graphene-point3d.c"
5417+ line="266">a #graphene_point3d_t</doc>
5418+ <type name="Point3D" c:type="const graphene_point3d_t*"/>
5419+ </instance-parameter>
5420+ <parameter name="b" transfer-ownership="none">
5421+ <doc xml:space="preserve"
5422+ filename="src/graphene-point3d.c"
5423+ line="267">a #graphene_point3d_t</doc>
5424+ <type name="Point3D" c:type="const graphene_point3d_t*"/>
5425+ </parameter>
5426+ <parameter name="res"
5427+ direction="out"
5428+ caller-allocates="1"
5429+ transfer-ownership="none">
5430+ <doc xml:space="preserve"
5431+ filename="src/graphene-point3d.c"
5432+ line="268">return location for the cross
5433+ product</doc>
5434+ <type name="Point3D" c:type="graphene_point3d_t*"/>
5435+ </parameter>
5436+ </parameters>
5437+ </method>
5438+ <method name="distance"
5439+ c:identifier="graphene_point3d_distance"
5440+ version="1.4">
5441+ <doc xml:space="preserve"
5442+ filename="src/graphene-point3d.c"
5443+ line="350">Computes the distance between the two given #graphene_point3d_t.</doc>
5444+ <source-position filename="include/graphene-point3d.h" line="119"/>
5445+ <return-value transfer-ownership="none">
5446+ <doc xml:space="preserve"
5447+ filename="src/graphene-point3d.c"
5448+ line="359">the distance between two points</doc>
5449+ <type name="gfloat" c:type="float"/>
5450+ </return-value>
5451+ <parameters>
5452+ <instance-parameter name="a" transfer-ownership="none">
5453+ <doc xml:space="preserve"
5454+ filename="src/graphene-point3d.c"
5455+ line="352">a #graphene_point3d_t</doc>
5456+ <type name="Point3D" c:type="const graphene_point3d_t*"/>
5457+ </instance-parameter>
5458+ <parameter name="b" transfer-ownership="none">
5459+ <doc xml:space="preserve"
5460+ filename="src/graphene-point3d.c"
5461+ line="353">a #graphene_point3d_t</doc>
5462+ <type name="Point3D" c:type="const graphene_point3d_t*"/>
5463+ </parameter>
5464+ <parameter name="delta"
5465+ direction="out"
5466+ caller-allocates="1"
5467+ transfer-ownership="none"
5468+ optional="1"
5469+ allow-none="1">
5470+ <doc xml:space="preserve"
5471+ filename="src/graphene-point3d.c"
5472+ line="354">return location for the distance
5473+ components on the X, Y, and Z axis</doc>
5474+ <type name="Vec3" c:type="graphene_vec3_t*"/>
5475+ </parameter>
5476+ </parameters>
5477+ </method>
5478+ <method name="dot" c:identifier="graphene_point3d_dot" version="1.0">
5479+ <doc xml:space="preserve"
5480+ filename="src/graphene-point3d.c"
5481+ line="287">Computes the dot product of the two given #graphene_point3d_t.</doc>
5482+ <source-position filename="include/graphene-point3d.h" line="111"/>
5483+ <return-value transfer-ownership="none">
5484+ <doc xml:space="preserve"
5485+ filename="src/graphene-point3d.c"
5486+ line="294">the value of the dot product</doc>
5487+ <type name="gfloat" c:type="float"/>
5488+ </return-value>
5489+ <parameters>
5490+ <instance-parameter name="a" transfer-ownership="none">
5491+ <doc xml:space="preserve"
5492+ filename="src/graphene-point3d.c"
5493+ line="289">a #graphene_point3d_t</doc>
5494+ <type name="Point3D" c:type="const graphene_point3d_t*"/>
5495+ </instance-parameter>
5496+ <parameter name="b" transfer-ownership="none">
5497+ <doc xml:space="preserve"
5498+ filename="src/graphene-point3d.c"
5499+ line="290">a #graphene_point3d_t</doc>
5500+ <type name="Point3D" c:type="const graphene_point3d_t*"/>
5501+ </parameter>
5502+ </parameters>
5503+ </method>
5504+ <method name="equal" c:identifier="graphene_point3d_equal" version="1.0">
5505+ <doc xml:space="preserve"
5506+ filename="src/graphene-point3d.c"
5507+ line="192">Checks whether two given points are equal.</doc>
5508+ <source-position filename="include/graphene-point3d.h" line="95"/>
5509+ <return-value transfer-ownership="none">
5510+ <doc xml:space="preserve"
5511+ filename="src/graphene-point3d.c"
5512+ line="199">`true` if the points are equal</doc>
5513+ <type name="gboolean" c:type="_Bool"/>
5514+ </return-value>
5515+ <parameters>
5516+ <instance-parameter name="a" transfer-ownership="none">
5517+ <doc xml:space="preserve"
5518+ filename="src/graphene-point3d.c"
5519+ line="194">a #graphene_point3d_t</doc>
5520+ <type name="Point3D" c:type="const graphene_point3d_t*"/>
5521+ </instance-parameter>
5522+ <parameter name="b" transfer-ownership="none">
5523+ <doc xml:space="preserve"
5524+ filename="src/graphene-point3d.c"
5525+ line="195">a #graphene_point3d_t</doc>
5526+ <type name="Point3D" c:type="const graphene_point3d_t*"/>
5527+ </parameter>
5528+ </parameters>
5529+ </method>
5530+ <method name="free" c:identifier="graphene_point3d_free" version="1.0">
5531+ <doc xml:space="preserve"
5532+ filename="src/graphene-point3d.c"
5533+ line="64">Frees the resources allocated via graphene_point3d_alloc().</doc>
5534+ <source-position filename="include/graphene-point3d.h" line="77"/>
5535+ <return-value transfer-ownership="none">
5536+ <type name="none" c:type="void"/>
5537+ </return-value>
5538+ <parameters>
5539+ <instance-parameter name="p" transfer-ownership="none">
5540+ <doc xml:space="preserve"
5541+ filename="src/graphene-point3d.c"
5542+ line="66">a #graphene_point3d_t</doc>
5543+ <type name="Point3D" c:type="graphene_point3d_t*"/>
5544+ </instance-parameter>
5545+ </parameters>
5546+ </method>
5547+ <method name="init" c:identifier="graphene_point3d_init" version="1.0">
5548+ <doc xml:space="preserve"
5549+ filename="src/graphene-point3d.c"
5550+ line="78">Initializes a #graphene_point3d_t with the given coordinates.</doc>
5551+ <source-position filename="include/graphene-point3d.h" line="80"/>
5552+ <return-value transfer-ownership="none">
5553+ <doc xml:space="preserve"
5554+ filename="src/graphene-point3d.c"
5555+ line="87">the initialized #graphene_point3d_t</doc>
5556+ <type name="Point3D" c:type="graphene_point3d_t*"/>
5557+ </return-value>
5558+ <parameters>
5559+ <instance-parameter name="p" transfer-ownership="none">
5560+ <doc xml:space="preserve"
5561+ filename="src/graphene-point3d.c"
5562+ line="80">the #graphene_point3d_t to initialize</doc>
5563+ <type name="Point3D" c:type="graphene_point3d_t*"/>
5564+ </instance-parameter>
5565+ <parameter name="x" transfer-ownership="none">
5566+ <doc xml:space="preserve"
5567+ filename="src/graphene-point3d.c"
5568+ line="81">the X coordinate of the point</doc>
5569+ <type name="gfloat" c:type="float"/>
5570+ </parameter>
5571+ <parameter name="y" transfer-ownership="none">
5572+ <doc xml:space="preserve"
5573+ filename="src/graphene-point3d.c"
5574+ line="82">the Y coordinate of the point</doc>
5575+ <type name="gfloat" c:type="float"/>
5576+ </parameter>
5577+ <parameter name="z" transfer-ownership="none">
5578+ <doc xml:space="preserve"
5579+ filename="src/graphene-point3d.c"
5580+ line="83">the Z coordinate of the point</doc>
5581+ <type name="gfloat" c:type="float"/>
5582+ </parameter>
5583+ </parameters>
5584+ </method>
5585+ <method name="init_from_point"
5586+ c:identifier="graphene_point3d_init_from_point"
5587+ version="1.0">
5588+ <doc xml:space="preserve"
5589+ filename="src/graphene-point3d.c"
5590+ line="125">Initializes a #graphene_point3d_t using the coordinates of
5591+another #graphene_point3d_t.</doc>
5592+ <source-position filename="include/graphene-point3d.h" line="85"/>
5593+ <return-value transfer-ownership="none">
5594+ <doc xml:space="preserve"
5595+ filename="src/graphene-point3d.c"
5596+ line="133">the initialized point</doc>
5597+ <type name="Point3D" c:type="graphene_point3d_t*"/>
5598+ </return-value>
5599+ <parameters>
5600+ <instance-parameter name="p" transfer-ownership="none">
5601+ <doc xml:space="preserve"
5602+ filename="src/graphene-point3d.c"
5603+ line="127">a #graphene_point3d_t</doc>
5604+ <type name="Point3D" c:type="graphene_point3d_t*"/>
5605+ </instance-parameter>
5606+ <parameter name="src" transfer-ownership="none">
5607+ <doc xml:space="preserve"
5608+ filename="src/graphene-point3d.c"
5609+ line="128">a #graphene_point3d_t</doc>
5610+ <type name="Point3D" c:type="const graphene_point3d_t*"/>
5611+ </parameter>
5612+ </parameters>
5613+ </method>
5614+ <method name="init_from_vec3"
5615+ c:identifier="graphene_point3d_init_from_vec3"
5616+ version="1.0">
5617+ <doc xml:space="preserve"
5618+ filename="src/graphene-point3d.c"
5619+ line="146">Initializes a #graphene_point3d_t using the components
5620+of a #graphene_vec3_t.</doc>
5621+ <source-position filename="include/graphene-point3d.h" line="88"/>
5622+ <return-value transfer-ownership="none">
5623+ <doc xml:space="preserve"
5624+ filename="src/graphene-point3d.c"
5625+ line="154">the initialized #graphene_point3d_t</doc>
5626+ <type name="Point3D" c:type="graphene_point3d_t*"/>
5627+ </return-value>
5628+ <parameters>
5629+ <instance-parameter name="p" transfer-ownership="none">
5630+ <doc xml:space="preserve"
5631+ filename="src/graphene-point3d.c"
5632+ line="148">a #graphene_point3d_t</doc>
5633+ <type name="Point3D" c:type="graphene_point3d_t*"/>
5634+ </instance-parameter>
5635+ <parameter name="v" transfer-ownership="none">
5636+ <doc xml:space="preserve"
5637+ filename="src/graphene-point3d.c"
5638+ line="149">a #graphene_vec3_t</doc>
5639+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
5640+ </parameter>
5641+ </parameters>
5642+ </method>
5643+ <method name="interpolate"
5644+ c:identifier="graphene_point3d_interpolate"
5645+ version="1.0">
5646+ <doc xml:space="preserve"
5647+ filename="src/graphene-point3d.c"
5648+ line="385">Linearly interpolates each component of @a and @b using the
5649+provided @factor, and places the result in @res.</doc>
5650+ <source-position filename="include/graphene-point3d.h" line="124"/>
5651+ <return-value transfer-ownership="none">
5652+ <type name="none" c:type="void"/>
5653+ </return-value>
5654+ <parameters>
5655+ <instance-parameter name="a" transfer-ownership="none">
5656+ <doc xml:space="preserve"
5657+ filename="src/graphene-point3d.c"
5658+ line="387">a #graphene_point3d_t</doc>
5659+ <type name="Point3D" c:type="const graphene_point3d_t*"/>
5660+ </instance-parameter>
5661+ <parameter name="b" transfer-ownership="none">
5662+ <doc xml:space="preserve"
5663+ filename="src/graphene-point3d.c"
5664+ line="388">a #graphene_point3d_t</doc>
5665+ <type name="Point3D" c:type="const graphene_point3d_t*"/>
5666+ </parameter>
5667+ <parameter name="factor" transfer-ownership="none">
5668+ <doc xml:space="preserve"
5669+ filename="src/graphene-point3d.c"
5670+ line="389">the interpolation factor</doc>
5671+ <type name="gdouble" c:type="double"/>
5672+ </parameter>
5673+ <parameter name="res"
5674+ direction="out"
5675+ caller-allocates="1"
5676+ transfer-ownership="none">
5677+ <doc xml:space="preserve"
5678+ filename="src/graphene-point3d.c"
5679+ line="390">the return location for the
5680+ interpolated #graphene_point3d_t</doc>
5681+ <type name="Point3D" c:type="graphene_point3d_t*"/>
5682+ </parameter>
5683+ </parameters>
5684+ </method>
5685+ <method name="length"
5686+ c:identifier="graphene_point3d_length"
5687+ version="1.0">
5688+ <doc xml:space="preserve"
5689+ filename="src/graphene-point3d.c"
5690+ line="308">Computes the length of the vector represented by the
5691+coordinates of the given #graphene_point3d_t.</doc>
5692+ <source-position filename="include/graphene-point3d.h" line="114"/>
5693+ <return-value transfer-ownership="none">
5694+ <doc xml:space="preserve"
5695+ filename="src/graphene-point3d.c"
5696+ line="315">the length of the vector represented by the point</doc>
5697+ <type name="gfloat" c:type="float"/>
5698+ </return-value>
5699+ <parameters>
5700+ <instance-parameter name="p" transfer-ownership="none">
5701+ <doc xml:space="preserve"
5702+ filename="src/graphene-point3d.c"
5703+ line="310">a #graphene_point3d_t</doc>
5704+ <type name="Point3D" c:type="const graphene_point3d_t*"/>
5705+ </instance-parameter>
5706+ </parameters>
5707+ </method>
5708+ <method name="near" c:identifier="graphene_point3d_near" version="1.0">
5709+ <doc xml:space="preserve"
5710+ filename="src/graphene-point3d.c"
5711+ line="210">Checks whether the two points are near each other, within
5712+an @epsilon factor.</doc>
5713+ <source-position filename="include/graphene-point3d.h" line="98"/>
5714+ <return-value transfer-ownership="none">
5715+ <doc xml:space="preserve"
5716+ filename="src/graphene-point3d.c"
5717+ line="219">`true` if the points are near each other</doc>
5718+ <type name="gboolean" c:type="_Bool"/>
5719+ </return-value>
5720+ <parameters>
5721+ <instance-parameter name="a" transfer-ownership="none">
5722+ <doc xml:space="preserve"
5723+ filename="src/graphene-point3d.c"
5724+ line="212">a #graphene_point3d_t</doc>
5725+ <type name="Point3D" c:type="const graphene_point3d_t*"/>
5726+ </instance-parameter>
5727+ <parameter name="b" transfer-ownership="none">
5728+ <doc xml:space="preserve"
5729+ filename="src/graphene-point3d.c"
5730+ line="213">a #graphene_point3d_t</doc>
5731+ <type name="Point3D" c:type="const graphene_point3d_t*"/>
5732+ </parameter>
5733+ <parameter name="epsilon" transfer-ownership="none">
5734+ <doc xml:space="preserve"
5735+ filename="src/graphene-point3d.c"
5736+ line="214">fuzzyness factor</doc>
5737+ <type name="gfloat" c:type="float"/>
5738+ </parameter>
5739+ </parameters>
5740+ </method>
5741+ <method name="normalize"
5742+ c:identifier="graphene_point3d_normalize"
5743+ version="1.0">
5744+ <doc xml:space="preserve"
5745+ filename="src/graphene-point3d.c"
5746+ line="327">Computes the normalization of the vector represented by the
5747+coordinates of the given #graphene_point3d_t.</doc>
5748+ <source-position filename="include/graphene-point3d.h" line="116"/>
5749+ <return-value transfer-ownership="none">
5750+ <type name="none" c:type="void"/>
5751+ </return-value>
5752+ <parameters>
5753+ <instance-parameter name="p" transfer-ownership="none">
5754+ <doc xml:space="preserve"
5755+ filename="src/graphene-point3d.c"
5756+ line="329">a #graphene_point3d_t</doc>
5757+ <type name="Point3D" c:type="const graphene_point3d_t*"/>
5758+ </instance-parameter>
5759+ <parameter name="res"
5760+ direction="out"
5761+ caller-allocates="1"
5762+ transfer-ownership="none">
5763+ <doc xml:space="preserve"
5764+ filename="src/graphene-point3d.c"
5765+ line="330">return location for the normalized
5766+ #graphene_point3d_t</doc>
5767+ <type name="Point3D" c:type="graphene_point3d_t*"/>
5768+ </parameter>
5769+ </parameters>
5770+ </method>
5771+ <method name="normalize_viewport"
5772+ c:identifier="graphene_point3d_normalize_viewport"
5773+ version="1.4">
5774+ <doc xml:space="preserve"
5775+ filename="src/graphene-point3d.c"
5776+ line="409">Normalizes the coordinates of a #graphene_point3d_t using the
5777+given viewport and clipping planes.
5778+
5779+The coordinates of the resulting #graphene_point3d_t will be
5780+in the [ -1, 1 ] range.</doc>
5781+ <source-position filename="include/graphene-point3d.h" line="130"/>
5782+ <return-value transfer-ownership="none">
5783+ <type name="none" c:type="void"/>
5784+ </return-value>
5785+ <parameters>
5786+ <instance-parameter name="p" transfer-ownership="none">
5787+ <doc xml:space="preserve"
5788+ filename="src/graphene-point3d.c"
5789+ line="411">a #graphene_point3d_t</doc>
5790+ <type name="Point3D" c:type="const graphene_point3d_t*"/>
5791+ </instance-parameter>
5792+ <parameter name="viewport" transfer-ownership="none">
5793+ <doc xml:space="preserve"
5794+ filename="src/graphene-point3d.c"
5795+ line="412">a #graphene_rect_t representing a viewport</doc>
5796+ <type name="Rect" c:type="const graphene_rect_t*"/>
5797+ </parameter>
5798+ <parameter name="z_near" transfer-ownership="none">
5799+ <doc xml:space="preserve"
5800+ filename="src/graphene-point3d.c"
5801+ line="413">the coordinate of the near clipping plane, or 0 for
5802+ the default near clipping plane</doc>
5803+ <type name="gfloat" c:type="float"/>
5804+ </parameter>
5805+ <parameter name="z_far" transfer-ownership="none">
5806+ <doc xml:space="preserve"
5807+ filename="src/graphene-point3d.c"
5808+ line="415">the coordinate of the far clipping plane, or 1 for the
5809+ default far clipping plane</doc>
5810+ <type name="gfloat" c:type="float"/>
5811+ </parameter>
5812+ <parameter name="res"
5813+ direction="out"
5814+ caller-allocates="1"
5815+ transfer-ownership="none">
5816+ <doc xml:space="preserve"
5817+ filename="src/graphene-point3d.c"
5818+ line="417">the return location for the
5819+ normalized #graphene_point3d_t</doc>
5820+ <type name="Point3D" c:type="graphene_point3d_t*"/>
5821+ </parameter>
5822+ </parameters>
5823+ </method>
5824+ <method name="scale" c:identifier="graphene_point3d_scale" version="1.0">
5825+ <doc xml:space="preserve"
5826+ filename="src/graphene-point3d.c"
5827+ line="240">Scales the coordinates of the given #graphene_point3d_t by
5828+the given @factor.</doc>
5829+ <source-position filename="include/graphene-point3d.h" line="103"/>
5830+ <return-value transfer-ownership="none">
5831+ <type name="none" c:type="void"/>
5832+ </return-value>
5833+ <parameters>
5834+ <instance-parameter name="p" transfer-ownership="none">
5835+ <doc xml:space="preserve"
5836+ filename="src/graphene-point3d.c"
5837+ line="242">a #graphene_point3d_t</doc>
5838+ <type name="Point3D" c:type="const graphene_point3d_t*"/>
5839+ </instance-parameter>
5840+ <parameter name="factor" transfer-ownership="none">
5841+ <doc xml:space="preserve"
5842+ filename="src/graphene-point3d.c"
5843+ line="243">the scaling factor</doc>
5844+ <type name="gfloat" c:type="float"/>
5845+ </parameter>
5846+ <parameter name="res"
5847+ direction="out"
5848+ caller-allocates="1"
5849+ transfer-ownership="none">
5850+ <doc xml:space="preserve"
5851+ filename="src/graphene-point3d.c"
5852+ line="244">return location for the scaled point</doc>
5853+ <type name="Point3D" c:type="graphene_point3d_t*"/>
5854+ </parameter>
5855+ </parameters>
5856+ </method>
5857+ <method name="to_vec3"
5858+ c:identifier="graphene_point3d_to_vec3"
5859+ version="1.0">
5860+ <doc xml:space="preserve"
5861+ filename="src/graphene-point3d.c"
5862+ line="165">Stores the coordinates of a #graphene_point3d_t into a
5863+#graphene_vec3_t.</doc>
5864+ <source-position filename="include/graphene-point3d.h" line="91"/>
5865+ <return-value transfer-ownership="none">
5866+ <type name="none" c:type="void"/>
5867+ </return-value>
5868+ <parameters>
5869+ <instance-parameter name="p" transfer-ownership="none">
5870+ <doc xml:space="preserve"
5871+ filename="src/graphene-point3d.c"
5872+ line="167">a #graphene_point3d_t</doc>
5873+ <type name="Point3D" c:type="const graphene_point3d_t*"/>
5874+ </instance-parameter>
5875+ <parameter name="v"
5876+ direction="out"
5877+ caller-allocates="1"
5878+ transfer-ownership="none">
5879+ <doc xml:space="preserve"
5880+ filename="src/graphene-point3d.c"
5881+ line="168">return location for a #graphene_vec3_t</doc>
5882+ <type name="Vec3" c:type="graphene_vec3_t*"/>
5883+ </parameter>
5884+ </parameters>
5885+ </method>
5886+ <function name="zero" c:identifier="graphene_point3d_zero" version="1.0">
5887+ <doc xml:space="preserve"
5888+ filename="src/graphene-point3d.c"
5889+ line="446">Retrieves a constant point with all three coordinates set to 0.</doc>
5890+ <source-position filename="include/graphene-point3d.h" line="137"/>
5891+ <return-value transfer-ownership="none">
5892+ <doc xml:space="preserve"
5893+ filename="src/graphene-point3d.c"
5894+ line="451">a zero point</doc>
5895+ <type name="Point3D" c:type="const graphene_point3d_t*"/>
5896+ </return-value>
5897+ </function>
5898+ </record>
5899+ <record name="Quad"
5900+ c:type="graphene_quad_t"
5901+ version="1.0"
5902+ glib:type-name="GrapheneQuad"
5903+ glib:get-type="graphene_quad_get_type"
5904+ c:symbol-prefix="quad">
5905+ <doc xml:space="preserve"
5906+ filename="include/graphene-quad.h"
5907+ line="33">A 4 vertex quadrilateral, as represented by four #graphene_point_t.
5908+
5909+The contents of a #graphene_quad_t are private and should never be
5910+accessed directly.</doc>
5911+ <source-position filename="include/graphene-quad.h" line="47"/>
5912+ <field name="points" readable="0" private="1">
5913+ <array zero-terminated="0" fixed-size="4">
5914+ <type name="Point" c:type="graphene_point_t"/>
5915+ </array>
5916+ </field>
5917+ <constructor name="alloc"
5918+ c:identifier="graphene_quad_alloc"
5919+ version="1.0">
5920+ <doc xml:space="preserve"
5921+ filename="src/graphene-quad.c"
5922+ line="44">Allocates a new #graphene_quad_t instance.
5923+
5924+The contents of the returned instance are undefined.</doc>
5925+ <source-position filename="include/graphene-quad.h" line="50"/>
5926+ <return-value transfer-ownership="full">
5927+ <doc xml:space="preserve"
5928+ filename="src/graphene-quad.c"
5929+ line="51">the newly created #graphene_quad_t instance</doc>
5930+ <type name="Quad" c:type="graphene_quad_t*"/>
5931+ </return-value>
5932+ </constructor>
5933+ <method name="bounds" c:identifier="graphene_quad_bounds" version="1.0">
5934+ <doc xml:space="preserve"
5935+ filename="src/graphene-quad.c"
5936+ line="176">Computes the bounding rectangle of @q and places it into @r.</doc>
5937+ <source-position filename="include/graphene-quad.h" line="72"/>
5938+ <return-value transfer-ownership="none">
5939+ <type name="none" c:type="void"/>
5940+ </return-value>
5941+ <parameters>
5942+ <instance-parameter name="q" transfer-ownership="none">
5943+ <doc xml:space="preserve"
5944+ filename="src/graphene-quad.c"
5945+ line="178">a #graphene_quad_t</doc>
5946+ <type name="Quad" c:type="const graphene_quad_t*"/>
5947+ </instance-parameter>
5948+ <parameter name="r"
5949+ direction="out"
5950+ caller-allocates="1"
5951+ transfer-ownership="none">
5952+ <doc xml:space="preserve"
5953+ filename="src/graphene-quad.c"
5954+ line="179">return location for a #graphene_rect_t</doc>
5955+ <type name="Rect" c:type="graphene_rect_t*"/>
5956+ </parameter>
5957+ </parameters>
5958+ </method>
5959+ <method name="contains"
5960+ c:identifier="graphene_quad_contains"
5961+ version="1.0">
5962+ <doc xml:space="preserve"
5963+ filename="src/graphene-quad.c"
5964+ line="148">Checks if the given #graphene_quad_t contains the given #graphene_point_t.</doc>
5965+ <source-position filename="include/graphene-quad.h" line="68"/>
5966+ <return-value transfer-ownership="none">
5967+ <doc xml:space="preserve"
5968+ filename="src/graphene-quad.c"
5969+ line="155">`true` if the point is inside the #graphene_quad_t</doc>
5970+ <type name="gboolean" c:type="_Bool"/>
5971+ </return-value>
5972+ <parameters>
5973+ <instance-parameter name="q" transfer-ownership="none">
5974+ <doc xml:space="preserve"
5975+ filename="src/graphene-quad.c"
5976+ line="150">a #graphene_quad_t</doc>
5977+ <type name="Quad" c:type="const graphene_quad_t*"/>
5978+ </instance-parameter>
5979+ <parameter name="p" transfer-ownership="none">
5980+ <doc xml:space="preserve"
5981+ filename="src/graphene-quad.c"
5982+ line="151">a #graphene_point_t</doc>
5983+ <type name="Point" c:type="const graphene_point_t*"/>
5984+ </parameter>
5985+ </parameters>
5986+ </method>
5987+ <method name="free" c:identifier="graphene_quad_free" version="1.0">
5988+ <doc xml:space="preserve"
5989+ filename="src/graphene-quad.c"
5990+ line="61">Frees the resources allocated by graphene_quad_alloc()</doc>
5991+ <source-position filename="include/graphene-quad.h" line="52"/>
5992+ <return-value transfer-ownership="none">
5993+ <type name="none" c:type="void"/>
5994+ </return-value>
5995+ <parameters>
5996+ <instance-parameter name="q" transfer-ownership="none">
5997+ <doc xml:space="preserve"
5998+ filename="src/graphene-quad.c"
5999+ line="63">a #graphene_quad_t</doc>
6000+ <type name="Quad" c:type="graphene_quad_t*"/>
6001+ </instance-parameter>
6002+ </parameters>
6003+ </method>
6004+ <method name="get_point"
6005+ c:identifier="graphene_quad_get_point"
6006+ version="1.0">
6007+ <doc xml:space="preserve"
6008+ filename="src/graphene-quad.c"
6009+ line="205">Retrieves the point of a #graphene_quad_t at the given index.</doc>
6010+ <source-position filename="include/graphene-quad.h" line="76"/>
6011+ <return-value transfer-ownership="none">
6012+ <doc xml:space="preserve"
6013+ filename="src/graphene-quad.c"
6014+ line="212">a #graphene_point_t</doc>
6015+ <type name="Point" c:type="const graphene_point_t*"/>
6016+ </return-value>
6017+ <parameters>
6018+ <instance-parameter name="q" transfer-ownership="none">
6019+ <doc xml:space="preserve"
6020+ filename="src/graphene-quad.c"
6021+ line="207">a #graphene_quad_t</doc>
6022+ <type name="Quad" c:type="const graphene_quad_t*"/>
6023+ </instance-parameter>
6024+ <parameter name="index_" transfer-ownership="none">
6025+ <doc xml:space="preserve"
6026+ filename="src/graphene-quad.c"
6027+ line="208">the index of the point to retrieve</doc>
6028+ <type name="guint" c:type="unsigned int"/>
6029+ </parameter>
6030+ </parameters>
6031+ </method>
6032+ <method name="init" c:identifier="graphene_quad_init" version="1.0">
6033+ <doc xml:space="preserve"
6034+ filename="src/graphene-quad.c"
6035+ line="75">Initializes a #graphene_quad_t with the given points.</doc>
6036+ <source-position filename="include/graphene-quad.h" line="55"/>
6037+ <return-value transfer-ownership="none">
6038+ <doc xml:space="preserve"
6039+ filename="src/graphene-quad.c"
6040+ line="85">the initialized #graphene_quad_t</doc>
6041+ <type name="Quad" c:type="graphene_quad_t*"/>
6042+ </return-value>
6043+ <parameters>
6044+ <instance-parameter name="q" transfer-ownership="none">
6045+ <doc xml:space="preserve"
6046+ filename="src/graphene-quad.c"
6047+ line="77">the #graphene_quad_t to initialize</doc>
6048+ <type name="Quad" c:type="graphene_quad_t*"/>
6049+ </instance-parameter>
6050+ <parameter name="p1" transfer-ownership="none">
6051+ <doc xml:space="preserve"
6052+ filename="src/graphene-quad.c"
6053+ line="78">the first point of the quadrilateral</doc>
6054+ <type name="Point" c:type="const graphene_point_t*"/>
6055+ </parameter>
6056+ <parameter name="p2" transfer-ownership="none">
6057+ <doc xml:space="preserve"
6058+ filename="src/graphene-quad.c"
6059+ line="79">the second point of the quadrilateral</doc>
6060+ <type name="Point" c:type="const graphene_point_t*"/>
6061+ </parameter>
6062+ <parameter name="p3" transfer-ownership="none">
6063+ <doc xml:space="preserve"
6064+ filename="src/graphene-quad.c"
6065+ line="80">the third point of the quadrilateral</doc>
6066+ <type name="Point" c:type="const graphene_point_t*"/>
6067+ </parameter>
6068+ <parameter name="p4" transfer-ownership="none">
6069+ <doc xml:space="preserve"
6070+ filename="src/graphene-quad.c"
6071+ line="81">the fourth point of the quadrilateral</doc>
6072+ <type name="Point" c:type="const graphene_point_t*"/>
6073+ </parameter>
6074+ </parameters>
6075+ </method>
6076+ <method name="init_from_points"
6077+ c:identifier="graphene_quad_init_from_points"
6078+ version="1.2">
6079+ <doc xml:space="preserve"
6080+ filename="src/graphene-quad.c"
6081+ line="128">Initializes a #graphene_quad_t using an array of points.</doc>
6082+ <source-position filename="include/graphene-quad.h" line="64"/>
6083+ <return-value transfer-ownership="none">
6084+ <doc xml:space="preserve"
6085+ filename="src/graphene-quad.c"
6086+ line="135">the initialized #graphene_quad_t</doc>
6087+ <type name="Quad" c:type="graphene_quad_t*"/>
6088+ </return-value>
6089+ <parameters>
6090+ <instance-parameter name="q" transfer-ownership="none">
6091+ <doc xml:space="preserve"
6092+ filename="src/graphene-quad.c"
6093+ line="130">the #graphene_quad_t to initialize</doc>
6094+ <type name="Quad" c:type="graphene_quad_t*"/>
6095+ </instance-parameter>
6096+ <parameter name="points" transfer-ownership="none">
6097+ <doc xml:space="preserve"
6098+ filename="src/graphene-quad.c"
6099+ line="131">an array of 4 #graphene_point_t</doc>
6100+ <array zero-terminated="0"
6101+ c:type="const graphene_point_t*"
6102+ fixed-size="4">
6103+ <type name="Point" c:type="graphene_point_t"/>
6104+ </array>
6105+ </parameter>
6106+ </parameters>
6107+ </method>
6108+ <method name="init_from_rect"
6109+ c:identifier="graphene_quad_init_from_rect"
6110+ version="1.0">
6111+ <doc xml:space="preserve"
6112+ filename="src/graphene-quad.c"
6113+ line="104">Initializes a #graphene_quad_t using the four corners of the
6114+given #graphene_rect_t.</doc>
6115+ <source-position filename="include/graphene-quad.h" line="61"/>
6116+ <return-value transfer-ownership="none">
6117+ <doc xml:space="preserve"
6118+ filename="src/graphene-quad.c"
6119+ line="112">the initialized #graphene_quad_t</doc>
6120+ <type name="Quad" c:type="graphene_quad_t*"/>
6121+ </return-value>
6122+ <parameters>
6123+ <instance-parameter name="q" transfer-ownership="none">
6124+ <doc xml:space="preserve"
6125+ filename="src/graphene-quad.c"
6126+ line="106">the #graphene_quad_t to initialize</doc>
6127+ <type name="Quad" c:type="graphene_quad_t*"/>
6128+ </instance-parameter>
6129+ <parameter name="r" transfer-ownership="none">
6130+ <doc xml:space="preserve"
6131+ filename="src/graphene-quad.c"
6132+ line="107">a #graphene_rect_t</doc>
6133+ <type name="Rect" c:type="const graphene_rect_t*"/>
6134+ </parameter>
6135+ </parameters>
6136+ </method>
6137+ </record>
6138+ <record name="Quaternion"
6139+ c:type="graphene_quaternion_t"
6140+ version="1.0"
6141+ glib:type-name="GrapheneQuaternion"
6142+ glib:get-type="graphene_quaternion_get_type"
6143+ c:symbol-prefix="quaternion">
6144+ <doc xml:space="preserve"
6145+ filename="include/graphene-quaternion.h"
6146+ line="37">A quaternion.
6147+
6148+The contents of the #graphene_quaternion_t structure are private
6149+and should never be accessed directly.</doc>
6150+ <source-position filename="include/graphene-quaternion.h" line="54"/>
6151+ <field name="x" readable="0" private="1">
6152+ <type name="gfloat" c:type="float"/>
6153+ </field>
6154+ <field name="y" readable="0" private="1">
6155+ <type name="gfloat" c:type="float"/>
6156+ </field>
6157+ <field name="z" readable="0" private="1">
6158+ <type name="gfloat" c:type="float"/>
6159+ </field>
6160+ <field name="w" readable="0" private="1">
6161+ <type name="gfloat" c:type="float"/>
6162+ </field>
6163+ <constructor name="alloc"
6164+ c:identifier="graphene_quaternion_alloc"
6165+ version="1.0">
6166+ <doc xml:space="preserve"
6167+ filename="src/graphene-quaternion.c"
6168+ line="53">Allocates a new #graphene_quaternion_t.
6169+
6170+The contents of the returned value are undefined.</doc>
6171+ <source-position filename="include/graphene-quaternion.h" line="57"/>
6172+ <return-value transfer-ownership="full">
6173+ <doc xml:space="preserve"
6174+ filename="src/graphene-quaternion.c"
6175+ line="60">the newly allocated #graphene_quaternion_t</doc>
6176+ <type name="Quaternion" c:type="graphene_quaternion_t*"/>
6177+ </return-value>
6178+ </constructor>
6179+ <method name="add" c:identifier="graphene_quaternion_add" version="1.10">
6180+ <doc xml:space="preserve"
6181+ filename="src/graphene-quaternion.c"
6182+ line="711">Adds two #graphene_quaternion_t @a and @b.</doc>
6183+ <source-position filename="include/graphene-quaternion.h" line="143"/>
6184+ <return-value transfer-ownership="none">
6185+ <type name="none" c:type="void"/>
6186+ </return-value>
6187+ <parameters>
6188+ <instance-parameter name="a" transfer-ownership="none">
6189+ <doc xml:space="preserve"
6190+ filename="src/graphene-quaternion.c"
6191+ line="713">a #graphene_quaternion_t</doc>
6192+ <type name="Quaternion" c:type="const graphene_quaternion_t*"/>
6193+ </instance-parameter>
6194+ <parameter name="b" transfer-ownership="none">
6195+ <doc xml:space="preserve"
6196+ filename="src/graphene-quaternion.c"
6197+ line="714">a #graphene_quaternion_t</doc>
6198+ <type name="Quaternion" c:type="const graphene_quaternion_t*"/>
6199+ </parameter>
6200+ <parameter name="res"
6201+ direction="out"
6202+ caller-allocates="1"
6203+ transfer-ownership="none">
6204+ <doc xml:space="preserve"
6205+ filename="src/graphene-quaternion.c"
6206+ line="715">the result of the operation</doc>
6207+ <type name="Quaternion" c:type="graphene_quaternion_t*"/>
6208+ </parameter>
6209+ </parameters>
6210+ </method>
6211+ <method name="dot" c:identifier="graphene_quaternion_dot" version="1.0">
6212+ <doc xml:space="preserve"
6213+ filename="src/graphene-quaternion.c"
6214+ line="597">Computes the dot product of two #graphene_quaternion_t.</doc>
6215+ <source-position filename="include/graphene-quaternion.h" line="121"/>
6216+ <return-value transfer-ownership="none">
6217+ <doc xml:space="preserve"
6218+ filename="src/graphene-quaternion.c"
6219+ line="604">the value of the dot products</doc>
6220+ <type name="gfloat" c:type="float"/>
6221+ </return-value>
6222+ <parameters>
6223+ <instance-parameter name="a" transfer-ownership="none">
6224+ <doc xml:space="preserve"
6225+ filename="src/graphene-quaternion.c"
6226+ line="599">a #graphene_quaternion_t</doc>
6227+ <type name="Quaternion" c:type="const graphene_quaternion_t*"/>
6228+ </instance-parameter>
6229+ <parameter name="b" transfer-ownership="none">
6230+ <doc xml:space="preserve"
6231+ filename="src/graphene-quaternion.c"
6232+ line="600">a #graphene_quaternion_t</doc>
6233+ <type name="Quaternion" c:type="const graphene_quaternion_t*"/>
6234+ </parameter>
6235+ </parameters>
6236+ </method>
6237+ <method name="equal"
6238+ c:identifier="graphene_quaternion_equal"
6239+ version="1.0">
6240+ <doc xml:space="preserve"
6241+ filename="src/graphene-quaternion.c"
6242+ line="579">Checks whether the given quaternions are equal.</doc>
6243+ <source-position filename="include/graphene-quaternion.h" line="118"/>
6244+ <return-value transfer-ownership="none">
6245+ <doc xml:space="preserve"
6246+ filename="src/graphene-quaternion.c"
6247+ line="586">`true` if the quaternions are equal</doc>
6248+ <type name="gboolean" c:type="_Bool"/>
6249+ </return-value>
6250+ <parameters>
6251+ <instance-parameter name="a" transfer-ownership="none">
6252+ <doc xml:space="preserve"
6253+ filename="src/graphene-quaternion.c"
6254+ line="581">a #graphene_quaternion_t</doc>
6255+ <type name="Quaternion" c:type="const graphene_quaternion_t*"/>
6256+ </instance-parameter>
6257+ <parameter name="b" transfer-ownership="none">
6258+ <doc xml:space="preserve"
6259+ filename="src/graphene-quaternion.c"
6260+ line="582">a #graphene_quaternion_t</doc>
6261+ <type name="Quaternion" c:type="const graphene_quaternion_t*"/>
6262+ </parameter>
6263+ </parameters>
6264+ </method>
6265+ <method name="free"
6266+ c:identifier="graphene_quaternion_free"
6267+ version="1.0">
6268+ <doc xml:space="preserve"
6269+ filename="src/graphene-quaternion.c"
6270+ line="70">Releases the resources allocated by graphene_quaternion_alloc().</doc>
6271+ <source-position filename="include/graphene-quaternion.h" line="59"/>
6272+ <return-value transfer-ownership="none">
6273+ <type name="none" c:type="void"/>
6274+ </return-value>
6275+ <parameters>
6276+ <instance-parameter name="q" transfer-ownership="none">
6277+ <doc xml:space="preserve"
6278+ filename="src/graphene-quaternion.c"
6279+ line="72">a #graphene_quaternion_t</doc>
6280+ <type name="Quaternion" c:type="graphene_quaternion_t*"/>
6281+ </instance-parameter>
6282+ </parameters>
6283+ </method>
6284+ <method name="init"
6285+ c:identifier="graphene_quaternion_init"
6286+ version="1.0">
6287+ <doc xml:space="preserve"
6288+ filename="src/graphene-quaternion.c"
6289+ line="84">Initializes a #graphene_quaternion_t using the given four values.</doc>
6290+ <source-position filename="include/graphene-quaternion.h" line="62"/>
6291+ <return-value transfer-ownership="none">
6292+ <doc xml:space="preserve"
6293+ filename="src/graphene-quaternion.c"
6294+ line="94">the initialized quaternion</doc>
6295+ <type name="Quaternion" c:type="graphene_quaternion_t*"/>
6296+ </return-value>
6297+ <parameters>
6298+ <instance-parameter name="q" transfer-ownership="none">
6299+ <doc xml:space="preserve"
6300+ filename="src/graphene-quaternion.c"
6301+ line="86">a #graphene_quaternion_t</doc>
6302+ <type name="Quaternion" c:type="graphene_quaternion_t*"/>
6303+ </instance-parameter>
6304+ <parameter name="x" transfer-ownership="none">
6305+ <doc xml:space="preserve"
6306+ filename="src/graphene-quaternion.c"
6307+ line="87">the first component of the quaternion</doc>
6308+ <type name="gfloat" c:type="float"/>
6309+ </parameter>
6310+ <parameter name="y" transfer-ownership="none">
6311+ <doc xml:space="preserve"
6312+ filename="src/graphene-quaternion.c"
6313+ line="88">the second component of the quaternion</doc>
6314+ <type name="gfloat" c:type="float"/>
6315+ </parameter>
6316+ <parameter name="z" transfer-ownership="none">
6317+ <doc xml:space="preserve"
6318+ filename="src/graphene-quaternion.c"
6319+ line="89">the third component of the quaternion</doc>
6320+ <type name="gfloat" c:type="float"/>
6321+ </parameter>
6322+ <parameter name="w" transfer-ownership="none">
6323+ <doc xml:space="preserve"
6324+ filename="src/graphene-quaternion.c"
6325+ line="90">the fourth component of the quaternion</doc>
6326+ <type name="gfloat" c:type="float"/>
6327+ </parameter>
6328+ </parameters>
6329+ </method>
6330+ <method name="init_from_angle_vec3"
6331+ c:identifier="graphene_quaternion_init_from_angle_vec3"
6332+ version="1.0">
6333+ <doc xml:space="preserve"
6334+ filename="src/graphene-quaternion.c"
6335+ line="464">Initializes a #graphene_quaternion_t using an @angle on a
6336+specific @axis.</doc>
6337+ <source-position filename="include/graphene-quaternion.h" line="89"/>
6338+ <return-value transfer-ownership="none">
6339+ <doc xml:space="preserve"
6340+ filename="src/graphene-quaternion.c"
6341+ line="473">the initialized quaternion</doc>
6342+ <type name="Quaternion" c:type="graphene_quaternion_t*"/>
6343+ </return-value>
6344+ <parameters>
6345+ <instance-parameter name="q" transfer-ownership="none">
6346+ <doc xml:space="preserve"
6347+ filename="src/graphene-quaternion.c"
6348+ line="466">a #graphene_quaternion_t</doc>
6349+ <type name="Quaternion" c:type="graphene_quaternion_t*"/>
6350+ </instance-parameter>
6351+ <parameter name="angle" transfer-ownership="none">
6352+ <doc xml:space="preserve"
6353+ filename="src/graphene-quaternion.c"
6354+ line="467">the rotation on a given axis, in degrees</doc>
6355+ <type name="gfloat" c:type="float"/>
6356+ </parameter>
6357+ <parameter name="axis" transfer-ownership="none">
6358+ <doc xml:space="preserve"
6359+ filename="src/graphene-quaternion.c"
6360+ line="468">the axis of rotation, expressed as a vector</doc>
6361+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
6362+ </parameter>
6363+ </parameters>
6364+ </method>
6365+ <method name="init_from_angles"
6366+ c:identifier="graphene_quaternion_init_from_angles"
6367+ version="1.0">
6368+ <doc xml:space="preserve"
6369+ filename="src/graphene-quaternion.c"
6370+ line="319">Initializes a #graphene_quaternion_t using the values of
6371+the [Euler angles](http://en.wikipedia.org/wiki/Euler_angles)
6372+on each axis.
6373+
6374+See also: graphene_quaternion_init_from_euler()</doc>
6375+ <source-position filename="include/graphene-quaternion.h" line="79"/>
6376+ <return-value transfer-ownership="none">
6377+ <doc xml:space="preserve"
6378+ filename="src/graphene-quaternion.c"
6379+ line="332">the initialized quaternion</doc>
6380+ <type name="Quaternion" c:type="graphene_quaternion_t*"/>
6381+ </return-value>
6382+ <parameters>
6383+ <instance-parameter name="q" transfer-ownership="none">
6384+ <doc xml:space="preserve"
6385+ filename="src/graphene-quaternion.c"
6386+ line="321">a #graphene_quaternion_t</doc>
6387+ <type name="Quaternion" c:type="graphene_quaternion_t*"/>
6388+ </instance-parameter>
6389+ <parameter name="deg_x" transfer-ownership="none">
6390+ <doc xml:space="preserve"
6391+ filename="src/graphene-quaternion.c"
6392+ line="322">rotation angle on the X axis (yaw), in degrees</doc>
6393+ <type name="gfloat" c:type="float"/>
6394+ </parameter>
6395+ <parameter name="deg_y" transfer-ownership="none">
6396+ <doc xml:space="preserve"
6397+ filename="src/graphene-quaternion.c"
6398+ line="323">rotation angle on the Y axis (pitch), in degrees</doc>
6399+ <type name="gfloat" c:type="float"/>
6400+ </parameter>
6401+ <parameter name="deg_z" transfer-ownership="none">
6402+ <doc xml:space="preserve"
6403+ filename="src/graphene-quaternion.c"
6404+ line="324">rotation angle on the Z axis (roll), in degrees</doc>
6405+ <type name="gfloat" c:type="float"/>
6406+ </parameter>
6407+ </parameters>
6408+ </method>
6409+ <method name="init_from_euler"
6410+ c:identifier="graphene_quaternion_init_from_euler"
6411+ version="1.2">
6412+ <doc xml:space="preserve"
6413+ filename="src/graphene-quaternion.c"
6414+ line="535">Initializes a #graphene_quaternion_t using the given #graphene_euler_t.</doc>
6415+ <source-position filename="include/graphene-quaternion.h" line="93"/>
6416+ <return-value transfer-ownership="none">
6417+ <doc xml:space="preserve"
6418+ filename="src/graphene-quaternion.c"
6419+ line="542">the initialized #graphene_quaternion_t</doc>
6420+ <type name="Quaternion" c:type="graphene_quaternion_t*"/>
6421+ </return-value>
6422+ <parameters>
6423+ <instance-parameter name="q" transfer-ownership="none">
6424+ <doc xml:space="preserve"
6425+ filename="src/graphene-quaternion.c"
6426+ line="537">the #graphene_quaternion_t to initialize</doc>
6427+ <type name="Quaternion" c:type="graphene_quaternion_t*"/>
6428+ </instance-parameter>
6429+ <parameter name="e" transfer-ownership="none">
6430+ <doc xml:space="preserve"
6431+ filename="src/graphene-quaternion.c"
6432+ line="538">a #graphene_euler_t</doc>
6433+ <type name="Euler" c:type="const graphene_euler_t*"/>
6434+ </parameter>
6435+ </parameters>
6436+ </method>
6437+ <method name="init_from_matrix"
6438+ c:identifier="graphene_quaternion_init_from_matrix"
6439+ version="1.0">
6440+ <doc xml:space="preserve"
6441+ filename="src/graphene-quaternion.c"
6442+ line="198">Initializes a #graphene_quaternion_t using the rotation components
6443+of a transformation matrix.</doc>
6444+ <source-position filename="include/graphene-quaternion.h" line="76"/>
6445+ <return-value transfer-ownership="none">
6446+ <doc xml:space="preserve"
6447+ filename="src/graphene-quaternion.c"
6448+ line="206">the initialized quaternion</doc>
6449+ <type name="Quaternion" c:type="graphene_quaternion_t*"/>
6450+ </return-value>
6451+ <parameters>
6452+ <instance-parameter name="q" transfer-ownership="none">
6453+ <doc xml:space="preserve"
6454+ filename="src/graphene-quaternion.c"
6455+ line="200">a #graphene_quaternion_t</doc>
6456+ <type name="Quaternion" c:type="graphene_quaternion_t*"/>
6457+ </instance-parameter>
6458+ <parameter name="m" transfer-ownership="none">
6459+ <doc xml:space="preserve"
6460+ filename="src/graphene-quaternion.c"
6461+ line="201">a #graphene_matrix_t</doc>
6462+ <type name="Matrix" c:type="const graphene_matrix_t*"/>
6463+ </parameter>
6464+ </parameters>
6465+ </method>
6466+ <method name="init_from_quaternion"
6467+ c:identifier="graphene_quaternion_init_from_quaternion"
6468+ version="1.0">
6469+ <doc xml:space="preserve"
6470+ filename="src/graphene-quaternion.c"
6471+ line="133">Initializes a #graphene_quaternion_t with the values from @src.</doc>
6472+ <source-position filename="include/graphene-quaternion.h" line="70"/>
6473+ <return-value transfer-ownership="none">
6474+ <doc xml:space="preserve"
6475+ filename="src/graphene-quaternion.c"
6476+ line="140">the initialized quaternion</doc>
6477+ <type name="Quaternion" c:type="graphene_quaternion_t*"/>
6478+ </return-value>
6479+ <parameters>
6480+ <instance-parameter name="q" transfer-ownership="none">
6481+ <doc xml:space="preserve"
6482+ filename="src/graphene-quaternion.c"
6483+ line="135">a #graphene_quaternion_t</doc>
6484+ <type name="Quaternion" c:type="graphene_quaternion_t*"/>
6485+ </instance-parameter>
6486+ <parameter name="src" transfer-ownership="none">
6487+ <doc xml:space="preserve"
6488+ filename="src/graphene-quaternion.c"
6489+ line="136">a #graphene_quaternion_t</doc>
6490+ <type name="Quaternion" c:type="const graphene_quaternion_t*"/>
6491+ </parameter>
6492+ </parameters>
6493+ </method>
6494+ <method name="init_from_radians"
6495+ c:identifier="graphene_quaternion_init_from_radians"
6496+ version="1.0">
6497+ <doc xml:space="preserve"
6498+ filename="src/graphene-quaternion.c"
6499+ line="348">Initializes a #graphene_quaternion_t using the values of
6500+the [Euler angles](http://en.wikipedia.org/wiki/Euler_angles)
6501+on each axis.
6502+
6503+See also: graphene_quaternion_init_from_euler()</doc>
6504+ <source-position filename="include/graphene-quaternion.h" line="84"/>
6505+ <return-value transfer-ownership="none">
6506+ <doc xml:space="preserve"
6507+ filename="src/graphene-quaternion.c"
6508+ line="361">the initialized quaternion</doc>
6509+ <type name="Quaternion" c:type="graphene_quaternion_t*"/>
6510+ </return-value>
6511+ <parameters>
6512+ <instance-parameter name="q" transfer-ownership="none">
6513+ <doc xml:space="preserve"
6514+ filename="src/graphene-quaternion.c"
6515+ line="350">a #graphene_quaternion_t</doc>
6516+ <type name="Quaternion" c:type="graphene_quaternion_t*"/>
6517+ </instance-parameter>
6518+ <parameter name="rad_x" transfer-ownership="none">
6519+ <doc xml:space="preserve"
6520+ filename="src/graphene-quaternion.c"
6521+ line="351">rotation angle on the X axis (yaw), in radians</doc>
6522+ <type name="gfloat" c:type="float"/>
6523+ </parameter>
6524+ <parameter name="rad_y" transfer-ownership="none">
6525+ <doc xml:space="preserve"
6526+ filename="src/graphene-quaternion.c"
6527+ line="352">rotation angle on the Y axis (pitch), in radians</doc>
6528+ <type name="gfloat" c:type="float"/>
6529+ </parameter>
6530+ <parameter name="rad_z" transfer-ownership="none">
6531+ <doc xml:space="preserve"
6532+ filename="src/graphene-quaternion.c"
6533+ line="353">rotation angle on the Z axis (roll), in radians</doc>
6534+ <type name="gfloat" c:type="float"/>
6535+ </parameter>
6536+ </parameters>
6537+ </method>
6538+ <method name="init_from_vec4"
6539+ c:identifier="graphene_quaternion_init_from_vec4"
6540+ version="1.0">
6541+ <doc xml:space="preserve"
6542+ filename="src/graphene-quaternion.c"
6543+ line="162">Initializes a #graphene_quaternion_t with the values from @src.</doc>
6544+ <source-position filename="include/graphene-quaternion.h" line="73"/>
6545+ <return-value transfer-ownership="none">
6546+ <doc xml:space="preserve"
6547+ filename="src/graphene-quaternion.c"
6548+ line="169">the initialized quaternion</doc>
6549+ <type name="Quaternion" c:type="graphene_quaternion_t*"/>
6550+ </return-value>
6551+ <parameters>
6552+ <instance-parameter name="q" transfer-ownership="none">
6553+ <doc xml:space="preserve"
6554+ filename="src/graphene-quaternion.c"
6555+ line="164">a #graphene_quaternion_t</doc>
6556+ <type name="Quaternion" c:type="graphene_quaternion_t*"/>
6557+ </instance-parameter>
6558+ <parameter name="src" transfer-ownership="none">
6559+ <doc xml:space="preserve"
6560+ filename="src/graphene-quaternion.c"
6561+ line="165">a #graphene_vec4_t</doc>
6562+ <type name="Vec4" c:type="const graphene_vec4_t*"/>
6563+ </parameter>
6564+ </parameters>
6565+ </method>
6566+ <method name="init_identity"
6567+ c:identifier="graphene_quaternion_init_identity"
6568+ version="1.0">
6569+ <doc xml:space="preserve"
6570+ filename="src/graphene-quaternion.c"
6571+ line="113">Initializes a #graphene_quaternion_t using the identity
6572+transformation.</doc>
6573+ <source-position filename="include/graphene-quaternion.h" line="68"/>
6574+ <return-value transfer-ownership="none">
6575+ <doc xml:space="preserve"
6576+ filename="src/graphene-quaternion.c"
6577+ line="120">the initialized quaternion</doc>
6578+ <type name="Quaternion" c:type="graphene_quaternion_t*"/>
6579+ </return-value>
6580+ <parameters>
6581+ <instance-parameter name="q" transfer-ownership="none">
6582+ <doc xml:space="preserve"
6583+ filename="src/graphene-quaternion.c"
6584+ line="115">a #graphene_quaternion_t</doc>
6585+ <type name="Quaternion" c:type="graphene_quaternion_t*"/>
6586+ </instance-parameter>
6587+ </parameters>
6588+ </method>
6589+ <method name="invert"
6590+ c:identifier="graphene_quaternion_invert"
6591+ version="1.0">
6592+ <doc xml:space="preserve"
6593+ filename="src/graphene-quaternion.c"
6594+ line="618">Inverts a #graphene_quaternion_t, and returns the conjugate
6595+quaternion of @q.</doc>
6596+ <source-position filename="include/graphene-quaternion.h" line="124"/>
6597+ <return-value transfer-ownership="none">
6598+ <type name="none" c:type="void"/>
6599+ </return-value>
6600+ <parameters>
6601+ <instance-parameter name="q" transfer-ownership="none">
6602+ <doc xml:space="preserve"
6603+ filename="src/graphene-quaternion.c"
6604+ line="620">a #graphene_quaternion_t</doc>
6605+ <type name="Quaternion" c:type="const graphene_quaternion_t*"/>
6606+ </instance-parameter>
6607+ <parameter name="res"
6608+ direction="out"
6609+ caller-allocates="1"
6610+ transfer-ownership="none">
6611+ <doc xml:space="preserve"
6612+ filename="src/graphene-quaternion.c"
6613+ line="621">return location for the inverted
6614+ quaternion</doc>
6615+ <type name="Quaternion" c:type="graphene_quaternion_t*"/>
6616+ </parameter>
6617+ </parameters>
6618+ </method>
6619+ <method name="multiply"
6620+ c:identifier="graphene_quaternion_multiply"
6621+ version="1.10">
6622+ <doc xml:space="preserve"
6623+ filename="src/graphene-quaternion.c"
6624+ line="661">Multiplies two #graphene_quaternion_t @a and @b.</doc>
6625+ <source-position filename="include/graphene-quaternion.h" line="135"/>
6626+ <return-value transfer-ownership="none">
6627+ <type name="none" c:type="void"/>
6628+ </return-value>
6629+ <parameters>
6630+ <instance-parameter name="a" transfer-ownership="none">
6631+ <doc xml:space="preserve"
6632+ filename="src/graphene-quaternion.c"
6633+ line="663">a #graphene_quaternion_t</doc>
6634+ <type name="Quaternion" c:type="const graphene_quaternion_t*"/>
6635+ </instance-parameter>
6636+ <parameter name="b" transfer-ownership="none">
6637+ <doc xml:space="preserve"
6638+ filename="src/graphene-quaternion.c"
6639+ line="664">a #graphene_quaternion_t</doc>
6640+ <type name="Quaternion" c:type="const graphene_quaternion_t*"/>
6641+ </parameter>
6642+ <parameter name="res"
6643+ direction="out"
6644+ caller-allocates="1"
6645+ transfer-ownership="none">
6646+ <doc xml:space="preserve"
6647+ filename="src/graphene-quaternion.c"
6648+ line="665">the result of the operation</doc>
6649+ <type name="Quaternion" c:type="graphene_quaternion_t*"/>
6650+ </parameter>
6651+ </parameters>
6652+ </method>
6653+ <method name="normalize"
6654+ c:identifier="graphene_quaternion_normalize"
6655+ version="1.0">
6656+ <doc xml:space="preserve"
6657+ filename="src/graphene-quaternion.c"
6658+ line="639">Normalizes a #graphene_quaternion_t.</doc>
6659+ <source-position filename="include/graphene-quaternion.h" line="127"/>
6660+ <return-value transfer-ownership="none">
6661+ <type name="none" c:type="void"/>
6662+ </return-value>
6663+ <parameters>
6664+ <instance-parameter name="q" transfer-ownership="none">
6665+ <doc xml:space="preserve"
6666+ filename="src/graphene-quaternion.c"
6667+ line="641">a #graphene_quaternion_t</doc>
6668+ <type name="Quaternion" c:type="const graphene_quaternion_t*"/>
6669+ </instance-parameter>
6670+ <parameter name="res"
6671+ direction="out"
6672+ caller-allocates="1"
6673+ transfer-ownership="none">
6674+ <doc xml:space="preserve"
6675+ filename="src/graphene-quaternion.c"
6676+ line="642">return location for the normalized
6677+ quaternion</doc>
6678+ <type name="Quaternion" c:type="graphene_quaternion_t*"/>
6679+ </parameter>
6680+ </parameters>
6681+ </method>
6682+ <method name="scale"
6683+ c:identifier="graphene_quaternion_scale"
6684+ version="1.10">
6685+ <doc xml:space="preserve"
6686+ filename="src/graphene-quaternion.c"
6687+ line="688">Scales all the elements of a #graphene_quaternion_t @q using
6688+the given scalar factor.</doc>
6689+ <source-position filename="include/graphene-quaternion.h" line="139"/>
6690+ <return-value transfer-ownership="none">
6691+ <type name="none" c:type="void"/>
6692+ </return-value>
6693+ <parameters>
6694+ <instance-parameter name="q" transfer-ownership="none">
6695+ <doc xml:space="preserve"
6696+ filename="src/graphene-quaternion.c"
6697+ line="690">a #graphene_quaternion_t</doc>
6698+ <type name="Quaternion" c:type="const graphene_quaternion_t*"/>
6699+ </instance-parameter>
6700+ <parameter name="factor" transfer-ownership="none">
6701+ <doc xml:space="preserve"
6702+ filename="src/graphene-quaternion.c"
6703+ line="691">a scaling factor</doc>
6704+ <type name="gfloat" c:type="float"/>
6705+ </parameter>
6706+ <parameter name="res"
6707+ direction="out"
6708+ caller-allocates="1"
6709+ transfer-ownership="none">
6710+ <doc xml:space="preserve"
6711+ filename="src/graphene-quaternion.c"
6712+ line="692">the result of the operation</doc>
6713+ <type name="Quaternion" c:type="graphene_quaternion_t*"/>
6714+ </parameter>
6715+ </parameters>
6716+ </method>
6717+ <method name="slerp"
6718+ c:identifier="graphene_quaternion_slerp"
6719+ version="1.0">
6720+ <doc xml:space="preserve"
6721+ filename="src/graphene-quaternion.c"
6722+ line="264">Interpolates between the two given quaternions using a spherical
6723+linear interpolation, or [SLERP](http://en.wikipedia.org/wiki/Slerp),
6724+using the given interpolation @factor.</doc>
6725+ <source-position filename="include/graphene-quaternion.h" line="130"/>
6726+ <return-value transfer-ownership="none">
6727+ <type name="none" c:type="void"/>
6728+ </return-value>
6729+ <parameters>
6730+ <instance-parameter name="a" transfer-ownership="none">
6731+ <doc xml:space="preserve"
6732+ filename="src/graphene-quaternion.c"
6733+ line="266">a #graphene_quaternion_t</doc>
6734+ <type name="Quaternion" c:type="const graphene_quaternion_t*"/>
6735+ </instance-parameter>
6736+ <parameter name="b" transfer-ownership="none">
6737+ <doc xml:space="preserve"
6738+ filename="src/graphene-quaternion.c"
6739+ line="267">a #graphene_quaternion_t</doc>
6740+ <type name="Quaternion" c:type="const graphene_quaternion_t*"/>
6741+ </parameter>
6742+ <parameter name="factor" transfer-ownership="none">
6743+ <doc xml:space="preserve"
6744+ filename="src/graphene-quaternion.c"
6745+ line="268">the linear interpolation factor</doc>
6746+ <type name="gfloat" c:type="float"/>
6747+ </parameter>
6748+ <parameter name="res"
6749+ direction="out"
6750+ caller-allocates="1"
6751+ transfer-ownership="none">
6752+ <doc xml:space="preserve"
6753+ filename="src/graphene-quaternion.c"
6754+ line="269">return location for the interpolated
6755+ quaternion</doc>
6756+ <type name="Quaternion" c:type="graphene_quaternion_t*"/>
6757+ </parameter>
6758+ </parameters>
6759+ </method>
6760+ <method name="to_angle_vec3"
6761+ c:identifier="graphene_quaternion_to_angle_vec3"
6762+ version="1.0">
6763+ <doc xml:space="preserve"
6764+ filename="src/graphene-quaternion.c"
6765+ line="499">Converts a quaternion into an @angle, @axis pair.</doc>
6766+ <source-position filename="include/graphene-quaternion.h" line="113"/>
6767+ <return-value transfer-ownership="none">
6768+ <type name="none" c:type="void"/>
6769+ </return-value>
6770+ <parameters>
6771+ <instance-parameter name="q" transfer-ownership="none">
6772+ <doc xml:space="preserve"
6773+ filename="src/graphene-quaternion.c"
6774+ line="501">a #graphene_quaternion_t</doc>
6775+ <type name="Quaternion" c:type="const graphene_quaternion_t*"/>
6776+ </instance-parameter>
6777+ <parameter name="angle"
6778+ direction="out"
6779+ caller-allocates="0"
6780+ transfer-ownership="full">
6781+ <doc xml:space="preserve"
6782+ filename="src/graphene-quaternion.c"
6783+ line="502">return location for the angle, in degrees</doc>
6784+ <type name="gfloat" c:type="float*"/>
6785+ </parameter>
6786+ <parameter name="axis"
6787+ direction="out"
6788+ caller-allocates="1"
6789+ transfer-ownership="none">
6790+ <doc xml:space="preserve"
6791+ filename="src/graphene-quaternion.c"
6792+ line="503">return location for the rotation axis</doc>
6793+ <type name="Vec3" c:type="graphene_vec3_t*"/>
6794+ </parameter>
6795+ </parameters>
6796+ </method>
6797+ <method name="to_angles"
6798+ c:identifier="graphene_quaternion_to_angles"
6799+ version="1.2">
6800+ <doc xml:space="preserve"
6801+ filename="src/graphene-quaternion.c"
6802+ line="386">Converts a #graphene_quaternion_t to its corresponding rotations
6803+on the [Euler angles](http://en.wikipedia.org/wiki/Euler_angles)
6804+on each axis.</doc>
6805+ <source-position filename="include/graphene-quaternion.h" line="103"/>
6806+ <return-value transfer-ownership="none">
6807+ <type name="none" c:type="void"/>
6808+ </return-value>
6809+ <parameters>
6810+ <instance-parameter name="q" transfer-ownership="none">
6811+ <doc xml:space="preserve"
6812+ filename="src/graphene-quaternion.c"
6813+ line="388">a #graphene_quaternion_t</doc>
6814+ <type name="Quaternion" c:type="const graphene_quaternion_t*"/>
6815+ </instance-parameter>
6816+ <parameter name="deg_x"
6817+ direction="out"
6818+ caller-allocates="0"
6819+ transfer-ownership="full"
6820+ optional="1"
6821+ allow-none="1">
6822+ <doc xml:space="preserve"
6823+ filename="src/graphene-quaternion.c"
6824+ line="389">return location for the rotation angle on
6825+ the X axis (yaw), in degrees</doc>
6826+ <type name="gfloat" c:type="float*"/>
6827+ </parameter>
6828+ <parameter name="deg_y"
6829+ direction="out"
6830+ caller-allocates="0"
6831+ transfer-ownership="full"
6832+ optional="1"
6833+ allow-none="1">
6834+ <doc xml:space="preserve"
6835+ filename="src/graphene-quaternion.c"
6836+ line="391">return location for the rotation angle on
6837+ the Y axis (pitch), in degrees</doc>
6838+ <type name="gfloat" c:type="float*"/>
6839+ </parameter>
6840+ <parameter name="deg_z"
6841+ direction="out"
6842+ caller-allocates="0"
6843+ transfer-ownership="full"
6844+ optional="1"
6845+ allow-none="1">
6846+ <doc xml:space="preserve"
6847+ filename="src/graphene-quaternion.c"
6848+ line="393">return location for the rotation angle on
6849+ the Z axis (roll), in degrees</doc>
6850+ <type name="gfloat" c:type="float*"/>
6851+ </parameter>
6852+ </parameters>
6853+ </method>
6854+ <method name="to_matrix"
6855+ c:identifier="graphene_quaternion_to_matrix"
6856+ version="1.0">
6857+ <doc xml:space="preserve"
6858+ filename="src/graphene-quaternion.c"
6859+ line="235">Converts a quaternion into a transformation matrix expressing
6860+the rotation defined by the #graphene_quaternion_t.</doc>
6861+ <source-position filename="include/graphene-quaternion.h" line="100"/>
6862+ <return-value transfer-ownership="none">
6863+ <type name="none" c:type="void"/>
6864+ </return-value>
6865+ <parameters>
6866+ <instance-parameter name="q" transfer-ownership="none">
6867+ <doc xml:space="preserve"
6868+ filename="src/graphene-quaternion.c"
6869+ line="237">a #graphene_quaternion_t</doc>
6870+ <type name="Quaternion" c:type="const graphene_quaternion_t*"/>
6871+ </instance-parameter>
6872+ <parameter name="m"
6873+ direction="out"
6874+ caller-allocates="1"
6875+ transfer-ownership="none">
6876+ <doc xml:space="preserve"
6877+ filename="src/graphene-quaternion.c"
6878+ line="238">a #graphene_matrix_t</doc>
6879+ <type name="Matrix" c:type="graphene_matrix_t*"/>
6880+ </parameter>
6881+ </parameters>
6882+ </method>
6883+ <method name="to_radians"
6884+ c:identifier="graphene_quaternion_to_radians"
6885+ version="1.2">
6886+ <doc xml:space="preserve"
6887+ filename="src/graphene-quaternion.c"
6888+ line="420">Converts a #graphene_quaternion_t to its corresponding rotations
6889+on the [Euler angles](http://en.wikipedia.org/wiki/Euler_angles)
6890+on each axis.</doc>
6891+ <source-position filename="include/graphene-quaternion.h" line="108"/>
6892+ <return-value transfer-ownership="none">
6893+ <type name="none" c:type="void"/>
6894+ </return-value>
6895+ <parameters>
6896+ <instance-parameter name="q" transfer-ownership="none">
6897+ <doc xml:space="preserve"
6898+ filename="src/graphene-quaternion.c"
6899+ line="422">a #graphene_quaternion_t</doc>
6900+ <type name="Quaternion" c:type="const graphene_quaternion_t*"/>
6901+ </instance-parameter>
6902+ <parameter name="rad_x"
6903+ direction="out"
6904+ caller-allocates="0"
6905+ transfer-ownership="full"
6906+ optional="1"
6907+ allow-none="1">
6908+ <doc xml:space="preserve"
6909+ filename="src/graphene-quaternion.c"
6910+ line="423">return location for the rotation angle on
6911+ the X axis (yaw), in radians</doc>
6912+ <type name="gfloat" c:type="float*"/>
6913+ </parameter>
6914+ <parameter name="rad_y"
6915+ direction="out"
6916+ caller-allocates="0"
6917+ transfer-ownership="full"
6918+ optional="1"
6919+ allow-none="1">
6920+ <doc xml:space="preserve"
6921+ filename="src/graphene-quaternion.c"
6922+ line="425">return location for the rotation angle on
6923+ the Y axis (pitch), in radians</doc>
6924+ <type name="gfloat" c:type="float*"/>
6925+ </parameter>
6926+ <parameter name="rad_z"
6927+ direction="out"
6928+ caller-allocates="0"
6929+ transfer-ownership="full"
6930+ optional="1"
6931+ allow-none="1">
6932+ <doc xml:space="preserve"
6933+ filename="src/graphene-quaternion.c"
6934+ line="427">return location for the rotation angle on
6935+ the Z axis (roll), in radians</doc>
6936+ <type name="gfloat" c:type="float*"/>
6937+ </parameter>
6938+ </parameters>
6939+ </method>
6940+ <method name="to_vec4"
6941+ c:identifier="graphene_quaternion_to_vec4"
6942+ version="1.0">
6943+ <doc xml:space="preserve"
6944+ filename="src/graphene-quaternion.c"
6945+ line="180">Copies the components of a #graphene_quaternion_t into a
6946+#graphene_vec4_t.</doc>
6947+ <source-position filename="include/graphene-quaternion.h" line="97"/>
6948+ <return-value transfer-ownership="none">
6949+ <type name="none" c:type="void"/>
6950+ </return-value>
6951+ <parameters>
6952+ <instance-parameter name="q" transfer-ownership="none">
6953+ <doc xml:space="preserve"
6954+ filename="src/graphene-quaternion.c"
6955+ line="182">a #graphene_quaternion_t</doc>
6956+ <type name="Quaternion" c:type="const graphene_quaternion_t*"/>
6957+ </instance-parameter>
6958+ <parameter name="res"
6959+ direction="out"
6960+ caller-allocates="1"
6961+ transfer-ownership="none">
6962+ <doc xml:space="preserve"
6963+ filename="src/graphene-quaternion.c"
6964+ line="183">return location for a
6965+ #graphene_vec4_t</doc>
6966+ <type name="Vec4" c:type="graphene_vec4_t*"/>
6967+ </parameter>
6968+ </parameters>
6969+ </method>
6970+ </record>
6971+ <function-macro name="RECT_INIT"
6972+ c:identifier="GRAPHENE_RECT_INIT"
6973+ version="1.0"
6974+ introspectable="0">
6975+ <doc xml:space="preserve"
6976+ filename="include/graphene-rect.h"
6977+ line="39">Initializes a #graphene_rect_t when declaring it.</doc>
6978+ <source-position filename="include/graphene-rect.h" line="50"/>
6979+ <parameters>
6980+ <parameter name="_x">
6981+ <doc xml:space="preserve"
6982+ filename="include/graphene-rect.h"
6983+ line="41">the X coordinate of the origin</doc>
6984+ </parameter>
6985+ <parameter name="_y">
6986+ <doc xml:space="preserve"
6987+ filename="include/graphene-rect.h"
6988+ line="42">the Y coordinate of the origin</doc>
6989+ </parameter>
6990+ <parameter name="_w">
6991+ <doc xml:space="preserve"
6992+ filename="include/graphene-rect.h"
6993+ line="43">the width</doc>
6994+ </parameter>
6995+ <parameter name="_h">
6996+ <doc xml:space="preserve"
6997+ filename="include/graphene-rect.h"
6998+ line="44">the height</doc>
6999+ </parameter>
7000+ </parameters>
7001+ </function-macro>
7002+ <record name="Ray"
7003+ c:type="graphene_ray_t"
7004+ version="1.4"
7005+ glib:type-name="GrapheneRay"
7006+ glib:get-type="graphene_ray_get_type"
7007+ c:symbol-prefix="ray">
7008+ <doc xml:space="preserve"
7009+ filename="include/graphene-ray.h"
7010+ line="37">A ray emitted from an origin in a given direction.
7011+
7012+The contents of the `graphene_ray_t` structure are private, and should not
7013+be modified directly.</doc>
7014+ <source-position filename="include/graphene-ray.h" line="52"/>
7015+ <field name="origin" readable="0" private="1">
7016+ <type name="Vec3" c:type="graphene_vec3_t"/>
7017+ </field>
7018+ <field name="direction" readable="0" private="1">
7019+ <type name="Vec3" c:type="graphene_vec3_t"/>
7020+ </field>
7021+ <constructor name="alloc"
7022+ c:identifier="graphene_ray_alloc"
7023+ version="1.4">
7024+ <doc xml:space="preserve"
7025+ filename="src/graphene-ray.c"
7026+ line="55">Allocates a new #graphene_ray_t structure.
7027+
7028+The contents of the returned structure are undefined.</doc>
7029+ <source-position filename="include/graphene-ray.h" line="73"/>
7030+ <return-value transfer-ownership="full">
7031+ <doc xml:space="preserve"
7032+ filename="src/graphene-ray.c"
7033+ line="62">the newly allocated #graphene_ray_t.
7034+ Use graphene_ray_free() to free the resources allocated by
7035+ this function</doc>
7036+ <type name="Ray" c:type="graphene_ray_t*"/>
7037+ </return-value>
7038+ </constructor>
7039+ <method name="equal" c:identifier="graphene_ray_equal" version="1.4">
7040+ <doc xml:space="preserve"
7041+ filename="src/graphene-ray.c"
7042+ line="320">Checks whether the two given #graphene_ray_t are equal.</doc>
7043+ <source-position filename="include/graphene-ray.h" line="107"/>
7044+ <return-value transfer-ownership="none">
7045+ <doc xml:space="preserve"
7046+ filename="src/graphene-ray.c"
7047+ line="327">`true` if the given rays are equal</doc>
7048+ <type name="gboolean" c:type="_Bool"/>
7049+ </return-value>
7050+ <parameters>
7051+ <instance-parameter name="a" transfer-ownership="none">
7052+ <doc xml:space="preserve"
7053+ filename="src/graphene-ray.c"
7054+ line="322">a #graphene_ray_t</doc>
7055+ <type name="Ray" c:type="const graphene_ray_t*"/>
7056+ </instance-parameter>
7057+ <parameter name="b" transfer-ownership="none">
7058+ <doc xml:space="preserve"
7059+ filename="src/graphene-ray.c"
7060+ line="323">a #graphene_ray_t</doc>
7061+ <type name="Ray" c:type="const graphene_ray_t*"/>
7062+ </parameter>
7063+ </parameters>
7064+ </method>
7065+ <method name="free" c:identifier="graphene_ray_free" version="1.4">
7066+ <doc xml:space="preserve"
7067+ filename="src/graphene-ray.c"
7068+ line="74">Frees the resources allocated by graphene_ray_alloc().</doc>
7069+ <source-position filename="include/graphene-ray.h" line="75"/>
7070+ <return-value transfer-ownership="none">
7071+ <type name="none" c:type="void"/>
7072+ </return-value>
7073+ <parameters>
7074+ <instance-parameter name="r" transfer-ownership="none">
7075+ <doc xml:space="preserve"
7076+ filename="src/graphene-ray.c"
7077+ line="76">a #graphene_ray_t</doc>
7078+ <type name="Ray" c:type="graphene_ray_t*"/>
7079+ </instance-parameter>
7080+ </parameters>
7081+ </method>
7082+ <method name="get_closest_point_to_point"
7083+ c:identifier="graphene_ray_get_closest_point_to_point"
7084+ version="1.4">
7085+ <doc xml:space="preserve"
7086+ filename="src/graphene-ray.c"
7087+ line="338">Computes the point on the given #graphene_ray_t that is closest to the
7088+given point @p.</doc>
7089+ <source-position filename="include/graphene-ray.h" line="111"/>
7090+ <return-value transfer-ownership="none">
7091+ <type name="none" c:type="void"/>
7092+ </return-value>
7093+ <parameters>
7094+ <instance-parameter name="r" transfer-ownership="none">
7095+ <doc xml:space="preserve"
7096+ filename="src/graphene-ray.c"
7097+ line="340">a #graphene_ray_t</doc>
7098+ <type name="Ray" c:type="const graphene_ray_t*"/>
7099+ </instance-parameter>
7100+ <parameter name="p" transfer-ownership="none">
7101+ <doc xml:space="preserve"
7102+ filename="src/graphene-ray.c"
7103+ line="341">a #graphene_point3d_t</doc>
7104+ <type name="Point3D" c:type="const graphene_point3d_t*"/>
7105+ </parameter>
7106+ <parameter name="res"
7107+ direction="out"
7108+ caller-allocates="1"
7109+ transfer-ownership="none">
7110+ <doc xml:space="preserve"
7111+ filename="src/graphene-ray.c"
7112+ line="342">return location for the closest point3d</doc>
7113+ <type name="Point3D" c:type="graphene_point3d_t*"/>
7114+ </parameter>
7115+ </parameters>
7116+ </method>
7117+ <method name="get_direction"
7118+ c:identifier="graphene_ray_get_direction"
7119+ version="1.4">
7120+ <doc xml:space="preserve"
7121+ filename="src/graphene-ray.c"
7122+ line="184">Retrieves the direction of the given #graphene_ray_t.</doc>
7123+ <source-position filename="include/graphene-ray.h" line="92"/>
7124+ <return-value transfer-ownership="none">
7125+ <type name="none" c:type="void"/>
7126+ </return-value>
7127+ <parameters>
7128+ <instance-parameter name="r" transfer-ownership="none">
7129+ <doc xml:space="preserve"
7130+ filename="src/graphene-ray.c"
7131+ line="186">a #graphene_ray_t</doc>
7132+ <type name="Ray" c:type="const graphene_ray_t*"/>
7133+ </instance-parameter>
7134+ <parameter name="direction"
7135+ direction="out"
7136+ caller-allocates="1"
7137+ transfer-ownership="none">
7138+ <doc xml:space="preserve"
7139+ filename="src/graphene-ray.c"
7140+ line="187">return location for the direction</doc>
7141+ <type name="Vec3" c:type="graphene_vec3_t*"/>
7142+ </parameter>
7143+ </parameters>
7144+ </method>
7145+ <method name="get_distance_to_plane"
7146+ c:identifier="graphene_ray_get_distance_to_plane"
7147+ version="1.4">
7148+ <doc xml:space="preserve"
7149+ filename="src/graphene-ray.c"
7150+ line="269">Computes the distance of the origin of the given #graphene_ray_t from the
7151+given plane.
7152+
7153+If the ray does not intersect the plane, this function returns `INFINITY`.</doc>
7154+ <source-position filename="include/graphene-ray.h" line="103"/>
7155+ <return-value transfer-ownership="none">
7156+ <doc xml:space="preserve"
7157+ filename="src/graphene-ray.c"
7158+ line="279">the distance of the origin of the ray from the plane</doc>
7159+ <type name="gfloat" c:type="float"/>
7160+ </return-value>
7161+ <parameters>
7162+ <instance-parameter name="r" transfer-ownership="none">
7163+ <doc xml:space="preserve"
7164+ filename="src/graphene-ray.c"
7165+ line="271">a #graphene_ray_t</doc>
7166+ <type name="Ray" c:type="const graphene_ray_t*"/>
7167+ </instance-parameter>
7168+ <parameter name="p" transfer-ownership="none">
7169+ <doc xml:space="preserve"
7170+ filename="src/graphene-ray.c"
7171+ line="272">a #graphene_plane_t</doc>
7172+ <type name="Plane" c:type="const graphene_plane_t*"/>
7173+ </parameter>
7174+ </parameters>
7175+ </method>
7176+ <method name="get_distance_to_point"
7177+ c:identifier="graphene_ray_get_distance_to_point"
7178+ version="1.4">
7179+ <doc xml:space="preserve"
7180+ filename="src/graphene-ray.c"
7181+ line="224">Computes the distance of the closest approach between the
7182+given #graphene_ray_t @r and the point @p.
7183+
7184+The closest approach to a ray from a point is the distance
7185+between the point and the projection of the point on the
7186+ray itself.</doc>
7187+ <source-position filename="include/graphene-ray.h" line="100"/>
7188+ <return-value transfer-ownership="none">
7189+ <doc xml:space="preserve"
7190+ filename="src/graphene-ray.c"
7191+ line="236">the distance of the point</doc>
7192+ <type name="gfloat" c:type="float"/>
7193+ </return-value>
7194+ <parameters>
7195+ <instance-parameter name="r" transfer-ownership="none">
7196+ <doc xml:space="preserve"
7197+ filename="src/graphene-ray.c"
7198+ line="226">a #graphene_ray_t</doc>
7199+ <type name="Ray" c:type="const graphene_ray_t*"/>
7200+ </instance-parameter>
7201+ <parameter name="p" transfer-ownership="none">
7202+ <doc xml:space="preserve"
7203+ filename="src/graphene-ray.c"
7204+ line="227">a #graphene_point3d_t</doc>
7205+ <type name="Point3D" c:type="const graphene_point3d_t*"/>
7206+ </parameter>
7207+ </parameters>
7208+ </method>
7209+ <method name="get_origin"
7210+ c:identifier="graphene_ray_get_origin"
7211+ version="1.4">
7212+ <doc xml:space="preserve"
7213+ filename="src/graphene-ray.c"
7214+ line="168">Retrieves the origin of the given #graphene_ray_t.</doc>
7215+ <source-position filename="include/graphene-ray.h" line="89"/>
7216+ <return-value transfer-ownership="none">
7217+ <type name="none" c:type="void"/>
7218+ </return-value>
7219+ <parameters>
7220+ <instance-parameter name="r" transfer-ownership="none">
7221+ <doc xml:space="preserve"
7222+ filename="src/graphene-ray.c"
7223+ line="170">a #graphene_ray_t</doc>
7224+ <type name="Ray" c:type="const graphene_ray_t*"/>
7225+ </instance-parameter>
7226+ <parameter name="origin"
7227+ direction="out"
7228+ caller-allocates="1"
7229+ transfer-ownership="none">
7230+ <doc xml:space="preserve"
7231+ filename="src/graphene-ray.c"
7232+ line="171">return location for the origin</doc>
7233+ <type name="Point3D" c:type="graphene_point3d_t*"/>
7234+ </parameter>
7235+ </parameters>
7236+ </method>
7237+ <method name="get_position_at"
7238+ c:identifier="graphene_ray_get_position_at"
7239+ version="1.4">
7240+ <doc xml:space="preserve"
7241+ filename="src/graphene-ray.c"
7242+ line="200">Retrieves the coordinates of a point at the distance @t along the
7243+given #graphene_ray_t.</doc>
7244+ <source-position filename="include/graphene-ray.h" line="96"/>
7245+ <return-value transfer-ownership="none">
7246+ <type name="none" c:type="void"/>
7247+ </return-value>
7248+ <parameters>
7249+ <instance-parameter name="r" transfer-ownership="none">
7250+ <doc xml:space="preserve"
7251+ filename="src/graphene-ray.c"
7252+ line="202">a #graphene_ray_t</doc>
7253+ <type name="Ray" c:type="const graphene_ray_t*"/>
7254+ </instance-parameter>
7255+ <parameter name="t" transfer-ownership="none">
7256+ <doc xml:space="preserve"
7257+ filename="src/graphene-ray.c"
7258+ line="203">the distance along the ray</doc>
7259+ <type name="gfloat" c:type="float"/>
7260+ </parameter>
7261+ <parameter name="position"
7262+ direction="out"
7263+ caller-allocates="1"
7264+ transfer-ownership="none">
7265+ <doc xml:space="preserve"
7266+ filename="src/graphene-ray.c"
7267+ line="204">return location for the position</doc>
7268+ <type name="Point3D" c:type="graphene_point3d_t*"/>
7269+ </parameter>
7270+ </parameters>
7271+ </method>
7272+ <method name="init" c:identifier="graphene_ray_init" version="1.4">
7273+ <doc xml:space="preserve"
7274+ filename="src/graphene-ray.c"
7275+ line="88">Initializes the given #graphene_ray_t using the given @origin
7276+and @direction values.</doc>
7277+ <source-position filename="include/graphene-ray.h" line="78"/>
7278+ <return-value transfer-ownership="none">
7279+ <doc xml:space="preserve"
7280+ filename="src/graphene-ray.c"
7281+ line="97">the initialized ray</doc>
7282+ <type name="Ray" c:type="graphene_ray_t*"/>
7283+ </return-value>
7284+ <parameters>
7285+ <instance-parameter name="r" transfer-ownership="none">
7286+ <doc xml:space="preserve"
7287+ filename="src/graphene-ray.c"
7288+ line="90">the #graphene_ray_t to initialize</doc>
7289+ <type name="Ray" c:type="graphene_ray_t*"/>
7290+ </instance-parameter>
7291+ <parameter name="origin"
7292+ transfer-ownership="none"
7293+ nullable="1"
7294+ allow-none="1">
7295+ <doc xml:space="preserve"
7296+ filename="src/graphene-ray.c"
7297+ line="91">the origin of the ray</doc>
7298+ <type name="Point3D" c:type="const graphene_point3d_t*"/>
7299+ </parameter>
7300+ <parameter name="direction"
7301+ transfer-ownership="none"
7302+ nullable="1"
7303+ allow-none="1">
7304+ <doc xml:space="preserve"
7305+ filename="src/graphene-ray.c"
7306+ line="92">the direction vector</doc>
7307+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
7308+ </parameter>
7309+ </parameters>
7310+ </method>
7311+ <method name="init_from_ray"
7312+ c:identifier="graphene_ray_init_from_ray"
7313+ version="1.4">
7314+ <doc xml:space="preserve"
7315+ filename="src/graphene-ray.c"
7316+ line="119">Initializes the given #graphene_ray_t using the origin and direction
7317+values of another #graphene_ray_t.</doc>
7318+ <source-position filename="include/graphene-ray.h" line="82"/>
7319+ <return-value transfer-ownership="none">
7320+ <doc xml:space="preserve"
7321+ filename="src/graphene-ray.c"
7322+ line="127">the initialized ray</doc>
7323+ <type name="Ray" c:type="graphene_ray_t*"/>
7324+ </return-value>
7325+ <parameters>
7326+ <instance-parameter name="r" transfer-ownership="none">
7327+ <doc xml:space="preserve"
7328+ filename="src/graphene-ray.c"
7329+ line="121">the #graphene_ray_t to initialize</doc>
7330+ <type name="Ray" c:type="graphene_ray_t*"/>
7331+ </instance-parameter>
7332+ <parameter name="src" transfer-ownership="none">
7333+ <doc xml:space="preserve"
7334+ filename="src/graphene-ray.c"
7335+ line="122">a #graphene_ray_t</doc>
7336+ <type name="Ray" c:type="const graphene_ray_t*"/>
7337+ </parameter>
7338+ </parameters>
7339+ </method>
7340+ <method name="init_from_vec3"
7341+ c:identifier="graphene_ray_init_from_vec3"
7342+ version="1.4">
7343+ <doc xml:space="preserve"
7344+ filename="src/graphene-ray.c"
7345+ line="138">Initializes the given #graphene_ray_t using the given vectors.</doc>
7346+ <source-position filename="include/graphene-ray.h" line="85"/>
7347+ <return-value transfer-ownership="none">
7348+ <doc xml:space="preserve"
7349+ filename="src/graphene-ray.c"
7350+ line="146">the initialized ray</doc>
7351+ <type name="Ray" c:type="graphene_ray_t*"/>
7352+ </return-value>
7353+ <parameters>
7354+ <instance-parameter name="r" transfer-ownership="none">
7355+ <doc xml:space="preserve"
7356+ filename="src/graphene-ray.c"
7357+ line="140">the #graphene_ray_t to initialize</doc>
7358+ <type name="Ray" c:type="graphene_ray_t*"/>
7359+ </instance-parameter>
7360+ <parameter name="origin"
7361+ transfer-ownership="none"
7362+ nullable="1"
7363+ allow-none="1">
7364+ <doc xml:space="preserve"
7365+ filename="src/graphene-ray.c"
7366+ line="141">a #graphene_vec3_t</doc>
7367+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
7368+ </parameter>
7369+ <parameter name="direction"
7370+ transfer-ownership="none"
7371+ nullable="1"
7372+ allow-none="1">
7373+ <doc xml:space="preserve"
7374+ filename="src/graphene-ray.c"
7375+ line="142">a #graphene_vec3_t</doc>
7376+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
7377+ </parameter>
7378+ </parameters>
7379+ </method>
7380+ <method name="intersect_box"
7381+ c:identifier="graphene_ray_intersect_box"
7382+ version="1.10">
7383+ <doc xml:space="preserve"
7384+ filename="src/graphene-ray.c"
7385+ line="465">Intersects the given #graphene_ray_t @r with the given
7386+#graphene_box_t @b.</doc>
7387+ <source-position filename="include/graphene-ray.h" line="123"/>
7388+ <return-value transfer-ownership="none">
7389+ <doc xml:space="preserve"
7390+ filename="src/graphene-ray.c"
7391+ line="474">the type of intersection</doc>
7392+ <type name="RayIntersectionKind"
7393+ c:type="graphene_ray_intersection_kind_t"/>
7394+ </return-value>
7395+ <parameters>
7396+ <instance-parameter name="r" transfer-ownership="none">
7397+ <doc xml:space="preserve"
7398+ filename="src/graphene-ray.c"
7399+ line="467">a #graphene_ray_t</doc>
7400+ <type name="Ray" c:type="const graphene_ray_t*"/>
7401+ </instance-parameter>
7402+ <parameter name="b" transfer-ownership="none">
7403+ <doc xml:space="preserve"
7404+ filename="src/graphene-ray.c"
7405+ line="468">a #graphene_box_t</doc>
7406+ <type name="Box" c:type="const graphene_box_t*"/>
7407+ </parameter>
7408+ <parameter name="t_out"
7409+ direction="out"
7410+ caller-allocates="0"
7411+ transfer-ownership="full">
7412+ <doc xml:space="preserve"
7413+ filename="src/graphene-ray.c"
7414+ line="469">the distance of the point on the ray that intersects the box</doc>
7415+ <type name="gfloat" c:type="float*"/>
7416+ </parameter>
7417+ </parameters>
7418+ </method>
7419+ <method name="intersect_sphere"
7420+ c:identifier="graphene_ray_intersect_sphere"
7421+ version="1.10">
7422+ <doc xml:space="preserve"
7423+ filename="src/graphene-ray.c"
7424+ line="372">Intersects the given #graphene_ray_t @r with the given
7425+#graphene_sphere_t @s.</doc>
7426+ <source-position filename="include/graphene-ray.h" line="116"/>
7427+ <return-value transfer-ownership="none">
7428+ <doc xml:space="preserve"
7429+ filename="src/graphene-ray.c"
7430+ line="381">the type of intersection</doc>
7431+ <type name="RayIntersectionKind"
7432+ c:type="graphene_ray_intersection_kind_t"/>
7433+ </return-value>
7434+ <parameters>
7435+ <instance-parameter name="r" transfer-ownership="none">
7436+ <doc xml:space="preserve"
7437+ filename="src/graphene-ray.c"
7438+ line="374">a #graphene_ray_t</doc>
7439+ <type name="Ray" c:type="const graphene_ray_t*"/>
7440+ </instance-parameter>
7441+ <parameter name="s" transfer-ownership="none">
7442+ <doc xml:space="preserve"
7443+ filename="src/graphene-ray.c"
7444+ line="375">a #graphene_sphere_t</doc>
7445+ <type name="Sphere" c:type="const graphene_sphere_t*"/>
7446+ </parameter>
7447+ <parameter name="t_out"
7448+ direction="out"
7449+ caller-allocates="0"
7450+ transfer-ownership="full">
7451+ <doc xml:space="preserve"
7452+ filename="src/graphene-ray.c"
7453+ line="376">the distance of the point on the ray that intersects the sphere</doc>
7454+ <type name="gfloat" c:type="float*"/>
7455+ </parameter>
7456+ </parameters>
7457+ </method>
7458+ <method name="intersect_triangle"
7459+ c:identifier="graphene_ray_intersect_triangle"
7460+ version="1.10">
7461+ <doc xml:space="preserve"
7462+ filename="src/graphene-ray.c"
7463+ line="593">Intersects the given #graphene_ray_t @r with the given
7464+#graphene_triangle_t @t.</doc>
7465+ <source-position filename="include/graphene-ray.h" line="130"/>
7466+ <return-value transfer-ownership="none">
7467+ <doc xml:space="preserve"
7468+ filename="src/graphene-ray.c"
7469+ line="602">the type of intersection</doc>
7470+ <type name="RayIntersectionKind"
7471+ c:type="graphene_ray_intersection_kind_t"/>
7472+ </return-value>
7473+ <parameters>
7474+ <instance-parameter name="r" transfer-ownership="none">
7475+ <doc xml:space="preserve"
7476+ filename="src/graphene-ray.c"
7477+ line="595">a #graphene_ray_t</doc>
7478+ <type name="Ray" c:type="const graphene_ray_t*"/>
7479+ </instance-parameter>
7480+ <parameter name="t" transfer-ownership="none">
7481+ <doc xml:space="preserve"
7482+ filename="src/graphene-ray.c"
7483+ line="596">a #graphene_triangle_t</doc>
7484+ <type name="Triangle" c:type="const graphene_triangle_t*"/>
7485+ </parameter>
7486+ <parameter name="t_out"
7487+ direction="out"
7488+ caller-allocates="0"
7489+ transfer-ownership="full">
7490+ <doc xml:space="preserve"
7491+ filename="src/graphene-ray.c"
7492+ line="597">the distance of the point on the ray that intersects the triangle</doc>
7493+ <type name="gfloat" c:type="float*"/>
7494+ </parameter>
7495+ </parameters>
7496+ </method>
7497+ <method name="intersects_box"
7498+ c:identifier="graphene_ray_intersects_box"
7499+ version="1.10">
7500+ <doc xml:space="preserve"
7501+ filename="src/graphene-ray.c"
7502+ line="572">Checks whether the given #graphene_ray_t @r intersects the
7503+given #graphene_box_t @b.
7504+
7505+See also: graphene_ray_intersect_box()</doc>
7506+ <source-position filename="include/graphene-ray.h" line="127"/>
7507+ <return-value transfer-ownership="none">
7508+ <doc xml:space="preserve"
7509+ filename="src/graphene-ray.c"
7510+ line="582">`true` if the ray intersects the box</doc>
7511+ <type name="gboolean" c:type="_Bool"/>
7512+ </return-value>
7513+ <parameters>
7514+ <instance-parameter name="r" transfer-ownership="none">
7515+ <doc xml:space="preserve"
7516+ filename="src/graphene-ray.c"
7517+ line="574">a #graphene_ray_t</doc>
7518+ <type name="Ray" c:type="const graphene_ray_t*"/>
7519+ </instance-parameter>
7520+ <parameter name="b" transfer-ownership="none">
7521+ <doc xml:space="preserve"
7522+ filename="src/graphene-ray.c"
7523+ line="575">a #graphene_box_t</doc>
7524+ <type name="Box" c:type="const graphene_box_t*"/>
7525+ </parameter>
7526+ </parameters>
7527+ </method>
7528+ <method name="intersects_sphere"
7529+ c:identifier="graphene_ray_intersects_sphere"
7530+ version="1.10">
7531+ <doc xml:space="preserve"
7532+ filename="src/graphene-ray.c"
7533+ line="444">Checks if the given #graphene_ray_t @r intersects the
7534+given #graphene_sphere_t @s.
7535+
7536+See also: graphene_ray_intersect_sphere()</doc>
7537+ <source-position filename="include/graphene-ray.h" line="120"/>
7538+ <return-value transfer-ownership="none">
7539+ <doc xml:space="preserve"
7540+ filename="src/graphene-ray.c"
7541+ line="454">`true` if the ray intersects the sphere</doc>
7542+ <type name="gboolean" c:type="_Bool"/>
7543+ </return-value>
7544+ <parameters>
7545+ <instance-parameter name="r" transfer-ownership="none">
7546+ <doc xml:space="preserve"
7547+ filename="src/graphene-ray.c"
7548+ line="446">a #graphene_ray_t</doc>
7549+ <type name="Ray" c:type="const graphene_ray_t*"/>
7550+ </instance-parameter>
7551+ <parameter name="s" transfer-ownership="none">
7552+ <doc xml:space="preserve"
7553+ filename="src/graphene-ray.c"
7554+ line="447">a #graphene_sphere_t</doc>
7555+ <type name="Sphere" c:type="const graphene_sphere_t*"/>
7556+ </parameter>
7557+ </parameters>
7558+ </method>
7559+ <method name="intersects_triangle"
7560+ c:identifier="graphene_ray_intersects_triangle"
7561+ version="1.10">
7562+ <doc xml:space="preserve"
7563+ filename="src/graphene-ray.c"
7564+ line="693">Checks whether the given #graphene_ray_t @r intersects the
7565+given #graphene_triangle_t @b.
7566+
7567+See also: graphene_ray_intersect_triangle()</doc>
7568+ <source-position filename="include/graphene-ray.h" line="134"/>
7569+ <return-value transfer-ownership="none">
7570+ <doc xml:space="preserve"
7571+ filename="src/graphene-ray.c"
7572+ line="703">`true` if the ray intersects the triangle</doc>
7573+ <type name="gboolean" c:type="_Bool"/>
7574+ </return-value>
7575+ <parameters>
7576+ <instance-parameter name="r" transfer-ownership="none">
7577+ <doc xml:space="preserve"
7578+ filename="src/graphene-ray.c"
7579+ line="695">a #graphene_ray_t</doc>
7580+ <type name="Ray" c:type="const graphene_ray_t*"/>
7581+ </instance-parameter>
7582+ <parameter name="t" transfer-ownership="none">
7583+ <doc xml:space="preserve"
7584+ filename="src/graphene-ray.c"
7585+ line="696">a #graphene_triangle_t</doc>
7586+ <type name="Triangle" c:type="const graphene_triangle_t*"/>
7587+ </parameter>
7588+ </parameters>
7589+ </method>
7590+ </record>
7591+ <enumeration name="RayIntersectionKind"
7592+ version="1.10"
7593+ c:type="graphene_ray_intersection_kind_t">
7594+ <doc xml:space="preserve"
7595+ filename="include/graphene-ray.h"
7596+ line="54">The type of intersection.</doc>
7597+ <source-position filename="include/graphene-ray.h" line="70"/>
7598+ <member name="none"
7599+ value="0"
7600+ c:identifier="GRAPHENE_RAY_INTERSECTION_KIND_NONE">
7601+ <doc xml:space="preserve"
7602+ filename="include/graphene-ray.h"
7603+ line="56">No intersection</doc>
7604+ </member>
7605+ <member name="enter"
7606+ value="1"
7607+ c:identifier="GRAPHENE_RAY_INTERSECTION_KIND_ENTER">
7608+ <doc xml:space="preserve"
7609+ filename="include/graphene-ray.h"
7610+ line="57">The ray is entering the intersected
7611+ object</doc>
7612+ </member>
7613+ <member name="leave"
7614+ value="2"
7615+ c:identifier="GRAPHENE_RAY_INTERSECTION_KIND_LEAVE">
7616+ <doc xml:space="preserve"
7617+ filename="include/graphene-ray.h"
7618+ line="59">The ray is leaving the intersected
7619+ object</doc>
7620+ </member>
7621+ </enumeration>
7622+ <record name="Rect"
7623+ c:type="graphene_rect_t"
7624+ version="1.0"
7625+ glib:type-name="GrapheneRect"
7626+ glib:get-type="graphene_rect_get_type"
7627+ c:symbol-prefix="rect">
7628+ <doc xml:space="preserve"
7629+ filename="include/graphene-rect.h"
7630+ line="63">The location and size of a rectangle region.
7631+
7632+The width and height of a #graphene_rect_t can be negative; for instance,
7633+a #graphene_rect_t with an origin of [ 0, 0 ] and a size of [ 10, 10 ] is
7634+equivalent to a #graphene_rect_t with an origin of [ 10, 10 ] and a size
7635+of [ -10, -10 ].
7636+
7637+Application code can normalize rectangles using graphene_rect_normalize();
7638+this function will ensure that the width and height of a rectangle are
7639+positive values. All functions taking a #graphene_rect_t as an argument
7640+will internally operate on a normalized copy; all functions returning a
7641+#graphene_rect_t will always return a normalized rectangle.</doc>
7642+ <source-position filename="include/graphene-rect.h" line="87"/>
7643+ <field name="origin" writable="1">
7644+ <doc xml:space="preserve"
7645+ filename="include/graphene-rect.h"
7646+ line="65">the coordinates of the origin of the rectangle</doc>
7647+ <type name="Point" c:type="graphene_point_t"/>
7648+ </field>
7649+ <field name="size" writable="1">
7650+ <doc xml:space="preserve"
7651+ filename="include/graphene-rect.h"
7652+ line="66">the size of the rectangle</doc>
7653+ <type name="Size" c:type="graphene_size_t"/>
7654+ </field>
7655+ <method name="contains_point"
7656+ c:identifier="graphene_rect_contains_point"
7657+ version="1.0">
7658+ <doc xml:space="preserve"
7659+ filename="src/graphene-rect.c"
7660+ line="545">Checks whether a #graphene_rect_t contains the given coordinates.</doc>
7661+ <source-position filename="include/graphene-rect.h" line="149"/>
7662+ <return-value transfer-ownership="none">
7663+ <doc xml:space="preserve"
7664+ filename="src/graphene-rect.c"
7665+ line="552">`true` if the rectangle contains the point</doc>
7666+ <type name="gboolean" c:type="_Bool"/>
7667+ </return-value>
7668+ <parameters>
7669+ <instance-parameter name="r" transfer-ownership="none">
7670+ <doc xml:space="preserve"
7671+ filename="src/graphene-rect.c"
7672+ line="547">a #graphene_rect_t</doc>
7673+ <type name="Rect" c:type="const graphene_rect_t*"/>
7674+ </instance-parameter>
7675+ <parameter name="p" transfer-ownership="none">
7676+ <doc xml:space="preserve"
7677+ filename="src/graphene-rect.c"
7678+ line="548">a #graphene_point_t</doc>
7679+ <type name="Point" c:type="const graphene_point_t*"/>
7680+ </parameter>
7681+ </parameters>
7682+ </method>
7683+ <method name="contains_rect"
7684+ c:identifier="graphene_rect_contains_rect"
7685+ version="1.0">
7686+ <doc xml:space="preserve"
7687+ filename="src/graphene-rect.c"
7688+ line="571">Checks whether a #graphene_rect_t fully contains the given
7689+rectangle.</doc>
7690+ <source-position filename="include/graphene-rect.h" line="152"/>
7691+ <return-value transfer-ownership="none">
7692+ <doc xml:space="preserve"
7693+ filename="src/graphene-rect.c"
7694+ line="579">`true` if the rectangle @a fully contains @b</doc>
7695+ <type name="gboolean" c:type="_Bool"/>
7696+ </return-value>
7697+ <parameters>
7698+ <instance-parameter name="a" transfer-ownership="none">
7699+ <doc xml:space="preserve"
7700+ filename="src/graphene-rect.c"
7701+ line="573">a #graphene_rect_t</doc>
7702+ <type name="Rect" c:type="const graphene_rect_t*"/>
7703+ </instance-parameter>
7704+ <parameter name="b" transfer-ownership="none">
7705+ <doc xml:space="preserve"
7706+ filename="src/graphene-rect.c"
7707+ line="574">a #graphene_rect_t</doc>
7708+ <type name="Rect" c:type="const graphene_rect_t*"/>
7709+ </parameter>
7710+ </parameters>
7711+ </method>
7712+ <method name="equal" c:identifier="graphene_rect_equal" version="1.0">
7713+ <doc xml:space="preserve"
7714+ filename="src/graphene-rect.c"
7715+ line="177">Checks whether the two given rectangle are equal.</doc>
7716+ <source-position filename="include/graphene-rect.h" line="104"/>
7717+ <return-value transfer-ownership="none">
7718+ <doc xml:space="preserve"
7719+ filename="src/graphene-rect.c"
7720+ line="184">`true` if the rectangles are equal</doc>
7721+ <type name="gboolean" c:type="_Bool"/>
7722+ </return-value>
7723+ <parameters>
7724+ <instance-parameter name="a" transfer-ownership="none">
7725+ <doc xml:space="preserve"
7726+ filename="src/graphene-rect.c"
7727+ line="179">a #graphene_rect_t</doc>
7728+ <type name="Rect" c:type="const graphene_rect_t*"/>
7729+ </instance-parameter>
7730+ <parameter name="b" transfer-ownership="none">
7731+ <doc xml:space="preserve"
7732+ filename="src/graphene-rect.c"
7733+ line="180">a #graphene_rect_t</doc>
7734+ <type name="Rect" c:type="const graphene_rect_t*"/>
7735+ </parameter>
7736+ </parameters>
7737+ </method>
7738+ <method name="expand" c:identifier="graphene_rect_expand" version="1.4">
7739+ <doc xml:space="preserve"
7740+ filename="src/graphene-rect.c"
7741+ line="834">Expands a #graphene_rect_t to contain the given #graphene_point_t.</doc>
7742+ <source-position filename="include/graphene-rect.h" line="187"/>
7743+ <return-value transfer-ownership="none">
7744+ <type name="none" c:type="void"/>
7745+ </return-value>
7746+ <parameters>
7747+ <instance-parameter name="r" transfer-ownership="none">
7748+ <doc xml:space="preserve"
7749+ filename="src/graphene-rect.c"
7750+ line="836">a #graphene_rect_t</doc>
7751+ <type name="Rect" c:type="const graphene_rect_t*"/>
7752+ </instance-parameter>
7753+ <parameter name="p" transfer-ownership="none">
7754+ <doc xml:space="preserve"
7755+ filename="src/graphene-rect.c"
7756+ line="837">a #graphene_point_t</doc>
7757+ <type name="Point" c:type="const graphene_point_t*"/>
7758+ </parameter>
7759+ <parameter name="res"
7760+ direction="out"
7761+ caller-allocates="1"
7762+ transfer-ownership="none">
7763+ <doc xml:space="preserve"
7764+ filename="src/graphene-rect.c"
7765+ line="838">return location for the expanded rectangle</doc>
7766+ <type name="Rect" c:type="graphene_rect_t*"/>
7767+ </parameter>
7768+ </parameters>
7769+ </method>
7770+ <method name="free" c:identifier="graphene_rect_free" version="1.0">
7771+ <doc xml:space="preserve"
7772+ filename="src/graphene-rect.c"
7773+ line="90">Frees the resources allocated by graphene_rect_alloc().</doc>
7774+ <source-position filename="include/graphene-rect.h" line="92"/>
7775+ <return-value transfer-ownership="none">
7776+ <type name="none" c:type="void"/>
7777+ </return-value>
7778+ <parameters>
7779+ <instance-parameter name="r" transfer-ownership="none">
7780+ <doc xml:space="preserve"
7781+ filename="src/graphene-rect.c"
7782+ line="92">a #graphene_rect_t</doc>
7783+ <type name="Rect" c:type="graphene_rect_t*"/>
7784+ </instance-parameter>
7785+ </parameters>
7786+ </method>
7787+ <method name="get_area"
7788+ c:identifier="graphene_rect_get_area"
7789+ version="1.10">
7790+ <doc xml:space="preserve"
7791+ filename="src/graphene-rect.c"
7792+ line="438">Compute the area of given normalized rectangle.</doc>
7793+ <source-position filename="include/graphene-rect.h" line="138"/>
7794+ <return-value transfer-ownership="none">
7795+ <doc xml:space="preserve"
7796+ filename="src/graphene-rect.c"
7797+ line="444">the area of the normalized rectangle</doc>
7798+ <type name="gfloat" c:type="float"/>
7799+ </return-value>
7800+ <parameters>
7801+ <instance-parameter name="r" transfer-ownership="none">
7802+ <doc xml:space="preserve"
7803+ filename="src/graphene-rect.c"
7804+ line="440">a #graphene_rect_t</doc>
7805+ <type name="Rect" c:type="const graphene_rect_t*"/>
7806+ </instance-parameter>
7807+ </parameters>
7808+ </method>
7809+ <method name="get_bottom_left"
7810+ c:identifier="graphene_rect_get_bottom_left"
7811+ version="1.0">
7812+ <doc xml:space="preserve"
7813+ filename="src/graphene-rect.c"
7814+ line="306">Retrieves the coordinates of the bottom-left corner of the given rectangle.</doc>
7815+ <source-position filename="include/graphene-rect.h" line="124"/>
7816+ <return-value transfer-ownership="none">
7817+ <type name="none" c:type="void"/>
7818+ </return-value>
7819+ <parameters>
7820+ <instance-parameter name="r" transfer-ownership="none">
7821+ <doc xml:space="preserve"
7822+ filename="src/graphene-rect.c"
7823+ line="308">a #graphene_rect_t</doc>
7824+ <type name="Rect" c:type="const graphene_rect_t*"/>
7825+ </instance-parameter>
7826+ <parameter name="p"
7827+ direction="out"
7828+ caller-allocates="1"
7829+ transfer-ownership="none">
7830+ <doc xml:space="preserve"
7831+ filename="src/graphene-rect.c"
7832+ line="309">return location for a #graphene_point_t</doc>
7833+ <type name="Point" c:type="graphene_point_t*"/>
7834+ </parameter>
7835+ </parameters>
7836+ </method>
7837+ <method name="get_bottom_right"
7838+ c:identifier="graphene_rect_get_bottom_right"
7839+ version="1.0">
7840+ <doc xml:space="preserve"
7841+ filename="src/graphene-rect.c"
7842+ line="327">Retrieves the coordinates of the bottom-right corner of the given rectangle.</doc>
7843+ <source-position filename="include/graphene-rect.h" line="121"/>
7844+ <return-value transfer-ownership="none">
7845+ <type name="none" c:type="void"/>
7846+ </return-value>
7847+ <parameters>
7848+ <instance-parameter name="r" transfer-ownership="none">
7849+ <doc xml:space="preserve"
7850+ filename="src/graphene-rect.c"
7851+ line="329">a #graphene_rect_t</doc>
7852+ <type name="Rect" c:type="const graphene_rect_t*"/>
7853+ </instance-parameter>
7854+ <parameter name="p"
7855+ direction="out"
7856+ caller-allocates="1"
7857+ transfer-ownership="none">
7858+ <doc xml:space="preserve"
7859+ filename="src/graphene-rect.c"
7860+ line="330">return location for a #graphene_point_t</doc>
7861+ <type name="Point" c:type="graphene_point_t*"/>
7862+ </parameter>
7863+ </parameters>
7864+ </method>
7865+ <method name="get_center"
7866+ c:identifier="graphene_rect_get_center"
7867+ version="1.0">
7868+ <doc xml:space="preserve"
7869+ filename="src/graphene-rect.c"
7870+ line="241">Retrieves the coordinates of the center of the given rectangle.</doc>
7871+ <source-position filename="include/graphene-rect.h" line="112"/>
7872+ <return-value transfer-ownership="none">
7873+ <type name="none" c:type="void"/>
7874+ </return-value>
7875+ <parameters>
7876+ <instance-parameter name="r" transfer-ownership="none">
7877+ <doc xml:space="preserve"
7878+ filename="src/graphene-rect.c"
7879+ line="243">a #graphene_rect_t</doc>
7880+ <type name="Rect" c:type="const graphene_rect_t*"/>
7881+ </instance-parameter>
7882+ <parameter name="p"
7883+ direction="out"
7884+ caller-allocates="1"
7885+ transfer-ownership="none">
7886+ <doc xml:space="preserve"
7887+ filename="src/graphene-rect.c"
7888+ line="244">return location for a #graphene_point_t</doc>
7889+ <type name="Point" c:type="graphene_point_t*"/>
7890+ </parameter>
7891+ </parameters>
7892+ </method>
7893+ <method name="get_height"
7894+ c:identifier="graphene_rect_get_height"
7895+ version="1.0">
7896+ <doc xml:space="preserve"
7897+ filename="src/graphene-rect.c"
7898+ line="424">Retrieves the normalized height of the given rectangle.</doc>
7899+ <source-position filename="include/graphene-rect.h" line="136"/>
7900+ <return-value transfer-ownership="none">
7901+ <doc xml:space="preserve"
7902+ filename="src/graphene-rect.c"
7903+ line="430">the normalized height of the rectangle</doc>
7904+ <type name="gfloat" c:type="float"/>
7905+ </return-value>
7906+ <parameters>
7907+ <instance-parameter name="r" transfer-ownership="none">
7908+ <doc xml:space="preserve"
7909+ filename="src/graphene-rect.c"
7910+ line="426">a #graphene_rect_t</doc>
7911+ <type name="Rect" c:type="const graphene_rect_t*"/>
7912+ </instance-parameter>
7913+ </parameters>
7914+ </method>
7915+ <method name="get_top_left"
7916+ c:identifier="graphene_rect_get_top_left"
7917+ version="1.0">
7918+ <doc xml:space="preserve"
7919+ filename="src/graphene-rect.c"
7920+ line="264">Retrieves the coordinates of the top-left corner of the given rectangle.</doc>
7921+ <source-position filename="include/graphene-rect.h" line="115"/>
7922+ <return-value transfer-ownership="none">
7923+ <type name="none" c:type="void"/>
7924+ </return-value>
7925+ <parameters>
7926+ <instance-parameter name="r" transfer-ownership="none">
7927+ <doc xml:space="preserve"
7928+ filename="src/graphene-rect.c"
7929+ line="266">a #graphene_rect_t</doc>
7930+ <type name="Rect" c:type="const graphene_rect_t*"/>
7931+ </instance-parameter>
7932+ <parameter name="p"
7933+ direction="out"
7934+ caller-allocates="1"
7935+ transfer-ownership="none">
7936+ <doc xml:space="preserve"
7937+ filename="src/graphene-rect.c"
7938+ line="267">return location for a #graphene_point_t</doc>
7939+ <type name="Point" c:type="graphene_point_t*"/>
7940+ </parameter>
7941+ </parameters>
7942+ </method>
7943+ <method name="get_top_right"
7944+ c:identifier="graphene_rect_get_top_right"
7945+ version="1.0">
7946+ <doc xml:space="preserve"
7947+ filename="src/graphene-rect.c"
7948+ line="285">Retrieves the coordinates of the top-right corner of the given rectangle.</doc>
7949+ <source-position filename="include/graphene-rect.h" line="118"/>
7950+ <return-value transfer-ownership="none">
7951+ <type name="none" c:type="void"/>
7952+ </return-value>
7953+ <parameters>
7954+ <instance-parameter name="r" transfer-ownership="none">
7955+ <doc xml:space="preserve"
7956+ filename="src/graphene-rect.c"
7957+ line="287">a #graphene_rect_t</doc>
7958+ <type name="Rect" c:type="const graphene_rect_t*"/>
7959+ </instance-parameter>
7960+ <parameter name="p"
7961+ direction="out"
7962+ caller-allocates="1"
7963+ transfer-ownership="none">
7964+ <doc xml:space="preserve"
7965+ filename="src/graphene-rect.c"
7966+ line="288">return location for a #graphene_point_t</doc>
7967+ <type name="Point" c:type="graphene_point_t*"/>
7968+ </parameter>
7969+ </parameters>
7970+ </method>
7971+ <method name="get_vertices"
7972+ c:identifier="graphene_rect_get_vertices"
7973+ version="1.4">
7974+ <doc xml:space="preserve"
7975+ filename="src/graphene-rect.c"
7976+ line="350">Computes the four vertices of a #graphene_rect_t.</doc>
7977+ <source-position filename="include/graphene-rect.h" line="127"/>
7978+ <return-value transfer-ownership="none">
7979+ <type name="none" c:type="void"/>
7980+ </return-value>
7981+ <parameters>
7982+ <instance-parameter name="r" transfer-ownership="none">
7983+ <doc xml:space="preserve"
7984+ filename="src/graphene-rect.c"
7985+ line="352">a #graphene_rect_t</doc>
7986+ <type name="Rect" c:type="const graphene_rect_t*"/>
7987+ </instance-parameter>
7988+ <parameter name="vertices"
7989+ direction="out"
7990+ caller-allocates="1"
7991+ transfer-ownership="none">
7992+ <doc xml:space="preserve"
7993+ filename="src/graphene-rect.c"
7994+ line="353">return location for an array
7995+ of 4 #graphene_vec2_t</doc>
7996+ <array zero-terminated="0"
7997+ c:type="graphene_vec2_t*"
7998+ fixed-size="4">
7999+ <type name="Vec2" c:type="graphene_vec2_t"/>
8000+ </array>
8001+ </parameter>
8002+ </parameters>
8003+ </method>
8004+ <method name="get_width"
8005+ c:identifier="graphene_rect_get_width"
8006+ version="1.0">
8007+ <doc xml:space="preserve"
8008+ filename="src/graphene-rect.c"
8009+ line="412">Retrieves the normalized width of the given rectangle.</doc>
8010+ <source-position filename="include/graphene-rect.h" line="134"/>
8011+ <return-value transfer-ownership="none">
8012+ <doc xml:space="preserve"
8013+ filename="src/graphene-rect.c"
8014+ line="418">the normalized width of the rectangle</doc>
8015+ <type name="gfloat" c:type="float"/>
8016+ </return-value>
8017+ <parameters>
8018+ <instance-parameter name="r" transfer-ownership="none">
8019+ <doc xml:space="preserve"
8020+ filename="src/graphene-rect.c"
8021+ line="414">a #graphene_rect_t</doc>
8022+ <type name="Rect" c:type="const graphene_rect_t*"/>
8023+ </instance-parameter>
8024+ </parameters>
8025+ </method>
8026+ <method name="get_x" c:identifier="graphene_rect_get_x" version="1.0">
8027+ <doc xml:space="preserve"
8028+ filename="src/graphene-rect.c"
8029+ line="386">Retrieves the normalized X coordinate of the origin of the given
8030+rectangle.</doc>
8031+ <source-position filename="include/graphene-rect.h" line="130"/>
8032+ <return-value transfer-ownership="none">
8033+ <doc xml:space="preserve"
8034+ filename="src/graphene-rect.c"
8035+ line="393">the normalized X coordinate of the rectangle</doc>
8036+ <type name="gfloat" c:type="float"/>
8037+ </return-value>
8038+ <parameters>
8039+ <instance-parameter name="r" transfer-ownership="none">
8040+ <doc xml:space="preserve"
8041+ filename="src/graphene-rect.c"
8042+ line="388">a #graphene_rect_t</doc>
8043+ <type name="Rect" c:type="const graphene_rect_t*"/>
8044+ </instance-parameter>
8045+ </parameters>
8046+ </method>
8047+ <method name="get_y" c:identifier="graphene_rect_get_y" version="1.0">
8048+ <doc xml:space="preserve"
8049+ filename="src/graphene-rect.c"
8050+ line="399">Retrieves the normalized Y coordinate of the origin of the given
8051+rectangle.</doc>
8052+ <source-position filename="include/graphene-rect.h" line="132"/>
8053+ <return-value transfer-ownership="none">
8054+ <doc xml:space="preserve"
8055+ filename="src/graphene-rect.c"
8056+ line="406">the normalized Y coordinate of the rectangle</doc>
8057+ <type name="gfloat" c:type="float"/>
8058+ </return-value>
8059+ <parameters>
8060+ <instance-parameter name="r" transfer-ownership="none">
8061+ <doc xml:space="preserve"
8062+ filename="src/graphene-rect.c"
8063+ line="401">a #graphene_rect_t</doc>
8064+ <type name="Rect" c:type="const graphene_rect_t*"/>
8065+ </instance-parameter>
8066+ </parameters>
8067+ </method>
8068+ <method name="init" c:identifier="graphene_rect_init" version="1.0">
8069+ <doc xml:space="preserve"
8070+ filename="src/graphene-rect.c"
8071+ line="104">Initializes the given #graphene_rect_t with the given values.
8072+
8073+This function will implicitly normalize the #graphene_rect_t
8074+before returning.</doc>
8075+ <source-position filename="include/graphene-rect.h" line="94"/>
8076+ <return-value transfer-ownership="none">
8077+ <doc xml:space="preserve"
8078+ filename="src/graphene-rect.c"
8079+ line="117">the initialized rectangle</doc>
8080+ <type name="Rect" c:type="graphene_rect_t*"/>
8081+ </return-value>
8082+ <parameters>
8083+ <instance-parameter name="r" transfer-ownership="none">
8084+ <doc xml:space="preserve"
8085+ filename="src/graphene-rect.c"
8086+ line="106">a #graphene_rect_t</doc>
8087+ <type name="Rect" c:type="graphene_rect_t*"/>
8088+ </instance-parameter>
8089+ <parameter name="x" transfer-ownership="none">
8090+ <doc xml:space="preserve"
8091+ filename="src/graphene-rect.c"
8092+ line="107">the X coordinate of the @graphene_rect_t.origin</doc>
8093+ <type name="gfloat" c:type="float"/>
8094+ </parameter>
8095+ <parameter name="y" transfer-ownership="none">
8096+ <doc xml:space="preserve"
8097+ filename="src/graphene-rect.c"
8098+ line="108">the Y coordinate of the @graphene_rect_t.origin</doc>
8099+ <type name="gfloat" c:type="float"/>
8100+ </parameter>
8101+ <parameter name="width" transfer-ownership="none">
8102+ <doc xml:space="preserve"
8103+ filename="src/graphene-rect.c"
8104+ line="109">the width of the @graphene_rect_t.size</doc>
8105+ <type name="gfloat" c:type="float"/>
8106+ </parameter>
8107+ <parameter name="height" transfer-ownership="none">
8108+ <doc xml:space="preserve"
8109+ filename="src/graphene-rect.c"
8110+ line="110">the height of the @graphene_rect_t.size</doc>
8111+ <type name="gfloat" c:type="float"/>
8112+ </parameter>
8113+ </parameters>
8114+ </method>
8115+ <method name="init_from_rect"
8116+ c:identifier="graphene_rect_init_from_rect"
8117+ version="1.0">
8118+ <doc xml:space="preserve"
8119+ filename="src/graphene-rect.c"
8120+ line="136">Initializes @r using the given @src rectangle.
8121+
8122+This function will implicitly normalize the #graphene_rect_t
8123+before returning.</doc>
8124+ <source-position filename="include/graphene-rect.h" line="100"/>
8125+ <return-value transfer-ownership="none">
8126+ <doc xml:space="preserve"
8127+ filename="src/graphene-rect.c"
8128+ line="146">the initialized rectangle</doc>
8129+ <type name="Rect" c:type="graphene_rect_t*"/>
8130+ </return-value>
8131+ <parameters>
8132+ <instance-parameter name="r" transfer-ownership="none">
8133+ <doc xml:space="preserve"
8134+ filename="src/graphene-rect.c"
8135+ line="138">a #graphene_rect_t</doc>
8136+ <type name="Rect" c:type="graphene_rect_t*"/>
8137+ </instance-parameter>
8138+ <parameter name="src" transfer-ownership="none">
8139+ <doc xml:space="preserve"
8140+ filename="src/graphene-rect.c"
8141+ line="139">a #graphene_rect_t</doc>
8142+ <type name="Rect" c:type="const graphene_rect_t*"/>
8143+ </parameter>
8144+ </parameters>
8145+ </method>
8146+ <method name="inset" c:identifier="graphene_rect_inset" version="1.0">
8147+ <doc xml:space="preserve"
8148+ filename="src/graphene-rect.c"
8149+ line="644">Changes the given rectangle to be smaller, or larger depending on the
8150+given inset parameters.
8151+
8152+To create an inset rectangle, use positive @d_x or @d_y values; to
8153+create a larger, encompassing rectangle, use negative @d_x or @d_y
8154+values.
8155+
8156+The origin of the rectangle is offset by @d_x and @d_y, while the size
8157+is adjusted by `(2 * @d_x, 2 * @d_y)`. If @d_x and @d_y are positive
8158+values, the size of the rectangle is decreased; if @d_x and @d_y are
8159+negative values, the size of the rectangle is increased.
8160+
8161+If the size of the resulting inset rectangle has a negative width or
8162+height then the size will be set to zero.</doc>
8163+ <source-position filename="include/graphene-rect.h" line="164"/>
8164+ <return-value transfer-ownership="none">
8165+ <doc xml:space="preserve"
8166+ filename="src/graphene-rect.c"
8167+ line="665">the inset rectangle</doc>
8168+ <type name="Rect" c:type="graphene_rect_t*"/>
8169+ </return-value>
8170+ <parameters>
8171+ <instance-parameter name="r" transfer-ownership="none">
8172+ <doc xml:space="preserve"
8173+ filename="src/graphene-rect.c"
8174+ line="646">a #graphene_rect_t</doc>
8175+ <type name="Rect" c:type="graphene_rect_t*"/>
8176+ </instance-parameter>
8177+ <parameter name="d_x" transfer-ownership="none">
8178+ <doc xml:space="preserve"
8179+ filename="src/graphene-rect.c"
8180+ line="647">the horizontal inset</doc>
8181+ <type name="gfloat" c:type="float"/>
8182+ </parameter>
8183+ <parameter name="d_y" transfer-ownership="none">
8184+ <doc xml:space="preserve"
8185+ filename="src/graphene-rect.c"
8186+ line="648">the vertical inset</doc>
8187+ <type name="gfloat" c:type="float"/>
8188+ </parameter>
8189+ </parameters>
8190+ </method>
8191+ <method name="inset_r"
8192+ c:identifier="graphene_rect_inset_r"
8193+ version="1.4">
8194+ <doc xml:space="preserve"
8195+ filename="src/graphene-rect.c"
8196+ line="679">Changes the given rectangle to be smaller, or larger depending on the
8197+given inset parameters.
8198+
8199+To create an inset rectangle, use positive @d_x or @d_y values; to
8200+create a larger, encompassing rectangle, use negative @d_x or @d_y
8201+values.
8202+
8203+The origin of the rectangle is offset by @d_x and @d_y, while the size
8204+is adjusted by `(2 * @d_x, 2 * @d_y)`. If @d_x and @d_y are positive
8205+values, the size of the rectangle is decreased; if @d_x and @d_y are
8206+negative values, the size of the rectangle is increased.
8207+
8208+If the size of the resulting inset rectangle has a negative width or
8209+height then the size will be set to zero.</doc>
8210+ <source-position filename="include/graphene-rect.h" line="168"/>
8211+ <return-value transfer-ownership="none">
8212+ <type name="none" c:type="void"/>
8213+ </return-value>
8214+ <parameters>
8215+ <instance-parameter name="r" transfer-ownership="none">
8216+ <doc xml:space="preserve"
8217+ filename="src/graphene-rect.c"
8218+ line="681">a #graphene_rect_t</doc>
8219+ <type name="Rect" c:type="const graphene_rect_t*"/>
8220+ </instance-parameter>
8221+ <parameter name="d_x" transfer-ownership="none">
8222+ <doc xml:space="preserve"
8223+ filename="src/graphene-rect.c"
8224+ line="682">the horizontal inset</doc>
8225+ <type name="gfloat" c:type="float"/>
8226+ </parameter>
8227+ <parameter name="d_y" transfer-ownership="none">
8228+ <doc xml:space="preserve"
8229+ filename="src/graphene-rect.c"
8230+ line="683">the vertical inset</doc>
8231+ <type name="gfloat" c:type="float"/>
8232+ </parameter>
8233+ <parameter name="res"
8234+ direction="out"
8235+ caller-allocates="1"
8236+ transfer-ownership="none">
8237+ <doc xml:space="preserve"
8238+ filename="src/graphene-rect.c"
8239+ line="684">return location for the inset rectangle</doc>
8240+ <type name="Rect" c:type="graphene_rect_t*"/>
8241+ </parameter>
8242+ </parameters>
8243+ </method>
8244+ <method name="interpolate"
8245+ c:identifier="graphene_rect_interpolate"
8246+ version="1.0">
8247+ <doc xml:space="preserve"
8248+ filename="src/graphene-rect.c"
8249+ line="857">Linearly interpolates the origin and size of the two given
8250+rectangles.</doc>
8251+ <source-position filename="include/graphene-rect.h" line="181"/>
8252+ <return-value transfer-ownership="none">
8253+ <type name="none" c:type="void"/>
8254+ </return-value>
8255+ <parameters>
8256+ <instance-parameter name="a" transfer-ownership="none">
8257+ <doc xml:space="preserve"
8258+ filename="src/graphene-rect.c"
8259+ line="859">a #graphene_rect_t</doc>
8260+ <type name="Rect" c:type="const graphene_rect_t*"/>
8261+ </instance-parameter>
8262+ <parameter name="b" transfer-ownership="none">
8263+ <doc xml:space="preserve"
8264+ filename="src/graphene-rect.c"
8265+ line="860">a #graphene_rect_t</doc>
8266+ <type name="Rect" c:type="const graphene_rect_t*"/>
8267+ </parameter>
8268+ <parameter name="factor" transfer-ownership="none">
8269+ <doc xml:space="preserve"
8270+ filename="src/graphene-rect.c"
8271+ line="861">the linear interpolation factor</doc>
8272+ <type name="gdouble" c:type="double"/>
8273+ </parameter>
8274+ <parameter name="res"
8275+ direction="out"
8276+ caller-allocates="1"
8277+ transfer-ownership="none">
8278+ <doc xml:space="preserve"
8279+ filename="src/graphene-rect.c"
8280+ line="862">return location for the
8281+ interpolated rectangle</doc>
8282+ <type name="Rect" c:type="graphene_rect_t*"/>
8283+ </parameter>
8284+ </parameters>
8285+ </method>
8286+ <method name="intersection"
8287+ c:identifier="graphene_rect_intersection"
8288+ version="1.0">
8289+ <doc xml:space="preserve"
8290+ filename="src/graphene-rect.c"
8291+ line="492">Computes the intersection of the two given rectangles.
8292+
8293+![](rectangle-intersection.png)
8294+
8295+The intersection in the image above is the blue outline.
8296+
8297+If the two rectangles do not intersect, @res will contain
8298+a degenerate rectangle with origin in (0, 0) and a size of 0.</doc>
8299+ <source-position filename="include/graphene-rect.h" line="145"/>
8300+ <return-value transfer-ownership="none">
8301+ <doc xml:space="preserve"
8302+ filename="src/graphene-rect.c"
8303+ line="508">`true` if the two rectangles intersect</doc>
8304+ <type name="gboolean" c:type="_Bool"/>
8305+ </return-value>
8306+ <parameters>
8307+ <instance-parameter name="a" transfer-ownership="none">
8308+ <doc xml:space="preserve"
8309+ filename="src/graphene-rect.c"
8310+ line="494">a #graphene_rect_t</doc>
8311+ <type name="Rect" c:type="const graphene_rect_t*"/>
8312+ </instance-parameter>
8313+ <parameter name="b" transfer-ownership="none">
8314+ <doc xml:space="preserve"
8315+ filename="src/graphene-rect.c"
8316+ line="495">a #graphene_rect_t</doc>
8317+ <type name="Rect" c:type="const graphene_rect_t*"/>
8318+ </parameter>
8319+ <parameter name="res"
8320+ direction="out"
8321+ caller-allocates="1"
8322+ transfer-ownership="none"
8323+ optional="1"
8324+ allow-none="1">
8325+ <doc xml:space="preserve"
8326+ filename="src/graphene-rect.c"
8327+ line="496">return location for
8328+ a #graphene_rect_t</doc>
8329+ <type name="Rect" c:type="graphene_rect_t*"/>
8330+ </parameter>
8331+ </parameters>
8332+ </method>
8333+ <method name="normalize"
8334+ c:identifier="graphene_rect_normalize"
8335+ version="1.0">
8336+ <doc xml:space="preserve"
8337+ filename="src/graphene-rect.c"
8338+ line="195">Normalizes the passed rectangle.
8339+
8340+This function ensures that the size of the rectangle is made of
8341+positive values, and that the origin is the top-left corner of
8342+the rectangle.</doc>
8343+ <source-position filename="include/graphene-rect.h" line="107"/>
8344+ <return-value transfer-ownership="none">
8345+ <doc xml:space="preserve"
8346+ filename="src/graphene-rect.c"
8347+ line="205">the normalized rectangle</doc>
8348+ <type name="Rect" c:type="graphene_rect_t*"/>
8349+ </return-value>
8350+ <parameters>
8351+ <instance-parameter name="r" transfer-ownership="none">
8352+ <doc xml:space="preserve"
8353+ filename="src/graphene-rect.c"
8354+ line="197">a #graphene_rect_t</doc>
8355+ <type name="Rect" c:type="graphene_rect_t*"/>
8356+ </instance-parameter>
8357+ </parameters>
8358+ </method>
8359+ <method name="normalize_r"
8360+ c:identifier="graphene_rect_normalize_r"
8361+ version="1.4">
8362+ <doc xml:space="preserve"
8363+ filename="src/graphene-rect.c"
8364+ line="217">Normalizes the passed rectangle.
8365+
8366+This function ensures that the size of the rectangle is made of
8367+positive values, and that the origin is in the top-left corner
8368+of the rectangle.</doc>
8369+ <source-position filename="include/graphene-rect.h" line="109"/>
8370+ <return-value transfer-ownership="none">
8371+ <type name="none" c:type="void"/>
8372+ </return-value>
8373+ <parameters>
8374+ <instance-parameter name="r" transfer-ownership="none">
8375+ <doc xml:space="preserve"
8376+ filename="src/graphene-rect.c"
8377+ line="219">a #graphene_rect_t</doc>
8378+ <type name="Rect" c:type="const graphene_rect_t*"/>
8379+ </instance-parameter>
8380+ <parameter name="res"
8381+ direction="out"
8382+ caller-allocates="1"
8383+ transfer-ownership="none">
8384+ <doc xml:space="preserve"
8385+ filename="src/graphene-rect.c"
8386+ line="220">the return location for the
8387+ normalized rectangle</doc>
8388+ <type name="Rect" c:type="graphene_rect_t*"/>
8389+ </parameter>
8390+ </parameters>
8391+ </method>
8392+ <method name="offset" c:identifier="graphene_rect_offset" version="1.0">
8393+ <doc xml:space="preserve"
8394+ filename="src/graphene-rect.c"
8395+ line="594">Offsets the origin by @d_x and @d_y.
8396+
8397+The size of the rectangle is unchanged.</doc>
8398+ <source-position filename="include/graphene-rect.h" line="155"/>
8399+ <return-value transfer-ownership="none">
8400+ <doc xml:space="preserve"
8401+ filename="src/graphene-rect.c"
8402+ line="604">the offset rectangle</doc>
8403+ <type name="Rect" c:type="graphene_rect_t*"/>
8404+ </return-value>
8405+ <parameters>
8406+ <instance-parameter name="r" transfer-ownership="none">
8407+ <doc xml:space="preserve"
8408+ filename="src/graphene-rect.c"
8409+ line="596">a #graphene_rect_t</doc>
8410+ <type name="Rect" c:type="graphene_rect_t*"/>
8411+ </instance-parameter>
8412+ <parameter name="d_x" transfer-ownership="none">
8413+ <doc xml:space="preserve"
8414+ filename="src/graphene-rect.c"
8415+ line="597">the horizontal offset</doc>
8416+ <type name="gfloat" c:type="float"/>
8417+ </parameter>
8418+ <parameter name="d_y" transfer-ownership="none">
8419+ <doc xml:space="preserve"
8420+ filename="src/graphene-rect.c"
8421+ line="598">the vertical offset</doc>
8422+ <type name="gfloat" c:type="float"/>
8423+ </parameter>
8424+ </parameters>
8425+ </method>
8426+ <method name="offset_r"
8427+ c:identifier="graphene_rect_offset_r"
8428+ version="1.4">
8429+ <doc xml:space="preserve"
8430+ filename="src/graphene-rect.c"
8431+ line="618">Offsets the origin of the given rectangle by @d_x and @d_y.
8432+
8433+The size of the rectangle is left unchanged.</doc>
8434+ <source-position filename="include/graphene-rect.h" line="159"/>
8435+ <return-value transfer-ownership="none">
8436+ <type name="none" c:type="void"/>
8437+ </return-value>
8438+ <parameters>
8439+ <instance-parameter name="r" transfer-ownership="none">
8440+ <doc xml:space="preserve"
8441+ filename="src/graphene-rect.c"
8442+ line="620">a #graphene_rect_t</doc>
8443+ <type name="Rect" c:type="const graphene_rect_t*"/>
8444+ </instance-parameter>
8445+ <parameter name="d_x" transfer-ownership="none">
8446+ <doc xml:space="preserve"
8447+ filename="src/graphene-rect.c"
8448+ line="621">the horizontal offset</doc>
8449+ <type name="gfloat" c:type="float"/>
8450+ </parameter>
8451+ <parameter name="d_y" transfer-ownership="none">
8452+ <doc xml:space="preserve"
8453+ filename="src/graphene-rect.c"
8454+ line="622">the vertical offset</doc>
8455+ <type name="gfloat" c:type="float"/>
8456+ </parameter>
8457+ <parameter name="res"
8458+ direction="out"
8459+ caller-allocates="1"
8460+ transfer-ownership="none">
8461+ <doc xml:space="preserve"
8462+ filename="src/graphene-rect.c"
8463+ line="623">return location for the offset
8464+ rectangle</doc>
8465+ <type name="Rect" c:type="graphene_rect_t*"/>
8466+ </parameter>
8467+ </parameters>
8468+ </method>
8469+ <method name="round"
8470+ c:identifier="graphene_rect_round"
8471+ version="1.4"
8472+ deprecated="1"
8473+ deprecated-version="1.10">
8474+ <doc xml:space="preserve"
8475+ filename="src/graphene-rect.c"
8476+ line="753">Rounds the origin and size of the given rectangle to
8477+their nearest integer values; the rounding is guaranteed
8478+to be large enough to have an area bigger or equal to the
8479+original rectangle, but might not fully contain its extents.
8480+Use graphene_rect_round_extents() in case you need to round
8481+to a rectangle that covers fully the original one.
8482+
8483+This function is the equivalent of calling `floor` on
8484+the coordinates of the origin, and `ceil` on the size.</doc>
8485+ <doc-deprecated xml:space="preserve">Use graphene_rect_round_extents() instead</doc-deprecated>
8486+ <source-position filename="include/graphene-rect.h" line="175"/>
8487+ <return-value transfer-ownership="none">
8488+ <type name="none" c:type="void"/>
8489+ </return-value>
8490+ <parameters>
8491+ <instance-parameter name="r" transfer-ownership="none">
8492+ <doc xml:space="preserve"
8493+ filename="src/graphene-rect.c"
8494+ line="755">a #graphene_rect_t</doc>
8495+ <type name="Rect" c:type="const graphene_rect_t*"/>
8496+ </instance-parameter>
8497+ <parameter name="res"
8498+ direction="out"
8499+ caller-allocates="1"
8500+ transfer-ownership="none">
8501+ <doc xml:space="preserve"
8502+ filename="src/graphene-rect.c"
8503+ line="756">return location for the
8504+ rounded rectangle</doc>
8505+ <type name="Rect" c:type="graphene_rect_t*"/>
8506+ </parameter>
8507+ </parameters>
8508+ </method>
8509+ <method name="round_extents"
8510+ c:identifier="graphene_rect_round_extents"
8511+ version="1.10">
8512+ <doc xml:space="preserve"
8513+ filename="src/graphene-rect.c"
8514+ line="786">Rounds the origin of the given rectangle to its nearest
8515+integer value and and recompute the size so that the
8516+rectangle is large enough to contain all the conrners
8517+of the original rectangle.
8518+
8519+This function is the equivalent of calling `floor` on
8520+the coordinates of the origin, and recomputing the size
8521+calling `ceil` on the bottom-right coordinates.
8522+
8523+If you want to be sure that the rounded rectangle
8524+completely covers the area that was covered by the
8525+original rectangle — i.e. you want to cover the area
8526+including all its corners — this function will make sure
8527+that the size is recomputed taking into account the ceiling
8528+of the coordinates of the bottom-right corner.
8529+If the difference between the original coordinates and the
8530+coordinates of the rounded rectangle is greater than the
8531+difference between the original size and and the rounded
8532+size, then the move of the origin would not be compensated
8533+by a move in the anti-origin, leaving the corners of the
8534+original rectangle outside the rounded one.</doc>
8535+ <source-position filename="include/graphene-rect.h" line="178"/>
8536+ <return-value transfer-ownership="none">
8537+ <type name="none" c:type="void"/>
8538+ </return-value>
8539+ <parameters>
8540+ <instance-parameter name="r" transfer-ownership="none">
8541+ <doc xml:space="preserve"
8542+ filename="src/graphene-rect.c"
8543+ line="788">a #graphene_rect_t</doc>
8544+ <type name="Rect" c:type="const graphene_rect_t*"/>
8545+ </instance-parameter>
8546+ <parameter name="res"
8547+ direction="out"
8548+ caller-allocates="1"
8549+ transfer-ownership="none">
8550+ <doc xml:space="preserve"
8551+ filename="src/graphene-rect.c"
8552+ line="789">return location for the
8553+ rectangle with rounded extents</doc>
8554+ <type name="Rect" c:type="graphene_rect_t*"/>
8555+ </parameter>
8556+ </parameters>
8557+ </method>
8558+ <method name="round_to_pixel"
8559+ c:identifier="graphene_rect_round_to_pixel"
8560+ version="1.0"
8561+ deprecated="1"
8562+ deprecated-version="1.4">
8563+ <doc xml:space="preserve"
8564+ filename="src/graphene-rect.c"
8565+ line="731">Rounds the origin and the size of the given rectangle to
8566+their nearest integer values; the rounding is guaranteed
8567+to be large enough to contain the original rectangle.</doc>
8568+ <doc-deprecated xml:space="preserve">Use graphene_rect_round() instead</doc-deprecated>
8569+ <source-position filename="include/graphene-rect.h" line="173"/>
8570+ <return-value transfer-ownership="none">
8571+ <doc xml:space="preserve"
8572+ filename="src/graphene-rect.c"
8573+ line="739">the pixel-aligned rectangle.</doc>
8574+ <type name="Rect" c:type="graphene_rect_t*"/>
8575+ </return-value>
8576+ <parameters>
8577+ <instance-parameter name="r" transfer-ownership="none">
8578+ <doc xml:space="preserve"
8579+ filename="src/graphene-rect.c"
8580+ line="733">a #graphene_rect_t</doc>
8581+ <type name="Rect" c:type="graphene_rect_t*"/>
8582+ </instance-parameter>
8583+ </parameters>
8584+ </method>
8585+ <method name="scale" c:identifier="graphene_rect_scale" version="1.10">
8586+ <doc xml:space="preserve"
8587+ filename="src/graphene-rect.c"
8588+ line="908">Scales the size and origin of a rectangle horizontaly by @s_h,
8589+and vertically by @s_v. The result @res is normalized.</doc>
8590+ <source-position filename="include/graphene-rect.h" line="195"/>
8591+ <return-value transfer-ownership="none">
8592+ <type name="none" c:type="void"/>
8593+ </return-value>
8594+ <parameters>
8595+ <instance-parameter name="r" transfer-ownership="none">
8596+ <doc xml:space="preserve"
8597+ filename="src/graphene-rect.c"
8598+ line="910">a #graphene_rect_t</doc>
8599+ <type name="Rect" c:type="const graphene_rect_t*"/>
8600+ </instance-parameter>
8601+ <parameter name="s_h" transfer-ownership="none">
8602+ <doc xml:space="preserve"
8603+ filename="src/graphene-rect.c"
8604+ line="911">horizontal scale factor</doc>
8605+ <type name="gfloat" c:type="float"/>
8606+ </parameter>
8607+ <parameter name="s_v" transfer-ownership="none">
8608+ <doc xml:space="preserve"
8609+ filename="src/graphene-rect.c"
8610+ line="912">vertical scale factor</doc>
8611+ <type name="gfloat" c:type="float"/>
8612+ </parameter>
8613+ <parameter name="res"
8614+ direction="out"
8615+ caller-allocates="1"
8616+ transfer-ownership="none">
8617+ <doc xml:space="preserve"
8618+ filename="src/graphene-rect.c"
8619+ line="913">return location for the
8620+ scaled rectangle</doc>
8621+ <type name="Rect" c:type="graphene_rect_t*"/>
8622+ </parameter>
8623+ </parameters>
8624+ </method>
8625+ <method name="union" c:identifier="graphene_rect_union" version="1.0">
8626+ <doc xml:space="preserve"
8627+ filename="src/graphene-rect.c"
8628+ line="458">Computes the union of the two given rectangles.
8629+
8630+![](rectangle-union.png)
8631+
8632+The union in the image above is the blue outline.</doc>
8633+ <source-position filename="include/graphene-rect.h" line="141"/>
8634+ <return-value transfer-ownership="none">
8635+ <type name="none" c:type="void"/>
8636+ </return-value>
8637+ <parameters>
8638+ <instance-parameter name="a" transfer-ownership="none">
8639+ <doc xml:space="preserve"
8640+ filename="src/graphene-rect.c"
8641+ line="460">a #graphene_rect_t</doc>
8642+ <type name="Rect" c:type="const graphene_rect_t*"/>
8643+ </instance-parameter>
8644+ <parameter name="b" transfer-ownership="none">
8645+ <doc xml:space="preserve"
8646+ filename="src/graphene-rect.c"
8647+ line="461">a #graphene_rect_t</doc>
8648+ <type name="Rect" c:type="const graphene_rect_t*"/>
8649+ </parameter>
8650+ <parameter name="res"
8651+ direction="out"
8652+ caller-allocates="1"
8653+ transfer-ownership="none">
8654+ <doc xml:space="preserve"
8655+ filename="src/graphene-rect.c"
8656+ line="462">return location for a #graphene_rect_t</doc>
8657+ <type name="Rect" c:type="graphene_rect_t*"/>
8658+ </parameter>
8659+ </parameters>
8660+ </method>
8661+ <function name="alloc" c:identifier="graphene_rect_alloc" version="1.0">
8662+ <doc xml:space="preserve"
8663+ filename="src/graphene-rect.c"
8664+ line="73">Allocates a new #graphene_rect_t.
8665+
8666+The contents of the returned rectangle are undefined.</doc>
8667+ <source-position filename="include/graphene-rect.h" line="90"/>
8668+ <return-value transfer-ownership="full">
8669+ <doc xml:space="preserve"
8670+ filename="src/graphene-rect.c"
8671+ line="80">the newly allocated rectangle</doc>
8672+ <type name="Rect" c:type="graphene_rect_t*"/>
8673+ </return-value>
8674+ </function>
8675+ <function name="zero" c:identifier="graphene_rect_zero" version="1.4">
8676+ <doc xml:space="preserve"
8677+ filename="src/graphene-rect.c"
8678+ line="892">Returns a degenerate rectangle with origin fixed at (0, 0) and
8679+a size of 0, 0.</doc>
8680+ <source-position filename="include/graphene-rect.h" line="192"/>
8681+ <return-value transfer-ownership="none">
8682+ <doc xml:space="preserve"
8683+ filename="src/graphene-rect.c"
8684+ line="898">a fixed rectangle</doc>
8685+ <type name="Rect" c:type="const graphene_rect_t*"/>
8686+ </return-value>
8687+ </function>
8688+ </record>
8689+ <function-macro name="SIZE_INIT"
8690+ c:identifier="GRAPHENE_SIZE_INIT"
8691+ version="1.0"
8692+ introspectable="0">
8693+ <doc xml:space="preserve"
8694+ filename="include/graphene-size.h"
8695+ line="36">Initializes a #graphene_size_t with the given sizes when
8696+declaring it, e.g.:
8697+
8698+|[&lt;!-- language="C" --&gt;
8699+ graphene_size_t size = GRAPHENE_SIZE_INIT (100.f, 100.f);
8700+]|</doc>
8701+ <source-position filename="include/graphene-size.h" line="50"/>
8702+ <parameters>
8703+ <parameter name="_w">
8704+ <doc xml:space="preserve"
8705+ filename="include/graphene-size.h"
8706+ line="38">the width</doc>
8707+ </parameter>
8708+ <parameter name="_h">
8709+ <doc xml:space="preserve"
8710+ filename="include/graphene-size.h"
8711+ line="39">the height</doc>
8712+ </parameter>
8713+ </parameters>
8714+ </function-macro>
8715+ <record name="Simd4F" c:type="graphene_simd4f_t">
8716+ <source-position filename="include/graphene-config.h" line="94"/>
8717+ <field name="x" readable="0" private="1">
8718+ <type name="gfloat" c:type="float"/>
8719+ </field>
8720+ <field name="y" readable="0" private="1">
8721+ <type name="gfloat" c:type="float"/>
8722+ </field>
8723+ <field name="z" readable="0" private="1">
8724+ <type name="gfloat" c:type="float"/>
8725+ </field>
8726+ <field name="w" readable="0" private="1">
8727+ <type name="gfloat" c:type="float"/>
8728+ </field>
8729+ </record>
8730+ <record name="Simd4X4F" c:type="graphene_simd4x4f_t">
8731+ <source-position filename="include/graphene-config.h" line="100"/>
8732+ <field name="x" readable="0" private="1">
8733+ <type name="Simd4F" c:type="graphene_simd4f_t"/>
8734+ </field>
8735+ <field name="y" readable="0" private="1">
8736+ <type name="Simd4F" c:type="graphene_simd4f_t"/>
8737+ </field>
8738+ <field name="z" readable="0" private="1">
8739+ <type name="Simd4F" c:type="graphene_simd4f_t"/>
8740+ </field>
8741+ <field name="w" readable="0" private="1">
8742+ <type name="Simd4F" c:type="graphene_simd4f_t"/>
8743+ </field>
8744+ </record>
8745+ <record name="Size"
8746+ c:type="graphene_size_t"
8747+ version="1.0"
8748+ glib:type-name="GrapheneSize"
8749+ glib:get-type="graphene_size_get_type"
8750+ c:symbol-prefix="size">
8751+ <doc xml:space="preserve"
8752+ filename="include/graphene-size.h"
8753+ line="61">A size.</doc>
8754+ <source-position filename="include/graphene-size.h" line="74"/>
8755+ <field name="width" writable="1">
8756+ <doc xml:space="preserve"
8757+ filename="include/graphene-size.h"
8758+ line="63">the width</doc>
8759+ <type name="gfloat" c:type="float"/>
8760+ </field>
8761+ <field name="height" writable="1">
8762+ <doc xml:space="preserve"
8763+ filename="include/graphene-size.h"
8764+ line="64">the height</doc>
8765+ <type name="gfloat" c:type="float"/>
8766+ </field>
8767+ <constructor name="alloc"
8768+ c:identifier="graphene_size_alloc"
8769+ version="1.0">
8770+ <doc xml:space="preserve"
8771+ filename="src/graphene-size.c"
8772+ line="40">Allocates a new #graphene_size_t.
8773+
8774+The contents of the returned value are undefined.</doc>
8775+ <source-position filename="include/graphene-size.h" line="77"/>
8776+ <return-value transfer-ownership="full">
8777+ <doc xml:space="preserve"
8778+ filename="src/graphene-size.c"
8779+ line="47">the newly allocated #graphene_size_t</doc>
8780+ <type name="Size" c:type="graphene_size_t*"/>
8781+ </return-value>
8782+ </constructor>
8783+ <method name="equal" c:identifier="graphene_size_equal" version="1.0">
8784+ <doc xml:space="preserve"
8785+ filename="src/graphene-size.c"
8786+ line="126">Checks whether the two give #graphene_size_t are equal.</doc>
8787+ <source-position filename="include/graphene-size.h" line="88"/>
8788+ <return-value transfer-ownership="none">
8789+ <doc xml:space="preserve"
8790+ filename="src/graphene-size.c"
8791+ line="133">`true` if the sizes are equal</doc>
8792+ <type name="gboolean" c:type="_Bool"/>
8793+ </return-value>
8794+ <parameters>
8795+ <instance-parameter name="a" transfer-ownership="none">
8796+ <doc xml:space="preserve"
8797+ filename="src/graphene-size.c"
8798+ line="128">a #graphene_size_t</doc>
8799+ <type name="Size" c:type="const graphene_size_t*"/>
8800+ </instance-parameter>
8801+ <parameter name="b" transfer-ownership="none">
8802+ <doc xml:space="preserve"
8803+ filename="src/graphene-size.c"
8804+ line="129">a #graphene_size_t</doc>
8805+ <type name="Size" c:type="const graphene_size_t*"/>
8806+ </parameter>
8807+ </parameters>
8808+ </method>
8809+ <method name="free" c:identifier="graphene_size_free" version="1.0">
8810+ <doc xml:space="preserve"
8811+ filename="src/graphene-size.c"
8812+ line="57">Frees the resources allocated by graphene_size_alloc().</doc>
8813+ <source-position filename="include/graphene-size.h" line="79"/>
8814+ <return-value transfer-ownership="none">
8815+ <type name="none" c:type="void"/>
8816+ </return-value>
8817+ <parameters>
8818+ <instance-parameter name="s" transfer-ownership="none">
8819+ <doc xml:space="preserve"
8820+ filename="src/graphene-size.c"
8821+ line="59">a #graphene_size_t</doc>
8822+ <type name="Size" c:type="graphene_size_t*"/>
8823+ </instance-parameter>
8824+ </parameters>
8825+ </method>
8826+ <method name="init" c:identifier="graphene_size_init" version="1.0">
8827+ <doc xml:space="preserve"
8828+ filename="src/graphene-size.c"
8829+ line="71">Initializes a #graphene_size_t using the given @width and @height.</doc>
8830+ <source-position filename="include/graphene-size.h" line="81"/>
8831+ <return-value transfer-ownership="none">
8832+ <doc xml:space="preserve"
8833+ filename="src/graphene-size.c"
8834+ line="79">the initialized #graphene_size_t</doc>
8835+ <type name="Size" c:type="graphene_size_t*"/>
8836+ </return-value>
8837+ <parameters>
8838+ <instance-parameter name="s" transfer-ownership="none">
8839+ <doc xml:space="preserve"
8840+ filename="src/graphene-size.c"
8841+ line="73">a #graphene_size_t</doc>
8842+ <type name="Size" c:type="graphene_size_t*"/>
8843+ </instance-parameter>
8844+ <parameter name="width" transfer-ownership="none">
8845+ <doc xml:space="preserve"
8846+ filename="src/graphene-size.c"
8847+ line="74">the width</doc>
8848+ <type name="gfloat" c:type="float"/>
8849+ </parameter>
8850+ <parameter name="height" transfer-ownership="none">
8851+ <doc xml:space="preserve"
8852+ filename="src/graphene-size.c"
8853+ line="75">the height</doc>
8854+ <type name="gfloat" c:type="float"/>
8855+ </parameter>
8856+ </parameters>
8857+ </method>
8858+ <method name="init_from_size"
8859+ c:identifier="graphene_size_init_from_size"
8860+ version="1.0">
8861+ <doc xml:space="preserve"
8862+ filename="src/graphene-size.c"
8863+ line="94">Initializes a #graphene_size_t using the width and height of
8864+the given @src.</doc>
8865+ <source-position filename="include/graphene-size.h" line="85"/>
8866+ <return-value transfer-ownership="none">
8867+ <doc xml:space="preserve"
8868+ filename="src/graphene-size.c"
8869+ line="102">the initialized #graphene_size_t</doc>
8870+ <type name="Size" c:type="graphene_size_t*"/>
8871+ </return-value>
8872+ <parameters>
8873+ <instance-parameter name="s" transfer-ownership="none">
8874+ <doc xml:space="preserve"
8875+ filename="src/graphene-size.c"
8876+ line="96">a #graphene_size_t</doc>
8877+ <type name="Size" c:type="graphene_size_t*"/>
8878+ </instance-parameter>
8879+ <parameter name="src" transfer-ownership="none">
8880+ <doc xml:space="preserve"
8881+ filename="src/graphene-size.c"
8882+ line="97">a #graphene_size_t</doc>
8883+ <type name="Size" c:type="const graphene_size_t*"/>
8884+ </parameter>
8885+ </parameters>
8886+ </method>
8887+ <method name="interpolate"
8888+ c:identifier="graphene_size_interpolate"
8889+ version="1.0">
8890+ <doc xml:space="preserve"
8891+ filename="src/graphene-size.c"
8892+ line="165">Linearly interpolates the two given #graphene_size_t using the given
8893+interpolation @factor.</doc>
8894+ <source-position filename="include/graphene-size.h" line="96"/>
8895+ <return-value transfer-ownership="none">
8896+ <type name="none" c:type="void"/>
8897+ </return-value>
8898+ <parameters>
8899+ <instance-parameter name="a" transfer-ownership="none">
8900+ <doc xml:space="preserve"
8901+ filename="src/graphene-size.c"
8902+ line="167">a #graphene_size_t</doc>
8903+ <type name="Size" c:type="const graphene_size_t*"/>
8904+ </instance-parameter>
8905+ <parameter name="b" transfer-ownership="none">
8906+ <doc xml:space="preserve"
8907+ filename="src/graphene-size.c"
8908+ line="168">a #graphene_size_t</doc>
8909+ <type name="Size" c:type="const graphene_size_t*"/>
8910+ </parameter>
8911+ <parameter name="factor" transfer-ownership="none">
8912+ <doc xml:space="preserve"
8913+ filename="src/graphene-size.c"
8914+ line="169">the linear interpolation factor</doc>
8915+ <type name="gdouble" c:type="double"/>
8916+ </parameter>
8917+ <parameter name="res"
8918+ direction="out"
8919+ caller-allocates="1"
8920+ transfer-ownership="none">
8921+ <doc xml:space="preserve"
8922+ filename="src/graphene-size.c"
8923+ line="170">return location for the interpolated size</doc>
8924+ <type name="Size" c:type="graphene_size_t*"/>
8925+ </parameter>
8926+ </parameters>
8927+ </method>
8928+ <method name="scale" c:identifier="graphene_size_scale" version="1.0">
8929+ <doc xml:space="preserve"
8930+ filename="src/graphene-size.c"
8931+ line="144">Scales the components of a #graphene_size_t using the given @factor.</doc>
8932+ <source-position filename="include/graphene-size.h" line="92"/>
8933+ <return-value transfer-ownership="none">
8934+ <type name="none" c:type="void"/>
8935+ </return-value>
8936+ <parameters>
8937+ <instance-parameter name="s" transfer-ownership="none">
8938+ <doc xml:space="preserve"
8939+ filename="src/graphene-size.c"
8940+ line="146">a #graphene_size_t</doc>
8941+ <type name="Size" c:type="const graphene_size_t*"/>
8942+ </instance-parameter>
8943+ <parameter name="factor" transfer-ownership="none">
8944+ <doc xml:space="preserve"
8945+ filename="src/graphene-size.c"
8946+ line="147">the scaling factor</doc>
8947+ <type name="gfloat" c:type="float"/>
8948+ </parameter>
8949+ <parameter name="res"
8950+ direction="out"
8951+ caller-allocates="1"
8952+ transfer-ownership="none">
8953+ <doc xml:space="preserve"
8954+ filename="src/graphene-size.c"
8955+ line="148">return location for the scaled size</doc>
8956+ <type name="Size" c:type="graphene_size_t*"/>
8957+ </parameter>
8958+ </parameters>
8959+ </method>
8960+ <function name="zero" c:identifier="graphene_size_zero" version="1.0">
8961+ <doc xml:space="preserve"
8962+ filename="src/graphene-size.c"
8963+ line="189">A constant pointer to a zero #graphene_size_t, useful for
8964+equality checks and interpolations.</doc>
8965+ <source-position filename="include/graphene-size.h" line="102"/>
8966+ <return-value transfer-ownership="none">
8967+ <doc xml:space="preserve"
8968+ filename="src/graphene-size.c"
8969+ line="195">a constant size</doc>
8970+ <type name="Size" c:type="const graphene_size_t*"/>
8971+ </return-value>
8972+ </function>
8973+ </record>
8974+ <record name="Sphere"
8975+ c:type="graphene_sphere_t"
8976+ version="1.2"
8977+ glib:type-name="GrapheneSphere"
8978+ glib:get-type="graphene_sphere_get_type"
8979+ c:symbol-prefix="sphere">
8980+ <doc xml:space="preserve"
8981+ filename="include/graphene-sphere.h"
8982+ line="37">A sphere, represented by its center and radius.</doc>
8983+ <source-position filename="include/graphene-sphere.h" line="49"/>
8984+ <field name="center" readable="0" private="1">
8985+ <type name="Vec3" c:type="graphene_vec3_t"/>
8986+ </field>
8987+ <field name="radius" readable="0" private="1">
8988+ <type name="gfloat" c:type="float"/>
8989+ </field>
8990+ <constructor name="alloc"
8991+ c:identifier="graphene_sphere_alloc"
8992+ version="1.2">
8993+ <doc xml:space="preserve"
8994+ filename="src/graphene-sphere.c"
8995+ line="46">Allocates a new #graphene_sphere_t.
8996+
8997+The contents of the newly allocated structure are undefined.</doc>
8998+ <source-position filename="include/graphene-sphere.h" line="52"/>
8999+ <return-value transfer-ownership="full">
9000+ <doc xml:space="preserve"
9001+ filename="src/graphene-sphere.c"
9002+ line="53">the newly allocated #graphene_sphere_t. Use
9003+ graphene_sphere_free() to free the resources allocated by this function</doc>
9004+ <type name="Sphere" c:type="graphene_sphere_t*"/>
9005+ </return-value>
9006+ </constructor>
9007+ <method name="contains_point"
9008+ c:identifier="graphene_sphere_contains_point"
9009+ version="1.2">
9010+ <doc xml:space="preserve"
9011+ filename="src/graphene-sphere.c"
9012+ line="261">Checks whether the given @point is contained in the volume
9013+of a #graphene_sphere_t.</doc>
9014+ <source-position filename="include/graphene-sphere.h" line="83"/>
9015+ <return-value transfer-ownership="none">
9016+ <doc xml:space="preserve"
9017+ filename="src/graphene-sphere.c"
9018+ line="269">`true` if the sphere contains the point</doc>
9019+ <type name="gboolean" c:type="_Bool"/>
9020+ </return-value>
9021+ <parameters>
9022+ <instance-parameter name="s" transfer-ownership="none">
9023+ <doc xml:space="preserve"
9024+ filename="src/graphene-sphere.c"
9025+ line="263">a #graphene_sphere_t</doc>
9026+ <type name="Sphere" c:type="const graphene_sphere_t*"/>
9027+ </instance-parameter>
9028+ <parameter name="point" transfer-ownership="none">
9029+ <doc xml:space="preserve"
9030+ filename="src/graphene-sphere.c"
9031+ line="264">a #graphene_point3d_t</doc>
9032+ <type name="Point3D" c:type="const graphene_point3d_t*"/>
9033+ </parameter>
9034+ </parameters>
9035+ </method>
9036+ <method name="distance"
9037+ c:identifier="graphene_sphere_distance"
9038+ version="1.2">
9039+ <doc xml:space="preserve"
9040+ filename="src/graphene-sphere.c"
9041+ line="289">Computes the distance of the given @point from the surface of
9042+a #graphene_sphere_t.</doc>
9043+ <source-position filename="include/graphene-sphere.h" line="86"/>
9044+ <return-value transfer-ownership="none">
9045+ <doc xml:space="preserve"
9046+ filename="src/graphene-sphere.c"
9047+ line="297">the distance of the point</doc>
9048+ <type name="gfloat" c:type="float"/>
9049+ </return-value>
9050+ <parameters>
9051+ <instance-parameter name="s" transfer-ownership="none">
9052+ <doc xml:space="preserve"
9053+ filename="src/graphene-sphere.c"
9054+ line="291">a #graphene_sphere_t</doc>
9055+ <type name="Sphere" c:type="const graphene_sphere_t*"/>
9056+ </instance-parameter>
9057+ <parameter name="point" transfer-ownership="none">
9058+ <doc xml:space="preserve"
9059+ filename="src/graphene-sphere.c"
9060+ line="292">a #graphene_point3d_t</doc>
9061+ <type name="Point3D" c:type="const graphene_point3d_t*"/>
9062+ </parameter>
9063+ </parameters>
9064+ </method>
9065+ <method name="equal" c:identifier="graphene_sphere_equal" version="1.2">
9066+ <doc xml:space="preserve"
9067+ filename="src/graphene-sphere.c"
9068+ line="363">Checks whether two #graphene_sphere_t are equal.</doc>
9069+ <source-position filename="include/graphene-sphere.h" line="80"/>
9070+ <return-value transfer-ownership="none">
9071+ <doc xml:space="preserve"
9072+ filename="src/graphene-sphere.c"
9073+ line="370">`true` if the spheres are equal</doc>
9074+ <type name="gboolean" c:type="_Bool"/>
9075+ </return-value>
9076+ <parameters>
9077+ <instance-parameter name="a" transfer-ownership="none">
9078+ <doc xml:space="preserve"
9079+ filename="src/graphene-sphere.c"
9080+ line="365">a #graphene_sphere_t</doc>
9081+ <type name="Sphere" c:type="const graphene_sphere_t*"/>
9082+ </instance-parameter>
9083+ <parameter name="b" transfer-ownership="none">
9084+ <doc xml:space="preserve"
9085+ filename="src/graphene-sphere.c"
9086+ line="366">a #graphene_sphere_t</doc>
9087+ <type name="Sphere" c:type="const graphene_sphere_t*"/>
9088+ </parameter>
9089+ </parameters>
9090+ </method>
9091+ <method name="free" c:identifier="graphene_sphere_free" version="1.2">
9092+ <doc xml:space="preserve"
9093+ filename="src/graphene-sphere.c"
9094+ line="64">Frees the resources allocated by graphene_sphere_alloc().</doc>
9095+ <source-position filename="include/graphene-sphere.h" line="54"/>
9096+ <return-value transfer-ownership="none">
9097+ <type name="none" c:type="void"/>
9098+ </return-value>
9099+ <parameters>
9100+ <instance-parameter name="s" transfer-ownership="none">
9101+ <doc xml:space="preserve"
9102+ filename="src/graphene-sphere.c"
9103+ line="66">a #graphene_sphere_t</doc>
9104+ <type name="Sphere" c:type="graphene_sphere_t*"/>
9105+ </instance-parameter>
9106+ </parameters>
9107+ </method>
9108+ <method name="get_bounding_box"
9109+ c:identifier="graphene_sphere_get_bounding_box"
9110+ version="1.2">
9111+ <doc xml:space="preserve"
9112+ filename="src/graphene-sphere.c"
9113+ line="312">Computes the bounding box capable of containing the
9114+given #graphene_sphere_t.</doc>
9115+ <source-position filename="include/graphene-sphere.h" line="89"/>
9116+ <return-value transfer-ownership="none">
9117+ <type name="none" c:type="void"/>
9118+ </return-value>
9119+ <parameters>
9120+ <instance-parameter name="s" transfer-ownership="none">
9121+ <doc xml:space="preserve"
9122+ filename="src/graphene-sphere.c"
9123+ line="314">a #graphene_sphere_t</doc>
9124+ <type name="Sphere" c:type="const graphene_sphere_t*"/>
9125+ </instance-parameter>
9126+ <parameter name="box"
9127+ direction="out"
9128+ caller-allocates="1"
9129+ transfer-ownership="none">
9130+ <doc xml:space="preserve"
9131+ filename="src/graphene-sphere.c"
9132+ line="315">return location for the bounding box</doc>
9133+ <type name="Box" c:type="graphene_box_t*"/>
9134+ </parameter>
9135+ </parameters>
9136+ </method>
9137+ <method name="get_center"
9138+ c:identifier="graphene_sphere_get_center"
9139+ version="1.2">
9140+ <doc xml:space="preserve"
9141+ filename="src/graphene-sphere.c"
9142+ line="214">Retrieves the coordinates of the center of a #graphene_sphere_t.</doc>
9143+ <source-position filename="include/graphene-sphere.h" line="73"/>
9144+ <return-value transfer-ownership="none">
9145+ <type name="none" c:type="void"/>
9146+ </return-value>
9147+ <parameters>
9148+ <instance-parameter name="s" transfer-ownership="none">
9149+ <doc xml:space="preserve"
9150+ filename="src/graphene-sphere.c"
9151+ line="216">a #graphene_sphere_t</doc>
9152+ <type name="Sphere" c:type="const graphene_sphere_t*"/>
9153+ </instance-parameter>
9154+ <parameter name="center"
9155+ direction="out"
9156+ caller-allocates="1"
9157+ transfer-ownership="none">
9158+ <doc xml:space="preserve"
9159+ filename="src/graphene-sphere.c"
9160+ line="217">return location for the coordinates of
9161+ the center</doc>
9162+ <type name="Point3D" c:type="graphene_point3d_t*"/>
9163+ </parameter>
9164+ </parameters>
9165+ </method>
9166+ <method name="get_radius"
9167+ c:identifier="graphene_sphere_get_radius"
9168+ version="1.2">
9169+ <doc xml:space="preserve"
9170+ filename="src/graphene-sphere.c"
9171+ line="231">Retrieves the radius of a #graphene_sphere_t.</doc>
9172+ <source-position filename="include/graphene-sphere.h" line="76"/>
9173+ <return-value transfer-ownership="none">
9174+ <type name="gfloat" c:type="float"/>
9175+ </return-value>
9176+ <parameters>
9177+ <instance-parameter name="s" transfer-ownership="none">
9178+ <doc xml:space="preserve"
9179+ filename="src/graphene-sphere.c"
9180+ line="233">a #graphene_sphere_t</doc>
9181+ <type name="Sphere" c:type="const graphene_sphere_t*"/>
9182+ </instance-parameter>
9183+ </parameters>
9184+ </method>
9185+ <method name="init" c:identifier="graphene_sphere_init" version="1.2">
9186+ <doc xml:space="preserve"
9187+ filename="src/graphene-sphere.c"
9188+ line="78">Initializes the given #graphene_sphere_t with the given @center and @radius.</doc>
9189+ <source-position filename="include/graphene-sphere.h" line="57"/>
9190+ <return-value transfer-ownership="none">
9191+ <doc xml:space="preserve"
9192+ filename="src/graphene-sphere.c"
9193+ line="87">the initialized #graphene_sphere_t</doc>
9194+ <type name="Sphere" c:type="graphene_sphere_t*"/>
9195+ </return-value>
9196+ <parameters>
9197+ <instance-parameter name="s" transfer-ownership="none">
9198+ <doc xml:space="preserve"
9199+ filename="src/graphene-sphere.c"
9200+ line="80">the #graphene_sphere_t to initialize</doc>
9201+ <type name="Sphere" c:type="graphene_sphere_t*"/>
9202+ </instance-parameter>
9203+ <parameter name="center"
9204+ transfer-ownership="none"
9205+ nullable="1"
9206+ allow-none="1">
9207+ <doc xml:space="preserve"
9208+ filename="src/graphene-sphere.c"
9209+ line="81">the coordinates of the center of the sphere, or %NULL
9210+ for a center in (0, 0, 0)</doc>
9211+ <type name="Point3D" c:type="const graphene_point3d_t*"/>
9212+ </parameter>
9213+ <parameter name="radius" transfer-ownership="none">
9214+ <doc xml:space="preserve"
9215+ filename="src/graphene-sphere.c"
9216+ line="83">the radius of the sphere</doc>
9217+ <type name="gfloat" c:type="float"/>
9218+ </parameter>
9219+ </parameters>
9220+ </method>
9221+ <method name="init_from_points"
9222+ c:identifier="graphene_sphere_init_from_points"
9223+ version="1.2">
9224+ <doc xml:space="preserve"
9225+ filename="src/graphene-sphere.c"
9226+ line="116">Initializes the given #graphene_sphere_t using the given array
9227+of 3D coordinates so that the sphere includes them.
9228+
9229+The center of the sphere can either be specified, or will be center
9230+of the 3D volume that encompasses all @points.</doc>
9231+ <source-position filename="include/graphene-sphere.h" line="62"/>
9232+ <return-value transfer-ownership="none">
9233+ <doc xml:space="preserve"
9234+ filename="src/graphene-sphere.c"
9235+ line="129">the initialized #graphene_sphere_t</doc>
9236+ <type name="Sphere" c:type="graphene_sphere_t*"/>
9237+ </return-value>
9238+ <parameters>
9239+ <instance-parameter name="s" transfer-ownership="none">
9240+ <doc xml:space="preserve"
9241+ filename="src/graphene-sphere.c"
9242+ line="118">the #graphene_sphere_t to initialize</doc>
9243+ <type name="Sphere" c:type="graphene_sphere_t*"/>
9244+ </instance-parameter>
9245+ <parameter name="n_points" transfer-ownership="none">
9246+ <doc xml:space="preserve"
9247+ filename="src/graphene-sphere.c"
9248+ line="119">the number of #graphene_point3d_t in the @points array</doc>
9249+ <type name="guint" c:type="unsigned int"/>
9250+ </parameter>
9251+ <parameter name="points" transfer-ownership="none">
9252+ <doc xml:space="preserve"
9253+ filename="src/graphene-sphere.c"
9254+ line="120">an array of #graphene_point3d_t</doc>
9255+ <array length="0"
9256+ zero-terminated="0"
9257+ c:type="const graphene_point3d_t*">
9258+ <type name="Point3D" c:type="graphene_point3d_t"/>
9259+ </array>
9260+ </parameter>
9261+ <parameter name="center"
9262+ transfer-ownership="none"
9263+ nullable="1"
9264+ allow-none="1">
9265+ <doc xml:space="preserve"
9266+ filename="src/graphene-sphere.c"
9267+ line="121">the center of the sphere</doc>
9268+ <type name="Point3D" c:type="const graphene_point3d_t*"/>
9269+ </parameter>
9270+ </parameters>
9271+ </method>
9272+ <method name="init_from_vectors"
9273+ c:identifier="graphene_sphere_init_from_vectors"
9274+ version="1.2">
9275+ <doc xml:space="preserve"
9276+ filename="src/graphene-sphere.c"
9277+ line="168">Initializes the given #graphene_sphere_t using the given array
9278+of 3D coordinates so that the sphere includes them.
9279+
9280+The center of the sphere can either be specified, or will be center
9281+of the 3D volume that encompasses all @vectors.</doc>
9282+ <source-position filename="include/graphene-sphere.h" line="67"/>
9283+ <return-value transfer-ownership="none">
9284+ <doc xml:space="preserve"
9285+ filename="src/graphene-sphere.c"
9286+ line="181">the initialized #graphene_sphere_t</doc>
9287+ <type name="Sphere" c:type="graphene_sphere_t*"/>
9288+ </return-value>
9289+ <parameters>
9290+ <instance-parameter name="s" transfer-ownership="none">
9291+ <doc xml:space="preserve"
9292+ filename="src/graphene-sphere.c"
9293+ line="170">the #graphene_sphere_t to initialize</doc>
9294+ <type name="Sphere" c:type="graphene_sphere_t*"/>
9295+ </instance-parameter>
9296+ <parameter name="n_vectors" transfer-ownership="none">
9297+ <doc xml:space="preserve"
9298+ filename="src/graphene-sphere.c"
9299+ line="171">the number of #graphene_vec3_t in the @vectors array</doc>
9300+ <type name="guint" c:type="unsigned int"/>
9301+ </parameter>
9302+ <parameter name="vectors" transfer-ownership="none">
9303+ <doc xml:space="preserve"
9304+ filename="src/graphene-sphere.c"
9305+ line="172">an array of #graphene_vec3_t</doc>
9306+ <array length="0"
9307+ zero-terminated="0"
9308+ c:type="const graphene_vec3_t*">
9309+ <type name="Vec3" c:type="graphene_vec3_t"/>
9310+ </array>
9311+ </parameter>
9312+ <parameter name="center"
9313+ transfer-ownership="none"
9314+ nullable="1"
9315+ allow-none="1">
9316+ <doc xml:space="preserve"
9317+ filename="src/graphene-sphere.c"
9318+ line="173">the center of the sphere</doc>
9319+ <type name="Point3D" c:type="const graphene_point3d_t*"/>
9320+ </parameter>
9321+ </parameters>
9322+ </method>
9323+ <method name="is_empty"
9324+ c:identifier="graphene_sphere_is_empty"
9325+ version="1.2">
9326+ <doc xml:space="preserve"
9327+ filename="src/graphene-sphere.c"
9328+ line="245">Checks whether the sphere has a zero radius.</doc>
9329+ <source-position filename="include/graphene-sphere.h" line="78"/>
9330+ <return-value transfer-ownership="none">
9331+ <doc xml:space="preserve"
9332+ filename="src/graphene-sphere.c"
9333+ line="251">`true` if the sphere is empty</doc>
9334+ <type name="gboolean" c:type="_Bool"/>
9335+ </return-value>
9336+ <parameters>
9337+ <instance-parameter name="s" transfer-ownership="none">
9338+ <doc xml:space="preserve"
9339+ filename="src/graphene-sphere.c"
9340+ line="247">a #graphene_sphere_t</doc>
9341+ <type name="Sphere" c:type="const graphene_sphere_t*"/>
9342+ </instance-parameter>
9343+ </parameters>
9344+ </method>
9345+ <method name="translate"
9346+ c:identifier="graphene_sphere_translate"
9347+ version="1.2">
9348+ <doc xml:space="preserve"
9349+ filename="src/graphene-sphere.c"
9350+ line="330">Translates the center of the given #graphene_sphere_t using the @point
9351+coordinates as the delta of the translation.</doc>
9352+ <source-position filename="include/graphene-sphere.h" line="92"/>
9353+ <return-value transfer-ownership="none">
9354+ <type name="none" c:type="void"/>
9355+ </return-value>
9356+ <parameters>
9357+ <instance-parameter name="s" transfer-ownership="none">
9358+ <doc xml:space="preserve"
9359+ filename="src/graphene-sphere.c"
9360+ line="332">a #graphene_sphere_t</doc>
9361+ <type name="Sphere" c:type="const graphene_sphere_t*"/>
9362+ </instance-parameter>
9363+ <parameter name="point" transfer-ownership="none">
9364+ <doc xml:space="preserve"
9365+ filename="src/graphene-sphere.c"
9366+ line="333">the coordinates of the translation</doc>
9367+ <type name="Point3D" c:type="const graphene_point3d_t*"/>
9368+ </parameter>
9369+ <parameter name="res"
9370+ direction="out"
9371+ caller-allocates="1"
9372+ transfer-ownership="none">
9373+ <doc xml:space="preserve"
9374+ filename="src/graphene-sphere.c"
9375+ line="334">return location for the translated sphere</doc>
9376+ <type name="Sphere" c:type="graphene_sphere_t*"/>
9377+ </parameter>
9378+ </parameters>
9379+ </method>
9380+ </record>
9381+ <record name="Triangle"
9382+ c:type="graphene_triangle_t"
9383+ version="1.2"
9384+ glib:type-name="GrapheneTriangle"
9385+ glib:get-type="graphene_triangle_get_type"
9386+ c:symbol-prefix="triangle">
9387+ <doc xml:space="preserve"
9388+ filename="include/graphene-triangle.h"
9389+ line="37">A triangle.</doc>
9390+ <source-position filename="include/graphene-triangle.h" line="50"/>
9391+ <field name="a" readable="0" private="1">
9392+ <type name="Vec3" c:type="graphene_vec3_t"/>
9393+ </field>
9394+ <field name="b" readable="0" private="1">
9395+ <type name="Vec3" c:type="graphene_vec3_t"/>
9396+ </field>
9397+ <field name="c" readable="0" private="1">
9398+ <type name="Vec3" c:type="graphene_vec3_t"/>
9399+ </field>
9400+ <constructor name="alloc"
9401+ c:identifier="graphene_triangle_alloc"
9402+ version="1.2">
9403+ <doc xml:space="preserve"
9404+ filename="src/graphene-triangle.c"
9405+ line="47">Allocates a new #graphene_triangle_t.
9406+
9407+The contents of the returned structure are undefined.</doc>
9408+ <source-position filename="include/graphene-triangle.h" line="53"/>
9409+ <return-value transfer-ownership="full">
9410+ <doc xml:space="preserve"
9411+ filename="src/graphene-triangle.c"
9412+ line="54">the newly allocated #graphene_triangle_t
9413+ structure. Use graphene_triangle_free() to free the resources
9414+ allocated by this function</doc>
9415+ <type name="Triangle" c:type="graphene_triangle_t*"/>
9416+ </return-value>
9417+ </constructor>
9418+ <method name="contains_point"
9419+ c:identifier="graphene_triangle_contains_point"
9420+ version="1.2">
9421+ <doc xml:space="preserve"
9422+ filename="src/graphene-triangle.c"
9423+ line="490">Checks whether the given triangle @t contains the point @p.</doc>
9424+ <source-position filename="include/graphene-triangle.h" line="109"/>
9425+ <return-value transfer-ownership="none">
9426+ <doc xml:space="preserve"
9427+ filename="src/graphene-triangle.c"
9428+ line="497">`true` if the point is inside the triangle</doc>
9429+ <type name="gboolean" c:type="_Bool"/>
9430+ </return-value>
9431+ <parameters>
9432+ <instance-parameter name="t" transfer-ownership="none">
9433+ <doc xml:space="preserve"
9434+ filename="src/graphene-triangle.c"
9435+ line="492">a #graphene_triangle_t</doc>
9436+ <type name="Triangle" c:type="const graphene_triangle_t*"/>
9437+ </instance-parameter>
9438+ <parameter name="p" transfer-ownership="none">
9439+ <doc xml:space="preserve"
9440+ filename="src/graphene-triangle.c"
9441+ line="493">a #graphene_point3d_t</doc>
9442+ <type name="Point3D" c:type="const graphene_point3d_t*"/>
9443+ </parameter>
9444+ </parameters>
9445+ </method>
9446+ <method name="equal"
9447+ c:identifier="graphene_triangle_equal"
9448+ version="1.2">
9449+ <doc xml:space="preserve"
9450+ filename="src/graphene-triangle.c"
9451+ line="533">Checks whether the two given #graphene_triangle_t are equal.</doc>
9452+ <source-position filename="include/graphene-triangle.h" line="112"/>
9453+ <return-value transfer-ownership="none">
9454+ <doc xml:space="preserve"
9455+ filename="src/graphene-triangle.c"
9456+ line="540">`true` if the triangles are equal</doc>
9457+ <type name="gboolean" c:type="_Bool"/>
9458+ </return-value>
9459+ <parameters>
9460+ <instance-parameter name="a" transfer-ownership="none">
9461+ <doc xml:space="preserve"
9462+ filename="src/graphene-triangle.c"
9463+ line="535">a #graphene_triangle_t</doc>
9464+ <type name="Triangle" c:type="const graphene_triangle_t*"/>
9465+ </instance-parameter>
9466+ <parameter name="b" transfer-ownership="none">
9467+ <doc xml:space="preserve"
9468+ filename="src/graphene-triangle.c"
9469+ line="536">a #graphene_triangle_t</doc>
9470+ <type name="Triangle" c:type="const graphene_triangle_t*"/>
9471+ </parameter>
9472+ </parameters>
9473+ </method>
9474+ <method name="free" c:identifier="graphene_triangle_free" version="1.2">
9475+ <doc xml:space="preserve"
9476+ filename="src/graphene-triangle.c"
9477+ line="66">Frees the resources allocated by graphene_triangle_alloc().</doc>
9478+ <source-position filename="include/graphene-triangle.h" line="55"/>
9479+ <return-value transfer-ownership="none">
9480+ <type name="none" c:type="void"/>
9481+ </return-value>
9482+ <parameters>
9483+ <instance-parameter name="t" transfer-ownership="none">
9484+ <doc xml:space="preserve"
9485+ filename="src/graphene-triangle.c"
9486+ line="68">a #graphene_triangle_t</doc>
9487+ <type name="Triangle" c:type="graphene_triangle_t*"/>
9488+ </instance-parameter>
9489+ </parameters>
9490+ </method>
9491+ <method name="get_area"
9492+ c:identifier="graphene_triangle_get_area"
9493+ version="1.2">
9494+ <doc xml:space="preserve"
9495+ filename="src/graphene-triangle.c"
9496+ line="237">Computes the area of the given #graphene_triangle_t.</doc>
9497+ <source-position filename="include/graphene-triangle.h" line="83"/>
9498+ <return-value transfer-ownership="none">
9499+ <doc xml:space="preserve"
9500+ filename="src/graphene-triangle.c"
9501+ line="243">the area of the triangle</doc>
9502+ <type name="gfloat" c:type="float"/>
9503+ </return-value>
9504+ <parameters>
9505+ <instance-parameter name="t" transfer-ownership="none">
9506+ <doc xml:space="preserve"
9507+ filename="src/graphene-triangle.c"
9508+ line="239">a #graphene_triangle_t</doc>
9509+ <type name="Triangle" c:type="const graphene_triangle_t*"/>
9510+ </instance-parameter>
9511+ </parameters>
9512+ </method>
9513+ <method name="get_barycoords"
9514+ c:identifier="graphene_triangle_get_barycoords"
9515+ version="1.2">
9516+ <doc xml:space="preserve"
9517+ filename="src/graphene-triangle.c"
9518+ line="421">Computes the [barycentric coordinates](http://en.wikipedia.org/wiki/Barycentric_coordinate_system)
9519+of the given point @p.
9520+
9521+The point @p must lie on the same plane as the triangle @t; if the
9522+point is not coplanar, the result of this function is undefined.
9523+
9524+If we place the origin in the coordinates of the triangle's A point,
9525+the barycentric coordinates are `u`, which is on the AC vector; and `v`
9526+which is on the AB vector:
9527+
9528+![](triangle-barycentric.png)
9529+
9530+The returned #graphene_vec2_t contains the following values, in order:
9531+
9532+ - `res.x = u`
9533+ - `res.y = v`</doc>
9534+ <source-position filename="include/graphene-triangle.h" line="97"/>
9535+ <return-value transfer-ownership="none">
9536+ <doc xml:space="preserve"
9537+ filename="src/graphene-triangle.c"
9538+ line="445">`true` if the barycentric coordinates are valid</doc>
9539+ <type name="gboolean" c:type="_Bool"/>
9540+ </return-value>
9541+ <parameters>
9542+ <instance-parameter name="t" transfer-ownership="none">
9543+ <doc xml:space="preserve"
9544+ filename="src/graphene-triangle.c"
9545+ line="423">a #graphene_triangle_t</doc>
9546+ <type name="Triangle" c:type="const graphene_triangle_t*"/>
9547+ </instance-parameter>
9548+ <parameter name="p"
9549+ transfer-ownership="none"
9550+ nullable="1"
9551+ allow-none="1">
9552+ <doc xml:space="preserve"
9553+ filename="src/graphene-triangle.c"
9554+ line="424">a #graphene_point3d_t</doc>
9555+ <type name="Point3D" c:type="const graphene_point3d_t*"/>
9556+ </parameter>
9557+ <parameter name="res"
9558+ direction="out"
9559+ caller-allocates="1"
9560+ transfer-ownership="none">
9561+ <doc xml:space="preserve"
9562+ filename="src/graphene-triangle.c"
9563+ line="425">return location for the vector
9564+ with the barycentric coordinates</doc>
9565+ <type name="Vec2" c:type="graphene_vec2_t*"/>
9566+ </parameter>
9567+ </parameters>
9568+ </method>
9569+ <method name="get_bounding_box"
9570+ c:identifier="graphene_triangle_get_bounding_box"
9571+ version="1.2">
9572+ <doc xml:space="preserve"
9573+ filename="src/graphene-triangle.c"
9574+ line="336">Computes the bounding box of the given #graphene_triangle_t.</doc>
9575+ <source-position filename="include/graphene-triangle.h" line="94"/>
9576+ <return-value transfer-ownership="none">
9577+ <type name="none" c:type="void"/>
9578+ </return-value>
9579+ <parameters>
9580+ <instance-parameter name="t" transfer-ownership="none">
9581+ <doc xml:space="preserve"
9582+ filename="src/graphene-triangle.c"
9583+ line="338">a #graphene_triangle_t</doc>
9584+ <type name="Triangle" c:type="const graphene_triangle_t*"/>
9585+ </instance-parameter>
9586+ <parameter name="res"
9587+ direction="out"
9588+ caller-allocates="1"
9589+ transfer-ownership="none">
9590+ <doc xml:space="preserve"
9591+ filename="src/graphene-triangle.c"
9592+ line="339">return location for the box</doc>
9593+ <type name="Box" c:type="graphene_box_t*"/>
9594+ </parameter>
9595+ </parameters>
9596+ </method>
9597+ <method name="get_midpoint"
9598+ c:identifier="graphene_triangle_get_midpoint"
9599+ version="1.2">
9600+ <doc xml:space="preserve"
9601+ filename="src/graphene-triangle.c"
9602+ line="260">Computes the coordinates of the midpoint of the given #graphene_triangle_t.
9603+
9604+The midpoint G is the [centroid](https://en.wikipedia.org/wiki/Centroid#Triangle_centroid)
9605+of the triangle, i.e. the intersection of its medians.</doc>
9606+ <source-position filename="include/graphene-triangle.h" line="85"/>
9607+ <return-value transfer-ownership="none">
9608+ <type name="none" c:type="void"/>
9609+ </return-value>
9610+ <parameters>
9611+ <instance-parameter name="t" transfer-ownership="none">
9612+ <doc xml:space="preserve"
9613+ filename="src/graphene-triangle.c"
9614+ line="262">a #graphene_triangle_t</doc>
9615+ <type name="Triangle" c:type="const graphene_triangle_t*"/>
9616+ </instance-parameter>
9617+ <parameter name="res"
9618+ direction="out"
9619+ caller-allocates="1"
9620+ transfer-ownership="none">
9621+ <doc xml:space="preserve"
9622+ filename="src/graphene-triangle.c"
9623+ line="263">return location for the coordinates of
9624+ the midpoint</doc>
9625+ <type name="Point3D" c:type="graphene_point3d_t*"/>
9626+ </parameter>
9627+ </parameters>
9628+ </method>
9629+ <method name="get_normal"
9630+ c:identifier="graphene_triangle_get_normal"
9631+ version="1.2">
9632+ <doc xml:space="preserve"
9633+ filename="src/graphene-triangle.c"
9634+ line="286">Computes the normal vector of the given #graphene_triangle_t.</doc>
9635+ <source-position filename="include/graphene-triangle.h" line="88"/>
9636+ <return-value transfer-ownership="none">
9637+ <type name="none" c:type="void"/>
9638+ </return-value>
9639+ <parameters>
9640+ <instance-parameter name="t" transfer-ownership="none">
9641+ <doc xml:space="preserve"
9642+ filename="src/graphene-triangle.c"
9643+ line="288">a #graphene_triangle_t</doc>
9644+ <type name="Triangle" c:type="const graphene_triangle_t*"/>
9645+ </instance-parameter>
9646+ <parameter name="res"
9647+ direction="out"
9648+ caller-allocates="1"
9649+ transfer-ownership="none">
9650+ <doc xml:space="preserve"
9651+ filename="src/graphene-triangle.c"
9652+ line="289">return location for the normal vector</doc>
9653+ <type name="Vec3" c:type="graphene_vec3_t*"/>
9654+ </parameter>
9655+ </parameters>
9656+ </method>
9657+ <method name="get_plane"
9658+ c:identifier="graphene_triangle_get_plane"
9659+ version="1.2">
9660+ <doc xml:space="preserve"
9661+ filename="src/graphene-triangle.c"
9662+ line="314">Computes the plane based on the vertices of the given #graphene_triangle_t.</doc>
9663+ <source-position filename="include/graphene-triangle.h" line="91"/>
9664+ <return-value transfer-ownership="none">
9665+ <type name="none" c:type="void"/>
9666+ </return-value>
9667+ <parameters>
9668+ <instance-parameter name="t" transfer-ownership="none">
9669+ <doc xml:space="preserve"
9670+ filename="src/graphene-triangle.c"
9671+ line="316">a #graphene_triangle_t</doc>
9672+ <type name="Triangle" c:type="const graphene_triangle_t*"/>
9673+ </instance-parameter>
9674+ <parameter name="res"
9675+ direction="out"
9676+ caller-allocates="1"
9677+ transfer-ownership="none">
9678+ <doc xml:space="preserve"
9679+ filename="src/graphene-triangle.c"
9680+ line="317">return location for the plane</doc>
9681+ <type name="Plane" c:type="graphene_plane_t*"/>
9682+ </parameter>
9683+ </parameters>
9684+ </method>
9685+ <method name="get_points"
9686+ c:identifier="graphene_triangle_get_points"
9687+ version="1.2">
9688+ <doc xml:space="preserve"
9689+ filename="src/graphene-triangle.c"
9690+ line="183">Retrieves the three vertices of the given #graphene_triangle_t and returns
9691+their coordinates as #graphene_point3d_t.</doc>
9692+ <source-position filename="include/graphene-triangle.h" line="73"/>
9693+ <return-value transfer-ownership="none">
9694+ <type name="none" c:type="void"/>
9695+ </return-value>
9696+ <parameters>
9697+ <instance-parameter name="t" transfer-ownership="none">
9698+ <doc xml:space="preserve"
9699+ filename="src/graphene-triangle.c"
9700+ line="185">a #graphene_triangle_t</doc>
9701+ <type name="Triangle" c:type="const graphene_triangle_t*"/>
9702+ </instance-parameter>
9703+ <parameter name="a"
9704+ direction="out"
9705+ caller-allocates="1"
9706+ transfer-ownership="none"
9707+ optional="1"
9708+ allow-none="1">
9709+ <doc xml:space="preserve"
9710+ filename="src/graphene-triangle.c"
9711+ line="186">return location for the coordinates
9712+ of the first vertex</doc>
9713+ <type name="Point3D" c:type="graphene_point3d_t*"/>
9714+ </parameter>
9715+ <parameter name="b"
9716+ direction="out"
9717+ caller-allocates="1"
9718+ transfer-ownership="none"
9719+ optional="1"
9720+ allow-none="1">
9721+ <doc xml:space="preserve"
9722+ filename="src/graphene-triangle.c"
9723+ line="188">return location for the coordinates
9724+ of the second vertex</doc>
9725+ <type name="Point3D" c:type="graphene_point3d_t*"/>
9726+ </parameter>
9727+ <parameter name="c"
9728+ direction="out"
9729+ caller-allocates="1"
9730+ transfer-ownership="none"
9731+ optional="1"
9732+ allow-none="1">
9733+ <doc xml:space="preserve"
9734+ filename="src/graphene-triangle.c"
9735+ line="190">return location for the coordinates
9736+ of the third vertex</doc>
9737+ <type name="Point3D" c:type="graphene_point3d_t*"/>
9738+ </parameter>
9739+ </parameters>
9740+ </method>
9741+ <method name="get_uv"
9742+ c:identifier="graphene_triangle_get_uv"
9743+ version="1.10">
9744+ <doc xml:space="preserve"
9745+ filename="src/graphene-triangle.c"
9746+ line="355">Computes the UV coordinates of the given point @p.
9747+
9748+The point @p must lie on the same plane as the triangle @t; if the point
9749+is not coplanar, the result of this function is undefined. If @p is %NULL,
9750+the point will be set in (0, 0, 0).
9751+
9752+The UV coordinates will be placed in the @res vector:
9753+
9754+ - `res.x = u`
9755+ - `res.y = v`
9756+
9757+See also: graphene_triangle_get_barycoords()</doc>
9758+ <source-position filename="include/graphene-triangle.h" line="101"/>
9759+ <return-value transfer-ownership="none">
9760+ <doc xml:space="preserve"
9761+ filename="src/graphene-triangle.c"
9762+ line="378">`true` if the coordinates are valid</doc>
9763+ <type name="gboolean" c:type="_Bool"/>
9764+ </return-value>
9765+ <parameters>
9766+ <instance-parameter name="t" transfer-ownership="none">
9767+ <doc xml:space="preserve"
9768+ filename="src/graphene-triangle.c"
9769+ line="357">a #graphene_triangle_t</doc>
9770+ <type name="Triangle" c:type="const graphene_triangle_t*"/>
9771+ </instance-parameter>
9772+ <parameter name="p"
9773+ transfer-ownership="none"
9774+ nullable="1"
9775+ allow-none="1">
9776+ <doc xml:space="preserve"
9777+ filename="src/graphene-triangle.c"
9778+ line="358">a #graphene_point3d_t</doc>
9779+ <type name="Point3D" c:type="const graphene_point3d_t*"/>
9780+ </parameter>
9781+ <parameter name="uv_a" transfer-ownership="none">
9782+ <doc xml:space="preserve"
9783+ filename="src/graphene-triangle.c"
9784+ line="359">the UV coordinates of the first point</doc>
9785+ <type name="Vec2" c:type="const graphene_vec2_t*"/>
9786+ </parameter>
9787+ <parameter name="uv_b" transfer-ownership="none">
9788+ <doc xml:space="preserve"
9789+ filename="src/graphene-triangle.c"
9790+ line="360">the UV coordinates of the second point</doc>
9791+ <type name="Vec2" c:type="const graphene_vec2_t*"/>
9792+ </parameter>
9793+ <parameter name="uv_c" transfer-ownership="none">
9794+ <doc xml:space="preserve"
9795+ filename="src/graphene-triangle.c"
9796+ line="361">the UV coordinates of the third point</doc>
9797+ <type name="Vec2" c:type="const graphene_vec2_t*"/>
9798+ </parameter>
9799+ <parameter name="res"
9800+ direction="out"
9801+ caller-allocates="1"
9802+ transfer-ownership="none">
9803+ <doc xml:space="preserve"
9804+ filename="src/graphene-triangle.c"
9805+ line="362">a vector containing the UV coordinates
9806+ of the given point @p</doc>
9807+ <type name="Vec2" c:type="graphene_vec2_t*"/>
9808+ </parameter>
9809+ </parameters>
9810+ </method>
9811+ <method name="get_vertices"
9812+ c:identifier="graphene_triangle_get_vertices"
9813+ version="1.2">
9814+ <doc xml:space="preserve"
9815+ filename="src/graphene-triangle.c"
9816+ line="212">Retrieves the three vertices of the given #graphene_triangle_t.</doc>
9817+ <source-position filename="include/graphene-triangle.h" line="78"/>
9818+ <return-value transfer-ownership="none">
9819+ <type name="none" c:type="void"/>
9820+ </return-value>
9821+ <parameters>
9822+ <instance-parameter name="t" transfer-ownership="none">
9823+ <doc xml:space="preserve"
9824+ filename="src/graphene-triangle.c"
9825+ line="214">a #graphene_triangle_t</doc>
9826+ <type name="Triangle" c:type="const graphene_triangle_t*"/>
9827+ </instance-parameter>
9828+ <parameter name="a"
9829+ direction="out"
9830+ caller-allocates="1"
9831+ transfer-ownership="none"
9832+ optional="1"
9833+ allow-none="1">
9834+ <doc xml:space="preserve"
9835+ filename="src/graphene-triangle.c"
9836+ line="215">return location for the first vertex</doc>
9837+ <type name="Vec3" c:type="graphene_vec3_t*"/>
9838+ </parameter>
9839+ <parameter name="b"
9840+ direction="out"
9841+ caller-allocates="1"
9842+ transfer-ownership="none"
9843+ optional="1"
9844+ allow-none="1">
9845+ <doc xml:space="preserve"
9846+ filename="src/graphene-triangle.c"
9847+ line="216">return location for the second vertex</doc>
9848+ <type name="Vec3" c:type="graphene_vec3_t*"/>
9849+ </parameter>
9850+ <parameter name="c"
9851+ direction="out"
9852+ caller-allocates="1"
9853+ transfer-ownership="none"
9854+ optional="1"
9855+ allow-none="1">
9856+ <doc xml:space="preserve"
9857+ filename="src/graphene-triangle.c"
9858+ line="217">return location for the third vertex</doc>
9859+ <type name="Vec3" c:type="graphene_vec3_t*"/>
9860+ </parameter>
9861+ </parameters>
9862+ </method>
9863+ <method name="init_from_float"
9864+ c:identifier="graphene_triangle_init_from_float"
9865+ version="1.10">
9866+ <doc xml:space="preserve"
9867+ filename="src/graphene-triangle.c"
9868+ line="154">Initializes a #graphene_triangle_t using the three given arrays
9869+of floating point values, each representing the coordinates of
9870+a point in 3D space.</doc>
9871+ <source-position filename="include/graphene-triangle.h" line="68"/>
9872+ <return-value transfer-ownership="none">
9873+ <doc xml:space="preserve"
9874+ filename="src/graphene-triangle.c"
9875+ line="165">the initialized #graphene_triangle_t</doc>
9876+ <type name="Triangle" c:type="graphene_triangle_t*"/>
9877+ </return-value>
9878+ <parameters>
9879+ <instance-parameter name="t" transfer-ownership="none">
9880+ <doc xml:space="preserve"
9881+ filename="src/graphene-triangle.c"
9882+ line="156">the #graphene_triangle_t to initialize</doc>
9883+ <type name="Triangle" c:type="graphene_triangle_t*"/>
9884+ </instance-parameter>
9885+ <parameter name="a" transfer-ownership="none">
9886+ <doc xml:space="preserve"
9887+ filename="src/graphene-triangle.c"
9888+ line="157">an array of 3 floating point values</doc>
9889+ <array zero-terminated="0" c:type="const float*" fixed-size="3">
9890+ <type name="gfloat" c:type="float"/>
9891+ </array>
9892+ </parameter>
9893+ <parameter name="b" transfer-ownership="none">
9894+ <doc xml:space="preserve"
9895+ filename="src/graphene-triangle.c"
9896+ line="158">an array of 3 floating point values</doc>
9897+ <array zero-terminated="0" c:type="const float*" fixed-size="3">
9898+ <type name="gfloat" c:type="float"/>
9899+ </array>
9900+ </parameter>
9901+ <parameter name="c" transfer-ownership="none">
9902+ <doc xml:space="preserve"
9903+ filename="src/graphene-triangle.c"
9904+ line="159">an array of 3 floating point values</doc>
9905+ <array zero-terminated="0" c:type="const float*" fixed-size="3">
9906+ <type name="gfloat" c:type="float"/>
9907+ </array>
9908+ </parameter>
9909+ </parameters>
9910+ </method>
9911+ <method name="init_from_point3d"
9912+ c:identifier="graphene_triangle_init_from_point3d"
9913+ version="1.2">
9914+ <doc xml:space="preserve"
9915+ filename="src/graphene-triangle.c"
9916+ line="80">Initializes a #graphene_triangle_t using the three given 3D points.</doc>
9917+ <source-position filename="include/graphene-triangle.h" line="58"/>
9918+ <return-value transfer-ownership="none">
9919+ <doc xml:space="preserve"
9920+ filename="src/graphene-triangle.c"
9921+ line="89">the initialized #graphene_triangle_t</doc>
9922+ <type name="Triangle" c:type="graphene_triangle_t*"/>
9923+ </return-value>
9924+ <parameters>
9925+ <instance-parameter name="t" transfer-ownership="none">
9926+ <doc xml:space="preserve"
9927+ filename="src/graphene-triangle.c"
9928+ line="82">the #graphene_triangle_t to initialize</doc>
9929+ <type name="Triangle" c:type="graphene_triangle_t*"/>
9930+ </instance-parameter>
9931+ <parameter name="a"
9932+ transfer-ownership="none"
9933+ nullable="1"
9934+ allow-none="1">
9935+ <doc xml:space="preserve"
9936+ filename="src/graphene-triangle.c"
9937+ line="83">a #graphene_point3d_t</doc>
9938+ <type name="Point3D" c:type="const graphene_point3d_t*"/>
9939+ </parameter>
9940+ <parameter name="b"
9941+ transfer-ownership="none"
9942+ nullable="1"
9943+ allow-none="1">
9944+ <doc xml:space="preserve"
9945+ filename="src/graphene-triangle.c"
9946+ line="84">a #graphene_point3d_t</doc>
9947+ <type name="Point3D" c:type="const graphene_point3d_t*"/>
9948+ </parameter>
9949+ <parameter name="c"
9950+ transfer-ownership="none"
9951+ nullable="1"
9952+ allow-none="1">
9953+ <doc xml:space="preserve"
9954+ filename="src/graphene-triangle.c"
9955+ line="85">a #graphene_point3d_t</doc>
9956+ <type name="Point3D" c:type="const graphene_point3d_t*"/>
9957+ </parameter>
9958+ </parameters>
9959+ </method>
9960+ <method name="init_from_vec3"
9961+ c:identifier="graphene_triangle_init_from_vec3"
9962+ version="1.2">
9963+ <doc xml:space="preserve"
9964+ filename="src/graphene-triangle.c"
9965+ line="117">Initializes a #graphene_triangle_t using the three given vectors.</doc>
9966+ <source-position filename="include/graphene-triangle.h" line="63"/>
9967+ <return-value transfer-ownership="none">
9968+ <doc xml:space="preserve"
9969+ filename="src/graphene-triangle.c"
9970+ line="126">the initialized #graphene_triangle_t</doc>
9971+ <type name="Triangle" c:type="graphene_triangle_t*"/>
9972+ </return-value>
9973+ <parameters>
9974+ <instance-parameter name="t" transfer-ownership="none">
9975+ <doc xml:space="preserve"
9976+ filename="src/graphene-triangle.c"
9977+ line="119">the #graphene_triangle_t to initialize</doc>
9978+ <type name="Triangle" c:type="graphene_triangle_t*"/>
9979+ </instance-parameter>
9980+ <parameter name="a"
9981+ transfer-ownership="none"
9982+ nullable="1"
9983+ allow-none="1">
9984+ <doc xml:space="preserve"
9985+ filename="src/graphene-triangle.c"
9986+ line="120">a #graphene_vec3_t</doc>
9987+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
9988+ </parameter>
9989+ <parameter name="b"
9990+ transfer-ownership="none"
9991+ nullable="1"
9992+ allow-none="1">
9993+ <doc xml:space="preserve"
9994+ filename="src/graphene-triangle.c"
9995+ line="121">a #graphene_vec3_t</doc>
9996+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
9997+ </parameter>
9998+ <parameter name="c"
9999+ transfer-ownership="none"
10000+ nullable="1"
10001+ allow-none="1">
10002+ <doc xml:space="preserve"
10003+ filename="src/graphene-triangle.c"
10004+ line="122">a #graphene_vec3_t</doc>
10005+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
10006+ </parameter>
10007+ </parameters>
10008+ </method>
10009+ </record>
10010+ <function-macro name="UNAVAILABLE"
10011+ c:identifier="GRAPHENE_UNAVAILABLE"
10012+ introspectable="0">
10013+ <source-position filename="include/graphene-version-macros.h" line="54"/>
10014+ <parameters>
10015+ <parameter name="maj">
10016+ </parameter>
10017+ <parameter name="min">
10018+ </parameter>
10019+ </parameters>
10020+ </function-macro>
10021+ <constant name="VEC2_LEN"
10022+ value="2"
10023+ c:type="GRAPHENE_VEC2_LEN"
10024+ version="1.0">
10025+ <doc xml:space="preserve"
10026+ filename="include/graphene-types.h"
10027+ line="38">Evaluates to the number of components of a #graphene_vec2_t.
10028+
10029+This symbol is useful when declaring a C array of floating
10030+point values to be used with graphene_vec2_init_from_float() and
10031+graphene_vec2_to_float(), e.g.
10032+
10033+|[
10034+ float v[GRAPHENE_VEC2_LEN];
10035+
10036+ // vec is defined elsewhere
10037+ graphene_vec2_to_float (&amp;vec, v);
10038+
10039+ for (int i = 0; i &lt; GRAPHENE_VEC2_LEN; i++)
10040+ fprintf (stdout, "component %d: %g\n", i, v[i]);
10041+]|</doc>
10042+ <source-position filename="include/graphene-types.h" line="59"/>
10043+ <type name="gint" c:type="gint"/>
10044+ </constant>
10045+ <constant name="VEC3_LEN"
10046+ value="3"
10047+ c:type="GRAPHENE_VEC3_LEN"
10048+ version="1.0">
10049+ <doc xml:space="preserve"
10050+ filename="include/graphene-types.h"
10051+ line="61">Evaluates to the number of components of a #graphene_vec3_t.
10052+
10053+This symbol is useful when declaring a C array of floating
10054+point values to be used with graphene_vec3_init_from_float() and
10055+graphene_vec3_to_float(), e.g.
10056+
10057+|[
10058+ float v[GRAPHENE_VEC3_LEN];
10059+
10060+ // vec is defined elsewhere
10061+ graphene_vec3_to_float (&amp;vec, v);
10062+
10063+ for (int i = 0; i &lt; GRAPHENE_VEC2_LEN; i++)
10064+ fprintf (stdout, "component %d: %g\n", i, v[i]);
10065+]|</doc>
10066+ <source-position filename="include/graphene-types.h" line="82"/>
10067+ <type name="gint" c:type="gint"/>
10068+ </constant>
10069+ <constant name="VEC4_LEN"
10070+ value="4"
10071+ c:type="GRAPHENE_VEC4_LEN"
10072+ version="1.0">
10073+ <doc xml:space="preserve"
10074+ filename="include/graphene-types.h"
10075+ line="84">Evaluates to the number of components of a #graphene_vec4_t.
10076+
10077+This symbol is useful when declaring a C array of floating
10078+point values to be used with graphene_vec4_init_from_float() and
10079+graphene_vec4_to_float(), e.g.
10080+
10081+|[
10082+ float v[GRAPHENE_VEC4_LEN];
10083+
10084+ // vec is defined elsewhere
10085+ graphene_vec4_to_float (&amp;vec, v);
10086+
10087+ for (int i = 0; i &lt; GRAPHENE_VEC4_LEN; i++)
10088+ fprintf (stdout, "component %d: %g\n", i, v[i]);
10089+]|</doc>
10090+ <source-position filename="include/graphene-types.h" line="105"/>
10091+ <type name="gint" c:type="gint"/>
10092+ </constant>
10093+ <record name="Vec2"
10094+ c:type="graphene_vec2_t"
10095+ glib:type-name="GrapheneVec2"
10096+ glib:get-type="graphene_vec2_get_type"
10097+ c:symbol-prefix="vec2">
10098+ <doc xml:space="preserve"
10099+ filename="include/graphene-vec2.h"
10100+ line="36">A structure capable of holding a vector with two dimensions, x and y.
10101+
10102+The contents of the #graphene_vec2_t structure are private and should
10103+never be accessed directly.</doc>
10104+ <source-position filename="include/graphene-vec2.h" line="48"/>
10105+ <field name="value" readable="0" private="1">
10106+ <type name="Simd4F" c:type="graphene_simd4f_t"/>
10107+ </field>
10108+ <constructor name="alloc"
10109+ c:identifier="graphene_vec2_alloc"
10110+ version="1.0">
10111+ <doc xml:space="preserve"
10112+ filename="src/graphene-vectors.c"
10113+ line="55">Allocates a new #graphene_vec2_t structure.
10114+
10115+The contents of the returned structure are undefined.
10116+
10117+Use graphene_vec2_init() to initialize the vector.</doc>
10118+ <source-position filename="include/graphene-vec2.h" line="51"/>
10119+ <return-value transfer-ownership="full">
10120+ <doc xml:space="preserve"
10121+ filename="src/graphene-vectors.c"
10122+ line="64">the newly allocated #graphene_vec2_t
10123+ structure. Use graphene_vec2_free() to free the resources allocated
10124+ by this function.</doc>
10125+ <type name="Vec2" c:type="graphene_vec2_t*"/>
10126+ </return-value>
10127+ </constructor>
10128+ <method name="add" c:identifier="graphene_vec2_add" version="1.0">
10129+ <doc xml:space="preserve"
10130+ filename="src/graphene-vectors.c"
10131+ line="204">Adds each component of the two passed vectors and places
10132+each result into the components of @res.</doc>
10133+ <source-position filename="include/graphene-vec2.h" line="68"/>
10134+ <return-value transfer-ownership="none">
10135+ <type name="none" c:type="void"/>
10136+ </return-value>
10137+ <parameters>
10138+ <instance-parameter name="a" transfer-ownership="none">
10139+ <doc xml:space="preserve"
10140+ filename="src/graphene-vectors.c"
10141+ line="206">a #graphene_vec2_t</doc>
10142+ <type name="Vec2" c:type="const graphene_vec2_t*"/>
10143+ </instance-parameter>
10144+ <parameter name="b" transfer-ownership="none">
10145+ <doc xml:space="preserve"
10146+ filename="src/graphene-vectors.c"
10147+ line="207">a #graphene_vec2_t</doc>
10148+ <type name="Vec2" c:type="const graphene_vec2_t*"/>
10149+ </parameter>
10150+ <parameter name="res"
10151+ direction="out"
10152+ caller-allocates="1"
10153+ transfer-ownership="none">
10154+ <doc xml:space="preserve"
10155+ filename="src/graphene-vectors.c"
10156+ line="208">return location for the result</doc>
10157+ <type name="Vec2" c:type="graphene_vec2_t*"/>
10158+ </parameter>
10159+ </parameters>
10160+ </method>
10161+ <method name="divide" c:identifier="graphene_vec2_divide" version="1.0">
10162+ <doc xml:space="preserve"
10163+ filename="src/graphene-vectors.c"
10164+ line="262">Divides each component of the first operand @a by the corresponding
10165+component of the second operand @b, and places the results into the
10166+vector @res.</doc>
10167+ <source-position filename="include/graphene-vec2.h" line="80"/>
10168+ <return-value transfer-ownership="none">
10169+ <type name="none" c:type="void"/>
10170+ </return-value>
10171+ <parameters>
10172+ <instance-parameter name="a" transfer-ownership="none">
10173+ <doc xml:space="preserve"
10174+ filename="src/graphene-vectors.c"
10175+ line="264">a #graphene_vec2_t</doc>
10176+ <type name="Vec2" c:type="const graphene_vec2_t*"/>
10177+ </instance-parameter>
10178+ <parameter name="b" transfer-ownership="none">
10179+ <doc xml:space="preserve"
10180+ filename="src/graphene-vectors.c"
10181+ line="265">a #graphene_vec2_t</doc>
10182+ <type name="Vec2" c:type="const graphene_vec2_t*"/>
10183+ </parameter>
10184+ <parameter name="res"
10185+ direction="out"
10186+ caller-allocates="1"
10187+ transfer-ownership="none">
10188+ <doc xml:space="preserve"
10189+ filename="src/graphene-vectors.c"
10190+ line="266">return location for the result</doc>
10191+ <type name="Vec2" c:type="graphene_vec2_t*"/>
10192+ </parameter>
10193+ </parameters>
10194+ </method>
10195+ <method name="dot" c:identifier="graphene_vec2_dot" version="1.0">
10196+ <doc xml:space="preserve"
10197+ filename="src/graphene-vectors.c"
10198+ line="282">Computes the dot product of the two given vectors.</doc>
10199+ <source-position filename="include/graphene-vec2.h" line="84"/>
10200+ <return-value transfer-ownership="none">
10201+ <doc xml:space="preserve"
10202+ filename="src/graphene-vectors.c"
10203+ line="289">the dot product of the vectors</doc>
10204+ <type name="gfloat" c:type="float"/>
10205+ </return-value>
10206+ <parameters>
10207+ <instance-parameter name="a" transfer-ownership="none">
10208+ <doc xml:space="preserve"
10209+ filename="src/graphene-vectors.c"
10210+ line="284">a #graphene_vec2_t</doc>
10211+ <type name="Vec2" c:type="const graphene_vec2_t*"/>
10212+ </instance-parameter>
10213+ <parameter name="b" transfer-ownership="none">
10214+ <doc xml:space="preserve"
10215+ filename="src/graphene-vectors.c"
10216+ line="285">a #graphene_vec2_t</doc>
10217+ <type name="Vec2" c:type="const graphene_vec2_t*"/>
10218+ </parameter>
10219+ </parameters>
10220+ </method>
10221+ <method name="equal" c:identifier="graphene_vec2_equal" version="1.2">
10222+ <doc xml:space="preserve"
10223+ filename="src/graphene-vectors.c"
10224+ line="421">Checks whether the two given #graphene_vec2_t are equal.</doc>
10225+ <source-position filename="include/graphene-vec2.h" line="103"/>
10226+ <return-value transfer-ownership="none">
10227+ <doc xml:space="preserve"
10228+ filename="src/graphene-vectors.c"
10229+ line="428">`true` if the two vectors are equal, and false otherwise</doc>
10230+ <type name="gboolean" c:type="_Bool"/>
10231+ </return-value>
10232+ <parameters>
10233+ <instance-parameter name="v1" transfer-ownership="none">
10234+ <doc xml:space="preserve"
10235+ filename="src/graphene-vectors.c"
10236+ line="423">a #graphene_vec2_t</doc>
10237+ <type name="Vec2" c:type="const graphene_vec2_t*"/>
10238+ </instance-parameter>
10239+ <parameter name="v2" transfer-ownership="none">
10240+ <doc xml:space="preserve"
10241+ filename="src/graphene-vectors.c"
10242+ line="424">a #graphene_vec2_t</doc>
10243+ <type name="Vec2" c:type="const graphene_vec2_t*"/>
10244+ </parameter>
10245+ </parameters>
10246+ </method>
10247+ <method name="free" c:identifier="graphene_vec2_free" version="1.0">
10248+ <doc xml:space="preserve"
10249+ filename="src/graphene-vectors.c"
10250+ line="76">Frees the resources allocated by @v</doc>
10251+ <source-position filename="include/graphene-vec2.h" line="53"/>
10252+ <return-value transfer-ownership="none">
10253+ <type name="none" c:type="void"/>
10254+ </return-value>
10255+ <parameters>
10256+ <instance-parameter name="v" transfer-ownership="none">
10257+ <doc xml:space="preserve"
10258+ filename="src/graphene-vectors.c"
10259+ line="78">a #graphene_vec2_t</doc>
10260+ <type name="Vec2" c:type="graphene_vec2_t*"/>
10261+ </instance-parameter>
10262+ </parameters>
10263+ </method>
10264+ <method name="get_x" c:identifier="graphene_vec2_get_x" version="1.0">
10265+ <doc xml:space="preserve"
10266+ filename="src/graphene-vectors.c"
10267+ line="155">Retrieves the X component of the #graphene_vec2_t.</doc>
10268+ <source-position filename="include/graphene-vec2.h" line="121"/>
10269+ <return-value transfer-ownership="none">
10270+ <doc xml:space="preserve"
10271+ filename="src/graphene-vectors.c"
10272+ line="161">the value of the X component</doc>
10273+ <type name="gfloat" c:type="float"/>
10274+ </return-value>
10275+ <parameters>
10276+ <instance-parameter name="v" transfer-ownership="none">
10277+ <doc xml:space="preserve"
10278+ filename="src/graphene-vectors.c"
10279+ line="157">a #graphene_vec2_t</doc>
10280+ <type name="Vec2" c:type="const graphene_vec2_t*"/>
10281+ </instance-parameter>
10282+ </parameters>
10283+ </method>
10284+ <method name="get_y" c:identifier="graphene_vec2_get_y" version="1.0">
10285+ <doc xml:space="preserve"
10286+ filename="src/graphene-vectors.c"
10287+ line="171">Retrieves the Y component of the #graphene_vec2_t.</doc>
10288+ <source-position filename="include/graphene-vec2.h" line="123"/>
10289+ <return-value transfer-ownership="none">
10290+ <doc xml:space="preserve"
10291+ filename="src/graphene-vectors.c"
10292+ line="177">the value of the Y component</doc>
10293+ <type name="gfloat" c:type="float"/>
10294+ </return-value>
10295+ <parameters>
10296+ <instance-parameter name="v" transfer-ownership="none">
10297+ <doc xml:space="preserve"
10298+ filename="src/graphene-vectors.c"
10299+ line="173">a #graphene_vec2_t</doc>
10300+ <type name="Vec2" c:type="const graphene_vec2_t*"/>
10301+ </instance-parameter>
10302+ </parameters>
10303+ </method>
10304+ <method name="init" c:identifier="graphene_vec2_init" version="1.0">
10305+ <doc xml:space="preserve"
10306+ filename="src/graphene-vectors.c"
10307+ line="90">Initializes a #graphene_vec2_t using the given values.
10308+
10309+This function can be called multiple times.</doc>
10310+ <source-position filename="include/graphene-vec2.h" line="55"/>
10311+ <return-value transfer-ownership="none">
10312+ <doc xml:space="preserve"
10313+ filename="src/graphene-vectors.c"
10314+ line="100">the initialized vector</doc>
10315+ <type name="Vec2" c:type="graphene_vec2_t*"/>
10316+ </return-value>
10317+ <parameters>
10318+ <instance-parameter name="v" transfer-ownership="none">
10319+ <doc xml:space="preserve"
10320+ filename="src/graphene-vectors.c"
10321+ line="92">a #graphene_vec2_t</doc>
10322+ <type name="Vec2" c:type="graphene_vec2_t*"/>
10323+ </instance-parameter>
10324+ <parameter name="x" transfer-ownership="none">
10325+ <doc xml:space="preserve"
10326+ filename="src/graphene-vectors.c"
10327+ line="93">the X field of the vector</doc>
10328+ <type name="gfloat" c:type="float"/>
10329+ </parameter>
10330+ <parameter name="y" transfer-ownership="none">
10331+ <doc xml:space="preserve"
10332+ filename="src/graphene-vectors.c"
10333+ line="94">the Y field of the vector</doc>
10334+ <type name="gfloat" c:type="float"/>
10335+ </parameter>
10336+ </parameters>
10337+ </method>
10338+ <method name="init_from_float"
10339+ c:identifier="graphene_vec2_init_from_float"
10340+ version="1.0">
10341+ <doc xml:space="preserve"
10342+ filename="src/graphene-vectors.c"
10343+ line="134">Initializes @v with the contents of the given array.</doc>
10344+ <source-position filename="include/graphene-vec2.h" line="62"/>
10345+ <return-value transfer-ownership="none">
10346+ <doc xml:space="preserve"
10347+ filename="src/graphene-vectors.c"
10348+ line="142">the initialized vector</doc>
10349+ <type name="Vec2" c:type="graphene_vec2_t*"/>
10350+ </return-value>
10351+ <parameters>
10352+ <instance-parameter name="v" transfer-ownership="none">
10353+ <doc xml:space="preserve"
10354+ filename="src/graphene-vectors.c"
10355+ line="136">a #graphene_vec2_t</doc>
10356+ <type name="Vec2" c:type="graphene_vec2_t*"/>
10357+ </instance-parameter>
10358+ <parameter name="src" transfer-ownership="none">
10359+ <doc xml:space="preserve"
10360+ filename="src/graphene-vectors.c"
10361+ line="137">an array of floating point values
10362+ with at least two elements</doc>
10363+ <array zero-terminated="0" c:type="const float*" fixed-size="2">
10364+ <type name="gfloat" c:type="float"/>
10365+ </array>
10366+ </parameter>
10367+ </parameters>
10368+ </method>
10369+ <method name="init_from_vec2"
10370+ c:identifier="graphene_vec2_init_from_vec2"
10371+ version="1.0">
10372+ <doc xml:space="preserve"
10373+ filename="src/graphene-vectors.c"
10374+ line="114">Copies the contents of @src into @v.</doc>
10375+ <source-position filename="include/graphene-vec2.h" line="59"/>
10376+ <return-value transfer-ownership="none">
10377+ <doc xml:space="preserve"
10378+ filename="src/graphene-vectors.c"
10379+ line="121">the initialized vector</doc>
10380+ <type name="Vec2" c:type="graphene_vec2_t*"/>
10381+ </return-value>
10382+ <parameters>
10383+ <instance-parameter name="v" transfer-ownership="none">
10384+ <doc xml:space="preserve"
10385+ filename="src/graphene-vectors.c"
10386+ line="116">a #graphene_vec2_t</doc>
10387+ <type name="Vec2" c:type="graphene_vec2_t*"/>
10388+ </instance-parameter>
10389+ <parameter name="src" transfer-ownership="none">
10390+ <doc xml:space="preserve"
10391+ filename="src/graphene-vectors.c"
10392+ line="117">a #graphene_vec2_t</doc>
10393+ <type name="Vec2" c:type="const graphene_vec2_t*"/>
10394+ </parameter>
10395+ </parameters>
10396+ </method>
10397+ <method name="interpolate"
10398+ c:identifier="graphene_vec2_interpolate"
10399+ version="1.10">
10400+ <doc xml:space="preserve"
10401+ filename="src/graphene-vectors.c"
10402+ line="463">Linearly interpolates @v1 and @v2 using the given @factor.</doc>
10403+ <source-position filename="include/graphene-vec2.h" line="115"/>
10404+ <return-value transfer-ownership="none">
10405+ <type name="none" c:type="void"/>
10406+ </return-value>
10407+ <parameters>
10408+ <instance-parameter name="v1" transfer-ownership="none">
10409+ <doc xml:space="preserve"
10410+ filename="src/graphene-vectors.c"
10411+ line="465">a #graphene_vec2_t</doc>
10412+ <type name="Vec2" c:type="const graphene_vec2_t*"/>
10413+ </instance-parameter>
10414+ <parameter name="v2" transfer-ownership="none">
10415+ <doc xml:space="preserve"
10416+ filename="src/graphene-vectors.c"
10417+ line="466">a #graphene_vec2_t</doc>
10418+ <type name="Vec2" c:type="const graphene_vec2_t*"/>
10419+ </parameter>
10420+ <parameter name="factor" transfer-ownership="none">
10421+ <doc xml:space="preserve"
10422+ filename="src/graphene-vectors.c"
10423+ line="467">the interpolation factor</doc>
10424+ <type name="gdouble" c:type="double"/>
10425+ </parameter>
10426+ <parameter name="res"
10427+ direction="out"
10428+ caller-allocates="1"
10429+ transfer-ownership="none">
10430+ <doc xml:space="preserve"
10431+ filename="src/graphene-vectors.c"
10432+ line="468">the interpolated vector</doc>
10433+ <type name="Vec2" c:type="graphene_vec2_t*"/>
10434+ </parameter>
10435+ </parameters>
10436+ </method>
10437+ <method name="length" c:identifier="graphene_vec2_length" version="1.0">
10438+ <doc xml:space="preserve"
10439+ filename="src/graphene-vectors.c"
10440+ line="300">Computes the length of the given vector.</doc>
10441+ <source-position filename="include/graphene-vec2.h" line="87"/>
10442+ <return-value transfer-ownership="none">
10443+ <doc xml:space="preserve"
10444+ filename="src/graphene-vectors.c"
10445+ line="306">the length of the vector</doc>
10446+ <type name="gfloat" c:type="float"/>
10447+ </return-value>
10448+ <parameters>
10449+ <instance-parameter name="v" transfer-ownership="none">
10450+ <doc xml:space="preserve"
10451+ filename="src/graphene-vectors.c"
10452+ line="302">a #graphene_vec2_t</doc>
10453+ <type name="Vec2" c:type="const graphene_vec2_t*"/>
10454+ </instance-parameter>
10455+ </parameters>
10456+ </method>
10457+ <method name="max" c:identifier="graphene_vec2_max" version="1.0">
10458+ <doc xml:space="preserve"
10459+ filename="src/graphene-vectors.c"
10460+ line="355">Compares the two given vectors and places the maximum
10461+values of each component into @res.</doc>
10462+ <source-position filename="include/graphene-vec2.h" line="111"/>
10463+ <return-value transfer-ownership="none">
10464+ <type name="none" c:type="void"/>
10465+ </return-value>
10466+ <parameters>
10467+ <instance-parameter name="a" transfer-ownership="none">
10468+ <doc xml:space="preserve"
10469+ filename="src/graphene-vectors.c"
10470+ line="357">a #graphene_vec2_t</doc>
10471+ <type name="Vec2" c:type="const graphene_vec2_t*"/>
10472+ </instance-parameter>
10473+ <parameter name="b" transfer-ownership="none">
10474+ <doc xml:space="preserve"
10475+ filename="src/graphene-vectors.c"
10476+ line="358">a #graphene_vec2_t</doc>
10477+ <type name="Vec2" c:type="const graphene_vec2_t*"/>
10478+ </parameter>
10479+ <parameter name="res"
10480+ direction="out"
10481+ caller-allocates="1"
10482+ transfer-ownership="none">
10483+ <doc xml:space="preserve"
10484+ filename="src/graphene-vectors.c"
10485+ line="359">the resulting vector</doc>
10486+ <type name="Vec2" c:type="graphene_vec2_t*"/>
10487+ </parameter>
10488+ </parameters>
10489+ </method>
10490+ <method name="min" c:identifier="graphene_vec2_min" version="1.0">
10491+ <doc xml:space="preserve"
10492+ filename="src/graphene-vectors.c"
10493+ line="336">Compares the two given vectors and places the minimum
10494+values of each component into @res.</doc>
10495+ <source-position filename="include/graphene-vec2.h" line="107"/>
10496+ <return-value transfer-ownership="none">
10497+ <type name="none" c:type="void"/>
10498+ </return-value>
10499+ <parameters>
10500+ <instance-parameter name="a" transfer-ownership="none">
10501+ <doc xml:space="preserve"
10502+ filename="src/graphene-vectors.c"
10503+ line="338">a #graphene_vec2_t</doc>
10504+ <type name="Vec2" c:type="const graphene_vec2_t*"/>
10505+ </instance-parameter>
10506+ <parameter name="b" transfer-ownership="none">
10507+ <doc xml:space="preserve"
10508+ filename="src/graphene-vectors.c"
10509+ line="339">a #graphene_vec2_t</doc>
10510+ <type name="Vec2" c:type="const graphene_vec2_t*"/>
10511+ </parameter>
10512+ <parameter name="res"
10513+ direction="out"
10514+ caller-allocates="1"
10515+ transfer-ownership="none">
10516+ <doc xml:space="preserve"
10517+ filename="src/graphene-vectors.c"
10518+ line="340">the resulting vector</doc>
10519+ <type name="Vec2" c:type="graphene_vec2_t*"/>
10520+ </parameter>
10521+ </parameters>
10522+ </method>
10523+ <method name="multiply"
10524+ c:identifier="graphene_vec2_multiply"
10525+ version="1.0">
10526+ <doc xml:space="preserve"
10527+ filename="src/graphene-vectors.c"
10528+ line="243">Multiplies each component of the two passed vectors and places
10529+each result into the components of @res.</doc>
10530+ <source-position filename="include/graphene-vec2.h" line="76"/>
10531+ <return-value transfer-ownership="none">
10532+ <type name="none" c:type="void"/>
10533+ </return-value>
10534+ <parameters>
10535+ <instance-parameter name="a" transfer-ownership="none">
10536+ <doc xml:space="preserve"
10537+ filename="src/graphene-vectors.c"
10538+ line="245">a #graphene_vec2_t</doc>
10539+ <type name="Vec2" c:type="const graphene_vec2_t*"/>
10540+ </instance-parameter>
10541+ <parameter name="b" transfer-ownership="none">
10542+ <doc xml:space="preserve"
10543+ filename="src/graphene-vectors.c"
10544+ line="246">a #graphene_vec2_t</doc>
10545+ <type name="Vec2" c:type="const graphene_vec2_t*"/>
10546+ </parameter>
10547+ <parameter name="res"
10548+ direction="out"
10549+ caller-allocates="1"
10550+ transfer-ownership="none">
10551+ <doc xml:space="preserve"
10552+ filename="src/graphene-vectors.c"
10553+ line="247">return location for the result</doc>
10554+ <type name="Vec2" c:type="graphene_vec2_t*"/>
10555+ </parameter>
10556+ </parameters>
10557+ </method>
10558+ <method name="near" c:identifier="graphene_vec2_near" version="1.2">
10559+ <doc xml:space="preserve"
10560+ filename="src/graphene-vectors.c"
10561+ line="439">Compares the two given #graphene_vec2_t vectors and checks
10562+whether their values are within the given @epsilon.</doc>
10563+ <source-position filename="include/graphene-vec2.h" line="99"/>
10564+ <return-value transfer-ownership="none">
10565+ <doc xml:space="preserve"
10566+ filename="src/graphene-vectors.c"
10567+ line="448">`true` if the two vectors are near each other</doc>
10568+ <type name="gboolean" c:type="_Bool"/>
10569+ </return-value>
10570+ <parameters>
10571+ <instance-parameter name="v1" transfer-ownership="none">
10572+ <doc xml:space="preserve"
10573+ filename="src/graphene-vectors.c"
10574+ line="441">a #graphene_vec2_t</doc>
10575+ <type name="Vec2" c:type="const graphene_vec2_t*"/>
10576+ </instance-parameter>
10577+ <parameter name="v2" transfer-ownership="none">
10578+ <doc xml:space="preserve"
10579+ filename="src/graphene-vectors.c"
10580+ line="442">a #graphene_vec2_t</doc>
10581+ <type name="Vec2" c:type="const graphene_vec2_t*"/>
10582+ </parameter>
10583+ <parameter name="epsilon" transfer-ownership="none">
10584+ <doc xml:space="preserve"
10585+ filename="src/graphene-vectors.c"
10586+ line="443">the threshold between the two vectors</doc>
10587+ <type name="gfloat" c:type="float"/>
10588+ </parameter>
10589+ </parameters>
10590+ </method>
10591+ <method name="negate" c:identifier="graphene_vec2_negate" version="1.2">
10592+ <doc xml:space="preserve"
10593+ filename="src/graphene-vectors.c"
10594+ line="392">Negates the given #graphene_vec2_t.</doc>
10595+ <source-position filename="include/graphene-vec2.h" line="96"/>
10596+ <return-value transfer-ownership="none">
10597+ <type name="none" c:type="void"/>
10598+ </return-value>
10599+ <parameters>
10600+ <instance-parameter name="v" transfer-ownership="none">
10601+ <doc xml:space="preserve"
10602+ filename="src/graphene-vectors.c"
10603+ line="394">a #graphene_vec2_t</doc>
10604+ <type name="Vec2" c:type="const graphene_vec2_t*"/>
10605+ </instance-parameter>
10606+ <parameter name="res"
10607+ direction="out"
10608+ caller-allocates="1"
10609+ transfer-ownership="none">
10610+ <doc xml:space="preserve"
10611+ filename="src/graphene-vectors.c"
10612+ line="395">return location for the result vector</doc>
10613+ <type name="Vec2" c:type="graphene_vec2_t*"/>
10614+ </parameter>
10615+ </parameters>
10616+ </method>
10617+ <method name="normalize"
10618+ c:identifier="graphene_vec2_normalize"
10619+ version="1.0">
10620+ <doc xml:space="preserve"
10621+ filename="src/graphene-vectors.c"
10622+ line="316">Computes the normalized vector for the given vector @v.</doc>
10623+ <source-position filename="include/graphene-vec2.h" line="89"/>
10624+ <return-value transfer-ownership="none">
10625+ <type name="none" c:type="void"/>
10626+ </return-value>
10627+ <parameters>
10628+ <instance-parameter name="v" transfer-ownership="none">
10629+ <doc xml:space="preserve"
10630+ filename="src/graphene-vectors.c"
10631+ line="318">a #graphene_vec2_t</doc>
10632+ <type name="Vec2" c:type="const graphene_vec2_t*"/>
10633+ </instance-parameter>
10634+ <parameter name="res"
10635+ direction="out"
10636+ caller-allocates="1"
10637+ transfer-ownership="none">
10638+ <doc xml:space="preserve"
10639+ filename="src/graphene-vectors.c"
10640+ line="319">return location for the
10641+ normalized vector</doc>
10642+ <type name="Vec2" c:type="graphene_vec2_t*"/>
10643+ </parameter>
10644+ </parameters>
10645+ </method>
10646+ <method name="scale" c:identifier="graphene_vec2_scale" version="1.2">
10647+ <doc xml:space="preserve"
10648+ filename="src/graphene-vectors.c"
10649+ line="374">Multiplies all components of the given vector with the given scalar @factor.</doc>
10650+ <source-position filename="include/graphene-vec2.h" line="92"/>
10651+ <return-value transfer-ownership="none">
10652+ <type name="none" c:type="void"/>
10653+ </return-value>
10654+ <parameters>
10655+ <instance-parameter name="v" transfer-ownership="none">
10656+ <doc xml:space="preserve"
10657+ filename="src/graphene-vectors.c"
10658+ line="376">a #graphene_vec2_t</doc>
10659+ <type name="Vec2" c:type="const graphene_vec2_t*"/>
10660+ </instance-parameter>
10661+ <parameter name="factor" transfer-ownership="none">
10662+ <doc xml:space="preserve"
10663+ filename="src/graphene-vectors.c"
10664+ line="377">the scalar factor</doc>
10665+ <type name="gfloat" c:type="float"/>
10666+ </parameter>
10667+ <parameter name="res"
10668+ direction="out"
10669+ caller-allocates="1"
10670+ transfer-ownership="none">
10671+ <doc xml:space="preserve"
10672+ filename="src/graphene-vectors.c"
10673+ line="378">return location for the result vector</doc>
10674+ <type name="Vec2" c:type="graphene_vec2_t*"/>
10675+ </parameter>
10676+ </parameters>
10677+ </method>
10678+ <method name="subtract"
10679+ c:identifier="graphene_vec2_subtract"
10680+ version="1.0">
10681+ <doc xml:space="preserve"
10682+ filename="src/graphene-vectors.c"
10683+ line="223">Subtracts from each component of the first operand @a the
10684+corresponding component of the second operand @b and places
10685+each result into the components of @res.</doc>
10686+ <source-position filename="include/graphene-vec2.h" line="72"/>
10687+ <return-value transfer-ownership="none">
10688+ <type name="none" c:type="void"/>
10689+ </return-value>
10690+ <parameters>
10691+ <instance-parameter name="a" transfer-ownership="none">
10692+ <doc xml:space="preserve"
10693+ filename="src/graphene-vectors.c"
10694+ line="225">a #graphene_vec2_t</doc>
10695+ <type name="Vec2" c:type="const graphene_vec2_t*"/>
10696+ </instance-parameter>
10697+ <parameter name="b" transfer-ownership="none">
10698+ <doc xml:space="preserve"
10699+ filename="src/graphene-vectors.c"
10700+ line="226">a #graphene_vec2_t</doc>
10701+ <type name="Vec2" c:type="const graphene_vec2_t*"/>
10702+ </parameter>
10703+ <parameter name="res"
10704+ direction="out"
10705+ caller-allocates="1"
10706+ transfer-ownership="none">
10707+ <doc xml:space="preserve"
10708+ filename="src/graphene-vectors.c"
10709+ line="227">return location for the result</doc>
10710+ <type name="Vec2" c:type="graphene_vec2_t*"/>
10711+ </parameter>
10712+ </parameters>
10713+ </method>
10714+ <method name="to_float"
10715+ c:identifier="graphene_vec2_to_float"
10716+ version="1.0">
10717+ <doc xml:space="preserve"
10718+ filename="src/graphene-vectors.c"
10719+ line="187">Stores the components of @v into an array.</doc>
10720+ <source-position filename="include/graphene-vec2.h" line="65"/>
10721+ <return-value transfer-ownership="none">
10722+ <type name="none" c:type="void"/>
10723+ </return-value>
10724+ <parameters>
10725+ <instance-parameter name="v" transfer-ownership="none">
10726+ <doc xml:space="preserve"
10727+ filename="src/graphene-vectors.c"
10728+ line="189">a #graphene_vec2_t</doc>
10729+ <type name="Vec2" c:type="const graphene_vec2_t*"/>
10730+ </instance-parameter>
10731+ <parameter name="dest"
10732+ direction="out"
10733+ caller-allocates="1"
10734+ transfer-ownership="none">
10735+ <doc xml:space="preserve"
10736+ filename="src/graphene-vectors.c"
10737+ line="190">return location
10738+ for an array of floating point values with at least 2 elements</doc>
10739+ <array zero-terminated="0" c:type="float*" fixed-size="2">
10740+ <type name="gfloat" c:type="float"/>
10741+ </array>
10742+ </parameter>
10743+ </parameters>
10744+ </method>
10745+ <function name="one" c:identifier="graphene_vec2_one" version="1.0">
10746+ <doc xml:space="preserve"
10747+ filename="src/graphene-vectors.c"
10748+ line="576">Retrieves a constant vector with (1, 1) components.</doc>
10749+ <source-position filename="include/graphene-vec2.h" line="128"/>
10750+ <return-value transfer-ownership="none">
10751+ <doc xml:space="preserve"
10752+ filename="src/graphene-vectors.c"
10753+ line="581">the one vector</doc>
10754+ <type name="Vec2" c:type="const graphene_vec2_t*"/>
10755+ </return-value>
10756+ </function>
10757+ <function name="x_axis"
10758+ c:identifier="graphene_vec2_x_axis"
10759+ version="1.0">
10760+ <doc xml:space="preserve"
10761+ filename="src/graphene-vectors.c"
10762+ line="593">Retrieves a constant vector with (1, 0) components.</doc>
10763+ <source-position filename="include/graphene-vec2.h" line="130"/>
10764+ <return-value transfer-ownership="none">
10765+ <doc xml:space="preserve"
10766+ filename="src/graphene-vectors.c"
10767+ line="598">the X axis vector</doc>
10768+ <type name="Vec2" c:type="const graphene_vec2_t*"/>
10769+ </return-value>
10770+ </function>
10771+ <function name="y_axis"
10772+ c:identifier="graphene_vec2_y_axis"
10773+ version="1.0">
10774+ <doc xml:space="preserve"
10775+ filename="src/graphene-vectors.c"
10776+ line="610">Retrieves a constant vector with (0, 1) components.</doc>
10777+ <source-position filename="include/graphene-vec2.h" line="132"/>
10778+ <return-value transfer-ownership="none">
10779+ <doc xml:space="preserve"
10780+ filename="src/graphene-vectors.c"
10781+ line="615">the Y axis vector</doc>
10782+ <type name="Vec2" c:type="const graphene_vec2_t*"/>
10783+ </return-value>
10784+ </function>
10785+ <function name="zero" c:identifier="graphene_vec2_zero" version="1.0">
10786+ <doc xml:space="preserve"
10787+ filename="src/graphene-vectors.c"
10788+ line="559">Retrieves a constant vector with (0, 0) components.</doc>
10789+ <source-position filename="include/graphene-vec2.h" line="126"/>
10790+ <return-value transfer-ownership="none">
10791+ <doc xml:space="preserve"
10792+ filename="src/graphene-vectors.c"
10793+ line="564">the zero vector</doc>
10794+ <type name="Vec2" c:type="const graphene_vec2_t*"/>
10795+ </return-value>
10796+ </function>
10797+ </record>
10798+ <record name="Vec3"
10799+ c:type="graphene_vec3_t"
10800+ glib:type-name="GrapheneVec3"
10801+ glib:get-type="graphene_vec3_get_type"
10802+ c:symbol-prefix="vec3">
10803+ <doc xml:space="preserve"
10804+ filename="include/graphene-vec3.h"
10805+ line="36">A structure capable of holding a vector with three dimensions: x, y, and z.
10806+
10807+The contents of the #graphene_vec3_t structure are private and should
10808+never be accessed directly.</doc>
10809+ <source-position filename="include/graphene-vec3.h" line="48"/>
10810+ <field name="value" readable="0" private="1">
10811+ <type name="Simd4F" c:type="graphene_simd4f_t"/>
10812+ </field>
10813+ <constructor name="alloc"
10814+ c:identifier="graphene_vec3_alloc"
10815+ version="1.0">
10816+ <doc xml:space="preserve"
10817+ filename="src/graphene-vectors.c"
10818+ line="631">Allocates a new #graphene_vec3_t structure.
10819+
10820+The contents of the returned structure are undefined.
10821+
10822+Use graphene_vec3_init() to initialize the vector.</doc>
10823+ <source-position filename="include/graphene-vec3.h" line="51"/>
10824+ <return-value transfer-ownership="full">
10825+ <doc xml:space="preserve"
10826+ filename="src/graphene-vectors.c"
10827+ line="640">the newly allocated #graphene_vec3_t
10828+ structure. Use graphene_vec3_free() to free the resources allocated
10829+ by this function.</doc>
10830+ <type name="Vec3" c:type="graphene_vec3_t*"/>
10831+ </return-value>
10832+ </constructor>
10833+ <method name="add" c:identifier="graphene_vec3_add" version="1.0">
10834+ <doc xml:space="preserve"
10835+ filename="src/graphene-vectors.c"
10836+ line="799">Adds each component of the two given vectors.</doc>
10837+ <source-position filename="include/graphene-vec3.h" line="69"/>
10838+ <return-value transfer-ownership="none">
10839+ <type name="none" c:type="void"/>
10840+ </return-value>
10841+ <parameters>
10842+ <instance-parameter name="a" transfer-ownership="none">
10843+ <doc xml:space="preserve"
10844+ filename="src/graphene-vectors.c"
10845+ line="801">a #graphene_vec3_t</doc>
10846+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
10847+ </instance-parameter>
10848+ <parameter name="b" transfer-ownership="none">
10849+ <doc xml:space="preserve"
10850+ filename="src/graphene-vectors.c"
10851+ line="802">a #graphene_vec3_t</doc>
10852+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
10853+ </parameter>
10854+ <parameter name="res"
10855+ direction="out"
10856+ caller-allocates="1"
10857+ transfer-ownership="none">
10858+ <doc xml:space="preserve"
10859+ filename="src/graphene-vectors.c"
10860+ line="803">return location for the resulting vector</doc>
10861+ <type name="Vec3" c:type="graphene_vec3_t*"/>
10862+ </parameter>
10863+ </parameters>
10864+ </method>
10865+ <method name="cross" c:identifier="graphene_vec3_cross" version="1.0">
10866+ <doc xml:space="preserve"
10867+ filename="src/graphene-vectors.c"
10868+ line="875">Computes the cross product of the two given vectors.</doc>
10869+ <source-position filename="include/graphene-vec3.h" line="85"/>
10870+ <return-value transfer-ownership="none">
10871+ <type name="none" c:type="void"/>
10872+ </return-value>
10873+ <parameters>
10874+ <instance-parameter name="a" transfer-ownership="none">
10875+ <doc xml:space="preserve"
10876+ filename="src/graphene-vectors.c"
10877+ line="877">a #graphene_vec3_t</doc>
10878+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
10879+ </instance-parameter>
10880+ <parameter name="b" transfer-ownership="none">
10881+ <doc xml:space="preserve"
10882+ filename="src/graphene-vectors.c"
10883+ line="878">a #graphene_vec3_t</doc>
10884+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
10885+ </parameter>
10886+ <parameter name="res"
10887+ direction="out"
10888+ caller-allocates="1"
10889+ transfer-ownership="none">
10890+ <doc xml:space="preserve"
10891+ filename="src/graphene-vectors.c"
10892+ line="879">return location for the resulting vector</doc>
10893+ <type name="Vec3" c:type="graphene_vec3_t*"/>
10894+ </parameter>
10895+ </parameters>
10896+ </method>
10897+ <method name="divide" c:identifier="graphene_vec3_divide" version="1.0">
10898+ <doc xml:space="preserve"
10899+ filename="src/graphene-vectors.c"
10900+ line="855">Divides each component of the first operand @a by the corresponding
10901+component of the second operand @b, and places the results into the
10902+vector @res.</doc>
10903+ <source-position filename="include/graphene-vec3.h" line="81"/>
10904+ <return-value transfer-ownership="none">
10905+ <type name="none" c:type="void"/>
10906+ </return-value>
10907+ <parameters>
10908+ <instance-parameter name="a" transfer-ownership="none">
10909+ <doc xml:space="preserve"
10910+ filename="src/graphene-vectors.c"
10911+ line="857">a #graphene_vec3_t</doc>
10912+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
10913+ </instance-parameter>
10914+ <parameter name="b" transfer-ownership="none">
10915+ <doc xml:space="preserve"
10916+ filename="src/graphene-vectors.c"
10917+ line="858">a #graphene_vec3_t</doc>
10918+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
10919+ </parameter>
10920+ <parameter name="res"
10921+ direction="out"
10922+ caller-allocates="1"
10923+ transfer-ownership="none">
10924+ <doc xml:space="preserve"
10925+ filename="src/graphene-vectors.c"
10926+ line="859">return location for the resulting vector</doc>
10927+ <type name="Vec3" c:type="graphene_vec3_t*"/>
10928+ </parameter>
10929+ </parameters>
10930+ </method>
10931+ <method name="dot" c:identifier="graphene_vec3_dot" version="1.0">
10932+ <doc xml:space="preserve"
10933+ filename="src/graphene-vectors.c"
10934+ line="893">Computes the dot product of the two given vectors.</doc>
10935+ <source-position filename="include/graphene-vec3.h" line="89"/>
10936+ <return-value transfer-ownership="none">
10937+ <doc xml:space="preserve"
10938+ filename="src/graphene-vectors.c"
10939+ line="900">the value of the dot product</doc>
10940+ <type name="gfloat" c:type="float"/>
10941+ </return-value>
10942+ <parameters>
10943+ <instance-parameter name="a" transfer-ownership="none">
10944+ <doc xml:space="preserve"
10945+ filename="src/graphene-vectors.c"
10946+ line="895">a #graphene_vec3_t</doc>
10947+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
10948+ </instance-parameter>
10949+ <parameter name="b" transfer-ownership="none">
10950+ <doc xml:space="preserve"
10951+ filename="src/graphene-vectors.c"
10952+ line="896">a #graphene_vec3_t</doc>
10953+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
10954+ </parameter>
10955+ </parameters>
10956+ </method>
10957+ <method name="equal" c:identifier="graphene_vec3_equal" version="1.2">
10958+ <doc xml:space="preserve"
10959+ filename="src/graphene-vectors.c"
10960+ line="1120">Checks whether the two given #graphene_vec3_t are equal.</doc>
10961+ <source-position filename="include/graphene-vec3.h" line="104"/>
10962+ <return-value transfer-ownership="none">
10963+ <doc xml:space="preserve"
10964+ filename="src/graphene-vectors.c"
10965+ line="1127">`true` if the two vectors are equal, and false otherwise</doc>
10966+ <type name="gboolean" c:type="_Bool"/>
10967+ </return-value>
10968+ <parameters>
10969+ <instance-parameter name="v1" transfer-ownership="none">
10970+ <doc xml:space="preserve"
10971+ filename="src/graphene-vectors.c"
10972+ line="1122">a #graphene_vec3_t</doc>
10973+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
10974+ </instance-parameter>
10975+ <parameter name="v2" transfer-ownership="none">
10976+ <doc xml:space="preserve"
10977+ filename="src/graphene-vectors.c"
10978+ line="1123">a #graphene_vec3_t</doc>
10979+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
10980+ </parameter>
10981+ </parameters>
10982+ </method>
10983+ <method name="free" c:identifier="graphene_vec3_free" version="1.0">
10984+ <doc xml:space="preserve"
10985+ filename="src/graphene-vectors.c"
10986+ line="652">Frees the resources allocated by @v</doc>
10987+ <source-position filename="include/graphene-vec3.h" line="53"/>
10988+ <return-value transfer-ownership="none">
10989+ <type name="none" c:type="void"/>
10990+ </return-value>
10991+ <parameters>
10992+ <instance-parameter name="v" transfer-ownership="none">
10993+ <doc xml:space="preserve"
10994+ filename="src/graphene-vectors.c"
10995+ line="654">a #graphene_vec3_t</doc>
10996+ <type name="Vec3" c:type="graphene_vec3_t*"/>
10997+ </instance-parameter>
10998+ </parameters>
10999+ </method>
11000+ <method name="get_x" c:identifier="graphene_vec3_get_x" version="1.0">
11001+ <doc xml:space="preserve"
11002+ filename="src/graphene-vectors.c"
11003+ line="734">Retrieves the first component of the given vector @v.</doc>
11004+ <source-position filename="include/graphene-vec3.h" line="125"/>
11005+ <return-value transfer-ownership="none">
11006+ <doc xml:space="preserve"
11007+ filename="src/graphene-vectors.c"
11008+ line="740">the value of the first component of the vector</doc>
11009+ <type name="gfloat" c:type="float"/>
11010+ </return-value>
11011+ <parameters>
11012+ <instance-parameter name="v" transfer-ownership="none">
11013+ <doc xml:space="preserve"
11014+ filename="src/graphene-vectors.c"
11015+ line="736">a #graphene_vec3_t</doc>
11016+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
11017+ </instance-parameter>
11018+ </parameters>
11019+ </method>
11020+ <method name="get_xy" c:identifier="graphene_vec3_get_xy" version="1.0">
11021+ <doc xml:space="preserve"
11022+ filename="src/graphene-vectors.c"
11023+ line="1002">Creates a #graphene_vec2_t that contains the first and second
11024+components of the given #graphene_vec3_t.</doc>
11025+ <source-position filename="include/graphene-vec3.h" line="132"/>
11026+ <return-value transfer-ownership="none">
11027+ <type name="none" c:type="void"/>
11028+ </return-value>
11029+ <parameters>
11030+ <instance-parameter name="v" transfer-ownership="none">
11031+ <doc xml:space="preserve"
11032+ filename="src/graphene-vectors.c"
11033+ line="1004">a #graphene_vec3_t</doc>
11034+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
11035+ </instance-parameter>
11036+ <parameter name="res"
11037+ direction="out"
11038+ caller-allocates="1"
11039+ transfer-ownership="none">
11040+ <doc xml:space="preserve"
11041+ filename="src/graphene-vectors.c"
11042+ line="1005">return location for a #graphene_vec2_t</doc>
11043+ <type name="Vec2" c:type="graphene_vec2_t*"/>
11044+ </parameter>
11045+ </parameters>
11046+ </method>
11047+ <method name="get_xy0"
11048+ c:identifier="graphene_vec3_get_xy0"
11049+ version="1.0">
11050+ <doc xml:space="preserve"
11051+ filename="src/graphene-vectors.c"
11052+ line="1019">Creates a #graphene_vec3_t that contains the first two components of
11053+the given #graphene_vec3_t, and the third component set to 0.</doc>
11054+ <source-position filename="include/graphene-vec3.h" line="135"/>
11055+ <return-value transfer-ownership="none">
11056+ <type name="none" c:type="void"/>
11057+ </return-value>
11058+ <parameters>
11059+ <instance-parameter name="v" transfer-ownership="none">
11060+ <doc xml:space="preserve"
11061+ filename="src/graphene-vectors.c"
11062+ line="1021">a #graphene_vec3_t</doc>
11063+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
11064+ </instance-parameter>
11065+ <parameter name="res"
11066+ direction="out"
11067+ caller-allocates="1"
11068+ transfer-ownership="none">
11069+ <doc xml:space="preserve"
11070+ filename="src/graphene-vectors.c"
11071+ line="1022">return location for a #graphene_vec3_t</doc>
11072+ <type name="Vec3" c:type="graphene_vec3_t*"/>
11073+ </parameter>
11074+ </parameters>
11075+ </method>
11076+ <method name="get_xyz0"
11077+ c:identifier="graphene_vec3_get_xyz0"
11078+ version="1.0">
11079+ <doc xml:space="preserve"
11080+ filename="src/graphene-vectors.c"
11081+ line="1036">Converts a #graphene_vec3_t in a #graphene_vec4_t using 0.0
11082+as the value for the fourth component of the resulting vector.</doc>
11083+ <source-position filename="include/graphene-vec3.h" line="138"/>
11084+ <return-value transfer-ownership="none">
11085+ <type name="none" c:type="void"/>
11086+ </return-value>
11087+ <parameters>
11088+ <instance-parameter name="v" transfer-ownership="none">
11089+ <doc xml:space="preserve"
11090+ filename="src/graphene-vectors.c"
11091+ line="1038">a #graphene_vec3_t</doc>
11092+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
11093+ </instance-parameter>
11094+ <parameter name="res"
11095+ direction="out"
11096+ caller-allocates="1"
11097+ transfer-ownership="none">
11098+ <doc xml:space="preserve"
11099+ filename="src/graphene-vectors.c"
11100+ line="1039">return location for the vector</doc>
11101+ <type name="Vec4" c:type="graphene_vec4_t*"/>
11102+ </parameter>
11103+ </parameters>
11104+ </method>
11105+ <method name="get_xyz1"
11106+ c:identifier="graphene_vec3_get_xyz1"
11107+ version="1.0">
11108+ <doc xml:space="preserve"
11109+ filename="src/graphene-vectors.c"
11110+ line="1053">Converts a #graphene_vec3_t in a #graphene_vec4_t using 1.0
11111+as the value for the fourth component of the resulting vector.</doc>
11112+ <source-position filename="include/graphene-vec3.h" line="141"/>
11113+ <return-value transfer-ownership="none">
11114+ <type name="none" c:type="void"/>
11115+ </return-value>
11116+ <parameters>
11117+ <instance-parameter name="v" transfer-ownership="none">
11118+ <doc xml:space="preserve"
11119+ filename="src/graphene-vectors.c"
11120+ line="1055">a #graphene_vec3_t</doc>
11121+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
11122+ </instance-parameter>
11123+ <parameter name="res"
11124+ direction="out"
11125+ caller-allocates="1"
11126+ transfer-ownership="none">
11127+ <doc xml:space="preserve"
11128+ filename="src/graphene-vectors.c"
11129+ line="1056">return location for the vector</doc>
11130+ <type name="Vec4" c:type="graphene_vec4_t*"/>
11131+ </parameter>
11132+ </parameters>
11133+ </method>
11134+ <method name="get_xyzw"
11135+ c:identifier="graphene_vec3_get_xyzw"
11136+ version="1.0">
11137+ <doc xml:space="preserve"
11138+ filename="src/graphene-vectors.c"
11139+ line="1071">Converts a #graphene_vec3_t in a #graphene_vec4_t using @w as
11140+the value of the fourth component of the resulting vector.</doc>
11141+ <source-position filename="include/graphene-vec3.h" line="144"/>
11142+ <return-value transfer-ownership="none">
11143+ <type name="none" c:type="void"/>
11144+ </return-value>
11145+ <parameters>
11146+ <instance-parameter name="v" transfer-ownership="none">
11147+ <doc xml:space="preserve"
11148+ filename="src/graphene-vectors.c"
11149+ line="1073">a #graphene_vec3_t</doc>
11150+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
11151+ </instance-parameter>
11152+ <parameter name="w" transfer-ownership="none">
11153+ <doc xml:space="preserve"
11154+ filename="src/graphene-vectors.c"
11155+ line="1074">the value of the W component</doc>
11156+ <type name="gfloat" c:type="float"/>
11157+ </parameter>
11158+ <parameter name="res"
11159+ direction="out"
11160+ caller-allocates="1"
11161+ transfer-ownership="none">
11162+ <doc xml:space="preserve"
11163+ filename="src/graphene-vectors.c"
11164+ line="1075">return location for the vector</doc>
11165+ <type name="Vec4" c:type="graphene_vec4_t*"/>
11166+ </parameter>
11167+ </parameters>
11168+ </method>
11169+ <method name="get_y" c:identifier="graphene_vec3_get_y" version="1.0">
11170+ <doc xml:space="preserve"
11171+ filename="src/graphene-vectors.c"
11172+ line="750">Retrieves the second component of the given vector @v.</doc>
11173+ <source-position filename="include/graphene-vec3.h" line="127"/>
11174+ <return-value transfer-ownership="none">
11175+ <doc xml:space="preserve"
11176+ filename="src/graphene-vectors.c"
11177+ line="756">the value of the second component of the vector</doc>
11178+ <type name="gfloat" c:type="float"/>
11179+ </return-value>
11180+ <parameters>
11181+ <instance-parameter name="v" transfer-ownership="none">
11182+ <doc xml:space="preserve"
11183+ filename="src/graphene-vectors.c"
11184+ line="752">a #graphene_vec3_t</doc>
11185+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
11186+ </instance-parameter>
11187+ </parameters>
11188+ </method>
11189+ <method name="get_z" c:identifier="graphene_vec3_get_z" version="1.0">
11190+ <doc xml:space="preserve"
11191+ filename="src/graphene-vectors.c"
11192+ line="766">Retrieves the third component of the given vector @v.</doc>
11193+ <source-position filename="include/graphene-vec3.h" line="129"/>
11194+ <return-value transfer-ownership="none">
11195+ <doc xml:space="preserve"
11196+ filename="src/graphene-vectors.c"
11197+ line="772">the value of the third component of the vector</doc>
11198+ <type name="gfloat" c:type="float"/>
11199+ </return-value>
11200+ <parameters>
11201+ <instance-parameter name="v" transfer-ownership="none">
11202+ <doc xml:space="preserve"
11203+ filename="src/graphene-vectors.c"
11204+ line="768">a #graphene_vec3_t</doc>
11205+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
11206+ </instance-parameter>
11207+ </parameters>
11208+ </method>
11209+ <method name="init" c:identifier="graphene_vec3_init" version="1.0">
11210+ <doc xml:space="preserve"
11211+ filename="src/graphene-vectors.c"
11212+ line="666">Initializes a #graphene_vec3_t using the given values.
11213+
11214+This function can be called multiple times.</doc>
11215+ <source-position filename="include/graphene-vec3.h" line="55"/>
11216+ <return-value transfer-ownership="none">
11217+ <doc xml:space="preserve"
11218+ filename="src/graphene-vectors.c"
11219+ line="677">a pointer to the initialized
11220+ vector</doc>
11221+ <type name="Vec3" c:type="graphene_vec3_t*"/>
11222+ </return-value>
11223+ <parameters>
11224+ <instance-parameter name="v" transfer-ownership="none">
11225+ <doc xml:space="preserve"
11226+ filename="src/graphene-vectors.c"
11227+ line="668">a #graphene_vec3_t</doc>
11228+ <type name="Vec3" c:type="graphene_vec3_t*"/>
11229+ </instance-parameter>
11230+ <parameter name="x" transfer-ownership="none">
11231+ <doc xml:space="preserve"
11232+ filename="src/graphene-vectors.c"
11233+ line="669">the X field of the vector</doc>
11234+ <type name="gfloat" c:type="float"/>
11235+ </parameter>
11236+ <parameter name="y" transfer-ownership="none">
11237+ <doc xml:space="preserve"
11238+ filename="src/graphene-vectors.c"
11239+ line="670">the Y field of the vector</doc>
11240+ <type name="gfloat" c:type="float"/>
11241+ </parameter>
11242+ <parameter name="z" transfer-ownership="none">
11243+ <doc xml:space="preserve"
11244+ filename="src/graphene-vectors.c"
11245+ line="671">the Z field of the vector</doc>
11246+ <type name="gfloat" c:type="float"/>
11247+ </parameter>
11248+ </parameters>
11249+ </method>
11250+ <method name="init_from_float"
11251+ c:identifier="graphene_vec3_init_from_float"
11252+ version="1.0">
11253+ <doc xml:space="preserve"
11254+ filename="src/graphene-vectors.c"
11255+ line="714">Initializes a #graphene_vec3_t with the values from an array.</doc>
11256+ <source-position filename="include/graphene-vec3.h" line="63"/>
11257+ <return-value transfer-ownership="none">
11258+ <doc xml:space="preserve"
11259+ filename="src/graphene-vectors.c"
11260+ line="721">the initialized vector</doc>
11261+ <type name="Vec3" c:type="graphene_vec3_t*"/>
11262+ </return-value>
11263+ <parameters>
11264+ <instance-parameter name="v" transfer-ownership="none">
11265+ <doc xml:space="preserve"
11266+ filename="src/graphene-vectors.c"
11267+ line="716">a #graphene_vec3_t</doc>
11268+ <type name="Vec3" c:type="graphene_vec3_t*"/>
11269+ </instance-parameter>
11270+ <parameter name="src" transfer-ownership="none">
11271+ <doc xml:space="preserve"
11272+ filename="src/graphene-vectors.c"
11273+ line="717">an array of 3 floating point values</doc>
11274+ <array zero-terminated="0" c:type="const float*" fixed-size="3">
11275+ <type name="gfloat" c:type="float"/>
11276+ </array>
11277+ </parameter>
11278+ </parameters>
11279+ </method>
11280+ <method name="init_from_vec3"
11281+ c:identifier="graphene_vec3_init_from_vec3"
11282+ version="1.0">
11283+ <doc xml:space="preserve"
11284+ filename="src/graphene-vectors.c"
11285+ line="693">Initializes a #graphene_vec3_t with the values of another
11286+#graphene_vec3_t.</doc>
11287+ <source-position filename="include/graphene-vec3.h" line="60"/>
11288+ <return-value transfer-ownership="none">
11289+ <doc xml:space="preserve"
11290+ filename="src/graphene-vectors.c"
11291+ line="701">the initialized vector</doc>
11292+ <type name="Vec3" c:type="graphene_vec3_t*"/>
11293+ </return-value>
11294+ <parameters>
11295+ <instance-parameter name="v" transfer-ownership="none">
11296+ <doc xml:space="preserve"
11297+ filename="src/graphene-vectors.c"
11298+ line="695">a #graphene_vec3_t</doc>
11299+ <type name="Vec3" c:type="graphene_vec3_t*"/>
11300+ </instance-parameter>
11301+ <parameter name="src" transfer-ownership="none">
11302+ <doc xml:space="preserve"
11303+ filename="src/graphene-vectors.c"
11304+ line="696">a #graphene_vec3_t</doc>
11305+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
11306+ </parameter>
11307+ </parameters>
11308+ </method>
11309+ <method name="interpolate"
11310+ c:identifier="graphene_vec3_interpolate"
11311+ version="1.10">
11312+ <doc xml:space="preserve"
11313+ filename="src/graphene-vectors.c"
11314+ line="1162">Linearly interpolates @v1 and @v2 using the given @factor.</doc>
11315+ <source-position filename="include/graphene-vec3.h" line="119"/>
11316+ <return-value transfer-ownership="none">
11317+ <type name="none" c:type="void"/>
11318+ </return-value>
11319+ <parameters>
11320+ <instance-parameter name="v1" transfer-ownership="none">
11321+ <doc xml:space="preserve"
11322+ filename="src/graphene-vectors.c"
11323+ line="1164">a #graphene_vec3_t</doc>
11324+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
11325+ </instance-parameter>
11326+ <parameter name="v2" transfer-ownership="none">
11327+ <doc xml:space="preserve"
11328+ filename="src/graphene-vectors.c"
11329+ line="1165">a #graphene_vec3_t</doc>
11330+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
11331+ </parameter>
11332+ <parameter name="factor" transfer-ownership="none">
11333+ <doc xml:space="preserve"
11334+ filename="src/graphene-vectors.c"
11335+ line="1166">the interpolation factor</doc>
11336+ <type name="gdouble" c:type="double"/>
11337+ </parameter>
11338+ <parameter name="res"
11339+ direction="out"
11340+ caller-allocates="1"
11341+ transfer-ownership="none">
11342+ <doc xml:space="preserve"
11343+ filename="src/graphene-vectors.c"
11344+ line="1167">the interpolated vector</doc>
11345+ <type name="Vec3" c:type="graphene_vec3_t*"/>
11346+ </parameter>
11347+ </parameters>
11348+ </method>
11349+ <method name="length" c:identifier="graphene_vec3_length" version="1.0">
11350+ <doc xml:space="preserve"
11351+ filename="src/graphene-vectors.c"
11352+ line="911">Retrieves the length of the given vector @v.</doc>
11353+ <source-position filename="include/graphene-vec3.h" line="92"/>
11354+ <return-value transfer-ownership="none">
11355+ <doc xml:space="preserve"
11356+ filename="src/graphene-vectors.c"
11357+ line="917">the value of the length of the vector</doc>
11358+ <type name="gfloat" c:type="float"/>
11359+ </return-value>
11360+ <parameters>
11361+ <instance-parameter name="v" transfer-ownership="none">
11362+ <doc xml:space="preserve"
11363+ filename="src/graphene-vectors.c"
11364+ line="913">a #graphene_vec3_t</doc>
11365+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
11366+ </instance-parameter>
11367+ </parameters>
11368+ </method>
11369+ <method name="max" c:identifier="graphene_vec3_max" version="1.0">
11370+ <doc xml:space="preserve"
11371+ filename="src/graphene-vectors.c"
11372+ line="965">Compares each component of the two given vectors and creates a
11373+vector that contains the maximum values.</doc>
11374+ <source-position filename="include/graphene-vec3.h" line="115"/>
11375+ <return-value transfer-ownership="none">
11376+ <type name="none" c:type="void"/>
11377+ </return-value>
11378+ <parameters>
11379+ <instance-parameter name="a" transfer-ownership="none">
11380+ <doc xml:space="preserve"
11381+ filename="src/graphene-vectors.c"
11382+ line="967">a #graphene_vec3_t</doc>
11383+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
11384+ </instance-parameter>
11385+ <parameter name="b" transfer-ownership="none">
11386+ <doc xml:space="preserve"
11387+ filename="src/graphene-vectors.c"
11388+ line="968">a #graphene_vec3_t</doc>
11389+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
11390+ </parameter>
11391+ <parameter name="res"
11392+ direction="out"
11393+ caller-allocates="1"
11394+ transfer-ownership="none">
11395+ <doc xml:space="preserve"
11396+ filename="src/graphene-vectors.c"
11397+ line="969">return location for the result vector</doc>
11398+ <type name="Vec3" c:type="graphene_vec3_t*"/>
11399+ </parameter>
11400+ </parameters>
11401+ </method>
11402+ <method name="min" c:identifier="graphene_vec3_min" version="1.0">
11403+ <doc xml:space="preserve"
11404+ filename="src/graphene-vectors.c"
11405+ line="946">Compares each component of the two given vectors and creates a
11406+vector that contains the minimum values.</doc>
11407+ <source-position filename="include/graphene-vec3.h" line="111"/>
11408+ <return-value transfer-ownership="none">
11409+ <type name="none" c:type="void"/>
11410+ </return-value>
11411+ <parameters>
11412+ <instance-parameter name="a" transfer-ownership="none">
11413+ <doc xml:space="preserve"
11414+ filename="src/graphene-vectors.c"
11415+ line="948">a #graphene_vec3_t</doc>
11416+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
11417+ </instance-parameter>
11418+ <parameter name="b" transfer-ownership="none">
11419+ <doc xml:space="preserve"
11420+ filename="src/graphene-vectors.c"
11421+ line="949">a #graphene_vec3_t</doc>
11422+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
11423+ </parameter>
11424+ <parameter name="res"
11425+ direction="out"
11426+ caller-allocates="1"
11427+ transfer-ownership="none">
11428+ <doc xml:space="preserve"
11429+ filename="src/graphene-vectors.c"
11430+ line="950">return location for the result vector</doc>
11431+ <type name="Vec3" c:type="graphene_vec3_t*"/>
11432+ </parameter>
11433+ </parameters>
11434+ </method>
11435+ <method name="multiply"
11436+ c:identifier="graphene_vec3_multiply"
11437+ version="1.0">
11438+ <doc xml:space="preserve"
11439+ filename="src/graphene-vectors.c"
11440+ line="837">Multiplies each component of the two given vectors.</doc>
11441+ <source-position filename="include/graphene-vec3.h" line="77"/>
11442+ <return-value transfer-ownership="none">
11443+ <type name="none" c:type="void"/>
11444+ </return-value>
11445+ <parameters>
11446+ <instance-parameter name="a" transfer-ownership="none">
11447+ <doc xml:space="preserve"
11448+ filename="src/graphene-vectors.c"
11449+ line="839">a #graphene_vec3_t</doc>
11450+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
11451+ </instance-parameter>
11452+ <parameter name="b" transfer-ownership="none">
11453+ <doc xml:space="preserve"
11454+ filename="src/graphene-vectors.c"
11455+ line="840">a #graphene_vec3_t</doc>
11456+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
11457+ </parameter>
11458+ <parameter name="res"
11459+ direction="out"
11460+ caller-allocates="1"
11461+ transfer-ownership="none">
11462+ <doc xml:space="preserve"
11463+ filename="src/graphene-vectors.c"
11464+ line="841">return location for the resulting vector</doc>
11465+ <type name="Vec3" c:type="graphene_vec3_t*"/>
11466+ </parameter>
11467+ </parameters>
11468+ </method>
11469+ <method name="near" c:identifier="graphene_vec3_near" version="1.2">
11470+ <doc xml:space="preserve"
11471+ filename="src/graphene-vectors.c"
11472+ line="1138">Compares the two given #graphene_vec3_t vectors and checks
11473+whether their values are within the given @epsilon.</doc>
11474+ <source-position filename="include/graphene-vec3.h" line="107"/>
11475+ <return-value transfer-ownership="none">
11476+ <doc xml:space="preserve"
11477+ filename="src/graphene-vectors.c"
11478+ line="1147">`true` if the two vectors are near each other</doc>
11479+ <type name="gboolean" c:type="_Bool"/>
11480+ </return-value>
11481+ <parameters>
11482+ <instance-parameter name="v1" transfer-ownership="none">
11483+ <doc xml:space="preserve"
11484+ filename="src/graphene-vectors.c"
11485+ line="1140">a #graphene_vec3_t</doc>
11486+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
11487+ </instance-parameter>
11488+ <parameter name="v2" transfer-ownership="none">
11489+ <doc xml:space="preserve"
11490+ filename="src/graphene-vectors.c"
11491+ line="1141">a #graphene_vec3_t</doc>
11492+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
11493+ </parameter>
11494+ <parameter name="epsilon" transfer-ownership="none">
11495+ <doc xml:space="preserve"
11496+ filename="src/graphene-vectors.c"
11497+ line="1142">the threshold between the two vectors</doc>
11498+ <type name="gfloat" c:type="float"/>
11499+ </parameter>
11500+ </parameters>
11501+ </method>
11502+ <method name="negate" c:identifier="graphene_vec3_negate" version="1.2">
11503+ <doc xml:space="preserve"
11504+ filename="src/graphene-vectors.c"
11505+ line="1091">Negates the given #graphene_vec3_t.</doc>
11506+ <source-position filename="include/graphene-vec3.h" line="101"/>
11507+ <return-value transfer-ownership="none">
11508+ <type name="none" c:type="void"/>
11509+ </return-value>
11510+ <parameters>
11511+ <instance-parameter name="v" transfer-ownership="none">
11512+ <doc xml:space="preserve"
11513+ filename="src/graphene-vectors.c"
11514+ line="1093">a #graphene_vec3_t</doc>
11515+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
11516+ </instance-parameter>
11517+ <parameter name="res"
11518+ direction="out"
11519+ caller-allocates="1"
11520+ transfer-ownership="none">
11521+ <doc xml:space="preserve"
11522+ filename="src/graphene-vectors.c"
11523+ line="1094">return location for the result vector</doc>
11524+ <type name="Vec3" c:type="graphene_vec3_t*"/>
11525+ </parameter>
11526+ </parameters>
11527+ </method>
11528+ <method name="normalize"
11529+ c:identifier="graphene_vec3_normalize"
11530+ version="1.0">
11531+ <doc xml:space="preserve"
11532+ filename="src/graphene-vectors.c"
11533+ line="927">Normalizes the given #graphene_vec3_t.</doc>
11534+ <source-position filename="include/graphene-vec3.h" line="94"/>
11535+ <return-value transfer-ownership="none">
11536+ <type name="none" c:type="void"/>
11537+ </return-value>
11538+ <parameters>
11539+ <instance-parameter name="v" transfer-ownership="none">
11540+ <doc xml:space="preserve"
11541+ filename="src/graphene-vectors.c"
11542+ line="929">a #graphene_vec3_t</doc>
11543+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
11544+ </instance-parameter>
11545+ <parameter name="res"
11546+ direction="out"
11547+ caller-allocates="1"
11548+ transfer-ownership="none">
11549+ <doc xml:space="preserve"
11550+ filename="src/graphene-vectors.c"
11551+ line="930">return location for the normalized vector</doc>
11552+ <type name="Vec3" c:type="graphene_vec3_t*"/>
11553+ </parameter>
11554+ </parameters>
11555+ </method>
11556+ <method name="scale" c:identifier="graphene_vec3_scale" version="1.2">
11557+ <doc xml:space="preserve"
11558+ filename="src/graphene-vectors.c"
11559+ line="984">Multiplies all components of the given vector with the given scalar @factor.</doc>
11560+ <source-position filename="include/graphene-vec3.h" line="97"/>
11561+ <return-value transfer-ownership="none">
11562+ <type name="none" c:type="void"/>
11563+ </return-value>
11564+ <parameters>
11565+ <instance-parameter name="v" transfer-ownership="none">
11566+ <doc xml:space="preserve"
11567+ filename="src/graphene-vectors.c"
11568+ line="986">a #graphene_vec3_t</doc>
11569+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
11570+ </instance-parameter>
11571+ <parameter name="factor" transfer-ownership="none">
11572+ <doc xml:space="preserve"
11573+ filename="src/graphene-vectors.c"
11574+ line="987">the scalar factor</doc>
11575+ <type name="gfloat" c:type="float"/>
11576+ </parameter>
11577+ <parameter name="res"
11578+ direction="out"
11579+ caller-allocates="1"
11580+ transfer-ownership="none">
11581+ <doc xml:space="preserve"
11582+ filename="src/graphene-vectors.c"
11583+ line="988">return location for the result vector</doc>
11584+ <type name="Vec3" c:type="graphene_vec3_t*"/>
11585+ </parameter>
11586+ </parameters>
11587+ </method>
11588+ <method name="subtract"
11589+ c:identifier="graphene_vec3_subtract"
11590+ version="1.0">
11591+ <doc xml:space="preserve"
11592+ filename="src/graphene-vectors.c"
11593+ line="817">Subtracts from each component of the first operand @a the
11594+corresponding component of the second operand @b and places
11595+each result into the components of @res.</doc>
11596+ <source-position filename="include/graphene-vec3.h" line="73"/>
11597+ <return-value transfer-ownership="none">
11598+ <type name="none" c:type="void"/>
11599+ </return-value>
11600+ <parameters>
11601+ <instance-parameter name="a" transfer-ownership="none">
11602+ <doc xml:space="preserve"
11603+ filename="src/graphene-vectors.c"
11604+ line="819">a #graphene_vec3_t</doc>
11605+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
11606+ </instance-parameter>
11607+ <parameter name="b" transfer-ownership="none">
11608+ <doc xml:space="preserve"
11609+ filename="src/graphene-vectors.c"
11610+ line="820">a #graphene_vec3_t</doc>
11611+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
11612+ </parameter>
11613+ <parameter name="res"
11614+ direction="out"
11615+ caller-allocates="1"
11616+ transfer-ownership="none">
11617+ <doc xml:space="preserve"
11618+ filename="src/graphene-vectors.c"
11619+ line="821">return location for the resulting vector</doc>
11620+ <type name="Vec3" c:type="graphene_vec3_t*"/>
11621+ </parameter>
11622+ </parameters>
11623+ </method>
11624+ <method name="to_float"
11625+ c:identifier="graphene_vec3_to_float"
11626+ version="1.0">
11627+ <doc xml:space="preserve"
11628+ filename="src/graphene-vectors.c"
11629+ line="782">Copies the components of a #graphene_vec3_t into the given array.</doc>
11630+ <source-position filename="include/graphene-vec3.h" line="66"/>
11631+ <return-value transfer-ownership="none">
11632+ <type name="none" c:type="void"/>
11633+ </return-value>
11634+ <parameters>
11635+ <instance-parameter name="v" transfer-ownership="none">
11636+ <doc xml:space="preserve"
11637+ filename="src/graphene-vectors.c"
11638+ line="784">a #graphene_vec3_t</doc>
11639+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
11640+ </instance-parameter>
11641+ <parameter name="dest"
11642+ direction="out"
11643+ caller-allocates="1"
11644+ transfer-ownership="none">
11645+ <doc xml:space="preserve"
11646+ filename="src/graphene-vectors.c"
11647+ line="785">return location for
11648+ an array of floating point values</doc>
11649+ <array zero-terminated="0" c:type="float*" fixed-size="3">
11650+ <type name="gfloat" c:type="float"/>
11651+ </array>
11652+ </parameter>
11653+ </parameters>
11654+ </method>
11655+ <function name="one" c:identifier="graphene_vec3_one" version="1.0">
11656+ <doc xml:space="preserve"
11657+ filename="src/graphene-vectors.c"
11658+ line="1278">Provides a constant pointer to a vector with three components,
11659+all sets to 1.</doc>
11660+ <source-position filename="include/graphene-vec3.h" line="151"/>
11661+ <return-value transfer-ownership="none">
11662+ <doc xml:space="preserve"
11663+ filename="src/graphene-vectors.c"
11664+ line="1284">a constant vector</doc>
11665+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
11666+ </return-value>
11667+ </function>
11668+ <function name="x_axis"
11669+ c:identifier="graphene_vec3_x_axis"
11670+ version="1.0">
11671+ <doc xml:space="preserve"
11672+ filename="src/graphene-vectors.c"
11673+ line="1296">Provides a constant pointer to a vector with three components
11674+with values set to (1, 0, 0).</doc>
11675+ <source-position filename="include/graphene-vec3.h" line="153"/>
11676+ <return-value transfer-ownership="none">
11677+ <doc xml:space="preserve"
11678+ filename="src/graphene-vectors.c"
11679+ line="1302">a constant vector</doc>
11680+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
11681+ </return-value>
11682+ </function>
11683+ <function name="y_axis"
11684+ c:identifier="graphene_vec3_y_axis"
11685+ version="1.0">
11686+ <doc xml:space="preserve"
11687+ filename="src/graphene-vectors.c"
11688+ line="1314">Provides a constant pointer to a vector with three components
11689+with values set to (0, 1, 0).</doc>
11690+ <source-position filename="include/graphene-vec3.h" line="155"/>
11691+ <return-value transfer-ownership="none">
11692+ <doc xml:space="preserve"
11693+ filename="src/graphene-vectors.c"
11694+ line="1320">a constant vector</doc>
11695+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
11696+ </return-value>
11697+ </function>
11698+ <function name="z_axis"
11699+ c:identifier="graphene_vec3_z_axis"
11700+ version="1.0">
11701+ <doc xml:space="preserve"
11702+ filename="src/graphene-vectors.c"
11703+ line="1332">Provides a constant pointer to a vector with three components
11704+with values set to (0, 0, 1).</doc>
11705+ <source-position filename="include/graphene-vec3.h" line="157"/>
11706+ <return-value transfer-ownership="none">
11707+ <doc xml:space="preserve"
11708+ filename="src/graphene-vectors.c"
11709+ line="1338">a constant vector</doc>
11710+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
11711+ </return-value>
11712+ </function>
11713+ <function name="zero" c:identifier="graphene_vec3_zero" version="1.0">
11714+ <doc xml:space="preserve"
11715+ filename="src/graphene-vectors.c"
11716+ line="1260">Provides a constant pointer to a vector with three components,
11717+all sets to 0.</doc>
11718+ <source-position filename="include/graphene-vec3.h" line="149"/>
11719+ <return-value transfer-ownership="none">
11720+ <doc xml:space="preserve"
11721+ filename="src/graphene-vectors.c"
11722+ line="1266">a constant vector</doc>
11723+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
11724+ </return-value>
11725+ </function>
11726+ </record>
11727+ <record name="Vec4"
11728+ c:type="graphene_vec4_t"
11729+ glib:type-name="GrapheneVec4"
11730+ glib:get-type="graphene_vec4_get_type"
11731+ c:symbol-prefix="vec4">
11732+ <doc xml:space="preserve"
11733+ filename="include/graphene-vec4.h"
11734+ line="34">A structure capable of holding a vector with four dimensions: x, y, z, and w.
11735+
11736+The contents of the #graphene_vec4_t structure are private and should
11737+never be accessed directly.</doc>
11738+ <source-position filename="include/graphene-vec4.h" line="46"/>
11739+ <field name="value" readable="0" private="1">
11740+ <type name="Simd4F" c:type="graphene_simd4f_t"/>
11741+ </field>
11742+ <constructor name="alloc"
11743+ c:identifier="graphene_vec4_alloc"
11744+ version="1.0">
11745+ <doc xml:space="preserve"
11746+ filename="src/graphene-vectors.c"
11747+ line="1353">Allocates a new #graphene_vec4_t structure.
11748+
11749+The contents of the returned structure are undefined.
11750+
11751+Use graphene_vec4_init() to initialize the vector.</doc>
11752+ <source-position filename="include/graphene-vec4.h" line="49"/>
11753+ <return-value transfer-ownership="full">
11754+ <doc xml:space="preserve"
11755+ filename="src/graphene-vectors.c"
11756+ line="1362">the newly allocated #graphene_vec4_t
11757+ structure. Use graphene_vec4_free() to free the resources allocated
11758+ by this function.</doc>
11759+ <type name="Vec4" c:type="graphene_vec4_t*"/>
11760+ </return-value>
11761+ </constructor>
11762+ <method name="add" c:identifier="graphene_vec4_add" version="1.0">
11763+ <doc xml:space="preserve"
11764+ filename="src/graphene-vectors.c"
11765+ line="1588">Adds each component of the two given vectors.</doc>
11766+ <source-position filename="include/graphene-vec4.h" line="77"/>
11767+ <return-value transfer-ownership="none">
11768+ <type name="none" c:type="void"/>
11769+ </return-value>
11770+ <parameters>
11771+ <instance-parameter name="a" transfer-ownership="none">
11772+ <doc xml:space="preserve"
11773+ filename="src/graphene-vectors.c"
11774+ line="1590">a #graphene_vec4_t</doc>
11775+ <type name="Vec4" c:type="const graphene_vec4_t*"/>
11776+ </instance-parameter>
11777+ <parameter name="b" transfer-ownership="none">
11778+ <doc xml:space="preserve"
11779+ filename="src/graphene-vectors.c"
11780+ line="1591">a #graphene_vec4_t</doc>
11781+ <type name="Vec4" c:type="const graphene_vec4_t*"/>
11782+ </parameter>
11783+ <parameter name="res"
11784+ direction="out"
11785+ caller-allocates="1"
11786+ transfer-ownership="none">
11787+ <doc xml:space="preserve"
11788+ filename="src/graphene-vectors.c"
11789+ line="1592">return location for the resulting vector</doc>
11790+ <type name="Vec4" c:type="graphene_vec4_t*"/>
11791+ </parameter>
11792+ </parameters>
11793+ </method>
11794+ <method name="divide" c:identifier="graphene_vec4_divide" version="1.0">
11795+ <doc xml:space="preserve"
11796+ filename="src/graphene-vectors.c"
11797+ line="1644">Divides each component of the first operand @a by the corresponding
11798+component of the second operand @b, and places the results into the
11799+vector @res.</doc>
11800+ <source-position filename="include/graphene-vec4.h" line="89"/>
11801+ <return-value transfer-ownership="none">
11802+ <type name="none" c:type="void"/>
11803+ </return-value>
11804+ <parameters>
11805+ <instance-parameter name="a" transfer-ownership="none">
11806+ <doc xml:space="preserve"
11807+ filename="src/graphene-vectors.c"
11808+ line="1646">a #graphene_vec4_t</doc>
11809+ <type name="Vec4" c:type="const graphene_vec4_t*"/>
11810+ </instance-parameter>
11811+ <parameter name="b" transfer-ownership="none">
11812+ <doc xml:space="preserve"
11813+ filename="src/graphene-vectors.c"
11814+ line="1647">a #graphene_vec4_t</doc>
11815+ <type name="Vec4" c:type="const graphene_vec4_t*"/>
11816+ </parameter>
11817+ <parameter name="res"
11818+ direction="out"
11819+ caller-allocates="1"
11820+ transfer-ownership="none">
11821+ <doc xml:space="preserve"
11822+ filename="src/graphene-vectors.c"
11823+ line="1648">return location for the resulting vector</doc>
11824+ <type name="Vec4" c:type="graphene_vec4_t*"/>
11825+ </parameter>
11826+ </parameters>
11827+ </method>
11828+ <method name="dot" c:identifier="graphene_vec4_dot" version="1.0">
11829+ <doc xml:space="preserve"
11830+ filename="src/graphene-vectors.c"
11831+ line="1664">Computes the dot product of the two given vectors.</doc>
11832+ <source-position filename="include/graphene-vec4.h" line="93"/>
11833+ <return-value transfer-ownership="none">
11834+ <doc xml:space="preserve"
11835+ filename="src/graphene-vectors.c"
11836+ line="1671">the value of the dot product</doc>
11837+ <type name="gfloat" c:type="float"/>
11838+ </return-value>
11839+ <parameters>
11840+ <instance-parameter name="a" transfer-ownership="none">
11841+ <doc xml:space="preserve"
11842+ filename="src/graphene-vectors.c"
11843+ line="1666">a #graphene_vec4_t</doc>
11844+ <type name="Vec4" c:type="const graphene_vec4_t*"/>
11845+ </instance-parameter>
11846+ <parameter name="b" transfer-ownership="none">
11847+ <doc xml:space="preserve"
11848+ filename="src/graphene-vectors.c"
11849+ line="1667">a #graphene_vec4_t</doc>
11850+ <type name="Vec4" c:type="const graphene_vec4_t*"/>
11851+ </parameter>
11852+ </parameters>
11853+ </method>
11854+ <method name="equal" c:identifier="graphene_vec4_equal" version="1.2">
11855+ <doc xml:space="preserve"
11856+ filename="src/graphene-vectors.c"
11857+ line="1837">Checks whether the two given #graphene_vec4_t are equal.</doc>
11858+ <source-position filename="include/graphene-vec4.h" line="108"/>
11859+ <return-value transfer-ownership="none">
11860+ <doc xml:space="preserve"
11861+ filename="src/graphene-vectors.c"
11862+ line="1844">`true` if the two vectors are equal, and false otherwise</doc>
11863+ <type name="gboolean" c:type="_Bool"/>
11864+ </return-value>
11865+ <parameters>
11866+ <instance-parameter name="v1" transfer-ownership="none">
11867+ <doc xml:space="preserve"
11868+ filename="src/graphene-vectors.c"
11869+ line="1839">a #graphene_vec4_t</doc>
11870+ <type name="Vec4" c:type="const graphene_vec4_t*"/>
11871+ </instance-parameter>
11872+ <parameter name="v2" transfer-ownership="none">
11873+ <doc xml:space="preserve"
11874+ filename="src/graphene-vectors.c"
11875+ line="1840">a #graphene_vec4_t</doc>
11876+ <type name="Vec4" c:type="const graphene_vec4_t*"/>
11877+ </parameter>
11878+ </parameters>
11879+ </method>
11880+ <method name="free" c:identifier="graphene_vec4_free" version="1.0">
11881+ <doc xml:space="preserve"
11882+ filename="src/graphene-vectors.c"
11883+ line="1374">Frees the resources allocated by @v</doc>
11884+ <source-position filename="include/graphene-vec4.h" line="51"/>
11885+ <return-value transfer-ownership="none">
11886+ <type name="none" c:type="void"/>
11887+ </return-value>
11888+ <parameters>
11889+ <instance-parameter name="v" transfer-ownership="none">
11890+ <doc xml:space="preserve"
11891+ filename="src/graphene-vectors.c"
11892+ line="1376">a #graphene_vec4_t</doc>
11893+ <type name="Vec4" c:type="graphene_vec4_t*"/>
11894+ </instance-parameter>
11895+ </parameters>
11896+ </method>
11897+ <method name="get_w" c:identifier="graphene_vec4_get_w" version="1.0">
11898+ <doc xml:space="preserve"
11899+ filename="src/graphene-vectors.c"
11900+ line="1554">Retrieves the value of the fourth component of the given #graphene_vec4_t.</doc>
11901+ <source-position filename="include/graphene-vec4.h" line="136"/>
11902+ <return-value transfer-ownership="none">
11903+ <doc xml:space="preserve"
11904+ filename="src/graphene-vectors.c"
11905+ line="1560">the value of the fourth component</doc>
11906+ <type name="gfloat" c:type="float"/>
11907+ </return-value>
11908+ <parameters>
11909+ <instance-parameter name="v" transfer-ownership="none">
11910+ <doc xml:space="preserve"
11911+ filename="src/graphene-vectors.c"
11912+ line="1556">a #graphene_vec4_t</doc>
11913+ <type name="Vec4" c:type="const graphene_vec4_t*"/>
11914+ </instance-parameter>
11915+ </parameters>
11916+ </method>
11917+ <method name="get_x" c:identifier="graphene_vec4_get_x" version="1.0">
11918+ <doc xml:space="preserve"
11919+ filename="src/graphene-vectors.c"
11920+ line="1506">Retrieves the value of the first component of the given #graphene_vec4_t.</doc>
11921+ <source-position filename="include/graphene-vec4.h" line="130"/>
11922+ <return-value transfer-ownership="none">
11923+ <doc xml:space="preserve"
11924+ filename="src/graphene-vectors.c"
11925+ line="1512">the value of the first component</doc>
11926+ <type name="gfloat" c:type="float"/>
11927+ </return-value>
11928+ <parameters>
11929+ <instance-parameter name="v" transfer-ownership="none">
11930+ <doc xml:space="preserve"
11931+ filename="src/graphene-vectors.c"
11932+ line="1508">a #graphene_vec4_t</doc>
11933+ <type name="Vec4" c:type="const graphene_vec4_t*"/>
11934+ </instance-parameter>
11935+ </parameters>
11936+ </method>
11937+ <method name="get_xy" c:identifier="graphene_vec4_get_xy" version="1.0">
11938+ <doc xml:space="preserve"
11939+ filename="src/graphene-vectors.c"
11940+ line="1774">Creates a #graphene_vec2_t that contains the first two components
11941+of the given #graphene_vec4_t.</doc>
11942+ <source-position filename="include/graphene-vec4.h" line="139"/>
11943+ <return-value transfer-ownership="none">
11944+ <type name="none" c:type="void"/>
11945+ </return-value>
11946+ <parameters>
11947+ <instance-parameter name="v" transfer-ownership="none">
11948+ <doc xml:space="preserve"
11949+ filename="src/graphene-vectors.c"
11950+ line="1776">a #graphene_vec4_t</doc>
11951+ <type name="Vec4" c:type="const graphene_vec4_t*"/>
11952+ </instance-parameter>
11953+ <parameter name="res"
11954+ direction="out"
11955+ caller-allocates="1"
11956+ transfer-ownership="none">
11957+ <doc xml:space="preserve"
11958+ filename="src/graphene-vectors.c"
11959+ line="1777">return location for a #graphene_vec2_t</doc>
11960+ <type name="Vec2" c:type="graphene_vec2_t*"/>
11961+ </parameter>
11962+ </parameters>
11963+ </method>
11964+ <method name="get_xyz"
11965+ c:identifier="graphene_vec4_get_xyz"
11966+ version="1.0">
11967+ <doc xml:space="preserve"
11968+ filename="src/graphene-vectors.c"
11969+ line="1791">Creates a #graphene_vec3_t that contains the first three components
11970+of the given #graphene_vec4_t.</doc>
11971+ <source-position filename="include/graphene-vec4.h" line="142"/>
11972+ <return-value transfer-ownership="none">
11973+ <type name="none" c:type="void"/>
11974+ </return-value>
11975+ <parameters>
11976+ <instance-parameter name="v" transfer-ownership="none">
11977+ <doc xml:space="preserve"
11978+ filename="src/graphene-vectors.c"
11979+ line="1793">a #graphene_vec4_t</doc>
11980+ <type name="Vec4" c:type="const graphene_vec4_t*"/>
11981+ </instance-parameter>
11982+ <parameter name="res"
11983+ direction="out"
11984+ caller-allocates="1"
11985+ transfer-ownership="none">
11986+ <doc xml:space="preserve"
11987+ filename="src/graphene-vectors.c"
11988+ line="1794">return location for a graphene_vec3_t</doc>
11989+ <type name="Vec3" c:type="graphene_vec3_t*"/>
11990+ </parameter>
11991+ </parameters>
11992+ </method>
11993+ <method name="get_y" c:identifier="graphene_vec4_get_y" version="1.0">
11994+ <doc xml:space="preserve"
11995+ filename="src/graphene-vectors.c"
11996+ line="1522">Retrieves the value of the second component of the given #graphene_vec4_t.</doc>
11997+ <source-position filename="include/graphene-vec4.h" line="132"/>
11998+ <return-value transfer-ownership="none">
11999+ <doc xml:space="preserve"
12000+ filename="src/graphene-vectors.c"
12001+ line="1528">the value of the second component</doc>
12002+ <type name="gfloat" c:type="float"/>
12003+ </return-value>
12004+ <parameters>
12005+ <instance-parameter name="v" transfer-ownership="none">
12006+ <doc xml:space="preserve"
12007+ filename="src/graphene-vectors.c"
12008+ line="1524">a #graphene_vec4_t</doc>
12009+ <type name="Vec4" c:type="const graphene_vec4_t*"/>
12010+ </instance-parameter>
12011+ </parameters>
12012+ </method>
12013+ <method name="get_z" c:identifier="graphene_vec4_get_z" version="1.0">
12014+ <doc xml:space="preserve"
12015+ filename="src/graphene-vectors.c"
12016+ line="1538">Retrieves the value of the third component of the given #graphene_vec4_t.</doc>
12017+ <source-position filename="include/graphene-vec4.h" line="134"/>
12018+ <return-value transfer-ownership="none">
12019+ <doc xml:space="preserve"
12020+ filename="src/graphene-vectors.c"
12021+ line="1544">the value of the third component</doc>
12022+ <type name="gfloat" c:type="float"/>
12023+ </return-value>
12024+ <parameters>
12025+ <instance-parameter name="v" transfer-ownership="none">
12026+ <doc xml:space="preserve"
12027+ filename="src/graphene-vectors.c"
12028+ line="1540">a #graphene_vec4_t</doc>
12029+ <type name="Vec4" c:type="const graphene_vec4_t*"/>
12030+ </instance-parameter>
12031+ </parameters>
12032+ </method>
12033+ <method name="init" c:identifier="graphene_vec4_init" version="1.0">
12034+ <doc xml:space="preserve"
12035+ filename="src/graphene-vectors.c"
12036+ line="1388">Initializes a #graphene_vec4_t using the given values.
12037+
12038+This function can be called multiple times.</doc>
12039+ <source-position filename="include/graphene-vec4.h" line="53"/>
12040+ <return-value transfer-ownership="none">
12041+ <doc xml:space="preserve"
12042+ filename="src/graphene-vectors.c"
12043+ line="1400">a pointer to the initialized
12044+ vector</doc>
12045+ <type name="Vec4" c:type="graphene_vec4_t*"/>
12046+ </return-value>
12047+ <parameters>
12048+ <instance-parameter name="v" transfer-ownership="none">
12049+ <doc xml:space="preserve"
12050+ filename="src/graphene-vectors.c"
12051+ line="1390">a #graphene_vec4_t</doc>
12052+ <type name="Vec4" c:type="graphene_vec4_t*"/>
12053+ </instance-parameter>
12054+ <parameter name="x" transfer-ownership="none">
12055+ <doc xml:space="preserve"
12056+ filename="src/graphene-vectors.c"
12057+ line="1391">the X field of the vector</doc>
12058+ <type name="gfloat" c:type="float"/>
12059+ </parameter>
12060+ <parameter name="y" transfer-ownership="none">
12061+ <doc xml:space="preserve"
12062+ filename="src/graphene-vectors.c"
12063+ line="1392">the Y field of the vector</doc>
12064+ <type name="gfloat" c:type="float"/>
12065+ </parameter>
12066+ <parameter name="z" transfer-ownership="none">
12067+ <doc xml:space="preserve"
12068+ filename="src/graphene-vectors.c"
12069+ line="1393">the Z field of the vector</doc>
12070+ <type name="gfloat" c:type="float"/>
12071+ </parameter>
12072+ <parameter name="w" transfer-ownership="none">
12073+ <doc xml:space="preserve"
12074+ filename="src/graphene-vectors.c"
12075+ line="1394">the W field of the vector</doc>
12076+ <type name="gfloat" c:type="float"/>
12077+ </parameter>
12078+ </parameters>
12079+ </method>
12080+ <method name="init_from_float"
12081+ c:identifier="graphene_vec4_init_from_float"
12082+ version="1.0">
12083+ <doc xml:space="preserve"
12084+ filename="src/graphene-vectors.c"
12085+ line="1486">Initializes a #graphene_vec4_t with the values inside the given array.</doc>
12086+ <source-position filename="include/graphene-vec4.h" line="71"/>
12087+ <return-value transfer-ownership="none">
12088+ <doc xml:space="preserve"
12089+ filename="src/graphene-vectors.c"
12090+ line="1493">the initialized vector</doc>
12091+ <type name="Vec4" c:type="graphene_vec4_t*"/>
12092+ </return-value>
12093+ <parameters>
12094+ <instance-parameter name="v" transfer-ownership="none">
12095+ <doc xml:space="preserve"
12096+ filename="src/graphene-vectors.c"
12097+ line="1488">a #graphene_vec4_t</doc>
12098+ <type name="Vec4" c:type="graphene_vec4_t*"/>
12099+ </instance-parameter>
12100+ <parameter name="src" transfer-ownership="none">
12101+ <doc xml:space="preserve"
12102+ filename="src/graphene-vectors.c"
12103+ line="1489">an array of four floating point values</doc>
12104+ <array zero-terminated="0" c:type="const float*" fixed-size="4">
12105+ <type name="gfloat" c:type="float"/>
12106+ </array>
12107+ </parameter>
12108+ </parameters>
12109+ </method>
12110+ <method name="init_from_vec2"
12111+ c:identifier="graphene_vec4_init_from_vec2"
12112+ version="1.0">
12113+ <doc xml:space="preserve"
12114+ filename="src/graphene-vectors.c"
12115+ line="1461">Initializes a #graphene_vec4_t using the components of a
12116+#graphene_vec2_t and the values of @z and @w.</doc>
12117+ <source-position filename="include/graphene-vec4.h" line="66"/>
12118+ <return-value transfer-ownership="none">
12119+ <doc xml:space="preserve"
12120+ filename="src/graphene-vectors.c"
12121+ line="1471">the initialized vector</doc>
12122+ <type name="Vec4" c:type="graphene_vec4_t*"/>
12123+ </return-value>
12124+ <parameters>
12125+ <instance-parameter name="v" transfer-ownership="none">
12126+ <doc xml:space="preserve"
12127+ filename="src/graphene-vectors.c"
12128+ line="1463">a #graphene_vec4_t</doc>
12129+ <type name="Vec4" c:type="graphene_vec4_t*"/>
12130+ </instance-parameter>
12131+ <parameter name="src" transfer-ownership="none">
12132+ <doc xml:space="preserve"
12133+ filename="src/graphene-vectors.c"
12134+ line="1464">a #graphene_vec2_t</doc>
12135+ <type name="Vec2" c:type="const graphene_vec2_t*"/>
12136+ </parameter>
12137+ <parameter name="z" transfer-ownership="none">
12138+ <doc xml:space="preserve"
12139+ filename="src/graphene-vectors.c"
12140+ line="1465">the value for the third component of @v</doc>
12141+ <type name="gfloat" c:type="float"/>
12142+ </parameter>
12143+ <parameter name="w" transfer-ownership="none">
12144+ <doc xml:space="preserve"
12145+ filename="src/graphene-vectors.c"
12146+ line="1466">the value for the fourth component of @v</doc>
12147+ <type name="gfloat" c:type="float"/>
12148+ </parameter>
12149+ </parameters>
12150+ </method>
12151+ <method name="init_from_vec3"
12152+ c:identifier="graphene_vec4_init_from_vec3"
12153+ version="1.0">
12154+ <doc xml:space="preserve"
12155+ filename="src/graphene-vectors.c"
12156+ line="1438">Initializes a #graphene_vec4_t using the components of a
12157+#graphene_vec3_t and the value of @w.</doc>
12158+ <source-position filename="include/graphene-vec4.h" line="62"/>
12159+ <return-value transfer-ownership="none">
12160+ <doc xml:space="preserve"
12161+ filename="src/graphene-vectors.c"
12162+ line="1447">the initialized vector</doc>
12163+ <type name="Vec4" c:type="graphene_vec4_t*"/>
12164+ </return-value>
12165+ <parameters>
12166+ <instance-parameter name="v" transfer-ownership="none">
12167+ <doc xml:space="preserve"
12168+ filename="src/graphene-vectors.c"
12169+ line="1440">a #graphene_vec4_t</doc>
12170+ <type name="Vec4" c:type="graphene_vec4_t*"/>
12171+ </instance-parameter>
12172+ <parameter name="src" transfer-ownership="none">
12173+ <doc xml:space="preserve"
12174+ filename="src/graphene-vectors.c"
12175+ line="1441">a #graphene_vec3_t</doc>
12176+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
12177+ </parameter>
12178+ <parameter name="w" transfer-ownership="none">
12179+ <doc xml:space="preserve"
12180+ filename="src/graphene-vectors.c"
12181+ line="1442">the value for the fourth component of @v</doc>
12182+ <type name="gfloat" c:type="float"/>
12183+ </parameter>
12184+ </parameters>
12185+ </method>
12186+ <method name="init_from_vec4"
12187+ c:identifier="graphene_vec4_init_from_vec4"
12188+ version="1.0">
12189+ <doc xml:space="preserve"
12190+ filename="src/graphene-vectors.c"
12191+ line="1417">Initializes a #graphene_vec4_t using the components of
12192+another #graphene_vec4_t.</doc>
12193+ <source-position filename="include/graphene-vec4.h" line="59"/>
12194+ <return-value transfer-ownership="none">
12195+ <doc xml:space="preserve"
12196+ filename="src/graphene-vectors.c"
12197+ line="1425">the initialized vector</doc>
12198+ <type name="Vec4" c:type="graphene_vec4_t*"/>
12199+ </return-value>
12200+ <parameters>
12201+ <instance-parameter name="v" transfer-ownership="none">
12202+ <doc xml:space="preserve"
12203+ filename="src/graphene-vectors.c"
12204+ line="1419">a #graphene_vec4_t</doc>
12205+ <type name="Vec4" c:type="graphene_vec4_t*"/>
12206+ </instance-parameter>
12207+ <parameter name="src" transfer-ownership="none">
12208+ <doc xml:space="preserve"
12209+ filename="src/graphene-vectors.c"
12210+ line="1420">a #graphene_vec4_t</doc>
12211+ <type name="Vec4" c:type="const graphene_vec4_t*"/>
12212+ </parameter>
12213+ </parameters>
12214+ </method>
12215+ <method name="interpolate"
12216+ c:identifier="graphene_vec4_interpolate"
12217+ version="1.10">
12218+ <doc xml:space="preserve"
12219+ filename="src/graphene-vectors.c"
12220+ line="1879">Linearly interpolates @v1 and @v2 using the given @factor.</doc>
12221+ <source-position filename="include/graphene-vec4.h" line="124"/>
12222+ <return-value transfer-ownership="none">
12223+ <type name="none" c:type="void"/>
12224+ </return-value>
12225+ <parameters>
12226+ <instance-parameter name="v1" transfer-ownership="none">
12227+ <doc xml:space="preserve"
12228+ filename="src/graphene-vectors.c"
12229+ line="1881">a #graphene_vec4_t</doc>
12230+ <type name="Vec4" c:type="const graphene_vec4_t*"/>
12231+ </instance-parameter>
12232+ <parameter name="v2" transfer-ownership="none">
12233+ <doc xml:space="preserve"
12234+ filename="src/graphene-vectors.c"
12235+ line="1882">a #graphene_vec4_t</doc>
12236+ <type name="Vec4" c:type="const graphene_vec4_t*"/>
12237+ </parameter>
12238+ <parameter name="factor" transfer-ownership="none">
12239+ <doc xml:space="preserve"
12240+ filename="src/graphene-vectors.c"
12241+ line="1883">the interpolation factor</doc>
12242+ <type name="gdouble" c:type="double"/>
12243+ </parameter>
12244+ <parameter name="res"
12245+ direction="out"
12246+ caller-allocates="1"
12247+ transfer-ownership="none">
12248+ <doc xml:space="preserve"
12249+ filename="src/graphene-vectors.c"
12250+ line="1884">the interpolated vector</doc>
12251+ <type name="Vec4" c:type="graphene_vec4_t*"/>
12252+ </parameter>
12253+ </parameters>
12254+ </method>
12255+ <method name="length" c:identifier="graphene_vec4_length" version="1.0">
12256+ <doc xml:space="preserve"
12257+ filename="src/graphene-vectors.c"
12258+ line="1682">Computes the length of the given #graphene_vec4_t.</doc>
12259+ <source-position filename="include/graphene-vec4.h" line="96"/>
12260+ <return-value transfer-ownership="none">
12261+ <doc xml:space="preserve"
12262+ filename="src/graphene-vectors.c"
12263+ line="1688">the length of the vector</doc>
12264+ <type name="gfloat" c:type="float"/>
12265+ </return-value>
12266+ <parameters>
12267+ <instance-parameter name="v" transfer-ownership="none">
12268+ <doc xml:space="preserve"
12269+ filename="src/graphene-vectors.c"
12270+ line="1684">a #graphene_vec4_t</doc>
12271+ <type name="Vec4" c:type="const graphene_vec4_t*"/>
12272+ </instance-parameter>
12273+ </parameters>
12274+ </method>
12275+ <method name="max" c:identifier="graphene_vec4_max" version="1.0">
12276+ <doc xml:space="preserve"
12277+ filename="src/graphene-vectors.c"
12278+ line="1737">Compares each component of the two given vectors and creates a
12279+vector that contains the maximum values.</doc>
12280+ <source-position filename="include/graphene-vec4.h" line="120"/>
12281+ <return-value transfer-ownership="none">
12282+ <type name="none" c:type="void"/>
12283+ </return-value>
12284+ <parameters>
12285+ <instance-parameter name="a" transfer-ownership="none">
12286+ <doc xml:space="preserve"
12287+ filename="src/graphene-vectors.c"
12288+ line="1739">a #graphene_vec4_t</doc>
12289+ <type name="Vec4" c:type="const graphene_vec4_t*"/>
12290+ </instance-parameter>
12291+ <parameter name="b" transfer-ownership="none">
12292+ <doc xml:space="preserve"
12293+ filename="src/graphene-vectors.c"
12294+ line="1740">a #graphene_vec4_t</doc>
12295+ <type name="Vec4" c:type="const graphene_vec4_t*"/>
12296+ </parameter>
12297+ <parameter name="res"
12298+ direction="out"
12299+ caller-allocates="1"
12300+ transfer-ownership="none">
12301+ <doc xml:space="preserve"
12302+ filename="src/graphene-vectors.c"
12303+ line="1741">return location for the result vector</doc>
12304+ <type name="Vec4" c:type="graphene_vec4_t*"/>
12305+ </parameter>
12306+ </parameters>
12307+ </method>
12308+ <method name="min" c:identifier="graphene_vec4_min" version="1.0">
12309+ <doc xml:space="preserve"
12310+ filename="src/graphene-vectors.c"
12311+ line="1718">Compares each component of the two given vectors and creates a
12312+vector that contains the minimum values.</doc>
12313+ <source-position filename="include/graphene-vec4.h" line="116"/>
12314+ <return-value transfer-ownership="none">
12315+ <type name="none" c:type="void"/>
12316+ </return-value>
12317+ <parameters>
12318+ <instance-parameter name="a" transfer-ownership="none">
12319+ <doc xml:space="preserve"
12320+ filename="src/graphene-vectors.c"
12321+ line="1720">a #graphene_vec4_t</doc>
12322+ <type name="Vec4" c:type="const graphene_vec4_t*"/>
12323+ </instance-parameter>
12324+ <parameter name="b" transfer-ownership="none">
12325+ <doc xml:space="preserve"
12326+ filename="src/graphene-vectors.c"
12327+ line="1721">a #graphene_vec4_t</doc>
12328+ <type name="Vec4" c:type="const graphene_vec4_t*"/>
12329+ </parameter>
12330+ <parameter name="res"
12331+ direction="out"
12332+ caller-allocates="1"
12333+ transfer-ownership="none">
12334+ <doc xml:space="preserve"
12335+ filename="src/graphene-vectors.c"
12336+ line="1722">return location for the result vector</doc>
12337+ <type name="Vec4" c:type="graphene_vec4_t*"/>
12338+ </parameter>
12339+ </parameters>
12340+ </method>
12341+ <method name="multiply"
12342+ c:identifier="graphene_vec4_multiply"
12343+ version="1.0">
12344+ <doc xml:space="preserve"
12345+ filename="src/graphene-vectors.c"
12346+ line="1626">Multiplies each component of the two given vectors.</doc>
12347+ <source-position filename="include/graphene-vec4.h" line="85"/>
12348+ <return-value transfer-ownership="none">
12349+ <type name="none" c:type="void"/>
12350+ </return-value>
12351+ <parameters>
12352+ <instance-parameter name="a" transfer-ownership="none">
12353+ <doc xml:space="preserve"
12354+ filename="src/graphene-vectors.c"
12355+ line="1628">a #graphene_vec4_t</doc>
12356+ <type name="Vec4" c:type="const graphene_vec4_t*"/>
12357+ </instance-parameter>
12358+ <parameter name="b" transfer-ownership="none">
12359+ <doc xml:space="preserve"
12360+ filename="src/graphene-vectors.c"
12361+ line="1629">a #graphene_vec4_t</doc>
12362+ <type name="Vec4" c:type="const graphene_vec4_t*"/>
12363+ </parameter>
12364+ <parameter name="res"
12365+ direction="out"
12366+ caller-allocates="1"
12367+ transfer-ownership="none">
12368+ <doc xml:space="preserve"
12369+ filename="src/graphene-vectors.c"
12370+ line="1630">return location for the resulting vector</doc>
12371+ <type name="Vec4" c:type="graphene_vec4_t*"/>
12372+ </parameter>
12373+ </parameters>
12374+ </method>
12375+ <method name="near" c:identifier="graphene_vec4_near" version="1.2">
12376+ <doc xml:space="preserve"
12377+ filename="src/graphene-vectors.c"
12378+ line="1855">Compares the two given #graphene_vec4_t vectors and checks
12379+whether their values are within the given @epsilon.</doc>
12380+ <source-position filename="include/graphene-vec4.h" line="111"/>
12381+ <return-value transfer-ownership="none">
12382+ <doc xml:space="preserve"
12383+ filename="src/graphene-vectors.c"
12384+ line="1864">`true` if the two vectors are near each other</doc>
12385+ <type name="gboolean" c:type="_Bool"/>
12386+ </return-value>
12387+ <parameters>
12388+ <instance-parameter name="v1" transfer-ownership="none">
12389+ <doc xml:space="preserve"
12390+ filename="src/graphene-vectors.c"
12391+ line="1857">a #graphene_vec4_t</doc>
12392+ <type name="Vec4" c:type="const graphene_vec4_t*"/>
12393+ </instance-parameter>
12394+ <parameter name="v2" transfer-ownership="none">
12395+ <doc xml:space="preserve"
12396+ filename="src/graphene-vectors.c"
12397+ line="1858">a #graphene_vec4_t</doc>
12398+ <type name="Vec4" c:type="const graphene_vec4_t*"/>
12399+ </parameter>
12400+ <parameter name="epsilon" transfer-ownership="none">
12401+ <doc xml:space="preserve"
12402+ filename="src/graphene-vectors.c"
12403+ line="1859">the threshold between the two vectors</doc>
12404+ <type name="gfloat" c:type="float"/>
12405+ </parameter>
12406+ </parameters>
12407+ </method>
12408+ <method name="negate" c:identifier="graphene_vec4_negate" version="1.2">
12409+ <doc xml:space="preserve"
12410+ filename="src/graphene-vectors.c"
12411+ line="1808">Negates the given #graphene_vec4_t.</doc>
12412+ <source-position filename="include/graphene-vec4.h" line="105"/>
12413+ <return-value transfer-ownership="none">
12414+ <type name="none" c:type="void"/>
12415+ </return-value>
12416+ <parameters>
12417+ <instance-parameter name="v" transfer-ownership="none">
12418+ <doc xml:space="preserve"
12419+ filename="src/graphene-vectors.c"
12420+ line="1810">a #graphene_vec4_t</doc>
12421+ <type name="Vec4" c:type="const graphene_vec4_t*"/>
12422+ </instance-parameter>
12423+ <parameter name="res"
12424+ direction="out"
12425+ caller-allocates="1"
12426+ transfer-ownership="none">
12427+ <doc xml:space="preserve"
12428+ filename="src/graphene-vectors.c"
12429+ line="1811">return location for the result vector</doc>
12430+ <type name="Vec4" c:type="graphene_vec4_t*"/>
12431+ </parameter>
12432+ </parameters>
12433+ </method>
12434+ <method name="normalize"
12435+ c:identifier="graphene_vec4_normalize"
12436+ version="1.0">
12437+ <doc xml:space="preserve"
12438+ filename="src/graphene-vectors.c"
12439+ line="1698">Normalizes the given #graphene_vec4_t.</doc>
12440+ <source-position filename="include/graphene-vec4.h" line="98"/>
12441+ <return-value transfer-ownership="none">
12442+ <type name="none" c:type="void"/>
12443+ </return-value>
12444+ <parameters>
12445+ <instance-parameter name="v" transfer-ownership="none">
12446+ <doc xml:space="preserve"
12447+ filename="src/graphene-vectors.c"
12448+ line="1700">a #graphene_vec4_t</doc>
12449+ <type name="Vec4" c:type="const graphene_vec4_t*"/>
12450+ </instance-parameter>
12451+ <parameter name="res"
12452+ direction="out"
12453+ caller-allocates="1"
12454+ transfer-ownership="none">
12455+ <doc xml:space="preserve"
12456+ filename="src/graphene-vectors.c"
12457+ line="1701">return location for the normalized
12458+ vector</doc>
12459+ <type name="Vec4" c:type="graphene_vec4_t*"/>
12460+ </parameter>
12461+ </parameters>
12462+ </method>
12463+ <method name="scale" c:identifier="graphene_vec4_scale" version="1.2">
12464+ <doc xml:space="preserve"
12465+ filename="src/graphene-vectors.c"
12466+ line="1756">Multiplies all components of the given vector with the given scalar @factor.</doc>
12467+ <source-position filename="include/graphene-vec4.h" line="101"/>
12468+ <return-value transfer-ownership="none">
12469+ <type name="none" c:type="void"/>
12470+ </return-value>
12471+ <parameters>
12472+ <instance-parameter name="v" transfer-ownership="none">
12473+ <doc xml:space="preserve"
12474+ filename="src/graphene-vectors.c"
12475+ line="1758">a #graphene_vec4_t</doc>
12476+ <type name="Vec4" c:type="const graphene_vec4_t*"/>
12477+ </instance-parameter>
12478+ <parameter name="factor" transfer-ownership="none">
12479+ <doc xml:space="preserve"
12480+ filename="src/graphene-vectors.c"
12481+ line="1759">the scalar factor</doc>
12482+ <type name="gfloat" c:type="float"/>
12483+ </parameter>
12484+ <parameter name="res"
12485+ direction="out"
12486+ caller-allocates="1"
12487+ transfer-ownership="none">
12488+ <doc xml:space="preserve"
12489+ filename="src/graphene-vectors.c"
12490+ line="1760">return location for the result vector</doc>
12491+ <type name="Vec4" c:type="graphene_vec4_t*"/>
12492+ </parameter>
12493+ </parameters>
12494+ </method>
12495+ <method name="subtract"
12496+ c:identifier="graphene_vec4_subtract"
12497+ version="1.0">
12498+ <doc xml:space="preserve"
12499+ filename="src/graphene-vectors.c"
12500+ line="1606">Subtracts from each component of the first operand @a the
12501+corresponding component of the second operand @b and places
12502+each result into the components of @res.</doc>
12503+ <source-position filename="include/graphene-vec4.h" line="81"/>
12504+ <return-value transfer-ownership="none">
12505+ <type name="none" c:type="void"/>
12506+ </return-value>
12507+ <parameters>
12508+ <instance-parameter name="a" transfer-ownership="none">
12509+ <doc xml:space="preserve"
12510+ filename="src/graphene-vectors.c"
12511+ line="1608">a #graphene_vec4_t</doc>
12512+ <type name="Vec4" c:type="const graphene_vec4_t*"/>
12513+ </instance-parameter>
12514+ <parameter name="b" transfer-ownership="none">
12515+ <doc xml:space="preserve"
12516+ filename="src/graphene-vectors.c"
12517+ line="1609">a #graphene_vec4_t</doc>
12518+ <type name="Vec4" c:type="const graphene_vec4_t*"/>
12519+ </parameter>
12520+ <parameter name="res"
12521+ direction="out"
12522+ caller-allocates="1"
12523+ transfer-ownership="none">
12524+ <doc xml:space="preserve"
12525+ filename="src/graphene-vectors.c"
12526+ line="1610">return location for the resulting vector</doc>
12527+ <type name="Vec4" c:type="graphene_vec4_t*"/>
12528+ </parameter>
12529+ </parameters>
12530+ </method>
12531+ <method name="to_float"
12532+ c:identifier="graphene_vec4_to_float"
12533+ version="1.0">
12534+ <doc xml:space="preserve"
12535+ filename="src/graphene-vectors.c"
12536+ line="1570">Stores the components of the given #graphene_vec4_t into an array
12537+of floating point values.</doc>
12538+ <source-position filename="include/graphene-vec4.h" line="74"/>
12539+ <return-value transfer-ownership="none">
12540+ <type name="none" c:type="void"/>
12541+ </return-value>
12542+ <parameters>
12543+ <instance-parameter name="v" transfer-ownership="none">
12544+ <doc xml:space="preserve"
12545+ filename="src/graphene-vectors.c"
12546+ line="1572">a #graphene_vec4_t</doc>
12547+ <type name="Vec4" c:type="const graphene_vec4_t*"/>
12548+ </instance-parameter>
12549+ <parameter name="dest"
12550+ direction="out"
12551+ caller-allocates="1"
12552+ transfer-ownership="none">
12553+ <doc xml:space="preserve"
12554+ filename="src/graphene-vectors.c"
12555+ line="1573">return location for
12556+ an array of floating point values</doc>
12557+ <array zero-terminated="0" c:type="float*" fixed-size="4">
12558+ <type name="gfloat" c:type="float"/>
12559+ </array>
12560+ </parameter>
12561+ </parameters>
12562+ </method>
12563+ <function name="one" c:identifier="graphene_vec4_one" version="1.0">
12564+ <doc xml:space="preserve"
12565+ filename="src/graphene-vectors.c"
12566+ line="1998">Retrieves a pointer to a #graphene_vec4_t with all its
12567+components set to 1.</doc>
12568+ <source-position filename="include/graphene-vec4.h" line="148"/>
12569+ <return-value transfer-ownership="none">
12570+ <doc xml:space="preserve"
12571+ filename="src/graphene-vectors.c"
12572+ line="2004">a constant vector</doc>
12573+ <type name="Vec4" c:type="const graphene_vec4_t*"/>
12574+ </return-value>
12575+ </function>
12576+ <function name="w_axis"
12577+ c:identifier="graphene_vec4_w_axis"
12578+ version="1.0">
12579+ <doc xml:space="preserve"
12580+ filename="src/graphene-vectors.c"
12581+ line="2070">Retrieves a pointer to a #graphene_vec4_t with its
12582+components set to (0, 0, 0, 1).</doc>
12583+ <source-position filename="include/graphene-vec4.h" line="156"/>
12584+ <return-value transfer-ownership="none">
12585+ <doc xml:space="preserve"
12586+ filename="src/graphene-vectors.c"
12587+ line="2076">a constant vector</doc>
12588+ <type name="Vec4" c:type="const graphene_vec4_t*"/>
12589+ </return-value>
12590+ </function>
12591+ <function name="x_axis"
12592+ c:identifier="graphene_vec4_x_axis"
12593+ version="1.0">
12594+ <doc xml:space="preserve"
12595+ filename="src/graphene-vectors.c"
12596+ line="2016">Retrieves a pointer to a #graphene_vec4_t with its
12597+components set to (1, 0, 0, 0).</doc>
12598+ <source-position filename="include/graphene-vec4.h" line="150"/>
12599+ <return-value transfer-ownership="none">
12600+ <doc xml:space="preserve"
12601+ filename="src/graphene-vectors.c"
12602+ line="2022">a constant vector</doc>
12603+ <type name="Vec4" c:type="const graphene_vec4_t*"/>
12604+ </return-value>
12605+ </function>
12606+ <function name="y_axis"
12607+ c:identifier="graphene_vec4_y_axis"
12608+ version="1.0">
12609+ <doc xml:space="preserve"
12610+ filename="src/graphene-vectors.c"
12611+ line="2034">Retrieves a pointer to a #graphene_vec4_t with its
12612+components set to (0, 1, 0, 0).</doc>
12613+ <source-position filename="include/graphene-vec4.h" line="152"/>
12614+ <return-value transfer-ownership="none">
12615+ <doc xml:space="preserve"
12616+ filename="src/graphene-vectors.c"
12617+ line="2040">a constant vector</doc>
12618+ <type name="Vec4" c:type="const graphene_vec4_t*"/>
12619+ </return-value>
12620+ </function>
12621+ <function name="z_axis"
12622+ c:identifier="graphene_vec4_z_axis"
12623+ version="1.0">
12624+ <doc xml:space="preserve"
12625+ filename="src/graphene-vectors.c"
12626+ line="2052">Retrieves a pointer to a #graphene_vec4_t with its
12627+components set to (0, 0, 1, 0).</doc>
12628+ <source-position filename="include/graphene-vec4.h" line="154"/>
12629+ <return-value transfer-ownership="none">
12630+ <doc xml:space="preserve"
12631+ filename="src/graphene-vectors.c"
12632+ line="2058">a constant vector</doc>
12633+ <type name="Vec4" c:type="const graphene_vec4_t*"/>
12634+ </return-value>
12635+ </function>
12636+ <function name="zero" c:identifier="graphene_vec4_zero" version="1.0">
12637+ <doc xml:space="preserve"
12638+ filename="src/graphene-vectors.c"
12639+ line="1980">Retrieves a pointer to a #graphene_vec4_t with all its
12640+components set to 0.</doc>
12641+ <source-position filename="include/graphene-vec4.h" line="146"/>
12642+ <return-value transfer-ownership="none">
12643+ <doc xml:space="preserve"
12644+ filename="src/graphene-vectors.c"
12645+ line="1986">a constant vector</doc>
12646+ <type name="Vec4" c:type="const graphene_vec4_t*"/>
12647+ </return-value>
12648+ </function>
12649+ </record>
12650+ <function name="box_empty"
12651+ c:identifier="graphene_box_empty"
12652+ moved-to="Box.empty"
12653+ version="1.2">
12654+ <doc xml:space="preserve"
12655+ filename="src/graphene-box.c"
12656+ line="908">A degenerate #graphene_box_t that can only be expanded.
12657+
12658+The returned value is owned by Graphene and should not be modified or freed.</doc>
12659+ <source-position filename="include/graphene-box.h" line="145"/>
12660+ <return-value transfer-ownership="none">
12661+ <doc xml:space="preserve"
12662+ filename="src/graphene-box.c"
12663+ line="915">a #graphene_box_t</doc>
12664+ <type name="Box" c:type="const graphene_box_t*"/>
12665+ </return-value>
12666+ </function>
12667+ <function name="box_infinite"
12668+ c:identifier="graphene_box_infinite"
12669+ moved-to="Box.infinite"
12670+ version="1.2">
12671+ <doc xml:space="preserve"
12672+ filename="src/graphene-box.c"
12673+ line="889">A degenerate #graphene_box_t that cannot be expanded.
12674+
12675+The returned value is owned by Graphene and should not be modified or freed.</doc>
12676+ <source-position filename="include/graphene-box.h" line="143"/>
12677+ <return-value transfer-ownership="none">
12678+ <doc xml:space="preserve"
12679+ filename="src/graphene-box.c"
12680+ line="896">a #graphene_box_t</doc>
12681+ <type name="Box" c:type="const graphene_box_t*"/>
12682+ </return-value>
12683+ </function>
12684+ <function name="box_minus_one"
12685+ c:identifier="graphene_box_minus_one"
12686+ moved-to="Box.minus_one"
12687+ version="1.2">
12688+ <doc xml:space="preserve"
12689+ filename="src/graphene-box.c"
12690+ line="849">A #graphene_box_t with the minimum vertex set at (-1, -1, -1) and the
12691+maximum vertex set at (0, 0, 0).
12692+
12693+The returned value is owned by Graphene and should not be modified or freed.</doc>
12694+ <source-position filename="include/graphene-box.h" line="139"/>
12695+ <return-value transfer-ownership="none">
12696+ <doc xml:space="preserve"
12697+ filename="src/graphene-box.c"
12698+ line="857">a #graphene_box_t</doc>
12699+ <type name="Box" c:type="const graphene_box_t*"/>
12700+ </return-value>
12701+ </function>
12702+ <function name="box_one"
12703+ c:identifier="graphene_box_one"
12704+ moved-to="Box.one"
12705+ version="1.2">
12706+ <doc xml:space="preserve"
12707+ filename="src/graphene-box.c"
12708+ line="829">A #graphene_box_t with the minimum vertex set at (0, 0, 0) and the
12709+maximum vertex set at (1, 1, 1).
12710+
12711+The returned value is owned by Graphene and should not be modified or freed.</doc>
12712+ <source-position filename="include/graphene-box.h" line="137"/>
12713+ <return-value transfer-ownership="none">
12714+ <doc xml:space="preserve"
12715+ filename="src/graphene-box.c"
12716+ line="837">a #graphene_box_t</doc>
12717+ <type name="Box" c:type="const graphene_box_t*"/>
12718+ </return-value>
12719+ </function>
12720+ <function name="box_one_minus_one"
12721+ c:identifier="graphene_box_one_minus_one"
12722+ moved-to="Box.one_minus_one"
12723+ version="1.2">
12724+ <doc xml:space="preserve"
12725+ filename="src/graphene-box.c"
12726+ line="869">A #graphene_box_t with the minimum vertex set at (-1, -1, -1) and the
12727+maximum vertex set at (1, 1, 1).
12728+
12729+The returned value is owned by Graphene and should not be modified or freed.</doc>
12730+ <source-position filename="include/graphene-box.h" line="141"/>
12731+ <return-value transfer-ownership="none">
12732+ <doc xml:space="preserve"
12733+ filename="src/graphene-box.c"
12734+ line="877">a #graphene_box_t</doc>
12735+ <type name="Box" c:type="const graphene_box_t*"/>
12736+ </return-value>
12737+ </function>
12738+ <function name="box_zero"
12739+ c:identifier="graphene_box_zero"
12740+ moved-to="Box.zero"
12741+ version="1.2">
12742+ <doc xml:space="preserve"
12743+ filename="src/graphene-box.c"
12744+ line="810">A #graphene_box_t with both the minimum and maximum vertices set at (0, 0, 0).
12745+
12746+The returned value is owned by Graphene and should not be modified or freed.</doc>
12747+ <source-position filename="include/graphene-box.h" line="135"/>
12748+ <return-value transfer-ownership="none">
12749+ <doc xml:space="preserve"
12750+ filename="src/graphene-box.c"
12751+ line="817">a #graphene_box_t</doc>
12752+ <type name="Box" c:type="const graphene_box_t*"/>
12753+ </return-value>
12754+ </function>
12755+ <docsection name="graphene-box">
12756+ <doc xml:space="preserve"
12757+ filename="src/graphene-box.c"
12758+ line="26">#graphene_box_t provides a representation of an axis aligned minimum
12759+bounding box using the coordinates of its minimum and maximum vertices.</doc>
12760+ </docsection>
12761+ <docsection name="graphene-euler">
12762+ <doc xml:space="preserve"
12763+ filename="src/graphene-euler.c"
12764+ line="26">The #graphene_euler_t structure defines a rotation along three axes using
12765+three angles. It also optionally can describe the order of the rotations.
12766+
12767+[Euler's rotation theorem](https://en.wikipedia.org/wiki/Euler%27s_rotation_theorem)
12768+states that, in three-dimensional space, any displacement of a rigid body
12769+such that a point on the rigid body remains fixed, is equivalent to a single
12770+rotation about some axis that runs through the fixed point. The angles on
12771+each axis can be placed in a vector of three components—α, β, and γ—called
12772+the *Euler angle vector*. Each rotation described by these components results
12773+in a rotation matrix:
12774+
12775+|[
12776+ rot(α) = A
12777+ rot(β) = B
12778+ rot(γ) = G
12779+]|
12780+
12781+The resulting rotation matrix expressed by the Euler angle vector is
12782+given by the product of each rotation matrix:
12783+
12784+|[
12785+ G × B × A = R
12786+]|
12787+
12788+In order to specify the meaning of an Euler angle vector, we need to
12789+assign each axis of rotation to the corresponding α, β, and γ components,
12790+for instance X, Y, and Z.
12791+
12792+Additionally, we need to specify whether the rotations move the axes
12793+as they are applied, also known as intrinsic, or relative rotations;
12794+or if the axes stay fixed and the vectors move within the axis frame,
12795+also known as extrinsic, or static rotations. For instance, a static
12796+rotation alongside the ZYX axes will be interpreted as relative to
12797+extrinsic coordinate axes, and be performed, in order, about the Z,
12798+Y, and finally X axis. A relative rotation alongside the ZXZ axes will
12799+be interpreted as relative to intrinsic coordinate axes, and be
12800+performed, in order, about the Z axis, about the rotated X axis, and
12801+finally about the rotated Z axis.
12802+
12803+Finally, we need to define the direction of the rotation, or the handedness
12804+of the coordinate system. In the case of Graphene, the direction is given
12805+by the right-hand rule, which means all rotations are counterclockwise.
12806+
12807+Rotations described Euler angles are typically immediately understandable,
12808+compared to rotations expressed using quaternions, but they are susceptible
12809+of ["Gimbal lock"](http://en.wikipedia.org/wiki/Gimbal_lock) — the loss of
12810+one degree of freedom caused by two axis on the same plane. You typically
12811+should use #graphene_euler_t to expose rotation angles in your API, or to
12812+store them, but use #graphene_quaternion_t to apply rotations to modelview
12813+matrices, or interpolate between initial and final rotation transformations.
12814+
12815+For more information, see:
12816+
12817+ - http://en.wikipedia.org/wiki/Rotation_matrix
12818+ - http://en.wikipedia.org/wiki/Euler_angles
12819+ - http://mathworld.wolfram.com/EulerAngles.html
12820+ - "Representing Attitude with Euler Angles and Quaternions: A
12821+ Reference" by James Diebel, 2006
12822+ - "Graphics Gems IV", edited by Paul Heckbert, Academic Press, 1994.
12823+
12824+See also: #graphene_quaternion_t.</doc>
12825+ </docsection>
12826+ <docsection name="graphene-frustum">
12827+ <doc xml:space="preserve"
12828+ filename="src/graphene-frustum.c"
12829+ line="26">A #graphene_frustum_t represents a volume of space delimited by planes. It
12830+is usually employed to represent the field of view of a camera, and can be
12831+used to determine whether an object falls within that view, to efficiently
12832+remove invisible objects from the render process.</doc>
12833+ </docsection>
12834+ <docsection name="graphene-gobject">
12835+ <doc xml:space="preserve"
12836+ filename="src/graphene-gobject.c"
12837+ line="26">Graphene optionally provides information for using its own types with
12838+GObject properties and signals.
12839+
12840+## Using Graphene with GObject
12841+
12842+In order to discover at compile time if Graphene exposes type information
12843+for the GType type system, you need to check if the `graphene-gobject-1.0`
12844+pkg-config file exists.
12845+
12846+If you're using Meson to build your project, you can use a typical
12847+`dependency()` object, for instance:
12848+
12849+|[&lt;!-- language="plain" --&gt;
12850+ graphene_dep = dependency('graphene-gobject-1.0')
12851+]|
12852+
12853+If you're using Autotools to build your project, you can use the
12854+`PKG_CHECK_EXISTS` m4 macro, for instance:
12855+
12856+|[&lt;!-- language="plain" --&gt;
12857+ PKG_CHECK_EXISTS([graphene-gobject-1.0],
12858+ [action-if-found],
12859+ [action-if-not-found]
12860+]|
12861+
12862+All the types provided by Graphene are boxed types, which means you
12863+will have to use the #GBoxed API when dealing with #GValue, #GParamSpec,
12864+and signal marshallers. For instance, to install a property in a #GObject
12865+class that uses #graphene_rect_t, you can use:
12866+
12867+|[&lt;!-- language="C" --&gt;
12868+ g_object_class_install_property (object_class, PROP_BOUNDS,
12869+ g_param_spec_boxed ("bounds", "Bounds", "Bounds of an object",
12870+ GRAPHENE_TYPE_RECT,
12871+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
12872+]|
12873+
12874+You'll then need to use g_value_set_boxed() and g_value_get_boxed()
12875+in order to access the #graphene_rect_t pointer from the #GValue data
12876+structure.
12877+
12878+Whereas for creating a new signal that has a #graphene_point_t parameter
12879+you can use:
12880+
12881+|[&lt;!-- language="C" --&gt;
12882+ signals[HIT_TEST] =
12883+ g_signal_new ("hit-test",
12884+ G_TYPE_FROM_CLASS (object_class),
12885+ G_SIGNAL_RUN_LAST,
12886+ 0,
12887+ g_signal_accumulator_true_handled, NULL,
12888+ marshal_BOOLEAN__BOXED,
12889+ G_TYPE_BOOLEAN, 1,
12890+ GRAPHENE_TYPE_POINT);
12891+]|
12892+
12893+## Using Graphene via GObject introspection
12894+
12895+When using Graphene with another language than C, the GObject Introspection
12896+bindings change the type names to the CamelCase version of the C name, minus
12897+the `_t` suffix; for instance:
12898+
12899+ * #graphene_point_t becomes `GraphenePoint`
12900+ * #graphene_point3d_t becomes `GraphenePoint3D`
12901+ * #graphene_rect_t becomes `GrapheneRect`
12902+ * #graphene_matrix_t becomes `GrapheneMatrix`
12903+
12904+There is no direct access for the low level #graphene_simd4f_t and
12905+#graphene_simd4x4f_t SIMD types.</doc>
12906+ </docsection>
12907+ <docsection name="graphene-matrix">
12908+ <doc xml:space="preserve"
12909+ filename="src/graphene-matrix.c"
12910+ line="26">#graphene_matrix_t is a type that provides a 4x4 square matrix, useful for
12911+representing 3D transformations.
12912+
12913+The matrix is treated as row-major, i.e. it has four vectors (x, y, z, and
12914+w) representing rows, and elements of each vector are a column:
12915+
12916+|[&lt;!-- language="plain" --&gt;
12917+ ⎡ m.x ⎤ ⎛ x.x x.y x.z x.w ⎞
12918+ ⎜ m.y ⎟ -\ ⎜ y.x y.y y.z y.w ⎟
12919+ ⎜ m.z ⎟ -/ ⎜ z.x z.y z.z z.w ⎟
12920+ ⎣ m.w ⎦ ⎝ w.x w.y w.z w.w ⎠
12921+]|
12922+
12923+It is possible to easily convert a #graphene_matrix_t to and from an array
12924+of floating point values that can be used with other libraries.
12925+
12926+The contents of a #graphene_matrix_t are private, and direct access is not
12927+possible. You can modify and read the contents of a #graphene_matrix_t
12928+only through the provided API.
12929+
12930+# Conventions # {#conventions}
12931+
12932+Graphene uses left-multiplication for all its operations on vectors and
12933+matrices; in other words, given a matrix `A` and a vector `b`, the result
12934+of a multiplication is going to be:
12935+
12936+|[
12937+ res = b × A
12938+]|
12939+
12940+Multiplying two matrices, on the other hand, will use right-multiplication;
12941+given two matrices `A` and `B`, the result of the multiplication is going
12942+to be
12943+
12944+|[
12945+ res = A × B
12946+]|
12947+
12948+as the implementation will multiply each row vector of matrix `A` with the
12949+matrix `B` to obtain the new row vectors of the result matrix:
12950+
12951+|[
12952+ res = ⎡ A.x × B ⎤
12953+ ⎜ A.y × B ⎟
12954+ ⎜ A.z × B ⎟
12955+ ⎣ A.w × B ⎦
12956+]|
12957+
12958+For more information, see the documentation for #graphene_simd4x4f_t,
12959+especially the following functions:
12960+
12961+ - graphene_simd4x4f_vec4_mul()
12962+ - graphene_simd4x4f_vec3_mul()
12963+ - graphene_simd4x4f_point3_mul()
12964+ - graphene_simd4x4f_matrix_mul()</doc>
12965+ </docsection>
12966+ <docsection name="graphene-plane">
12967+ <doc xml:space="preserve"
12968+ filename="src/graphene-plane.c"
12969+ line="26">#graphene_plane_t is a structure representing a plane that extends
12970+infinitely in 3D space, described using the [Hessian normal
12971+form](http://mathworld.wolfram.com/HessianNormalForm.html)
12972+of a unit length normal vector pointing towards the origin, and a
12973+constant distance from the origin along the normal vector.</doc>
12974+ </docsection>
12975+ <docsection name="graphene-point">
12976+ <doc xml:space="preserve"
12977+ filename="src/graphene-point.c"
12978+ line="26">#graphene_point_t is a data structure capable of describing a point with
12979+two coordinates:
12980+
12981+ * @graphene_point_t.x
12982+ * @graphene_point_t.y</doc>
12983+ </docsection>
12984+ <docsection name="graphene-point3d">
12985+ <doc xml:space="preserve"
12986+ filename="src/graphene-point3d.c"
12987+ line="26">#graphene_point3d_t is a data structure capable of describing a point with
12988+three coordinates:
12989+
12990+ * @graphene_point3d_t.x
12991+ * @graphene_point3d_t.y
12992+ * @graphene_point3d_t.z</doc>
12993+ </docsection>
12994+ <docsection name="graphene-quad">
12995+ <doc xml:space="preserve"
12996+ filename="src/graphene-quad.c"
12997+ line="26">A #graphene_quad_t represents a coplanar, four vertex quadrilateral shape.</doc>
12998+ </docsection>
12999+ <docsection name="graphene-quaternion">
13000+ <doc xml:space="preserve"
13001+ filename="src/graphene-quaternion.c"
13002+ line="26">Quaternions are a mathematical entity that can be used to represent
13003+rotation transformations in 3D space; unlike the usual Euler representation
13004+with roll, pitch, and yaw, quaternions do not suffer from the so-called
13005+["Gimbal Lock"](http://en.wikipedia.org/wiki/Gimbal_lock) problem.
13006+
13007+See also: #graphene_euler_t</doc>
13008+ </docsection>
13009+ <docsection name="graphene-ray">
13010+ <doc xml:space="preserve"
13011+ filename="src/graphene-ray.c"
13012+ line="26">#graphene_ray_t is a structure representing a ray emitted by an origin,
13013+identified by a point in 3D space, in a given direction, identified
13014+by a vector with 3 components.
13015+
13016+A common use of #graphene_ray_t is ray-casting to find which objects in
13017+a 3D scene are under the coordinates of the pointer.</doc>
13018+ </docsection>
13019+ <docsection name="graphene-rect">
13020+ <doc xml:space="preserve"
13021+ filename="src/graphene-rect.c"
13022+ line="26">#graphene_rect_t is a type representing a rectangle through an origin
13023+#graphene_point_t point and a #graphene_size_t size.
13024+
13025+![](rectangle.png)
13026+
13027+Operations on a #graphene_rect_t will normalize the rectangle, to
13028+ensure that the origin is always the top-left corner of the rectangle
13029+and that the size is always positive.</doc>
13030+ </docsection>
13031+ <docsection name="graphene-size">
13032+ <doc xml:space="preserve"
13033+ filename="src/graphene-size.c"
13034+ line="26">#graphene_size_t represents a size composed of a @graphene_size_t.width
13035+by a @graphene_size_t.height.</doc>
13036+ </docsection>
13037+ <docsection name="graphene-sphere">
13038+ <doc xml:space="preserve"
13039+ filename="src/graphene-sphere.c"
13040+ line="26">#graphene_sphere_t provides a representation of a sphere using its center
13041+and radius.</doc>
13042+ </docsection>
13043+ <docsection name="graphene-triangle">
13044+ <doc xml:space="preserve"
13045+ filename="src/graphene-triangle.c"
13046+ line="26">#graphene_triangle_t represents a triangle in 3D space.</doc>
13047+ </docsection>
13048+ <docsection name="graphene-vectors">
13049+ <doc xml:space="preserve"
13050+ filename="src/graphene-vectors.c"
13051+ line="39">Graphene has three vector types, distinguished by their length:
13052+
13053+ 1. #graphene_vec2_t, which holds 2 components x and y
13054+ 2. #graphene_vec3_t, which holds 3 components x, y, and z
13055+ 3. #graphene_vec4_t, which holds 4 components x, y, z, and w
13056+
13057+Each vector type should be treated as an opaque data type.</doc>
13058+ </docsection>
13059+ <function name="point3d_zero"
13060+ c:identifier="graphene_point3d_zero"
13061+ moved-to="Point3D.zero"
13062+ version="1.0">
13063+ <doc xml:space="preserve"
13064+ filename="src/graphene-point3d.c"
13065+ line="446">Retrieves a constant point with all three coordinates set to 0.</doc>
13066+ <source-position filename="include/graphene-point3d.h" line="137"/>
13067+ <return-value transfer-ownership="none">
13068+ <doc xml:space="preserve"
13069+ filename="src/graphene-point3d.c"
13070+ line="451">a zero point</doc>
13071+ <type name="Point3D" c:type="const graphene_point3d_t*"/>
13072+ </return-value>
13073+ </function>
13074+ <function name="point_zero"
13075+ c:identifier="graphene_point_zero"
13076+ moved-to="Point.zero"
13077+ version="1.0">
13078+ <doc xml:space="preserve"
13079+ filename="src/graphene-point.c"
13080+ line="302">Returns a point fixed at (0, 0).</doc>
13081+ <source-position filename="include/graphene-point.h" line="117"/>
13082+ <return-value transfer-ownership="none">
13083+ <doc xml:space="preserve"
13084+ filename="src/graphene-point.c"
13085+ line="307">a fixed point</doc>
13086+ <type name="Point" c:type="const graphene_point_t*"/>
13087+ </return-value>
13088+ </function>
13089+ <function name="rect_alloc"
13090+ c:identifier="graphene_rect_alloc"
13091+ moved-to="Rect.alloc"
13092+ version="1.0">
13093+ <doc xml:space="preserve"
13094+ filename="src/graphene-rect.c"
13095+ line="73">Allocates a new #graphene_rect_t.
13096+
13097+The contents of the returned rectangle are undefined.</doc>
13098+ <source-position filename="include/graphene-rect.h" line="90"/>
13099+ <return-value transfer-ownership="full">
13100+ <doc xml:space="preserve"
13101+ filename="src/graphene-rect.c"
13102+ line="80">the newly allocated rectangle</doc>
13103+ <type name="Rect" c:type="graphene_rect_t*"/>
13104+ </return-value>
13105+ </function>
13106+ <function name="rect_zero"
13107+ c:identifier="graphene_rect_zero"
13108+ moved-to="Rect.zero"
13109+ version="1.4">
13110+ <doc xml:space="preserve"
13111+ filename="src/graphene-rect.c"
13112+ line="892">Returns a degenerate rectangle with origin fixed at (0, 0) and
13113+a size of 0, 0.</doc>
13114+ <source-position filename="include/graphene-rect.h" line="192"/>
13115+ <return-value transfer-ownership="none">
13116+ <doc xml:space="preserve"
13117+ filename="src/graphene-rect.c"
13118+ line="898">a fixed rectangle</doc>
13119+ <type name="Rect" c:type="const graphene_rect_t*"/>
13120+ </return-value>
13121+ </function>
13122+ <function name="size_zero"
13123+ c:identifier="graphene_size_zero"
13124+ moved-to="Size.zero"
13125+ version="1.0">
13126+ <doc xml:space="preserve"
13127+ filename="src/graphene-size.c"
13128+ line="189">A constant pointer to a zero #graphene_size_t, useful for
13129+equality checks and interpolations.</doc>
13130+ <source-position filename="include/graphene-size.h" line="102"/>
13131+ <return-value transfer-ownership="none">
13132+ <doc xml:space="preserve"
13133+ filename="src/graphene-size.c"
13134+ line="195">a constant size</doc>
13135+ <type name="Size" c:type="const graphene_size_t*"/>
13136+ </return-value>
13137+ </function>
13138+ <function name="vec2_one"
13139+ c:identifier="graphene_vec2_one"
13140+ moved-to="Vec2.one"
13141+ version="1.0">
13142+ <doc xml:space="preserve"
13143+ filename="src/graphene-vectors.c"
13144+ line="576">Retrieves a constant vector with (1, 1) components.</doc>
13145+ <source-position filename="include/graphene-vec2.h" line="128"/>
13146+ <return-value transfer-ownership="none">
13147+ <doc xml:space="preserve"
13148+ filename="src/graphene-vectors.c"
13149+ line="581">the one vector</doc>
13150+ <type name="Vec2" c:type="const graphene_vec2_t*"/>
13151+ </return-value>
13152+ </function>
13153+ <function name="vec2_x_axis"
13154+ c:identifier="graphene_vec2_x_axis"
13155+ moved-to="Vec2.x_axis"
13156+ version="1.0">
13157+ <doc xml:space="preserve"
13158+ filename="src/graphene-vectors.c"
13159+ line="593">Retrieves a constant vector with (1, 0) components.</doc>
13160+ <source-position filename="include/graphene-vec2.h" line="130"/>
13161+ <return-value transfer-ownership="none">
13162+ <doc xml:space="preserve"
13163+ filename="src/graphene-vectors.c"
13164+ line="598">the X axis vector</doc>
13165+ <type name="Vec2" c:type="const graphene_vec2_t*"/>
13166+ </return-value>
13167+ </function>
13168+ <function name="vec2_y_axis"
13169+ c:identifier="graphene_vec2_y_axis"
13170+ moved-to="Vec2.y_axis"
13171+ version="1.0">
13172+ <doc xml:space="preserve"
13173+ filename="src/graphene-vectors.c"
13174+ line="610">Retrieves a constant vector with (0, 1) components.</doc>
13175+ <source-position filename="include/graphene-vec2.h" line="132"/>
13176+ <return-value transfer-ownership="none">
13177+ <doc xml:space="preserve"
13178+ filename="src/graphene-vectors.c"
13179+ line="615">the Y axis vector</doc>
13180+ <type name="Vec2" c:type="const graphene_vec2_t*"/>
13181+ </return-value>
13182+ </function>
13183+ <function name="vec2_zero"
13184+ c:identifier="graphene_vec2_zero"
13185+ moved-to="Vec2.zero"
13186+ version="1.0">
13187+ <doc xml:space="preserve"
13188+ filename="src/graphene-vectors.c"
13189+ line="559">Retrieves a constant vector with (0, 0) components.</doc>
13190+ <source-position filename="include/graphene-vec2.h" line="126"/>
13191+ <return-value transfer-ownership="none">
13192+ <doc xml:space="preserve"
13193+ filename="src/graphene-vectors.c"
13194+ line="564">the zero vector</doc>
13195+ <type name="Vec2" c:type="const graphene_vec2_t*"/>
13196+ </return-value>
13197+ </function>
13198+ <function name="vec3_one"
13199+ c:identifier="graphene_vec3_one"
13200+ moved-to="Vec3.one"
13201+ version="1.0">
13202+ <doc xml:space="preserve"
13203+ filename="src/graphene-vectors.c"
13204+ line="1278">Provides a constant pointer to a vector with three components,
13205+all sets to 1.</doc>
13206+ <source-position filename="include/graphene-vec3.h" line="151"/>
13207+ <return-value transfer-ownership="none">
13208+ <doc xml:space="preserve"
13209+ filename="src/graphene-vectors.c"
13210+ line="1284">a constant vector</doc>
13211+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
13212+ </return-value>
13213+ </function>
13214+ <function name="vec3_x_axis"
13215+ c:identifier="graphene_vec3_x_axis"
13216+ moved-to="Vec3.x_axis"
13217+ version="1.0">
13218+ <doc xml:space="preserve"
13219+ filename="src/graphene-vectors.c"
13220+ line="1296">Provides a constant pointer to a vector with three components
13221+with values set to (1, 0, 0).</doc>
13222+ <source-position filename="include/graphene-vec3.h" line="153"/>
13223+ <return-value transfer-ownership="none">
13224+ <doc xml:space="preserve"
13225+ filename="src/graphene-vectors.c"
13226+ line="1302">a constant vector</doc>
13227+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
13228+ </return-value>
13229+ </function>
13230+ <function name="vec3_y_axis"
13231+ c:identifier="graphene_vec3_y_axis"
13232+ moved-to="Vec3.y_axis"
13233+ version="1.0">
13234+ <doc xml:space="preserve"
13235+ filename="src/graphene-vectors.c"
13236+ line="1314">Provides a constant pointer to a vector with three components
13237+with values set to (0, 1, 0).</doc>
13238+ <source-position filename="include/graphene-vec3.h" line="155"/>
13239+ <return-value transfer-ownership="none">
13240+ <doc xml:space="preserve"
13241+ filename="src/graphene-vectors.c"
13242+ line="1320">a constant vector</doc>
13243+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
13244+ </return-value>
13245+ </function>
13246+ <function name="vec3_z_axis"
13247+ c:identifier="graphene_vec3_z_axis"
13248+ moved-to="Vec3.z_axis"
13249+ version="1.0">
13250+ <doc xml:space="preserve"
13251+ filename="src/graphene-vectors.c"
13252+ line="1332">Provides a constant pointer to a vector with three components
13253+with values set to (0, 0, 1).</doc>
13254+ <source-position filename="include/graphene-vec3.h" line="157"/>
13255+ <return-value transfer-ownership="none">
13256+ <doc xml:space="preserve"
13257+ filename="src/graphene-vectors.c"
13258+ line="1338">a constant vector</doc>
13259+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
13260+ </return-value>
13261+ </function>
13262+ <function name="vec3_zero"
13263+ c:identifier="graphene_vec3_zero"
13264+ moved-to="Vec3.zero"
13265+ version="1.0">
13266+ <doc xml:space="preserve"
13267+ filename="src/graphene-vectors.c"
13268+ line="1260">Provides a constant pointer to a vector with three components,
13269+all sets to 0.</doc>
13270+ <source-position filename="include/graphene-vec3.h" line="149"/>
13271+ <return-value transfer-ownership="none">
13272+ <doc xml:space="preserve"
13273+ filename="src/graphene-vectors.c"
13274+ line="1266">a constant vector</doc>
13275+ <type name="Vec3" c:type="const graphene_vec3_t*"/>
13276+ </return-value>
13277+ </function>
13278+ <function name="vec4_one"
13279+ c:identifier="graphene_vec4_one"
13280+ moved-to="Vec4.one"
13281+ version="1.0">
13282+ <doc xml:space="preserve"
13283+ filename="src/graphene-vectors.c"
13284+ line="1998">Retrieves a pointer to a #graphene_vec4_t with all its
13285+components set to 1.</doc>
13286+ <source-position filename="include/graphene-vec4.h" line="148"/>
13287+ <return-value transfer-ownership="none">
13288+ <doc xml:space="preserve"
13289+ filename="src/graphene-vectors.c"
13290+ line="2004">a constant vector</doc>
13291+ <type name="Vec4" c:type="const graphene_vec4_t*"/>
13292+ </return-value>
13293+ </function>
13294+ <function name="vec4_w_axis"
13295+ c:identifier="graphene_vec4_w_axis"
13296+ moved-to="Vec4.w_axis"
13297+ version="1.0">
13298+ <doc xml:space="preserve"
13299+ filename="src/graphene-vectors.c"
13300+ line="2070">Retrieves a pointer to a #graphene_vec4_t with its
13301+components set to (0, 0, 0, 1).</doc>
13302+ <source-position filename="include/graphene-vec4.h" line="156"/>
13303+ <return-value transfer-ownership="none">
13304+ <doc xml:space="preserve"
13305+ filename="src/graphene-vectors.c"
13306+ line="2076">a constant vector</doc>
13307+ <type name="Vec4" c:type="const graphene_vec4_t*"/>
13308+ </return-value>
13309+ </function>
13310+ <function name="vec4_x_axis"
13311+ c:identifier="graphene_vec4_x_axis"
13312+ moved-to="Vec4.x_axis"
13313+ version="1.0">
13314+ <doc xml:space="preserve"
13315+ filename="src/graphene-vectors.c"
13316+ line="2016">Retrieves a pointer to a #graphene_vec4_t with its
13317+components set to (1, 0, 0, 0).</doc>
13318+ <source-position filename="include/graphene-vec4.h" line="150"/>
13319+ <return-value transfer-ownership="none">
13320+ <doc xml:space="preserve"
13321+ filename="src/graphene-vectors.c"
13322+ line="2022">a constant vector</doc>
13323+ <type name="Vec4" c:type="const graphene_vec4_t*"/>
13324+ </return-value>
13325+ </function>
13326+ <function name="vec4_y_axis"
13327+ c:identifier="graphene_vec4_y_axis"
13328+ moved-to="Vec4.y_axis"
13329+ version="1.0">
13330+ <doc xml:space="preserve"
13331+ filename="src/graphene-vectors.c"
13332+ line="2034">Retrieves a pointer to a #graphene_vec4_t with its
13333+components set to (0, 1, 0, 0).</doc>
13334+ <source-position filename="include/graphene-vec4.h" line="152"/>
13335+ <return-value transfer-ownership="none">
13336+ <doc xml:space="preserve"
13337+ filename="src/graphene-vectors.c"
13338+ line="2040">a constant vector</doc>
13339+ <type name="Vec4" c:type="const graphene_vec4_t*"/>
13340+ </return-value>
13341+ </function>
13342+ <function name="vec4_z_axis"
13343+ c:identifier="graphene_vec4_z_axis"
13344+ moved-to="Vec4.z_axis"
13345+ version="1.0">
13346+ <doc xml:space="preserve"
13347+ filename="src/graphene-vectors.c"
13348+ line="2052">Retrieves a pointer to a #graphene_vec4_t with its
13349+components set to (0, 0, 1, 0).</doc>
13350+ <source-position filename="include/graphene-vec4.h" line="154"/>
13351+ <return-value transfer-ownership="none">
13352+ <doc xml:space="preserve"
13353+ filename="src/graphene-vectors.c"
13354+ line="2058">a constant vector</doc>
13355+ <type name="Vec4" c:type="const graphene_vec4_t*"/>
13356+ </return-value>
13357+ </function>
13358+ <function name="vec4_zero"
13359+ c:identifier="graphene_vec4_zero"
13360+ moved-to="Vec4.zero"
13361+ version="1.0">
13362+ <doc xml:space="preserve"
13363+ filename="src/graphene-vectors.c"
13364+ line="1980">Retrieves a pointer to a #graphene_vec4_t with all its
13365+components set to 0.</doc>
13366+ <source-position filename="include/graphene-vec4.h" line="146"/>
13367+ <return-value transfer-ownership="none">
13368+ <doc xml:space="preserve"
13369+ filename="src/graphene-vectors.c"
13370+ line="1986">a constant vector</doc>
13371+ <type name="Vec4" c:type="const graphene_vec4_t*"/>
13372+ </return-value>
13373+ </function>
13374+ </namespace>
13375+</repository>
A internal/gir/spec/Gsk-4.0.gir +7181 -0 large diff (7181 lines changed): collapsed
A internal/gir/spec/Gtk-4.0.gir +167916 -0 large diff (167916 lines changed): collapsed
A internal/gir/spec/Pango-1.0.gir +22709 -0 large diff (22709 lines changed): collapsed
A internal/gir/spec/PangoCairo-1.0.gir +1136 -0
@@ -0,0 +1,1136 @@
1+<?xml version="1.0"?>
2+<!-- This file was automatically generated from C sources - DO NOT EDIT!
3+To affect the contents of this file, edit the original C definitions,
4+and/or use gtk-doc annotations. -->
5+<repository version="1.2"
6+ xmlns="http://www.gtk.org/introspection/core/1.0"
7+ xmlns:c="http://www.gtk.org/introspection/c/1.0"
8+ xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
9+ <include name="GObject" version="2.0"/>
10+ <include name="Pango" version="1.0"/>
11+ <include name="cairo" version="1.0"/>
12+ <package name="pangocairo"/>
13+ <c:include name="pango/pangocairo.h"/>
14+ <namespace name="PangoCairo"
15+ version="1.0"
16+ shared-library="libpangocairo-1.0.so.0"
17+ c:identifier-prefixes="PangoCairo"
18+ c:symbol-prefixes="pango_cairo">
19+ <function-macro name="FONT"
20+ c:identifier="PANGO_CAIRO_FONT"
21+ introspectable="0">
22+ <source-position filename="../pango/pangocairo.h" line="49"/>
23+ <parameters>
24+ <parameter name="obj">
25+ </parameter>
26+ </parameters>
27+ </function-macro>
28+ <function-macro name="FONT_MAP"
29+ c:identifier="PANGO_CAIRO_FONT_MAP"
30+ introspectable="0">
31+ <source-position filename="../pango/pangocairo.h" line="72"/>
32+ <parameters>
33+ <parameter name="obj">
34+ </parameter>
35+ </parameters>
36+ </function-macro>
37+ <interface name="Font"
38+ c:symbol-prefix="font"
39+ c:type="PangoCairoFont"
40+ version="1.18"
41+ glib:type-name="PangoCairoFont"
42+ glib:get-type="pango_cairo_font_get_type">
43+ <doc xml:space="preserve"
44+ filename="../pango/pangocairo.h"
45+ line="30">`PangoCairoFont` is an interface exported by fonts for
46+use with Cairo.
47+
48+The actual type of the font will depend on the particular
49+font technology Cairo was compiled to use.</doc>
50+ <prerequisite name="Pango.Font"/>
51+ <method name="get_scaled_font"
52+ c:identifier="pango_cairo_font_get_scaled_font"
53+ version="1.18">
54+ <doc xml:space="preserve"
55+ filename="../pango/pangocairo-font.c"
56+ line="138">Gets the `cairo_scaled_font_t` used by @font.
57+The scaled font can be referenced and kept using
58+cairo_scaled_font_reference().</doc>
59+ <source-position filename="../pango/pangocairo.h" line="133"/>
60+ <return-value transfer-ownership="none" nullable="1">
61+ <doc xml:space="preserve"
62+ filename="../pango/pangocairo-font.c"
63+ line="146">the `cairo_scaled_font_t`
64+ used by @font</doc>
65+ <type name="cairo.ScaledFont" c:type="cairo_scaled_font_t*"/>
66+ </return-value>
67+ <parameters>
68+ <instance-parameter name="font"
69+ transfer-ownership="none"
70+ nullable="1"
71+ allow-none="1">
72+ <doc xml:space="preserve"
73+ filename="../pango/pangocairo-font.c"
74+ line="140">a `PangoFont` from a `PangoCairoFontMap`</doc>
75+ <type name="Font" c:type="PangoCairoFont*"/>
76+ </instance-parameter>
77+ </parameters>
78+ </method>
79+ </interface>
80+ <interface name="FontMap"
81+ c:symbol-prefix="font_map"
82+ c:type="PangoCairoFontMap"
83+ version="1.10"
84+ glib:type-name="PangoCairoFontMap"
85+ glib:get-type="pango_cairo_font_map_get_type">
86+ <doc xml:space="preserve"
87+ filename="../pango/pangocairo.h"
88+ line="57">`PangoCairoFontMap` is an interface exported by font maps for
89+use with Cairo.
90+
91+The actual type of the font map will depend on the particular
92+font technology Cairo was compiled to use.</doc>
93+ <prerequisite name="Pango.FontMap"/>
94+ <function name="get_default"
95+ c:identifier="pango_cairo_font_map_get_default"
96+ version="1.10">
97+ <doc xml:space="preserve"
98+ filename="../pango/pangocairo-fontmap.c"
99+ line="151">Gets a default `PangoCairoFontMap` to use with Cairo.
100+
101+Note that the type of the returned object will depend on the
102+particular font backend Cairo was compiled to use; you generally
103+should only use the `PangoFontMap` and `PangoCairoFontMap`
104+interfaces on the returned object.
105+
106+The default Cairo fontmap can be changed by using
107+[method@PangoCairo.FontMap.set_default]. This can be used to
108+change the Cairo font backend that the default fontmap uses
109+for example.
110+
111+Note that since Pango 1.32.6, the default fontmap is per-thread.
112+Each thread gets its own default fontmap. In this way, PangoCairo
113+can be used safely from multiple threads.</doc>
114+ <source-position filename="../pango/pangocairo.h" line="110"/>
115+ <return-value transfer-ownership="none">
116+ <doc xml:space="preserve"
117+ filename="../pango/pangocairo-fontmap.c"
118+ line="170">the default PangoCairo fontmap
119+ for the current thread. This object is owned by Pango and must
120+ not be freed.</doc>
121+ <type name="Pango.FontMap" c:type="PangoFontMap*"/>
122+ </return-value>
123+ </function>
124+ <function name="new"
125+ c:identifier="pango_cairo_font_map_new"
126+ version="1.10">
127+ <doc xml:space="preserve"
128+ filename="../pango/pangocairo-fontmap.c"
129+ line="47">Creates a new `PangoCairoFontMap` object.
130+
131+A fontmap is used to cache information about available fonts,
132+and holds certain global parameters such as the resolution.
133+In most cases, you can use `func@PangoCairo.font_map_get_default]
134+instead.
135+
136+Note that the type of the returned object will depend
137+on the particular font backend Cairo was compiled to use;
138+You generally should only use the `PangoFontMap` and
139+`PangoCairoFontMap` interfaces on the returned object.
140+
141+You can override the type of backend returned by using an
142+environment variable %PANGOCAIRO_BACKEND. Supported types,
143+based on your build, are fc (fontconfig), win32, and coretext.
144+If requested type is not available, NULL is returned. Ie.
145+this is only useful for testing, when at least two backends
146+are compiled in.</doc>
147+ <source-position filename="../pango/pangocairo.h" line="106"/>
148+ <return-value transfer-ownership="full">
149+ <doc xml:space="preserve"
150+ filename="../pango/pangocairo-fontmap.c"
151+ line="69">the newly allocated `PangoFontMap`,
152+ which should be freed with g_object_unref().</doc>
153+ <type name="Pango.FontMap" c:type="PangoFontMap*"/>
154+ </return-value>
155+ </function>
156+ <function name="new_for_font_type"
157+ c:identifier="pango_cairo_font_map_new_for_font_type"
158+ version="1.18">
159+ <doc xml:space="preserve"
160+ filename="../pango/pangocairo-fontmap.c"
161+ line="110">Creates a new `PangoCairoFontMap` object of the type suitable
162+to be used with cairo font backend of type @fonttype.
163+
164+In most cases one should simply use [func@PangoCairo.FontMap.new], or
165+in fact in most of those cases, just use [func@PangoCairo.FontMap.get_default].</doc>
166+ <source-position filename="../pango/pangocairo.h" line="108"/>
167+ <return-value transfer-ownership="full" nullable="1">
168+ <doc xml:space="preserve"
169+ filename="../pango/pangocairo-fontmap.c"
170+ line="120">the newly allocated
171+ `PangoFontMap` of suitable type which should be freed with
172+ g_object_unref(), or %NULL if the requested cairo font backend
173+ is not supported / compiled in.</doc>
174+ <type name="Pango.FontMap" c:type="PangoFontMap*"/>
175+ </return-value>
176+ <parameters>
177+ <parameter name="fonttype" transfer-ownership="none">
178+ <doc xml:space="preserve"
179+ filename="../pango/pangocairo-fontmap.c"
180+ line="112">desired #cairo_font_type_t</doc>
181+ <type name="cairo.FontType" c:type="cairo_font_type_t"/>
182+ </parameter>
183+ </parameters>
184+ </function>
185+ <method name="create_context"
186+ c:identifier="pango_cairo_font_map_create_context"
187+ version="1.10"
188+ introspectable="0"
189+ deprecated="1"
190+ deprecated-version="1.22">
191+ <doc xml:space="preserve"
192+ filename="../pango/pangocairo-fontmap.c"
193+ line="267">Create a `PangoContext` for the given fontmap.</doc>
194+ <doc-deprecated xml:space="preserve">Use pango_font_map_create_context() instead.</doc-deprecated>
195+ <source-position filename="../pango/pangocairo.h" line="123"/>
196+ <return-value>
197+ <doc xml:space="preserve"
198+ filename="../pango/pangocairo-fontmap.c"
199+ line="273">the newly created context; free with g_object_unref().</doc>
200+ <type name="Pango.Context" c:type="PangoContext*"/>
201+ </return-value>
202+ <parameters>
203+ <instance-parameter name="fontmap" transfer-ownership="none">
204+ <doc xml:space="preserve"
205+ filename="../pango/pangocairo-fontmap.c"
206+ line="269">a `PangoCairoFontMap`</doc>
207+ <type name="FontMap" c:type="PangoCairoFontMap*"/>
208+ </instance-parameter>
209+ </parameters>
210+ </method>
211+ <method name="get_font_type"
212+ c:identifier="pango_cairo_font_map_get_font_type"
213+ version="1.18">
214+ <doc xml:space="preserve"
215+ filename="../pango/pangocairo-fontmap.c"
216+ line="287">Gets the type of Cairo font backend that @fontmap uses.</doc>
217+ <source-position filename="../pango/pangocairo.h" line="114"/>
218+ <return-value transfer-ownership="none">
219+ <doc xml:space="preserve"
220+ filename="../pango/pangocairo-fontmap.c"
221+ line="293">the `cairo_font_type_t` cairo font backend type</doc>
222+ <type name="cairo.FontType" c:type="cairo_font_type_t"/>
223+ </return-value>
224+ <parameters>
225+ <instance-parameter name="fontmap" transfer-ownership="none">
226+ <doc xml:space="preserve"
227+ filename="../pango/pangocairo-fontmap.c"
228+ line="289">a `PangoCairoFontMap`</doc>
229+ <type name="FontMap" c:type="PangoCairoFontMap*"/>
230+ </instance-parameter>
231+ </parameters>
232+ </method>
233+ <method name="get_resolution"
234+ c:identifier="pango_cairo_font_map_get_resolution"
235+ version="1.10">
236+ <doc xml:space="preserve"
237+ filename="../pango/pangocairo-fontmap.c"
238+ line="247">Gets the resolution for the fontmap.
239+
240+See [method@PangoCairo.FontMap.set_resolution].</doc>
241+ <source-position filename="../pango/pangocairo.h" line="120"/>
242+ <return-value transfer-ownership="none">
243+ <doc xml:space="preserve"
244+ filename="../pango/pangocairo-fontmap.c"
245+ line="255">the resolution in "dots per inch"</doc>
246+ <type name="gdouble" c:type="double"/>
247+ </return-value>
248+ <parameters>
249+ <instance-parameter name="fontmap" transfer-ownership="none">
250+ <doc xml:space="preserve"
251+ filename="../pango/pangocairo-fontmap.c"
252+ line="249">a `PangoCairoFontMap`</doc>
253+ <type name="FontMap" c:type="PangoCairoFontMap*"/>
254+ </instance-parameter>
255+ </parameters>
256+ </method>
257+ <method name="set_default"
258+ c:identifier="pango_cairo_font_map_set_default"
259+ version="1.22">
260+ <doc xml:space="preserve"
261+ filename="../pango/pangocairo-fontmap.c"
262+ line="190">Sets a default `PangoCairoFontMap` to use with Cairo.
263+
264+This can be used to change the Cairo font backend that the
265+default fontmap uses for example. The old default font map
266+is unreffed and the new font map referenced.
267+
268+Note that since Pango 1.32.6, the default fontmap is per-thread.
269+This function only changes the default fontmap for
270+the current thread. Default fontmaps of existing threads
271+are not changed. Default fontmaps of any new threads will
272+still be created using [func@PangoCairo.FontMap.new].
273+
274+A value of %NULL for @fontmap will cause the current default
275+font map to be released and a new default font map to be created
276+on demand, using [func@PangoCairo.FontMap.new].</doc>
277+ <source-position filename="../pango/pangocairo.h" line="112"/>
278+ <return-value transfer-ownership="none">
279+ <type name="none" c:type="void"/>
280+ </return-value>
281+ <parameters>
282+ <instance-parameter name="fontmap"
283+ transfer-ownership="none"
284+ nullable="1"
285+ allow-none="1">
286+ <doc xml:space="preserve"
287+ filename="../pango/pangocairo-fontmap.c"
288+ line="192">The new default font map</doc>
289+ <type name="FontMap" c:type="PangoCairoFontMap*"/>
290+ </instance-parameter>
291+ </parameters>
292+ </method>
293+ <method name="set_resolution"
294+ c:identifier="pango_cairo_font_map_set_resolution"
295+ version="1.10">
296+ <doc xml:space="preserve"
297+ filename="../pango/pangocairo-fontmap.c"
298+ line="223">Sets the resolution for the fontmap.
299+
300+This is a scale factor between
301+points specified in a `PangoFontDescription` and Cairo units. The
302+default value is 96, meaning that a 10 point font will be 13
303+units high. (10 * 96. / 72. = 13.3).</doc>
304+ <source-position filename="../pango/pangocairo.h" line="117"/>
305+ <return-value transfer-ownership="none">
306+ <type name="none" c:type="void"/>
307+ </return-value>
308+ <parameters>
309+ <instance-parameter name="fontmap" transfer-ownership="none">
310+ <doc xml:space="preserve"
311+ filename="../pango/pangocairo-fontmap.c"
312+ line="225">a `PangoCairoFontMap`</doc>
313+ <type name="FontMap" c:type="PangoCairoFontMap*"/>
314+ </instance-parameter>
315+ <parameter name="dpi" transfer-ownership="none">
316+ <doc xml:space="preserve"
317+ filename="../pango/pangocairo-fontmap.c"
318+ line="226">the resolution in "dots per inch". (Physical inches aren't actually
319+ involved; the terminology is conventional.)</doc>
320+ <type name="gdouble" c:type="double"/>
321+ </parameter>
322+ </parameters>
323+ </method>
324+ </interface>
325+ <function-macro name="IS_FONT"
326+ c:identifier="PANGO_CAIRO_IS_FONT"
327+ introspectable="0">
328+ <source-position filename="../pango/pangocairo.h" line="50"/>
329+ <parameters>
330+ <parameter name="obj">
331+ </parameter>
332+ </parameters>
333+ </function-macro>
334+ <function-macro name="IS_FONT_MAP"
335+ c:identifier="PANGO_CAIRO_IS_FONT_MAP"
336+ introspectable="0">
337+ <source-position filename="../pango/pangocairo.h" line="73"/>
338+ <parameters>
339+ <parameter name="obj">
340+ </parameter>
341+ </parameters>
342+ </function-macro>
343+ <callback name="ShapeRendererFunc" c:type="PangoCairoShapeRendererFunc">
344+ <doc xml:space="preserve"
345+ filename="../pango/pangocairo.h"
346+ line="80">Function type for rendering attributes of type %PANGO_ATTR_SHAPE
347+with Pango's Cairo renderer.</doc>
348+ <source-position filename="../pango/pangocairo.h" line="94"/>
349+ <return-value transfer-ownership="none">
350+ <type name="none" c:type="void"/>
351+ </return-value>
352+ <parameters>
353+ <parameter name="cr" transfer-ownership="none">
354+ <doc xml:space="preserve"
355+ filename="../pango/pangocairo.h"
356+ line="82">a Cairo context with current point set to where the shape should
357+be rendered</doc>
358+ <type name="cairo.Context" c:type="cairo_t*"/>
359+ </parameter>
360+ <parameter name="attr" transfer-ownership="none">
361+ <doc xml:space="preserve"
362+ filename="../pango/pangocairo.h"
363+ line="84">the %PANGO_ATTR_SHAPE to render</doc>
364+ <type name="Pango.AttrShape" c:type="PangoAttrShape*"/>
365+ </parameter>
366+ <parameter name="do_path" transfer-ownership="none">
367+ <doc xml:space="preserve"
368+ filename="../pango/pangocairo.h"
369+ line="85">whether only the shape path should be appended to current
370+path of @cr and no filling/stroking done. This will be set
371+to %TRUE when called from pango_cairo_layout_path() and
372+pango_cairo_layout_line_path() rendering functions.</doc>
373+ <type name="gboolean" c:type="gboolean"/>
374+ </parameter>
375+ <parameter name="data"
376+ transfer-ownership="none"
377+ nullable="1"
378+ allow-none="1"
379+ closure="3">
380+ <doc xml:space="preserve"
381+ filename="../pango/pangocairo.h"
382+ line="89">user data passed to pango_cairo_context_set_shape_renderer()</doc>
383+ <type name="gpointer" c:type="gpointer"/>
384+ </parameter>
385+ </parameters>
386+ </callback>
387+ <function name="context_get_font_options"
388+ c:identifier="pango_cairo_context_get_font_options"
389+ version="1.10">
390+ <doc xml:space="preserve"
391+ filename="../pango/pangocairo-context.c"
392+ line="284">Retrieves any font rendering options previously set with
393+[func@PangoCairo.context_set_font_options].
394+
395+This function does not report options that are derived from
396+the target surface by [func@update_context].</doc>
397+ <source-position filename="../pango/pangocairo.h" line="145"/>
398+ <return-value transfer-ownership="none" nullable="1">
399+ <doc xml:space="preserve"
400+ filename="../pango/pangocairo-context.c"
401+ line="294">the font options previously set on the
402+ context, or %NULL if no options have been set. This value is
403+ owned by the context and must not be modified or freed.</doc>
404+ <type name="cairo.FontOptions" c:type="const cairo_font_options_t*"/>
405+ </return-value>
406+ <parameters>
407+ <parameter name="context" transfer-ownership="none">
408+ <doc xml:space="preserve"
409+ filename="../pango/pangocairo-context.c"
410+ line="286">a `PangoContext`, from a pangocairo font map</doc>
411+ <type name="Pango.Context" c:type="PangoContext*"/>
412+ </parameter>
413+ </parameters>
414+ </function>
415+ <function name="context_get_resolution"
416+ c:identifier="pango_cairo_context_get_resolution"
417+ version="1.10">
418+ <doc xml:space="preserve"
419+ filename="../pango/pangocairo-context.c"
420+ line="205">Gets the resolution for the context.
421+
422+See [func@PangoCairo.context_set_resolution]</doc>
423+ <source-position filename="../pango/pangocairo.h" line="151"/>
424+ <return-value transfer-ownership="none">
425+ <doc xml:space="preserve"
426+ filename="../pango/pangocairo-context.c"
427+ line="213">the resolution in "dots per inch". A negative value will
428+ be returned if no resolution has previously been set.</doc>
429+ <type name="gdouble" c:type="double"/>
430+ </return-value>
431+ <parameters>
432+ <parameter name="context" transfer-ownership="none">
433+ <doc xml:space="preserve"
434+ filename="../pango/pangocairo-context.c"
435+ line="207">a `PangoContext`, from a pangocairo font map</doc>
436+ <type name="Pango.Context" c:type="PangoContext*"/>
437+ </parameter>
438+ </parameters>
439+ </function>
440+ <function name="context_get_shape_renderer"
441+ c:identifier="pango_cairo_context_get_shape_renderer"
442+ version="1.18"
443+ introspectable="0">
444+ <doc xml:space="preserve"
445+ filename="../pango/pangocairo-context.c"
446+ line="380">Sets callback function for context to use for rendering attributes
447+of type %PANGO_ATTR_SHAPE.
448+
449+See `PangoCairoShapeRendererFunc` for details.
450+
451+Retrieves callback function and associated user data for rendering
452+attributes of type %PANGO_ATTR_SHAPE as set by
453+[func@PangoCairo.context_set_shape_renderer], if any.</doc>
454+ <source-position filename="../pango/pangocairo.h" line="159"/>
455+ <return-value transfer-ownership="none" nullable="1">
456+ <doc xml:space="preserve"
457+ filename="../pango/pangocairo-context.c"
458+ line="394">the shape rendering callback
459+ previously set on the context, or %NULL if no shape rendering callback
460+ have been set.</doc>
461+ <type name="ShapeRendererFunc" c:type="PangoCairoShapeRendererFunc"/>
462+ </return-value>
463+ <parameters>
464+ <parameter name="context" transfer-ownership="none">
465+ <doc xml:space="preserve"
466+ filename="../pango/pangocairo-context.c"
467+ line="382">a `PangoContext`, from a pangocairo font map</doc>
468+ <type name="Pango.Context" c:type="PangoContext*"/>
469+ </parameter>
470+ <parameter name="data"
471+ transfer-ownership="none"
472+ nullable="1"
473+ allow-none="1">
474+ <doc xml:space="preserve"
475+ filename="../pango/pangocairo-context.c"
476+ line="383">Pointer to `gpointer` to return user data</doc>
477+ <type name="gpointer" c:type="gpointer*"/>
478+ </parameter>
479+ </parameters>
480+ </function>
481+ <function name="context_set_font_options"
482+ c:identifier="pango_cairo_context_set_font_options"
483+ version="1.10">
484+ <doc xml:space="preserve"
485+ filename="../pango/pangocairo-context.c"
486+ line="229">Sets the font options used when rendering text with this context.
487+
488+These options override any options that [func@update_context]
489+derives from the target surface.</doc>
490+ <source-position filename="../pango/pangocairo.h" line="142"/>
491+ <return-value transfer-ownership="none">
492+ <type name="none" c:type="void"/>
493+ </return-value>
494+ <parameters>
495+ <parameter name="context" transfer-ownership="none">
496+ <doc xml:space="preserve"
497+ filename="../pango/pangocairo-context.c"
498+ line="231">a `PangoContext`, from a pangocairo font map</doc>
499+ <type name="Pango.Context" c:type="PangoContext*"/>
500+ </parameter>
501+ <parameter name="options"
502+ transfer-ownership="none"
503+ nullable="1"
504+ allow-none="1">
505+ <doc xml:space="preserve"
506+ filename="../pango/pangocairo-context.c"
507+ line="232">a `cairo_font_options_t`, or %NULL to unset
508+ any previously set options. A copy is made.</doc>
509+ <type name="cairo.FontOptions" c:type="const cairo_font_options_t*"/>
510+ </parameter>
511+ </parameters>
512+ </function>
513+ <function name="context_set_resolution"
514+ c:identifier="pango_cairo_context_set_resolution"
515+ version="1.10">
516+ <doc xml:space="preserve"
517+ filename="../pango/pangocairo-context.c"
518+ line="182">Sets the resolution for the context.
519+
520+This is a scale factor between points specified in a `PangoFontDescription`
521+and Cairo units. The default value is 96, meaning that a 10 point font will
522+be 13 units high. (10 * 96. / 72. = 13.3).</doc>
523+ <source-position filename="../pango/pangocairo.h" line="148"/>
524+ <return-value transfer-ownership="none">
525+ <type name="none" c:type="void"/>
526+ </return-value>
527+ <parameters>
528+ <parameter name="context" transfer-ownership="none">
529+ <doc xml:space="preserve"
530+ filename="../pango/pangocairo-context.c"
531+ line="184">a `PangoContext`, from a pangocairo font map</doc>
532+ <type name="Pango.Context" c:type="PangoContext*"/>
533+ </parameter>
534+ <parameter name="dpi" transfer-ownership="none">
535+ <doc xml:space="preserve"
536+ filename="../pango/pangocairo-context.c"
537+ line="185">the resolution in "dots per inch". (Physical inches aren't actually
538+ involved; the terminology is conventional.) A 0 or negative value
539+ means to use the resolution from the font map.</doc>
540+ <type name="gdouble" c:type="double"/>
541+ </parameter>
542+ </parameters>
543+ </function>
544+ <function name="context_set_shape_renderer"
545+ c:identifier="pango_cairo_context_set_shape_renderer"
546+ version="1.18">
547+ <doc xml:space="preserve"
548+ filename="../pango/pangocairo-context.c"
549+ line="344">Sets callback function for context to use for rendering attributes
550+of type %PANGO_ATTR_SHAPE.
551+
552+See `PangoCairoShapeRendererFunc` for details.</doc>
553+ <source-position filename="../pango/pangocairo.h" line="154"/>
554+ <return-value transfer-ownership="none">
555+ <type name="none" c:type="void"/>
556+ </return-value>
557+ <parameters>
558+ <parameter name="context" transfer-ownership="none">
559+ <doc xml:space="preserve"
560+ filename="../pango/pangocairo-context.c"
561+ line="346">a `PangoContext`, from a pangocairo font map</doc>
562+ <type name="Pango.Context" c:type="PangoContext*"/>
563+ </parameter>
564+ <parameter name="func"
565+ transfer-ownership="none"
566+ nullable="1"
567+ allow-none="1"
568+ scope="notified"
569+ closure="2"
570+ destroy="3">
571+ <doc xml:space="preserve"
572+ filename="../pango/pangocairo-context.c"
573+ line="347">Callback function for rendering attributes of
574+ type %PANGO_ATTR_SHAPE, or %NULL to disable shape rendering.</doc>
575+ <type name="ShapeRendererFunc" c:type="PangoCairoShapeRendererFunc"/>
576+ </parameter>
577+ <parameter name="data"
578+ transfer-ownership="none"
579+ nullable="1"
580+ allow-none="1">
581+ <doc xml:space="preserve"
582+ filename="../pango/pangocairo-context.c"
583+ line="349">User data that will be passed to @func.</doc>
584+ <type name="gpointer" c:type="gpointer"/>
585+ </parameter>
586+ <parameter name="dnotify"
587+ transfer-ownership="none"
588+ nullable="1"
589+ allow-none="1"
590+ scope="async">
591+ <doc xml:space="preserve"
592+ filename="../pango/pangocairo-context.c"
593+ line="350">Callback that will be called when the
594+ context is freed to release @data</doc>
595+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
596+ </parameter>
597+ </parameters>
598+ </function>
599+ <function name="create_context"
600+ c:identifier="pango_cairo_create_context"
601+ version="1.22">
602+ <doc xml:space="preserve"
603+ filename="../pango/pangocairo-context.c"
604+ line="424">Creates a context object set up to match the current transformation
605+and target surface of the Cairo context.
606+
607+This context can then be
608+used to create a layout using [ctor@Pango.Layout.new].
609+
610+This function is a convenience function that creates a context using
611+the default font map, then updates it to @cr. If you just need to
612+create a layout for use with @cr and do not need to access `PangoContext`
613+directly, you can use [func@create_layout] instead.</doc>
614+ <source-position filename="../pango/pangocairo.h" line="165"/>
615+ <return-value transfer-ownership="full">
616+ <doc xml:space="preserve"
617+ filename="../pango/pangocairo-context.c"
618+ line="439">the newly created `PangoContext`</doc>
619+ <type name="Pango.Context" c:type="PangoContext*"/>
620+ </return-value>
621+ <parameters>
622+ <parameter name="cr" transfer-ownership="none">
623+ <doc xml:space="preserve"
624+ filename="../pango/pangocairo-context.c"
625+ line="426">a Cairo context</doc>
626+ <type name="cairo.Context" c:type="cairo_t*"/>
627+ </parameter>
628+ </parameters>
629+ </function>
630+ <function name="create_layout"
631+ c:identifier="pango_cairo_create_layout"
632+ version="1.10">
633+ <doc xml:space="preserve"
634+ filename="../pango/pangocairo-context.c"
635+ line="458">Creates a layout object set up to match the current transformation
636+and target surface of the Cairo context.
637+
638+This layout can then be used for text measurement with functions
639+like [method@Pango.Layout.get_size] or drawing with functions like
640+[func@show_layout]. If you change the transformation or target
641+surface for @cr, you need to call [func@update_layout].
642+
643+This function is the most convenient way to use Cairo with Pango,
644+however it is slightly inefficient since it creates a separate
645+`PangoContext` object for each layout. This might matter in an
646+application that was laying out large amounts of text.</doc>
647+ <source-position filename="../pango/pangocairo.h" line="167"/>
648+ <return-value transfer-ownership="full">
649+ <doc xml:space="preserve"
650+ filename="../pango/pangocairo-context.c"
651+ line="475">the newly created `PangoLayout`</doc>
652+ <type name="Pango.Layout" c:type="PangoLayout*"/>
653+ </return-value>
654+ <parameters>
655+ <parameter name="cr" transfer-ownership="none">
656+ <doc xml:space="preserve"
657+ filename="../pango/pangocairo-context.c"
658+ line="460">a Cairo context</doc>
659+ <type name="cairo.Context" c:type="cairo_t*"/>
660+ </parameter>
661+ </parameters>
662+ </function>
663+ <function name="error_underline_path"
664+ c:identifier="pango_cairo_error_underline_path"
665+ version="1.14">
666+ <doc xml:space="preserve"
667+ filename="../pango/pangocairo-render.c"
668+ line="1244">Add a squiggly line to the current path in the specified cairo context that
669+approximately covers the given rectangle in the style of an underline used
670+to indicate a spelling error.
671+
672+The width of the underline is rounded to an integer number of up/down
673+segments and the resulting rectangle is centered in the original rectangle.</doc>
674+ <source-position filename="../pango/pangocairo.h" line="212"/>
675+ <return-value transfer-ownership="none">
676+ <type name="none" c:type="void"/>
677+ </return-value>
678+ <parameters>
679+ <parameter name="cr" transfer-ownership="none">
680+ <doc xml:space="preserve"
681+ filename="../pango/pangocairo-render.c"
682+ line="1246">a Cairo context</doc>
683+ <type name="cairo.Context" c:type="cairo_t*"/>
684+ </parameter>
685+ <parameter name="x" transfer-ownership="none">
686+ <doc xml:space="preserve"
687+ filename="../pango/pangocairo-render.c"
688+ line="1247">The X coordinate of one corner of the rectangle</doc>
689+ <type name="gdouble" c:type="double"/>
690+ </parameter>
691+ <parameter name="y" transfer-ownership="none">
692+ <doc xml:space="preserve"
693+ filename="../pango/pangocairo-render.c"
694+ line="1248">The Y coordinate of one corner of the rectangle</doc>
695+ <type name="gdouble" c:type="double"/>
696+ </parameter>
697+ <parameter name="width" transfer-ownership="none">
698+ <doc xml:space="preserve"
699+ filename="../pango/pangocairo-render.c"
700+ line="1249">Non-negative width of the rectangle</doc>
701+ <type name="gdouble" c:type="double"/>
702+ </parameter>
703+ <parameter name="height" transfer-ownership="none">
704+ <doc xml:space="preserve"
705+ filename="../pango/pangocairo-render.c"
706+ line="1250">Non-negative height of the rectangle</doc>
707+ <type name="gdouble" c:type="double"/>
708+ </parameter>
709+ </parameters>
710+ </function>
711+ <function name="font_map_get_default"
712+ c:identifier="pango_cairo_font_map_get_default"
713+ moved-to="FontMap.get_default"
714+ version="1.10">
715+ <doc xml:space="preserve"
716+ filename="../pango/pangocairo-fontmap.c"
717+ line="151">Gets a default `PangoCairoFontMap` to use with Cairo.
718+
719+Note that the type of the returned object will depend on the
720+particular font backend Cairo was compiled to use; you generally
721+should only use the `PangoFontMap` and `PangoCairoFontMap`
722+interfaces on the returned object.
723+
724+The default Cairo fontmap can be changed by using
725+[method@PangoCairo.FontMap.set_default]. This can be used to
726+change the Cairo font backend that the default fontmap uses
727+for example.
728+
729+Note that since Pango 1.32.6, the default fontmap is per-thread.
730+Each thread gets its own default fontmap. In this way, PangoCairo
731+can be used safely from multiple threads.</doc>
732+ <source-position filename="../pango/pangocairo.h" line="110"/>
733+ <return-value transfer-ownership="none">
734+ <doc xml:space="preserve"
735+ filename="../pango/pangocairo-fontmap.c"
736+ line="170">the default PangoCairo fontmap
737+ for the current thread. This object is owned by Pango and must
738+ not be freed.</doc>
739+ <type name="Pango.FontMap" c:type="PangoFontMap*"/>
740+ </return-value>
741+ </function>
742+ <function name="font_map_new"
743+ c:identifier="pango_cairo_font_map_new"
744+ moved-to="FontMap.new"
745+ version="1.10">
746+ <doc xml:space="preserve"
747+ filename="../pango/pangocairo-fontmap.c"
748+ line="47">Creates a new `PangoCairoFontMap` object.
749+
750+A fontmap is used to cache information about available fonts,
751+and holds certain global parameters such as the resolution.
752+In most cases, you can use `func@PangoCairo.font_map_get_default]
753+instead.
754+
755+Note that the type of the returned object will depend
756+on the particular font backend Cairo was compiled to use;
757+You generally should only use the `PangoFontMap` and
758+`PangoCairoFontMap` interfaces on the returned object.
759+
760+You can override the type of backend returned by using an
761+environment variable %PANGOCAIRO_BACKEND. Supported types,
762+based on your build, are fc (fontconfig), win32, and coretext.
763+If requested type is not available, NULL is returned. Ie.
764+this is only useful for testing, when at least two backends
765+are compiled in.</doc>
766+ <source-position filename="../pango/pangocairo.h" line="106"/>
767+ <return-value transfer-ownership="full">
768+ <doc xml:space="preserve"
769+ filename="../pango/pangocairo-fontmap.c"
770+ line="69">the newly allocated `PangoFontMap`,
771+ which should be freed with g_object_unref().</doc>
772+ <type name="Pango.FontMap" c:type="PangoFontMap*"/>
773+ </return-value>
774+ </function>
775+ <function name="font_map_new_for_font_type"
776+ c:identifier="pango_cairo_font_map_new_for_font_type"
777+ moved-to="FontMap.new_for_font_type"
778+ version="1.18">
779+ <doc xml:space="preserve"
780+ filename="../pango/pangocairo-fontmap.c"
781+ line="110">Creates a new `PangoCairoFontMap` object of the type suitable
782+to be used with cairo font backend of type @fonttype.
783+
784+In most cases one should simply use [func@PangoCairo.FontMap.new], or
785+in fact in most of those cases, just use [func@PangoCairo.FontMap.get_default].</doc>
786+ <source-position filename="../pango/pangocairo.h" line="108"/>
787+ <return-value transfer-ownership="full" nullable="1">
788+ <doc xml:space="preserve"
789+ filename="../pango/pangocairo-fontmap.c"
790+ line="120">the newly allocated
791+ `PangoFontMap` of suitable type which should be freed with
792+ g_object_unref(), or %NULL if the requested cairo font backend
793+ is not supported / compiled in.</doc>
794+ <type name="Pango.FontMap" c:type="PangoFontMap*"/>
795+ </return-value>
796+ <parameters>
797+ <parameter name="fonttype" transfer-ownership="none">
798+ <doc xml:space="preserve"
799+ filename="../pango/pangocairo-fontmap.c"
800+ line="112">desired #cairo_font_type_t</doc>
801+ <type name="cairo.FontType" c:type="cairo_font_type_t"/>
802+ </parameter>
803+ </parameters>
804+ </function>
805+ <function name="glyph_string_path"
806+ c:identifier="pango_cairo_glyph_string_path"
807+ version="1.10">
808+ <doc xml:space="preserve"
809+ filename="../pango/pangocairo-render.c"
810+ line="1173">Adds the glyphs in @glyphs to the current path in the specified
811+cairo context.
812+
813+The origin of the glyphs (the left edge of the baseline)
814+will be at the current point of the cairo context.</doc>
815+ <source-position filename="../pango/pangocairo.h" line="201"/>
816+ <return-value transfer-ownership="none">
817+ <type name="none" c:type="void"/>
818+ </return-value>
819+ <parameters>
820+ <parameter name="cr" transfer-ownership="none">
821+ <doc xml:space="preserve"
822+ filename="../pango/pangocairo-render.c"
823+ line="1175">a Cairo context</doc>
824+ <type name="cairo.Context" c:type="cairo_t*"/>
825+ </parameter>
826+ <parameter name="font" transfer-ownership="none">
827+ <doc xml:space="preserve"
828+ filename="../pango/pangocairo-render.c"
829+ line="1176">a `PangoFont` from a `PangoCairoFontMap`</doc>
830+ <type name="Pango.Font" c:type="PangoFont*"/>
831+ </parameter>
832+ <parameter name="glyphs" transfer-ownership="none">
833+ <doc xml:space="preserve"
834+ filename="../pango/pangocairo-render.c"
835+ line="1177">a `PangoGlyphString`</doc>
836+ <type name="Pango.GlyphString" c:type="PangoGlyphString*"/>
837+ </parameter>
838+ </parameters>
839+ </function>
840+ <function name="layout_line_path"
841+ c:identifier="pango_cairo_layout_line_path"
842+ version="1.10">
843+ <doc xml:space="preserve"
844+ filename="../pango/pangocairo-render.c"
845+ line="1198">Adds the text in `PangoLayoutLine` to the current path in the
846+specified cairo context.
847+
848+The origin of the glyphs (the left edge of the line) will be
849+at the current point of the cairo context.</doc>
850+ <source-position filename="../pango/pangocairo.h" line="205"/>
851+ <return-value transfer-ownership="none">
852+ <type name="none" c:type="void"/>
853+ </return-value>
854+ <parameters>
855+ <parameter name="cr" transfer-ownership="none">
856+ <doc xml:space="preserve"
857+ filename="../pango/pangocairo-render.c"
858+ line="1200">a Cairo context</doc>
859+ <type name="cairo.Context" c:type="cairo_t*"/>
860+ </parameter>
861+ <parameter name="line" transfer-ownership="none">
862+ <doc xml:space="preserve"
863+ filename="../pango/pangocairo-render.c"
864+ line="1201">a `PangoLayoutLine`</doc>
865+ <type name="Pango.LayoutLine" c:type="PangoLayoutLine*"/>
866+ </parameter>
867+ </parameters>
868+ </function>
869+ <function name="layout_path"
870+ c:identifier="pango_cairo_layout_path"
871+ version="1.10">
872+ <doc xml:space="preserve"
873+ filename="../pango/pangocairo-render.c"
874+ line="1221">Adds the text in a `PangoLayout` to the current path in the
875+specified cairo context.
876+
877+The top-left corner of the `PangoLayout` will be at the
878+current point of the cairo context.</doc>
879+ <source-position filename="../pango/pangocairo.h" line="208"/>
880+ <return-value transfer-ownership="none">
881+ <type name="none" c:type="void"/>
882+ </return-value>
883+ <parameters>
884+ <parameter name="cr" transfer-ownership="none">
885+ <doc xml:space="preserve"
886+ filename="../pango/pangocairo-render.c"
887+ line="1223">a Cairo context</doc>
888+ <type name="cairo.Context" c:type="cairo_t*"/>
889+ </parameter>
890+ <parameter name="layout" transfer-ownership="none">
891+ <doc xml:space="preserve"
892+ filename="../pango/pangocairo-render.c"
893+ line="1224">a Pango layout</doc>
894+ <type name="Pango.Layout" c:type="PangoLayout*"/>
895+ </parameter>
896+ </parameters>
897+ </function>
898+ <function name="show_error_underline"
899+ c:identifier="pango_cairo_show_error_underline"
900+ version="1.14">
901+ <doc xml:space="preserve"
902+ filename="../pango/pangocairo-render.c"
903+ line="1142">Draw a squiggly line in the specified cairo context that approximately
904+covers the given rectangle in the style of an underline used to indicate a
905+spelling error.
906+
907+The width of the underline is rounded to an integer
908+number of up/down segments and the resulting rectangle is centered in the
909+original rectangle.</doc>
910+ <source-position filename="../pango/pangocairo.h" line="191"/>
911+ <return-value transfer-ownership="none">
912+ <type name="none" c:type="void"/>
913+ </return-value>
914+ <parameters>
915+ <parameter name="cr" transfer-ownership="none">
916+ <doc xml:space="preserve"
917+ filename="../pango/pangocairo-render.c"
918+ line="1144">a Cairo context</doc>
919+ <type name="cairo.Context" c:type="cairo_t*"/>
920+ </parameter>
921+ <parameter name="x" transfer-ownership="none">
922+ <doc xml:space="preserve"
923+ filename="../pango/pangocairo-render.c"
924+ line="1145">The X coordinate of one corner of the rectangle</doc>
925+ <type name="gdouble" c:type="double"/>
926+ </parameter>
927+ <parameter name="y" transfer-ownership="none">
928+ <doc xml:space="preserve"
929+ filename="../pango/pangocairo-render.c"
930+ line="1146">The Y coordinate of one corner of the rectangle</doc>
931+ <type name="gdouble" c:type="double"/>
932+ </parameter>
933+ <parameter name="width" transfer-ownership="none">
934+ <doc xml:space="preserve"
935+ filename="../pango/pangocairo-render.c"
936+ line="1147">Non-negative width of the rectangle</doc>
937+ <type name="gdouble" c:type="double"/>
938+ </parameter>
939+ <parameter name="height" transfer-ownership="none">
940+ <doc xml:space="preserve"
941+ filename="../pango/pangocairo-render.c"
942+ line="1148">Non-negative height of the rectangle</doc>
943+ <type name="gdouble" c:type="double"/>
944+ </parameter>
945+ </parameters>
946+ </function>
947+ <function name="show_glyph_item"
948+ c:identifier="pango_cairo_show_glyph_item"
949+ version="1.22">
950+ <doc xml:space="preserve"
951+ filename="../pango/pangocairo-render.c"
952+ line="1066">Draws the glyphs in @glyph_item in the specified cairo context,
953+
954+embedding the text associated with the glyphs in the output if the
955+output format supports it (PDF for example), otherwise it acts
956+similar to [func@show_glyph_string].
957+
958+The origin of the glyphs (the left edge of the baseline) will
959+be drawn at the current point of the cairo context.
960+
961+Note that @text is the start of the text for layout, which is then
962+indexed by `glyph_item-&gt;item-&gt;offset`.</doc>
963+ <source-position filename="../pango/pangocairo.h" line="180"/>
964+ <return-value transfer-ownership="none">
965+ <type name="none" c:type="void"/>
966+ </return-value>
967+ <parameters>
968+ <parameter name="cr" transfer-ownership="none">
969+ <doc xml:space="preserve"
970+ filename="../pango/pangocairo-render.c"
971+ line="1068">a Cairo context</doc>
972+ <type name="cairo.Context" c:type="cairo_t*"/>
973+ </parameter>
974+ <parameter name="text" transfer-ownership="none">
975+ <doc xml:space="preserve"
976+ filename="../pango/pangocairo-render.c"
977+ line="1069">the UTF-8 text that @glyph_item refers to</doc>
978+ <type name="utf8" c:type="const char*"/>
979+ </parameter>
980+ <parameter name="glyph_item" transfer-ownership="none">
981+ <doc xml:space="preserve"
982+ filename="../pango/pangocairo-render.c"
983+ line="1070">a `PangoGlyphItem`</doc>
984+ <type name="Pango.GlyphItem" c:type="PangoGlyphItem*"/>
985+ </parameter>
986+ </parameters>
987+ </function>
988+ <function name="show_glyph_string"
989+ c:identifier="pango_cairo_show_glyph_string"
990+ version="1.10">
991+ <doc xml:space="preserve"
992+ filename="../pango/pangocairo-render.c"
993+ line="1041">Draws the glyphs in @glyphs in the specified cairo context.
994+
995+The origin of the glyphs (the left edge of the baseline) will
996+be drawn at the current point of the cairo context.</doc>
997+ <source-position filename="../pango/pangocairo.h" line="176"/>
998+ <return-value transfer-ownership="none">
999+ <type name="none" c:type="void"/>
1000+ </return-value>
1001+ <parameters>
1002+ <parameter name="cr" transfer-ownership="none">
1003+ <doc xml:space="preserve"
1004+ filename="../pango/pangocairo-render.c"
1005+ line="1043">a Cairo context</doc>
1006+ <type name="cairo.Context" c:type="cairo_t*"/>
1007+ </parameter>
1008+ <parameter name="font" transfer-ownership="none">
1009+ <doc xml:space="preserve"
1010+ filename="../pango/pangocairo-render.c"
1011+ line="1044">a `PangoFont` from a `PangoCairoFontMap`</doc>
1012+ <type name="Pango.Font" c:type="PangoFont*"/>
1013+ </parameter>
1014+ <parameter name="glyphs" transfer-ownership="none">
1015+ <doc xml:space="preserve"
1016+ filename="../pango/pangocairo-render.c"
1017+ line="1045">a `PangoGlyphString`</doc>
1018+ <type name="Pango.GlyphString" c:type="PangoGlyphString*"/>
1019+ </parameter>
1020+ </parameters>
1021+ </function>
1022+ <function name="show_layout"
1023+ c:identifier="pango_cairo_show_layout"
1024+ version="1.10">
1025+ <doc xml:space="preserve"
1026+ filename="../pango/pangocairo-render.c"
1027+ line="1120">Draws a `PangoLayout` in the specified cairo context.
1028+
1029+The top-left corner of the `PangoLayout` will be drawn
1030+at the current point of the cairo context.</doc>
1031+ <source-position filename="../pango/pangocairo.h" line="187"/>
1032+ <return-value transfer-ownership="none">
1033+ <type name="none" c:type="void"/>
1034+ </return-value>
1035+ <parameters>
1036+ <parameter name="cr" transfer-ownership="none">
1037+ <doc xml:space="preserve"
1038+ filename="../pango/pangocairo-render.c"
1039+ line="1122">a Cairo context</doc>
1040+ <type name="cairo.Context" c:type="cairo_t*"/>
1041+ </parameter>
1042+ <parameter name="layout" transfer-ownership="none">
1043+ <doc xml:space="preserve"
1044+ filename="../pango/pangocairo-render.c"
1045+ line="1123">a Pango layout</doc>
1046+ <type name="Pango.Layout" c:type="PangoLayout*"/>
1047+ </parameter>
1048+ </parameters>
1049+ </function>
1050+ <function name="show_layout_line"
1051+ c:identifier="pango_cairo_show_layout_line"
1052+ version="1.10">
1053+ <doc xml:space="preserve"
1054+ filename="../pango/pangocairo-render.c"
1055+ line="1098">Draws a `PangoLayoutLine` in the specified cairo context.
1056+
1057+The origin of the glyphs (the left edge of the line) will
1058+be drawn at the current point of the cairo context.</doc>
1059+ <source-position filename="../pango/pangocairo.h" line="184"/>
1060+ <return-value transfer-ownership="none">
1061+ <type name="none" c:type="void"/>
1062+ </return-value>
1063+ <parameters>
1064+ <parameter name="cr" transfer-ownership="none">
1065+ <doc xml:space="preserve"
1066+ filename="../pango/pangocairo-render.c"
1067+ line="1100">a Cairo context</doc>
1068+ <type name="cairo.Context" c:type="cairo_t*"/>
1069+ </parameter>
1070+ <parameter name="line" transfer-ownership="none">
1071+ <doc xml:space="preserve"
1072+ filename="../pango/pangocairo-render.c"
1073+ line="1101">a `PangoLayoutLine`</doc>
1074+ <type name="Pango.LayoutLine" c:type="PangoLayoutLine*"/>
1075+ </parameter>
1076+ </parameters>
1077+ </function>
1078+ <function name="update_context"
1079+ c:identifier="pango_cairo_update_context"
1080+ version="1.10">
1081+ <doc xml:space="preserve"
1082+ filename="../pango/pangocairo-context.c"
1083+ line="158">Updates a `PangoContext` previously created for use with Cairo to
1084+match the current transformation and target surface of a Cairo
1085+context.
1086+
1087+If any layouts have been created for the context, it's necessary
1088+to call [method@Pango.Layout.context_changed] on those layouts.</doc>
1089+ <source-position filename="../pango/pangocairo.h" line="138"/>
1090+ <return-value transfer-ownership="none">
1091+ <type name="none" c:type="void"/>
1092+ </return-value>
1093+ <parameters>
1094+ <parameter name="cr" transfer-ownership="none">
1095+ <doc xml:space="preserve"
1096+ filename="../pango/pangocairo-context.c"
1097+ line="160">a Cairo context</doc>
1098+ <type name="cairo.Context" c:type="cairo_t*"/>
1099+ </parameter>
1100+ <parameter name="context" transfer-ownership="none">
1101+ <doc xml:space="preserve"
1102+ filename="../pango/pangocairo-context.c"
1103+ line="161">a `PangoContext`, from a pangocairo font map</doc>
1104+ <type name="Pango.Context" c:type="PangoContext*"/>
1105+ </parameter>
1106+ </parameters>
1107+ </function>
1108+ <function name="update_layout"
1109+ c:identifier="pango_cairo_update_layout"
1110+ version="1.10">
1111+ <doc xml:space="preserve"
1112+ filename="../pango/pangocairo-context.c"
1113+ line="494">Updates the private `PangoContext` of a `PangoLayout` created with
1114+[func@create_layout] to match the current transformation and target
1115+surface of a Cairo context.</doc>
1116+ <source-position filename="../pango/pangocairo.h" line="169"/>
1117+ <return-value transfer-ownership="none">
1118+ <type name="none" c:type="void"/>
1119+ </return-value>
1120+ <parameters>
1121+ <parameter name="cr" transfer-ownership="none">
1122+ <doc xml:space="preserve"
1123+ filename="../pango/pangocairo-context.c"
1124+ line="496">a Cairo context</doc>
1125+ <type name="cairo.Context" c:type="cairo_t*"/>
1126+ </parameter>
1127+ <parameter name="layout" transfer-ownership="none">
1128+ <doc xml:space="preserve"
1129+ filename="../pango/pangocairo-context.c"
1130+ line="497">a `PangoLayout`, from [func@create_layout]</doc>
1131+ <type name="Pango.Layout" c:type="PangoLayout*"/>
1132+ </parameter>
1133+ </parameters>
1134+ </function>
1135+ </namespace>
1136+</repository>
A internal/gir/spec/cairo-1.0.gir +688 -0
@@ -0,0 +1,688 @@
1+<?xml version="1.0"?>
2+<repository version="1.2"
3+ xmlns="http://www.gtk.org/introspection/core/1.0"
4+ xmlns:c="http://www.gtk.org/introspection/c/1.0"
5+ xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
6+ <package name="cairo-gobject"/>
7+ <c:include name="cairo-gobject.h"/>
8+ <namespace name="cairo" version="1.0"
9+ shared-library="libcairo-gobject.so.2"
10+ c:identifier-prefixes="cairo"
11+ c:symbol-prefixes="cairo">
12+ <record name="Context" c:type="cairo_t" foreign="1"
13+ glib:type-name="CairoContext"
14+ glib:get-type="cairo_gobject_context_get_type"/>
15+ <record name="Device" c:type="cairo_device_t" foreign="1"
16+ glib:type-name="CairoDevice"
17+ glib:get-type="cairo_gobject_device_get_type"/>
18+ <record name="Surface" c:type="cairo_surface_t" foreign="1"
19+ glib:type-name="CairoSurface"
20+ glib:get-type="cairo_gobject_surface_get_type"/>
21+ <record name="Matrix" c:type="cairo_matrix_t" foreign="1"/>
22+ <record name="Pattern" c:type="cairo_pattern_t" foreign="1"
23+ glib:type-name="CairoPattern"
24+ glib:get-type="cairo_gobject_pattern_get_type"/>
25+ <record name="Region" c:type="cairo_region_t" foreign="1"
26+ glib:type-name="CairoRegion"
27+ glib:get-type="cairo_gobject_region_get_type"/>
28+ <enumeration name="Status" c:type="cairo_status_t"
29+ glib:type-name="cairo_status_t"
30+ glib:get-type="cairo_gobject_status_get_type">
31+ <member name="success"
32+ value="0"
33+ c:identifier="CAIRO_STATUS_SUCCESS"/>
34+ <member name="no_memory"
35+ value="1"
36+ c:identifier="CAIRO_STATUS_NO_MEMORY"/>
37+ <member name="invalid_restore"
38+ value="2"
39+ c:identifier="CAIRO_STATUS_INVALID_RESTORE"/>
40+ <member name="invalid_pop_group"
41+ value="3"
42+ c:identifier="CAIRO_STATUS_INVALID_POP_GROUP"/>
43+ <member name="no_current_point"
44+ value="4"
45+ c:identifier="CAIRO_STATUS_NO_CURRENT_POINT"/>
46+ <member name="invalid_matrix"
47+ value="5"
48+ c:identifier="CAIRO_STATUS_INVALID_MATRIX"/>
49+ <member name="invalid_status"
50+ value="6"
51+ c:identifier="CAIRO_STATUS_INVALID_STATUS"/>
52+ <member name="null_pointer"
53+ value="7"
54+ c:identifier="CAIRO_STATUS_NULL_POINTER"/>
55+ <member name="invalid_string"
56+ value="8"
57+ c:identifier="CAIRO_STATUS_INVALID_STRING"/>
58+ <member name="invalid_path_data"
59+ value="9"
60+ c:identifier="CAIRO_STATUS_INVALID_PATH_DATA"/>
61+ <member name="read_error"
62+ value="10"
63+ c:identifier="CAIRO_STATUS_READ_ERROR"/>
64+ <member name="write_error"
65+ value="11"
66+ c:identifier="CAIRO_STATUS_WRITE_ERROR"/>
67+ <member name="surface_finished"
68+ value="12"
69+ c:identifier="CAIRO_STATUS_SURFACE_FINISHED"/>
70+ <member name="surface_type_mismatch"
71+ value="13"
72+ c:identifier="CAIRO_STATUS_SURFACE_TYPE_MISMATCH"/>
73+ <member name="pattern_type_mismatch"
74+ value="14"
75+ c:identifier="CAIRO_STATUS_PATTERN_TYPE_MISMATCH"/>
76+ <member name="invalid_content"
77+ value="15"
78+ c:identifier="CAIRO_STATUS_INVALID_CONTENT"/>
79+ <member name="invalid_format"
80+ value="16"
81+ c:identifier="CAIRO_STATUS_INVALID_FORMAT"/>
82+ <member name="invalid_visual"
83+ value="17"
84+ c:identifier="CAIRO_STATUS_INVALID_VISUAL"/>
85+ <member name="file_not_found"
86+ value="18"
87+ c:identifier="CAIRO_STATUS_FILE_NOT_FOUND"/>
88+ <member name="invalid_dash"
89+ value="19"
90+ c:identifier="CAIRO_STATUS_INVALID_DASH"/>
91+ <member name="invalid_dsc_comment"
92+ value="20"
93+ c:identifier="CAIRO_STATUS_INVALID_DSC_COMMENT"/>
94+ <member name="invalid_index"
95+ value="21"
96+ c:identifier="CAIRO_STATUS_INVALID_INDEX"/>
97+ <member name="clip_not_representable"
98+ value="22"
99+ c:identifier="CAIRO_STATUS_CLIP_NOT_REPRESENTABLE"/>
100+ <member name="temp_file_error"
101+ value="23"
102+ c:identifier="CAIRO_STATUS_TEMP_FILE_ERROR"/>
103+ <member name="invalid_stride"
104+ value="24"
105+ c:identifier="CAIRO_STATUS_INVALID_STRIDE"/>
106+ <member name="font_type_mismatch"
107+ value="25"
108+ c:identifier="CAIRO_STATUS_FONT_TYPE_MISMATCH"/>
109+ <member name="user_font_immutable"
110+ value="26"
111+ c:identifier="CAIRO_STATUS_USER_FONT_IMMUTABLE"/>
112+ <member name="user_font_error"
113+ value="27"
114+ c:identifier="CAIRO_STATUS_USER_FONT_ERROR"/>
115+ <member name="negative_count"
116+ value="28"
117+ c:identifier="CAIRO_STATUS_NEGATIVE_COUNT"/>
118+ <member name="invalid_clusters"
119+ value="29"
120+ c:identifier="CAIRO_STATUS_INVALID_CLUSTERS"/>
121+ <member name="invalid_slant"
122+ value="30"
123+ c:identifier="CAIRO_STATUS_INVALID_SLANT"/>
124+ <member name="invalid_weight"
125+ value="31"
126+ c:identifier="CAIRO_STATUS_INVALID_WEIGHT"/>
127+ <member name="invalid_size"
128+ value="32"
129+ c:identifier="CAIRO_STATUS_INVALID_SIZE"/>
130+ <member name="user_font_not_implemented"
131+ value="33"
132+ c:identifier="CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED"/>
133+ <member name="device_type_mismatch"
134+ value="34"
135+ c:identifier="CAIRO_STATUS_DEVICE_TYPE_MISMATCH"/>
136+ <member name="device_error"
137+ value="35"
138+ c:identifier="CAIRO_STATUS_DEVICE_ERROR"/>
139+ <member name="invalid_mesh_construction"
140+ value="36"
141+ c:identifier="CAIRO_STATUS_INVALID_MESH_CONSTRUCTION"/>
142+ <member name="device_finished"
143+ value="37"
144+ c:identifier="CAIRO_STATUS_DEVICE_FINISHED"/>
145+ <member name="jbig2_global_missing"
146+ value="38"
147+ c:identifier="CAIRO_STATUS_JBIG2_GLOBAL_MISSING"/>
148+ </enumeration>
149+ <enumeration name="Content" c:type="cairo_content_t"
150+ glib:type-name="cairo_content_t"
151+ glib:get-type="cairo_gobject_content_get_type">
152+ <member name="color"
153+ value="4096"
154+ c:identifier="CAIRO_CONTENT_COLOR"/>
155+ <member name="alpha"
156+ value="8192"
157+ c:identifier="CAIRO_CONTENT_ALPHA"/>
158+ <member name="color_alpha"
159+ value="12288"
160+ c:identifier="CAIRO_CONTENT_COLOR_ALPHA"/>
161+ </enumeration>
162+ <enumeration name="Operator" c:type="cairo_operator_t"
163+ glib:type-name="cairo_operator_t"
164+ glib:get-type="cairo_gobject_operator_get_type">
165+ <member name="clear"
166+ value="0"
167+ c:identifier="CAIRO_OPERATOR_CLEAR"/>
168+ <member name="source"
169+ value="1"
170+ c:identifier="CAIRO_OPERATOR_SOURCE"/>
171+ <member name="over"
172+ value="2"
173+ c:identifier="CAIRO_OPERATOR_OVER"/>
174+ <member name="in"
175+ value="3"
176+ c:identifier="CAIRO_OPERATOR_IN"/>
177+ <member name="out"
178+ value="4"
179+ c:identifier="CAIRO_OPERATOR_OUT"/>
180+ <member name="atop"
181+ value="5"
182+ c:identifier="CAIRO_OPERATOR_ATOP"/>
183+ <member name="dest"
184+ value="6"
185+ c:identifier="CAIRO_OPERATOR_DEST"/>
186+ <member name="dest_over"
187+ value="7"
188+ c:identifier="CAIRO_OPERATOR_DEST_OVER"/>
189+ <member name="dest_in"
190+ value="8"
191+ c:identifier="CAIRO_OPERATOR_DEST_IN"/>
192+ <member name="dest_out"
193+ value="9"
194+ c:identifier="CAIRO_OPERATOR_DEST_OUT"/>
195+ <member name="dest_atop"
196+ value="10"
197+ c:identifier="CAIRO_OPERATOR_DEST_ATOP"/>
198+ <member name="xor"
199+ value="11"
200+ c:identifier="CAIRO_OPERATOR_XOR"/>
201+ <member name="add"
202+ value="12"
203+ c:identifier="CAIRO_OPERATOR_ADD"/>
204+ <member name="saturate"
205+ value="13"
206+ c:identifier="CAIRO_OPERATOR_SATURATE"/>
207+ <member name="multiply"
208+ value="14"
209+ c:identifier="CAIRO_OPERATOR_MULTIPLY"/>
210+ <member name="screen"
211+ value="15"
212+ c:identifier="CAIRO_OPERATOR_SCREEN"/>
213+ <member name="overlay"
214+ value="16"
215+ c:identifier="CAIRO_OPERATOR_OVERLAY"/>
216+ <member name="darken"
217+ value="17"
218+ c:identifier="CAIRO_OPERATOR_DARKEN"/>
219+ <member name="lighten"
220+ value="18"
221+ c:identifier="CAIRO_OPERATOR_LIGHTEN"/>
222+ <member name="color_dodge"
223+ value="19"
224+ c:identifier="CAIRO_OPERATOR_COLOR_DODGE"/>
225+ <member name="color_burn"
226+ value="20"
227+ c:identifier="CAIRO_OPERATOR_COLOR_BURN"/>
228+ <member name="hard_light"
229+ value="21"
230+ c:identifier="CAIRO_OPERATOR_HARD_LIGHT"/>
231+ <member name="soft_light"
232+ value="22"
233+ c:identifier="CAIRO_OPERATOR_SOFT_LIGHT"/>
234+ <member name="difference"
235+ value="23"
236+ c:identifier="CAIRO_OPERATOR_DIFFERENCE"/>
237+ <member name="exclusion"
238+ value="24"
239+ c:identifier="CAIRO_OPERATOR_EXCLUSION"/>
240+ <member name="hsl_hue"
241+ value="25"
242+ c:identifier="CAIRO_OPERATOR_HSL_HUE"/>
243+ <member name="hsl_saturation"
244+ value="26"
245+ c:identifier="CAIRO_OPERATOR_HSL_SATURATION"/>
246+ <member name="hsl_color"
247+ value="27"
248+ c:identifier="CAIRO_OPERATOR_HSL_COLOR"/>
249+ <member name="hsl_luminosity"
250+ value="28"
251+ c:identifier="CAIRO_OPERATOR_HSL_LUMINOSITY"/>
252+ </enumeration>
253+ <enumeration name="Antialias" c:type="cairo_antialias_t"
254+ glib:type-name="cairo_antialias_t"
255+ glib:get-type="cairo_gobject_antialias_get_type">
256+ <member name="default"
257+ value="0"
258+ c:identifier="CAIRO_ANTIALIAS_DEFAULT"/>
259+ <member name="none"
260+ value="1"
261+ c:identifier="CAIRO_ANTIALIAS_NONE"/>
262+ <member name="gray"
263+ value="2"
264+ c:identifier="CAIRO_ANTIALIAS_GRAY"/>
265+ <member name="subpixel"
266+ value="3"
267+ c:identifier="CAIRO_ANTIALIAS_SUBPIXEL"/>
268+ <member name="fast"
269+ value="4"
270+ c:identifier="CAIRO_ANTIALIAS_FAST"/>
271+ <member name="good"
272+ value="5"
273+ c:identifier="CAIRO_ANTIALIAS_GOOD"/>
274+ <member name="best"
275+ value="6"
276+ c:identifier="CAIRO_ANTIALIAS_BEST"/>
277+ </enumeration>
278+ <enumeration name="FillRule" c:type="cairo_fill_rule_t"
279+ glib:type-name="cairo_fill_rule_t"
280+ glib:get-type="cairo_gobject_fill_rule_get_type">
281+ <member name="winding"
282+ value="0"
283+ c:identifier="CAIRO_FILL_RULE_WINDING"/>
284+ <member name="even_odd"
285+ value="1"
286+ c:identifier="CAIRO_FILL_RULE_EVEN_ODD"/>
287+ </enumeration>
288+ <enumeration name="LineCap" c:type="cairo_line_cap_t"
289+ glib:type-name="cairo_line_cap_t"
290+ glib:get-type="cairo_gobject_line_cap_get_type">
291+ <member name="butt"
292+ value="0"
293+ c:identifier="CAIRO_LINE_CAP_BUTT"/>
294+ <member name="round"
295+ value="1"
296+ c:identifier="CAIRO_LINE_CAP_ROUND"/>
297+ <member name="square"
298+ value="2"
299+ c:identifier="CAIRO_LINE_CAP_SQUARE"/>
300+ </enumeration>
301+ <enumeration name="LineJoin" c:type="cairo_line_join_t"
302+ glib:type-name="cairo_line_join_t"
303+ glib:get-type="cairo_gobject_line_join_get_type">
304+ <member name="miter"
305+ value="0"
306+ c:identifier="CAIRO_LINE_JOIN_MITER"/>
307+ <member name="round"
308+ value="1"
309+ c:identifier="CAIRO_LINE_JOIN_ROUND"/>
310+ <member name="bevel"
311+ value="2"
312+ c:identifier="CAIRO_LINE_JOIN_BEVEL"/>
313+ </enumeration>
314+ <enumeration name="TextClusterFlags" c:type="cairo_text_cluster_flags_t"
315+ glib:type-name="cairo_text_cluster_flags_t"
316+ glib:get-type="cairo_gobject_text_cluster_flags_get_type">
317+ <member name="backward"
318+ value="1"
319+ c:identifier="CAIRO_TEXT_CLUSTER_FLAG_BACKWARD"/>
320+ </enumeration>
321+ <enumeration name="FontSlant" c:type="cairo_font_slant_t"
322+ glib:type-name="cairo_font_slant_t"
323+ glib:get-type="cairo_gobject_font_slant_get_type">
324+ <member name="normal"
325+ value="0"
326+ c:identifier="CAIRO_FONT_SLANT_NORMAL"/>
327+ <member name="italic"
328+ value="1"
329+ c:identifier="CAIRO_FONT_SLANT_ITALIC"/>
330+ <member name="oblique"
331+ value="2"
332+ c:identifier="CAIRO_FONT_SLANT_OBLIQUE"/>
333+ </enumeration>
334+ <enumeration name="FontWeight" c:type="cairo_font_weight_t"
335+ glib:type-name="cairo_font_weight_t"
336+ glib:get-type="cairo_gobject_font_weight_get_type">
337+ <member name="normal"
338+ value="0"
339+ c:identifier="CAIRO_FONT_WEIGHT_NORMAL"/>
340+ <member name="bold"
341+ value="1"
342+ c:identifier="CAIRO_FONT_WEIGHT_BOLD"/>
343+ </enumeration>
344+ <enumeration name="SubpixelOrder" c:type="cairo_subpixel_order_t"
345+ glib:type-name="cairo_subpixel_order_t"
346+ glib:get-type="cairo_gobject_subpixel_order_get_type">
347+ <member name="default"
348+ value="0"
349+ c:identifier="CAIRO_SUBPIXEL_ORDER_DEFAULT"/>
350+ <member name="rgb"
351+ value="1"
352+ c:identifier="CAIRO_SUBPIXEL_ORDER_RGB"/>
353+ <member name="bgr"
354+ value="2"
355+ c:identifier="CAIRO_SUBPIXEL_ORDER_BGR"/>
356+ <member name="vrgb"
357+ value="3"
358+ c:identifier="CAIRO_SUBPIXEL_ORDER_VRGB"/>
359+ <member name="vbgr"
360+ value="4"
361+ c:identifier="CAIRO_SUBPIXEL_ORDER_VBGR"/>
362+ </enumeration>
363+ <enumeration name="HintStyle" c:type="cairo_hint_style_t"
364+ glib:type-name="cairo_hint_style_t"
365+ glib:get-type="cairo_gobject_hint_style_get_type">
366+ <member name="default"
367+ value="0"
368+ c:identifier="CAIRO_HINT_STYLE_DEFAULT"/>
369+ <member name="none"
370+ value="1"
371+ c:identifier="CAIRO_HINT_STYLE_NONE"/>
372+ <member name="slight"
373+ value="2"
374+ c:identifier="CAIRO_HINT_STYLE_SLIGHT"/>
375+ <member name="medium"
376+ value="3"
377+ c:identifier="CAIRO_HINT_STYLE_MEDIUM"/>
378+ <member name="full"
379+ value="4"
380+ c:identifier="CAIRO_HINT_STYLE_FULL"/>
381+ </enumeration>
382+ <enumeration name="HintMetrics" c:type="cairo_hint_metrics_t"
383+ glib:type-name="cairo_hint_metrics_t"
384+ glib:get-type="cairo_gobject_hint_metrics_get_type">
385+ <member name="default"
386+ value="0"
387+ c:identifier="CAIRO_HINT_METRICS_DEFAULT"/>
388+ <member name="off"
389+ value="1"
390+ c:identifier="CAIRO_HINT_METRICS_OFF"/>
391+ <member name="on"
392+ value="2"
393+ c:identifier="CAIRO_HINT_METRICS_ON"/>
394+ </enumeration>
395+ <record name="FontOptions" c:type="cairo_font_options_t" foreign="1"
396+ glib:type-name="CairoFontOptions"
397+ glib:get-type="cairo_gobject_font_options_get_type"/>
398+ <enumeration name="FontType" c:type="cairo_font_type_t"
399+ glib:type-name="cairo_font_type_t"
400+ glib:get-type="cairo_gobject_font_type_get_type">
401+ <member name="toy"
402+ value="0"
403+ c:identifier="CAIRO_FONT_TYPE_TOY"/>
404+ <member name="ft"
405+ value="1"
406+ c:identifier="CAIRO_FONT_TYPE_FT"/>
407+ <member name="win32"
408+ value="2"
409+ c:identifier="CAIRO_FONT_TYPE_WIN32"/>
410+ <member name="quartz"
411+ value="3"
412+ c:identifier="CAIRO_FONT_TYPE_QUARTZ"/>
413+ <member name="user"
414+ value="4"
415+ c:identifier="CAIRO_FONT_TYPE_USER"/>
416+ </enumeration>
417+ <enumeration name="PathDataType" c:type="cairo_path_data_type_t"
418+ glib:type-name="cairo_path_data_type_t"
419+ glib:get-type="cairo_gobject_path_data_type_get_type">
420+ <member name="move_to"
421+ value="0"
422+ c:identifier="CAIRO_PATH_MOVE_TO"/>
423+ <member name="line_to"
424+ value="1"
425+ c:identifier="CAIRO_PATH_LINE_TO"/>
426+ <member name="curve_to"
427+ value="2"
428+ c:identifier="CAIRO_PATH_CURVE_TO"/>
429+ <member name="close_path"
430+ value="3"
431+ c:identifier="CAIRO_PATH_CLOSE_PATH"/>
432+ </enumeration>
433+ <enumeration name="DeviceType" c:type="cairo_device_type_t"
434+ glib:type-name="cairo_device_type_t"
435+ glib:get-type="cairo_gobject_device_type_get_type">
436+ <member name="drm"
437+ value="0"
438+ c:identifier="CAIRO_DEVICE_TYPE_DRM"/>
439+ <member name="gl"
440+ value="1"
441+ c:identifier="CAIRO_DEVICE_TYPE_GL"/>
442+ <member name="script"
443+ value="2"
444+ c:identifier="CAIRO_DEVICE_TYPE_SCRIPT"/>
445+ <member name="xcb"
446+ value="3"
447+ c:identifier="CAIRO_DEVICE_TYPE_XCB"/>
448+ <member name="xlib"
449+ value="4"
450+ c:identifier="CAIRO_DEVICE_TYPE_XLIB"/>
451+ <member name="xml"
452+ value="5"
453+ c:identifier="CAIRO_DEVICE_TYPE_XML"/>
454+ <member name="cogl"
455+ value="6"
456+ c:identifier="CAIRO_DEVICE_TYPE_COGL"/>
457+ <member name="win32"
458+ value="7"
459+ c:identifier="CAIRO_DEVICE_TYPE_WIN32"/>
460+ <member name="invalid"
461+ value="-1"
462+ c:identifier="CAIRO_DEVICE_TYPE_INVALID"/>
463+ </enumeration>
464+ <enumeration name="SurfaceType" c:type="cairo_surface_type_t"
465+ glib:type-name="cairo_surface_type_t"
466+ glib:get-type="cairo_gobject_surface_type_get_type">
467+ <member name="image"
468+ value="0"
469+ c:identifier="CAIRO_SURFACE_TYPE_IMAGE"/>
470+ <member name="pdf"
471+ value="1"
472+ c:identifier="CAIRO_SURFACE_TYPE_PDF"/>
473+ <member name="ps"
474+ value="2"
475+ c:identifier="CAIRO_SURFACE_TYPE_PS"/>
476+ <member name="xlib"
477+ value="3"
478+ c:identifier="CAIRO_SURFACE_TYPE_XLIB"/>
479+ <member name="xcb"
480+ value="4"
481+ c:identifier="CAIRO_SURFACE_TYPE_XCB"/>
482+ <member name="glitz"
483+ value="5"
484+ c:identifier="CAIRO_SURFACE_TYPE_GLITZ"/>
485+ <member name="quartz"
486+ value="6"
487+ c:identifier="CAIRO_SURFACE_TYPE_QUARTZ"/>
488+ <member name="win32"
489+ value="7"
490+ c:identifier="CAIRO_SURFACE_TYPE_WIN32"/>
491+ <member name="beos"
492+ value="8"
493+ c:identifier="CAIRO_SURFACE_TYPE_BEOS"/>
494+ <member name="directfb"
495+ value="9"
496+ c:identifier="CAIRO_SURFACE_TYPE_DIRECTFB"/>
497+ <member name="svg"
498+ value="10"
499+ c:identifier="CAIRO_SURFACE_TYPE_SVG"/>
500+ <member name="os2"
501+ value="11"
502+ c:identifier="CAIRO_SURFACE_TYPE_OS2"/>
503+ <member name="win32_printing"
504+ value="12"
505+ c:identifier="CAIRO_SURFACE_TYPE_WIN32_PRINTING"/>
506+ <member name="quartz_image"
507+ value="13"
508+ c:identifier="CAIRO_SURFACE_TYPE_QUARTZ_IMAGE"/>
509+ <member name="script"
510+ value="14"
511+ c:identifier="CAIRO_SURFACE_TYPE_SCRIPT"/>
512+ <member name="qt"
513+ value="15"
514+ c:identifier="CAIRO_SURFACE_TYPE_QT"/>
515+ <member name="recording"
516+ value="16"
517+ c:identifier="CAIRO_SURFACE_TYPE_RECORDING"/>
518+ <member name="vg"
519+ value="17"
520+ c:identifier="CAIRO_SURFACE_TYPE_VG"/>
521+ <member name="gl"
522+ value="18"
523+ c:identifier="CAIRO_SURFACE_TYPE_GL"/>
524+ <member name="drm"
525+ value="19"
526+ c:identifier="CAIRO_SURFACE_TYPE_DRM"/>
527+ <member name="tee"
528+ value="20"
529+ c:identifier="CAIRO_SURFACE_TYPE_TEE"/>
530+ <member name="xml"
531+ value="21"
532+ c:identifier="CAIRO_SURFACE_TYPE_XML"/>
533+ <member name="skia"
534+ value="22"
535+ c:identifier="CAIRO_SURFACE_TYPE_SKIA"/>
536+ <member name="subsurface"
537+ value="23"
538+ c:identifier="CAIRO_SURFACE_TYPE_SUBSURFACE"/>
539+ <member name="cogl"
540+ value="24"
541+ c:identifier="CAIRO_SURFACE_TYPE_COGL"/>
542+ </enumeration>
543+ <enumeration name="Format" c:type="cairo_format_t"
544+ glib:type-name="cairo_format_t"
545+ glib:get-type="cairo_gobject_format_get_type">
546+ <member name="invalid"
547+ value="-1"
548+ c:identifier="CAIRO_FORMAT_INVALID"/>
549+ <member name="argb32"
550+ value="0"
551+ c:identifier="CAIRO_FORMAT_ARGB32"/>
552+ <member name="rgb24"
553+ value="1"
554+ c:identifier="CAIRO_FORMAT_RGB24"/>
555+ <member name="a8"
556+ value="2"
557+ c:identifier="CAIRO_FORMAT_A8"/>
558+ <member name="a1"
559+ value="3"
560+ c:identifier="CAIRO_FORMAT_A1"/>
561+ <member name="rgb16_565"
562+ value="4"
563+ c:identifier="CAIRO_FORMAT_RGB16_565"/>
564+ <member name="rgb30"
565+ value="5"
566+ c:identifier="CAIRO_FORMAT_RGB30"/>
567+ </enumeration>
568+ <enumeration name="PatternType" c:type="cairo_pattern_type_t"
569+ glib:type-name="cairo_pattern_type_t"
570+ glib:get-type="cairo_gobject_pattern_type_get_type">
571+ <member name="solid"
572+ value="0"
573+ c:identifier="CAIRO_PATTERN_TYPE_SOLID"/>
574+ <member name="surface"
575+ value="1"
576+ c:identifier="CAIRO_PATTERN_TYPE_SURFACE"/>
577+ <member name="linear"
578+ value="2"
579+ c:identifier="CAIRO_PATTERN_TYPE_LINEAR"/>
580+ <member name="radial"
581+ value="3"
582+ c:identifier="CAIRO_PATTERN_TYPE_RADIAL"/>
583+ <member name="mesh"
584+ value="4"
585+ c:identifier="CAIRO_PATTERN_TYPE_MESH"/>
586+ <member name="raster_source"
587+ value="5"
588+ c:identifier="CAIRO_PATTERN_TYPE_RASTER_SOURCE"/>
589+ </enumeration>
590+ <enumeration name="Extend" c:type="cairo_extend_t"
591+ glib:type-name="cairo_extend_t"
592+ glib:get-type="cairo_gobject_extend_get_type">
593+ <member name="none"
594+ value="0"
595+ c:identifier="CAIRO_EXTEND_NONE"/>
596+ <member name="repeat"
597+ value="1"
598+ c:identifier="CAIRO_EXTEND_REPEAT"/>
599+ <member name="reflect"
600+ value="2"
601+ c:identifier="CAIRO_EXTEND_REFLECT"/>
602+ <member name="pad"
603+ value="3"
604+ c:identifier="CAIRO_EXTEND_PAD"/>
605+ </enumeration>
606+ <enumeration name="Filter" c:type="cairo_filter_t"
607+ glib:type-name="cairo_filter_t"
608+ glib:get-type="cairo_gobject_filter_get_type">
609+ <member name="fast"
610+ value="0"
611+ c:identifier="CAIRO_FILTER_FAST"/>
612+ <member name="good"
613+ value="1"
614+ c:identifier="CAIRO_FILTER_GOOD"/>
615+ <member name="best"
616+ value="2"
617+ c:identifier="CAIRO_FILTER_BEST"/>
618+ <member name="nearest"
619+ value="3"
620+ c:identifier="CAIRO_FILTER_NEAREST"/>
621+ <member name="bilinear"
622+ value="4"
623+ c:identifier="CAIRO_FILTER_BILINEAR"/>
624+ <member name="gaussian"
625+ value="5"
626+ c:identifier="CAIRO_FILTER_GAUSSIAN"/>
627+ </enumeration>
628+ <enumeration name="RegionOverlap" c:type="cairo_region_overlap_t"
629+ glib:type-name="cairo_region_overlap_t"
630+ glib:get-type="cairo_gobject_region_overlap_get_type">
631+ <member name="in"
632+ value="0"
633+ c:identifier="CAIRO_REGION_OVERLAP_IN"/>
634+ <member name="out"
635+ value="1"
636+ c:identifier="CAIRO_REGION_OVERLAP_OUT"/>
637+ <member name="part"
638+ value="2"
639+ c:identifier="CAIRO_REGION_OVERLAP_PART"/>
640+ </enumeration>
641+ <record name="FontFace" c:type="cairo_font_face_t" foreign="1"
642+ glib:type-name="CairoFontFace"
643+ glib:get-type="cairo_gobject_font_face_get_type"/>
644+ <record name="ScaledFont" c:type="cairo_scaled_font_t" foreign="1"
645+ glib:type-name="CairoScaledFont"
646+ glib:get-type="cairo_gobject_scaled_font_get_type"/>
647+ <record name="Path" c:type="cairo_path_t" foreign="1"/>
648+ <record name="Rectangle" c:type="cairo_rectangle_t"
649+ glib:type-name="CairoRectangle"
650+ glib:get-type="cairo_gobject_rectangle_get_type">
651+ <field name="x" writable="1">
652+ <type name="gdouble" c:type="gdouble"/>
653+ </field>
654+ <field name="y" writable="1">
655+ <type name="gdouble" c:type="gdouble"/>
656+ </field>
657+ <field name="width" writable="1">
658+ <type name="gdouble" c:type="gdouble"/>
659+ </field>
660+ <field name="height" writable="1">
661+ <type name="gdouble" c:type="gdouble"/>
662+ </field>
663+ </record>
664+ <record name="RectangleInt" c:type="cairo_rectangle_int_t"
665+ glib:type-name="CairoRectangleInt"
666+ glib:get-type="cairo_gobject_rectangle_int_get_type">
667+ <field name="x" writable="1">
668+ <type name="gint" c:type="gint"/>
669+ </field>
670+ <field name="y" writable="1">
671+ <type name="gint" c:type="gint"/>
672+ </field>
673+ <field name="width" writable="1">
674+ <type name="gint" c:type="gint"/>
675+ </field>
676+ <field name="height" writable="1">
677+ <type name="gint" c:type="gint"/>
678+ </field>
679+ </record>
680+ <function name="image_surface_create" c:identifier="cairo_image_surface_create">
681+ <return-value transfer-ownership="none">
682+ <type name="none" c:type="void"/>
683+ </return-value>
684+ <parameters>
685+ </parameters>
686+ </function>
687+ </namespace>
688+</repository>
A internal/gir/types/interface.go +52 -0
@@ -0,0 +1,52 @@
1+package types
2+
3+import (
4+ "strings"
5+
6+ "github.com/jwijenbergh/puregotk/internal/gir/util"
7+)
8+
9+func ConvertInterface(currns string, ins string, inter Interface, implemented map[string]bool, kinds KindMap) InterfaceTemplate {
10+ var methods []InterfaceFuncTemplate
11+
12+ for _, m := range inter.Methods {
13+ name := util.SnakeToCamel(m.Name)
14+ if implemented != nil {
15+ v, ok := implemented[name]
16+ if v && ok {
17+ continue
18+ }
19+ }
20+ var newns string
21+ if ins != "" {
22+ newns = ins + "."
23+ }
24+ methods = append(methods, InterfaceFuncTemplate{
25+ Namespace: newns,
26+ FullName: util.SnakeToCamel(m.CIdentifier),
27+ FuncTemplate: FuncTemplate{
28+ Doc: m.Doc.StringSafe(),
29+ CName: m.CIdentifier,
30+ Name: name,
31+ Args: m.Parameters.Template(currns, ins, kinds),
32+ Ret: m.ReturnValue.Template(currns, ins, kinds),
33+ },
34+ })
35+ }
36+ name := util.SnakeToCamel(inter.Name)
37+ return InterfaceTemplate{
38+ Name: name,
39+ Doc: inter.Doc.StringSafe(),
40+ Methods: methods,
41+ }
42+}
43+
44+func GetInterfaceFuncs(ns string, name string, implemented map[string]bool, kinds KindMap) InterfaceTemplate {
45+ inter := kinds.MustInterface(ns, name)
46+ parts := strings.Split(name, ".")
47+ var ins string
48+ if len(parts) > 1 {
49+ ins = strings.ToLower(parts[0])
50+ }
51+ return ConvertInterface(ns, ins, inter, implemented, kinds)
52+}
A internal/gir/types/kind.go +51 -0
@@ -0,0 +1,51 @@
1+package types
2+
3+import "github.com/jwijenbergh/puregotk/internal/gir/util"
4+
5+type Kind int8
6+
7+const (
8+ UnknownType Kind = iota
9+ AliasType
10+ CallbackType
11+ ClassesType
12+ InterfacesType
13+ RecordsType
14+ OtherType
15+)
16+
17+type KindMap map[string]KindPair
18+
19+func (km KindMap) key(ns string, name string) string {
20+ return util.NormalizeNamespace(ns, name, false)
21+}
22+
23+func (km KindMap) Add(ns string, name string, t Kind, v interface{}) {
24+ k := km.key(ns, name)
25+ km[k] = KindPair{
26+ K: t,
27+ Value: v,
28+ }
29+}
30+
31+func (km KindMap) pair(ns string, name string) KindPair {
32+ f := util.NormalizeNamespace(ns, name, false)
33+ return km[f]
34+}
35+
36+func (km KindMap) Kind(ns string, name string) Kind {
37+ return km.pair(ns, name).K
38+}
39+
40+func (km KindMap) MustInterface(ns string, name string) Interface {
41+ p := km.pair(ns, name)
42+ if p.K != InterfacesType {
43+ panic("value is not an interface")
44+ }
45+ return p.Value.(Interface)
46+}
47+
48+type KindPair struct {
49+ K Kind
50+ Value interface{}
51+}
A internal/gir/types/template.go +284 -0
@@ -0,0 +1,284 @@
1+package types
2+
3+import (
4+ "fmt"
5+ "strings"
6+
7+ "github.com/jwijenbergh/puregotk/internal/gir/util"
8+)
9+
10+type argsTemplate struct {
11+ // Names are the variables but just the names
12+ Names []string
13+
14+ // Types are the variables but just the types
15+ Types []string
16+
17+ // Call are the variables as given in a function call
18+ Call []string
19+
20+ Full []string
21+}
22+
23+type funcArgsTemplate struct {
24+ // Pure are the arguments as passed directly to PureGo
25+ // The pure Call is a special case that contains the arguments for a callback call
26+ Pure argsTemplate
27+
28+ // API are the arguments as suitable for a Go API
29+ API argsTemplate
30+}
31+
32+func (f *funcArgsTemplate) AddAPI(t string, n string, k Kind, ns string) {
33+ c := n
34+ stars := strings.Count(t, "*")
35+ gobjectNs := "gobject."
36+ if strings.ToLower(ns) == "gobject" {
37+ gobjectNs = ""
38+ }
39+ switch k {
40+ case CallbackType:
41+ c = fmt.Sprintf("purego.NewCallback(%s)", n)
42+ case ClassesType:
43+ if stars == 0 {
44+ c = n
45+ t = "uintptr"
46+ } else if stars > 1 {
47+ c = fmt.Sprintf("%sConvertPtr(%s)", gobjectNs, n)
48+ } else if stars == 1 {
49+ c = n + ".GoPointer()"
50+ }
51+ case InterfacesType:
52+ t = strings.TrimPrefix(t, "*")
53+ if stars == 0 {
54+ c = n
55+ t = "uintptr"
56+ } else if stars > 1 {
57+ c = fmt.Sprintf("%sConvertPtr(%s)", gobjectNs, n)
58+ } else if stars == 1 {
59+ c = n + ".GoPointer()"
60+ }
61+ }
62+
63+ // special case for varargs
64+ if n == "varArgs" {
65+ c = n + "..."
66+ }
67+ f.API.Names = append(f.API.Names, n)
68+ f.API.Types = append(f.API.Types, t)
69+ f.API.Call = append(f.API.Call, c)
70+ f.API.Full = append(f.API.Full, n+" "+t)
71+}
72+
73+func (f *funcArgsTemplate) AddPure(t string, n string, k Kind) {
74+ n += "p"
75+ c := n
76+ stars := strings.Count(t, "*")
77+ switch k {
78+ case RecordsType:
79+ if stars == 0 {
80+ t = "uintptr"
81+ }
82+ case CallbackType:
83+ t = "uintptr"
84+ case ClassesType:
85+ if stars == 0 {
86+ c = n
87+ t = "uintptr"
88+ } else {
89+ c = fmt.Sprintf("%sNewFromInternalPtr(%s)", strings.TrimPrefix(t, "*"), n)
90+ t = strings.Repeat("*", stars-1) + "uintptr"
91+ }
92+ case InterfacesType:
93+ if stars == 0 {
94+ c = n
95+ t = "uintptr"
96+ } else {
97+ c = fmt.Sprintf("%s{Ptr: %s}", t+"Base", n)
98+ t = strings.Repeat("*", stars-1) + "uintptr"
99+ }
100+ }
101+ f.Pure.Names = append(f.Pure.Names, n)
102+ f.Pure.Types = append(f.Pure.Types, t)
103+ f.Pure.Call = append(f.Pure.Call, c)
104+ f.Pure.Full = append(f.Pure.Full, n+" "+t)
105+}
106+
107+func (f *funcArgsTemplate) Add(p Parameter, ins string, ns string, kinds KindMap) {
108+ // get the lookup namespace
109+ // as if the interface namespace is non-empty
110+ // means we can also lookup in the namespace of the interface
111+ lns := ns
112+ if ins != "" {
113+ lns = ins
114+ }
115+ goType := p.Translate(lns, kinds)
116+ kind := kinds.Kind(lns, goType)
117+ stars := strings.Count(goType, "*")
118+ goType = util.NormalizeNamespace(ns, goType, true)
119+ if kind != OtherType && kind != UnknownType {
120+ if ins != "" && strings.Count(goType, ".") < 1 {
121+ goType = ins + "." + goType
122+ }
123+ }
124+ if stars > 0 {
125+ goType = strings.Repeat("*", stars) + strings.ReplaceAll(goType, "*", "")
126+ }
127+
128+ // Get a suitable variable name
129+ varName := p.VarName()
130+
131+ f.AddAPI(goType, varName, kind, ns)
132+ f.AddPure(goType, varName, kind)
133+}
134+
135+type CallbackTemplate struct {
136+ Doc string
137+ Name string
138+ Args funcArgsTemplate
139+ Ret funcRetTemplate
140+}
141+
142+type AliasTemplate struct {
143+ // Name is the name of the alias given to the Go type declaration
144+ Name string
145+
146+ // Doc is the documentation of the alias
147+ Doc string
148+
149+ // Value is the value for the alias as a Go type
150+ Value string
151+}
152+
153+type RecordField struct {
154+ // Name is the Go name of the field
155+ Name string
156+
157+ // Type is the Go type of the field
158+ Type string
159+}
160+
161+type RecordTemplate struct {
162+ // Name is the name of the record given to the Go type declaration
163+ Name string
164+
165+ // Doc is the documentation of the alias
166+ Doc string
167+
168+ // Fields is the list of record fields
169+ Fields []RecordField
170+}
171+
172+type enumValues struct {
173+ // Doc is the documentation for the value
174+ Doc string
175+ // Name is the name of the enumeration value
176+ Name string
177+ // Value is the actual underlying value
178+ Value int
179+}
180+
181+type EnumTemplate struct {
182+ // Name is the name of the enumeration declared as the Go type for the int
183+ Name string
184+ // Doc is the documentation for the enumeration
185+ Doc string
186+ // Values are the list of values for the enumeration
187+ Values []enumValues
188+}
189+
190+type funcRetTemplate struct {
191+ // Raw is the raw value for the underlying purego function
192+ Raw string
193+ // Value is the underlying return value as a Go type
194+ Value string
195+ // Class indicates whether or not the return value is a class
196+ Class bool
197+ // RefSink indicates whether or not we should increase the reference count using obj.RefSink()
198+ RefSink bool
199+}
200+
201+func (fr *funcRetTemplate) Instance() string {
202+ if strings.HasPrefix(fr.Value, "*") {
203+ return "&"+fr.Value[1:]
204+ }
205+ return fr.Value
206+}
207+
208+type FuncTemplate struct {
209+ // Name is the name of the function declared as the Go function variable and public exposed API
210+ Name string
211+ // CName is the raw c name to be passed to purego register
212+ CName string
213+ // Doc is the documentation for the function
214+ Doc string
215+ // Args are the arguments
216+ Args funcArgsTemplate
217+ // Ret is the return argument
218+ Ret funcRetTemplate
219+}
220+
221+type InterfaceFuncTemplate struct {
222+ Namespace string
223+ FullName string
224+ FuncTemplate
225+}
226+
227+type SignalsTemplate struct {
228+ Doc string
229+ Name string
230+ CName string
231+ Args funcArgsTemplate
232+ Ret funcRetTemplate
233+}
234+
235+type ClassTemplate struct {
236+ // Doc is the documentation for the class
237+ Doc string
238+ // Name is the name of the class that is given to the Go struct
239+ Name string
240+ // Parent is a non-empty string of the embedded parent struct
241+ Parent string
242+ // Constructors is the slice of functions that create the class struct
243+ Constructors []FuncTemplate
244+ // Receivers is the slice of functions that have value receivers to the struct
245+ Receivers []FuncTemplate
246+ // Interfaces are receiver methods that are implemented because it needs to satisfy a certain interface
247+ Interfaces []InterfaceTemplate
248+ // Signals are helpers for ConnectX receivers
249+ Signals []SignalsTemplate
250+}
251+
252+type InterfaceTemplate struct {
253+ Doc string
254+ Name string
255+ // Methods is the methods that this interface defines
256+ Methods []InterfaceFuncTemplate
257+}
258+
259+type TemplateArg struct {
260+ // PkgName is the name of the package, declared at the top-level
261+ PkgName string
262+ // PkgEnv is the name of the package in the load environment variable
263+ PkgEnv string
264+ // NeedsInit declares whether or not this file needs an init code to register functions with purego
265+ NeedsInit bool
266+ // Imports defines the package imports that we need
267+ // This does not include purego
268+ // As the template already includes that if `NeedsInit` is set to true
269+ Imports []string
270+ // Aliases are type aliases declared as type ... = ...
271+ Aliases []AliasTemplate
272+ // Aliases are structs that are not classes
273+ Records []RecordTemplate
274+ // Callbacks are functions that will be converted with purego to uintptr
275+ Callbacks []CallbackTemplate
276+ // Enums are enumerations declared as const ... .... = ....
277+ Enums []EnumTemplate
278+ // Functions are the Go function declarations
279+ Functions []FuncTemplate
280+ // Interfaces is the list of interfaces that this package implements
281+ Interfaces []InterfaceTemplate
282+ // Classes are the Go struct with receiver declarations
283+ Classes []ClassTemplate
284+}
A internal/gir/types/types.go +698 -0
@@ -0,0 +1,698 @@
1+// package types implements types as found in gir XML files
2+// NOTE: This was copied largely from (the type definitions) from
3+package types
4+
5+import (
6+ "encoding/xml"
7+ "strconv"
8+ "strings"
9+
10+ "github.com/jwijenbergh/puregotk/internal/gir/util"
11+)
12+
13+// convList maps the given GIR primitive type to a Go builtin type.
14+// See https://github.com/diamondburned/gotk4/blob/fd960d20b525a07580938d10a214336bafb47d12/gir/girgen/types/types.go#LL483C1-L512C2
15+var convList = map[string]string{
16+ "none": "",
17+ "gboolean": "bool",
18+ "gfloat": "float32",
19+ "gdouble": "float64",
20+ // This was changed because e.g. the error code in a GError struct is a gint and it has to be an int32
21+ // gint is a typedef to an int and on 32 and 64 bit systems a c int is 32 bits commonly, whereas in go an int is 32 bits on 32 bits systems and 64 bits on 64 bits systems
22+ // gotk4 seems to not cast these, see e.g. https://github.com/diamondburned/gotk4/blob/fd960d20b525a07580938d10a214336bafb47d12/gir/girgen/types/types.go#L473-L481
23+ "gint": "int32",
24+ "gssize": "int",
25+ "gint8": "int8",
26+ "gint16": "int16",
27+ "gshort": "int16",
28+ "gint32": "int32",
29+ "glong": "int32",
30+ "int32": "int32",
31+ "gint64": "int64",
32+ "guint": "uint",
33+ "gsize": "uint",
34+ "guchar": "byte",
35+ "gchar": "byte",
36+ "guint8": "byte", // some weird cases
37+ "guint16": "uint16",
38+ "gushort": "uint16",
39+ "guint32": "uint32",
40+ "gulong": "uint32",
41+ "gunichar": "uint32",
42+ "guint64": "uint64",
43+ "guintptr": "uintptr",
44+ "utf8": "string",
45+ "filename": "string",
46+
47+ // these are probably not correct but needed to compile
48+ "long double": "float64",
49+ "va_list": "[]interface{}",
50+ "gpointer": "uintptr",
51+ "GType": "[]interface{}",
52+ "const char*": "string",
53+ "char**": "[]string",
54+ // not exported
55+ "HarfBuzz.font_t": "uintptr",
56+ //"GLib.Quark": "byte",
57+ //"Allocation": "uintptr",
58+}
59+
60+// Repository represents a GObject Introspection Repository, which contains the
61+// includes, C includes and namespaces of a single gir file.
62+type Repository struct {
63+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 repository"`
64+
65+ Version string `xml:"version,attr"`
66+ CIdentifierPrefixes string `xml:"http://www.gtk.org/introspection/c/1.0 identifier-prefixes,attr"`
67+ CSymbolPrefixes string `xml:"http://www.gtk.org/introspection/c/1.0 symbol-prefixes,attr"`
68+
69+ Includes []Include `xml:"http://www.gtk.org/introspection/core/1.0 include"`
70+ CIncludes []CInclude `xml:"http://www.gtk.org/introspection/c/1.0 include"`
71+ Packages []Package `xml:"http://www.gtk.org/introspection/core/1.0 package"`
72+ Namespaces []Namespace `xml:"http://www.gtk.org/introspection/core/1.0 namespace"`
73+}
74+
75+// https://gitlab.gnome.org/GNOME/gobject-introspection/-/blob/master/docs/gir-1.2.rnc
76+
77+type Alias struct {
78+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 alias"`
79+
80+ Name string `xml:"name,attr"`
81+ CType string `xml:"http://www.gtk.org/introspection/c/1.0 type,attr"`
82+
83+ InfoAttrs
84+ InfoElements
85+
86+ Type Type `xml:"http://www.gtk.org/introspection/core/1.0 type"`
87+}
88+
89+type AnyType struct {
90+ // Possible variants.
91+ Type *Type `xml:"http://www.gtk.org/introspection/core/1.0 type"`
92+ Array *Array `xml:"http://www.gtk.org/introspection/core/1.0 array"`
93+}
94+
95+func (a *AnyType) Translate(ns string, kinds KindMap) string {
96+ if a == nil {
97+ panic("unknown type found")
98+ }
99+ t := a.Type
100+ if t == nil {
101+ if a.Array == nil {
102+ return ""
103+ }
104+ if v, ok := convList[a.Array.CType]; ok {
105+ return v
106+ }
107+ return "uintptr"
108+ }
109+ return a.Type.Template(ns, kinds)
110+}
111+
112+type Annotation struct {
113+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 attribute"`
114+ Name string `xml:"name,attr"`
115+ Value string `xml:"value,attr"`
116+}
117+
118+type Array struct {
119+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 array"`
120+ Name string `xml:"name,attr"`
121+ CType string `xml:"http://www.gtk.org/introspection/c/1.0 type,attr"`
122+ Length *int `xml:"length,attr"` // ix of .Parameters
123+ ZeroTerminated *bool `xml:"zero-terminated,attr"`
124+ FixedSize int `xml:"fixed-size,attr"`
125+ Introspectable bool `xml:"introspectable,attr"`
126+ // Type is the array's inner type.
127+ Type *Type `xml:"http://www.gtk.org/introspection/core/1.0 type"`
128+}
129+
130+// IsZeroTerminated returns true if the Array is zero-terminated. It accounts
131+// for edge cases of the structure.
132+func (a Array) IsZeroTerminated() bool {
133+ return a.Name == "" && (a.ZeroTerminated == nil || *a.ZeroTerminated)
134+}
135+
136+type Bitfield struct {
137+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 bitfield"`
138+
139+ Name string `xml:"name,attr"` // Go case
140+ CType string `xml:"http://www.gtk.org/introspection/c/1.0 type,attr"`
141+ GLibTypeName string `xml:"http://www.gtk.org/introspection/glib/1.0 type-name,attr"`
142+ GLibGetType string `xml:"http://www.gtk.org/introspection/glib/1.0 get-type,attr"`
143+
144+ Members []Member `xml:"http://www.gtk.org/introspection/core/1.0 member"`
145+ Functions []Function `xml:"http://www.gtk.org/introspection/core/1.0 function"`
146+
147+ InfoAttrs
148+ InfoElements
149+}
150+
151+func (b *Bitfield) Template(ns string) EnumTemplate {
152+ els := make([]enumValues, len(b.Members))
153+ for i, m := range b.Members {
154+ v, err := strconv.Atoi(m.Value)
155+ if err != nil {
156+ panic(err)
157+ }
158+ // + Value needed to get rid of duplicates
159+ els[i] = enumValues{
160+ Doc: m.Doc.StringSafe(),
161+ Name: util.SnakeToCamel(util.RemoveSnakePrefix(strings.ToLower(m.CIdentifier), ns)) + "Value",
162+ Value: v,
163+ }
164+ }
165+ return EnumTemplate{
166+ Name: util.SnakeToCamel(b.Name),
167+ Doc: b.Doc.StringSafe(),
168+ Values: els,
169+ }
170+}
171+
172+type Signal struct {
173+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/glib/1.0 signal"`
174+ Name string `xml:"name,attr"`
175+ Detailed bool `xml:"detailed,attr"`
176+ When SignalWhen `xml:"when,attr"`
177+ Action bool `xml:"action,attr"`
178+ NoHooks bool `xml:"no-hooks,attr"`
179+ NoRecurse bool `xml:"no-recurse,attr"`
180+ InfoElements
181+ Parameters *Parameters `xml:"http://www.gtk.org/introspection/core/1.0 parameters"`
182+ ReturnValue *ReturnValue `xml:"http://www.gtk.org/introspection/core/1.0 return-value"`
183+}
184+
185+type SignalWhen string
186+
187+const (
188+ SignalWhenFirst = "first"
189+ SignalWhenLast = "last"
190+ SignalWhenCleanup = "cleanup"
191+)
192+
193+type SourcePosition struct {
194+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 source-position"`
195+ Filename string `xml:"filename,attr"`
196+ Line int `xml:"line,attr"`
197+ Column int `xml:"column,attr"`
198+}
199+
200+type TransferOwnership struct {
201+ TransferOwnership string `xml:"transfer-ownership,attr"`
202+}
203+
204+type Type struct {
205+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 type"`
206+
207+ Name string `xml:"name,attr"`
208+ CType string `xml:"http://www.gtk.org/introspection/c/1.0 type,attr"`
209+ Introspectable *bool `xml:"introspectable,attr"`
210+
211+ DocElements
212+ // Types is the type's inner types.
213+ Types []Type `xml:"http://www.gtk.org/introspection/core/1.0 type"`
214+}
215+
216+func (typ *Type) IsIntrospectable() bool {
217+ return typ.Introspectable == nil || *typ.Introspectable
218+}
219+
220+func (t *Type) Template(ns string, kinds KindMap) string {
221+ if v, ok := convList[t.Name]; ok {
222+ return v
223+ }
224+
225+ _type := util.NormalizeNamespace(ns, t.Name, true)
226+
227+ kind := kinds.Kind(ns, _type)
228+ // find the total pointer count
229+ count := strings.Count(t.CType, "*")
230+ w := strings.Trim(t.CType, "*")
231+ if w == "gpointer" {
232+ count += 1
233+ }
234+ // set the same pointer types on the name
235+ if count > 0 && kind != CallbackType {
236+ _type = strings.Repeat("*", count) + _type
237+ } else if kind == RecordsType {
238+ // if it's not a pointer
239+ // then purego doesn't support it (struct by value is not supported
240+ // so return uintptr
241+ _type = "uintptr"
242+ }
243+ return _type
244+}
245+
246+type Union struct {
247+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 union"`
248+
249+ Name string `xml:"name,attr"` // Go case
250+ CType string `xml:"http://www.gtk.org/introspection/c/1.0 type,attr"`
251+ CSymbolPrefix string `xml:"http://www.gtk.org/introspection/c/1.0 symbol-prefix,attr"`
252+ GLibTypeName string `xml:"http://www.gtk.org/introspection/glib/1.0 type-name,attr"`
253+ GLibGetType string `xml:"http://www.gtk.org/introspection/glib/1.0 get-type,attr"`
254+
255+ InfoAttrs
256+ InfoElements
257+
258+ Fields []Field `xml:"http://www.gtk.org/introspection/core/1.0 field"`
259+ Constructors []Constructor `xml:"http://www.gtk.org/introspection/core/1.0 constructor"`
260+ Methods []Method `xml:"http://www.gtk.org/introspection/core/1.0 method"`
261+ Functions []Function `xml:"http://www.gtk.org/introspection/core/1.0 function"`
262+ Records []Record `xml:"http://www.gtk.org/introspection/core/1.0 record"`
263+}
264+
265+type VarArgs struct {
266+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 varargs"`
267+}
268+
269+type VirtualMethod struct {
270+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 virtual-method"`
271+
272+ Invoker string `xml:"invoker,attr"`
273+ CallableAttrs
274+}
275+
276+type Boxed struct{}
277+
278+type CInclude struct {
279+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/c/1.0 include"`
280+ Name string `xml:"name,attr"`
281+}
282+
283+type CallableAttrs struct {
284+ Name string `xml:"name,attr"`
285+ CIdentifier string `xml:"http://www.gtk.org/introspection/c/1.0 identifier,attr"`
286+ ShadowedBy string `xml:"shadowed-by,attr"`
287+ Shadows string `xml:"shadows,attr"`
288+ Throws bool `xml:"throws,attr"`
289+ MovedTo string `xml:"moved-to,attr"`
290+ Parameters *Parameters `xml:"http://www.gtk.org/introspection/core/1.0 parameters"`
291+ ReturnValue *ReturnValue `xml:"http://www.gtk.org/introspection/core/1.0 return-value"`
292+ InfoAttrs
293+ InfoElements
294+}
295+
296+type Callback struct {
297+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 callback"`
298+ CallableAttrs
299+}
300+
301+type Class struct {
302+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 class"`
303+ Name string `xml:"name,attr"`
304+ Parent string `xml:"parent,attr"`
305+ Abstract bool `xml:"abstract,attr"`
306+
307+ CType string `xml:"http://www.gtk.org/introspection/c/1.0 type,attr"`
308+ CSymbolPrefix string `xml:"http://www.gtk.org/introspection/c/1.0 symbol-prefix,attr"`
309+
310+ GLibTypeName string `xml:"http://www.gtk.org/introspection/glib/1.0 type-name,attr"`
311+ GLibGetType string `xml:"http://www.gtk.org/introspection/glib/1.0 get-type,attr"`
312+ GLibTypeStruct string `xml:"http://www.gtk.org/introspection/glib/1.0 type-struct,attr"`
313+
314+ InfoAttrs
315+ InfoElements
316+
317+ Functions []Function `xml:"http://www.gtk.org/introspection/core/1.0 function"`
318+ Implements []Implements `xml:"http://www.gtk.org/introspection/core/1.0 implements"`
319+ Constructors []Constructor `xml:"http://www.gtk.org/introspection/core/1.0 constructor"`
320+ Methods []Method `xml:"http://www.gtk.org/introspection/core/1.0 method"`
321+ VirtualMethods []VirtualMethod `xml:"http://www.gtk.org/introspection/core/1.0 virtual-method"`
322+ Fields []Field `xml:"http://www.gtk.org/introspection/core/1.0 field"`
323+ Signals []Signal `xml:"http://www.gtk.org/introspection/glib/1.0 signal"`
324+}
325+
326+type Constant struct {
327+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 constant"`
328+ Name string `xml:"name,attr"`
329+ Value string `xml:"value,attr"`
330+ CType string `xml:"http://www.gtk.org/introspection/c/1.0 type,attr"`
331+
332+ Type Type `xml:"http://www.gtk.org/introspection/core/1.0 type"`
333+
334+ InfoAttrs
335+ InfoElements
336+}
337+
338+type Constructor struct {
339+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 constructor"`
340+ CallableAttrs
341+}
342+
343+type Doc struct {
344+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 doc"`
345+ Filename string `xml:"filename,attr"`
346+ String string `xml:",innerxml"`
347+ Line int `xml:"line,attr"`
348+}
349+
350+func (d *Doc) StringSafe() string {
351+ if d == nil {
352+ return ""
353+ }
354+ lines := strings.Split(d.String, "\n")
355+ for i, l := range lines {
356+ lines[i] = "// " + l
357+ }
358+ return strings.Join(lines, "\n")
359+}
360+
361+type DocDeprecated struct {
362+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 doc-deprecated"`
363+ String string `xml:",innerxml"`
364+}
365+
366+type DocElements struct {
367+ Doc *Doc
368+ DocDeprecated *DocDeprecated
369+ SourcePosition *SourcePosition
370+}
371+
372+func (d *DocElements) FilenameSafe() string {
373+ if d == nil || (d.SourcePosition == nil && d.Doc == nil) {
374+ return "main.go"
375+ }
376+ if d.SourcePosition != nil {
377+ return util.TranslateFilename(d.SourcePosition.Filename)
378+ }
379+ return util.TranslateFilename(d.Doc.Filename)
380+}
381+
382+type Enum struct {
383+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 enumeration"`
384+
385+ Name string `xml:"name,attr"` // Go case
386+ CType string `xml:"http://www.gtk.org/introspection/c/1.0 type,attr"`
387+ GLibTypeName string `xml:"http://www.gtk.org/introspection/glib/1.0 type-name,attr"`
388+ GLibGetType string `xml:"http://www.gtk.org/introspection/glib/1.0 get-type,attr"`
389+ GLibErrorDomain string `xml:"http://www.gtk.org/introspection/glib/1.0 error-domain,attr"`
390+
391+ Members []Member `xml:"http://www.gtk.org/introspection/core/1.0 member"`
392+ Functions []Function `xml:"http://www.gtk.org/introspection/core/1.0 function"`
393+
394+ InfoAttrs
395+ InfoElements
396+}
397+
398+func (e *Enum) Template(ns string) EnumTemplate {
399+ els := make([]enumValues, len(e.Members))
400+
401+ for i, m := range e.Members {
402+ v, err := strconv.Atoi(m.Value)
403+ if err != nil {
404+ panic(err)
405+ }
406+ id := strings.ToLower(m.CIdentifier)
407+ sID := util.RemoveSnakePrefix(id, ns)
408+ els[i] = enumValues{
409+ Doc: m.Doc.StringSafe(),
410+ // + Value needed to get rid of duplicates
411+ Name: util.SnakeToCamel(sID) + "Value",
412+ Value: v,
413+ }
414+ }
415+ return EnumTemplate{
416+ Name: util.SnakeToCamel(e.Name),
417+ Doc: e.Doc.StringSafe(),
418+ Values: els,
419+ }
420+}
421+
422+type Field struct {
423+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 field"`
424+ Name string `xml:"name,attr"`
425+ Bits int `xml:"bits,attr"`
426+ Private bool `xml:"private,attr"`
427+ Writable bool `xml:"writable,attr"` // default false
428+ Readable *bool `xml:"readable,attr"` // default true
429+ AnyType
430+ Callback *Callback
431+ Doc *Doc
432+}
433+
434+// IsReadable returns true if the field is readable.
435+func (f Field) IsReadable() bool {
436+ return f.Readable == nil || *f.Readable
437+}
438+
439+type Function struct {
440+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 function"`
441+ CallableAttrs
442+}
443+
444+type Implements struct {
445+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 implements"`
446+ Name string `xml:"name,attr"`
447+}
448+
449+type Include struct {
450+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 include"`
451+ Name string `xml:"name,attr"`
452+ Version string `xml:"version,attr"`
453+}
454+
455+type InfoAttrs struct {
456+ Introspectable *bool `xml:"introspectable,attr"` // default true
457+ Deprecated bool `xml:"deprecated,attr"`
458+ DeprecatedVersion string `xml:"deprecated-version,attr"`
459+ Version string `xml:"version,attr"`
460+ Stability string `xml:"stability,attr"`
461+}
462+
463+// IsIntrospectable returns true if the InfoAttrs indicates that the type is
464+// introspectable.
465+func (inf InfoAttrs) IsIntrospectable() bool {
466+ return inf.Introspectable == nil || *inf.Introspectable
467+}
468+
469+type InfoElements struct {
470+ DocElements
471+ Annotations []Annotation `xml:"http://www.gtk.org/introspection/core/1.0 attribute"`
472+}
473+
474+type InstanceParameter struct {
475+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 instance-parameter"`
476+ ParameterAttrs
477+}
478+
479+type Interface struct {
480+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 interface"`
481+ Name string `xml:"name,attr"`
482+
483+ CType string `xml:"http://www.gtk.org/introspection/c/1.0 type,attr"`
484+ CSymbolPrefix string `xml:"http://www.gtk.org/introspection/c/1.0 symbol-prefix,attr"`
485+
486+ GLibTypeName string `xml:"http://www.gtk.org/introspection/glib/1.0 type-name,attr"`
487+ GLibGetType string `xml:"http://www.gtk.org/introspection/glib/1.0 get-type,attr"`
488+ GLibTypeStruct string `xml:"http://www.gtk.org/introspection/glib/1.0 type-struct,attr"`
489+
490+ Functions []Function `xml:"http://www.gtk.org/introspection/core/1.0 function"`
491+ Methods []Method `xml:"http://www.gtk.org/introspection/core/1.0 method"`
492+ VirtualMethods []VirtualMethod `xml:"http://www.gtk.org/introspection/core/1.0 virtual-method"`
493+ Prerequisites []Prerequisite `xml:"http://www.gtk.org/introspection/core/1.0 prerequisite"`
494+ Signals []Signal `xml:"http://www.gtk.org/introspection/glib/1.0 signal"`
495+
496+ InfoAttrs
497+ InfoElements
498+}
499+
500+type Member struct {
501+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 member"`
502+
503+ Names []xml.Attr `xml:"name,attr"`
504+ Value string `xml:"value,attr"`
505+ CIdentifier string `xml:"http://www.gtk.org/introspection/c/1.0 identifier,attr"`
506+ GLibNick string `xml:"http://www.gtk.org/introspection/glib/1.0 nick,attr"`
507+
508+ InfoAttrs
509+ InfoElements
510+}
511+
512+func (m Member) Name() string {
513+ return m.nameAttr(xml.Name{Local: "name"})
514+}
515+
516+func (m Member) GLibName() string {
517+ return m.nameAttr(xml.Name{Space: "http://www.gtk.org/introspection/glib/1.0", Local: "name"})
518+}
519+
520+func (m Member) nameAttr(name xml.Name) string {
521+ for _, attr := range m.Names {
522+ if attr.Name == name {
523+ return attr.Value
524+ }
525+ }
526+ return ""
527+}
528+
529+type Method struct {
530+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 method"`
531+ CallableAttrs
532+}
533+
534+type Namespace struct {
535+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 namespace"`
536+
537+ Name string `xml:"name,attr"`
538+ Version string `xml:"version,attr"`
539+ CIdentifierPrefixes string `xml:"http://www.gtk.org/introspection/c/1.0 identifier-prefixes,attr"`
540+ CSymbolPrefixes string `xml:"http://www.gtk.org/introspection/c/1.0 symbol-prefixes,attr"`
541+ Prefix string `xml:"http://www.gtk.org/introspection/c/1.0 prefix,attr"`
542+ SharedLibrary string `xml:"shared-library,attr"`
543+
544+ Aliases []Alias `xml:"http://www.gtk.org/introspection/core/1.0 alias"`
545+ Classes []Class `xml:"http://www.gtk.org/introspection/core/1.0 class"`
546+ Interfaces []Interface `xml:"http://www.gtk.org/introspection/core/1.0 interface"`
547+ Records []Record `xml:"http://www.gtk.org/introspection/core/1.0 record"`
548+ Enums []Enum `xml:"http://www.gtk.org/introspection/core/1.0 enumeration"`
549+ Functions []Function `xml:"http://www.gtk.org/introspection/core/1.0 function"`
550+ Unions []Union `xml:"http://www.gtk.org/introspection/core/1.0 union"`
551+ Bitfields []Bitfield `xml:"http://www.gtk.org/introspection/core/1.0 bitfield"`
552+ Callbacks []Callback `xml:"http://www.gtk.org/introspection/core/1.0 callback"`
553+ Constants []Constant `xml:"http://www.gtk.org/introspection/core/1.0 constant"`
554+ Annotations []Annotation `xml:"http://www.gtk.org/introspection/core/1.0 attribute"`
555+ Boxeds []Boxed `xml:"http://www.gtk.org/introspection/core/1.0 boxed"`
556+}
557+
558+type Package struct {
559+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 package"`
560+ Name string `xml:"name,attr"`
561+}
562+
563+type Parameter struct {
564+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 parameter"`
565+ ParameterAttrs
566+}
567+
568+func (p *Parameter) Translate(ns string, kinds KindMap) string {
569+ if p.Name == "..." {
570+ return "...interface{}"
571+ }
572+ return p.AnyType.Translate(ns, kinds)
573+}
574+
575+func (p *Parameter) VarName() string {
576+ snaked := util.SnakeToCamel(p.Name)
577+ if snaked == "..." {
578+ return "varArgs"
579+ }
580+ // avoid clash between same name of type and var
581+ // could also do first letter to lower?
582+ return snaked + "Var"
583+}
584+
585+func (p *Parameters) Template(ns string, ifacens string, kinds KindMap) funcArgsTemplate {
586+ if p == nil {
587+ return funcArgsTemplate{}
588+ }
589+ params := p.Parameters
590+ if len(params) == 0 {
591+ return funcArgsTemplate{}
592+ }
593+ args := funcArgsTemplate{}
594+ for _, par := range params {
595+ args.Add(par, ifacens, ns, kinds)
596+ }
597+ return args
598+}
599+
600+type ParameterAttrs struct {
601+ Name string `xml:"name,attr"`
602+ Direction string `xml:"direction,attr"`
603+ Scope string `xml:"scope,attr"`
604+ Closure *int `xml:"closure,attr"`
605+ Destroy *int `xml:"destroy,attr"`
606+ CallerAllocates bool `xml:"caller-allocates,attr"`
607+ Skip bool `xml:"skip,attr"`
608+ Optional bool `xml:"optional,attr"`
609+ Nullable bool `xml:"nullable,attr"`
610+
611+ TransferOwnership
612+ AnyType
613+ Doc *Doc
614+}
615+
616+type Parameters struct {
617+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 parameters"`
618+ InstanceParameter *InstanceParameter `xml:"http://www.gtk.org/introspection/core/1.0 instance-parameter"`
619+ Parameters []Parameter `xml:"http://www.gtk.org/introspection/core/1.0 parameter"`
620+}
621+
622+type Prerequisite struct {
623+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 prerequisite"`
624+ Name string `xml:"name,attr"`
625+}
626+
627+type Property struct{}
628+
629+type Record struct {
630+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 record"`
631+ Name string `xml:"name,attr"`
632+ CType string `xml:"http://www.gtk.org/introspection/c/1.0 type,attr"`
633+ GLibTypeName string `xml:"http://www.gtk.org/introspection/glib/1.0 type-name,attr"`
634+ GLibGetType string `xml:"http://www.gtk.org/introspection/glib/1.0 get-type,attr"`
635+ CSymbolPrefix string `xml:"http://www.gtk.org/introspection/c/1.0 symbol-prefix,attr"`
636+ GLibIsGTypeStructFor string `xml:"http://www.gtk.org/introspection/glib/1.0 is-gtype-struct-for,attr"`
637+ Disguised bool `xml:"disguised,attr"`
638+ Foreign bool `xml:"foreign,attr"`
639+
640+ Fields []Field `xml:"http://www.gtk.org/introspection/core/1.0 field"`
641+ Functions []Function `xml:"http://www.gtk.org/introspection/core/1.0 function"`
642+ Unions []Union `xml:"http://www.gtk.org/introspection/core/1.0 union"`
643+ Methods []Method `xml:"http://www.gtk.org/introspection/core/1.0 method"`
644+ Constructors []Constructor `xml:"http://www.gtk.org/introspection/core/1.0 constructor"`
645+ Properties []Property `xml:"http://www.gtk.org/introspection/core/1.0 property"`
646+
647+ InfoAttrs
648+ InfoElements
649+}
650+
651+type ReturnValue struct {
652+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 return-value"`
653+ Scope string `xml:"scope,attr"`
654+ Closure *int `xml:"closure,attr"`
655+ Destroy *int `xml:"destroy,attr"`
656+ Introspectable bool `xml:"introspectable,attr"`
657+ Nullable bool `xml:"nullable,attr"`
658+ Skip bool `xml:"skip,attr"`
659+ AllowNone bool `xml:"allow-none,attr"`
660+ TransferOwnership
661+ DocElements
662+ AnyType
663+}
664+
665+func (r *ReturnValue) Template(ns string, ins string, kinds KindMap) funcRetTemplate {
666+ val := r.AnyType.Translate(ns, kinds)
667+ raw := val
668+ class := false
669+ lns := ns
670+ if ins != "" {
671+ lns = ins
672+ }
673+ kind := kinds.Kind(lns, raw)
674+ stars := strings.Count(val, "*")
675+ if kind != OtherType && kind != UnknownType {
676+ if ins != "" && strings.Count(val, ".") < 1 {
677+ val = ins + "." + val
678+ }
679+ }
680+ if stars > 0 {
681+ val = strings.Repeat("*", stars) + strings.ReplaceAll(val, "*", "")
682+ }
683+ switch kind {
684+ case ClassesType:
685+ raw = "uintptr"
686+ class = true
687+ case InterfacesType:
688+ raw = "uintptr"
689+ val += "Base"
690+ class = true
691+ }
692+ return funcRetTemplate{
693+ Raw: raw,
694+ Value: val,
695+ Class: class,
696+ RefSink: r.TransferOwnership.TransferOwnership == "none",
697+ }
698+}
A internal/gir/util/util.go +93 -0
@@ -0,0 +1,93 @@
1+// package util implements some utility functions for parsing/converting gir files
2+// TODO: Maybe some of this can more easily be done with regexes?
3+//
4+// But using regexes introduces 2 problems :^)
5+package util
6+
7+import (
8+ "path/filepath"
9+ "strings"
10+)
11+
12+// delimToCamel to camel converts a string with parts separated by `delim` to CamelCase
13+func delimToCamel(s string, delim string) string {
14+ var sb strings.Builder
15+ words := strings.Split(s, delim)
16+ for _, w := range words {
17+ sb.WriteString(strings.Title(w))
18+ }
19+ return sb.String()
20+}
21+
22+// SnakeToCamel converts hello_world to HelloWorld
23+func SnakeToCamel(s string) string {
24+ return delimToCamel(s, "_")
25+}
26+
27+// DashToCamel converts hello-world to HelloWorld
28+func DashToCamel(s string) string {
29+ return delimToCamel(s, "-")
30+}
31+
32+// RemoveSnakePrefix removes `prefix` from string `s` if that prefix ise separated with a _
33+// it removes lowercase or all u
34+func RemoveSnakePrefix(s string, prefix string) string {
35+ parts := strings.Split(s, "_")
36+ if len(parts) <= 1 {
37+ return s
38+ }
39+ if strings.EqualFold(parts[0], prefix) {
40+ parts = parts[1:]
41+ }
42+ return strings.Join(parts, "_")
43+}
44+
45+// ReplaceExtension replaces an extension from filename with ext
46+// the extension is found by splitting on "." and taking the last part
47+func ReplaceExtension(filename string, ext string) string {
48+ splt := strings.Split(filename, ".")
49+ if len(splt) == 1 {
50+ return filename
51+ }
52+ splt[len(splt)-1] = ext
53+ return strings.Join(splt, ".")
54+}
55+
56+// NormalizeNamespace converts a type to one that always includes a lowercase namespace
57+// if no namespace is found, it adds `ns`, unless if strip is True then namespaces always equaling `ns` will be removed
58+func NormalizeNamespace(ns string, gotype string, strip bool) string {
59+ if ns == "" {
60+ return ""
61+ }
62+ gotype = strings.Trim(gotype, "*")
63+ splt := strings.Split(gotype, ".")
64+ if len(splt) <= 1 {
65+ splt = append([]string{ns}, splt...)
66+ }
67+ splt[0] = strings.ToLower(splt[0])
68+ if strip && splt[0] == strings.ToLower(ns) {
69+ splt = splt[1:]
70+ }
71+ return strings.Join(splt, ".")
72+}
73+
74+// TranslateFilename translates a file path by renaming the file to a go suitable file
75+func TranslateFilename(filename string) string {
76+ if filename == "" {
77+ return "main.go"
78+ }
79+
80+ b := filepath.Base(filename)
81+ return ReplaceExtension(b, "go")
82+}
83+
84+func ConvertArgs(a []string) string {
85+ return strings.Join(a, ", ")
86+}
87+
88+func ConvertArgsComma(a []string) string {
89+ if len(a) == 0 {
90+ return ""
91+ }
92+ return ", " + strings.Join(a, ", ")
93+}
A shell.nix +26 -0
@@ -0,0 +1,26 @@
1+{ pkgs ? import <nixpkgs> {} }:
2+ pkgs.mkShell {
3+ # nativeBuildInputs is usually what you want -- tools you need to run
4+ buildInputs = [
5+ pkgs.go
6+ pkgs.godef
7+ pkgs.go-tools
8+ pkgs.vim
9+ pkgs.gofumpt
10+ pkgs.gopls
11+ pkgs.python3
12+ pkgs.libadwaita.dev
13+ pkgs.python3.pkgs.pip
14+ pkgs.gotools
15+ ];
16+ shellHook = ''
17+ # Tells pip to put packages into $PIP_PREFIX instead of the usual locations.
18+ # See https://pip.pypa.io/en/stable/user_guide/#environment-variables.
19+ export PIP_PREFIX=$(pwd)/_build/pip_packages
20+ export PYTHONPATH="$PIP_PREFIX/${pkgs.python3.sitePackages}:$PYTHONPATH"
21+ export PATH="$PIP_PREFIX/bin:$PATH"
22+ export GOPATH="$HOME/go"
23+ unset SOURCE_DATE_EPOCH
24+ '';
25+}
26+
A templates/go +264 -0
@@ -0,0 +1,264 @@
1+// Package {{.PkgName}} was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package {{.PkgName}}
3+
4+{{ $NotGObject := ne .PkgName "gobject" }}
5+
6+{{if or .Imports .NeedsInit}}
7+import (
8+ {{if .NeedsInit}}
9+ "github.com/jwijenbergh/purego"
10+ "github.com/jwijenbergh/puregotk/internal/core"
11+ {{end}}
12+ {{range .Imports -}}
13+ "github.com/jwijenbergh/puregotk/v4/{{.}}"
14+ {{end}}
15+)
16+{{end}}
17+
18+{{$outer := .}}
19+
20+{{range .Callbacks -}}
21+{{.Doc}}
22+type {{.Name}} func({{ conv .Args.Pure.Types }}) {{.Ret.Raw}}
23+{{end}}
24+
25+{{range .Records -}}
26+{{.Doc}}
27+type {{.Name}} struct {
28+ {{range .Fields}}
29+ {{.Name}} {{.Type}}
30+ {{end}}
31+}
32+{{end}}
33+
34+{{range .Interfaces -}}
35+{{.Doc}}
36+type {{.Name}} interface {
37+ GoPointer() uintptr
38+ SetGoPointer(uintptr)
39+ {{range .Methods -}}
40+ {{.Name}}({{conv .Args.API.Full}}) {{.Ret.Value}}
41+ {{end}}
42+}
43+type {{.Name}}Base struct {
44+ Ptr uintptr
45+}
46+
47+func (x *{{.Name}}Base) GoPointer() uintptr {
48+ return x.Ptr
49+}
50+
51+func (x *{{.Name}}Base) SetGoPointer(ptr uintptr) {
52+ x.Ptr = ptr
53+}
54+
55+{{$outer := .}}
56+{{range .Methods -}}
57+{{.Doc}}
58+func (x *{{$outer.Name}}Base) {{.Name}}({{conv .Args.API.Full}}) {{.Ret.Value}} {
59+ {{if .Ret.Class}}
60+ {{.Name}}Ptr := {{.Namespace}}X{{.FullName}}(x.GoPointer() {{convc .Args.API.Call}})
61+ if {{.Name}}Ptr == 0 {
62+ return nil
63+ }
64+ {{if .Ret.RefSink}}
65+ {{if $NotGObject}}gobject.{{end}}IncreaseRef({{.Name}}Ptr)
66+ {{end}}
67+ {{.Name}}Cls := {{.Ret.Instance}}{}
68+ {{.Name}}Cls.Ptr = {{.Name}}Ptr
69+ return {{.Name}}Cls
70+ {{else if .Ret.Value}}
71+ return {{.Namespace}}X{{.FullName}}(x.GoPointer() {{convc .Args.API.Call}})
72+ {{else}}
73+ {{.Namespace}}X{{.FullName}}(x.GoPointer() {{convc .Args.API.Call}})
74+ {{end}}
75+}
76+{{end}}
77+
78+{{range .Methods -}}
79+var {{.Namespace}}X{{.FullName}} func(uintptr {{convc .Args.Pure.Types}}) {{.Ret.Raw}}
80+{{end}}
81+{{end}}
82+
83+{{range .Aliases -}}
84+{{.Doc}}
85+type {{.Name}} = {{.Value}}
86+{{end}}
87+
88+{{range .Enums -}}
89+{{.Doc}}
90+type {{.Name}} int
91+const (
92+{{$outer := .}}
93+{{range .Values -}}
94+ {{.Doc}}
95+ {{.Name}} {{$outer.Name}} = {{.Value}}
96+{{end}}
97+)
98+{{end}}
99+
100+{{range .Functions -}}
101+var x{{.Name}} func({{conv .Args.Pure.Types}}) {{.Ret.Raw}}
102+
103+{{.Doc}}
104+func {{.Name}}({{conv .Args.API.Full}}) {{.Ret.Value}} {
105+ {{if .Ret.Class}}
106+ {{.Name}}Ptr := x{{.Name}}({{conv .Args.API.Call}})
107+ if {{.Name}}Ptr == 0 {
108+ return nil
109+ }
110+ {{if .Ret.RefSink}}
111+ {{if $NotGObject}}gobject.{{end}}IncreaseRef({{.Name}}Ptr)
112+ {{end}}
113+ {{.Name}}Cls := {{.Ret.Instance}}{}
114+ {{.Name}}Cls.Ptr = {{.Name}}Ptr
115+ return {{.Name}}Cls
116+ {{else if .Ret.Value}}
117+ return x{{.Name}}({{conv .Args.API.Call}})
118+ {{else}}
119+ x{{.Name}}({{conv .Args.API.Call}})
120+ {{end}}
121+}
122+{{end}}
123+
124+{{range .Classes -}}
125+{{.Doc}}
126+type {{.Name}} struct {
127+ {{.Parent}}
128+ {{if not .Parent}}
129+ Ptr uintptr
130+ {{end}}
131+}
132+
133+{{$outer := .}}
134+func {{.Name}}NewFromInternalPtr(ptr uintptr) *{{.Name}} {
135+ cls := &{{.Name}}{}
136+ cls.Ptr = ptr
137+ return cls
138+}
139+
140+{{range .Constructors -}}
141+var x{{.Name}}{{$outer.Name}} func({{conv .Args.Pure.Types}}) {{.Ret.Raw}}
142+
143+
144+{{.Doc}}
145+func {{.Name}}{{$outer.Name}}({{conv .Args.API.Full}}) {{.Ret.Value}} {
146+ {{.Name}}{{$outer.Name}}Ptr := x{{.Name}}{{$outer.Name}}({{conv .Args.API.Call}})
147+ if {{.Name}}{{$outer.Name}}Ptr == 0 {
148+ return nil
149+ }
150+ {{if .Ret.RefSink}}
151+ {{if $NotGObject}}gobject.{{end}}IncreaseRef({{.Name}}{{$outer.Name}}Ptr)
152+ {{end}}
153+ {{.Name}}{{$outer.Name}}Cls := {{.Ret.Instance}}{}
154+ {{.Name}}{{$outer.Name}}Cls.Ptr = {{.Name}}{{$outer.Name}}Ptr
155+ return {{.Name}}{{$outer.Name}}Cls
156+}
157+{{end}}
158+
159+{{$outer := .}}
160+{{range .Receivers -}}
161+var x{{$outer.Name}}{{.Name}} func(uintptr {{convc .Args.Pure.Types}}) {{.Ret.Raw}}
162+
163+{{.Doc}}
164+func (x *{{$outer.Name}}) {{.Name}}({{conv .Args.API.Full}}) {{.Ret.Value}} {
165+ {{if .Ret.Class}}
166+ {{.Name}}Ptr := x{{$outer.Name}}{{.Name}}(x.GoPointer() {{convc .Args.API.Call}})
167+ if {{.Name}}Ptr == 0 {
168+ return nil
169+ }
170+ {{if .Ret.RefSink}}
171+ {{if $NotGObject}}gobject.{{end}}IncreaseRef({{.Name}}Ptr)
172+ {{end}}
173+ {{.Name}}Cls := {{.Ret.Instance}}{}
174+ {{.Name}}Cls.Ptr = {{.Name}}Ptr
175+ return {{.Name}}Cls
176+ {{else if .Ret.Value}}
177+ return x{{$outer.Name}}{{.Name}}(x.GoPointer() {{convc .Args.API.Call}})
178+ {{else}}
179+ x{{$outer.Name}}{{.Name}}(x.GoPointer() {{convc .Args.API.Call}})
180+ {{end}}
181+}
182+{{end}}
183+
184+func (c *{{.Name}}) GoPointer() uintptr {
185+ return c.Ptr
186+}
187+
188+func (c *{{.Name}}) SetGoPointer(ptr uintptr) {
189+ c.Ptr = ptr
190+}
191+
192+{{range .Signals -}}
193+
194+{{.Doc}}
195+func (x *{{$outer.Name}}) Connect{{.Name}}(cb func({{$outer.Name}} {{convc .Args.API.Types}}) {{.Ret.Value}}) {
196+ fcb := func(clsPtr uintptr {{convc .Args.Pure.Full}}) {{.Ret.Raw}} {
197+ fa := {{$outer.Name}}{}
198+ fa.Ptr = clsPtr
199+ {{if .Ret.Class}}
200+ {{.Name}}Cls := cb(fa {{convc .Args.Pure.Call}})
201+ return {{.Name}}Cls.Ptr
202+ {{else if .Ret.Value}}
203+ return cb(fa {{convc .Args.Pure.Call}})
204+ {{else}}
205+ cb(fa {{convc .Args.Pure.Call}})
206+ {{end}}
207+ }
208+ {{if $NotGObject}}gobject.{{end}}ObjectConnect(x.GoPointer(), "signal::{{.CName}}", purego.NewCallback(fcb))
209+}
210+{{end}}
211+
212+{{range .Interfaces -}}
213+{{range .Methods -}}
214+{{.Doc}}
215+func (x *{{$outer.Name}}) {{.Name}}({{conv .Args.API.Full}}) {{.Ret.Value}} {
216+ {{if .Ret.Class}}
217+ {{.Name}}Ptr := {{.Namespace}}X{{.FullName}}(x.GoPointer() {{convc .Args.API.Call}})
218+ if {{.Name}}Ptr == 0 {
219+ return nil
220+ }
221+ {{if .Ret.RefSink}}
222+ {{if $NotGObject}}gobject.{{end}}IncreaseRef({{.Name}}Ptr)
223+ {{end}}
224+ {{.Name}}Cls := {{.Ret.Instance}}{}
225+ {{.Name}}Cls.Ptr = {{.Name}}Ptr
226+ return {{.Name}}Cls
227+ {{else if .Ret.Value}}
228+ return {{.Namespace}}X{{.FullName}}(x.GoPointer() {{convc .Args.API.Call}})
229+ {{else}}
230+ {{.Namespace}}X{{.FullName}}(x.GoPointer() {{convc .Args.API.Call}})
231+ {{end}}
232+}
233+{{end}}
234+{{end}}
235+
236+{{end}}
237+
238+
239+{{if .NeedsInit}}
240+
241+func init() {
242+ lib, err := purego.Dlopen(core.GetPath("{{.PkgEnv}}"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
243+ if err != nil {
244+ panic(err)
245+ }
246+ {{range .Functions -}}
247+ core.PuregoSafeRegister(&x{{.Name}}, lib, "{{.CName}}")
248+ {{end}}
249+ {{range .Classes -}}
250+ {{$cls := .}}
251+ {{range .Constructors -}}
252+ core.PuregoSafeRegister(&x{{.Name}}{{$cls.Name}}, lib, "{{.CName}}")
253+ {{end}}
254+ {{range .Receivers -}}
255+ core.PuregoSafeRegister(&x{{$cls.Name}}{{.Name}}, lib, "{{.CName}}")
256+ {{end}}
257+ {{end}}
258+ {{range .Interfaces -}}
259+ {{range .Methods -}}
260+ core.PuregoSafeRegister(&{{.Namespace}}X{{.FullName}}, lib, "{{.CName}}")
261+ {{end}}
262+ {{end}}
263+}
264+{{end}}
A templates/gobject +94 -0
@@ -0,0 +1,94 @@
1+package gobject
2+
3+import (
4+ "os"
5+ "reflect"
6+
7+ "github.com/jwijenbergh/purego"
8+ "github.com/jwijenbergh/puregotk/internal/core"
9+)
10+
11+type Ptr interface {
12+ GoPointer() uintptr
13+ SetGoPointer(uintptr)
14+}
15+
16+func ConvertPtr(a interface{}) *uintptr {
17+ if a == nil || (reflect.ValueOf(a).Kind() == reflect.Ptr && reflect.ValueOf(a).IsNil()) {
18+ return nil
19+ }
20+ ptr := reflect.ValueOf(a).Elem()
21+ v, ok := ptr.Interface().(Ptr);
22+ if !ok {
23+ panic("not valid")
24+ }
25+ g := v.GoPointer()
26+ return &g
27+}
28+
29+func IncreaseRef(a uintptr) {
30+ xObjectRefSink(a)
31+}
32+
33+func ObjectConnect(a uintptr, b string, c ...interface{}) uintptr {
34+ return xObjectConnect(a, b, c...)
35+}
36+
37+func (o Object) Cast(v Ptr) {
38+ v.SetGoPointer(o.GoPointer())
39+}
40+
41+// NewCallback is an alias to purego.NewCallback
42+func NewCallback(fn interface{}) uintptr {
43+ return purego.NewCallback(fn)
44+}
45+
46+// types
47+const (
48+ TypeInvalidVal Type = 0
49+ TypeNoneVal = 1 << 2
50+ TypeInterfaceVal = 2 << 2
51+ TypeCharVal = 3 << 2
52+ TypeUcharVal = 4 << 2
53+ TypeBooleanVal = 5 << 2
54+ TypeIntVal = 6 << 2
55+ TypeUintVal = 7 << 2
56+ TypeLongVal = 8 << 2
57+ TypeUlongVal = 9 << 2
58+ TypeInt64Val = 10 << 2
59+ TypeUint64Val = 11 << 2
60+ TypeEnumVal = 12 << 2
61+ TypeFlagsVal = 13 << 2
62+ TypeFloatVal = 14 << 2
63+ TypeDoubleVal = 15 << 2
64+ TypeStringVal = 16 << 2
65+ TypePointerVal = 17 << 2
66+ TypeBoxedVal = 18 << 2
67+ TypeParamVal = 19 << 2
68+ TypeObjectVal = 20 << 2
69+ TypeReservedGLibLastVal = 31 << 2
70+ TypeReservedBseFirstVal = 32 << 2
71+ TypeReservedBseLastVal = 48 << 2
72+ TypeReservedUserFirstVal = 49 << 2
73+)
74+
75+var xValueDupString func(*Value) string
76+
77+func (v *Value) String() string {
78+ return xValueDupString(v)
79+}
80+
81+var xValueGetInt func(*Value) int
82+
83+func (v *Value) Int() int {
84+ return xValueGetInt(v)
85+}
86+
87+func init() {
88+ lib, err := purego.Dlopen(os.Getenv("PUREGOTK_GTK_PATH"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
89+ if err != nil {
90+ panic(err)
91+ }
92+ core.PuregoSafeRegister(&xValueDupString, lib, "g_value_dup_string")
93+ core.PuregoSafeRegister(&xValueGetInt, lib, "g_value_get_int")
94+}
A v4/adw/adw-about-window.go +1220 -0
@@ -0,0 +1,1220 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gdk"
8+ "github.com/jwijenbergh/puregotk/v4/gobject"
9+ "github.com/jwijenbergh/puregotk/v4/gsk"
10+ "github.com/jwijenbergh/puregotk/v4/gtk"
11+)
12+
13+type AboutWindowClass struct {
14+ ParentClass uintptr
15+}
16+
17+var xShowAboutWindow func(uintptr, string, ...interface{})
18+
19+// A convenience function for showing an application’s about window.
20+func ShowAboutWindow(ParentVar *gtk.Window, FirstPropertyNameVar string, varArgs ...interface{}) {
21+
22+ xShowAboutWindow(ParentVar.GoPointer(), FirstPropertyNameVar, varArgs...)
23+
24+}
25+
26+// A window showing information about the application.
27+//
28+// &lt;picture&gt;
29+//
30+// &lt;source srcset="about-window-dark.png" media="(prefers-color-scheme: dark)"&gt;
31+// &lt;img src="about-window.png" alt="about-window"&gt;
32+//
33+// &lt;/picture&gt;
34+//
35+// An about window is typically opened when the user activates the `About …`
36+// item in the application's primary menu. All parts of the window are optional.
37+//
38+// ## Main page
39+//
40+// `AdwAboutWindow` prominently displays the application's icon, name, developer
41+// name and version. They can be set with the [property@AboutWindow:application-icon],
42+// [property@AboutWindow:application-name],
43+// [property@AboutWindow:developer-name] and [property@AboutWindow:version]
44+// respectively.
45+//
46+// ## What's New
47+//
48+// `AdwAboutWindow` provides a way for applications to display their release
49+// notes, set with the [property@AboutWindow:release-notes] property.
50+//
51+// Release notes are formatted the same way as
52+// [AppStream descriptions](https://freedesktop.org/software/appstream/docs/chap-Metadata.html#tag-description).
53+//
54+// The supported formatting options are:
55+//
56+// * Paragraph (`&lt;p&gt;`)
57+// * Ordered list (`&lt;ol&gt;`), with list items (`&lt;li&gt;`)
58+// * Unordered list (`&lt;ul&gt;`), with list items (`&lt;li&gt;`)
59+//
60+// Within paragraphs and list items, emphasis (`&lt;em&gt;`) and inline code
61+// (`&lt;code&gt;`) text styles are supported. The emphasis is rendered in italic,
62+// while inline code is shown in a monospaced font.
63+//
64+// Any text outside paragraphs or list items is ignored.
65+//
66+// Nested lists are not supported.
67+//
68+// Only one version can be shown at a time. By default, the displayed version
69+// number matches [property@AboutWindow:version]. Use
70+// [property@AboutWindow:release-notes-version] to override it.
71+//
72+// ## Details
73+//
74+// The Details page displays the application comments and links.
75+//
76+// The comments can be set with the [property@AboutWindow:comments] property.
77+// Unlike [property@Gtk.AboutDialog:comments], this string can be long and
78+// detailed. It can also contain links and Pango markup.
79+//
80+// To set the application website, use [property@AboutWindow:website].
81+// To add extra links below the website, use [method@AboutWindow.add_link].
82+//
83+// If the Details page doesn't have any other content besides website, the
84+// website will be displayed on the main page instead.
85+//
86+// ## Troubleshooting
87+//
88+// `AdwAboutWindow` displays the following two links on the main page:
89+//
90+// * Support Questions, set with the [property@AboutWindow:support-url] property,
91+// * Report an Issue, set with the [property@AboutWindow:issue-url] property.
92+//
93+// Additionally, applications can provide debugging information. It will be
94+// shown separately on the Troubleshooting page. Use the
95+// [property@AboutWindow:debug-info] property to specify it.
96+//
97+// It's intended to be attached to issue reports when reporting issues against
98+// the application. As such, it cannot contain markup or links.
99+//
100+// `AdwAboutWindow` provides a quick way to save debug information to a file.
101+// When saving, [property@AboutWindow:debug-info-filename] would be used as
102+// the suggested filename.
103+//
104+// ## Credits and Acknowledgements
105+//
106+// The Credits page has the following default sections:
107+//
108+// * Developers, set with the [property@AboutWindow:developers] property,
109+// * Designers, set with the [property@AboutWindow:designers] property,
110+// * Artists, set with the [property@AboutWindow:artists] property,
111+// * Documenters, set with the [property@AboutWindow:documenters] property,
112+// * Translators, set with the [property@AboutWindow:translator-credits] property.
113+//
114+// When setting translator credits, use the strings `"translator-credits"` or
115+// `"translator_credits"` and mark them as translatable.
116+//
117+// The default sections that don't contain any names won't be displayed.
118+//
119+// The Credits page can also contain an arbitrary number of extra sections below
120+// the default ones. Use [method@AboutWindow.add_credit_section] to add them.
121+//
122+// The Acknowledgements page can be used to acknowledge additional people and
123+// organizations for their non-development contributions. Use
124+// [method@AboutWindow.add_acknowledgement_section] to add sections to it. For
125+// example, it can be used to list backers in a crowdfunded project or to give
126+// special thanks.
127+//
128+// Each of the people or organizations can have an email address or a website
129+// specified. To add a email address, use a string like
130+// `Edgar Allan Poe &lt;edgar@poe.com&gt;`. To specify a website with a title, use a
131+// string like `The GNOME Project https://www.gnome.org`:
132+//
133+// &lt;picture&gt;
134+//
135+// &lt;source srcset="about-window-credits-dark.png" media="(prefers-color-scheme: dark)"&gt;
136+// &lt;img src="about-window-credits.png" alt="about-window-credits"&gt;
137+//
138+// &lt;/picture&gt;
139+//
140+// ## Legal
141+//
142+// The Legal page displays the copyright and licensing information for the
143+// application and other modules.
144+//
145+// The copyright string is set with the [property@AboutWindow:copyright]
146+// property and should be a short string of one or two lines, for example:
147+// `© 2022 Example`.
148+//
149+// Licensing information can be quickly set from a list of known licenses with
150+// the [property@AboutWindow:license-type] property. If the application's
151+// license is not in the list, [property@AboutWindow:license] can be used
152+// instead.
153+//
154+// To add information about other modules, such as application dependencies or
155+// data, use [method@AboutWindow.add_legal_section].
156+//
157+// ## Constructing
158+//
159+// To make constructing an `AdwAboutWindow` as convenient as possible, you can
160+// use the function [func@show_about_window] which constructs and shows a
161+// window.
162+//
163+// ```c
164+// static void
165+// show_about (GtkApplication *app)
166+//
167+// {
168+// const char *developers[] = {
169+// "Angela Avery",
170+// NULL
171+// };
172+//
173+// const char *designers[] = {
174+// "GNOME Design Team",
175+// NULL
176+// };
177+//
178+// adw_show_about_window (gtk_application_get_active_window (app),
179+// "application-name", _("Example"),
180+// "application-icon", "org.example.App",
181+// "version", "1.2.3",
182+// "copyright", "© 2022 Angela Avery",
183+// "issue-url", "https://gitlab.gnome.org/example/example/-/issues/new",
184+// "license-type", GTK_LICENSE_GPL_3_0,
185+// "developers", developers,
186+// "designers", designers,
187+// "translator-credits", _("translator-credits"),
188+// NULL);
189+// }
190+//
191+// ```
192+//
193+// ## CSS nodes
194+//
195+// `AdwAboutWindow` has a main CSS node with the name `window` and the
196+// style class `.about`.
197+type AboutWindow struct {
198+ Window
199+}
200+
201+func AboutWindowNewFromInternalPtr(ptr uintptr) *AboutWindow {
202+ cls := &AboutWindow{}
203+ cls.Ptr = ptr
204+ return cls
205+}
206+
207+var xNewAboutWindow func() uintptr
208+
209+// Creates a new `AdwAboutWindow`.
210+func NewAboutWindow() *gtk.Widget {
211+ NewAboutWindowPtr := xNewAboutWindow()
212+ if NewAboutWindowPtr == 0 {
213+ return nil
214+ }
215+
216+ gobject.IncreaseRef(NewAboutWindowPtr)
217+
218+ NewAboutWindowCls := &gtk.Widget{}
219+ NewAboutWindowCls.Ptr = NewAboutWindowPtr
220+ return NewAboutWindowCls
221+}
222+
223+var xAboutWindowAddAcknowledgementSection func(uintptr, string, uintptr)
224+
225+// Adds a section to the Acknowledgements page.
226+//
227+// This can be used to acknowledge additional people and organizations for their
228+// non-development contributions - for example, backers in a crowdfunded
229+// project.
230+//
231+// Each name may contain email addresses and URLs, see the introduction for more
232+// details.
233+//
234+// See also:
235+//
236+// * [property@AboutWindow:developers]
237+// * [property@AboutWindow:designers]
238+// * [property@AboutWindow:artists]
239+// * [property@AboutWindow:documenters]
240+// * [property@AboutWindow:translator-credits]
241+// * [method@AboutWindow.add_credit_section]
242+func (x *AboutWindow) AddAcknowledgementSection(NameVar string, PeopleVar uintptr) {
243+
244+ xAboutWindowAddAcknowledgementSection(x.GoPointer(), NameVar, PeopleVar)
245+
246+}
247+
248+var xAboutWindowAddCreditSection func(uintptr, string, uintptr)
249+
250+// Adds an extra section to the Credits page.
251+//
252+// Extra sections are displayed below the standard categories.
253+//
254+// Each name may contain email addresses and URLs, see the introduction for more
255+// details.
256+//
257+// See also:
258+//
259+// * [property@AboutWindow:developers]
260+// * [property@AboutWindow:designers]
261+// * [property@AboutWindow:artists]
262+// * [property@AboutWindow:documenters]
263+// * [property@AboutWindow:translator-credits]
264+// * [method@AboutWindow.add_acknowledgement_section]
265+func (x *AboutWindow) AddCreditSection(NameVar string, PeopleVar uintptr) {
266+
267+ xAboutWindowAddCreditSection(x.GoPointer(), NameVar, PeopleVar)
268+
269+}
270+
271+var xAboutWindowAddLegalSection func(uintptr, string, string, gtk.License, string)
272+
273+// Adds an extra section to the Legal page.
274+//
275+// Extra sections will be displayed below the application's own information.
276+//
277+// The parameters @copyright, @license_type and @license will be used to present
278+// the it the same way as [property@AboutWindow:copyright],
279+// [property@AboutWindow:license-type] and [property@AboutWindow:license] are
280+// for the application's own information.
281+//
282+// See those properties for more details.
283+//
284+// This can be useful to attribute the application dependencies or data.
285+//
286+// Examples:
287+//
288+// ```c
289+// adw_about_window_add_legal_section (ADW_ABOUT_WINDOW (about),
290+//
291+// _("Copyright and a known license"),
292+// "© 2022 Example",
293+// GTK_LICENSE_LGPL_2_1,
294+// NULL);
295+//
296+// adw_about_window_add_legal_section (ADW_ABOUT_WINDOW (about),
297+//
298+// _("Copyright and custom license"),
299+// "© 2022 Example",
300+// GTK_LICENSE_CUSTOM,
301+// "Custom license text");
302+//
303+// adw_about_window_add_legal_section (ADW_ABOUT_WINDOW (about),
304+//
305+// _("Copyright only"),
306+// "© 2022 Example",
307+// GTK_LICENSE_UNKNOWN,
308+// NULL);
309+//
310+// adw_about_window_add_legal_section (ADW_ABOUT_WINDOW (about),
311+//
312+// _("Custom license only"),
313+// NULL,
314+// GTK_LICENSE_CUSTOM,
315+// "Something completely custom here.");
316+//
317+// ```
318+func (x *AboutWindow) AddLegalSection(TitleVar string, CopyrightVar string, LicenseTypeVar gtk.License, LicenseVar string) {
319+
320+ xAboutWindowAddLegalSection(x.GoPointer(), TitleVar, CopyrightVar, LicenseTypeVar, LicenseVar)
321+
322+}
323+
324+var xAboutWindowAddLink func(uintptr, string, string)
325+
326+// Adds an extra link to the Details page.
327+//
328+// Extra links are displayed under the comment and website.
329+//
330+// Underlines in @title will be interpreted as indicating a mnemonic.
331+//
332+// See [property@AboutWindow:website].
333+func (x *AboutWindow) AddLink(TitleVar string, UrlVar string) {
334+
335+ xAboutWindowAddLink(x.GoPointer(), TitleVar, UrlVar)
336+
337+}
338+
339+var xAboutWindowGetApplicationIcon func(uintptr) string
340+
341+// Gets the name of the application icon for @self.
342+func (x *AboutWindow) GetApplicationIcon() string {
343+
344+ return xAboutWindowGetApplicationIcon(x.GoPointer())
345+
346+}
347+
348+var xAboutWindowGetApplicationName func(uintptr) string
349+
350+// Gets the application name for @self.
351+func (x *AboutWindow) GetApplicationName() string {
352+
353+ return xAboutWindowGetApplicationName(x.GoPointer())
354+
355+}
356+
357+var xAboutWindowGetArtists func(uintptr) uintptr
358+
359+// Gets the list of artists of the application.
360+func (x *AboutWindow) GetArtists() uintptr {
361+
362+ return xAboutWindowGetArtists(x.GoPointer())
363+
364+}
365+
366+var xAboutWindowGetComments func(uintptr) string
367+
368+// Gets the comments about the application.
369+func (x *AboutWindow) GetComments() string {
370+
371+ return xAboutWindowGetComments(x.GoPointer())
372+
373+}
374+
375+var xAboutWindowGetCopyright func(uintptr) string
376+
377+// Gets the copyright information for @self.
378+func (x *AboutWindow) GetCopyright() string {
379+
380+ return xAboutWindowGetCopyright(x.GoPointer())
381+
382+}
383+
384+var xAboutWindowGetDebugInfo func(uintptr) string
385+
386+// Gets the debug information for @self.
387+func (x *AboutWindow) GetDebugInfo() string {
388+
389+ return xAboutWindowGetDebugInfo(x.GoPointer())
390+
391+}
392+
393+var xAboutWindowGetDebugInfoFilename func(uintptr) string
394+
395+// Gets the debug information filename for @self.
396+func (x *AboutWindow) GetDebugInfoFilename() string {
397+
398+ return xAboutWindowGetDebugInfoFilename(x.GoPointer())
399+
400+}
401+
402+var xAboutWindowGetDesigners func(uintptr) uintptr
403+
404+// Gets the list of designers of the application.
405+func (x *AboutWindow) GetDesigners() uintptr {
406+
407+ return xAboutWindowGetDesigners(x.GoPointer())
408+
409+}
410+
411+var xAboutWindowGetDeveloperName func(uintptr) string
412+
413+// Gets the developer name for @self.
414+func (x *AboutWindow) GetDeveloperName() string {
415+
416+ return xAboutWindowGetDeveloperName(x.GoPointer())
417+
418+}
419+
420+var xAboutWindowGetDevelopers func(uintptr) uintptr
421+
422+// Gets the list of developers of the application.
423+func (x *AboutWindow) GetDevelopers() uintptr {
424+
425+ return xAboutWindowGetDevelopers(x.GoPointer())
426+
427+}
428+
429+var xAboutWindowGetDocumenters func(uintptr) uintptr
430+
431+// Gets the list of documenters of the application.
432+func (x *AboutWindow) GetDocumenters() uintptr {
433+
434+ return xAboutWindowGetDocumenters(x.GoPointer())
435+
436+}
437+
438+var xAboutWindowGetIssueUrl func(uintptr) string
439+
440+// Gets the issue tracker URL for @self.
441+func (x *AboutWindow) GetIssueUrl() string {
442+
443+ return xAboutWindowGetIssueUrl(x.GoPointer())
444+
445+}
446+
447+var xAboutWindowGetLicense func(uintptr) string
448+
449+// Gets the license for @self.
450+func (x *AboutWindow) GetLicense() string {
451+
452+ return xAboutWindowGetLicense(x.GoPointer())
453+
454+}
455+
456+var xAboutWindowGetLicenseType func(uintptr) gtk.License
457+
458+// Gets the license type for @self.
459+func (x *AboutWindow) GetLicenseType() gtk.License {
460+
461+ return xAboutWindowGetLicenseType(x.GoPointer())
462+
463+}
464+
465+var xAboutWindowGetReleaseNotes func(uintptr) string
466+
467+// Gets the release notes for @self.
468+func (x *AboutWindow) GetReleaseNotes() string {
469+
470+ return xAboutWindowGetReleaseNotes(x.GoPointer())
471+
472+}
473+
474+var xAboutWindowGetReleaseNotesVersion func(uintptr) string
475+
476+// Gets the version described by the application's release notes.
477+func (x *AboutWindow) GetReleaseNotesVersion() string {
478+
479+ return xAboutWindowGetReleaseNotesVersion(x.GoPointer())
480+
481+}
482+
483+var xAboutWindowGetSupportUrl func(uintptr) string
484+
485+// Gets the URL of the support page for @self.
486+func (x *AboutWindow) GetSupportUrl() string {
487+
488+ return xAboutWindowGetSupportUrl(x.GoPointer())
489+
490+}
491+
492+var xAboutWindowGetTranslatorCredits func(uintptr) string
493+
494+// Gets the translator credits string.
495+func (x *AboutWindow) GetTranslatorCredits() string {
496+
497+ return xAboutWindowGetTranslatorCredits(x.GoPointer())
498+
499+}
500+
501+var xAboutWindowGetVersion func(uintptr) string
502+
503+// Gets the version for @self.
504+func (x *AboutWindow) GetVersion() string {
505+
506+ return xAboutWindowGetVersion(x.GoPointer())
507+
508+}
509+
510+var xAboutWindowGetWebsite func(uintptr) string
511+
512+// Gets the application website URL for @self.
513+func (x *AboutWindow) GetWebsite() string {
514+
515+ return xAboutWindowGetWebsite(x.GoPointer())
516+
517+}
518+
519+var xAboutWindowSetApplicationIcon func(uintptr, string)
520+
521+// Sets the name of the application icon for @self.
522+//
523+// The icon is displayed at the top of the main page.
524+func (x *AboutWindow) SetApplicationIcon(ApplicationIconVar string) {
525+
526+ xAboutWindowSetApplicationIcon(x.GoPointer(), ApplicationIconVar)
527+
528+}
529+
530+var xAboutWindowSetApplicationName func(uintptr, string)
531+
532+// Sets the application name for @self.
533+//
534+// The name is displayed at the top of the main page.
535+func (x *AboutWindow) SetApplicationName(ApplicationNameVar string) {
536+
537+ xAboutWindowSetApplicationName(x.GoPointer(), ApplicationNameVar)
538+
539+}
540+
541+var xAboutWindowSetArtists func(uintptr, uintptr)
542+
543+// Sets the list of artists of the application.
544+//
545+// It will be displayed on the Credits page.
546+//
547+// Each name may contain email addresses and URLs, see the introduction for more
548+// details.
549+//
550+// See also:
551+//
552+// * [property@AboutWindow:developers]
553+// * [property@AboutWindow:designers]
554+// * [property@AboutWindow:documenters]
555+// * [property@AboutWindow:translator-credits]
556+// * [method@AboutWindow.add_credit_section]
557+// * [method@AboutWindow.add_acknowledgement_section]
558+func (x *AboutWindow) SetArtists(ArtistsVar uintptr) {
559+
560+ xAboutWindowSetArtists(x.GoPointer(), ArtistsVar)
561+
562+}
563+
564+var xAboutWindowSetComments func(uintptr, string)
565+
566+// Sets the comments about the application.
567+//
568+// Comments will be shown on the Details page, above links.
569+//
570+// Unlike [property@Gtk.AboutDialog:comments], this string can be long and
571+// detailed. It can also contain links and Pango markup.
572+func (x *AboutWindow) SetComments(CommentsVar string) {
573+
574+ xAboutWindowSetComments(x.GoPointer(), CommentsVar)
575+
576+}
577+
578+var xAboutWindowSetCopyright func(uintptr, string)
579+
580+// Sets the copyright information for @self.
581+//
582+// This should be a short string of one or two lines, for example:
583+// `© 2022 Example`.
584+//
585+// The copyright information will be displayed on the Legal page, before the
586+// application license.
587+//
588+// [method@AboutWindow.add_legal_section] can be used to add copyright
589+// information for the application dependencies or other components.
590+func (x *AboutWindow) SetCopyright(CopyrightVar string) {
591+
592+ xAboutWindowSetCopyright(x.GoPointer(), CopyrightVar)
593+
594+}
595+
596+var xAboutWindowSetDebugInfo func(uintptr, string)
597+
598+// Sets the debug information for @self.
599+//
600+// Debug information will be shown on the Troubleshooting page. It's intended
601+// to be attached to issue reports when reporting issues against the
602+// application.
603+//
604+// `AdwAboutWindow` provides a quick way to save debug information to a file.
605+// When saving, [property@AboutWindow:debug-info-filename] would be used as
606+// the suggested filename.
607+//
608+// Debug information cannot contain markup or links.
609+func (x *AboutWindow) SetDebugInfo(DebugInfoVar string) {
610+
611+ xAboutWindowSetDebugInfo(x.GoPointer(), DebugInfoVar)
612+
613+}
614+
615+var xAboutWindowSetDebugInfoFilename func(uintptr, string)
616+
617+// Sets the debug information filename for @self.
618+//
619+// It will be used as the suggested filename when saving debug information to a
620+// file.
621+//
622+// See [property@AboutWindow:debug-info].
623+func (x *AboutWindow) SetDebugInfoFilename(FilenameVar string) {
624+
625+ xAboutWindowSetDebugInfoFilename(x.GoPointer(), FilenameVar)
626+
627+}
628+
629+var xAboutWindowSetDesigners func(uintptr, uintptr)
630+
631+// Sets the list of designers of the application.
632+//
633+// It will be displayed on the Credits page.
634+//
635+// Each name may contain email addresses and URLs, see the introduction for more
636+// details.
637+//
638+// See also:
639+//
640+// * [property@AboutWindow:developers]
641+// * [property@AboutWindow:artists]
642+// * [property@AboutWindow:documenters]
643+// * [property@AboutWindow:translator-credits]
644+// * [method@AboutWindow.add_credit_section]
645+// * [method@AboutWindow.add_acknowledgement_section]
646+func (x *AboutWindow) SetDesigners(DesignersVar uintptr) {
647+
648+ xAboutWindowSetDesigners(x.GoPointer(), DesignersVar)
649+
650+}
651+
652+var xAboutWindowSetDeveloperName func(uintptr, string)
653+
654+// Sets the developer name for @self.
655+//
656+// The developer name is displayed on the main page, under the application name.
657+//
658+// If the application is developed by multiple people, the developer name can be
659+// set to values like "AppName team", "AppName developers" or
660+// "The AppName project", and the individual contributors can be listed on the
661+// Credits page, with [property@AboutWindow:developers] and related properties.
662+func (x *AboutWindow) SetDeveloperName(DeveloperNameVar string) {
663+
664+ xAboutWindowSetDeveloperName(x.GoPointer(), DeveloperNameVar)
665+
666+}
667+
668+var xAboutWindowSetDevelopers func(uintptr, uintptr)
669+
670+// Sets the list of developers of the application.
671+//
672+// It will be displayed on the Credits page.
673+//
674+// Each name may contain email addresses and URLs, see the introduction for more
675+// details.
676+//
677+// See also:
678+//
679+// * [property@AboutWindow:designers]
680+// * [property@AboutWindow:artists]
681+// * [property@AboutWindow:documenters]
682+// * [property@AboutWindow:translator-credits]
683+// * [method@AboutWindow.add_credit_section]
684+// * [method@AboutWindow.add_acknowledgement_section]
685+func (x *AboutWindow) SetDevelopers(DevelopersVar uintptr) {
686+
687+ xAboutWindowSetDevelopers(x.GoPointer(), DevelopersVar)
688+
689+}
690+
691+var xAboutWindowSetDocumenters func(uintptr, uintptr)
692+
693+// Sets the list of documenters of the application.
694+//
695+// It will be displayed on the Credits page.
696+//
697+// Each name may contain email addresses and URLs, see the introduction for more
698+// details.
699+//
700+// See also:
701+//
702+// * [property@AboutWindow:developers]
703+// * [property@AboutWindow:designers]
704+// * [property@AboutWindow:artists]
705+// * [property@AboutWindow:translator-credits]
706+// * [method@AboutWindow.add_credit_section]
707+// * [method@AboutWindow.add_acknowledgement_section]
708+func (x *AboutWindow) SetDocumenters(DocumentersVar uintptr) {
709+
710+ xAboutWindowSetDocumenters(x.GoPointer(), DocumentersVar)
711+
712+}
713+
714+var xAboutWindowSetIssueUrl func(uintptr, string)
715+
716+// Sets the issue tracker URL for @self.
717+//
718+// The issue tracker link is displayed on the main page.
719+func (x *AboutWindow) SetIssueUrl(IssueUrlVar string) {
720+
721+ xAboutWindowSetIssueUrl(x.GoPointer(), IssueUrlVar)
722+
723+}
724+
725+var xAboutWindowSetLicense func(uintptr, string)
726+
727+// Sets the license for @self.
728+//
729+// This can be used to set a custom text for the license if it can't be set via
730+// [property@AboutWindow:license-type].
731+//
732+// When set, [property@AboutWindow:license-type] will be set to
733+// `GTK_LICENSE_CUSTOM`.
734+//
735+// The license text will be displayed on the Legal page, below the copyright
736+// information.
737+//
738+// License text can contain Pango markup and links.
739+//
740+// [method@AboutWindow.add_legal_section] can be used to add license information
741+// for the application dependencies or other components.
742+func (x *AboutWindow) SetLicense(LicenseVar string) {
743+
744+ xAboutWindowSetLicense(x.GoPointer(), LicenseVar)
745+
746+}
747+
748+var xAboutWindowSetLicenseType func(uintptr, gtk.License)
749+
750+// Sets the license for @self from a list of known licenses.
751+//
752+// If the application's license is not in the list,
753+// [property@AboutWindow:license] can be used instead. The license type will be
754+// automatically set to `GTK_LICENSE_CUSTOM` in that case.
755+//
756+// If @license_type is `GTK_LICENSE_UNKNOWN`, no information will be displayed.
757+//
758+// If @license_type is different from `GTK_LICENSE_CUSTOM`.
759+// [property@AboutWindow:license] will be cleared out.
760+//
761+// The license description will be displayed on the Legal page, below the
762+// copyright information.
763+//
764+// [method@AboutWindow.add_legal_section] can be used to add license information
765+// for the application dependencies or other components.
766+func (x *AboutWindow) SetLicenseType(LicenseTypeVar gtk.License) {
767+
768+ xAboutWindowSetLicenseType(x.GoPointer(), LicenseTypeVar)
769+
770+}
771+
772+var xAboutWindowSetReleaseNotes func(uintptr, string)
773+
774+// Sets the release notes for @self.
775+//
776+// Release notes are displayed on the the What's New page.
777+//
778+// Release notes are formatted the same way as
779+// [AppStream descriptions](https://freedesktop.org/software/appstream/docs/chap-Metadata.html#tag-description).
780+//
781+// The supported formatting options are:
782+//
783+// * Paragraph (`&lt;p&gt;`)
784+// * Ordered list (`&lt;ol&gt;`), with list items (`&lt;li&gt;`)
785+// * Unordered list (`&lt;ul&gt;`), with list items (`&lt;li&gt;`)
786+//
787+// Within paragraphs and list items, emphasis (`&lt;em&gt;`) and inline code
788+// (`&lt;code&gt;`) text styles are supported. The emphasis is rendered in italic,
789+// while inline code is shown in a monospaced font.
790+//
791+// Any text outside paragraphs or list items is ignored.
792+//
793+// Nested lists are not supported.
794+//
795+// `AdwAboutWindow` displays the version above the release notes. If set, the
796+// [property@AboutWindow:release-notes-version] of the property will be used
797+// as the version; otherwise, [property@AboutWindow:version] is used.
798+func (x *AboutWindow) SetReleaseNotes(ReleaseNotesVar string) {
799+
800+ xAboutWindowSetReleaseNotes(x.GoPointer(), ReleaseNotesVar)
801+
802+}
803+
804+var xAboutWindowSetReleaseNotesVersion func(uintptr, string)
805+
806+// Sets the version described by the application's release notes.
807+//
808+// The release notes version is displayed on the What's New page, above the
809+// release notes.
810+//
811+// If not set, [property@AboutWindow:version] will be used instead.
812+//
813+// For example, an application with the current version 2.0.2 might want to
814+// keep the release notes from 2.0.0, and set the release notes version
815+// accordingly.
816+//
817+// See [property@AboutWindow:release-notes].
818+func (x *AboutWindow) SetReleaseNotesVersion(VersionVar string) {
819+
820+ xAboutWindowSetReleaseNotesVersion(x.GoPointer(), VersionVar)
821+
822+}
823+
824+var xAboutWindowSetSupportUrl func(uintptr, string)
825+
826+// Sets the URL of the support page for @self.
827+//
828+// The support page link is displayed on the main page.
829+func (x *AboutWindow) SetSupportUrl(SupportUrlVar string) {
830+
831+ xAboutWindowSetSupportUrl(x.GoPointer(), SupportUrlVar)
832+
833+}
834+
835+var xAboutWindowSetTranslatorCredits func(uintptr, string)
836+
837+// Sets the translator credits string.
838+//
839+// It will be displayed on the Credits page.
840+//
841+// This string should be `"translator-credits"` or `"translator_credits"` and
842+// should be marked as translatable.
843+//
844+// The string may contain email addresses and URLs, see the introduction for
845+// more details.
846+//
847+// See also:
848+//
849+// * [property@AboutWindow:developers]
850+// * [property@AboutWindow:designers]
851+// * [property@AboutWindow:artists]
852+// * [property@AboutWindow:documenters]
853+// * [method@AboutWindow.add_credit_section]
854+// * [method@AboutWindow.add_acknowledgement_section]
855+func (x *AboutWindow) SetTranslatorCredits(TranslatorCreditsVar string) {
856+
857+ xAboutWindowSetTranslatorCredits(x.GoPointer(), TranslatorCreditsVar)
858+
859+}
860+
861+var xAboutWindowSetVersion func(uintptr, string)
862+
863+// Sets the version for @self.
864+//
865+// The version is displayed on the main page.
866+//
867+// If [property@AboutWindow:release-notes-version] is not set, the version will
868+// also be displayed above the release notes on the What's New page.
869+func (x *AboutWindow) SetVersion(VersionVar string) {
870+
871+ xAboutWindowSetVersion(x.GoPointer(), VersionVar)
872+
873+}
874+
875+var xAboutWindowSetWebsite func(uintptr, string)
876+
877+// Sets the application website URL for @self.
878+//
879+// Website is displayed on the Details page, below comments, or on the main page
880+// if the Details page doesn't have any other content.
881+//
882+// Applications can add other links below, see [method@AboutWindow.add_link].
883+func (x *AboutWindow) SetWebsite(WebsiteVar string) {
884+
885+ xAboutWindowSetWebsite(x.GoPointer(), WebsiteVar)
886+
887+}
888+
889+func (c *AboutWindow) GoPointer() uintptr {
890+ return c.Ptr
891+}
892+
893+func (c *AboutWindow) SetGoPointer(ptr uintptr) {
894+ c.Ptr = ptr
895+}
896+
897+// Emitted when a URL is activated.
898+//
899+// Applications may connect to it to override the default behavior, which is
900+// to call [func@Gtk.show_uri].
901+func (x *AboutWindow) ConnectActivateLink(cb func(AboutWindow, string) bool) {
902+ fcb := func(clsPtr uintptr, UriVarp string) bool {
903+ fa := AboutWindow{}
904+ fa.Ptr = clsPtr
905+
906+ return cb(fa, UriVarp)
907+
908+ }
909+ gobject.ObjectConnect(x.GoPointer(), "signal::activate-link", purego.NewCallback(fcb))
910+}
911+
912+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
913+func (x *AboutWindow) GetAccessibleRole() gtk.AccessibleRole {
914+
915+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
916+
917+}
918+
919+// Resets the accessible @property to its default value.
920+func (x *AboutWindow) ResetProperty(PropertyVar gtk.AccessibleProperty) {
921+
922+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
923+
924+}
925+
926+// Resets the accessible @relation to its default value.
927+func (x *AboutWindow) ResetRelation(RelationVar gtk.AccessibleRelation) {
928+
929+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
930+
931+}
932+
933+// Resets the accessible @state to its default value.
934+func (x *AboutWindow) ResetState(StateVar gtk.AccessibleState) {
935+
936+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
937+
938+}
939+
940+// Updates a list of accessible properties.
941+//
942+// See the [enum@Gtk.AccessibleProperty] documentation for the
943+// value types of accessible properties.
944+//
945+// This function should be called by `GtkWidget` types whenever
946+// an accessible property change must be communicated to assistive
947+// technologies.
948+//
949+// Example:
950+// ```c
951+// value = gtk_adjustment_get_value (adjustment);
952+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
953+//
954+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
955+// -1);
956+//
957+// ```
958+func (x *AboutWindow) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
959+
960+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
961+
962+}
963+
964+// Updates an array of accessible properties.
965+//
966+// This function should be called by `GtkWidget` types whenever an accessible
967+// property change must be communicated to assistive technologies.
968+//
969+// This function is meant to be used by language bindings.
970+func (x *AboutWindow) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
971+
972+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
973+
974+}
975+
976+// Updates a list of accessible relations.
977+//
978+// This function should be called by `GtkWidget` types whenever an accessible
979+// relation change must be communicated to assistive technologies.
980+//
981+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
982+// you should pass each reference individually, followed by %NULL, e.g.
983+//
984+// ```c
985+// gtk_accessible_update_relation (accessible,
986+//
987+// GTK_ACCESSIBLE_RELATION_CONTROLS,
988+// ref1, NULL,
989+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
990+// ref1, ref2, ref3, NULL,
991+// -1);
992+//
993+// ```
994+func (x *AboutWindow) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
995+
996+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
997+
998+}
999+
1000+// Updates an array of accessible relations.
1001+//
1002+// This function should be called by `GtkWidget` types whenever an accessible
1003+// relation change must be communicated to assistive technologies.
1004+//
1005+// This function is meant to be used by language bindings.
1006+func (x *AboutWindow) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
1007+
1008+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
1009+
1010+}
1011+
1012+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
1013+// documentation for the value types of accessible states.
1014+//
1015+// This function should be called by `GtkWidget` types whenever an accessible
1016+// state change must be communicated to assistive technologies.
1017+//
1018+// Example:
1019+// ```c
1020+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
1021+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
1022+//
1023+// GTK_ACCESSIBLE_STATE_CHECKED, value,
1024+// -1);
1025+//
1026+// ```
1027+func (x *AboutWindow) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
1028+
1029+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
1030+
1031+}
1032+
1033+// Updates an array of accessible states.
1034+//
1035+// This function should be called by `GtkWidget` types whenever an accessible
1036+// state change must be communicated to assistive technologies.
1037+//
1038+// This function is meant to be used by language bindings.
1039+func (x *AboutWindow) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
1040+
1041+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
1042+
1043+}
1044+
1045+// Gets the ID of the @buildable object.
1046+//
1047+// `GtkBuilder` sets the name based on the ID attribute
1048+// of the &lt;object&gt; tag used to construct the @buildable.
1049+func (x *AboutWindow) GetBuildableId() string {
1050+
1051+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
1052+
1053+}
1054+
1055+// Returns the renderer that is used for this `GtkNative`.
1056+func (x *AboutWindow) GetRenderer() *gsk.Renderer {
1057+
1058+ GetRendererPtr := gtk.XGtkNativeGetRenderer(x.GoPointer())
1059+ if GetRendererPtr == 0 {
1060+ return nil
1061+ }
1062+
1063+ gobject.IncreaseRef(GetRendererPtr)
1064+
1065+ GetRendererCls := &gsk.Renderer{}
1066+ GetRendererCls.Ptr = GetRendererPtr
1067+ return GetRendererCls
1068+
1069+}
1070+
1071+// Returns the surface of this `GtkNative`.
1072+func (x *AboutWindow) GetSurface() *gdk.Surface {
1073+
1074+ GetSurfacePtr := gtk.XGtkNativeGetSurface(x.GoPointer())
1075+ if GetSurfacePtr == 0 {
1076+ return nil
1077+ }
1078+
1079+ gobject.IncreaseRef(GetSurfacePtr)
1080+
1081+ GetSurfaceCls := &gdk.Surface{}
1082+ GetSurfaceCls.Ptr = GetSurfacePtr
1083+ return GetSurfaceCls
1084+
1085+}
1086+
1087+// Retrieves the surface transform of @self.
1088+//
1089+// This is the translation from @self's surface coordinates into
1090+// @self's widget coordinates.
1091+func (x *AboutWindow) GetSurfaceTransform(XVar float64, YVar float64) {
1092+
1093+ gtk.XGtkNativeGetSurfaceTransform(x.GoPointer(), XVar, YVar)
1094+
1095+}
1096+
1097+// Realizes a `GtkNative`.
1098+//
1099+// This should only be used by subclasses.
1100+func (x *AboutWindow) Realize() {
1101+
1102+ gtk.XGtkNativeRealize(x.GoPointer())
1103+
1104+}
1105+
1106+// Unrealizes a `GtkNative`.
1107+//
1108+// This should only be used by subclasses.
1109+func (x *AboutWindow) Unrealize() {
1110+
1111+ gtk.XGtkNativeUnrealize(x.GoPointer())
1112+
1113+}
1114+
1115+// Returns the display that this `GtkRoot` is on.
1116+func (x *AboutWindow) GetDisplay() *gdk.Display {
1117+
1118+ GetDisplayPtr := gtk.XGtkRootGetDisplay(x.GoPointer())
1119+ if GetDisplayPtr == 0 {
1120+ return nil
1121+ }
1122+
1123+ gobject.IncreaseRef(GetDisplayPtr)
1124+
1125+ GetDisplayCls := &gdk.Display{}
1126+ GetDisplayCls.Ptr = GetDisplayPtr
1127+ return GetDisplayCls
1128+
1129+}
1130+
1131+// Retrieves the current focused widget within the root.
1132+//
1133+// Note that this is the widget that would have the focus
1134+// if the root is active; if the root is not focused then
1135+// `gtk_widget_has_focus (widget)` will be %FALSE for the
1136+// widget.
1137+func (x *AboutWindow) GetFocus() *gtk.Widget {
1138+
1139+ GetFocusPtr := gtk.XGtkRootGetFocus(x.GoPointer())
1140+ if GetFocusPtr == 0 {
1141+ return nil
1142+ }
1143+
1144+ gobject.IncreaseRef(GetFocusPtr)
1145+
1146+ GetFocusCls := &gtk.Widget{}
1147+ GetFocusCls.Ptr = GetFocusPtr
1148+ return GetFocusCls
1149+
1150+}
1151+
1152+// If @focus is not the current focus widget, and is focusable, sets
1153+// it as the focus widget for the root.
1154+//
1155+// If @focus is %NULL, unsets the focus widget for the root.
1156+//
1157+// To set the focus to a particular widget in the root, it is usually
1158+// more convenient to use [method@Gtk.Widget.grab_focus] instead of
1159+// this function.
1160+func (x *AboutWindow) SetFocus(FocusVar *gtk.Widget) {
1161+
1162+ gtk.XGtkRootSetFocus(x.GoPointer(), FocusVar.GoPointer())
1163+
1164+}
1165+
1166+func init() {
1167+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
1168+ if err != nil {
1169+ panic(err)
1170+ }
1171+ core.PuregoSafeRegister(&xShowAboutWindow, lib, "adw_show_about_window")
1172+
1173+ core.PuregoSafeRegister(&xNewAboutWindow, lib, "adw_about_window_new")
1174+
1175+ core.PuregoSafeRegister(&xAboutWindowAddAcknowledgementSection, lib, "adw_about_window_add_acknowledgement_section")
1176+ core.PuregoSafeRegister(&xAboutWindowAddCreditSection, lib, "adw_about_window_add_credit_section")
1177+ core.PuregoSafeRegister(&xAboutWindowAddLegalSection, lib, "adw_about_window_add_legal_section")
1178+ core.PuregoSafeRegister(&xAboutWindowAddLink, lib, "adw_about_window_add_link")
1179+ core.PuregoSafeRegister(&xAboutWindowGetApplicationIcon, lib, "adw_about_window_get_application_icon")
1180+ core.PuregoSafeRegister(&xAboutWindowGetApplicationName, lib, "adw_about_window_get_application_name")
1181+ core.PuregoSafeRegister(&xAboutWindowGetArtists, lib, "adw_about_window_get_artists")
1182+ core.PuregoSafeRegister(&xAboutWindowGetComments, lib, "adw_about_window_get_comments")
1183+ core.PuregoSafeRegister(&xAboutWindowGetCopyright, lib, "adw_about_window_get_copyright")
1184+ core.PuregoSafeRegister(&xAboutWindowGetDebugInfo, lib, "adw_about_window_get_debug_info")
1185+ core.PuregoSafeRegister(&xAboutWindowGetDebugInfoFilename, lib, "adw_about_window_get_debug_info_filename")
1186+ core.PuregoSafeRegister(&xAboutWindowGetDesigners, lib, "adw_about_window_get_designers")
1187+ core.PuregoSafeRegister(&xAboutWindowGetDeveloperName, lib, "adw_about_window_get_developer_name")
1188+ core.PuregoSafeRegister(&xAboutWindowGetDevelopers, lib, "adw_about_window_get_developers")
1189+ core.PuregoSafeRegister(&xAboutWindowGetDocumenters, lib, "adw_about_window_get_documenters")
1190+ core.PuregoSafeRegister(&xAboutWindowGetIssueUrl, lib, "adw_about_window_get_issue_url")
1191+ core.PuregoSafeRegister(&xAboutWindowGetLicense, lib, "adw_about_window_get_license")
1192+ core.PuregoSafeRegister(&xAboutWindowGetLicenseType, lib, "adw_about_window_get_license_type")
1193+ core.PuregoSafeRegister(&xAboutWindowGetReleaseNotes, lib, "adw_about_window_get_release_notes")
1194+ core.PuregoSafeRegister(&xAboutWindowGetReleaseNotesVersion, lib, "adw_about_window_get_release_notes_version")
1195+ core.PuregoSafeRegister(&xAboutWindowGetSupportUrl, lib, "adw_about_window_get_support_url")
1196+ core.PuregoSafeRegister(&xAboutWindowGetTranslatorCredits, lib, "adw_about_window_get_translator_credits")
1197+ core.PuregoSafeRegister(&xAboutWindowGetVersion, lib, "adw_about_window_get_version")
1198+ core.PuregoSafeRegister(&xAboutWindowGetWebsite, lib, "adw_about_window_get_website")
1199+ core.PuregoSafeRegister(&xAboutWindowSetApplicationIcon, lib, "adw_about_window_set_application_icon")
1200+ core.PuregoSafeRegister(&xAboutWindowSetApplicationName, lib, "adw_about_window_set_application_name")
1201+ core.PuregoSafeRegister(&xAboutWindowSetArtists, lib, "adw_about_window_set_artists")
1202+ core.PuregoSafeRegister(&xAboutWindowSetComments, lib, "adw_about_window_set_comments")
1203+ core.PuregoSafeRegister(&xAboutWindowSetCopyright, lib, "adw_about_window_set_copyright")
1204+ core.PuregoSafeRegister(&xAboutWindowSetDebugInfo, lib, "adw_about_window_set_debug_info")
1205+ core.PuregoSafeRegister(&xAboutWindowSetDebugInfoFilename, lib, "adw_about_window_set_debug_info_filename")
1206+ core.PuregoSafeRegister(&xAboutWindowSetDesigners, lib, "adw_about_window_set_designers")
1207+ core.PuregoSafeRegister(&xAboutWindowSetDeveloperName, lib, "adw_about_window_set_developer_name")
1208+ core.PuregoSafeRegister(&xAboutWindowSetDevelopers, lib, "adw_about_window_set_developers")
1209+ core.PuregoSafeRegister(&xAboutWindowSetDocumenters, lib, "adw_about_window_set_documenters")
1210+ core.PuregoSafeRegister(&xAboutWindowSetIssueUrl, lib, "adw_about_window_set_issue_url")
1211+ core.PuregoSafeRegister(&xAboutWindowSetLicense, lib, "adw_about_window_set_license")
1212+ core.PuregoSafeRegister(&xAboutWindowSetLicenseType, lib, "adw_about_window_set_license_type")
1213+ core.PuregoSafeRegister(&xAboutWindowSetReleaseNotes, lib, "adw_about_window_set_release_notes")
1214+ core.PuregoSafeRegister(&xAboutWindowSetReleaseNotesVersion, lib, "adw_about_window_set_release_notes_version")
1215+ core.PuregoSafeRegister(&xAboutWindowSetSupportUrl, lib, "adw_about_window_set_support_url")
1216+ core.PuregoSafeRegister(&xAboutWindowSetTranslatorCredits, lib, "adw_about_window_set_translator_credits")
1217+ core.PuregoSafeRegister(&xAboutWindowSetVersion, lib, "adw_about_window_set_version")
1218+ core.PuregoSafeRegister(&xAboutWindowSetWebsite, lib, "adw_about_window_set_website")
1219+
1220+}
A v4/adw/adw-action-row.go +524 -0
@@ -0,0 +1,524 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/glib"
8+ "github.com/jwijenbergh/puregotk/v4/gobject"
9+ "github.com/jwijenbergh/puregotk/v4/gtk"
10+)
11+
12+type ActionRowClass struct {
13+ ParentClass uintptr
14+
15+ Padding uintptr
16+}
17+
18+// A [class@Gtk.ListBoxRow] used to present actions.
19+//
20+// &lt;picture&gt;
21+//
22+// &lt;source srcset="action-row-dark.png" media="(prefers-color-scheme: dark)"&gt;
23+// &lt;img src="action-row.png" alt="action-row"&gt;
24+//
25+// &lt;/picture&gt;
26+//
27+// The `AdwActionRow` widget can have a title, a subtitle and an icon. The row
28+// can receive additional widgets at its end, or prefix widgets at its start.
29+//
30+// It is convenient to present a preference and its related actions.
31+//
32+// `AdwActionRow` is unactivatable by default, giving it an activatable widget
33+// will automatically make it activatable, but unsetting it won't change the
34+// row's activatability.
35+//
36+// ## AdwActionRow as GtkBuildable
37+//
38+// The `AdwActionRow` implementation of the [iface@Gtk.Buildable] interface
39+// supports adding a child at its end by specifying “suffix” or omitting the
40+// “type” attribute of a &lt;child&gt; element.
41+//
42+// It also supports adding a child as a prefix widget by specifying “prefix” as
43+// the “type” attribute of a &lt;child&gt; element.
44+//
45+// ## CSS nodes
46+//
47+// `AdwActionRow` has a main CSS node with name `row`.
48+//
49+// It contains the subnode `box.header` for its main horizontal box, and
50+// `box.title` for the vertical box containing the title and subtitle labels.
51+//
52+// It contains subnodes `label.title` and `label.subtitle` representing
53+// respectively the title label and subtitle label.
54+type ActionRow struct {
55+ PreferencesRow
56+}
57+
58+func ActionRowNewFromInternalPtr(ptr uintptr) *ActionRow {
59+ cls := &ActionRow{}
60+ cls.Ptr = ptr
61+ return cls
62+}
63+
64+var xNewActionRow func() uintptr
65+
66+// Creates a new `AdwActionRow`.
67+func NewActionRow() *gtk.Widget {
68+ NewActionRowPtr := xNewActionRow()
69+ if NewActionRowPtr == 0 {
70+ return nil
71+ }
72+
73+ gobject.IncreaseRef(NewActionRowPtr)
74+
75+ NewActionRowCls := &gtk.Widget{}
76+ NewActionRowCls.Ptr = NewActionRowPtr
77+ return NewActionRowCls
78+}
79+
80+var xActionRowActivate func(uintptr)
81+
82+// Activates @self.
83+func (x *ActionRow) Activate() {
84+
85+ xActionRowActivate(x.GoPointer())
86+
87+}
88+
89+var xActionRowAddPrefix func(uintptr, uintptr)
90+
91+// Adds a prefix widget to @self.
92+func (x *ActionRow) AddPrefix(WidgetVar *gtk.Widget) {
93+
94+ xActionRowAddPrefix(x.GoPointer(), WidgetVar.GoPointer())
95+
96+}
97+
98+var xActionRowAddSuffix func(uintptr, uintptr)
99+
100+// Adds a suffix widget to @self.
101+func (x *ActionRow) AddSuffix(WidgetVar *gtk.Widget) {
102+
103+ xActionRowAddSuffix(x.GoPointer(), WidgetVar.GoPointer())
104+
105+}
106+
107+var xActionRowGetActivatableWidget func(uintptr) uintptr
108+
109+// Gets the widget activated when @self is activated.
110+func (x *ActionRow) GetActivatableWidget() *gtk.Widget {
111+
112+ GetActivatableWidgetPtr := xActionRowGetActivatableWidget(x.GoPointer())
113+ if GetActivatableWidgetPtr == 0 {
114+ return nil
115+ }
116+
117+ gobject.IncreaseRef(GetActivatableWidgetPtr)
118+
119+ GetActivatableWidgetCls := &gtk.Widget{}
120+ GetActivatableWidgetCls.Ptr = GetActivatableWidgetPtr
121+ return GetActivatableWidgetCls
122+
123+}
124+
125+var xActionRowGetIconName func(uintptr) string
126+
127+// Gets the icon name for @self.
128+func (x *ActionRow) GetIconName() string {
129+
130+ return xActionRowGetIconName(x.GoPointer())
131+
132+}
133+
134+var xActionRowGetSubtitle func(uintptr) string
135+
136+// Gets the subtitle for @self.
137+func (x *ActionRow) GetSubtitle() string {
138+
139+ return xActionRowGetSubtitle(x.GoPointer())
140+
141+}
142+
143+var xActionRowGetSubtitleLines func(uintptr) int32
144+
145+// Gets the number of lines at the end of which the subtitle label will be
146+// ellipsized.
147+func (x *ActionRow) GetSubtitleLines() int32 {
148+
149+ return xActionRowGetSubtitleLines(x.GoPointer())
150+
151+}
152+
153+var xActionRowGetSubtitleSelectable func(uintptr) bool
154+
155+// Gets whether the user can copy the subtitle from the label
156+func (x *ActionRow) GetSubtitleSelectable() bool {
157+
158+ return xActionRowGetSubtitleSelectable(x.GoPointer())
159+
160+}
161+
162+var xActionRowGetTitleLines func(uintptr) int32
163+
164+// Gets the number of lines at the end of which the title label will be
165+// ellipsized.
166+func (x *ActionRow) GetTitleLines() int32 {
167+
168+ return xActionRowGetTitleLines(x.GoPointer())
169+
170+}
171+
172+var xActionRowRemove func(uintptr, uintptr)
173+
174+// Removes a child from @self.
175+func (x *ActionRow) Remove(WidgetVar *gtk.Widget) {
176+
177+ xActionRowRemove(x.GoPointer(), WidgetVar.GoPointer())
178+
179+}
180+
181+var xActionRowSetActivatableWidget func(uintptr, uintptr)
182+
183+// Sets the widget to activate when @self is activated.
184+//
185+// The row can be activated either by clicking on it, calling
186+// [method@ActionRow.activate], or via mnemonics in the title.
187+// See the [property@PreferencesRow:use-underline] property to enable mnemonics.
188+//
189+// The target widget will be activated by emitting the
190+// [signal@Gtk.Widget::mnemonic-activate] signal on it.
191+func (x *ActionRow) SetActivatableWidget(WidgetVar *gtk.Widget) {
192+
193+ xActionRowSetActivatableWidget(x.GoPointer(), WidgetVar.GoPointer())
194+
195+}
196+
197+var xActionRowSetIconName func(uintptr, string)
198+
199+// Sets the icon name for @self.
200+func (x *ActionRow) SetIconName(IconNameVar string) {
201+
202+ xActionRowSetIconName(x.GoPointer(), IconNameVar)
203+
204+}
205+
206+var xActionRowSetSubtitle func(uintptr, string)
207+
208+// Sets the subtitle for @self.
209+//
210+// The subtitle is interpreted as Pango markup unless
211+// [property@PreferencesRow:use-markup] is set to `FALSE`.
212+func (x *ActionRow) SetSubtitle(SubtitleVar string) {
213+
214+ xActionRowSetSubtitle(x.GoPointer(), SubtitleVar)
215+
216+}
217+
218+var xActionRowSetSubtitleLines func(uintptr, int32)
219+
220+// Sets the number of lines at the end of which the subtitle label will be
221+// ellipsized.
222+//
223+// If the value is 0, the number of lines won't be limited.
224+func (x *ActionRow) SetSubtitleLines(SubtitleLinesVar int32) {
225+
226+ xActionRowSetSubtitleLines(x.GoPointer(), SubtitleLinesVar)
227+
228+}
229+
230+var xActionRowSetSubtitleSelectable func(uintptr, bool)
231+
232+// Sets whether the user can copy the subtitle from the label
233+//
234+// See also [property@Gtk.Label:selectable].
235+func (x *ActionRow) SetSubtitleSelectable(SubtitleSelectableVar bool) {
236+
237+ xActionRowSetSubtitleSelectable(x.GoPointer(), SubtitleSelectableVar)
238+
239+}
240+
241+var xActionRowSetTitleLines func(uintptr, int32)
242+
243+// Sets the number of lines at the end of which the title label will be
244+// ellipsized.
245+//
246+// If the value is 0, the number of lines won't be limited.
247+func (x *ActionRow) SetTitleLines(TitleLinesVar int32) {
248+
249+ xActionRowSetTitleLines(x.GoPointer(), TitleLinesVar)
250+
251+}
252+
253+func (c *ActionRow) GoPointer() uintptr {
254+ return c.Ptr
255+}
256+
257+func (c *ActionRow) SetGoPointer(ptr uintptr) {
258+ c.Ptr = ptr
259+}
260+
261+// This signal is emitted after the row has been activated.
262+func (x *ActionRow) ConnectActivated(cb func(ActionRow)) {
263+ fcb := func(clsPtr uintptr) {
264+ fa := ActionRow{}
265+ fa.Ptr = clsPtr
266+
267+ cb(fa)
268+
269+ }
270+ gobject.ObjectConnect(x.GoPointer(), "signal::activated", purego.NewCallback(fcb))
271+}
272+
273+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
274+func (x *ActionRow) GetAccessibleRole() gtk.AccessibleRole {
275+
276+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
277+
278+}
279+
280+// Resets the accessible @property to its default value.
281+func (x *ActionRow) ResetProperty(PropertyVar gtk.AccessibleProperty) {
282+
283+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
284+
285+}
286+
287+// Resets the accessible @relation to its default value.
288+func (x *ActionRow) ResetRelation(RelationVar gtk.AccessibleRelation) {
289+
290+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
291+
292+}
293+
294+// Resets the accessible @state to its default value.
295+func (x *ActionRow) ResetState(StateVar gtk.AccessibleState) {
296+
297+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
298+
299+}
300+
301+// Updates a list of accessible properties.
302+//
303+// See the [enum@Gtk.AccessibleProperty] documentation for the
304+// value types of accessible properties.
305+//
306+// This function should be called by `GtkWidget` types whenever
307+// an accessible property change must be communicated to assistive
308+// technologies.
309+//
310+// Example:
311+// ```c
312+// value = gtk_adjustment_get_value (adjustment);
313+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
314+//
315+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
316+// -1);
317+//
318+// ```
319+func (x *ActionRow) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
320+
321+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
322+
323+}
324+
325+// Updates an array of accessible properties.
326+//
327+// This function should be called by `GtkWidget` types whenever an accessible
328+// property change must be communicated to assistive technologies.
329+//
330+// This function is meant to be used by language bindings.
331+func (x *ActionRow) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
332+
333+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
334+
335+}
336+
337+// Updates a list of accessible relations.
338+//
339+// This function should be called by `GtkWidget` types whenever an accessible
340+// relation change must be communicated to assistive technologies.
341+//
342+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
343+// you should pass each reference individually, followed by %NULL, e.g.
344+//
345+// ```c
346+// gtk_accessible_update_relation (accessible,
347+//
348+// GTK_ACCESSIBLE_RELATION_CONTROLS,
349+// ref1, NULL,
350+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
351+// ref1, ref2, ref3, NULL,
352+// -1);
353+//
354+// ```
355+func (x *ActionRow) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
356+
357+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
358+
359+}
360+
361+// Updates an array of accessible relations.
362+//
363+// This function should be called by `GtkWidget` types whenever an accessible
364+// relation change must be communicated to assistive technologies.
365+//
366+// This function is meant to be used by language bindings.
367+func (x *ActionRow) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
368+
369+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
370+
371+}
372+
373+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
374+// documentation for the value types of accessible states.
375+//
376+// This function should be called by `GtkWidget` types whenever an accessible
377+// state change must be communicated to assistive technologies.
378+//
379+// Example:
380+// ```c
381+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
382+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
383+//
384+// GTK_ACCESSIBLE_STATE_CHECKED, value,
385+// -1);
386+//
387+// ```
388+func (x *ActionRow) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
389+
390+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
391+
392+}
393+
394+// Updates an array of accessible states.
395+//
396+// This function should be called by `GtkWidget` types whenever an accessible
397+// state change must be communicated to assistive technologies.
398+//
399+// This function is meant to be used by language bindings.
400+func (x *ActionRow) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
401+
402+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
403+
404+}
405+
406+// Gets the action name for @actionable.
407+func (x *ActionRow) GetActionName() string {
408+
409+ return gtk.XGtkActionableGetActionName(x.GoPointer())
410+
411+}
412+
413+// Gets the current target value of @actionable.
414+func (x *ActionRow) GetActionTargetValue() *glib.Variant {
415+
416+ return gtk.XGtkActionableGetActionTargetValue(x.GoPointer())
417+
418+}
419+
420+// Specifies the name of the action with which this widget should be
421+// associated.
422+//
423+// If @action_name is %NULL then the widget will be unassociated from
424+// any previous action.
425+//
426+// Usually this function is used when the widget is located (or will be
427+// located) within the hierarchy of a `GtkApplicationWindow`.
428+//
429+// Names are of the form “win.save” or “app.quit” for actions on the
430+// containing [class@ApplicationWindow] or its associated [class@Application],
431+// respectively. This is the same form used for actions in the [class@Gio.Menu]
432+// associated with the window.
433+func (x *ActionRow) SetActionName(ActionNameVar string) {
434+
435+ gtk.XGtkActionableSetActionName(x.GoPointer(), ActionNameVar)
436+
437+}
438+
439+// Sets the target of an actionable widget.
440+//
441+// This is a convenience function that calls [ctor@GLib.Variant.new] for
442+// @format_string and uses the result to call
443+// [method@Gtk.Actionable.set_action_target_value].
444+//
445+// If you are setting a string-valued target and want to set
446+// the action name at the same time, you can use
447+// [method@Gtk.Actionable.set_detailed_action_name].
448+func (x *ActionRow) SetActionTarget(FormatStringVar string, varArgs ...interface{}) {
449+
450+ gtk.XGtkActionableSetActionTarget(x.GoPointer(), FormatStringVar, varArgs...)
451+
452+}
453+
454+// Sets the target value of an actionable widget.
455+//
456+// If @target_value is %NULL then the target value is unset.
457+//
458+// The target value has two purposes. First, it is used as the parameter
459+// to activation of the action associated with the `GtkActionable` widget.
460+// Second, it is used to determine if the widget should be rendered as
461+// “active” — the widget is active if the state is equal to the given target.
462+//
463+// Consider the example of associating a set of buttons with a [iface@Gio.Action]
464+// with string state in a typical “radio button” situation. Each button
465+// will be associated with the same action, but with a different target
466+// value for that action. Clicking on a particular button will activate
467+// the action with the target of that button, which will typically cause
468+// the action’s state to change to that value. Since the action’s state
469+// is now equal to the target value of the button, the button will now
470+// be rendered as active (and the other buttons, with different targets,
471+// rendered inactive).
472+func (x *ActionRow) SetActionTargetValue(TargetValueVar *glib.Variant) {
473+
474+ gtk.XGtkActionableSetActionTargetValue(x.GoPointer(), TargetValueVar)
475+
476+}
477+
478+// Sets the action-name and associated string target value of an
479+// actionable widget.
480+//
481+// @detailed_action_name is a string in the format accepted by
482+// [func@Gio.Action.parse_detailed_name].
483+func (x *ActionRow) SetDetailedActionName(DetailedActionNameVar string) {
484+
485+ gtk.XGtkActionableSetDetailedActionName(x.GoPointer(), DetailedActionNameVar)
486+
487+}
488+
489+// Gets the ID of the @buildable object.
490+//
491+// `GtkBuilder` sets the name based on the ID attribute
492+// of the &lt;object&gt; tag used to construct the @buildable.
493+func (x *ActionRow) GetBuildableId() string {
494+
495+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
496+
497+}
498+
499+func init() {
500+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
501+ if err != nil {
502+ panic(err)
503+ }
504+
505+ core.PuregoSafeRegister(&xNewActionRow, lib, "adw_action_row_new")
506+
507+ core.PuregoSafeRegister(&xActionRowActivate, lib, "adw_action_row_activate")
508+ core.PuregoSafeRegister(&xActionRowAddPrefix, lib, "adw_action_row_add_prefix")
509+ core.PuregoSafeRegister(&xActionRowAddSuffix, lib, "adw_action_row_add_suffix")
510+ core.PuregoSafeRegister(&xActionRowGetActivatableWidget, lib, "adw_action_row_get_activatable_widget")
511+ core.PuregoSafeRegister(&xActionRowGetIconName, lib, "adw_action_row_get_icon_name")
512+ core.PuregoSafeRegister(&xActionRowGetSubtitle, lib, "adw_action_row_get_subtitle")
513+ core.PuregoSafeRegister(&xActionRowGetSubtitleLines, lib, "adw_action_row_get_subtitle_lines")
514+ core.PuregoSafeRegister(&xActionRowGetSubtitleSelectable, lib, "adw_action_row_get_subtitle_selectable")
515+ core.PuregoSafeRegister(&xActionRowGetTitleLines, lib, "adw_action_row_get_title_lines")
516+ core.PuregoSafeRegister(&xActionRowRemove, lib, "adw_action_row_remove")
517+ core.PuregoSafeRegister(&xActionRowSetActivatableWidget, lib, "adw_action_row_set_activatable_widget")
518+ core.PuregoSafeRegister(&xActionRowSetIconName, lib, "adw_action_row_set_icon_name")
519+ core.PuregoSafeRegister(&xActionRowSetSubtitle, lib, "adw_action_row_set_subtitle")
520+ core.PuregoSafeRegister(&xActionRowSetSubtitleLines, lib, "adw_action_row_set_subtitle_lines")
521+ core.PuregoSafeRegister(&xActionRowSetSubtitleSelectable, lib, "adw_action_row_set_subtitle_selectable")
522+ core.PuregoSafeRegister(&xActionRowSetTitleLines, lib, "adw_action_row_set_title_lines")
523+
524+}
A v4/adw/adw-animation-target.go +181 -0
@@ -0,0 +1,181 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/glib"
8+ "github.com/jwijenbergh/puregotk/v4/gobject"
9+)
10+
11+// Prototype for animation targets based on user callbacks.
12+type AnimationTargetFunc func(float64, uintptr)
13+
14+type AnimationTargetClass struct {
15+}
16+
17+type CallbackAnimationTargetClass struct {
18+}
19+
20+type PropertyAnimationTargetClass struct {
21+}
22+
23+// Represents a value [class@Animation] can animate.
24+type AnimationTarget struct {
25+ gobject.Object
26+}
27+
28+func AnimationTargetNewFromInternalPtr(ptr uintptr) *AnimationTarget {
29+ cls := &AnimationTarget{}
30+ cls.Ptr = ptr
31+ return cls
32+}
33+
34+func (c *AnimationTarget) GoPointer() uintptr {
35+ return c.Ptr
36+}
37+
38+func (c *AnimationTarget) SetGoPointer(ptr uintptr) {
39+ c.Ptr = ptr
40+}
41+
42+// An [class@AnimationTarget] that calls a given callback during the
43+// animation.
44+type CallbackAnimationTarget struct {
45+ AnimationTarget
46+}
47+
48+func CallbackAnimationTargetNewFromInternalPtr(ptr uintptr) *CallbackAnimationTarget {
49+ cls := &CallbackAnimationTarget{}
50+ cls.Ptr = ptr
51+ return cls
52+}
53+
54+var xNewCallbackAnimationTarget func(uintptr, uintptr, uintptr) uintptr
55+
56+// Creates a new `AdwAnimationTarget` that calls the given @callback during
57+// the animation.
58+func NewCallbackAnimationTarget(CallbackVar AnimationTargetFunc, UserDataVar uintptr, DestroyVar glib.DestroyNotify) *AnimationTarget {
59+ NewCallbackAnimationTargetPtr := xNewCallbackAnimationTarget(purego.NewCallback(CallbackVar), UserDataVar, purego.NewCallback(DestroyVar))
60+ if NewCallbackAnimationTargetPtr == 0 {
61+ return nil
62+ }
63+
64+ NewCallbackAnimationTargetCls := &AnimationTarget{}
65+ NewCallbackAnimationTargetCls.Ptr = NewCallbackAnimationTargetPtr
66+ return NewCallbackAnimationTargetCls
67+}
68+
69+func (c *CallbackAnimationTarget) GoPointer() uintptr {
70+ return c.Ptr
71+}
72+
73+func (c *CallbackAnimationTarget) SetGoPointer(ptr uintptr) {
74+ c.Ptr = ptr
75+}
76+
77+// An [class@AnimationTarget] changing the value of a property of a
78+// [class@GObject.Object] instance.
79+type PropertyAnimationTarget struct {
80+ AnimationTarget
81+}
82+
83+func PropertyAnimationTargetNewFromInternalPtr(ptr uintptr) *PropertyAnimationTarget {
84+ cls := &PropertyAnimationTarget{}
85+ cls.Ptr = ptr
86+ return cls
87+}
88+
89+var xNewPropertyAnimationTarget func(uintptr, string) uintptr
90+
91+// Creates a new `AdwPropertyAnimationTarget` for the @property_name property on
92+// @object.
93+func NewPropertyAnimationTarget(ObjectVar *gobject.Object, PropertyNameVar string) *AnimationTarget {
94+ NewPropertyAnimationTargetPtr := xNewPropertyAnimationTarget(ObjectVar.GoPointer(), PropertyNameVar)
95+ if NewPropertyAnimationTargetPtr == 0 {
96+ return nil
97+ }
98+
99+ NewPropertyAnimationTargetCls := &AnimationTarget{}
100+ NewPropertyAnimationTargetCls.Ptr = NewPropertyAnimationTargetPtr
101+ return NewPropertyAnimationTargetCls
102+}
103+
104+var xNewForPspecPropertyAnimationTarget func(uintptr, uintptr) uintptr
105+
106+// Creates a new `AdwPropertyAnimationTarget` for the @pspec property on
107+// @object.
108+func NewForPspecPropertyAnimationTarget(ObjectVar *gobject.Object, PspecVar *gobject.ParamSpec) *AnimationTarget {
109+ NewForPspecPropertyAnimationTargetPtr := xNewForPspecPropertyAnimationTarget(ObjectVar.GoPointer(), PspecVar.GoPointer())
110+ if NewForPspecPropertyAnimationTargetPtr == 0 {
111+ return nil
112+ }
113+
114+ NewForPspecPropertyAnimationTargetCls := &AnimationTarget{}
115+ NewForPspecPropertyAnimationTargetCls.Ptr = NewForPspecPropertyAnimationTargetPtr
116+ return NewForPspecPropertyAnimationTargetCls
117+}
118+
119+var xPropertyAnimationTargetGetObject func(uintptr) uintptr
120+
121+// Gets the object animated by @self.
122+//
123+// The `AdwPropertyAnimationTarget` instance does not hold a strong reference on
124+// the object; make sure the object is kept alive throughout the target's
125+// lifetime.
126+func (x *PropertyAnimationTarget) GetObject() *gobject.Object {
127+
128+ GetObjectPtr := xPropertyAnimationTargetGetObject(x.GoPointer())
129+ if GetObjectPtr == 0 {
130+ return nil
131+ }
132+
133+ gobject.IncreaseRef(GetObjectPtr)
134+
135+ GetObjectCls := &gobject.Object{}
136+ GetObjectCls.Ptr = GetObjectPtr
137+ return GetObjectCls
138+
139+}
140+
141+var xPropertyAnimationTargetGetPspec func(uintptr) uintptr
142+
143+// Gets the `GParamSpec` of the property animated by @self.
144+func (x *PropertyAnimationTarget) GetPspec() *gobject.ParamSpec {
145+
146+ GetPspecPtr := xPropertyAnimationTargetGetPspec(x.GoPointer())
147+ if GetPspecPtr == 0 {
148+ return nil
149+ }
150+
151+ gobject.IncreaseRef(GetPspecPtr)
152+
153+ GetPspecCls := &gobject.ParamSpec{}
154+ GetPspecCls.Ptr = GetPspecPtr
155+ return GetPspecCls
156+
157+}
158+
159+func (c *PropertyAnimationTarget) GoPointer() uintptr {
160+ return c.Ptr
161+}
162+
163+func (c *PropertyAnimationTarget) SetGoPointer(ptr uintptr) {
164+ c.Ptr = ptr
165+}
166+
167+func init() {
168+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
169+ if err != nil {
170+ panic(err)
171+ }
172+
173+ core.PuregoSafeRegister(&xNewCallbackAnimationTarget, lib, "adw_callback_animation_target_new")
174+
175+ core.PuregoSafeRegister(&xNewPropertyAnimationTarget, lib, "adw_property_animation_target_new")
176+ core.PuregoSafeRegister(&xNewForPspecPropertyAnimationTarget, lib, "adw_property_animation_target_new_for_pspec")
177+
178+ core.PuregoSafeRegister(&xPropertyAnimationTargetGetObject, lib, "adw_property_animation_target_get_object")
179+ core.PuregoSafeRegister(&xPropertyAnimationTargetGetPspec, lib, "adw_property_animation_target_get_pspec")
180+
181+}
A v4/adw/adw-animation-util.go +39 -0
@@ -0,0 +1,39 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gtk"
8+)
9+
10+var xGetEnableAnimations func(uintptr) bool
11+
12+// Checks whether animations are enabled for @widget.
13+//
14+// This should be used when implementing an animated widget to know whether to
15+// animate it or not.
16+func GetEnableAnimations(WidgetVar *gtk.Widget) bool {
17+
18+ return xGetEnableAnimations(WidgetVar.GoPointer())
19+
20+}
21+
22+var xLerp func(float64, float64, float64) float64
23+
24+// Computes the linear interpolation between @a and @b for @t.
25+func Lerp(AVar float64, BVar float64, TVar float64) float64 {
26+
27+ return xLerp(AVar, BVar, TVar)
28+
29+}
30+
31+func init() {
32+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
33+ if err != nil {
34+ panic(err)
35+ }
36+ core.PuregoSafeRegister(&xGetEnableAnimations, lib, "adw_get_enable_animations")
37+ core.PuregoSafeRegister(&xLerp, lib, "adw_lerp")
38+
39+}
A v4/adw/adw-animation.go +307 -0
@@ -0,0 +1,307 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gobject"
8+ "github.com/jwijenbergh/puregotk/v4/gtk"
9+)
10+
11+type AnimationClass struct {
12+}
13+
14+// Describes the possible states of an [class@Animation].
15+//
16+// The state can be controlled with [method@Animation.play],
17+// [method@Animation.pause], [method@Animation.resume],
18+// [method@Animation.reset] and [method@Animation.skip].
19+type AnimationState int
20+
21+const (
22+
23+ // The animation hasn't started yet.
24+ AnimationIdleValue AnimationState = 0
25+ // The animation has been paused.
26+ AnimationPausedValue AnimationState = 1
27+ // The animation is currently playing.
28+ AnimationPlayingValue AnimationState = 2
29+ // The animation has finished.
30+ AnimationFinishedValue AnimationState = 3
31+)
32+
33+// A base class for animations.
34+//
35+// `AdwAnimation` represents an animation on a widget. It has a target that
36+// provides a value to animate, and a state indicating whether the
37+// animation hasn't been started yet, is playing, paused or finished.
38+//
39+// Currently there are two concrete animation types:
40+// [class@TimedAnimation] and [class@SpringAnimation].
41+//
42+// `AdwAnimation` will automatically skip the animation if
43+// [property@Animation:widget] is unmapped, or if
44+// [property@Gtk.Settings:gtk-enable-animations] is `FALSE`.
45+//
46+// The [signal@Animation::done] signal can be used to perform an action after
47+// the animation ends, for example hiding a widget after animating its
48+// [property@Gtk.Widget:opacity] to 0.
49+//
50+// `AdwAnimation` will be kept alive while the animation is playing. As such,
51+// it's safe to create an animation, start it and immediately unref it:
52+// A fire-and-forget animation:
53+//
54+// ```c
55+// static void
56+// animation_cb (double value,
57+//
58+// MyObject *self)
59+//
60+// {
61+// // Do something with @value
62+// }
63+//
64+// static void
65+// my_object_animate (MyObject *self)
66+//
67+// {
68+// AdwAnimationTarget *target =
69+// adw_callback_animation_target_new ((AdwAnimationTargetFunc) animation_cb,
70+// self, NULL);
71+// g_autoptr (AdwAnimation) animation =
72+// adw_timed_animation_new (widget, 0, 1, 250, target);
73+//
74+// adw_animation_play (animation);
75+// }
76+//
77+// ```
78+//
79+// If there's a chance the previous animation for the same target hasn't yet
80+// finished, the previous animation should be stopped first, or the existing
81+// `AdwAnimation` object can be reused.
82+type Animation struct {
83+ gobject.Object
84+}
85+
86+func AnimationNewFromInternalPtr(ptr uintptr) *Animation {
87+ cls := &Animation{}
88+ cls.Ptr = ptr
89+ return cls
90+}
91+
92+var xAnimationGetFollowEnableAnimationsSetting func(uintptr) bool
93+
94+// Gets whether @self should be skipped when animations are globally disabled.
95+func (x *Animation) GetFollowEnableAnimationsSetting() bool {
96+
97+ return xAnimationGetFollowEnableAnimationsSetting(x.GoPointer())
98+
99+}
100+
101+var xAnimationGetState func(uintptr) AnimationState
102+
103+// Gets the current value of @self.
104+//
105+// The state indicates whether @self is currently playing, paused, finished or
106+// hasn't been started yet.
107+func (x *Animation) GetState() AnimationState {
108+
109+ return xAnimationGetState(x.GoPointer())
110+
111+}
112+
113+var xAnimationGetTarget func(uintptr) uintptr
114+
115+// Gets the target @self animates.
116+func (x *Animation) GetTarget() *AnimationTarget {
117+
118+ GetTargetPtr := xAnimationGetTarget(x.GoPointer())
119+ if GetTargetPtr == 0 {
120+ return nil
121+ }
122+
123+ gobject.IncreaseRef(GetTargetPtr)
124+
125+ GetTargetCls := &AnimationTarget{}
126+ GetTargetCls.Ptr = GetTargetPtr
127+ return GetTargetCls
128+
129+}
130+
131+var xAnimationGetValue func(uintptr) float64
132+
133+// Gets the current value of @self.
134+func (x *Animation) GetValue() float64 {
135+
136+ return xAnimationGetValue(x.GoPointer())
137+
138+}
139+
140+var xAnimationGetWidget func(uintptr) uintptr
141+
142+// Gets the widget @self was created for.
143+//
144+// It provides the frame clock for the animation. It's not strictly necessary
145+// for this widget to be same as the one being animated.
146+//
147+// The widget must be mapped in order for the animation to work. If it's not
148+// mapped, or if it gets unmapped during an ongoing animation, the animation
149+// will be automatically skipped.
150+func (x *Animation) GetWidget() *gtk.Widget {
151+
152+ GetWidgetPtr := xAnimationGetWidget(x.GoPointer())
153+ if GetWidgetPtr == 0 {
154+ return nil
155+ }
156+
157+ gobject.IncreaseRef(GetWidgetPtr)
158+
159+ GetWidgetCls := &gtk.Widget{}
160+ GetWidgetCls.Ptr = GetWidgetPtr
161+ return GetWidgetCls
162+
163+}
164+
165+var xAnimationPause func(uintptr)
166+
167+// Pauses a playing animation for @self.
168+//
169+// Does nothing if the current state of @self isn't `ADW_ANIMATION_PLAYING`.
170+//
171+// Sets [property@Animation:state] to `ADW_ANIMATION_PAUSED`.
172+func (x *Animation) Pause() {
173+
174+ xAnimationPause(x.GoPointer())
175+
176+}
177+
178+var xAnimationPlay func(uintptr)
179+
180+// Starts the animation for @self.
181+//
182+// If the animation is playing, paused or has been completed, restarts it from
183+// the beginning. This allows to easily play an animation regardless of whether
184+// it's already playing or not.
185+//
186+// Sets [property@Animation:state] to `ADW_ANIMATION_PLAYING`.
187+//
188+// The animation will be automatically skipped if [property@Animation:widget] is
189+// unmapped, or if [property@Gtk.Settings:gtk-enable-animations] is `FALSE`.
190+//
191+// As such, it's not guaranteed that the animation will actually run. For
192+// example, when using [func@GLib.idle_add] and starting an animation
193+// immediately afterwards, it's entirely possible that the idle callback will
194+// run after the animation has already finished, and not while it's playing.
195+func (x *Animation) Play() {
196+
197+ xAnimationPlay(x.GoPointer())
198+
199+}
200+
201+var xAnimationReset func(uintptr)
202+
203+// Resets the animation for @self.
204+//
205+// Sets [property@Animation:state] to `ADW_ANIMATION_IDLE`.
206+func (x *Animation) Reset() {
207+
208+ xAnimationReset(x.GoPointer())
209+
210+}
211+
212+var xAnimationResume func(uintptr)
213+
214+// Resumes a paused animation for @self.
215+//
216+// This function must only be used if the animation has been paused with
217+// [method@Animation.pause].
218+//
219+// Sets [property@Animation:state] to `ADW_ANIMATION_PLAYING`.
220+func (x *Animation) Resume() {
221+
222+ xAnimationResume(x.GoPointer())
223+
224+}
225+
226+var xAnimationSetFollowEnableAnimationsSetting func(uintptr, bool)
227+
228+// Sets whether to skip @self when animations are globally disabled.
229+//
230+// The default behavior is to skip the animation. Set to `FALSE` to disable this
231+// behavior.
232+//
233+// This can be useful for cases where animation is essential, like spinners, or
234+// in demo applications. Most other animations should keep it enabled.
235+//
236+// See [property@Gtk.Settings:gtk-enable-animations].
237+func (x *Animation) SetFollowEnableAnimationsSetting(SettingVar bool) {
238+
239+ xAnimationSetFollowEnableAnimationsSetting(x.GoPointer(), SettingVar)
240+
241+}
242+
243+var xAnimationSetTarget func(uintptr, uintptr)
244+
245+// Sets the target @self animates to @target.
246+func (x *Animation) SetTarget(TargetVar *AnimationTarget) {
247+
248+ xAnimationSetTarget(x.GoPointer(), TargetVar.GoPointer())
249+
250+}
251+
252+var xAnimationSkip func(uintptr)
253+
254+// Skips the animation for @self.
255+//
256+// If the animation hasn't been started yet, is playing, or is paused, instantly
257+// skips the animation to the end and causes [signal@Animation::done] to be
258+// emitted.
259+//
260+// Sets [property@Animation:state] to `ADW_ANIMATION_FINISHED`.
261+func (x *Animation) Skip() {
262+
263+ xAnimationSkip(x.GoPointer())
264+
265+}
266+
267+func (c *Animation) GoPointer() uintptr {
268+ return c.Ptr
269+}
270+
271+func (c *Animation) SetGoPointer(ptr uintptr) {
272+ c.Ptr = ptr
273+}
274+
275+// This signal is emitted when the animation has been completed, either on its
276+// own or via calling [method@Animation.skip].
277+func (x *Animation) ConnectDone(cb func(Animation)) {
278+ fcb := func(clsPtr uintptr) {
279+ fa := Animation{}
280+ fa.Ptr = clsPtr
281+
282+ cb(fa)
283+
284+ }
285+ gobject.ObjectConnect(x.GoPointer(), "signal::done", purego.NewCallback(fcb))
286+}
287+
288+func init() {
289+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
290+ if err != nil {
291+ panic(err)
292+ }
293+
294+ core.PuregoSafeRegister(&xAnimationGetFollowEnableAnimationsSetting, lib, "adw_animation_get_follow_enable_animations_setting")
295+ core.PuregoSafeRegister(&xAnimationGetState, lib, "adw_animation_get_state")
296+ core.PuregoSafeRegister(&xAnimationGetTarget, lib, "adw_animation_get_target")
297+ core.PuregoSafeRegister(&xAnimationGetValue, lib, "adw_animation_get_value")
298+ core.PuregoSafeRegister(&xAnimationGetWidget, lib, "adw_animation_get_widget")
299+ core.PuregoSafeRegister(&xAnimationPause, lib, "adw_animation_pause")
300+ core.PuregoSafeRegister(&xAnimationPlay, lib, "adw_animation_play")
301+ core.PuregoSafeRegister(&xAnimationReset, lib, "adw_animation_reset")
302+ core.PuregoSafeRegister(&xAnimationResume, lib, "adw_animation_resume")
303+ core.PuregoSafeRegister(&xAnimationSetFollowEnableAnimationsSetting, lib, "adw_animation_set_follow_enable_animations_setting")
304+ core.PuregoSafeRegister(&xAnimationSetTarget, lib, "adw_animation_set_target")
305+ core.PuregoSafeRegister(&xAnimationSkip, lib, "adw_animation_skip")
306+
307+}
A v4/adw/adw-application-window.go +686 -0
@@ -0,0 +1,686 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gdk"
8+ "github.com/jwijenbergh/puregotk/v4/gio"
9+ "github.com/jwijenbergh/puregotk/v4/glib"
10+ "github.com/jwijenbergh/puregotk/v4/gobject"
11+ "github.com/jwijenbergh/puregotk/v4/gsk"
12+ "github.com/jwijenbergh/puregotk/v4/gtk"
13+)
14+
15+type ApplicationWindowClass struct {
16+ ParentClass uintptr
17+
18+ Padding uintptr
19+}
20+
21+// A freeform application window.
22+//
23+// &lt;picture&gt;
24+//
25+// &lt;source srcset="application-window-dark.png" media="(prefers-color-scheme: dark)"&gt;
26+// &lt;img src="application-window.png" alt="application-window"&gt;
27+//
28+// &lt;/picture&gt;
29+//
30+// `AdwApplicationWindow` is a [class@Gtk.ApplicationWindow] subclass providing
31+// the same features as [class@Window].
32+//
33+// See [class@Window] for details.
34+//
35+// Using [property@Gtk.Application:menubar] is not supported and may result in
36+// visual glitches.
37+type ApplicationWindow struct {
38+ gtk.ApplicationWindow
39+}
40+
41+func ApplicationWindowNewFromInternalPtr(ptr uintptr) *ApplicationWindow {
42+ cls := &ApplicationWindow{}
43+ cls.Ptr = ptr
44+ return cls
45+}
46+
47+var xNewApplicationWindow func(uintptr) uintptr
48+
49+// Creates a new `AdwApplicationWindow` for @app.
50+func NewApplicationWindow(AppVar *gtk.Application) *gtk.Widget {
51+ NewApplicationWindowPtr := xNewApplicationWindow(AppVar.GoPointer())
52+ if NewApplicationWindowPtr == 0 {
53+ return nil
54+ }
55+
56+ gobject.IncreaseRef(NewApplicationWindowPtr)
57+
58+ NewApplicationWindowCls := &gtk.Widget{}
59+ NewApplicationWindowCls.Ptr = NewApplicationWindowPtr
60+ return NewApplicationWindowCls
61+}
62+
63+var xApplicationWindowGetContent func(uintptr) uintptr
64+
65+// Gets the content widget of @self.
66+//
67+// This method should always be used instead of [method@Gtk.Window.get_child].
68+func (x *ApplicationWindow) GetContent() *gtk.Widget {
69+
70+ GetContentPtr := xApplicationWindowGetContent(x.GoPointer())
71+ if GetContentPtr == 0 {
72+ return nil
73+ }
74+
75+ gobject.IncreaseRef(GetContentPtr)
76+
77+ GetContentCls := &gtk.Widget{}
78+ GetContentCls.Ptr = GetContentPtr
79+ return GetContentCls
80+
81+}
82+
83+var xApplicationWindowSetContent func(uintptr, uintptr)
84+
85+// Sets the content widget of @self.
86+//
87+// This method should always be used instead of [method@Gtk.Window.set_child].
88+func (x *ApplicationWindow) SetContent(ContentVar *gtk.Widget) {
89+
90+ xApplicationWindowSetContent(x.GoPointer(), ContentVar.GoPointer())
91+
92+}
93+
94+func (c *ApplicationWindow) GoPointer() uintptr {
95+ return c.Ptr
96+}
97+
98+func (c *ApplicationWindow) SetGoPointer(ptr uintptr) {
99+ c.Ptr = ptr
100+}
101+
102+// Emits the #GActionGroup::action-added signal on @action_group.
103+//
104+// This function should only be called by #GActionGroup implementations.
105+func (x *ApplicationWindow) ActionAdded(ActionNameVar string) {
106+
107+ gio.XGActionGroupActionAdded(x.GoPointer(), ActionNameVar)
108+
109+}
110+
111+// Emits the #GActionGroup::action-enabled-changed signal on @action_group.
112+//
113+// This function should only be called by #GActionGroup implementations.
114+func (x *ApplicationWindow) ActionEnabledChanged(ActionNameVar string, EnabledVar bool) {
115+
116+ gio.XGActionGroupActionEnabledChanged(x.GoPointer(), ActionNameVar, EnabledVar)
117+
118+}
119+
120+// Emits the #GActionGroup::action-removed signal on @action_group.
121+//
122+// This function should only be called by #GActionGroup implementations.
123+func (x *ApplicationWindow) ActionRemoved(ActionNameVar string) {
124+
125+ gio.XGActionGroupActionRemoved(x.GoPointer(), ActionNameVar)
126+
127+}
128+
129+// Emits the #GActionGroup::action-state-changed signal on @action_group.
130+//
131+// This function should only be called by #GActionGroup implementations.
132+func (x *ApplicationWindow) ActionStateChanged(ActionNameVar string, StateVar *glib.Variant) {
133+
134+ gio.XGActionGroupActionStateChanged(x.GoPointer(), ActionNameVar, StateVar)
135+
136+}
137+
138+// Activate the named action within @action_group.
139+//
140+// If the action is expecting a parameter, then the correct type of
141+// parameter must be given as @parameter. If the action is expecting no
142+// parameters then @parameter must be %NULL. See
143+// g_action_group_get_action_parameter_type().
144+//
145+// If the #GActionGroup implementation supports asynchronous remote
146+// activation over D-Bus, this call may return before the relevant
147+// D-Bus traffic has been sent, or any replies have been received. In
148+// order to block on such asynchronous activation calls,
149+// g_dbus_connection_flush() should be called prior to the code, which
150+// depends on the result of the action activation. Without flushing
151+// the D-Bus connection, there is no guarantee that the action would
152+// have been activated.
153+//
154+// The following code which runs in a remote app instance, shows an
155+// example of a "quit" action being activated on the primary app
156+// instance over D-Bus. Here g_dbus_connection_flush() is called
157+// before `exit()`. Without g_dbus_connection_flush(), the "quit" action
158+// may fail to be activated on the primary instance.
159+//
160+// |[&lt;!-- language="C" --&gt;
161+// // call "quit" action on primary instance
162+// g_action_group_activate_action (G_ACTION_GROUP (app), "quit", NULL);
163+//
164+// // make sure the action is activated now
165+// g_dbus_connection_flush (...);
166+//
167+// g_debug ("application has been terminated. exiting.");
168+//
169+// exit (0);
170+// ]|
171+func (x *ApplicationWindow) ActivateAction(ActionNameVar string, ParameterVar *glib.Variant) {
172+
173+ gio.XGActionGroupActivateAction(x.GoPointer(), ActionNameVar, ParameterVar)
174+
175+}
176+
177+// Request for the state of the named action within @action_group to be
178+// changed to @value.
179+//
180+// The action must be stateful and @value must be of the correct type.
181+// See g_action_group_get_action_state_type().
182+//
183+// This call merely requests a change. The action may refuse to change
184+// its state or may change its state to something other than @value.
185+// See g_action_group_get_action_state_hint().
186+//
187+// If the @value GVariant is floating, it is consumed.
188+func (x *ApplicationWindow) ChangeActionState(ActionNameVar string, ValueVar *glib.Variant) {
189+
190+ gio.XGActionGroupChangeActionState(x.GoPointer(), ActionNameVar, ValueVar)
191+
192+}
193+
194+// Checks if the named action within @action_group is currently enabled.
195+//
196+// An action must be enabled in order to be activated or in order to
197+// have its state changed from outside callers.
198+func (x *ApplicationWindow) GetActionEnabled(ActionNameVar string) bool {
199+
200+ return gio.XGActionGroupGetActionEnabled(x.GoPointer(), ActionNameVar)
201+
202+}
203+
204+// Queries the type of the parameter that must be given when activating
205+// the named action within @action_group.
206+//
207+// When activating the action using g_action_group_activate_action(),
208+// the #GVariant given to that function must be of the type returned
209+// by this function.
210+//
211+// In the case that this function returns %NULL, you must not give any
212+// #GVariant, but %NULL instead.
213+//
214+// The parameter type of a particular action will never change but it is
215+// possible for an action to be removed and for a new action to be added
216+// with the same name but a different parameter type.
217+func (x *ApplicationWindow) GetActionParameterType(ActionNameVar string) *glib.VariantType {
218+
219+ return gio.XGActionGroupGetActionParameterType(x.GoPointer(), ActionNameVar)
220+
221+}
222+
223+// Queries the current state of the named action within @action_group.
224+//
225+// If the action is not stateful then %NULL will be returned. If the
226+// action is stateful then the type of the return value is the type
227+// given by g_action_group_get_action_state_type().
228+//
229+// The return value (if non-%NULL) should be freed with
230+// g_variant_unref() when it is no longer required.
231+func (x *ApplicationWindow) GetActionState(ActionNameVar string) *glib.Variant {
232+
233+ return gio.XGActionGroupGetActionState(x.GoPointer(), ActionNameVar)
234+
235+}
236+
237+// Requests a hint about the valid range of values for the state of the
238+// named action within @action_group.
239+//
240+// If %NULL is returned it either means that the action is not stateful
241+// or that there is no hint about the valid range of values for the
242+// state of the action.
243+//
244+// If a #GVariant array is returned then each item in the array is a
245+// possible value for the state. If a #GVariant pair (ie: two-tuple) is
246+// returned then the tuple specifies the inclusive lower and upper bound
247+// of valid values for the state.
248+//
249+// In any case, the information is merely a hint. It may be possible to
250+// have a state value outside of the hinted range and setting a value
251+// within the range may fail.
252+//
253+// The return value (if non-%NULL) should be freed with
254+// g_variant_unref() when it is no longer required.
255+func (x *ApplicationWindow) GetActionStateHint(ActionNameVar string) *glib.Variant {
256+
257+ return gio.XGActionGroupGetActionStateHint(x.GoPointer(), ActionNameVar)
258+
259+}
260+
261+// Queries the type of the state of the named action within
262+// @action_group.
263+//
264+// If the action is stateful then this function returns the
265+// #GVariantType of the state. All calls to
266+// g_action_group_change_action_state() must give a #GVariant of this
267+// type and g_action_group_get_action_state() will return a #GVariant
268+// of the same type.
269+//
270+// If the action is not stateful then this function will return %NULL.
271+// In that case, g_action_group_get_action_state() will return %NULL
272+// and you must not call g_action_group_change_action_state().
273+//
274+// The state type of a particular action will never change but it is
275+// possible for an action to be removed and for a new action to be added
276+// with the same name but a different state type.
277+func (x *ApplicationWindow) GetActionStateType(ActionNameVar string) *glib.VariantType {
278+
279+ return gio.XGActionGroupGetActionStateType(x.GoPointer(), ActionNameVar)
280+
281+}
282+
283+// Checks if the named action exists within @action_group.
284+func (x *ApplicationWindow) HasAction(ActionNameVar string) bool {
285+
286+ return gio.XGActionGroupHasAction(x.GoPointer(), ActionNameVar)
287+
288+}
289+
290+// Lists the actions contained within @action_group.
291+//
292+// The caller is responsible for freeing the list with g_strfreev() when
293+// it is no longer required.
294+func (x *ApplicationWindow) ListActions() uintptr {
295+
296+ return gio.XGActionGroupListActions(x.GoPointer())
297+
298+}
299+
300+// Queries all aspects of the named action within an @action_group.
301+//
302+// This function acquires the information available from
303+// g_action_group_has_action(), g_action_group_get_action_enabled(),
304+// g_action_group_get_action_parameter_type(),
305+// g_action_group_get_action_state_type(),
306+// g_action_group_get_action_state_hint() and
307+// g_action_group_get_action_state() with a single function call.
308+//
309+// This provides two main benefits.
310+//
311+// The first is the improvement in efficiency that comes with not having
312+// to perform repeated lookups of the action in order to discover
313+// different things about it. The second is that implementing
314+// #GActionGroup can now be done by only overriding this one virtual
315+// function.
316+//
317+// The interface provides a default implementation of this function that
318+// calls the individual functions, as required, to fetch the
319+// information. The interface also provides default implementations of
320+// those functions that call this function. All implementations,
321+// therefore, must override either this function or all of the others.
322+//
323+// If the action exists, %TRUE is returned and any of the requested
324+// fields (as indicated by having a non-%NULL reference passed in) are
325+// filled. If the action doesn't exist, %FALSE is returned and the
326+// fields may or may not have been modified.
327+func (x *ApplicationWindow) QueryAction(ActionNameVar string, EnabledVar bool, ParameterTypeVar **glib.VariantType, StateTypeVar **glib.VariantType, StateHintVar **glib.Variant, StateVar **glib.Variant) bool {
328+
329+ return gio.XGActionGroupQueryAction(x.GoPointer(), ActionNameVar, EnabledVar, ParameterTypeVar, StateTypeVar, StateHintVar, StateVar)
330+
331+}
332+
333+// Adds an action to the @action_map.
334+//
335+// If the action map already contains an action with the same name
336+// as @action then the old action is dropped from the action map.
337+//
338+// The action map takes its own reference on @action.
339+func (x *ApplicationWindow) AddAction(ActionVar gio.Action) {
340+
341+ gio.XGActionMapAddAction(x.GoPointer(), ActionVar.GoPointer())
342+
343+}
344+
345+// A convenience function for creating multiple #GSimpleAction instances
346+// and adding them to a #GActionMap.
347+//
348+// Each action is constructed as per one #GActionEntry.
349+//
350+// |[&lt;!-- language="C" --&gt;
351+// static void
352+// activate_quit (GSimpleAction *simple,
353+//
354+// GVariant *parameter,
355+// gpointer user_data)
356+//
357+// {
358+// exit (0);
359+// }
360+//
361+// static void
362+// activate_print_string (GSimpleAction *simple,
363+//
364+// GVariant *parameter,
365+// gpointer user_data)
366+//
367+// {
368+// g_print ("%s\n", g_variant_get_string (parameter, NULL));
369+// }
370+//
371+// static GActionGroup *
372+// create_action_group (void)
373+//
374+// {
375+// const GActionEntry entries[] = {
376+// { "quit", activate_quit },
377+// { "print-string", activate_print_string, "s" }
378+// };
379+// GSimpleActionGroup *group;
380+//
381+// group = g_simple_action_group_new ();
382+// g_action_map_add_action_entries (G_ACTION_MAP (group), entries, G_N_ELEMENTS (entries), NULL);
383+//
384+// return G_ACTION_GROUP (group);
385+// }
386+//
387+// ]|
388+func (x *ApplicationWindow) AddActionEntries(EntriesVar uintptr, NEntriesVar int32, UserDataVar uintptr) {
389+
390+ gio.XGActionMapAddActionEntries(x.GoPointer(), EntriesVar, NEntriesVar, UserDataVar)
391+
392+}
393+
394+// Looks up the action with the name @action_name in @action_map.
395+//
396+// If no such action exists, returns %NULL.
397+func (x *ApplicationWindow) LookupAction(ActionNameVar string) *gio.ActionBase {
398+
399+ LookupActionPtr := gio.XGActionMapLookupAction(x.GoPointer(), ActionNameVar)
400+ if LookupActionPtr == 0 {
401+ return nil
402+ }
403+
404+ gobject.IncreaseRef(LookupActionPtr)
405+
406+ LookupActionCls := &gio.ActionBase{}
407+ LookupActionCls.Ptr = LookupActionPtr
408+ return LookupActionCls
409+
410+}
411+
412+// Removes the named action from the action map.
413+//
414+// If no action of this name is in the map then nothing happens.
415+func (x *ApplicationWindow) RemoveAction(ActionNameVar string) {
416+
417+ gio.XGActionMapRemoveAction(x.GoPointer(), ActionNameVar)
418+
419+}
420+
421+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
422+func (x *ApplicationWindow) GetAccessibleRole() gtk.AccessibleRole {
423+
424+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
425+
426+}
427+
428+// Resets the accessible @property to its default value.
429+func (x *ApplicationWindow) ResetProperty(PropertyVar gtk.AccessibleProperty) {
430+
431+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
432+
433+}
434+
435+// Resets the accessible @relation to its default value.
436+func (x *ApplicationWindow) ResetRelation(RelationVar gtk.AccessibleRelation) {
437+
438+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
439+
440+}
441+
442+// Resets the accessible @state to its default value.
443+func (x *ApplicationWindow) ResetState(StateVar gtk.AccessibleState) {
444+
445+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
446+
447+}
448+
449+// Updates a list of accessible properties.
450+//
451+// See the [enum@Gtk.AccessibleProperty] documentation for the
452+// value types of accessible properties.
453+//
454+// This function should be called by `GtkWidget` types whenever
455+// an accessible property change must be communicated to assistive
456+// technologies.
457+//
458+// Example:
459+// ```c
460+// value = gtk_adjustment_get_value (adjustment);
461+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
462+//
463+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
464+// -1);
465+//
466+// ```
467+func (x *ApplicationWindow) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
468+
469+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
470+
471+}
472+
473+// Updates an array of accessible properties.
474+//
475+// This function should be called by `GtkWidget` types whenever an accessible
476+// property change must be communicated to assistive technologies.
477+//
478+// This function is meant to be used by language bindings.
479+func (x *ApplicationWindow) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
480+
481+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
482+
483+}
484+
485+// Updates a list of accessible relations.
486+//
487+// This function should be called by `GtkWidget` types whenever an accessible
488+// relation change must be communicated to assistive technologies.
489+//
490+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
491+// you should pass each reference individually, followed by %NULL, e.g.
492+//
493+// ```c
494+// gtk_accessible_update_relation (accessible,
495+//
496+// GTK_ACCESSIBLE_RELATION_CONTROLS,
497+// ref1, NULL,
498+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
499+// ref1, ref2, ref3, NULL,
500+// -1);
501+//
502+// ```
503+func (x *ApplicationWindow) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
504+
505+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
506+
507+}
508+
509+// Updates an array of accessible relations.
510+//
511+// This function should be called by `GtkWidget` types whenever an accessible
512+// relation change must be communicated to assistive technologies.
513+//
514+// This function is meant to be used by language bindings.
515+func (x *ApplicationWindow) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
516+
517+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
518+
519+}
520+
521+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
522+// documentation for the value types of accessible states.
523+//
524+// This function should be called by `GtkWidget` types whenever an accessible
525+// state change must be communicated to assistive technologies.
526+//
527+// Example:
528+// ```c
529+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
530+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
531+//
532+// GTK_ACCESSIBLE_STATE_CHECKED, value,
533+// -1);
534+//
535+// ```
536+func (x *ApplicationWindow) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
537+
538+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
539+
540+}
541+
542+// Updates an array of accessible states.
543+//
544+// This function should be called by `GtkWidget` types whenever an accessible
545+// state change must be communicated to assistive technologies.
546+//
547+// This function is meant to be used by language bindings.
548+func (x *ApplicationWindow) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
549+
550+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
551+
552+}
553+
554+// Gets the ID of the @buildable object.
555+//
556+// `GtkBuilder` sets the name based on the ID attribute
557+// of the &lt;object&gt; tag used to construct the @buildable.
558+func (x *ApplicationWindow) GetBuildableId() string {
559+
560+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
561+
562+}
563+
564+// Returns the renderer that is used for this `GtkNative`.
565+func (x *ApplicationWindow) GetRenderer() *gsk.Renderer {
566+
567+ GetRendererPtr := gtk.XGtkNativeGetRenderer(x.GoPointer())
568+ if GetRendererPtr == 0 {
569+ return nil
570+ }
571+
572+ gobject.IncreaseRef(GetRendererPtr)
573+
574+ GetRendererCls := &gsk.Renderer{}
575+ GetRendererCls.Ptr = GetRendererPtr
576+ return GetRendererCls
577+
578+}
579+
580+// Returns the surface of this `GtkNative`.
581+func (x *ApplicationWindow) GetSurface() *gdk.Surface {
582+
583+ GetSurfacePtr := gtk.XGtkNativeGetSurface(x.GoPointer())
584+ if GetSurfacePtr == 0 {
585+ return nil
586+ }
587+
588+ gobject.IncreaseRef(GetSurfacePtr)
589+
590+ GetSurfaceCls := &gdk.Surface{}
591+ GetSurfaceCls.Ptr = GetSurfacePtr
592+ return GetSurfaceCls
593+
594+}
595+
596+// Retrieves the surface transform of @self.
597+//
598+// This is the translation from @self's surface coordinates into
599+// @self's widget coordinates.
600+func (x *ApplicationWindow) GetSurfaceTransform(XVar float64, YVar float64) {
601+
602+ gtk.XGtkNativeGetSurfaceTransform(x.GoPointer(), XVar, YVar)
603+
604+}
605+
606+// Realizes a `GtkNative`.
607+//
608+// This should only be used by subclasses.
609+func (x *ApplicationWindow) Realize() {
610+
611+ gtk.XGtkNativeRealize(x.GoPointer())
612+
613+}
614+
615+// Unrealizes a `GtkNative`.
616+//
617+// This should only be used by subclasses.
618+func (x *ApplicationWindow) Unrealize() {
619+
620+ gtk.XGtkNativeUnrealize(x.GoPointer())
621+
622+}
623+
624+// Returns the display that this `GtkRoot` is on.
625+func (x *ApplicationWindow) GetDisplay() *gdk.Display {
626+
627+ GetDisplayPtr := gtk.XGtkRootGetDisplay(x.GoPointer())
628+ if GetDisplayPtr == 0 {
629+ return nil
630+ }
631+
632+ gobject.IncreaseRef(GetDisplayPtr)
633+
634+ GetDisplayCls := &gdk.Display{}
635+ GetDisplayCls.Ptr = GetDisplayPtr
636+ return GetDisplayCls
637+
638+}
639+
640+// Retrieves the current focused widget within the root.
641+//
642+// Note that this is the widget that would have the focus
643+// if the root is active; if the root is not focused then
644+// `gtk_widget_has_focus (widget)` will be %FALSE for the
645+// widget.
646+func (x *ApplicationWindow) GetFocus() *gtk.Widget {
647+
648+ GetFocusPtr := gtk.XGtkRootGetFocus(x.GoPointer())
649+ if GetFocusPtr == 0 {
650+ return nil
651+ }
652+
653+ gobject.IncreaseRef(GetFocusPtr)
654+
655+ GetFocusCls := &gtk.Widget{}
656+ GetFocusCls.Ptr = GetFocusPtr
657+ return GetFocusCls
658+
659+}
660+
661+// If @focus is not the current focus widget, and is focusable, sets
662+// it as the focus widget for the root.
663+//
664+// If @focus is %NULL, unsets the focus widget for the root.
665+//
666+// To set the focus to a particular widget in the root, it is usually
667+// more convenient to use [method@Gtk.Widget.grab_focus] instead of
668+// this function.
669+func (x *ApplicationWindow) SetFocus(FocusVar *gtk.Widget) {
670+
671+ gtk.XGtkRootSetFocus(x.GoPointer(), FocusVar.GoPointer())
672+
673+}
674+
675+func init() {
676+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
677+ if err != nil {
678+ panic(err)
679+ }
680+
681+ core.PuregoSafeRegister(&xNewApplicationWindow, lib, "adw_application_window_new")
682+
683+ core.PuregoSafeRegister(&xApplicationWindowGetContent, lib, "adw_application_window_get_content")
684+ core.PuregoSafeRegister(&xApplicationWindowSetContent, lib, "adw_application_window_set_content")
685+
686+}
A v4/adw/adw-application.go +433 -0
@@ -0,0 +1,433 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gio"
8+ "github.com/jwijenbergh/puregotk/v4/glib"
9+ "github.com/jwijenbergh/puregotk/v4/gobject"
10+ "github.com/jwijenbergh/puregotk/v4/gtk"
11+)
12+
13+type ApplicationClass struct {
14+ ParentClass uintptr
15+
16+ Padding uintptr
17+}
18+
19+// A base class for Adwaita applications.
20+//
21+// `AdwApplication` handles library initialization by calling [func@init] in the
22+// default [signal@Gio.Application::startup] signal handler, in turn chaining up
23+// as required by [class@Gtk.Application]. Therefore, any subclass of
24+// `AdwApplication` should always chain up its `startup` handler before using
25+// any Adwaita or GTK API.
26+//
27+// ## Automatic Resources
28+//
29+// `AdwApplication` will automatically load stylesheets located in the
30+// application's resource base path (see
31+// [method@Gio.Application.set_resource_base_path], if they're present.
32+//
33+// They can be used to add custom styles to the application, as follows:
34+//
35+// - `style.css` contains styles that are always present.
36+//
37+// - `style-dark.css` contains styles only used when
38+// [property@StyleManager:dark] is `TRUE`.
39+//
40+// - `style-hc.css` contains styles used when the system high contrast
41+// preference is enabled.
42+//
43+// - `style-hc-dark.css` contains styles used when the system high contrast
44+// preference is enabled and [property@StyleManager:dark] is `TRUE`.
45+type Application struct {
46+ gtk.Application
47+}
48+
49+func ApplicationNewFromInternalPtr(ptr uintptr) *Application {
50+ cls := &Application{}
51+ cls.Ptr = ptr
52+ return cls
53+}
54+
55+var xNewApplication func(string, gio.ApplicationFlags) uintptr
56+
57+// Creates a new `AdwApplication`.
58+//
59+// If `application_id` is not `NULL`, then it must be valid. See
60+// [func@Gio.Application.id_is_valid].
61+//
62+// If no application ID is given then some features (most notably application
63+// uniqueness) will be disabled.
64+func NewApplication(ApplicationIdVar string, FlagsVar gio.ApplicationFlags) *Application {
65+ NewApplicationPtr := xNewApplication(ApplicationIdVar, FlagsVar)
66+ if NewApplicationPtr == 0 {
67+ return nil
68+ }
69+
70+ NewApplicationCls := &Application{}
71+ NewApplicationCls.Ptr = NewApplicationPtr
72+ return NewApplicationCls
73+}
74+
75+var xApplicationGetStyleManager func(uintptr) uintptr
76+
77+// Gets the style manager for @self.
78+//
79+// This is a convenience property allowing to access `AdwStyleManager` through
80+// property bindings or expressions.
81+func (x *Application) GetStyleManager() *StyleManager {
82+
83+ GetStyleManagerPtr := xApplicationGetStyleManager(x.GoPointer())
84+ if GetStyleManagerPtr == 0 {
85+ return nil
86+ }
87+
88+ gobject.IncreaseRef(GetStyleManagerPtr)
89+
90+ GetStyleManagerCls := &StyleManager{}
91+ GetStyleManagerCls.Ptr = GetStyleManagerPtr
92+ return GetStyleManagerCls
93+
94+}
95+
96+func (c *Application) GoPointer() uintptr {
97+ return c.Ptr
98+}
99+
100+func (c *Application) SetGoPointer(ptr uintptr) {
101+ c.Ptr = ptr
102+}
103+
104+// Emits the #GActionGroup::action-added signal on @action_group.
105+//
106+// This function should only be called by #GActionGroup implementations.
107+func (x *Application) ActionAdded(ActionNameVar string) {
108+
109+ gio.XGActionGroupActionAdded(x.GoPointer(), ActionNameVar)
110+
111+}
112+
113+// Emits the #GActionGroup::action-enabled-changed signal on @action_group.
114+//
115+// This function should only be called by #GActionGroup implementations.
116+func (x *Application) ActionEnabledChanged(ActionNameVar string, EnabledVar bool) {
117+
118+ gio.XGActionGroupActionEnabledChanged(x.GoPointer(), ActionNameVar, EnabledVar)
119+
120+}
121+
122+// Emits the #GActionGroup::action-removed signal on @action_group.
123+//
124+// This function should only be called by #GActionGroup implementations.
125+func (x *Application) ActionRemoved(ActionNameVar string) {
126+
127+ gio.XGActionGroupActionRemoved(x.GoPointer(), ActionNameVar)
128+
129+}
130+
131+// Emits the #GActionGroup::action-state-changed signal on @action_group.
132+//
133+// This function should only be called by #GActionGroup implementations.
134+func (x *Application) ActionStateChanged(ActionNameVar string, StateVar *glib.Variant) {
135+
136+ gio.XGActionGroupActionStateChanged(x.GoPointer(), ActionNameVar, StateVar)
137+
138+}
139+
140+// Activate the named action within @action_group.
141+//
142+// If the action is expecting a parameter, then the correct type of
143+// parameter must be given as @parameter. If the action is expecting no
144+// parameters then @parameter must be %NULL. See
145+// g_action_group_get_action_parameter_type().
146+//
147+// If the #GActionGroup implementation supports asynchronous remote
148+// activation over D-Bus, this call may return before the relevant
149+// D-Bus traffic has been sent, or any replies have been received. In
150+// order to block on such asynchronous activation calls,
151+// g_dbus_connection_flush() should be called prior to the code, which
152+// depends on the result of the action activation. Without flushing
153+// the D-Bus connection, there is no guarantee that the action would
154+// have been activated.
155+//
156+// The following code which runs in a remote app instance, shows an
157+// example of a "quit" action being activated on the primary app
158+// instance over D-Bus. Here g_dbus_connection_flush() is called
159+// before `exit()`. Without g_dbus_connection_flush(), the "quit" action
160+// may fail to be activated on the primary instance.
161+//
162+// |[&lt;!-- language="C" --&gt;
163+// // call "quit" action on primary instance
164+// g_action_group_activate_action (G_ACTION_GROUP (app), "quit", NULL);
165+//
166+// // make sure the action is activated now
167+// g_dbus_connection_flush (...);
168+//
169+// g_debug ("application has been terminated. exiting.");
170+//
171+// exit (0);
172+// ]|
173+func (x *Application) ActivateAction(ActionNameVar string, ParameterVar *glib.Variant) {
174+
175+ gio.XGActionGroupActivateAction(x.GoPointer(), ActionNameVar, ParameterVar)
176+
177+}
178+
179+// Request for the state of the named action within @action_group to be
180+// changed to @value.
181+//
182+// The action must be stateful and @value must be of the correct type.
183+// See g_action_group_get_action_state_type().
184+//
185+// This call merely requests a change. The action may refuse to change
186+// its state or may change its state to something other than @value.
187+// See g_action_group_get_action_state_hint().
188+//
189+// If the @value GVariant is floating, it is consumed.
190+func (x *Application) ChangeActionState(ActionNameVar string, ValueVar *glib.Variant) {
191+
192+ gio.XGActionGroupChangeActionState(x.GoPointer(), ActionNameVar, ValueVar)
193+
194+}
195+
196+// Checks if the named action within @action_group is currently enabled.
197+//
198+// An action must be enabled in order to be activated or in order to
199+// have its state changed from outside callers.
200+func (x *Application) GetActionEnabled(ActionNameVar string) bool {
201+
202+ return gio.XGActionGroupGetActionEnabled(x.GoPointer(), ActionNameVar)
203+
204+}
205+
206+// Queries the type of the parameter that must be given when activating
207+// the named action within @action_group.
208+//
209+// When activating the action using g_action_group_activate_action(),
210+// the #GVariant given to that function must be of the type returned
211+// by this function.
212+//
213+// In the case that this function returns %NULL, you must not give any
214+// #GVariant, but %NULL instead.
215+//
216+// The parameter type of a particular action will never change but it is
217+// possible for an action to be removed and for a new action to be added
218+// with the same name but a different parameter type.
219+func (x *Application) GetActionParameterType(ActionNameVar string) *glib.VariantType {
220+
221+ return gio.XGActionGroupGetActionParameterType(x.GoPointer(), ActionNameVar)
222+
223+}
224+
225+// Queries the current state of the named action within @action_group.
226+//
227+// If the action is not stateful then %NULL will be returned. If the
228+// action is stateful then the type of the return value is the type
229+// given by g_action_group_get_action_state_type().
230+//
231+// The return value (if non-%NULL) should be freed with
232+// g_variant_unref() when it is no longer required.
233+func (x *Application) GetActionState(ActionNameVar string) *glib.Variant {
234+
235+ return gio.XGActionGroupGetActionState(x.GoPointer(), ActionNameVar)
236+
237+}
238+
239+// Requests a hint about the valid range of values for the state of the
240+// named action within @action_group.
241+//
242+// If %NULL is returned it either means that the action is not stateful
243+// or that there is no hint about the valid range of values for the
244+// state of the action.
245+//
246+// If a #GVariant array is returned then each item in the array is a
247+// possible value for the state. If a #GVariant pair (ie: two-tuple) is
248+// returned then the tuple specifies the inclusive lower and upper bound
249+// of valid values for the state.
250+//
251+// In any case, the information is merely a hint. It may be possible to
252+// have a state value outside of the hinted range and setting a value
253+// within the range may fail.
254+//
255+// The return value (if non-%NULL) should be freed with
256+// g_variant_unref() when it is no longer required.
257+func (x *Application) GetActionStateHint(ActionNameVar string) *glib.Variant {
258+
259+ return gio.XGActionGroupGetActionStateHint(x.GoPointer(), ActionNameVar)
260+
261+}
262+
263+// Queries the type of the state of the named action within
264+// @action_group.
265+//
266+// If the action is stateful then this function returns the
267+// #GVariantType of the state. All calls to
268+// g_action_group_change_action_state() must give a #GVariant of this
269+// type and g_action_group_get_action_state() will return a #GVariant
270+// of the same type.
271+//
272+// If the action is not stateful then this function will return %NULL.
273+// In that case, g_action_group_get_action_state() will return %NULL
274+// and you must not call g_action_group_change_action_state().
275+//
276+// The state type of a particular action will never change but it is
277+// possible for an action to be removed and for a new action to be added
278+// with the same name but a different state type.
279+func (x *Application) GetActionStateType(ActionNameVar string) *glib.VariantType {
280+
281+ return gio.XGActionGroupGetActionStateType(x.GoPointer(), ActionNameVar)
282+
283+}
284+
285+// Checks if the named action exists within @action_group.
286+func (x *Application) HasAction(ActionNameVar string) bool {
287+
288+ return gio.XGActionGroupHasAction(x.GoPointer(), ActionNameVar)
289+
290+}
291+
292+// Lists the actions contained within @action_group.
293+//
294+// The caller is responsible for freeing the list with g_strfreev() when
295+// it is no longer required.
296+func (x *Application) ListActions() uintptr {
297+
298+ return gio.XGActionGroupListActions(x.GoPointer())
299+
300+}
301+
302+// Queries all aspects of the named action within an @action_group.
303+//
304+// This function acquires the information available from
305+// g_action_group_has_action(), g_action_group_get_action_enabled(),
306+// g_action_group_get_action_parameter_type(),
307+// g_action_group_get_action_state_type(),
308+// g_action_group_get_action_state_hint() and
309+// g_action_group_get_action_state() with a single function call.
310+//
311+// This provides two main benefits.
312+//
313+// The first is the improvement in efficiency that comes with not having
314+// to perform repeated lookups of the action in order to discover
315+// different things about it. The second is that implementing
316+// #GActionGroup can now be done by only overriding this one virtual
317+// function.
318+//
319+// The interface provides a default implementation of this function that
320+// calls the individual functions, as required, to fetch the
321+// information. The interface also provides default implementations of
322+// those functions that call this function. All implementations,
323+// therefore, must override either this function or all of the others.
324+//
325+// If the action exists, %TRUE is returned and any of the requested
326+// fields (as indicated by having a non-%NULL reference passed in) are
327+// filled. If the action doesn't exist, %FALSE is returned and the
328+// fields may or may not have been modified.
329+func (x *Application) QueryAction(ActionNameVar string, EnabledVar bool, ParameterTypeVar **glib.VariantType, StateTypeVar **glib.VariantType, StateHintVar **glib.Variant, StateVar **glib.Variant) bool {
330+
331+ return gio.XGActionGroupQueryAction(x.GoPointer(), ActionNameVar, EnabledVar, ParameterTypeVar, StateTypeVar, StateHintVar, StateVar)
332+
333+}
334+
335+// Adds an action to the @action_map.
336+//
337+// If the action map already contains an action with the same name
338+// as @action then the old action is dropped from the action map.
339+//
340+// The action map takes its own reference on @action.
341+func (x *Application) AddAction(ActionVar gio.Action) {
342+
343+ gio.XGActionMapAddAction(x.GoPointer(), ActionVar.GoPointer())
344+
345+}
346+
347+// A convenience function for creating multiple #GSimpleAction instances
348+// and adding them to a #GActionMap.
349+//
350+// Each action is constructed as per one #GActionEntry.
351+//
352+// |[&lt;!-- language="C" --&gt;
353+// static void
354+// activate_quit (GSimpleAction *simple,
355+//
356+// GVariant *parameter,
357+// gpointer user_data)
358+//
359+// {
360+// exit (0);
361+// }
362+//
363+// static void
364+// activate_print_string (GSimpleAction *simple,
365+//
366+// GVariant *parameter,
367+// gpointer user_data)
368+//
369+// {
370+// g_print ("%s\n", g_variant_get_string (parameter, NULL));
371+// }
372+//
373+// static GActionGroup *
374+// create_action_group (void)
375+//
376+// {
377+// const GActionEntry entries[] = {
378+// { "quit", activate_quit },
379+// { "print-string", activate_print_string, "s" }
380+// };
381+// GSimpleActionGroup *group;
382+//
383+// group = g_simple_action_group_new ();
384+// g_action_map_add_action_entries (G_ACTION_MAP (group), entries, G_N_ELEMENTS (entries), NULL);
385+//
386+// return G_ACTION_GROUP (group);
387+// }
388+//
389+// ]|
390+func (x *Application) AddActionEntries(EntriesVar uintptr, NEntriesVar int32, UserDataVar uintptr) {
391+
392+ gio.XGActionMapAddActionEntries(x.GoPointer(), EntriesVar, NEntriesVar, UserDataVar)
393+
394+}
395+
396+// Looks up the action with the name @action_name in @action_map.
397+//
398+// If no such action exists, returns %NULL.
399+func (x *Application) LookupAction(ActionNameVar string) *gio.ActionBase {
400+
401+ LookupActionPtr := gio.XGActionMapLookupAction(x.GoPointer(), ActionNameVar)
402+ if LookupActionPtr == 0 {
403+ return nil
404+ }
405+
406+ gobject.IncreaseRef(LookupActionPtr)
407+
408+ LookupActionCls := &gio.ActionBase{}
409+ LookupActionCls.Ptr = LookupActionPtr
410+ return LookupActionCls
411+
412+}
413+
414+// Removes the named action from the action map.
415+//
416+// If no action of this name is in the map then nothing happens.
417+func (x *Application) RemoveAction(ActionNameVar string) {
418+
419+ gio.XGActionMapRemoveAction(x.GoPointer(), ActionNameVar)
420+
421+}
422+
423+func init() {
424+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
425+ if err != nil {
426+ panic(err)
427+ }
428+
429+ core.PuregoSafeRegister(&xNewApplication, lib, "adw_application_new")
430+
431+ core.PuregoSafeRegister(&xApplicationGetStyleManager, lib, "adw_application_get_style_manager")
432+
433+}
A v4/adw/adw-avatar.go +364 -0
@@ -0,0 +1,364 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gdk"
8+ "github.com/jwijenbergh/puregotk/v4/gobject"
9+ "github.com/jwijenbergh/puregotk/v4/gtk"
10+)
11+
12+type AvatarClass struct {
13+ ParentClass uintptr
14+}
15+
16+// A widget displaying an image, with a generated fallback.
17+//
18+// &lt;picture&gt;
19+//
20+// &lt;source srcset="avatar-dark.png" media="(prefers-color-scheme: dark)"&gt;
21+// &lt;img src="avatar.png" alt="avatar"&gt;
22+//
23+// &lt;/picture&gt;
24+//
25+// `AdwAvatar` is a widget that shows a round avatar.
26+//
27+// `AdwAvatar` generates an avatar with the initials of the
28+// [property@Avatar:text] on top of a colored background.
29+//
30+// The color is picked based on the hash of the [property@Avatar:text].
31+//
32+// If [property@Avatar:show-initials] is set to `FALSE`,
33+// [property@Avatar:icon-name] or `avatar-default-symbolic` is shown instead of
34+// the initials.
35+//
36+// Use [property@Avatar:custom-image] to set a custom image.
37+//
38+// ## CSS nodes
39+//
40+// `AdwAvatar` has a single CSS node with name `avatar`.
41+type Avatar struct {
42+ gtk.Widget
43+}
44+
45+func AvatarNewFromInternalPtr(ptr uintptr) *Avatar {
46+ cls := &Avatar{}
47+ cls.Ptr = ptr
48+ return cls
49+}
50+
51+var xNewAvatar func(int32, string, bool) uintptr
52+
53+// Creates a new `AdwAvatar`.
54+func NewAvatar(SizeVar int32, TextVar string, ShowInitialsVar bool) *gtk.Widget {
55+ NewAvatarPtr := xNewAvatar(SizeVar, TextVar, ShowInitialsVar)
56+ if NewAvatarPtr == 0 {
57+ return nil
58+ }
59+
60+ gobject.IncreaseRef(NewAvatarPtr)
61+
62+ NewAvatarCls := &gtk.Widget{}
63+ NewAvatarCls.Ptr = NewAvatarPtr
64+ return NewAvatarCls
65+}
66+
67+var xAvatarDrawToTexture func(uintptr, int32) uintptr
68+
69+// Renders @self into a [class@Gdk.Texture] at @scale_factor.
70+//
71+// This can be used to export the fallback avatar.
72+func (x *Avatar) DrawToTexture(ScaleFactorVar int32) *gdk.Texture {
73+
74+ DrawToTexturePtr := xAvatarDrawToTexture(x.GoPointer(), ScaleFactorVar)
75+ if DrawToTexturePtr == 0 {
76+ return nil
77+ }
78+
79+ DrawToTextureCls := &gdk.Texture{}
80+ DrawToTextureCls.Ptr = DrawToTexturePtr
81+ return DrawToTextureCls
82+
83+}
84+
85+var xAvatarGetCustomImage func(uintptr) uintptr
86+
87+// Gets the custom image paintable.
88+func (x *Avatar) GetCustomImage() *gdk.PaintableBase {
89+
90+ GetCustomImagePtr := xAvatarGetCustomImage(x.GoPointer())
91+ if GetCustomImagePtr == 0 {
92+ return nil
93+ }
94+
95+ gobject.IncreaseRef(GetCustomImagePtr)
96+
97+ GetCustomImageCls := &gdk.PaintableBase{}
98+ GetCustomImageCls.Ptr = GetCustomImagePtr
99+ return GetCustomImageCls
100+
101+}
102+
103+var xAvatarGetIconName func(uintptr) string
104+
105+// Gets the name of an icon to use as a fallback.
106+func (x *Avatar) GetIconName() string {
107+
108+ return xAvatarGetIconName(x.GoPointer())
109+
110+}
111+
112+var xAvatarGetShowInitials func(uintptr) bool
113+
114+// Gets whether initials are used instead of an icon on the fallback avatar.
115+func (x *Avatar) GetShowInitials() bool {
116+
117+ return xAvatarGetShowInitials(x.GoPointer())
118+
119+}
120+
121+var xAvatarGetSize func(uintptr) int32
122+
123+// Gets the size of the avatar.
124+func (x *Avatar) GetSize() int32 {
125+
126+ return xAvatarGetSize(x.GoPointer())
127+
128+}
129+
130+var xAvatarGetText func(uintptr) string
131+
132+// Gets the text used to generate the fallback initials and color.
133+func (x *Avatar) GetText() string {
134+
135+ return xAvatarGetText(x.GoPointer())
136+
137+}
138+
139+var xAvatarSetCustomImage func(uintptr, uintptr)
140+
141+// Sets the custom image paintable.
142+//
143+// Custom image is displayed instead of initials or icon.
144+func (x *Avatar) SetCustomImage(CustomImageVar gdk.Paintable) {
145+
146+ xAvatarSetCustomImage(x.GoPointer(), CustomImageVar.GoPointer())
147+
148+}
149+
150+var xAvatarSetIconName func(uintptr, string)
151+
152+// Sets the name of an icon to use as a fallback.
153+//
154+// If no name is set, `avatar-default-symbolic` will be used.
155+func (x *Avatar) SetIconName(IconNameVar string) {
156+
157+ xAvatarSetIconName(x.GoPointer(), IconNameVar)
158+
159+}
160+
161+var xAvatarSetShowInitials func(uintptr, bool)
162+
163+// Sets whether to use initials instead of an icon on the fallback avatar.
164+//
165+// See [property@Avatar:icon-name] for how to change the fallback icon.
166+func (x *Avatar) SetShowInitials(ShowInitialsVar bool) {
167+
168+ xAvatarSetShowInitials(x.GoPointer(), ShowInitialsVar)
169+
170+}
171+
172+var xAvatarSetSize func(uintptr, int32)
173+
174+// Sets the size of the avatar.
175+func (x *Avatar) SetSize(SizeVar int32) {
176+
177+ xAvatarSetSize(x.GoPointer(), SizeVar)
178+
179+}
180+
181+var xAvatarSetText func(uintptr, string)
182+
183+// Sets the text used to generate the fallback initials and color.
184+//
185+// It's only used to generate the color if [property@Avatar:show-initials] is
186+// `FALSE`.
187+func (x *Avatar) SetText(TextVar string) {
188+
189+ xAvatarSetText(x.GoPointer(), TextVar)
190+
191+}
192+
193+func (c *Avatar) GoPointer() uintptr {
194+ return c.Ptr
195+}
196+
197+func (c *Avatar) SetGoPointer(ptr uintptr) {
198+ c.Ptr = ptr
199+}
200+
201+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
202+func (x *Avatar) GetAccessibleRole() gtk.AccessibleRole {
203+
204+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
205+
206+}
207+
208+// Resets the accessible @property to its default value.
209+func (x *Avatar) ResetProperty(PropertyVar gtk.AccessibleProperty) {
210+
211+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
212+
213+}
214+
215+// Resets the accessible @relation to its default value.
216+func (x *Avatar) ResetRelation(RelationVar gtk.AccessibleRelation) {
217+
218+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
219+
220+}
221+
222+// Resets the accessible @state to its default value.
223+func (x *Avatar) ResetState(StateVar gtk.AccessibleState) {
224+
225+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
226+
227+}
228+
229+// Updates a list of accessible properties.
230+//
231+// See the [enum@Gtk.AccessibleProperty] documentation for the
232+// value types of accessible properties.
233+//
234+// This function should be called by `GtkWidget` types whenever
235+// an accessible property change must be communicated to assistive
236+// technologies.
237+//
238+// Example:
239+// ```c
240+// value = gtk_adjustment_get_value (adjustment);
241+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
242+//
243+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
244+// -1);
245+//
246+// ```
247+func (x *Avatar) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
248+
249+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
250+
251+}
252+
253+// Updates an array of accessible properties.
254+//
255+// This function should be called by `GtkWidget` types whenever an accessible
256+// property change must be communicated to assistive technologies.
257+//
258+// This function is meant to be used by language bindings.
259+func (x *Avatar) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
260+
261+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
262+
263+}
264+
265+// Updates a list of accessible relations.
266+//
267+// This function should be called by `GtkWidget` types whenever an accessible
268+// relation change must be communicated to assistive technologies.
269+//
270+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
271+// you should pass each reference individually, followed by %NULL, e.g.
272+//
273+// ```c
274+// gtk_accessible_update_relation (accessible,
275+//
276+// GTK_ACCESSIBLE_RELATION_CONTROLS,
277+// ref1, NULL,
278+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
279+// ref1, ref2, ref3, NULL,
280+// -1);
281+//
282+// ```
283+func (x *Avatar) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
284+
285+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
286+
287+}
288+
289+// Updates an array of accessible relations.
290+//
291+// This function should be called by `GtkWidget` types whenever an accessible
292+// relation change must be communicated to assistive technologies.
293+//
294+// This function is meant to be used by language bindings.
295+func (x *Avatar) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
296+
297+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
298+
299+}
300+
301+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
302+// documentation for the value types of accessible states.
303+//
304+// This function should be called by `GtkWidget` types whenever an accessible
305+// state change must be communicated to assistive technologies.
306+//
307+// Example:
308+// ```c
309+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
310+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
311+//
312+// GTK_ACCESSIBLE_STATE_CHECKED, value,
313+// -1);
314+//
315+// ```
316+func (x *Avatar) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
317+
318+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
319+
320+}
321+
322+// Updates an array of accessible states.
323+//
324+// This function should be called by `GtkWidget` types whenever an accessible
325+// state change must be communicated to assistive technologies.
326+//
327+// This function is meant to be used by language bindings.
328+func (x *Avatar) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
329+
330+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
331+
332+}
333+
334+// Gets the ID of the @buildable object.
335+//
336+// `GtkBuilder` sets the name based on the ID attribute
337+// of the &lt;object&gt; tag used to construct the @buildable.
338+func (x *Avatar) GetBuildableId() string {
339+
340+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
341+
342+}
343+
344+func init() {
345+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
346+ if err != nil {
347+ panic(err)
348+ }
349+
350+ core.PuregoSafeRegister(&xNewAvatar, lib, "adw_avatar_new")
351+
352+ core.PuregoSafeRegister(&xAvatarDrawToTexture, lib, "adw_avatar_draw_to_texture")
353+ core.PuregoSafeRegister(&xAvatarGetCustomImage, lib, "adw_avatar_get_custom_image")
354+ core.PuregoSafeRegister(&xAvatarGetIconName, lib, "adw_avatar_get_icon_name")
355+ core.PuregoSafeRegister(&xAvatarGetShowInitials, lib, "adw_avatar_get_show_initials")
356+ core.PuregoSafeRegister(&xAvatarGetSize, lib, "adw_avatar_get_size")
357+ core.PuregoSafeRegister(&xAvatarGetText, lib, "adw_avatar_get_text")
358+ core.PuregoSafeRegister(&xAvatarSetCustomImage, lib, "adw_avatar_set_custom_image")
359+ core.PuregoSafeRegister(&xAvatarSetIconName, lib, "adw_avatar_set_icon_name")
360+ core.PuregoSafeRegister(&xAvatarSetShowInitials, lib, "adw_avatar_set_show_initials")
361+ core.PuregoSafeRegister(&xAvatarSetSize, lib, "adw_avatar_set_size")
362+ core.PuregoSafeRegister(&xAvatarSetText, lib, "adw_avatar_set_text")
363+
364+}
A v4/adw/adw-banner.go +412 -0
@@ -0,0 +1,412 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/glib"
8+ "github.com/jwijenbergh/puregotk/v4/gobject"
9+ "github.com/jwijenbergh/puregotk/v4/gtk"
10+)
11+
12+type BannerClass struct {
13+ ParentClass uintptr
14+}
15+
16+// A bar with contextual information.
17+//
18+// &lt;picture&gt;
19+//
20+// &lt;source srcset="banner-dark.png" media="(prefers-color-scheme: dark)"&gt;
21+// &lt;img src="banner.png" alt="banner"&gt;
22+//
23+// &lt;/picture&gt;
24+//
25+// Banners are hidden by default, use [property@Banner:revealed] to show them.
26+//
27+// Banners have a title, set with [property@Banner:title]. Titles can be marked
28+// up with Pango markup, use [property@Banner:use-markup] to enable it.
29+//
30+// The title will be shown centered or left-aligned depending on available
31+// space.
32+//
33+// Banners can optionally have a button with text on it, set through
34+// [property@Banner:button-label]. The button can be used with a `GAction`,
35+// or with the [signal@Banner::button-clicked] signal.
36+//
37+// ## CSS nodes
38+//
39+// `AdwBanner` has a main CSS node with the name `banner`.
40+type Banner struct {
41+ gtk.Widget
42+}
43+
44+func BannerNewFromInternalPtr(ptr uintptr) *Banner {
45+ cls := &Banner{}
46+ cls.Ptr = ptr
47+ return cls
48+}
49+
50+var xNewBanner func(string) uintptr
51+
52+// Creates a new `AdwBanner`.
53+func NewBanner(TitleVar string) *gtk.Widget {
54+ NewBannerPtr := xNewBanner(TitleVar)
55+ if NewBannerPtr == 0 {
56+ return nil
57+ }
58+
59+ gobject.IncreaseRef(NewBannerPtr)
60+
61+ NewBannerCls := &gtk.Widget{}
62+ NewBannerCls.Ptr = NewBannerPtr
63+ return NewBannerCls
64+}
65+
66+var xBannerGetButtonLabel func(uintptr) string
67+
68+// Gets the button label for @self.
69+func (x *Banner) GetButtonLabel() string {
70+
71+ return xBannerGetButtonLabel(x.GoPointer())
72+
73+}
74+
75+var xBannerGetRevealed func(uintptr) bool
76+
77+// Gets if a banner is revealed
78+func (x *Banner) GetRevealed() bool {
79+
80+ return xBannerGetRevealed(x.GoPointer())
81+
82+}
83+
84+var xBannerGetTitle func(uintptr) string
85+
86+// Gets the title for @self.
87+func (x *Banner) GetTitle() string {
88+
89+ return xBannerGetTitle(x.GoPointer())
90+
91+}
92+
93+var xBannerGetUseMarkup func(uintptr) bool
94+
95+// Gets whether to use Pango markup for the banner title.
96+func (x *Banner) GetUseMarkup() bool {
97+
98+ return xBannerGetUseMarkup(x.GoPointer())
99+
100+}
101+
102+var xBannerSetButtonLabel func(uintptr, string)
103+
104+// Sets the button label for @self.
105+//
106+// If set to `""` or `NULL`, the button won't be shown.
107+//
108+// The button can be used with a `GAction`, or with the
109+// [signal@Banner::button-clicked] signal.
110+func (x *Banner) SetButtonLabel(LabelVar string) {
111+
112+ xBannerSetButtonLabel(x.GoPointer(), LabelVar)
113+
114+}
115+
116+var xBannerSetRevealed func(uintptr, bool)
117+
118+// Sets whether a banner should be revealed
119+func (x *Banner) SetRevealed(RevealedVar bool) {
120+
121+ xBannerSetRevealed(x.GoPointer(), RevealedVar)
122+
123+}
124+
125+var xBannerSetTitle func(uintptr, string)
126+
127+// Sets the title for this banner.
128+//
129+// See also: [property@Banner:use-markup].
130+func (x *Banner) SetTitle(TitleVar string) {
131+
132+ xBannerSetTitle(x.GoPointer(), TitleVar)
133+
134+}
135+
136+var xBannerSetUseMarkup func(uintptr, bool)
137+
138+// Sets whether to use Pango markup for the banner title.
139+//
140+// See also [func@Pango.parse_markup].
141+func (x *Banner) SetUseMarkup(UseMarkupVar bool) {
142+
143+ xBannerSetUseMarkup(x.GoPointer(), UseMarkupVar)
144+
145+}
146+
147+func (c *Banner) GoPointer() uintptr {
148+ return c.Ptr
149+}
150+
151+func (c *Banner) SetGoPointer(ptr uintptr) {
152+ c.Ptr = ptr
153+}
154+
155+// This signal is emitted after the action button has been clicked.
156+//
157+// It can be used as an alternative to setting an action.
158+func (x *Banner) ConnectButtonClicked(cb func(Banner)) {
159+ fcb := func(clsPtr uintptr) {
160+ fa := Banner{}
161+ fa.Ptr = clsPtr
162+
163+ cb(fa)
164+
165+ }
166+ gobject.ObjectConnect(x.GoPointer(), "signal::button-clicked", purego.NewCallback(fcb))
167+}
168+
169+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
170+func (x *Banner) GetAccessibleRole() gtk.AccessibleRole {
171+
172+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
173+
174+}
175+
176+// Resets the accessible @property to its default value.
177+func (x *Banner) ResetProperty(PropertyVar gtk.AccessibleProperty) {
178+
179+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
180+
181+}
182+
183+// Resets the accessible @relation to its default value.
184+func (x *Banner) ResetRelation(RelationVar gtk.AccessibleRelation) {
185+
186+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
187+
188+}
189+
190+// Resets the accessible @state to its default value.
191+func (x *Banner) ResetState(StateVar gtk.AccessibleState) {
192+
193+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
194+
195+}
196+
197+// Updates a list of accessible properties.
198+//
199+// See the [enum@Gtk.AccessibleProperty] documentation for the
200+// value types of accessible properties.
201+//
202+// This function should be called by `GtkWidget` types whenever
203+// an accessible property change must be communicated to assistive
204+// technologies.
205+//
206+// Example:
207+// ```c
208+// value = gtk_adjustment_get_value (adjustment);
209+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
210+//
211+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
212+// -1);
213+//
214+// ```
215+func (x *Banner) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
216+
217+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
218+
219+}
220+
221+// Updates an array of accessible properties.
222+//
223+// This function should be called by `GtkWidget` types whenever an accessible
224+// property change must be communicated to assistive technologies.
225+//
226+// This function is meant to be used by language bindings.
227+func (x *Banner) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
228+
229+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
230+
231+}
232+
233+// Updates a list of accessible relations.
234+//
235+// This function should be called by `GtkWidget` types whenever an accessible
236+// relation change must be communicated to assistive technologies.
237+//
238+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
239+// you should pass each reference individually, followed by %NULL, e.g.
240+//
241+// ```c
242+// gtk_accessible_update_relation (accessible,
243+//
244+// GTK_ACCESSIBLE_RELATION_CONTROLS,
245+// ref1, NULL,
246+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
247+// ref1, ref2, ref3, NULL,
248+// -1);
249+//
250+// ```
251+func (x *Banner) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
252+
253+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
254+
255+}
256+
257+// Updates an array of accessible relations.
258+//
259+// This function should be called by `GtkWidget` types whenever an accessible
260+// relation change must be communicated to assistive technologies.
261+//
262+// This function is meant to be used by language bindings.
263+func (x *Banner) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
264+
265+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
266+
267+}
268+
269+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
270+// documentation for the value types of accessible states.
271+//
272+// This function should be called by `GtkWidget` types whenever an accessible
273+// state change must be communicated to assistive technologies.
274+//
275+// Example:
276+// ```c
277+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
278+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
279+//
280+// GTK_ACCESSIBLE_STATE_CHECKED, value,
281+// -1);
282+//
283+// ```
284+func (x *Banner) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
285+
286+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
287+
288+}
289+
290+// Updates an array of accessible states.
291+//
292+// This function should be called by `GtkWidget` types whenever an accessible
293+// state change must be communicated to assistive technologies.
294+//
295+// This function is meant to be used by language bindings.
296+func (x *Banner) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
297+
298+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
299+
300+}
301+
302+// Gets the action name for @actionable.
303+func (x *Banner) GetActionName() string {
304+
305+ return gtk.XGtkActionableGetActionName(x.GoPointer())
306+
307+}
308+
309+// Gets the current target value of @actionable.
310+func (x *Banner) GetActionTargetValue() *glib.Variant {
311+
312+ return gtk.XGtkActionableGetActionTargetValue(x.GoPointer())
313+
314+}
315+
316+// Specifies the name of the action with which this widget should be
317+// associated.
318+//
319+// If @action_name is %NULL then the widget will be unassociated from
320+// any previous action.
321+//
322+// Usually this function is used when the widget is located (or will be
323+// located) within the hierarchy of a `GtkApplicationWindow`.
324+//
325+// Names are of the form “win.save” or “app.quit” for actions on the
326+// containing [class@ApplicationWindow] or its associated [class@Application],
327+// respectively. This is the same form used for actions in the [class@Gio.Menu]
328+// associated with the window.
329+func (x *Banner) SetActionName(ActionNameVar string) {
330+
331+ gtk.XGtkActionableSetActionName(x.GoPointer(), ActionNameVar)
332+
333+}
334+
335+// Sets the target of an actionable widget.
336+//
337+// This is a convenience function that calls [ctor@GLib.Variant.new] for
338+// @format_string and uses the result to call
339+// [method@Gtk.Actionable.set_action_target_value].
340+//
341+// If you are setting a string-valued target and want to set
342+// the action name at the same time, you can use
343+// [method@Gtk.Actionable.set_detailed_action_name].
344+func (x *Banner) SetActionTarget(FormatStringVar string, varArgs ...interface{}) {
345+
346+ gtk.XGtkActionableSetActionTarget(x.GoPointer(), FormatStringVar, varArgs...)
347+
348+}
349+
350+// Sets the target value of an actionable widget.
351+//
352+// If @target_value is %NULL then the target value is unset.
353+//
354+// The target value has two purposes. First, it is used as the parameter
355+// to activation of the action associated with the `GtkActionable` widget.
356+// Second, it is used to determine if the widget should be rendered as
357+// “active” — the widget is active if the state is equal to the given target.
358+//
359+// Consider the example of associating a set of buttons with a [iface@Gio.Action]
360+// with string state in a typical “radio button” situation. Each button
361+// will be associated with the same action, but with a different target
362+// value for that action. Clicking on a particular button will activate
363+// the action with the target of that button, which will typically cause
364+// the action’s state to change to that value. Since the action’s state
365+// is now equal to the target value of the button, the button will now
366+// be rendered as active (and the other buttons, with different targets,
367+// rendered inactive).
368+func (x *Banner) SetActionTargetValue(TargetValueVar *glib.Variant) {
369+
370+ gtk.XGtkActionableSetActionTargetValue(x.GoPointer(), TargetValueVar)
371+
372+}
373+
374+// Sets the action-name and associated string target value of an
375+// actionable widget.
376+//
377+// @detailed_action_name is a string in the format accepted by
378+// [func@Gio.Action.parse_detailed_name].
379+func (x *Banner) SetDetailedActionName(DetailedActionNameVar string) {
380+
381+ gtk.XGtkActionableSetDetailedActionName(x.GoPointer(), DetailedActionNameVar)
382+
383+}
384+
385+// Gets the ID of the @buildable object.
386+//
387+// `GtkBuilder` sets the name based on the ID attribute
388+// of the &lt;object&gt; tag used to construct the @buildable.
389+func (x *Banner) GetBuildableId() string {
390+
391+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
392+
393+}
394+
395+func init() {
396+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
397+ if err != nil {
398+ panic(err)
399+ }
400+
401+ core.PuregoSafeRegister(&xNewBanner, lib, "adw_banner_new")
402+
403+ core.PuregoSafeRegister(&xBannerGetButtonLabel, lib, "adw_banner_get_button_label")
404+ core.PuregoSafeRegister(&xBannerGetRevealed, lib, "adw_banner_get_revealed")
405+ core.PuregoSafeRegister(&xBannerGetTitle, lib, "adw_banner_get_title")
406+ core.PuregoSafeRegister(&xBannerGetUseMarkup, lib, "adw_banner_get_use_markup")
407+ core.PuregoSafeRegister(&xBannerSetButtonLabel, lib, "adw_banner_set_button_label")
408+ core.PuregoSafeRegister(&xBannerSetRevealed, lib, "adw_banner_set_revealed")
409+ core.PuregoSafeRegister(&xBannerSetTitle, lib, "adw_banner_set_title")
410+ core.PuregoSafeRegister(&xBannerSetUseMarkup, lib, "adw_banner_set_use_markup")
411+
412+}
A v4/adw/adw-bin.go +244 -0
@@ -0,0 +1,244 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gobject"
8+ "github.com/jwijenbergh/puregotk/v4/gtk"
9+)
10+
11+type BinClass struct {
12+ ParentClass uintptr
13+}
14+
15+// A widget with one child.
16+//
17+// &lt;picture&gt;
18+//
19+// &lt;source srcset="bin-dark.png" media="(prefers-color-scheme: dark)"&gt;
20+// &lt;img src="bin.png" alt="bin"&gt;
21+//
22+// &lt;/picture&gt;
23+//
24+// The `AdwBin` widget has only one child, set with the [property@Bin:child]
25+// property.
26+//
27+// It is useful for deriving subclasses, since it provides common code needed
28+// for handling a single child widget.
29+type Bin struct {
30+ gtk.Widget
31+}
32+
33+func BinNewFromInternalPtr(ptr uintptr) *Bin {
34+ cls := &Bin{}
35+ cls.Ptr = ptr
36+ return cls
37+}
38+
39+var xNewBin func() uintptr
40+
41+// Creates a new `AdwBin`.
42+func NewBin() *gtk.Widget {
43+ NewBinPtr := xNewBin()
44+ if NewBinPtr == 0 {
45+ return nil
46+ }
47+
48+ gobject.IncreaseRef(NewBinPtr)
49+
50+ NewBinCls := &gtk.Widget{}
51+ NewBinCls.Ptr = NewBinPtr
52+ return NewBinCls
53+}
54+
55+var xBinGetChild func(uintptr) uintptr
56+
57+// Gets the child widget of @self.
58+func (x *Bin) GetChild() *gtk.Widget {
59+
60+ GetChildPtr := xBinGetChild(x.GoPointer())
61+ if GetChildPtr == 0 {
62+ return nil
63+ }
64+
65+ gobject.IncreaseRef(GetChildPtr)
66+
67+ GetChildCls := &gtk.Widget{}
68+ GetChildCls.Ptr = GetChildPtr
69+ return GetChildCls
70+
71+}
72+
73+var xBinSetChild func(uintptr, uintptr)
74+
75+// Sets the child widget of @self.
76+func (x *Bin) SetChild(ChildVar *gtk.Widget) {
77+
78+ xBinSetChild(x.GoPointer(), ChildVar.GoPointer())
79+
80+}
81+
82+func (c *Bin) GoPointer() uintptr {
83+ return c.Ptr
84+}
85+
86+func (c *Bin) SetGoPointer(ptr uintptr) {
87+ c.Ptr = ptr
88+}
89+
90+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
91+func (x *Bin) GetAccessibleRole() gtk.AccessibleRole {
92+
93+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
94+
95+}
96+
97+// Resets the accessible @property to its default value.
98+func (x *Bin) ResetProperty(PropertyVar gtk.AccessibleProperty) {
99+
100+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
101+
102+}
103+
104+// Resets the accessible @relation to its default value.
105+func (x *Bin) ResetRelation(RelationVar gtk.AccessibleRelation) {
106+
107+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
108+
109+}
110+
111+// Resets the accessible @state to its default value.
112+func (x *Bin) ResetState(StateVar gtk.AccessibleState) {
113+
114+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
115+
116+}
117+
118+// Updates a list of accessible properties.
119+//
120+// See the [enum@Gtk.AccessibleProperty] documentation for the
121+// value types of accessible properties.
122+//
123+// This function should be called by `GtkWidget` types whenever
124+// an accessible property change must be communicated to assistive
125+// technologies.
126+//
127+// Example:
128+// ```c
129+// value = gtk_adjustment_get_value (adjustment);
130+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
131+//
132+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
133+// -1);
134+//
135+// ```
136+func (x *Bin) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
137+
138+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
139+
140+}
141+
142+// Updates an array of accessible properties.
143+//
144+// This function should be called by `GtkWidget` types whenever an accessible
145+// property change must be communicated to assistive technologies.
146+//
147+// This function is meant to be used by language bindings.
148+func (x *Bin) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
149+
150+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
151+
152+}
153+
154+// Updates a list of accessible relations.
155+//
156+// This function should be called by `GtkWidget` types whenever an accessible
157+// relation change must be communicated to assistive technologies.
158+//
159+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
160+// you should pass each reference individually, followed by %NULL, e.g.
161+//
162+// ```c
163+// gtk_accessible_update_relation (accessible,
164+//
165+// GTK_ACCESSIBLE_RELATION_CONTROLS,
166+// ref1, NULL,
167+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
168+// ref1, ref2, ref3, NULL,
169+// -1);
170+//
171+// ```
172+func (x *Bin) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
173+
174+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
175+
176+}
177+
178+// Updates an array of accessible relations.
179+//
180+// This function should be called by `GtkWidget` types whenever an accessible
181+// relation change must be communicated to assistive technologies.
182+//
183+// This function is meant to be used by language bindings.
184+func (x *Bin) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
185+
186+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
187+
188+}
189+
190+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
191+// documentation for the value types of accessible states.
192+//
193+// This function should be called by `GtkWidget` types whenever an accessible
194+// state change must be communicated to assistive technologies.
195+//
196+// Example:
197+// ```c
198+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
199+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
200+//
201+// GTK_ACCESSIBLE_STATE_CHECKED, value,
202+// -1);
203+//
204+// ```
205+func (x *Bin) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
206+
207+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
208+
209+}
210+
211+// Updates an array of accessible states.
212+//
213+// This function should be called by `GtkWidget` types whenever an accessible
214+// state change must be communicated to assistive technologies.
215+//
216+// This function is meant to be used by language bindings.
217+func (x *Bin) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
218+
219+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
220+
221+}
222+
223+// Gets the ID of the @buildable object.
224+//
225+// `GtkBuilder` sets the name based on the ID attribute
226+// of the &lt;object&gt; tag used to construct the @buildable.
227+func (x *Bin) GetBuildableId() string {
228+
229+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
230+
231+}
232+
233+func init() {
234+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
235+ if err != nil {
236+ panic(err)
237+ }
238+
239+ core.PuregoSafeRegister(&xNewBin, lib, "adw_bin_new")
240+
241+ core.PuregoSafeRegister(&xBinGetChild, lib, "adw_bin_get_child")
242+ core.PuregoSafeRegister(&xBinSetChild, lib, "adw_bin_set_child")
243+
244+}
A v4/adw/adw-button-content.go +317 -0
@@ -0,0 +1,317 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gobject"
8+ "github.com/jwijenbergh/puregotk/v4/gtk"
9+)
10+
11+type ButtonContentClass struct {
12+ ParentClass uintptr
13+}
14+
15+// A helper widget for creating buttons.
16+//
17+// &lt;picture&gt;
18+//
19+// &lt;source srcset="button-content-dark.png" media="(prefers-color-scheme: dark)"&gt;
20+// &lt;img src="button-content.png" alt="button-content"&gt;
21+//
22+// &lt;/picture&gt;
23+//
24+// `AdwButtonContent` is a box-like widget with an icon and a label.
25+//
26+// It's intended to be used as a direct child of [class@Gtk.Button],
27+// [class@Gtk.MenuButton] or [class@SplitButton], when they need to have both an
28+// icon and a label, as follows:
29+//
30+// ```xml
31+// &lt;object class="GtkButton"&gt;
32+//
33+// &lt;property name="child"&gt;
34+// &lt;object class="AdwButtonContent"&gt;
35+// &lt;property name="icon-name"&gt;document-open-symbolic&lt;/property&gt;
36+// &lt;property name="label" translatable="yes"&gt;_Open&lt;/property&gt;
37+// &lt;property name="use-underline"&gt;True&lt;/property&gt;
38+// &lt;/object&gt;
39+// &lt;/property&gt;
40+//
41+// &lt;/object&gt;
42+// ```
43+//
44+// `AdwButtonContent` handles style classes and connecting the mnemonic to the
45+// button automatically.
46+//
47+// ## CSS nodes
48+//
49+// ```
50+// buttoncontent
51+// ├── image
52+// ╰── label
53+// ```
54+//
55+// `AdwButtonContent`'s CSS node is called `buttoncontent`. It contains the
56+// subnodes `image` and `label`.
57+//
58+// When inside a `GtkButton` or `AdwSplitButton`, the button will receive the
59+// `.image-text-button` style class. When inside a `GtkMenuButton`, the
60+// internal `GtkButton` will receive it instead.
61+//
62+// ## Accessibility
63+//
64+// `AdwButtonContent` uses the `GTK_ACCESSIBLE_ROLE_GROUP` role.
65+type ButtonContent struct {
66+ gtk.Widget
67+}
68+
69+func ButtonContentNewFromInternalPtr(ptr uintptr) *ButtonContent {
70+ cls := &ButtonContent{}
71+ cls.Ptr = ptr
72+ return cls
73+}
74+
75+var xNewButtonContent func() uintptr
76+
77+// Creates a new `AdwButtonContent`.
78+func NewButtonContent() *gtk.Widget {
79+ NewButtonContentPtr := xNewButtonContent()
80+ if NewButtonContentPtr == 0 {
81+ return nil
82+ }
83+
84+ gobject.IncreaseRef(NewButtonContentPtr)
85+
86+ NewButtonContentCls := &gtk.Widget{}
87+ NewButtonContentCls.Ptr = NewButtonContentPtr
88+ return NewButtonContentCls
89+}
90+
91+var xButtonContentGetIconName func(uintptr) string
92+
93+// Gets the name of the displayed icon.
94+func (x *ButtonContent) GetIconName() string {
95+
96+ return xButtonContentGetIconName(x.GoPointer())
97+
98+}
99+
100+var xButtonContentGetLabel func(uintptr) string
101+
102+// Gets the displayed label.
103+func (x *ButtonContent) GetLabel() string {
104+
105+ return xButtonContentGetLabel(x.GoPointer())
106+
107+}
108+
109+var xButtonContentGetUseUnderline func(uintptr) bool
110+
111+// Gets whether an underline in the text indicates a mnemonic.
112+func (x *ButtonContent) GetUseUnderline() bool {
113+
114+ return xButtonContentGetUseUnderline(x.GoPointer())
115+
116+}
117+
118+var xButtonContentSetIconName func(uintptr, string)
119+
120+// Sets the name of the displayed icon.
121+//
122+// If empty, the icon is not shown.
123+func (x *ButtonContent) SetIconName(IconNameVar string) {
124+
125+ xButtonContentSetIconName(x.GoPointer(), IconNameVar)
126+
127+}
128+
129+var xButtonContentSetLabel func(uintptr, string)
130+
131+// Sets the displayed label.
132+func (x *ButtonContent) SetLabel(LabelVar string) {
133+
134+ xButtonContentSetLabel(x.GoPointer(), LabelVar)
135+
136+}
137+
138+var xButtonContentSetUseUnderline func(uintptr, bool)
139+
140+// Sets whether an underline in the text indicates a mnemonic.
141+//
142+// The mnemonic can be used to activate the parent button.
143+//
144+// See [property@ButtonContent:label].
145+func (x *ButtonContent) SetUseUnderline(UseUnderlineVar bool) {
146+
147+ xButtonContentSetUseUnderline(x.GoPointer(), UseUnderlineVar)
148+
149+}
150+
151+func (c *ButtonContent) GoPointer() uintptr {
152+ return c.Ptr
153+}
154+
155+func (c *ButtonContent) SetGoPointer(ptr uintptr) {
156+ c.Ptr = ptr
157+}
158+
159+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
160+func (x *ButtonContent) GetAccessibleRole() gtk.AccessibleRole {
161+
162+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
163+
164+}
165+
166+// Resets the accessible @property to its default value.
167+func (x *ButtonContent) ResetProperty(PropertyVar gtk.AccessibleProperty) {
168+
169+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
170+
171+}
172+
173+// Resets the accessible @relation to its default value.
174+func (x *ButtonContent) ResetRelation(RelationVar gtk.AccessibleRelation) {
175+
176+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
177+
178+}
179+
180+// Resets the accessible @state to its default value.
181+func (x *ButtonContent) ResetState(StateVar gtk.AccessibleState) {
182+
183+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
184+
185+}
186+
187+// Updates a list of accessible properties.
188+//
189+// See the [enum@Gtk.AccessibleProperty] documentation for the
190+// value types of accessible properties.
191+//
192+// This function should be called by `GtkWidget` types whenever
193+// an accessible property change must be communicated to assistive
194+// technologies.
195+//
196+// Example:
197+// ```c
198+// value = gtk_adjustment_get_value (adjustment);
199+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
200+//
201+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
202+// -1);
203+//
204+// ```
205+func (x *ButtonContent) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
206+
207+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
208+
209+}
210+
211+// Updates an array of accessible properties.
212+//
213+// This function should be called by `GtkWidget` types whenever an accessible
214+// property change must be communicated to assistive technologies.
215+//
216+// This function is meant to be used by language bindings.
217+func (x *ButtonContent) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
218+
219+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
220+
221+}
222+
223+// Updates a list of accessible relations.
224+//
225+// This function should be called by `GtkWidget` types whenever an accessible
226+// relation change must be communicated to assistive technologies.
227+//
228+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
229+// you should pass each reference individually, followed by %NULL, e.g.
230+//
231+// ```c
232+// gtk_accessible_update_relation (accessible,
233+//
234+// GTK_ACCESSIBLE_RELATION_CONTROLS,
235+// ref1, NULL,
236+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
237+// ref1, ref2, ref3, NULL,
238+// -1);
239+//
240+// ```
241+func (x *ButtonContent) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
242+
243+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
244+
245+}
246+
247+// Updates an array of accessible relations.
248+//
249+// This function should be called by `GtkWidget` types whenever an accessible
250+// relation change must be communicated to assistive technologies.
251+//
252+// This function is meant to be used by language bindings.
253+func (x *ButtonContent) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
254+
255+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
256+
257+}
258+
259+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
260+// documentation for the value types of accessible states.
261+//
262+// This function should be called by `GtkWidget` types whenever an accessible
263+// state change must be communicated to assistive technologies.
264+//
265+// Example:
266+// ```c
267+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
268+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
269+//
270+// GTK_ACCESSIBLE_STATE_CHECKED, value,
271+// -1);
272+//
273+// ```
274+func (x *ButtonContent) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
275+
276+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
277+
278+}
279+
280+// Updates an array of accessible states.
281+//
282+// This function should be called by `GtkWidget` types whenever an accessible
283+// state change must be communicated to assistive technologies.
284+//
285+// This function is meant to be used by language bindings.
286+func (x *ButtonContent) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
287+
288+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
289+
290+}
291+
292+// Gets the ID of the @buildable object.
293+//
294+// `GtkBuilder` sets the name based on the ID attribute
295+// of the &lt;object&gt; tag used to construct the @buildable.
296+func (x *ButtonContent) GetBuildableId() string {
297+
298+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
299+
300+}
301+
302+func init() {
303+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
304+ if err != nil {
305+ panic(err)
306+ }
307+
308+ core.PuregoSafeRegister(&xNewButtonContent, lib, "adw_button_content_new")
309+
310+ core.PuregoSafeRegister(&xButtonContentGetIconName, lib, "adw_button_content_get_icon_name")
311+ core.PuregoSafeRegister(&xButtonContentGetLabel, lib, "adw_button_content_get_label")
312+ core.PuregoSafeRegister(&xButtonContentGetUseUnderline, lib, "adw_button_content_get_use_underline")
313+ core.PuregoSafeRegister(&xButtonContentSetIconName, lib, "adw_button_content_set_icon_name")
314+ core.PuregoSafeRegister(&xButtonContentSetLabel, lib, "adw_button_content_set_label")
315+ core.PuregoSafeRegister(&xButtonContentSetUseUnderline, lib, "adw_button_content_set_use_underline")
316+
317+}
A v4/adw/adw-carousel-indicator-dots.go +264 -0
@@ -0,0 +1,264 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gobject"
8+ "github.com/jwijenbergh/puregotk/v4/gtk"
9+)
10+
11+type CarouselIndicatorDotsClass struct {
12+ ParentClass uintptr
13+}
14+
15+// A dots indicator for [class@Carousel].
16+//
17+// &lt;picture&gt;
18+//
19+// &lt;source srcset="carousel-indicator-dots-dark.png" media="(prefers-color-scheme: dark)"&gt;
20+// &lt;img src="carousel-indicator-dots.png" alt="carousel-indicator-dots"&gt;
21+//
22+// &lt;/picture&gt;
23+//
24+// The `AdwCarouselIndicatorDots` widget shows a set of dots for each page of a
25+// given [class@Carousel]. The dot representing the carousel's active page is
26+// larger and more opaque than the others, the transition to the active and
27+// inactive state is gradual to match the carousel's position.
28+//
29+// See also [class@CarouselIndicatorLines].
30+//
31+// ## CSS nodes
32+//
33+// `AdwCarouselIndicatorDots` has a single CSS node with name
34+// `carouselindicatordots`.
35+type CarouselIndicatorDots struct {
36+ gtk.Widget
37+}
38+
39+func CarouselIndicatorDotsNewFromInternalPtr(ptr uintptr) *CarouselIndicatorDots {
40+ cls := &CarouselIndicatorDots{}
41+ cls.Ptr = ptr
42+ return cls
43+}
44+
45+var xNewCarouselIndicatorDots func() uintptr
46+
47+// Creates a new `AdwCarouselIndicatorDots`.
48+func NewCarouselIndicatorDots() *gtk.Widget {
49+ NewCarouselIndicatorDotsPtr := xNewCarouselIndicatorDots()
50+ if NewCarouselIndicatorDotsPtr == 0 {
51+ return nil
52+ }
53+
54+ gobject.IncreaseRef(NewCarouselIndicatorDotsPtr)
55+
56+ NewCarouselIndicatorDotsCls := &gtk.Widget{}
57+ NewCarouselIndicatorDotsCls.Ptr = NewCarouselIndicatorDotsPtr
58+ return NewCarouselIndicatorDotsCls
59+}
60+
61+var xCarouselIndicatorDotsGetCarousel func(uintptr) uintptr
62+
63+// Gets the displayed carousel.
64+func (x *CarouselIndicatorDots) GetCarousel() *Carousel {
65+
66+ GetCarouselPtr := xCarouselIndicatorDotsGetCarousel(x.GoPointer())
67+ if GetCarouselPtr == 0 {
68+ return nil
69+ }
70+
71+ gobject.IncreaseRef(GetCarouselPtr)
72+
73+ GetCarouselCls := &Carousel{}
74+ GetCarouselCls.Ptr = GetCarouselPtr
75+ return GetCarouselCls
76+
77+}
78+
79+var xCarouselIndicatorDotsSetCarousel func(uintptr, uintptr)
80+
81+// Sets the displayed carousel.
82+func (x *CarouselIndicatorDots) SetCarousel(CarouselVar *Carousel) {
83+
84+ xCarouselIndicatorDotsSetCarousel(x.GoPointer(), CarouselVar.GoPointer())
85+
86+}
87+
88+func (c *CarouselIndicatorDots) GoPointer() uintptr {
89+ return c.Ptr
90+}
91+
92+func (c *CarouselIndicatorDots) SetGoPointer(ptr uintptr) {
93+ c.Ptr = ptr
94+}
95+
96+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
97+func (x *CarouselIndicatorDots) GetAccessibleRole() gtk.AccessibleRole {
98+
99+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
100+
101+}
102+
103+// Resets the accessible @property to its default value.
104+func (x *CarouselIndicatorDots) ResetProperty(PropertyVar gtk.AccessibleProperty) {
105+
106+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
107+
108+}
109+
110+// Resets the accessible @relation to its default value.
111+func (x *CarouselIndicatorDots) ResetRelation(RelationVar gtk.AccessibleRelation) {
112+
113+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
114+
115+}
116+
117+// Resets the accessible @state to its default value.
118+func (x *CarouselIndicatorDots) ResetState(StateVar gtk.AccessibleState) {
119+
120+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
121+
122+}
123+
124+// Updates a list of accessible properties.
125+//
126+// See the [enum@Gtk.AccessibleProperty] documentation for the
127+// value types of accessible properties.
128+//
129+// This function should be called by `GtkWidget` types whenever
130+// an accessible property change must be communicated to assistive
131+// technologies.
132+//
133+// Example:
134+// ```c
135+// value = gtk_adjustment_get_value (adjustment);
136+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
137+//
138+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
139+// -1);
140+//
141+// ```
142+func (x *CarouselIndicatorDots) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
143+
144+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
145+
146+}
147+
148+// Updates an array of accessible properties.
149+//
150+// This function should be called by `GtkWidget` types whenever an accessible
151+// property change must be communicated to assistive technologies.
152+//
153+// This function is meant to be used by language bindings.
154+func (x *CarouselIndicatorDots) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
155+
156+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
157+
158+}
159+
160+// Updates a list of accessible relations.
161+//
162+// This function should be called by `GtkWidget` types whenever an accessible
163+// relation change must be communicated to assistive technologies.
164+//
165+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
166+// you should pass each reference individually, followed by %NULL, e.g.
167+//
168+// ```c
169+// gtk_accessible_update_relation (accessible,
170+//
171+// GTK_ACCESSIBLE_RELATION_CONTROLS,
172+// ref1, NULL,
173+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
174+// ref1, ref2, ref3, NULL,
175+// -1);
176+//
177+// ```
178+func (x *CarouselIndicatorDots) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
179+
180+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
181+
182+}
183+
184+// Updates an array of accessible relations.
185+//
186+// This function should be called by `GtkWidget` types whenever an accessible
187+// relation change must be communicated to assistive technologies.
188+//
189+// This function is meant to be used by language bindings.
190+func (x *CarouselIndicatorDots) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
191+
192+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
193+
194+}
195+
196+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
197+// documentation for the value types of accessible states.
198+//
199+// This function should be called by `GtkWidget` types whenever an accessible
200+// state change must be communicated to assistive technologies.
201+//
202+// Example:
203+// ```c
204+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
205+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
206+//
207+// GTK_ACCESSIBLE_STATE_CHECKED, value,
208+// -1);
209+//
210+// ```
211+func (x *CarouselIndicatorDots) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
212+
213+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
214+
215+}
216+
217+// Updates an array of accessible states.
218+//
219+// This function should be called by `GtkWidget` types whenever an accessible
220+// state change must be communicated to assistive technologies.
221+//
222+// This function is meant to be used by language bindings.
223+func (x *CarouselIndicatorDots) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
224+
225+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
226+
227+}
228+
229+// Gets the ID of the @buildable object.
230+//
231+// `GtkBuilder` sets the name based on the ID attribute
232+// of the &lt;object&gt; tag used to construct the @buildable.
233+func (x *CarouselIndicatorDots) GetBuildableId() string {
234+
235+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
236+
237+}
238+
239+// Retrieves the orientation of the @orientable.
240+func (x *CarouselIndicatorDots) GetOrientation() gtk.Orientation {
241+
242+ return gtk.XGtkOrientableGetOrientation(x.GoPointer())
243+
244+}
245+
246+// Sets the orientation of the @orientable.
247+func (x *CarouselIndicatorDots) SetOrientation(OrientationVar gtk.Orientation) {
248+
249+ gtk.XGtkOrientableSetOrientation(x.GoPointer(), OrientationVar)
250+
251+}
252+
253+func init() {
254+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
255+ if err != nil {
256+ panic(err)
257+ }
258+
259+ core.PuregoSafeRegister(&xNewCarouselIndicatorDots, lib, "adw_carousel_indicator_dots_new")
260+
261+ core.PuregoSafeRegister(&xCarouselIndicatorDotsGetCarousel, lib, "adw_carousel_indicator_dots_get_carousel")
262+ core.PuregoSafeRegister(&xCarouselIndicatorDotsSetCarousel, lib, "adw_carousel_indicator_dots_set_carousel")
263+
264+}
A v4/adw/adw-carousel-indicator-lines.go +263 -0
@@ -0,0 +1,263 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gobject"
8+ "github.com/jwijenbergh/puregotk/v4/gtk"
9+)
10+
11+type CarouselIndicatorLinesClass struct {
12+ ParentClass uintptr
13+}
14+
15+// A lines indicator for [class@Carousel].
16+//
17+// &lt;picture&gt;
18+//
19+// &lt;source srcset="carousel-indicator-dots-lines.png" media="(prefers-color-scheme: dark)"&gt;
20+// &lt;img src="carousel-indicator-lines.png" alt="carousel-indicator-lines"&gt;
21+//
22+// &lt;/picture&gt;
23+//
24+// The `AdwCarouselIndicatorLines` widget shows a set of lines for each page of
25+// a given [class@Carousel]. The carousel's active page is shown as another line
26+// that moves between them to match the carousel's position.
27+//
28+// See also [class@CarouselIndicatorDots].
29+//
30+// ## CSS nodes
31+//
32+// `AdwCarouselIndicatorLines` has a single CSS node with name
33+// `carouselindicatorlines`.
34+type CarouselIndicatorLines struct {
35+ gtk.Widget
36+}
37+
38+func CarouselIndicatorLinesNewFromInternalPtr(ptr uintptr) *CarouselIndicatorLines {
39+ cls := &CarouselIndicatorLines{}
40+ cls.Ptr = ptr
41+ return cls
42+}
43+
44+var xNewCarouselIndicatorLines func() uintptr
45+
46+// Creates a new `AdwCarouselIndicatorLines`.
47+func NewCarouselIndicatorLines() *gtk.Widget {
48+ NewCarouselIndicatorLinesPtr := xNewCarouselIndicatorLines()
49+ if NewCarouselIndicatorLinesPtr == 0 {
50+ return nil
51+ }
52+
53+ gobject.IncreaseRef(NewCarouselIndicatorLinesPtr)
54+
55+ NewCarouselIndicatorLinesCls := &gtk.Widget{}
56+ NewCarouselIndicatorLinesCls.Ptr = NewCarouselIndicatorLinesPtr
57+ return NewCarouselIndicatorLinesCls
58+}
59+
60+var xCarouselIndicatorLinesGetCarousel func(uintptr) uintptr
61+
62+// Gets the displayed carousel.
63+func (x *CarouselIndicatorLines) GetCarousel() *Carousel {
64+
65+ GetCarouselPtr := xCarouselIndicatorLinesGetCarousel(x.GoPointer())
66+ if GetCarouselPtr == 0 {
67+ return nil
68+ }
69+
70+ gobject.IncreaseRef(GetCarouselPtr)
71+
72+ GetCarouselCls := &Carousel{}
73+ GetCarouselCls.Ptr = GetCarouselPtr
74+ return GetCarouselCls
75+
76+}
77+
78+var xCarouselIndicatorLinesSetCarousel func(uintptr, uintptr)
79+
80+// Sets the displayed carousel.
81+func (x *CarouselIndicatorLines) SetCarousel(CarouselVar *Carousel) {
82+
83+ xCarouselIndicatorLinesSetCarousel(x.GoPointer(), CarouselVar.GoPointer())
84+
85+}
86+
87+func (c *CarouselIndicatorLines) GoPointer() uintptr {
88+ return c.Ptr
89+}
90+
91+func (c *CarouselIndicatorLines) SetGoPointer(ptr uintptr) {
92+ c.Ptr = ptr
93+}
94+
95+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
96+func (x *CarouselIndicatorLines) GetAccessibleRole() gtk.AccessibleRole {
97+
98+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
99+
100+}
101+
102+// Resets the accessible @property to its default value.
103+func (x *CarouselIndicatorLines) ResetProperty(PropertyVar gtk.AccessibleProperty) {
104+
105+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
106+
107+}
108+
109+// Resets the accessible @relation to its default value.
110+func (x *CarouselIndicatorLines) ResetRelation(RelationVar gtk.AccessibleRelation) {
111+
112+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
113+
114+}
115+
116+// Resets the accessible @state to its default value.
117+func (x *CarouselIndicatorLines) ResetState(StateVar gtk.AccessibleState) {
118+
119+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
120+
121+}
122+
123+// Updates a list of accessible properties.
124+//
125+// See the [enum@Gtk.AccessibleProperty] documentation for the
126+// value types of accessible properties.
127+//
128+// This function should be called by `GtkWidget` types whenever
129+// an accessible property change must be communicated to assistive
130+// technologies.
131+//
132+// Example:
133+// ```c
134+// value = gtk_adjustment_get_value (adjustment);
135+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
136+//
137+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
138+// -1);
139+//
140+// ```
141+func (x *CarouselIndicatorLines) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
142+
143+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
144+
145+}
146+
147+// Updates an array of accessible properties.
148+//
149+// This function should be called by `GtkWidget` types whenever an accessible
150+// property change must be communicated to assistive technologies.
151+//
152+// This function is meant to be used by language bindings.
153+func (x *CarouselIndicatorLines) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
154+
155+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
156+
157+}
158+
159+// Updates a list of accessible relations.
160+//
161+// This function should be called by `GtkWidget` types whenever an accessible
162+// relation change must be communicated to assistive technologies.
163+//
164+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
165+// you should pass each reference individually, followed by %NULL, e.g.
166+//
167+// ```c
168+// gtk_accessible_update_relation (accessible,
169+//
170+// GTK_ACCESSIBLE_RELATION_CONTROLS,
171+// ref1, NULL,
172+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
173+// ref1, ref2, ref3, NULL,
174+// -1);
175+//
176+// ```
177+func (x *CarouselIndicatorLines) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
178+
179+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
180+
181+}
182+
183+// Updates an array of accessible relations.
184+//
185+// This function should be called by `GtkWidget` types whenever an accessible
186+// relation change must be communicated to assistive technologies.
187+//
188+// This function is meant to be used by language bindings.
189+func (x *CarouselIndicatorLines) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
190+
191+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
192+
193+}
194+
195+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
196+// documentation for the value types of accessible states.
197+//
198+// This function should be called by `GtkWidget` types whenever an accessible
199+// state change must be communicated to assistive technologies.
200+//
201+// Example:
202+// ```c
203+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
204+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
205+//
206+// GTK_ACCESSIBLE_STATE_CHECKED, value,
207+// -1);
208+//
209+// ```
210+func (x *CarouselIndicatorLines) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
211+
212+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
213+
214+}
215+
216+// Updates an array of accessible states.
217+//
218+// This function should be called by `GtkWidget` types whenever an accessible
219+// state change must be communicated to assistive technologies.
220+//
221+// This function is meant to be used by language bindings.
222+func (x *CarouselIndicatorLines) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
223+
224+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
225+
226+}
227+
228+// Gets the ID of the @buildable object.
229+//
230+// `GtkBuilder` sets the name based on the ID attribute
231+// of the &lt;object&gt; tag used to construct the @buildable.
232+func (x *CarouselIndicatorLines) GetBuildableId() string {
233+
234+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
235+
236+}
237+
238+// Retrieves the orientation of the @orientable.
239+func (x *CarouselIndicatorLines) GetOrientation() gtk.Orientation {
240+
241+ return gtk.XGtkOrientableGetOrientation(x.GoPointer())
242+
243+}
244+
245+// Sets the orientation of the @orientable.
246+func (x *CarouselIndicatorLines) SetOrientation(OrientationVar gtk.Orientation) {
247+
248+ gtk.XGtkOrientableSetOrientation(x.GoPointer(), OrientationVar)
249+
250+}
251+
252+func init() {
253+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
254+ if err != nil {
255+ panic(err)
256+ }
257+
258+ core.PuregoSafeRegister(&xNewCarouselIndicatorLines, lib, "adw_carousel_indicator_lines_new")
259+
260+ core.PuregoSafeRegister(&xCarouselIndicatorLinesGetCarousel, lib, "adw_carousel_indicator_lines_get_carousel")
261+ core.PuregoSafeRegister(&xCarouselIndicatorLinesSetCarousel, lib, "adw_carousel_indicator_lines_set_carousel")
262+
263+}
A v4/adw/adw-carousel.go +565 -0
@@ -0,0 +1,565 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gdk"
8+ "github.com/jwijenbergh/puregotk/v4/gobject"
9+ "github.com/jwijenbergh/puregotk/v4/gtk"
10+)
11+
12+type CarouselClass struct {
13+ ParentClass uintptr
14+}
15+
16+// A paginated scrolling widget.
17+//
18+// &lt;picture&gt;
19+//
20+// &lt;source srcset="carousel-dark.png" media="(prefers-color-scheme: dark)"&gt;
21+// &lt;img src="carousel.png" alt="carousel"&gt;
22+//
23+// &lt;/picture&gt;
24+//
25+// The `AdwCarousel` widget can be used to display a set of pages with
26+// swipe-based navigation between them.
27+//
28+// [class@CarouselIndicatorDots] and [class@CarouselIndicatorLines] can be used
29+// to provide page indicators for `AdwCarousel`.
30+//
31+// ## CSS nodes
32+//
33+// `AdwCarousel` has a single CSS node with name `carousel`.
34+type Carousel struct {
35+ gtk.Widget
36+}
37+
38+func CarouselNewFromInternalPtr(ptr uintptr) *Carousel {
39+ cls := &Carousel{}
40+ cls.Ptr = ptr
41+ return cls
42+}
43+
44+var xNewCarousel func() uintptr
45+
46+// Creates a new `AdwCarousel`.
47+func NewCarousel() *gtk.Widget {
48+ NewCarouselPtr := xNewCarousel()
49+ if NewCarouselPtr == 0 {
50+ return nil
51+ }
52+
53+ gobject.IncreaseRef(NewCarouselPtr)
54+
55+ NewCarouselCls := &gtk.Widget{}
56+ NewCarouselCls.Ptr = NewCarouselPtr
57+ return NewCarouselCls
58+}
59+
60+var xCarouselAppend func(uintptr, uintptr)
61+
62+// Appends @child to @self.
63+func (x *Carousel) Append(ChildVar *gtk.Widget) {
64+
65+ xCarouselAppend(x.GoPointer(), ChildVar.GoPointer())
66+
67+}
68+
69+var xCarouselGetAllowLongSwipes func(uintptr) bool
70+
71+// Gets whether to allow swiping for more than one page at a time.
72+func (x *Carousel) GetAllowLongSwipes() bool {
73+
74+ return xCarouselGetAllowLongSwipes(x.GoPointer())
75+
76+}
77+
78+var xCarouselGetAllowMouseDrag func(uintptr) bool
79+
80+// Sets whether @self can be dragged with mouse pointer.
81+func (x *Carousel) GetAllowMouseDrag() bool {
82+
83+ return xCarouselGetAllowMouseDrag(x.GoPointer())
84+
85+}
86+
87+var xCarouselGetAllowScrollWheel func(uintptr) bool
88+
89+// Gets whether @self will respond to scroll wheel events.
90+func (x *Carousel) GetAllowScrollWheel() bool {
91+
92+ return xCarouselGetAllowScrollWheel(x.GoPointer())
93+
94+}
95+
96+var xCarouselGetInteractive func(uintptr) bool
97+
98+// Gets whether @self can be navigated.
99+func (x *Carousel) GetInteractive() bool {
100+
101+ return xCarouselGetInteractive(x.GoPointer())
102+
103+}
104+
105+var xCarouselGetNPages func(uintptr) uint
106+
107+// Gets the number of pages in @self.
108+func (x *Carousel) GetNPages() uint {
109+
110+ return xCarouselGetNPages(x.GoPointer())
111+
112+}
113+
114+var xCarouselGetNthPage func(uintptr, uint) uintptr
115+
116+// Gets the page at position @n.
117+func (x *Carousel) GetNthPage(NVar uint) *gtk.Widget {
118+
119+ GetNthPagePtr := xCarouselGetNthPage(x.GoPointer(), NVar)
120+ if GetNthPagePtr == 0 {
121+ return nil
122+ }
123+
124+ gobject.IncreaseRef(GetNthPagePtr)
125+
126+ GetNthPageCls := &gtk.Widget{}
127+ GetNthPageCls.Ptr = GetNthPagePtr
128+ return GetNthPageCls
129+
130+}
131+
132+var xCarouselGetPosition func(uintptr) float64
133+
134+// Gets current scroll position in @self, unitless.
135+//
136+// 1 matches 1 page. Use [method@Carousel.scroll_to] for changing it.
137+func (x *Carousel) GetPosition() float64 {
138+
139+ return xCarouselGetPosition(x.GoPointer())
140+
141+}
142+
143+var xCarouselGetRevealDuration func(uintptr) uint
144+
145+// Gets the page reveal duration, in milliseconds.
146+func (x *Carousel) GetRevealDuration() uint {
147+
148+ return xCarouselGetRevealDuration(x.GoPointer())
149+
150+}
151+
152+var xCarouselGetScrollParams func(uintptr) *SpringParams
153+
154+// Gets the scroll animation spring parameters for @self.
155+func (x *Carousel) GetScrollParams() *SpringParams {
156+
157+ return xCarouselGetScrollParams(x.GoPointer())
158+
159+}
160+
161+var xCarouselGetSpacing func(uintptr) uint
162+
163+// Gets spacing between pages in pixels.
164+func (x *Carousel) GetSpacing() uint {
165+
166+ return xCarouselGetSpacing(x.GoPointer())
167+
168+}
169+
170+var xCarouselInsert func(uintptr, uintptr, int32)
171+
172+// Inserts @child into @self at position @position.
173+//
174+// If position is -1, or larger than the number of pages,
175+// @child will be appended to the end.
176+func (x *Carousel) Insert(ChildVar *gtk.Widget, PositionVar int32) {
177+
178+ xCarouselInsert(x.GoPointer(), ChildVar.GoPointer(), PositionVar)
179+
180+}
181+
182+var xCarouselPrepend func(uintptr, uintptr)
183+
184+// Prepends @child to @self.
185+func (x *Carousel) Prepend(ChildVar *gtk.Widget) {
186+
187+ xCarouselPrepend(x.GoPointer(), ChildVar.GoPointer())
188+
189+}
190+
191+var xCarouselRemove func(uintptr, uintptr)
192+
193+// Removes @child from @self.
194+func (x *Carousel) Remove(ChildVar *gtk.Widget) {
195+
196+ xCarouselRemove(x.GoPointer(), ChildVar.GoPointer())
197+
198+}
199+
200+var xCarouselReorder func(uintptr, uintptr, int32)
201+
202+// Moves @child into position @position.
203+//
204+// If position is -1, or larger than the number of pages, @child will be moved
205+// at the end.
206+func (x *Carousel) Reorder(ChildVar *gtk.Widget, PositionVar int32) {
207+
208+ xCarouselReorder(x.GoPointer(), ChildVar.GoPointer(), PositionVar)
209+
210+}
211+
212+var xCarouselScrollTo func(uintptr, uintptr, bool)
213+
214+// Scrolls to @widget.
215+//
216+// If @animate is `TRUE`, the transition will be animated.
217+func (x *Carousel) ScrollTo(WidgetVar *gtk.Widget, AnimateVar bool) {
218+
219+ xCarouselScrollTo(x.GoPointer(), WidgetVar.GoPointer(), AnimateVar)
220+
221+}
222+
223+var xCarouselSetAllowLongSwipes func(uintptr, bool)
224+
225+// Sets whether to allow swiping for more than one page at a time.
226+//
227+// If @allow_long_swipes is `FALSE`, each swipe can only move to the adjacent
228+// pages.
229+func (x *Carousel) SetAllowLongSwipes(AllowLongSwipesVar bool) {
230+
231+ xCarouselSetAllowLongSwipes(x.GoPointer(), AllowLongSwipesVar)
232+
233+}
234+
235+var xCarouselSetAllowMouseDrag func(uintptr, bool)
236+
237+// Sets whether @self can be dragged with mouse pointer.
238+//
239+// If @allow_mouse_drag is `FALSE`, dragging is only available on touch.
240+func (x *Carousel) SetAllowMouseDrag(AllowMouseDragVar bool) {
241+
242+ xCarouselSetAllowMouseDrag(x.GoPointer(), AllowMouseDragVar)
243+
244+}
245+
246+var xCarouselSetAllowScrollWheel func(uintptr, bool)
247+
248+// Sets whether @self will respond to scroll wheel events.
249+//
250+// If @allow_scroll_wheel is `FALSE`, wheel events will be ignored.
251+func (x *Carousel) SetAllowScrollWheel(AllowScrollWheelVar bool) {
252+
253+ xCarouselSetAllowScrollWheel(x.GoPointer(), AllowScrollWheelVar)
254+
255+}
256+
257+var xCarouselSetInteractive func(uintptr, bool)
258+
259+// Sets whether @self can be navigated.
260+//
261+// This can be used to temporarily disable the carousel to only allow navigating
262+// it in a certain state.
263+func (x *Carousel) SetInteractive(InteractiveVar bool) {
264+
265+ xCarouselSetInteractive(x.GoPointer(), InteractiveVar)
266+
267+}
268+
269+var xCarouselSetRevealDuration func(uintptr, uint)
270+
271+// Sets the page reveal duration, in milliseconds.
272+//
273+// Reveal duration is used when animating adding or removing pages.
274+func (x *Carousel) SetRevealDuration(RevealDurationVar uint) {
275+
276+ xCarouselSetRevealDuration(x.GoPointer(), RevealDurationVar)
277+
278+}
279+
280+var xCarouselSetScrollParams func(uintptr, *SpringParams)
281+
282+// Sets the scroll animation spring parameters for @self.
283+//
284+// The default value is equivalent to:
285+//
286+// ```c
287+// adw_spring_params_new (1, 0.5, 500)
288+// ```
289+func (x *Carousel) SetScrollParams(ParamsVar *SpringParams) {
290+
291+ xCarouselSetScrollParams(x.GoPointer(), ParamsVar)
292+
293+}
294+
295+var xCarouselSetSpacing func(uintptr, uint)
296+
297+// Sets spacing between pages in pixels.
298+func (x *Carousel) SetSpacing(SpacingVar uint) {
299+
300+ xCarouselSetSpacing(x.GoPointer(), SpacingVar)
301+
302+}
303+
304+func (c *Carousel) GoPointer() uintptr {
305+ return c.Ptr
306+}
307+
308+func (c *Carousel) SetGoPointer(ptr uintptr) {
309+ c.Ptr = ptr
310+}
311+
312+// This signal is emitted after a page has been changed.
313+//
314+// It can be used to implement "infinite scrolling" by amending the pages
315+// after every scroll. Note that an empty carousel is indicated by
316+// `(int)index == -1`.
317+func (x *Carousel) ConnectPageChanged(cb func(Carousel, uint)) {
318+ fcb := func(clsPtr uintptr, IndexVarp uint) {
319+ fa := Carousel{}
320+ fa.Ptr = clsPtr
321+
322+ cb(fa, IndexVarp)
323+
324+ }
325+ gobject.ObjectConnect(x.GoPointer(), "signal::page-changed", purego.NewCallback(fcb))
326+}
327+
328+// Gets the progress @self will snap back to after the gesture is canceled.
329+func (x *Carousel) GetCancelProgress() float64 {
330+
331+ return XAdwSwipeableGetCancelProgress(x.GoPointer())
332+
333+}
334+
335+// Gets the swipe distance of @self.
336+//
337+// This corresponds to how many pixels 1 unit represents.
338+func (x *Carousel) GetDistance() float64 {
339+
340+ return XAdwSwipeableGetDistance(x.GoPointer())
341+
342+}
343+
344+// Gets the current progress of @self.
345+func (x *Carousel) GetProgress() float64 {
346+
347+ return XAdwSwipeableGetProgress(x.GoPointer())
348+
349+}
350+
351+// Gets the snap points of @self.
352+//
353+// Each snap point represents a progress value that is considered acceptable to
354+// end the swipe on.
355+func (x *Carousel) GetSnapPoints(NSnapPointsVar int32) uintptr {
356+
357+ return XAdwSwipeableGetSnapPoints(x.GoPointer(), NSnapPointsVar)
358+
359+}
360+
361+// Gets the area @self can start a swipe from for the given direction and
362+// gesture type.
363+//
364+// This can be used to restrict swipes to only be possible from a certain area,
365+// for example, to only allow edge swipes, or to have a draggable element and
366+// ignore swipes elsewhere.
367+//
368+// If not implemented, the default implementation returns the allocation of
369+// @self, allowing swipes from anywhere.
370+func (x *Carousel) GetSwipeArea(NavigationDirectionVar NavigationDirection, IsDragVar bool, RectVar *gdk.Rectangle) {
371+
372+ XAdwSwipeableGetSwipeArea(x.GoPointer(), NavigationDirectionVar, IsDragVar, RectVar)
373+
374+}
375+
376+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
377+func (x *Carousel) GetAccessibleRole() gtk.AccessibleRole {
378+
379+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
380+
381+}
382+
383+// Resets the accessible @property to its default value.
384+func (x *Carousel) ResetProperty(PropertyVar gtk.AccessibleProperty) {
385+
386+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
387+
388+}
389+
390+// Resets the accessible @relation to its default value.
391+func (x *Carousel) ResetRelation(RelationVar gtk.AccessibleRelation) {
392+
393+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
394+
395+}
396+
397+// Resets the accessible @state to its default value.
398+func (x *Carousel) ResetState(StateVar gtk.AccessibleState) {
399+
400+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
401+
402+}
403+
404+// Updates a list of accessible properties.
405+//
406+// See the [enum@Gtk.AccessibleProperty] documentation for the
407+// value types of accessible properties.
408+//
409+// This function should be called by `GtkWidget` types whenever
410+// an accessible property change must be communicated to assistive
411+// technologies.
412+//
413+// Example:
414+// ```c
415+// value = gtk_adjustment_get_value (adjustment);
416+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
417+//
418+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
419+// -1);
420+//
421+// ```
422+func (x *Carousel) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
423+
424+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
425+
426+}
427+
428+// Updates an array of accessible properties.
429+//
430+// This function should be called by `GtkWidget` types whenever an accessible
431+// property change must be communicated to assistive technologies.
432+//
433+// This function is meant to be used by language bindings.
434+func (x *Carousel) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
435+
436+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
437+
438+}
439+
440+// Updates a list of accessible relations.
441+//
442+// This function should be called by `GtkWidget` types whenever an accessible
443+// relation change must be communicated to assistive technologies.
444+//
445+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
446+// you should pass each reference individually, followed by %NULL, e.g.
447+//
448+// ```c
449+// gtk_accessible_update_relation (accessible,
450+//
451+// GTK_ACCESSIBLE_RELATION_CONTROLS,
452+// ref1, NULL,
453+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
454+// ref1, ref2, ref3, NULL,
455+// -1);
456+//
457+// ```
458+func (x *Carousel) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
459+
460+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
461+
462+}
463+
464+// Updates an array of accessible relations.
465+//
466+// This function should be called by `GtkWidget` types whenever an accessible
467+// relation change must be communicated to assistive technologies.
468+//
469+// This function is meant to be used by language bindings.
470+func (x *Carousel) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
471+
472+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
473+
474+}
475+
476+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
477+// documentation for the value types of accessible states.
478+//
479+// This function should be called by `GtkWidget` types whenever an accessible
480+// state change must be communicated to assistive technologies.
481+//
482+// Example:
483+// ```c
484+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
485+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
486+//
487+// GTK_ACCESSIBLE_STATE_CHECKED, value,
488+// -1);
489+//
490+// ```
491+func (x *Carousel) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
492+
493+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
494+
495+}
496+
497+// Updates an array of accessible states.
498+//
499+// This function should be called by `GtkWidget` types whenever an accessible
500+// state change must be communicated to assistive technologies.
501+//
502+// This function is meant to be used by language bindings.
503+func (x *Carousel) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
504+
505+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
506+
507+}
508+
509+// Gets the ID of the @buildable object.
510+//
511+// `GtkBuilder` sets the name based on the ID attribute
512+// of the &lt;object&gt; tag used to construct the @buildable.
513+func (x *Carousel) GetBuildableId() string {
514+
515+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
516+
517+}
518+
519+// Retrieves the orientation of the @orientable.
520+func (x *Carousel) GetOrientation() gtk.Orientation {
521+
522+ return gtk.XGtkOrientableGetOrientation(x.GoPointer())
523+
524+}
525+
526+// Sets the orientation of the @orientable.
527+func (x *Carousel) SetOrientation(OrientationVar gtk.Orientation) {
528+
529+ gtk.XGtkOrientableSetOrientation(x.GoPointer(), OrientationVar)
530+
531+}
532+
533+func init() {
534+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
535+ if err != nil {
536+ panic(err)
537+ }
538+
539+ core.PuregoSafeRegister(&xNewCarousel, lib, "adw_carousel_new")
540+
541+ core.PuregoSafeRegister(&xCarouselAppend, lib, "adw_carousel_append")
542+ core.PuregoSafeRegister(&xCarouselGetAllowLongSwipes, lib, "adw_carousel_get_allow_long_swipes")
543+ core.PuregoSafeRegister(&xCarouselGetAllowMouseDrag, lib, "adw_carousel_get_allow_mouse_drag")
544+ core.PuregoSafeRegister(&xCarouselGetAllowScrollWheel, lib, "adw_carousel_get_allow_scroll_wheel")
545+ core.PuregoSafeRegister(&xCarouselGetInteractive, lib, "adw_carousel_get_interactive")
546+ core.PuregoSafeRegister(&xCarouselGetNPages, lib, "adw_carousel_get_n_pages")
547+ core.PuregoSafeRegister(&xCarouselGetNthPage, lib, "adw_carousel_get_nth_page")
548+ core.PuregoSafeRegister(&xCarouselGetPosition, lib, "adw_carousel_get_position")
549+ core.PuregoSafeRegister(&xCarouselGetRevealDuration, lib, "adw_carousel_get_reveal_duration")
550+ core.PuregoSafeRegister(&xCarouselGetScrollParams, lib, "adw_carousel_get_scroll_params")
551+ core.PuregoSafeRegister(&xCarouselGetSpacing, lib, "adw_carousel_get_spacing")
552+ core.PuregoSafeRegister(&xCarouselInsert, lib, "adw_carousel_insert")
553+ core.PuregoSafeRegister(&xCarouselPrepend, lib, "adw_carousel_prepend")
554+ core.PuregoSafeRegister(&xCarouselRemove, lib, "adw_carousel_remove")
555+ core.PuregoSafeRegister(&xCarouselReorder, lib, "adw_carousel_reorder")
556+ core.PuregoSafeRegister(&xCarouselScrollTo, lib, "adw_carousel_scroll_to")
557+ core.PuregoSafeRegister(&xCarouselSetAllowLongSwipes, lib, "adw_carousel_set_allow_long_swipes")
558+ core.PuregoSafeRegister(&xCarouselSetAllowMouseDrag, lib, "adw_carousel_set_allow_mouse_drag")
559+ core.PuregoSafeRegister(&xCarouselSetAllowScrollWheel, lib, "adw_carousel_set_allow_scroll_wheel")
560+ core.PuregoSafeRegister(&xCarouselSetInteractive, lib, "adw_carousel_set_interactive")
561+ core.PuregoSafeRegister(&xCarouselSetRevealDuration, lib, "adw_carousel_set_reveal_duration")
562+ core.PuregoSafeRegister(&xCarouselSetScrollParams, lib, "adw_carousel_set_scroll_params")
563+ core.PuregoSafeRegister(&xCarouselSetSpacing, lib, "adw_carousel_set_spacing")
564+
565+}
A v4/adw/adw-clamp-layout.go +150 -0
@@ -0,0 +1,150 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gtk"
8+)
9+
10+type ClampLayoutClass struct {
11+ ParentClass uintptr
12+}
13+
14+// A layout manager constraining its children to a given size.
15+//
16+// &lt;picture&gt;
17+//
18+// &lt;source srcset="clamp-wide-dark.png" media="(prefers-color-scheme: dark)"&gt;
19+// &lt;img src="clamp-wide.png" alt="clamp-wide"&gt;
20+//
21+// &lt;/picture&gt;
22+// &lt;picture&gt;
23+//
24+// &lt;source srcset="clamp-narrow-dark.png" media="(prefers-color-scheme: dark)"&gt;
25+// &lt;img src="clamp-narrow.png" alt="clamp-narrow"&gt;
26+//
27+// &lt;/picture&gt;
28+//
29+// `AdwClampLayout` constraints the size of the widgets it contains to a given
30+// maximum size. It will constrain the width if it is horizontal, or the height
31+// if it is vertical. The expansion of the children from their minimum to their
32+// maximum size is eased out for a smooth transition.
33+//
34+// If a child requires more than the requested maximum size, it will be
35+// allocated the minimum size it can fit in instead.
36+//
37+// Each child will get the style classes .large when it reached its maximum
38+// size, .small when it's allocated the full size, .medium in-between, or none
39+// if it hasn't been allocated yet.
40+type ClampLayout struct {
41+ gtk.LayoutManager
42+}
43+
44+func ClampLayoutNewFromInternalPtr(ptr uintptr) *ClampLayout {
45+ cls := &ClampLayout{}
46+ cls.Ptr = ptr
47+ return cls
48+}
49+
50+var xNewClampLayout func() uintptr
51+
52+// Creates a new `AdwClampLayout`.
53+func NewClampLayout() *gtk.LayoutManager {
54+ NewClampLayoutPtr := xNewClampLayout()
55+ if NewClampLayoutPtr == 0 {
56+ return nil
57+ }
58+
59+ NewClampLayoutCls := &gtk.LayoutManager{}
60+ NewClampLayoutCls.Ptr = NewClampLayoutPtr
61+ return NewClampLayoutCls
62+}
63+
64+var xClampLayoutGetMaximumSize func(uintptr) int32
65+
66+// Gets the maximum size allocated to the children.
67+func (x *ClampLayout) GetMaximumSize() int32 {
68+
69+ return xClampLayoutGetMaximumSize(x.GoPointer())
70+
71+}
72+
73+var xClampLayoutGetTighteningThreshold func(uintptr) int32
74+
75+// Gets the size above which the children are clamped.
76+func (x *ClampLayout) GetTighteningThreshold() int32 {
77+
78+ return xClampLayoutGetTighteningThreshold(x.GoPointer())
79+
80+}
81+
82+var xClampLayoutSetMaximumSize func(uintptr, int32)
83+
84+// Sets the maximum size allocated to the children.
85+//
86+// It is the width if the layout is horizontal, or the height if it is vertical.
87+func (x *ClampLayout) SetMaximumSize(MaximumSizeVar int32) {
88+
89+ xClampLayoutSetMaximumSize(x.GoPointer(), MaximumSizeVar)
90+
91+}
92+
93+var xClampLayoutSetTighteningThreshold func(uintptr, int32)
94+
95+// Sets the size above which the children are clamped.
96+//
97+// Starting from this size, the layout will tighten its grip on the children,
98+// slowly allocating less and less of the available size up to the maximum
99+// allocated size. Below that threshold and below the maximum size, the children
100+// will be allocated all the available size.
101+//
102+// If the threshold is greater than the maximum size to allocate to the
103+// children, they will be allocated the whole size up to the maximum. If the
104+// threshold is lower than the minimum size to allocate to the children, that
105+// size will be used as the tightening threshold.
106+//
107+// Effectively, tightening the grip on a child before it reaches its maximum
108+// size makes transitions to and from the maximum size smoother when resizing.
109+func (x *ClampLayout) SetTighteningThreshold(TighteningThresholdVar int32) {
110+
111+ xClampLayoutSetTighteningThreshold(x.GoPointer(), TighteningThresholdVar)
112+
113+}
114+
115+func (c *ClampLayout) GoPointer() uintptr {
116+ return c.Ptr
117+}
118+
119+func (c *ClampLayout) SetGoPointer(ptr uintptr) {
120+ c.Ptr = ptr
121+}
122+
123+// Retrieves the orientation of the @orientable.
124+func (x *ClampLayout) GetOrientation() gtk.Orientation {
125+
126+ return gtk.XGtkOrientableGetOrientation(x.GoPointer())
127+
128+}
129+
130+// Sets the orientation of the @orientable.
131+func (x *ClampLayout) SetOrientation(OrientationVar gtk.Orientation) {
132+
133+ gtk.XGtkOrientableSetOrientation(x.GoPointer(), OrientationVar)
134+
135+}
136+
137+func init() {
138+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
139+ if err != nil {
140+ panic(err)
141+ }
142+
143+ core.PuregoSafeRegister(&xNewClampLayout, lib, "adw_clamp_layout_new")
144+
145+ core.PuregoSafeRegister(&xClampLayoutGetMaximumSize, lib, "adw_clamp_layout_get_maximum_size")
146+ core.PuregoSafeRegister(&xClampLayoutGetTighteningThreshold, lib, "adw_clamp_layout_get_tightening_threshold")
147+ core.PuregoSafeRegister(&xClampLayoutSetMaximumSize, lib, "adw_clamp_layout_set_maximum_size")
148+ core.PuregoSafeRegister(&xClampLayoutSetTighteningThreshold, lib, "adw_clamp_layout_set_tightening_threshold")
149+
150+}
A v4/adw/adw-clamp-scrollable.go +398 -0
@@ -0,0 +1,398 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gobject"
8+ "github.com/jwijenbergh/puregotk/v4/gtk"
9+)
10+
11+type ClampScrollableClass struct {
12+ ParentClass uintptr
13+}
14+
15+// A scrollable [class@Clamp].
16+//
17+// `AdwClampScrollable` is a variant of [class@Clamp] that implements the
18+// [iface@Gtk.Scrollable] interface.
19+//
20+// The primary use case for `AdwClampScrollable` is clamping
21+// [class@Gtk.ListView].
22+type ClampScrollable struct {
23+ gtk.Widget
24+}
25+
26+func ClampScrollableNewFromInternalPtr(ptr uintptr) *ClampScrollable {
27+ cls := &ClampScrollable{}
28+ cls.Ptr = ptr
29+ return cls
30+}
31+
32+var xNewClampScrollable func() uintptr
33+
34+// Creates a new `AdwClampScrollable`.
35+func NewClampScrollable() *gtk.Widget {
36+ NewClampScrollablePtr := xNewClampScrollable()
37+ if NewClampScrollablePtr == 0 {
38+ return nil
39+ }
40+
41+ gobject.IncreaseRef(NewClampScrollablePtr)
42+
43+ NewClampScrollableCls := &gtk.Widget{}
44+ NewClampScrollableCls.Ptr = NewClampScrollablePtr
45+ return NewClampScrollableCls
46+}
47+
48+var xClampScrollableGetChild func(uintptr) uintptr
49+
50+// Gets the child widget of @self.
51+func (x *ClampScrollable) GetChild() *gtk.Widget {
52+
53+ GetChildPtr := xClampScrollableGetChild(x.GoPointer())
54+ if GetChildPtr == 0 {
55+ return nil
56+ }
57+
58+ gobject.IncreaseRef(GetChildPtr)
59+
60+ GetChildCls := &gtk.Widget{}
61+ GetChildCls.Ptr = GetChildPtr
62+ return GetChildCls
63+
64+}
65+
66+var xClampScrollableGetMaximumSize func(uintptr) int32
67+
68+// Gets the maximum size allocated to the child.
69+func (x *ClampScrollable) GetMaximumSize() int32 {
70+
71+ return xClampScrollableGetMaximumSize(x.GoPointer())
72+
73+}
74+
75+var xClampScrollableGetTighteningThreshold func(uintptr) int32
76+
77+// Gets the size above which the child is clamped.
78+func (x *ClampScrollable) GetTighteningThreshold() int32 {
79+
80+ return xClampScrollableGetTighteningThreshold(x.GoPointer())
81+
82+}
83+
84+var xClampScrollableSetChild func(uintptr, uintptr)
85+
86+// Sets the child widget of @self.
87+func (x *ClampScrollable) SetChild(ChildVar *gtk.Widget) {
88+
89+ xClampScrollableSetChild(x.GoPointer(), ChildVar.GoPointer())
90+
91+}
92+
93+var xClampScrollableSetMaximumSize func(uintptr, int32)
94+
95+// Sets the maximum size allocated to the child.
96+//
97+// It is the width if the clamp is horizontal, or the height if it is vertical.
98+func (x *ClampScrollable) SetMaximumSize(MaximumSizeVar int32) {
99+
100+ xClampScrollableSetMaximumSize(x.GoPointer(), MaximumSizeVar)
101+
102+}
103+
104+var xClampScrollableSetTighteningThreshold func(uintptr, int32)
105+
106+// Sets the size above which the child is clamped.
107+//
108+// Starting from this size, the clamp will tighten its grip on the child, slowly
109+// allocating less and less of the available size up to the maximum allocated
110+// size. Below that threshold and below the maximum width, the child will be
111+// allocated all the available size.
112+//
113+// If the threshold is greater than the maximum size to allocate to the child,
114+// the child will be allocated all the width up to the maximum. If the threshold
115+// is lower than the minimum size to allocate to the child, that size will be
116+// used as the tightening threshold.
117+//
118+// Effectively, tightening the grip on the child before it reaches its maximum
119+// size makes transitions to and from the maximum size smoother when resizing.
120+func (x *ClampScrollable) SetTighteningThreshold(TighteningThresholdVar int32) {
121+
122+ xClampScrollableSetTighteningThreshold(x.GoPointer(), TighteningThresholdVar)
123+
124+}
125+
126+func (c *ClampScrollable) GoPointer() uintptr {
127+ return c.Ptr
128+}
129+
130+func (c *ClampScrollable) SetGoPointer(ptr uintptr) {
131+ c.Ptr = ptr
132+}
133+
134+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
135+func (x *ClampScrollable) GetAccessibleRole() gtk.AccessibleRole {
136+
137+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
138+
139+}
140+
141+// Resets the accessible @property to its default value.
142+func (x *ClampScrollable) ResetProperty(PropertyVar gtk.AccessibleProperty) {
143+
144+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
145+
146+}
147+
148+// Resets the accessible @relation to its default value.
149+func (x *ClampScrollable) ResetRelation(RelationVar gtk.AccessibleRelation) {
150+
151+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
152+
153+}
154+
155+// Resets the accessible @state to its default value.
156+func (x *ClampScrollable) ResetState(StateVar gtk.AccessibleState) {
157+
158+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
159+
160+}
161+
162+// Updates a list of accessible properties.
163+//
164+// See the [enum@Gtk.AccessibleProperty] documentation for the
165+// value types of accessible properties.
166+//
167+// This function should be called by `GtkWidget` types whenever
168+// an accessible property change must be communicated to assistive
169+// technologies.
170+//
171+// Example:
172+// ```c
173+// value = gtk_adjustment_get_value (adjustment);
174+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
175+//
176+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
177+// -1);
178+//
179+// ```
180+func (x *ClampScrollable) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
181+
182+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
183+
184+}
185+
186+// Updates an array of accessible properties.
187+//
188+// This function should be called by `GtkWidget` types whenever an accessible
189+// property change must be communicated to assistive technologies.
190+//
191+// This function is meant to be used by language bindings.
192+func (x *ClampScrollable) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
193+
194+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
195+
196+}
197+
198+// Updates a list of accessible relations.
199+//
200+// This function should be called by `GtkWidget` types whenever an accessible
201+// relation change must be communicated to assistive technologies.
202+//
203+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
204+// you should pass each reference individually, followed by %NULL, e.g.
205+//
206+// ```c
207+// gtk_accessible_update_relation (accessible,
208+//
209+// GTK_ACCESSIBLE_RELATION_CONTROLS,
210+// ref1, NULL,
211+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
212+// ref1, ref2, ref3, NULL,
213+// -1);
214+//
215+// ```
216+func (x *ClampScrollable) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
217+
218+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
219+
220+}
221+
222+// Updates an array of accessible relations.
223+//
224+// This function should be called by `GtkWidget` types whenever an accessible
225+// relation change must be communicated to assistive technologies.
226+//
227+// This function is meant to be used by language bindings.
228+func (x *ClampScrollable) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
229+
230+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
231+
232+}
233+
234+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
235+// documentation for the value types of accessible states.
236+//
237+// This function should be called by `GtkWidget` types whenever an accessible
238+// state change must be communicated to assistive technologies.
239+//
240+// Example:
241+// ```c
242+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
243+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
244+//
245+// GTK_ACCESSIBLE_STATE_CHECKED, value,
246+// -1);
247+//
248+// ```
249+func (x *ClampScrollable) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
250+
251+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
252+
253+}
254+
255+// Updates an array of accessible states.
256+//
257+// This function should be called by `GtkWidget` types whenever an accessible
258+// state change must be communicated to assistive technologies.
259+//
260+// This function is meant to be used by language bindings.
261+func (x *ClampScrollable) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
262+
263+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
264+
265+}
266+
267+// Gets the ID of the @buildable object.
268+//
269+// `GtkBuilder` sets the name based on the ID attribute
270+// of the &lt;object&gt; tag used to construct the @buildable.
271+func (x *ClampScrollable) GetBuildableId() string {
272+
273+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
274+
275+}
276+
277+// Retrieves the orientation of the @orientable.
278+func (x *ClampScrollable) GetOrientation() gtk.Orientation {
279+
280+ return gtk.XGtkOrientableGetOrientation(x.GoPointer())
281+
282+}
283+
284+// Sets the orientation of the @orientable.
285+func (x *ClampScrollable) SetOrientation(OrientationVar gtk.Orientation) {
286+
287+ gtk.XGtkOrientableSetOrientation(x.GoPointer(), OrientationVar)
288+
289+}
290+
291+// Returns the size of a non-scrolling border around the
292+// outside of the scrollable.
293+//
294+// An example for this would be treeview headers. GTK can use
295+// this information to display overlaid graphics, like the
296+// overshoot indication, at the right position.
297+func (x *ClampScrollable) GetBorder(BorderVar *gtk.Border) bool {
298+
299+ return gtk.XGtkScrollableGetBorder(x.GoPointer(), BorderVar)
300+
301+}
302+
303+// Retrieves the `GtkAdjustment` used for horizontal scrolling.
304+func (x *ClampScrollable) GetHadjustment() *gtk.Adjustment {
305+
306+ GetHadjustmentPtr := gtk.XGtkScrollableGetHadjustment(x.GoPointer())
307+ if GetHadjustmentPtr == 0 {
308+ return nil
309+ }
310+
311+ gobject.IncreaseRef(GetHadjustmentPtr)
312+
313+ GetHadjustmentCls := &gtk.Adjustment{}
314+ GetHadjustmentCls.Ptr = GetHadjustmentPtr
315+ return GetHadjustmentCls
316+
317+}
318+
319+// Gets the horizontal `GtkScrollablePolicy`.
320+func (x *ClampScrollable) GetHscrollPolicy() gtk.ScrollablePolicy {
321+
322+ return gtk.XGtkScrollableGetHscrollPolicy(x.GoPointer())
323+
324+}
325+
326+// Retrieves the `GtkAdjustment` used for vertical scrolling.
327+func (x *ClampScrollable) GetVadjustment() *gtk.Adjustment {
328+
329+ GetVadjustmentPtr := gtk.XGtkScrollableGetVadjustment(x.GoPointer())
330+ if GetVadjustmentPtr == 0 {
331+ return nil
332+ }
333+
334+ gobject.IncreaseRef(GetVadjustmentPtr)
335+
336+ GetVadjustmentCls := &gtk.Adjustment{}
337+ GetVadjustmentCls.Ptr = GetVadjustmentPtr
338+ return GetVadjustmentCls
339+
340+}
341+
342+// Gets the vertical `GtkScrollablePolicy`.
343+func (x *ClampScrollable) GetVscrollPolicy() gtk.ScrollablePolicy {
344+
345+ return gtk.XGtkScrollableGetVscrollPolicy(x.GoPointer())
346+
347+}
348+
349+// Sets the horizontal adjustment of the `GtkScrollable`.
350+func (x *ClampScrollable) SetHadjustment(HadjustmentVar *gtk.Adjustment) {
351+
352+ gtk.XGtkScrollableSetHadjustment(x.GoPointer(), HadjustmentVar.GoPointer())
353+
354+}
355+
356+// Sets the `GtkScrollablePolicy`.
357+//
358+// The policy determines whether horizontal scrolling should start
359+// below the minimum width or below the natural width.
360+func (x *ClampScrollable) SetHscrollPolicy(PolicyVar gtk.ScrollablePolicy) {
361+
362+ gtk.XGtkScrollableSetHscrollPolicy(x.GoPointer(), PolicyVar)
363+
364+}
365+
366+// Sets the vertical adjustment of the `GtkScrollable`.
367+func (x *ClampScrollable) SetVadjustment(VadjustmentVar *gtk.Adjustment) {
368+
369+ gtk.XGtkScrollableSetVadjustment(x.GoPointer(), VadjustmentVar.GoPointer())
370+
371+}
372+
373+// Sets the `GtkScrollablePolicy`.
374+//
375+// The policy determines whether vertical scrolling should start
376+// below the minimum height or below the natural height.
377+func (x *ClampScrollable) SetVscrollPolicy(PolicyVar gtk.ScrollablePolicy) {
378+
379+ gtk.XGtkScrollableSetVscrollPolicy(x.GoPointer(), PolicyVar)
380+
381+}
382+
383+func init() {
384+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
385+ if err != nil {
386+ panic(err)
387+ }
388+
389+ core.PuregoSafeRegister(&xNewClampScrollable, lib, "adw_clamp_scrollable_new")
390+
391+ core.PuregoSafeRegister(&xClampScrollableGetChild, lib, "adw_clamp_scrollable_get_child")
392+ core.PuregoSafeRegister(&xClampScrollableGetMaximumSize, lib, "adw_clamp_scrollable_get_maximum_size")
393+ core.PuregoSafeRegister(&xClampScrollableGetTighteningThreshold, lib, "adw_clamp_scrollable_get_tightening_threshold")
394+ core.PuregoSafeRegister(&xClampScrollableSetChild, lib, "adw_clamp_scrollable_set_child")
395+ core.PuregoSafeRegister(&xClampScrollableSetMaximumSize, lib, "adw_clamp_scrollable_set_maximum_size")
396+ core.PuregoSafeRegister(&xClampScrollableSetTighteningThreshold, lib, "adw_clamp_scrollable_set_tightening_threshold")
397+
398+}
A v4/adw/adw-clamp.go +329 -0
@@ -0,0 +1,329 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gobject"
8+ "github.com/jwijenbergh/puregotk/v4/gtk"
9+)
10+
11+type ClampClass struct {
12+ ParentClass uintptr
13+}
14+
15+// A widget constraining its child to a given size.
16+//
17+// &lt;picture&gt;
18+//
19+// &lt;source srcset="clamp-wide-dark.png" media="(prefers-color-scheme: dark)"&gt;
20+// &lt;img src="clamp-wide.png" alt="clamp-wide"&gt;
21+//
22+// &lt;/picture&gt;
23+// &lt;picture&gt;
24+//
25+// &lt;source srcset="clamp-narrow-dark.png" media="(prefers-color-scheme: dark)"&gt;
26+// &lt;img src="clamp-narrow.png" alt="clamp-narrow"&gt;
27+//
28+// &lt;/picture&gt;
29+//
30+// The `AdwClamp` widget constrains the size of the widget it contains to a
31+// given maximum size. It will constrain the width if it is horizontal, or the
32+// height if it is vertical. The expansion of the child from its minimum to its
33+// maximum size is eased out for a smooth transition.
34+//
35+// If the child requires more than the requested maximum size, it will be
36+// allocated the minimum size it can fit in instead.
37+//
38+// ## CSS nodes
39+//
40+// `AdwClamp` has a single CSS node with name `clamp`.
41+//
42+// Its children will receive the style classes `.large` when the child reached
43+// its maximum size, `.small` when the clamp allocates its full size to the
44+// child, `.medium` in-between, or none if it hasn't computed its size yet.
45+type Clamp struct {
46+ gtk.Widget
47+}
48+
49+func ClampNewFromInternalPtr(ptr uintptr) *Clamp {
50+ cls := &Clamp{}
51+ cls.Ptr = ptr
52+ return cls
53+}
54+
55+var xNewClamp func() uintptr
56+
57+// Creates a new `AdwClamp`.
58+func NewClamp() *gtk.Widget {
59+ NewClampPtr := xNewClamp()
60+ if NewClampPtr == 0 {
61+ return nil
62+ }
63+
64+ gobject.IncreaseRef(NewClampPtr)
65+
66+ NewClampCls := &gtk.Widget{}
67+ NewClampCls.Ptr = NewClampPtr
68+ return NewClampCls
69+}
70+
71+var xClampGetChild func(uintptr) uintptr
72+
73+// Gets the child widget of @self.
74+func (x *Clamp) GetChild() *gtk.Widget {
75+
76+ GetChildPtr := xClampGetChild(x.GoPointer())
77+ if GetChildPtr == 0 {
78+ return nil
79+ }
80+
81+ gobject.IncreaseRef(GetChildPtr)
82+
83+ GetChildCls := &gtk.Widget{}
84+ GetChildCls.Ptr = GetChildPtr
85+ return GetChildCls
86+
87+}
88+
89+var xClampGetMaximumSize func(uintptr) int32
90+
91+// Gets the maximum size allocated to the child.
92+func (x *Clamp) GetMaximumSize() int32 {
93+
94+ return xClampGetMaximumSize(x.GoPointer())
95+
96+}
97+
98+var xClampGetTighteningThreshold func(uintptr) int32
99+
100+// Gets the size above which the child is clamped.
101+func (x *Clamp) GetTighteningThreshold() int32 {
102+
103+ return xClampGetTighteningThreshold(x.GoPointer())
104+
105+}
106+
107+var xClampSetChild func(uintptr, uintptr)
108+
109+// Sets the child widget of @self.
110+func (x *Clamp) SetChild(ChildVar *gtk.Widget) {
111+
112+ xClampSetChild(x.GoPointer(), ChildVar.GoPointer())
113+
114+}
115+
116+var xClampSetMaximumSize func(uintptr, int32)
117+
118+// Sets the maximum size allocated to the child.
119+//
120+// It is the width if the clamp is horizontal, or the height if it is vertical.
121+func (x *Clamp) SetMaximumSize(MaximumSizeVar int32) {
122+
123+ xClampSetMaximumSize(x.GoPointer(), MaximumSizeVar)
124+
125+}
126+
127+var xClampSetTighteningThreshold func(uintptr, int32)
128+
129+// Sets the size above which the child is clamped.
130+//
131+// Starting from this size, the clamp will tighten its grip on the child, slowly
132+// allocating less and less of the available size up to the maximum allocated
133+// size. Below that threshold and below the maximum size, the child will be
134+// allocated all the available size.
135+//
136+// If the threshold is greater than the maximum size to allocate to the child,
137+// the child will be allocated all the size up to the maximum. If the threshold
138+// is lower than the minimum size to allocate to the child, that size will be
139+// used as the tightening threshold.
140+//
141+// Effectively, tightening the grip on the child before it reaches its maximum
142+// size makes transitions to and from the maximum size smoother when resizing.
143+func (x *Clamp) SetTighteningThreshold(TighteningThresholdVar int32) {
144+
145+ xClampSetTighteningThreshold(x.GoPointer(), TighteningThresholdVar)
146+
147+}
148+
149+func (c *Clamp) GoPointer() uintptr {
150+ return c.Ptr
151+}
152+
153+func (c *Clamp) SetGoPointer(ptr uintptr) {
154+ c.Ptr = ptr
155+}
156+
157+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
158+func (x *Clamp) GetAccessibleRole() gtk.AccessibleRole {
159+
160+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
161+
162+}
163+
164+// Resets the accessible @property to its default value.
165+func (x *Clamp) ResetProperty(PropertyVar gtk.AccessibleProperty) {
166+
167+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
168+
169+}
170+
171+// Resets the accessible @relation to its default value.
172+func (x *Clamp) ResetRelation(RelationVar gtk.AccessibleRelation) {
173+
174+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
175+
176+}
177+
178+// Resets the accessible @state to its default value.
179+func (x *Clamp) ResetState(StateVar gtk.AccessibleState) {
180+
181+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
182+
183+}
184+
185+// Updates a list of accessible properties.
186+//
187+// See the [enum@Gtk.AccessibleProperty] documentation for the
188+// value types of accessible properties.
189+//
190+// This function should be called by `GtkWidget` types whenever
191+// an accessible property change must be communicated to assistive
192+// technologies.
193+//
194+// Example:
195+// ```c
196+// value = gtk_adjustment_get_value (adjustment);
197+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
198+//
199+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
200+// -1);
201+//
202+// ```
203+func (x *Clamp) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
204+
205+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
206+
207+}
208+
209+// Updates an array of accessible properties.
210+//
211+// This function should be called by `GtkWidget` types whenever an accessible
212+// property change must be communicated to assistive technologies.
213+//
214+// This function is meant to be used by language bindings.
215+func (x *Clamp) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
216+
217+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
218+
219+}
220+
221+// Updates a list of accessible relations.
222+//
223+// This function should be called by `GtkWidget` types whenever an accessible
224+// relation change must be communicated to assistive technologies.
225+//
226+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
227+// you should pass each reference individually, followed by %NULL, e.g.
228+//
229+// ```c
230+// gtk_accessible_update_relation (accessible,
231+//
232+// GTK_ACCESSIBLE_RELATION_CONTROLS,
233+// ref1, NULL,
234+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
235+// ref1, ref2, ref3, NULL,
236+// -1);
237+//
238+// ```
239+func (x *Clamp) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
240+
241+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
242+
243+}
244+
245+// Updates an array of accessible relations.
246+//
247+// This function should be called by `GtkWidget` types whenever an accessible
248+// relation change must be communicated to assistive technologies.
249+//
250+// This function is meant to be used by language bindings.
251+func (x *Clamp) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
252+
253+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
254+
255+}
256+
257+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
258+// documentation for the value types of accessible states.
259+//
260+// This function should be called by `GtkWidget` types whenever an accessible
261+// state change must be communicated to assistive technologies.
262+//
263+// Example:
264+// ```c
265+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
266+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
267+//
268+// GTK_ACCESSIBLE_STATE_CHECKED, value,
269+// -1);
270+//
271+// ```
272+func (x *Clamp) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
273+
274+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
275+
276+}
277+
278+// Updates an array of accessible states.
279+//
280+// This function should be called by `GtkWidget` types whenever an accessible
281+// state change must be communicated to assistive technologies.
282+//
283+// This function is meant to be used by language bindings.
284+func (x *Clamp) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
285+
286+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
287+
288+}
289+
290+// Gets the ID of the @buildable object.
291+//
292+// `GtkBuilder` sets the name based on the ID attribute
293+// of the &lt;object&gt; tag used to construct the @buildable.
294+func (x *Clamp) GetBuildableId() string {
295+
296+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
297+
298+}
299+
300+// Retrieves the orientation of the @orientable.
301+func (x *Clamp) GetOrientation() gtk.Orientation {
302+
303+ return gtk.XGtkOrientableGetOrientation(x.GoPointer())
304+
305+}
306+
307+// Sets the orientation of the @orientable.
308+func (x *Clamp) SetOrientation(OrientationVar gtk.Orientation) {
309+
310+ gtk.XGtkOrientableSetOrientation(x.GoPointer(), OrientationVar)
311+
312+}
313+
314+func init() {
315+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
316+ if err != nil {
317+ panic(err)
318+ }
319+
320+ core.PuregoSafeRegister(&xNewClamp, lib, "adw_clamp_new")
321+
322+ core.PuregoSafeRegister(&xClampGetChild, lib, "adw_clamp_get_child")
323+ core.PuregoSafeRegister(&xClampGetMaximumSize, lib, "adw_clamp_get_maximum_size")
324+ core.PuregoSafeRegister(&xClampGetTighteningThreshold, lib, "adw_clamp_get_tightening_threshold")
325+ core.PuregoSafeRegister(&xClampSetChild, lib, "adw_clamp_set_child")
326+ core.PuregoSafeRegister(&xClampSetMaximumSize, lib, "adw_clamp_set_maximum_size")
327+ core.PuregoSafeRegister(&xClampSetTighteningThreshold, lib, "adw_clamp_set_tightening_threshold")
328+
329+}
A v4/adw/adw-combo-row.go +533 -0
@@ -0,0 +1,533 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gio"
8+ "github.com/jwijenbergh/puregotk/v4/glib"
9+ "github.com/jwijenbergh/puregotk/v4/gobject"
10+ "github.com/jwijenbergh/puregotk/v4/gtk"
11+)
12+
13+type ComboRowClass struct {
14+ ParentClass uintptr
15+
16+ Padding uintptr
17+}
18+
19+// A [class@Gtk.ListBoxRow] used to choose from a list of items.
20+//
21+// &lt;picture&gt;
22+//
23+// &lt;source srcset="combo-row-dark.png" media="(prefers-color-scheme: dark)"&gt;
24+// &lt;img src="combo-row.png" alt="combo-row"&gt;
25+//
26+// &lt;/picture&gt;
27+//
28+// The `AdwComboRow` widget allows the user to choose from a list of valid
29+// choices. The row displays the selected choice. When activated, the row
30+// displays a popover which allows the user to make a new choice.
31+//
32+// Example of an `AdwComboRow` UI definition:
33+// ```xml
34+// &lt;object class="AdwComboRow"&gt;
35+//
36+// &lt;property name="title" translatable="yes"&gt;Combo Row&lt;/property&gt;
37+// &lt;property name="model"&gt;
38+// &lt;object class="GtkStringList"&gt;
39+// &lt;items&gt;
40+// &lt;item translatable="yes"&gt;Foo&lt;/item&gt;
41+// &lt;item translatable="yes"&gt;Bar&lt;/item&gt;
42+// &lt;item translatable="yes"&gt;Baz&lt;/item&gt;
43+// &lt;/items&gt;
44+// &lt;/object&gt;
45+// &lt;/property&gt;
46+//
47+// &lt;/object&gt;
48+// ```
49+//
50+// The [property@ComboRow:selected] and [property@ComboRow:selected-item]
51+// properties can be used to keep track of the selected item and react to their
52+// changes.
53+//
54+// `AdwComboRow` mirrors [class@Gtk.DropDown], see that widget for details.
55+//
56+// `AdwComboRow` is [property@Gtk.ListBoxRow:activatable] if a model is set.
57+//
58+// ## CSS nodes
59+//
60+// `AdwComboRow` has a main CSS node with name `row` and the `.combo` style
61+// class.
62+//
63+// Its popover has the node named `popover` with the `.menu` style class, it
64+// contains a [class@Gtk.ScrolledWindow], which in turn contains a
65+// [class@Gtk.ListView], both are accessible via their regular nodes.
66+//
67+// ## Accessibility
68+//
69+// `AdwComboRow` uses the `GTK_ACCESSIBLE_ROLE_COMBO_BOX` role.
70+type ComboRow struct {
71+ ActionRow
72+}
73+
74+func ComboRowNewFromInternalPtr(ptr uintptr) *ComboRow {
75+ cls := &ComboRow{}
76+ cls.Ptr = ptr
77+ return cls
78+}
79+
80+var xNewComboRow func() uintptr
81+
82+// Creates a new `AdwComboRow`.
83+func NewComboRow() *gtk.Widget {
84+ NewComboRowPtr := xNewComboRow()
85+ if NewComboRowPtr == 0 {
86+ return nil
87+ }
88+
89+ gobject.IncreaseRef(NewComboRowPtr)
90+
91+ NewComboRowCls := &gtk.Widget{}
92+ NewComboRowCls.Ptr = NewComboRowPtr
93+ return NewComboRowCls
94+}
95+
96+var xComboRowGetExpression func(uintptr) uintptr
97+
98+// Gets the expression used to obtain strings from items.
99+func (x *ComboRow) GetExpression() *gtk.Expression {
100+
101+ GetExpressionPtr := xComboRowGetExpression(x.GoPointer())
102+ if GetExpressionPtr == 0 {
103+ return nil
104+ }
105+
106+ gobject.IncreaseRef(GetExpressionPtr)
107+
108+ GetExpressionCls := &gtk.Expression{}
109+ GetExpressionCls.Ptr = GetExpressionPtr
110+ return GetExpressionCls
111+
112+}
113+
114+var xComboRowGetFactory func(uintptr) uintptr
115+
116+// Gets the factory for populating list items.
117+func (x *ComboRow) GetFactory() *gtk.ListItemFactory {
118+
119+ GetFactoryPtr := xComboRowGetFactory(x.GoPointer())
120+ if GetFactoryPtr == 0 {
121+ return nil
122+ }
123+
124+ gobject.IncreaseRef(GetFactoryPtr)
125+
126+ GetFactoryCls := &gtk.ListItemFactory{}
127+ GetFactoryCls.Ptr = GetFactoryPtr
128+ return GetFactoryCls
129+
130+}
131+
132+var xComboRowGetListFactory func(uintptr) uintptr
133+
134+// Gets the factory for populating list items in the popup.
135+func (x *ComboRow) GetListFactory() *gtk.ListItemFactory {
136+
137+ GetListFactoryPtr := xComboRowGetListFactory(x.GoPointer())
138+ if GetListFactoryPtr == 0 {
139+ return nil
140+ }
141+
142+ gobject.IncreaseRef(GetListFactoryPtr)
143+
144+ GetListFactoryCls := &gtk.ListItemFactory{}
145+ GetListFactoryCls.Ptr = GetListFactoryPtr
146+ return GetListFactoryCls
147+
148+}
149+
150+var xComboRowGetModel func(uintptr) uintptr
151+
152+// Gets the model that provides the displayed items.
153+func (x *ComboRow) GetModel() *gio.ListModelBase {
154+
155+ GetModelPtr := xComboRowGetModel(x.GoPointer())
156+ if GetModelPtr == 0 {
157+ return nil
158+ }
159+
160+ gobject.IncreaseRef(GetModelPtr)
161+
162+ GetModelCls := &gio.ListModelBase{}
163+ GetModelCls.Ptr = GetModelPtr
164+ return GetModelCls
165+
166+}
167+
168+var xComboRowGetSelected func(uintptr) uint
169+
170+// Gets the position of the selected item.
171+func (x *ComboRow) GetSelected() uint {
172+
173+ return xComboRowGetSelected(x.GoPointer())
174+
175+}
176+
177+var xComboRowGetSelectedItem func(uintptr) uintptr
178+
179+// Gets the selected item.
180+func (x *ComboRow) GetSelectedItem() *gobject.Object {
181+
182+ GetSelectedItemPtr := xComboRowGetSelectedItem(x.GoPointer())
183+ if GetSelectedItemPtr == 0 {
184+ return nil
185+ }
186+
187+ gobject.IncreaseRef(GetSelectedItemPtr)
188+
189+ GetSelectedItemCls := &gobject.Object{}
190+ GetSelectedItemCls.Ptr = GetSelectedItemPtr
191+ return GetSelectedItemCls
192+
193+}
194+
195+var xComboRowGetUseSubtitle func(uintptr) bool
196+
197+// Gets whether to use the current value as the subtitle.
198+func (x *ComboRow) GetUseSubtitle() bool {
199+
200+ return xComboRowGetUseSubtitle(x.GoPointer())
201+
202+}
203+
204+var xComboRowSetExpression func(uintptr, uintptr)
205+
206+// Sets the expression used to obtain strings from items.
207+//
208+// The expression must have a value type of `G_TYPE_STRING`.
209+//
210+// It's used to bind strings to labels produced by the default factory if
211+// [property@ComboRow:factory] is not set, or when
212+// [property@ComboRow:use-subtitle] is set to `TRUE`.
213+func (x *ComboRow) SetExpression(ExpressionVar *gtk.Expression) {
214+
215+ xComboRowSetExpression(x.GoPointer(), ExpressionVar.GoPointer())
216+
217+}
218+
219+var xComboRowSetFactory func(uintptr, uintptr)
220+
221+// Sets the factory for populating list items.
222+//
223+// This factory is always used for the item in the row. It is also used for
224+// items in the popup unless [property@ComboRow:list-factory] is set.
225+func (x *ComboRow) SetFactory(FactoryVar *gtk.ListItemFactory) {
226+
227+ xComboRowSetFactory(x.GoPointer(), FactoryVar.GoPointer())
228+
229+}
230+
231+var xComboRowSetListFactory func(uintptr, uintptr)
232+
233+// Sets the factory for populating list items in the popup.
234+//
235+// If this is not set, [property@ComboRow:factory] is used.
236+func (x *ComboRow) SetListFactory(FactoryVar *gtk.ListItemFactory) {
237+
238+ xComboRowSetListFactory(x.GoPointer(), FactoryVar.GoPointer())
239+
240+}
241+
242+var xComboRowSetModel func(uintptr, uintptr)
243+
244+// Sets the model that provides the displayed items.
245+func (x *ComboRow) SetModel(ModelVar gio.ListModel) {
246+
247+ xComboRowSetModel(x.GoPointer(), ModelVar.GoPointer())
248+
249+}
250+
251+var xComboRowSetSelected func(uintptr, uint)
252+
253+// Selects the item at the given position.
254+func (x *ComboRow) SetSelected(PositionVar uint) {
255+
256+ xComboRowSetSelected(x.GoPointer(), PositionVar)
257+
258+}
259+
260+var xComboRowSetUseSubtitle func(uintptr, bool)
261+
262+// Sets whether to use the current value as the subtitle.
263+//
264+// If you use a custom list item factory, you will need to give the row a
265+// name conversion expression with [property@ComboRow:expression].
266+//
267+// If set to `TRUE`, you should not access [property@ActionRow:subtitle].
268+//
269+// The subtitle is interpreted as Pango markup if
270+// [property@PreferencesRow:use-markup] is set to `TRUE`.
271+func (x *ComboRow) SetUseSubtitle(UseSubtitleVar bool) {
272+
273+ xComboRowSetUseSubtitle(x.GoPointer(), UseSubtitleVar)
274+
275+}
276+
277+func (c *ComboRow) GoPointer() uintptr {
278+ return c.Ptr
279+}
280+
281+func (c *ComboRow) SetGoPointer(ptr uintptr) {
282+ c.Ptr = ptr
283+}
284+
285+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
286+func (x *ComboRow) GetAccessibleRole() gtk.AccessibleRole {
287+
288+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
289+
290+}
291+
292+// Resets the accessible @property to its default value.
293+func (x *ComboRow) ResetProperty(PropertyVar gtk.AccessibleProperty) {
294+
295+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
296+
297+}
298+
299+// Resets the accessible @relation to its default value.
300+func (x *ComboRow) ResetRelation(RelationVar gtk.AccessibleRelation) {
301+
302+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
303+
304+}
305+
306+// Resets the accessible @state to its default value.
307+func (x *ComboRow) ResetState(StateVar gtk.AccessibleState) {
308+
309+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
310+
311+}
312+
313+// Updates a list of accessible properties.
314+//
315+// See the [enum@Gtk.AccessibleProperty] documentation for the
316+// value types of accessible properties.
317+//
318+// This function should be called by `GtkWidget` types whenever
319+// an accessible property change must be communicated to assistive
320+// technologies.
321+//
322+// Example:
323+// ```c
324+// value = gtk_adjustment_get_value (adjustment);
325+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
326+//
327+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
328+// -1);
329+//
330+// ```
331+func (x *ComboRow) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
332+
333+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
334+
335+}
336+
337+// Updates an array of accessible properties.
338+//
339+// This function should be called by `GtkWidget` types whenever an accessible
340+// property change must be communicated to assistive technologies.
341+//
342+// This function is meant to be used by language bindings.
343+func (x *ComboRow) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
344+
345+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
346+
347+}
348+
349+// Updates a list of accessible relations.
350+//
351+// This function should be called by `GtkWidget` types whenever an accessible
352+// relation change must be communicated to assistive technologies.
353+//
354+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
355+// you should pass each reference individually, followed by %NULL, e.g.
356+//
357+// ```c
358+// gtk_accessible_update_relation (accessible,
359+//
360+// GTK_ACCESSIBLE_RELATION_CONTROLS,
361+// ref1, NULL,
362+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
363+// ref1, ref2, ref3, NULL,
364+// -1);
365+//
366+// ```
367+func (x *ComboRow) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
368+
369+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
370+
371+}
372+
373+// Updates an array of accessible relations.
374+//
375+// This function should be called by `GtkWidget` types whenever an accessible
376+// relation change must be communicated to assistive technologies.
377+//
378+// This function is meant to be used by language bindings.
379+func (x *ComboRow) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
380+
381+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
382+
383+}
384+
385+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
386+// documentation for the value types of accessible states.
387+//
388+// This function should be called by `GtkWidget` types whenever an accessible
389+// state change must be communicated to assistive technologies.
390+//
391+// Example:
392+// ```c
393+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
394+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
395+//
396+// GTK_ACCESSIBLE_STATE_CHECKED, value,
397+// -1);
398+//
399+// ```
400+func (x *ComboRow) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
401+
402+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
403+
404+}
405+
406+// Updates an array of accessible states.
407+//
408+// This function should be called by `GtkWidget` types whenever an accessible
409+// state change must be communicated to assistive technologies.
410+//
411+// This function is meant to be used by language bindings.
412+func (x *ComboRow) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
413+
414+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
415+
416+}
417+
418+// Gets the action name for @actionable.
419+func (x *ComboRow) GetActionName() string {
420+
421+ return gtk.XGtkActionableGetActionName(x.GoPointer())
422+
423+}
424+
425+// Gets the current target value of @actionable.
426+func (x *ComboRow) GetActionTargetValue() *glib.Variant {
427+
428+ return gtk.XGtkActionableGetActionTargetValue(x.GoPointer())
429+
430+}
431+
432+// Specifies the name of the action with which this widget should be
433+// associated.
434+//
435+// If @action_name is %NULL then the widget will be unassociated from
436+// any previous action.
437+//
438+// Usually this function is used when the widget is located (or will be
439+// located) within the hierarchy of a `GtkApplicationWindow`.
440+//
441+// Names are of the form “win.save” or “app.quit” for actions on the
442+// containing [class@ApplicationWindow] or its associated [class@Application],
443+// respectively. This is the same form used for actions in the [class@Gio.Menu]
444+// associated with the window.
445+func (x *ComboRow) SetActionName(ActionNameVar string) {
446+
447+ gtk.XGtkActionableSetActionName(x.GoPointer(), ActionNameVar)
448+
449+}
450+
451+// Sets the target of an actionable widget.
452+//
453+// This is a convenience function that calls [ctor@GLib.Variant.new] for
454+// @format_string and uses the result to call
455+// [method@Gtk.Actionable.set_action_target_value].
456+//
457+// If you are setting a string-valued target and want to set
458+// the action name at the same time, you can use
459+// [method@Gtk.Actionable.set_detailed_action_name].
460+func (x *ComboRow) SetActionTarget(FormatStringVar string, varArgs ...interface{}) {
461+
462+ gtk.XGtkActionableSetActionTarget(x.GoPointer(), FormatStringVar, varArgs...)
463+
464+}
465+
466+// Sets the target value of an actionable widget.
467+//
468+// If @target_value is %NULL then the target value is unset.
469+//
470+// The target value has two purposes. First, it is used as the parameter
471+// to activation of the action associated with the `GtkActionable` widget.
472+// Second, it is used to determine if the widget should be rendered as
473+// “active” — the widget is active if the state is equal to the given target.
474+//
475+// Consider the example of associating a set of buttons with a [iface@Gio.Action]
476+// with string state in a typical “radio button” situation. Each button
477+// will be associated with the same action, but with a different target
478+// value for that action. Clicking on a particular button will activate
479+// the action with the target of that button, which will typically cause
480+// the action’s state to change to that value. Since the action’s state
481+// is now equal to the target value of the button, the button will now
482+// be rendered as active (and the other buttons, with different targets,
483+// rendered inactive).
484+func (x *ComboRow) SetActionTargetValue(TargetValueVar *glib.Variant) {
485+
486+ gtk.XGtkActionableSetActionTargetValue(x.GoPointer(), TargetValueVar)
487+
488+}
489+
490+// Sets the action-name and associated string target value of an
491+// actionable widget.
492+//
493+// @detailed_action_name is a string in the format accepted by
494+// [func@Gio.Action.parse_detailed_name].
495+func (x *ComboRow) SetDetailedActionName(DetailedActionNameVar string) {
496+
497+ gtk.XGtkActionableSetDetailedActionName(x.GoPointer(), DetailedActionNameVar)
498+
499+}
500+
501+// Gets the ID of the @buildable object.
502+//
503+// `GtkBuilder` sets the name based on the ID attribute
504+// of the &lt;object&gt; tag used to construct the @buildable.
505+func (x *ComboRow) GetBuildableId() string {
506+
507+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
508+
509+}
510+
511+func init() {
512+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
513+ if err != nil {
514+ panic(err)
515+ }
516+
517+ core.PuregoSafeRegister(&xNewComboRow, lib, "adw_combo_row_new")
518+
519+ core.PuregoSafeRegister(&xComboRowGetExpression, lib, "adw_combo_row_get_expression")
520+ core.PuregoSafeRegister(&xComboRowGetFactory, lib, "adw_combo_row_get_factory")
521+ core.PuregoSafeRegister(&xComboRowGetListFactory, lib, "adw_combo_row_get_list_factory")
522+ core.PuregoSafeRegister(&xComboRowGetModel, lib, "adw_combo_row_get_model")
523+ core.PuregoSafeRegister(&xComboRowGetSelected, lib, "adw_combo_row_get_selected")
524+ core.PuregoSafeRegister(&xComboRowGetSelectedItem, lib, "adw_combo_row_get_selected_item")
525+ core.PuregoSafeRegister(&xComboRowGetUseSubtitle, lib, "adw_combo_row_get_use_subtitle")
526+ core.PuregoSafeRegister(&xComboRowSetExpression, lib, "adw_combo_row_set_expression")
527+ core.PuregoSafeRegister(&xComboRowSetFactory, lib, "adw_combo_row_set_factory")
528+ core.PuregoSafeRegister(&xComboRowSetListFactory, lib, "adw_combo_row_set_list_factory")
529+ core.PuregoSafeRegister(&xComboRowSetModel, lib, "adw_combo_row_set_model")
530+ core.PuregoSafeRegister(&xComboRowSetSelected, lib, "adw_combo_row_set_selected")
531+ core.PuregoSafeRegister(&xComboRowSetUseSubtitle, lib, "adw_combo_row_set_use_subtitle")
532+
533+}
A v4/adw/adw-easing.go +114 -0
@@ -0,0 +1,114 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+)
8+
9+// Describes the available easing functions for use with
10+// [class@TimedAnimation].
11+//
12+// New values may be added to this enumeration over time.
13+type Easing int
14+
15+const (
16+
17+ // Linear tweening.
18+ LinearValue Easing = 0
19+ // Quadratic tweening.
20+ EaseInQuadValue Easing = 1
21+ // Quadratic tweening, inverse of `ADW_EASE_IN_QUAD`.
22+ EaseOutQuadValue Easing = 2
23+ // Quadratic tweening, combining `ADW_EASE_IN_QUAD` and
24+ // `ADW_EASE_OUT_QUAD`.
25+ EaseInOutQuadValue Easing = 3
26+ // Cubic tweening.
27+ EaseInCubicValue Easing = 4
28+ // Cubic tweening, inverse of `ADW_EASE_IN_CUBIC`.
29+ EaseOutCubicValue Easing = 5
30+ // Cubic tweening, combining `ADW_EASE_IN_CUBIC` and
31+ // `ADW_EASE_OUT_CUBIC`.
32+ EaseInOutCubicValue Easing = 6
33+ // Quartic tweening.
34+ EaseInQuartValue Easing = 7
35+ // Quartic tweening, inverse of `ADW_EASE_IN_QUART`.
36+ EaseOutQuartValue Easing = 8
37+ // Quartic tweening, combining `ADW_EASE_IN_QUART` and
38+ // `ADW_EASE_OUT_QUART`.
39+ EaseInOutQuartValue Easing = 9
40+ // Quintic tweening.
41+ EaseInQuintValue Easing = 10
42+ // Quintic tweening, inverse of `ADW_EASE_IN_QUINT`.
43+ EaseOutQuintValue Easing = 11
44+ // Quintic tweening, combining `ADW_EASE_IN_QUINT` and
45+ // `ADW_EASE_OUT_QUINT`.
46+ EaseInOutQuintValue Easing = 12
47+ // Sine wave tweening.
48+ EaseInSineValue Easing = 13
49+ // Sine wave tweening, inverse of `ADW_EASE_IN_SINE`.
50+ EaseOutSineValue Easing = 14
51+ // Sine wave tweening, combining `ADW_EASE_IN_SINE` and
52+ // `ADW_EASE_OUT_SINE`.
53+ EaseInOutSineValue Easing = 15
54+ // Exponential tweening.
55+ EaseInExpoValue Easing = 16
56+ // Exponential tweening, inverse of `ADW_EASE_IN_EXPO`.
57+ EaseOutExpoValue Easing = 17
58+ // Exponential tweening, combining `ADW_EASE_IN_EXPO` and
59+ // `ADW_EASE_OUT_EXPO`.
60+ EaseInOutExpoValue Easing = 18
61+ // Circular tweening.
62+ EaseInCircValue Easing = 19
63+ // Circular tweening, inverse of `ADW_EASE_IN_CIRC`.
64+ EaseOutCircValue Easing = 20
65+ // Circular tweening, combining `ADW_EASE_IN_CIRC` and
66+ // `ADW_EASE_OUT_CIRC`.
67+ EaseInOutCircValue Easing = 21
68+ // Elastic tweening, with offshoot on start.
69+ EaseInElasticValue Easing = 22
70+ // Elastic tweening, with offshoot on end, inverse of
71+ // `ADW_EASE_IN_ELASTIC`.
72+ EaseOutElasticValue Easing = 23
73+ // Elastic tweening, with offshoot on both ends,
74+ // combining `ADW_EASE_IN_ELASTIC` and `ADW_EASE_OUT_ELASTIC`.
75+ EaseInOutElasticValue Easing = 24
76+ // Overshooting cubic tweening, with backtracking on start.
77+ EaseInBackValue Easing = 25
78+ // Overshooting cubic tweening, with backtracking on end,
79+ // inverse of `ADW_EASE_IN_BACK`.
80+ EaseOutBackValue Easing = 26
81+ // Overshooting cubic tweening, with backtracking on both
82+ // ends, combining `ADW_EASE_IN_BACK` and `ADW_EASE_OUT_BACK`.
83+ EaseInOutBackValue Easing = 27
84+ // Exponentially decaying parabolic (bounce) tweening,
85+ // on start.
86+ EaseInBounceValue Easing = 28
87+ // Exponentially decaying parabolic (bounce) tweening,
88+ // with bounce on end, inverse of `ADW_EASE_IN_BOUNCE`.
89+ EaseOutBounceValue Easing = 29
90+ // Exponentially decaying parabolic (bounce) tweening,
91+ // with bounce on both ends, combining `ADW_EASE_IN_BOUNCE` and
92+ // `ADW_EASE_OUT_BOUNCE`.
93+ EaseInOutBounceValue Easing = 30
94+)
95+
96+var xEasingEase func(Easing, float64) float64
97+
98+// Computes easing with @easing for @value.
99+//
100+// @value should generally be in the [0, 1] range.
101+func EasingEase(SelfVar Easing, ValueVar float64) float64 {
102+
103+ return xEasingEase(SelfVar, ValueVar)
104+
105+}
106+
107+func init() {
108+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
109+ if err != nil {
110+ panic(err)
111+ }
112+ core.PuregoSafeRegister(&xEasingEase, lib, "adw_easing_ease")
113+
114+}
A v4/adw/adw-entry-row.go +772 -0
@@ -0,0 +1,772 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/glib"
8+ "github.com/jwijenbergh/puregotk/v4/gobject"
9+ "github.com/jwijenbergh/puregotk/v4/gtk"
10+ "github.com/jwijenbergh/puregotk/v4/pango"
11+)
12+
13+type EntryRowClass struct {
14+ ParentClass uintptr
15+}
16+
17+// A [class@Gtk.ListBoxRow] with an embedded text entry.
18+//
19+// &lt;picture&gt;
20+//
21+// &lt;source srcset="entry-row-dark.png" media="(prefers-color-scheme: dark)"&gt;
22+// &lt;img src="entry-row.png" alt="entry-row"&gt;
23+//
24+// &lt;/picture&gt;
25+//
26+// `AdwEntryRow` has a title that doubles as placeholder text. It shows an icon
27+// indicating that it's editable and can receive additional widgets before or
28+// after the editable part.
29+//
30+// If [property@EntryRow:show-apply-button] is set to `TRUE`, `AdwEntryRow` can
31+// show an apply button when editing its contents. This can be useful if
32+// changing its contents can result in an expensive operation, such as network
33+// activity.
34+//
35+// `AdwEntryRow` provides only minimal API and should be used with the
36+// [iface@Gtk.Editable] API.
37+//
38+// See also [class@PasswordEntryRow].
39+//
40+// ## AdwEntryRow as GtkBuildable
41+//
42+// The `AdwEntryRow` implementation of the [iface@Gtk.Buildable] interface
43+// supports adding a child at its end by specifying “suffix” or omitting the
44+// “type” attribute of a &lt;child&gt; element.
45+//
46+// It also supports adding a child as a prefix widget by specifying “prefix” as
47+// the “type” attribute of a &lt;child&gt; element.
48+//
49+// ## CSS nodes
50+//
51+// `AdwEntryRow` has a single CSS node with name `row` and the `.entry` style
52+// class.
53+type EntryRow struct {
54+ PreferencesRow
55+}
56+
57+func EntryRowNewFromInternalPtr(ptr uintptr) *EntryRow {
58+ cls := &EntryRow{}
59+ cls.Ptr = ptr
60+ return cls
61+}
62+
63+var xNewEntryRow func() uintptr
64+
65+// Creates a new `AdwEntryRow`.
66+func NewEntryRow() *gtk.Widget {
67+ NewEntryRowPtr := xNewEntryRow()
68+ if NewEntryRowPtr == 0 {
69+ return nil
70+ }
71+
72+ gobject.IncreaseRef(NewEntryRowPtr)
73+
74+ NewEntryRowCls := &gtk.Widget{}
75+ NewEntryRowCls.Ptr = NewEntryRowPtr
76+ return NewEntryRowCls
77+}
78+
79+var xEntryRowAddPrefix func(uintptr, uintptr)
80+
81+// Adds a prefix widget to @self.
82+func (x *EntryRow) AddPrefix(WidgetVar *gtk.Widget) {
83+
84+ xEntryRowAddPrefix(x.GoPointer(), WidgetVar.GoPointer())
85+
86+}
87+
88+var xEntryRowAddSuffix func(uintptr, uintptr)
89+
90+// Adds a suffix widget to @self.
91+func (x *EntryRow) AddSuffix(WidgetVar *gtk.Widget) {
92+
93+ xEntryRowAddSuffix(x.GoPointer(), WidgetVar.GoPointer())
94+
95+}
96+
97+var xEntryRowGetActivatesDefault func(uintptr) bool
98+
99+// Gets whether activating the embedded entry can activate the default widget.
100+func (x *EntryRow) GetActivatesDefault() bool {
101+
102+ return xEntryRowGetActivatesDefault(x.GoPointer())
103+
104+}
105+
106+var xEntryRowGetAttributes func(uintptr) *pango.AttrList
107+
108+// Gets Pango attributes applied to the text of the embedded entry.
109+func (x *EntryRow) GetAttributes() *pango.AttrList {
110+
111+ return xEntryRowGetAttributes(x.GoPointer())
112+
113+}
114+
115+var xEntryRowGetEnableEmojiCompletion func(uintptr) bool
116+
117+// Gets whether to suggest emoji replacements on @self.
118+func (x *EntryRow) GetEnableEmojiCompletion() bool {
119+
120+ return xEntryRowGetEnableEmojiCompletion(x.GoPointer())
121+
122+}
123+
124+var xEntryRowGetInputHints func(uintptr) gtk.InputHints
125+
126+// Gets the additional input hints of @self.
127+func (x *EntryRow) GetInputHints() gtk.InputHints {
128+
129+ return xEntryRowGetInputHints(x.GoPointer())
130+
131+}
132+
133+var xEntryRowGetInputPurpose func(uintptr) gtk.InputPurpose
134+
135+// Gets the input purpose of @self.
136+func (x *EntryRow) GetInputPurpose() gtk.InputPurpose {
137+
138+ return xEntryRowGetInputPurpose(x.GoPointer())
139+
140+}
141+
142+var xEntryRowGetShowApplyButton func(uintptr) bool
143+
144+// Gets whether @self can show the apply button.
145+func (x *EntryRow) GetShowApplyButton() bool {
146+
147+ return xEntryRowGetShowApplyButton(x.GoPointer())
148+
149+}
150+
151+var xEntryRowGrabFocusWithoutSelecting func(uintptr) bool
152+
153+// Causes @self to have keyboard focus without selecting the text.
154+//
155+// See [method@Gtk.Text.grab_focus_without_selecting] for more information.
156+func (x *EntryRow) GrabFocusWithoutSelecting() bool {
157+
158+ return xEntryRowGrabFocusWithoutSelecting(x.GoPointer())
159+
160+}
161+
162+var xEntryRowRemove func(uintptr, uintptr)
163+
164+// Removes a child from @self.
165+func (x *EntryRow) Remove(WidgetVar *gtk.Widget) {
166+
167+ xEntryRowRemove(x.GoPointer(), WidgetVar.GoPointer())
168+
169+}
170+
171+var xEntryRowSetActivatesDefault func(uintptr, bool)
172+
173+// Sets whether activating the embedded entry can activate the default widget.
174+func (x *EntryRow) SetActivatesDefault(ActivatesVar bool) {
175+
176+ xEntryRowSetActivatesDefault(x.GoPointer(), ActivatesVar)
177+
178+}
179+
180+var xEntryRowSetAttributes func(uintptr, *pango.AttrList)
181+
182+// Sets Pango attributes to apply to the text of the embedded entry.
183+//
184+// The [struct@Pango.Attribute]'s `start_index` and `end_index` must refer to
185+// the [class@Gtk.EntryBuffer] text, i.e. without the preedit string.
186+func (x *EntryRow) SetAttributes(AttributesVar *pango.AttrList) {
187+
188+ xEntryRowSetAttributes(x.GoPointer(), AttributesVar)
189+
190+}
191+
192+var xEntryRowSetEnableEmojiCompletion func(uintptr, bool)
193+
194+// Sets whether to suggest emoji replacements on @self.
195+//
196+// Emoji replacement is done with :-delimited names, like `:heart:`.
197+func (x *EntryRow) SetEnableEmojiCompletion(EnableEmojiCompletionVar bool) {
198+
199+ xEntryRowSetEnableEmojiCompletion(x.GoPointer(), EnableEmojiCompletionVar)
200+
201+}
202+
203+var xEntryRowSetInputHints func(uintptr, gtk.InputHints)
204+
205+// Set additional input hints for @self.
206+//
207+// Input hints allow input methods to fine-tune their behavior.
208+//
209+// See also: [property@AdwEntryRow:input-purpose]
210+func (x *EntryRow) SetInputHints(HintsVar gtk.InputHints) {
211+
212+ xEntryRowSetInputHints(x.GoPointer(), HintsVar)
213+
214+}
215+
216+var xEntryRowSetInputPurpose func(uintptr, gtk.InputPurpose)
217+
218+// Sets the input purpose of @self.
219+//
220+// The input purpose can be used by input methods to adjust their behavior.
221+func (x *EntryRow) SetInputPurpose(PurposeVar gtk.InputPurpose) {
222+
223+ xEntryRowSetInputPurpose(x.GoPointer(), PurposeVar)
224+
225+}
226+
227+var xEntryRowSetShowApplyButton func(uintptr, bool)
228+
229+// Sets whether @self can show the apply button.
230+//
231+// When set to `TRUE`, typing text in the entry will reveal an apply button.
232+// Clicking it or pressing the &lt;kbd&gt;Enter&lt;/kbd&gt; key will hide the button and
233+// emit the [signal@EntryRow::apply] signal.
234+//
235+// This is useful if changing the entry contents can trigger an expensive
236+// operation, e.g. network activity, to avoid triggering it after typing every
237+// character.
238+func (x *EntryRow) SetShowApplyButton(ShowApplyButtonVar bool) {
239+
240+ xEntryRowSetShowApplyButton(x.GoPointer(), ShowApplyButtonVar)
241+
242+}
243+
244+func (c *EntryRow) GoPointer() uintptr {
245+ return c.Ptr
246+}
247+
248+func (c *EntryRow) SetGoPointer(ptr uintptr) {
249+ c.Ptr = ptr
250+}
251+
252+// Emitted when the apply button is pressed.
253+//
254+// See [property@EntryRow:show-apply-button].
255+func (x *EntryRow) ConnectApply(cb func(EntryRow)) {
256+ fcb := func(clsPtr uintptr) {
257+ fa := EntryRow{}
258+ fa.Ptr = clsPtr
259+
260+ cb(fa)
261+
262+ }
263+ gobject.ObjectConnect(x.GoPointer(), "signal::apply", purego.NewCallback(fcb))
264+}
265+
266+// Emitted when the embedded entry is activated.
267+func (x *EntryRow) ConnectEntryActivated(cb func(EntryRow)) {
268+ fcb := func(clsPtr uintptr) {
269+ fa := EntryRow{}
270+ fa.Ptr = clsPtr
271+
272+ cb(fa)
273+
274+ }
275+ gobject.ObjectConnect(x.GoPointer(), "signal::entry-activated", purego.NewCallback(fcb))
276+}
277+
278+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
279+func (x *EntryRow) GetAccessibleRole() gtk.AccessibleRole {
280+
281+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
282+
283+}
284+
285+// Resets the accessible @property to its default value.
286+func (x *EntryRow) ResetProperty(PropertyVar gtk.AccessibleProperty) {
287+
288+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
289+
290+}
291+
292+// Resets the accessible @relation to its default value.
293+func (x *EntryRow) ResetRelation(RelationVar gtk.AccessibleRelation) {
294+
295+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
296+
297+}
298+
299+// Resets the accessible @state to its default value.
300+func (x *EntryRow) ResetState(StateVar gtk.AccessibleState) {
301+
302+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
303+
304+}
305+
306+// Updates a list of accessible properties.
307+//
308+// See the [enum@Gtk.AccessibleProperty] documentation for the
309+// value types of accessible properties.
310+//
311+// This function should be called by `GtkWidget` types whenever
312+// an accessible property change must be communicated to assistive
313+// technologies.
314+//
315+// Example:
316+// ```c
317+// value = gtk_adjustment_get_value (adjustment);
318+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
319+//
320+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
321+// -1);
322+//
323+// ```
324+func (x *EntryRow) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
325+
326+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
327+
328+}
329+
330+// Updates an array of accessible properties.
331+//
332+// This function should be called by `GtkWidget` types whenever an accessible
333+// property change must be communicated to assistive technologies.
334+//
335+// This function is meant to be used by language bindings.
336+func (x *EntryRow) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
337+
338+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
339+
340+}
341+
342+// Updates a list of accessible relations.
343+//
344+// This function should be called by `GtkWidget` types whenever an accessible
345+// relation change must be communicated to assistive technologies.
346+//
347+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
348+// you should pass each reference individually, followed by %NULL, e.g.
349+//
350+// ```c
351+// gtk_accessible_update_relation (accessible,
352+//
353+// GTK_ACCESSIBLE_RELATION_CONTROLS,
354+// ref1, NULL,
355+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
356+// ref1, ref2, ref3, NULL,
357+// -1);
358+//
359+// ```
360+func (x *EntryRow) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
361+
362+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
363+
364+}
365+
366+// Updates an array of accessible relations.
367+//
368+// This function should be called by `GtkWidget` types whenever an accessible
369+// relation change must be communicated to assistive technologies.
370+//
371+// This function is meant to be used by language bindings.
372+func (x *EntryRow) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
373+
374+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
375+
376+}
377+
378+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
379+// documentation for the value types of accessible states.
380+//
381+// This function should be called by `GtkWidget` types whenever an accessible
382+// state change must be communicated to assistive technologies.
383+//
384+// Example:
385+// ```c
386+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
387+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
388+//
389+// GTK_ACCESSIBLE_STATE_CHECKED, value,
390+// -1);
391+//
392+// ```
393+func (x *EntryRow) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
394+
395+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
396+
397+}
398+
399+// Updates an array of accessible states.
400+//
401+// This function should be called by `GtkWidget` types whenever an accessible
402+// state change must be communicated to assistive technologies.
403+//
404+// This function is meant to be used by language bindings.
405+func (x *EntryRow) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
406+
407+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
408+
409+}
410+
411+// Gets the action name for @actionable.
412+func (x *EntryRow) GetActionName() string {
413+
414+ return gtk.XGtkActionableGetActionName(x.GoPointer())
415+
416+}
417+
418+// Gets the current target value of @actionable.
419+func (x *EntryRow) GetActionTargetValue() *glib.Variant {
420+
421+ return gtk.XGtkActionableGetActionTargetValue(x.GoPointer())
422+
423+}
424+
425+// Specifies the name of the action with which this widget should be
426+// associated.
427+//
428+// If @action_name is %NULL then the widget will be unassociated from
429+// any previous action.
430+//
431+// Usually this function is used when the widget is located (or will be
432+// located) within the hierarchy of a `GtkApplicationWindow`.
433+//
434+// Names are of the form “win.save” or “app.quit” for actions on the
435+// containing [class@ApplicationWindow] or its associated [class@Application],
436+// respectively. This is the same form used for actions in the [class@Gio.Menu]
437+// associated with the window.
438+func (x *EntryRow) SetActionName(ActionNameVar string) {
439+
440+ gtk.XGtkActionableSetActionName(x.GoPointer(), ActionNameVar)
441+
442+}
443+
444+// Sets the target of an actionable widget.
445+//
446+// This is a convenience function that calls [ctor@GLib.Variant.new] for
447+// @format_string and uses the result to call
448+// [method@Gtk.Actionable.set_action_target_value].
449+//
450+// If you are setting a string-valued target and want to set
451+// the action name at the same time, you can use
452+// [method@Gtk.Actionable.set_detailed_action_name].
453+func (x *EntryRow) SetActionTarget(FormatStringVar string, varArgs ...interface{}) {
454+
455+ gtk.XGtkActionableSetActionTarget(x.GoPointer(), FormatStringVar, varArgs...)
456+
457+}
458+
459+// Sets the target value of an actionable widget.
460+//
461+// If @target_value is %NULL then the target value is unset.
462+//
463+// The target value has two purposes. First, it is used as the parameter
464+// to activation of the action associated with the `GtkActionable` widget.
465+// Second, it is used to determine if the widget should be rendered as
466+// “active” — the widget is active if the state is equal to the given target.
467+//
468+// Consider the example of associating a set of buttons with a [iface@Gio.Action]
469+// with string state in a typical “radio button” situation. Each button
470+// will be associated with the same action, but with a different target
471+// value for that action. Clicking on a particular button will activate
472+// the action with the target of that button, which will typically cause
473+// the action’s state to change to that value. Since the action’s state
474+// is now equal to the target value of the button, the button will now
475+// be rendered as active (and the other buttons, with different targets,
476+// rendered inactive).
477+func (x *EntryRow) SetActionTargetValue(TargetValueVar *glib.Variant) {
478+
479+ gtk.XGtkActionableSetActionTargetValue(x.GoPointer(), TargetValueVar)
480+
481+}
482+
483+// Sets the action-name and associated string target value of an
484+// actionable widget.
485+//
486+// @detailed_action_name is a string in the format accepted by
487+// [func@Gio.Action.parse_detailed_name].
488+func (x *EntryRow) SetDetailedActionName(DetailedActionNameVar string) {
489+
490+ gtk.XGtkActionableSetDetailedActionName(x.GoPointer(), DetailedActionNameVar)
491+
492+}
493+
494+// Gets the ID of the @buildable object.
495+//
496+// `GtkBuilder` sets the name based on the ID attribute
497+// of the &lt;object&gt; tag used to construct the @buildable.
498+func (x *EntryRow) GetBuildableId() string {
499+
500+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
501+
502+}
503+
504+// Deletes the currently selected text of the editable.
505+//
506+// This call doesn’t do anything if there is no selected text.
507+func (x *EntryRow) DeleteSelection() {
508+
509+ gtk.XGtkEditableDeleteSelection(x.GoPointer())
510+
511+}
512+
513+// Deletes a sequence of characters.
514+//
515+// The characters that are deleted are those characters at positions
516+// from @start_pos up to, but not including @end_pos. If @end_pos is
517+// negative, then the characters deleted are those from @start_pos to
518+// the end of the text.
519+//
520+// Note that the positions are specified in characters, not bytes.
521+func (x *EntryRow) DeleteText(StartPosVar int32, EndPosVar int32) {
522+
523+ gtk.XGtkEditableDeleteText(x.GoPointer(), StartPosVar, EndPosVar)
524+
525+}
526+
527+// Undoes the setup done by [method@Gtk.Editable.init_delegate].
528+//
529+// This is a helper function that should be called from dispose,
530+// before removing the delegate object.
531+func (x *EntryRow) FinishDelegate() {
532+
533+ gtk.XGtkEditableFinishDelegate(x.GoPointer())
534+
535+}
536+
537+// Gets the alignment of the editable.
538+func (x *EntryRow) GetAlignment() float32 {
539+
540+ return gtk.XGtkEditableGetAlignment(x.GoPointer())
541+
542+}
543+
544+// Retrieves a sequence of characters.
545+//
546+// The characters that are retrieved are those characters at positions
547+// from @start_pos up to, but not including @end_pos. If @end_pos is negative,
548+// then the characters retrieved are those characters from @start_pos to
549+// the end of the text.
550+//
551+// Note that positions are specified in characters, not bytes.
552+func (x *EntryRow) GetChars(StartPosVar int32, EndPosVar int32) string {
553+
554+ return gtk.XGtkEditableGetChars(x.GoPointer(), StartPosVar, EndPosVar)
555+
556+}
557+
558+// Gets the `GtkEditable` that @editable is delegating its
559+// implementation to.
560+//
561+// Typically, the delegate is a [class@Gtk.Text] widget.
562+func (x *EntryRow) GetDelegate() *gtk.EditableBase {
563+
564+ GetDelegatePtr := gtk.XGtkEditableGetDelegate(x.GoPointer())
565+ if GetDelegatePtr == 0 {
566+ return nil
567+ }
568+
569+ gobject.IncreaseRef(GetDelegatePtr)
570+
571+ GetDelegateCls := &gtk.EditableBase{}
572+ GetDelegateCls.Ptr = GetDelegatePtr
573+ return GetDelegateCls
574+
575+}
576+
577+// Retrieves whether @editable is editable.
578+func (x *EntryRow) GetEditable() bool {
579+
580+ return gtk.XGtkEditableGetEditable(x.GoPointer())
581+
582+}
583+
584+// Gets if undo/redo actions are enabled for @editable
585+func (x *EntryRow) GetEnableUndo() bool {
586+
587+ return gtk.XGtkEditableGetEnableUndo(x.GoPointer())
588+
589+}
590+
591+// Retrieves the desired maximum width of @editable, in characters.
592+func (x *EntryRow) GetMaxWidthChars() int32 {
593+
594+ return gtk.XGtkEditableGetMaxWidthChars(x.GoPointer())
595+
596+}
597+
598+// Retrieves the current position of the cursor relative
599+// to the start of the content of the editable.
600+//
601+// Note that this position is in characters, not in bytes.
602+func (x *EntryRow) GetPosition() int32 {
603+
604+ return gtk.XGtkEditableGetPosition(x.GoPointer())
605+
606+}
607+
608+// Retrieves the selection bound of the editable.
609+//
610+// @start_pos will be filled with the start of the selection and
611+// @end_pos with end. If no text was selected both will be identical
612+// and %FALSE will be returned.
613+//
614+// Note that positions are specified in characters, not bytes.
615+func (x *EntryRow) GetSelectionBounds(StartPosVar int32, EndPosVar int32) bool {
616+
617+ return gtk.XGtkEditableGetSelectionBounds(x.GoPointer(), StartPosVar, EndPosVar)
618+
619+}
620+
621+// Retrieves the contents of @editable.
622+//
623+// The returned string is owned by GTK and must not be modified or freed.
624+func (x *EntryRow) GetText() string {
625+
626+ return gtk.XGtkEditableGetText(x.GoPointer())
627+
628+}
629+
630+// Gets the number of characters of space reserved
631+// for the contents of the editable.
632+func (x *EntryRow) GetWidthChars() int32 {
633+
634+ return gtk.XGtkEditableGetWidthChars(x.GoPointer())
635+
636+}
637+
638+// Sets up a delegate for `GtkEditable`.
639+//
640+// This is assuming that the get_delegate vfunc in the `GtkEditable`
641+// interface has been set up for the @editable's type.
642+//
643+// This is a helper function that should be called in instance init,
644+// after creating the delegate object.
645+func (x *EntryRow) InitDelegate() {
646+
647+ gtk.XGtkEditableInitDelegate(x.GoPointer())
648+
649+}
650+
651+// Inserts @length bytes of @text into the contents of the
652+// widget, at position @position.
653+//
654+// Note that the position is in characters, not in bytes.
655+// The function updates @position to point after the newly
656+// inserted text.
657+func (x *EntryRow) InsertText(TextVar string, LengthVar int32, PositionVar int32) {
658+
659+ gtk.XGtkEditableInsertText(x.GoPointer(), TextVar, LengthVar, PositionVar)
660+
661+}
662+
663+// Selects a region of text.
664+//
665+// The characters that are selected are those characters at positions
666+// from @start_pos up to, but not including @end_pos. If @end_pos is
667+// negative, then the characters selected are those characters from
668+// @start_pos to the end of the text.
669+//
670+// Note that positions are specified in characters, not bytes.
671+func (x *EntryRow) SelectRegion(StartPosVar int32, EndPosVar int32) {
672+
673+ gtk.XGtkEditableSelectRegion(x.GoPointer(), StartPosVar, EndPosVar)
674+
675+}
676+
677+// Sets the alignment for the contents of the editable.
678+//
679+// This controls the horizontal positioning of the contents when
680+// the displayed text is shorter than the width of the editable.
681+func (x *EntryRow) SetAlignment(XalignVar float32) {
682+
683+ gtk.XGtkEditableSetAlignment(x.GoPointer(), XalignVar)
684+
685+}
686+
687+// Determines if the user can edit the text in the editable widget.
688+func (x *EntryRow) SetEditable(IsEditableVar bool) {
689+
690+ gtk.XGtkEditableSetEditable(x.GoPointer(), IsEditableVar)
691+
692+}
693+
694+// If enabled, changes to @editable will be saved for undo/redo
695+// actions.
696+//
697+// This results in an additional copy of text changes and are not
698+// stored in secure memory. As such, undo is forcefully disabled
699+// when [property@Gtk.Text:visibility] is set to %FALSE.
700+func (x *EntryRow) SetEnableUndo(EnableUndoVar bool) {
701+
702+ gtk.XGtkEditableSetEnableUndo(x.GoPointer(), EnableUndoVar)
703+
704+}
705+
706+// Sets the desired maximum width in characters of @editable.
707+func (x *EntryRow) SetMaxWidthChars(NCharsVar int32) {
708+
709+ gtk.XGtkEditableSetMaxWidthChars(x.GoPointer(), NCharsVar)
710+
711+}
712+
713+// Sets the cursor position in the editable to the given value.
714+//
715+// The cursor is displayed before the character with the given (base 0)
716+// index in the contents of the editable. The value must be less than
717+// or equal to the number of characters in the editable. A value of -1
718+// indicates that the position should be set after the last character
719+// of the editable. Note that @position is in characters, not in bytes.
720+func (x *EntryRow) SetPosition(PositionVar int32) {
721+
722+ gtk.XGtkEditableSetPosition(x.GoPointer(), PositionVar)
723+
724+}
725+
726+// Sets the text in the editable to the given value.
727+//
728+// This is replacing the current contents.
729+func (x *EntryRow) SetText(TextVar string) {
730+
731+ gtk.XGtkEditableSetText(x.GoPointer(), TextVar)
732+
733+}
734+
735+// Changes the size request of the editable to be about the
736+// right size for @n_chars characters.
737+//
738+// Note that it changes the size request, the size can still
739+// be affected by how you pack the widget into containers.
740+// If @n_chars is -1, the size reverts to the default size.
741+func (x *EntryRow) SetWidthChars(NCharsVar int32) {
742+
743+ gtk.XGtkEditableSetWidthChars(x.GoPointer(), NCharsVar)
744+
745+}
746+
747+func init() {
748+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
749+ if err != nil {
750+ panic(err)
751+ }
752+
753+ core.PuregoSafeRegister(&xNewEntryRow, lib, "adw_entry_row_new")
754+
755+ core.PuregoSafeRegister(&xEntryRowAddPrefix, lib, "adw_entry_row_add_prefix")
756+ core.PuregoSafeRegister(&xEntryRowAddSuffix, lib, "adw_entry_row_add_suffix")
757+ core.PuregoSafeRegister(&xEntryRowGetActivatesDefault, lib, "adw_entry_row_get_activates_default")
758+ core.PuregoSafeRegister(&xEntryRowGetAttributes, lib, "adw_entry_row_get_attributes")
759+ core.PuregoSafeRegister(&xEntryRowGetEnableEmojiCompletion, lib, "adw_entry_row_get_enable_emoji_completion")
760+ core.PuregoSafeRegister(&xEntryRowGetInputHints, lib, "adw_entry_row_get_input_hints")
761+ core.PuregoSafeRegister(&xEntryRowGetInputPurpose, lib, "adw_entry_row_get_input_purpose")
762+ core.PuregoSafeRegister(&xEntryRowGetShowApplyButton, lib, "adw_entry_row_get_show_apply_button")
763+ core.PuregoSafeRegister(&xEntryRowGrabFocusWithoutSelecting, lib, "adw_entry_row_grab_focus_without_selecting")
764+ core.PuregoSafeRegister(&xEntryRowRemove, lib, "adw_entry_row_remove")
765+ core.PuregoSafeRegister(&xEntryRowSetActivatesDefault, lib, "adw_entry_row_set_activates_default")
766+ core.PuregoSafeRegister(&xEntryRowSetAttributes, lib, "adw_entry_row_set_attributes")
767+ core.PuregoSafeRegister(&xEntryRowSetEnableEmojiCompletion, lib, "adw_entry_row_set_enable_emoji_completion")
768+ core.PuregoSafeRegister(&xEntryRowSetInputHints, lib, "adw_entry_row_set_input_hints")
769+ core.PuregoSafeRegister(&xEntryRowSetInputPurpose, lib, "adw_entry_row_set_input_purpose")
770+ core.PuregoSafeRegister(&xEntryRowSetShowApplyButton, lib, "adw_entry_row_set_show_apply_button")
771+
772+}
A v4/adw/adw-enum-list-model.go +224 -0
@@ -0,0 +1,224 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gio"
8+ "github.com/jwijenbergh/puregotk/v4/gobject"
9+)
10+
11+type EnumListItemClass struct {
12+ ParentClass uintptr
13+}
14+
15+type EnumListModelClass struct {
16+ ParentClass uintptr
17+}
18+
19+// `AdwEnumListItem` is the type of items in a [class@EnumListModel].
20+type EnumListItem struct {
21+ gobject.Object
22+}
23+
24+func EnumListItemNewFromInternalPtr(ptr uintptr) *EnumListItem {
25+ cls := &EnumListItem{}
26+ cls.Ptr = ptr
27+ return cls
28+}
29+
30+var xEnumListItemGetName func(uintptr) string
31+
32+// Gets the enum value name.
33+func (x *EnumListItem) GetName() string {
34+
35+ return xEnumListItemGetName(x.GoPointer())
36+
37+}
38+
39+var xEnumListItemGetNick func(uintptr) string
40+
41+// Gets the enum value nick.
42+func (x *EnumListItem) GetNick() string {
43+
44+ return xEnumListItemGetNick(x.GoPointer())
45+
46+}
47+
48+var xEnumListItemGetValue func(uintptr) int32
49+
50+// Gets the enum value.
51+func (x *EnumListItem) GetValue() int32 {
52+
53+ return xEnumListItemGetValue(x.GoPointer())
54+
55+}
56+
57+func (c *EnumListItem) GoPointer() uintptr {
58+ return c.Ptr
59+}
60+
61+func (c *EnumListItem) SetGoPointer(ptr uintptr) {
62+ c.Ptr = ptr
63+}
64+
65+// A [iface@Gio.ListModel] representing values of a given enum.
66+//
67+// `AdwEnumListModel` contains objects of type [class@EnumListItem].
68+type EnumListModel struct {
69+ gobject.Object
70+}
71+
72+func EnumListModelNewFromInternalPtr(ptr uintptr) *EnumListModel {
73+ cls := &EnumListModel{}
74+ cls.Ptr = ptr
75+ return cls
76+}
77+
78+var xNewEnumListModel func([]interface{}) uintptr
79+
80+// Creates a new `AdwEnumListModel` for @enum_type.
81+func NewEnumListModel(EnumTypeVar []interface{}) *EnumListModel {
82+ NewEnumListModelPtr := xNewEnumListModel(EnumTypeVar)
83+ if NewEnumListModelPtr == 0 {
84+ return nil
85+ }
86+
87+ NewEnumListModelCls := &EnumListModel{}
88+ NewEnumListModelCls.Ptr = NewEnumListModelPtr
89+ return NewEnumListModelCls
90+}
91+
92+var xEnumListModelFindPosition func(uintptr, int32) uint
93+
94+// Finds the position of a given enum value in @self.
95+func (x *EnumListModel) FindPosition(ValueVar int32) uint {
96+
97+ return xEnumListModelFindPosition(x.GoPointer(), ValueVar)
98+
99+}
100+
101+var xEnumListModelGetEnumType func(uintptr) []interface{}
102+
103+// Gets the type of the enum represented by @self.
104+func (x *EnumListModel) GetEnumType() []interface{} {
105+
106+ return xEnumListModelGetEnumType(x.GoPointer())
107+
108+}
109+
110+func (c *EnumListModel) GoPointer() uintptr {
111+ return c.Ptr
112+}
113+
114+func (c *EnumListModel) SetGoPointer(ptr uintptr) {
115+ c.Ptr = ptr
116+}
117+
118+// Get the item at @position.
119+//
120+// If @position is greater than the number of items in @list, %NULL is
121+// returned.
122+//
123+// %NULL is never returned for an index that is smaller than the length
124+// of the list.
125+//
126+// See also: g_list_model_get_n_items()
127+func (x *EnumListModel) GetItem(PositionVar uint) uintptr {
128+
129+ return gio.XGListModelGetItem(x.GoPointer(), PositionVar)
130+
131+}
132+
133+// Gets the type of the items in @list.
134+//
135+// All items returned from g_list_model_get_item() are of the type
136+// returned by this function, or a subtype, or if the type is an
137+// interface, they are an implementation of that interface.
138+//
139+// The item type of a #GListModel can not change during the life of the
140+// model.
141+func (x *EnumListModel) GetItemType() []interface{} {
142+
143+ return gio.XGListModelGetItemType(x.GoPointer())
144+
145+}
146+
147+// Gets the number of items in @list.
148+//
149+// Depending on the model implementation, calling this function may be
150+// less efficient than iterating the list with increasing values for
151+// @position until g_list_model_get_item() returns %NULL.
152+func (x *EnumListModel) GetNItems() uint {
153+
154+ return gio.XGListModelGetNItems(x.GoPointer())
155+
156+}
157+
158+// Get the item at @position.
159+//
160+// If @position is greater than the number of items in @list, %NULL is
161+// returned.
162+//
163+// %NULL is never returned for an index that is smaller than the length
164+// of the list.
165+//
166+// This function is meant to be used by language bindings in place
167+// of g_list_model_get_item().
168+//
169+// See also: g_list_model_get_n_items()
170+func (x *EnumListModel) GetObject(PositionVar uint) *gobject.Object {
171+
172+ GetObjectPtr := gio.XGListModelGetObject(x.GoPointer(), PositionVar)
173+ if GetObjectPtr == 0 {
174+ return nil
175+ }
176+
177+ GetObjectCls := &gobject.Object{}
178+ GetObjectCls.Ptr = GetObjectPtr
179+ return GetObjectCls
180+
181+}
182+
183+// Emits the #GListModel::items-changed signal on @list.
184+//
185+// This function should only be called by classes implementing
186+// #GListModel. It has to be called after the internal representation
187+// of @list has been updated, because handlers connected to this signal
188+// might query the new state of the list.
189+//
190+// Implementations must only make changes to the model (as visible to
191+// its consumer) in places that will not cause problems for that
192+// consumer. For models that are driven directly by a write API (such
193+// as #GListStore), changes can be reported in response to uses of that
194+// API. For models that represent remote data, changes should only be
195+// made from a fresh mainloop dispatch. It is particularly not
196+// permitted to make changes in response to a call to the #GListModel
197+// consumer API.
198+//
199+// Stated another way: in general, it is assumed that code making a
200+// series of accesses to the model via the API, without returning to the
201+// mainloop, and without calling other code, will continue to view the
202+// same contents of the model.
203+func (x *EnumListModel) ItemsChanged(PositionVar uint, RemovedVar uint, AddedVar uint) {
204+
205+ gio.XGListModelItemsChanged(x.GoPointer(), PositionVar, RemovedVar, AddedVar)
206+
207+}
208+
209+func init() {
210+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
211+ if err != nil {
212+ panic(err)
213+ }
214+
215+ core.PuregoSafeRegister(&xEnumListItemGetName, lib, "adw_enum_list_item_get_name")
216+ core.PuregoSafeRegister(&xEnumListItemGetNick, lib, "adw_enum_list_item_get_nick")
217+ core.PuregoSafeRegister(&xEnumListItemGetValue, lib, "adw_enum_list_item_get_value")
218+
219+ core.PuregoSafeRegister(&xNewEnumListModel, lib, "adw_enum_list_model_new")
220+
221+ core.PuregoSafeRegister(&xEnumListModelFindPosition, lib, "adw_enum_list_model_find_position")
222+ core.PuregoSafeRegister(&xEnumListModelGetEnumType, lib, "adw_enum_list_model_get_enum_type")
223+
224+}
A v4/adw/adw-expander-row.go +509 -0
@@ -0,0 +1,509 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/glib"
8+ "github.com/jwijenbergh/puregotk/v4/gobject"
9+ "github.com/jwijenbergh/puregotk/v4/gtk"
10+)
11+
12+type ExpanderRowClass struct {
13+ ParentClass uintptr
14+
15+ Padding uintptr
16+}
17+
18+// A [class@Gtk.ListBoxRow] used to reveal widgets.
19+//
20+// &lt;picture&gt;
21+//
22+// &lt;source srcset="expander-row-dark.png" media="(prefers-color-scheme: dark)"&gt;
23+// &lt;img src="expander-row.png" alt="expander-row"&gt;
24+//
25+// &lt;/picture&gt;
26+//
27+// The `AdwExpanderRow` widget allows the user to reveal or hide widgets below
28+// it. It also allows the user to enable the expansion of the row, allowing to
29+// disable all that the row contains.
30+//
31+// ## AdwExpanderRow as GtkBuildable
32+//
33+// The `AdwExpanderRow` implementation of the [iface@Gtk.Buildable] interface
34+// supports adding a child as an action widget by specifying “action” as the
35+// “type” attribute of a &lt;child&gt; element.
36+//
37+// It also supports adding it as a prefix widget by specifying “prefix” as the
38+// “type” attribute of a &lt;child&gt; element.
39+//
40+// ## CSS nodes
41+//
42+// `AdwExpanderRow` has a main CSS node with name `row` and the `.expander`
43+// style class. It has the `.empty` style class when it contains no children.
44+//
45+// It contains the subnodes `row.header` for its main embedded row,
46+// `list.nested` for the list it can expand, and `image.expander-row-arrow` for
47+// its arrow.
48+type ExpanderRow struct {
49+ PreferencesRow
50+}
51+
52+func ExpanderRowNewFromInternalPtr(ptr uintptr) *ExpanderRow {
53+ cls := &ExpanderRow{}
54+ cls.Ptr = ptr
55+ return cls
56+}
57+
58+var xNewExpanderRow func() uintptr
59+
60+// Creates a new `AdwExpanderRow`.
61+func NewExpanderRow() *gtk.Widget {
62+ NewExpanderRowPtr := xNewExpanderRow()
63+ if NewExpanderRowPtr == 0 {
64+ return nil
65+ }
66+
67+ gobject.IncreaseRef(NewExpanderRowPtr)
68+
69+ NewExpanderRowCls := &gtk.Widget{}
70+ NewExpanderRowCls.Ptr = NewExpanderRowPtr
71+ return NewExpanderRowCls
72+}
73+
74+var xExpanderRowAddAction func(uintptr, uintptr)
75+
76+// Adds an action widget to @self.
77+func (x *ExpanderRow) AddAction(WidgetVar *gtk.Widget) {
78+
79+ xExpanderRowAddAction(x.GoPointer(), WidgetVar.GoPointer())
80+
81+}
82+
83+var xExpanderRowAddPrefix func(uintptr, uintptr)
84+
85+// Adds a prefix widget to @self.
86+func (x *ExpanderRow) AddPrefix(WidgetVar *gtk.Widget) {
87+
88+ xExpanderRowAddPrefix(x.GoPointer(), WidgetVar.GoPointer())
89+
90+}
91+
92+var xExpanderRowAddRow func(uintptr, uintptr)
93+
94+// Adds a widget to @self.
95+//
96+// The widget will appear in the expanding list below @self.
97+func (x *ExpanderRow) AddRow(ChildVar *gtk.Widget) {
98+
99+ xExpanderRowAddRow(x.GoPointer(), ChildVar.GoPointer())
100+
101+}
102+
103+var xExpanderRowGetEnableExpansion func(uintptr) bool
104+
105+// Gets whether the expansion of @self is enabled.
106+func (x *ExpanderRow) GetEnableExpansion() bool {
107+
108+ return xExpanderRowGetEnableExpansion(x.GoPointer())
109+
110+}
111+
112+var xExpanderRowGetExpanded func(uintptr) bool
113+
114+// Gets whether @self is expanded.
115+func (x *ExpanderRow) GetExpanded() bool {
116+
117+ return xExpanderRowGetExpanded(x.GoPointer())
118+
119+}
120+
121+var xExpanderRowGetIconName func(uintptr) string
122+
123+// Gets the icon name for @self.
124+func (x *ExpanderRow) GetIconName() string {
125+
126+ return xExpanderRowGetIconName(x.GoPointer())
127+
128+}
129+
130+var xExpanderRowGetShowEnableSwitch func(uintptr) bool
131+
132+// Gets whether the switch enabling the expansion of @self is visible.
133+func (x *ExpanderRow) GetShowEnableSwitch() bool {
134+
135+ return xExpanderRowGetShowEnableSwitch(x.GoPointer())
136+
137+}
138+
139+var xExpanderRowGetSubtitle func(uintptr) string
140+
141+// Gets the subtitle for @self.
142+func (x *ExpanderRow) GetSubtitle() string {
143+
144+ return xExpanderRowGetSubtitle(x.GoPointer())
145+
146+}
147+
148+var xExpanderRowGetSubtitleLines func(uintptr) bool
149+
150+// Gets the number of lines at the end of which the subtitle label will be
151+// ellipsized.
152+func (x *ExpanderRow) GetSubtitleLines() bool {
153+
154+ return xExpanderRowGetSubtitleLines(x.GoPointer())
155+
156+}
157+
158+var xExpanderRowGetTitleLines func(uintptr) bool
159+
160+// Gets the number of lines at the end of which the title label will be
161+// ellipsized.
162+func (x *ExpanderRow) GetTitleLines() bool {
163+
164+ return xExpanderRowGetTitleLines(x.GoPointer())
165+
166+}
167+
168+var xExpanderRowRemove func(uintptr, uintptr)
169+
170+func (x *ExpanderRow) Remove(ChildVar *gtk.Widget) {
171+
172+ xExpanderRowRemove(x.GoPointer(), ChildVar.GoPointer())
173+
174+}
175+
176+var xExpanderRowSetEnableExpansion func(uintptr, bool)
177+
178+// Sets whether the expansion of @self is enabled.
179+func (x *ExpanderRow) SetEnableExpansion(EnableExpansionVar bool) {
180+
181+ xExpanderRowSetEnableExpansion(x.GoPointer(), EnableExpansionVar)
182+
183+}
184+
185+var xExpanderRowSetExpanded func(uintptr, bool)
186+
187+// Sets whether @self is expanded.
188+func (x *ExpanderRow) SetExpanded(ExpandedVar bool) {
189+
190+ xExpanderRowSetExpanded(x.GoPointer(), ExpandedVar)
191+
192+}
193+
194+var xExpanderRowSetIconName func(uintptr, string)
195+
196+// Sets the icon name for @self.
197+func (x *ExpanderRow) SetIconName(IconNameVar string) {
198+
199+ xExpanderRowSetIconName(x.GoPointer(), IconNameVar)
200+
201+}
202+
203+var xExpanderRowSetShowEnableSwitch func(uintptr, bool)
204+
205+// Sets whether the switch enabling the expansion of @self is visible.
206+func (x *ExpanderRow) SetShowEnableSwitch(ShowEnableSwitchVar bool) {
207+
208+ xExpanderRowSetShowEnableSwitch(x.GoPointer(), ShowEnableSwitchVar)
209+
210+}
211+
212+var xExpanderRowSetSubtitle func(uintptr, string)
213+
214+// Sets the subtitle for @self.
215+//
216+// The subtitle is interpreted as Pango markup unless
217+// [property@PreferencesRow:use-markup] is set to `FALSE`.
218+func (x *ExpanderRow) SetSubtitle(SubtitleVar string) {
219+
220+ xExpanderRowSetSubtitle(x.GoPointer(), SubtitleVar)
221+
222+}
223+
224+var xExpanderRowSetSubtitleLines func(uintptr, int32)
225+
226+// Sets the number of lines at the end of which the subtitle label will be
227+// ellipsized.
228+//
229+// If the value is 0, the number of lines won't be limited.
230+func (x *ExpanderRow) SetSubtitleLines(SubtitleLinesVar int32) {
231+
232+ xExpanderRowSetSubtitleLines(x.GoPointer(), SubtitleLinesVar)
233+
234+}
235+
236+var xExpanderRowSetTitleLines func(uintptr, int32)
237+
238+// Sets the number of lines at the end of which the title label will be
239+// ellipsized.
240+//
241+// If the value is 0, the number of lines won't be limited.
242+func (x *ExpanderRow) SetTitleLines(TitleLinesVar int32) {
243+
244+ xExpanderRowSetTitleLines(x.GoPointer(), TitleLinesVar)
245+
246+}
247+
248+func (c *ExpanderRow) GoPointer() uintptr {
249+ return c.Ptr
250+}
251+
252+func (c *ExpanderRow) SetGoPointer(ptr uintptr) {
253+ c.Ptr = ptr
254+}
255+
256+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
257+func (x *ExpanderRow) GetAccessibleRole() gtk.AccessibleRole {
258+
259+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
260+
261+}
262+
263+// Resets the accessible @property to its default value.
264+func (x *ExpanderRow) ResetProperty(PropertyVar gtk.AccessibleProperty) {
265+
266+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
267+
268+}
269+
270+// Resets the accessible @relation to its default value.
271+func (x *ExpanderRow) ResetRelation(RelationVar gtk.AccessibleRelation) {
272+
273+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
274+
275+}
276+
277+// Resets the accessible @state to its default value.
278+func (x *ExpanderRow) ResetState(StateVar gtk.AccessibleState) {
279+
280+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
281+
282+}
283+
284+// Updates a list of accessible properties.
285+//
286+// See the [enum@Gtk.AccessibleProperty] documentation for the
287+// value types of accessible properties.
288+//
289+// This function should be called by `GtkWidget` types whenever
290+// an accessible property change must be communicated to assistive
291+// technologies.
292+//
293+// Example:
294+// ```c
295+// value = gtk_adjustment_get_value (adjustment);
296+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
297+//
298+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
299+// -1);
300+//
301+// ```
302+func (x *ExpanderRow) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
303+
304+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
305+
306+}
307+
308+// Updates an array of accessible properties.
309+//
310+// This function should be called by `GtkWidget` types whenever an accessible
311+// property change must be communicated to assistive technologies.
312+//
313+// This function is meant to be used by language bindings.
314+func (x *ExpanderRow) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
315+
316+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
317+
318+}
319+
320+// Updates a list of accessible relations.
321+//
322+// This function should be called by `GtkWidget` types whenever an accessible
323+// relation change must be communicated to assistive technologies.
324+//
325+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
326+// you should pass each reference individually, followed by %NULL, e.g.
327+//
328+// ```c
329+// gtk_accessible_update_relation (accessible,
330+//
331+// GTK_ACCESSIBLE_RELATION_CONTROLS,
332+// ref1, NULL,
333+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
334+// ref1, ref2, ref3, NULL,
335+// -1);
336+//
337+// ```
338+func (x *ExpanderRow) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
339+
340+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
341+
342+}
343+
344+// Updates an array of accessible relations.
345+//
346+// This function should be called by `GtkWidget` types whenever an accessible
347+// relation change must be communicated to assistive technologies.
348+//
349+// This function is meant to be used by language bindings.
350+func (x *ExpanderRow) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
351+
352+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
353+
354+}
355+
356+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
357+// documentation for the value types of accessible states.
358+//
359+// This function should be called by `GtkWidget` types whenever an accessible
360+// state change must be communicated to assistive technologies.
361+//
362+// Example:
363+// ```c
364+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
365+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
366+//
367+// GTK_ACCESSIBLE_STATE_CHECKED, value,
368+// -1);
369+//
370+// ```
371+func (x *ExpanderRow) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
372+
373+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
374+
375+}
376+
377+// Updates an array of accessible states.
378+//
379+// This function should be called by `GtkWidget` types whenever an accessible
380+// state change must be communicated to assistive technologies.
381+//
382+// This function is meant to be used by language bindings.
383+func (x *ExpanderRow) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
384+
385+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
386+
387+}
388+
389+// Gets the action name for @actionable.
390+func (x *ExpanderRow) GetActionName() string {
391+
392+ return gtk.XGtkActionableGetActionName(x.GoPointer())
393+
394+}
395+
396+// Gets the current target value of @actionable.
397+func (x *ExpanderRow) GetActionTargetValue() *glib.Variant {
398+
399+ return gtk.XGtkActionableGetActionTargetValue(x.GoPointer())
400+
401+}
402+
403+// Specifies the name of the action with which this widget should be
404+// associated.
405+//
406+// If @action_name is %NULL then the widget will be unassociated from
407+// any previous action.
408+//
409+// Usually this function is used when the widget is located (or will be
410+// located) within the hierarchy of a `GtkApplicationWindow`.
411+//
412+// Names are of the form “win.save” or “app.quit” for actions on the
413+// containing [class@ApplicationWindow] or its associated [class@Application],
414+// respectively. This is the same form used for actions in the [class@Gio.Menu]
415+// associated with the window.
416+func (x *ExpanderRow) SetActionName(ActionNameVar string) {
417+
418+ gtk.XGtkActionableSetActionName(x.GoPointer(), ActionNameVar)
419+
420+}
421+
422+// Sets the target of an actionable widget.
423+//
424+// This is a convenience function that calls [ctor@GLib.Variant.new] for
425+// @format_string and uses the result to call
426+// [method@Gtk.Actionable.set_action_target_value].
427+//
428+// If you are setting a string-valued target and want to set
429+// the action name at the same time, you can use
430+// [method@Gtk.Actionable.set_detailed_action_name].
431+func (x *ExpanderRow) SetActionTarget(FormatStringVar string, varArgs ...interface{}) {
432+
433+ gtk.XGtkActionableSetActionTarget(x.GoPointer(), FormatStringVar, varArgs...)
434+
435+}
436+
437+// Sets the target value of an actionable widget.
438+//
439+// If @target_value is %NULL then the target value is unset.
440+//
441+// The target value has two purposes. First, it is used as the parameter
442+// to activation of the action associated with the `GtkActionable` widget.
443+// Second, it is used to determine if the widget should be rendered as
444+// “active” — the widget is active if the state is equal to the given target.
445+//
446+// Consider the example of associating a set of buttons with a [iface@Gio.Action]
447+// with string state in a typical “radio button” situation. Each button
448+// will be associated with the same action, but with a different target
449+// value for that action. Clicking on a particular button will activate
450+// the action with the target of that button, which will typically cause
451+// the action’s state to change to that value. Since the action’s state
452+// is now equal to the target value of the button, the button will now
453+// be rendered as active (and the other buttons, with different targets,
454+// rendered inactive).
455+func (x *ExpanderRow) SetActionTargetValue(TargetValueVar *glib.Variant) {
456+
457+ gtk.XGtkActionableSetActionTargetValue(x.GoPointer(), TargetValueVar)
458+
459+}
460+
461+// Sets the action-name and associated string target value of an
462+// actionable widget.
463+//
464+// @detailed_action_name is a string in the format accepted by
465+// [func@Gio.Action.parse_detailed_name].
466+func (x *ExpanderRow) SetDetailedActionName(DetailedActionNameVar string) {
467+
468+ gtk.XGtkActionableSetDetailedActionName(x.GoPointer(), DetailedActionNameVar)
469+
470+}
471+
472+// Gets the ID of the @buildable object.
473+//
474+// `GtkBuilder` sets the name based on the ID attribute
475+// of the &lt;object&gt; tag used to construct the @buildable.
476+func (x *ExpanderRow) GetBuildableId() string {
477+
478+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
479+
480+}
481+
482+func init() {
483+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
484+ if err != nil {
485+ panic(err)
486+ }
487+
488+ core.PuregoSafeRegister(&xNewExpanderRow, lib, "adw_expander_row_new")
489+
490+ core.PuregoSafeRegister(&xExpanderRowAddAction, lib, "adw_expander_row_add_action")
491+ core.PuregoSafeRegister(&xExpanderRowAddPrefix, lib, "adw_expander_row_add_prefix")
492+ core.PuregoSafeRegister(&xExpanderRowAddRow, lib, "adw_expander_row_add_row")
493+ core.PuregoSafeRegister(&xExpanderRowGetEnableExpansion, lib, "adw_expander_row_get_enable_expansion")
494+ core.PuregoSafeRegister(&xExpanderRowGetExpanded, lib, "adw_expander_row_get_expanded")
495+ core.PuregoSafeRegister(&xExpanderRowGetIconName, lib, "adw_expander_row_get_icon_name")
496+ core.PuregoSafeRegister(&xExpanderRowGetShowEnableSwitch, lib, "adw_expander_row_get_show_enable_switch")
497+ core.PuregoSafeRegister(&xExpanderRowGetSubtitle, lib, "adw_expander_row_get_subtitle")
498+ core.PuregoSafeRegister(&xExpanderRowGetSubtitleLines, lib, "adw_expander_row_get_subtitle_lines")
499+ core.PuregoSafeRegister(&xExpanderRowGetTitleLines, lib, "adw_expander_row_get_title_lines")
500+ core.PuregoSafeRegister(&xExpanderRowRemove, lib, "adw_expander_row_remove")
501+ core.PuregoSafeRegister(&xExpanderRowSetEnableExpansion, lib, "adw_expander_row_set_enable_expansion")
502+ core.PuregoSafeRegister(&xExpanderRowSetExpanded, lib, "adw_expander_row_set_expanded")
503+ core.PuregoSafeRegister(&xExpanderRowSetIconName, lib, "adw_expander_row_set_icon_name")
504+ core.PuregoSafeRegister(&xExpanderRowSetShowEnableSwitch, lib, "adw_expander_row_set_show_enable_switch")
505+ core.PuregoSafeRegister(&xExpanderRowSetSubtitle, lib, "adw_expander_row_set_subtitle")
506+ core.PuregoSafeRegister(&xExpanderRowSetSubtitleLines, lib, "adw_expander_row_set_subtitle_lines")
507+ core.PuregoSafeRegister(&xExpanderRowSetTitleLines, lib, "adw_expander_row_set_title_lines")
508+
509+}
A v4/adw/adw-flap.go +739 -0
@@ -0,0 +1,739 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gdk"
8+ "github.com/jwijenbergh/puregotk/v4/gobject"
9+ "github.com/jwijenbergh/puregotk/v4/gtk"
10+)
11+
12+type FlapClass struct {
13+ ParentClass uintptr
14+}
15+
16+// Describes the possible folding behavior of a [class@Flap] widget.
17+type FlapFoldPolicy int
18+
19+const (
20+
21+ // Disable folding, the flap cannot reach narrow
22+ // sizes.
23+ FlapFoldPolicyNeverValue FlapFoldPolicy = 0
24+ // Keep the flap always folded.
25+ FlapFoldPolicyAlwaysValue FlapFoldPolicy = 1
26+ // Fold and unfold the flap based on available
27+ // space.
28+ FlapFoldPolicyAutoValue FlapFoldPolicy = 2
29+)
30+
31+// Describes transitions types of a [class@Flap] widget.
32+//
33+// It determines the type of animation when transitioning between children in a
34+// [class@Flap] widget, as well as which areas can be swiped via
35+// [property@Flap:swipe-to-open] and [property@Flap:swipe-to-close].
36+//
37+// New values may be added to this enum over time.
38+type FlapTransitionType int
39+
40+const (
41+
42+ // The flap slides over the content, which is
43+ // dimmed. When folded, only the flap can be swiped.
44+ FlapTransitionTypeOverValue FlapTransitionType = 0
45+ // The content slides over the flap. Only the
46+ // content can be swiped.
47+ FlapTransitionTypeUnderValue FlapTransitionType = 1
48+ // The flap slides offscreen when hidden,
49+ // neither the flap nor content overlap each other. Both widgets can be
50+ // swiped.
51+ FlapTransitionTypeSlideValue FlapTransitionType = 2
52+)
53+
54+// An adaptive container acting like a box or an overlay.
55+//
56+// &lt;picture&gt;
57+//
58+// &lt;source srcset="flap-wide-dark.png" media="(prefers-color-scheme: dark)"&gt;
59+// &lt;img src="flap-wide.png" alt="flap-wide"&gt;
60+//
61+// &lt;/picture&gt;
62+// &lt;picture&gt;
63+//
64+// &lt;source srcset="flap-narrow-dark.png" media="(prefers-color-scheme: dark)"&gt;
65+// &lt;img src="flap-narrow.png" alt="flap-narrow"&gt;
66+//
67+// &lt;/picture&gt;
68+//
69+// The `AdwFlap` widget can display its children like a [class@Gtk.Box] does or
70+// like a [class@Gtk.Overlay] does, according to the
71+// [property@Flap:fold-policy] value.
72+//
73+// `AdwFlap` has at most three children: [property@Flap:content],
74+// [property@Flap:flap] and [property@Flap:separator]. Content is the primary
75+// child, flap is displayed next to it when unfolded, or overlays it when
76+// folded. Flap can be shown or hidden by changing the
77+// [property@Flap:reveal-flap] value, as well as via swipe gestures if
78+// [property@Flap:swipe-to-open] and/or [property@Flap:swipe-to-close] are set
79+// to `TRUE`.
80+//
81+// Optionally, a separator can be provided, which would be displayed between
82+// the content and the flap when there's no shadow to separate them, depending
83+// on the transition type.
84+//
85+// [property@Flap:flap] is transparent by default; add the
86+// [`.background`](style-classes.html#background) style class to it if this is
87+// unwanted.
88+//
89+// If [property@Flap:modal] is set to `TRUE`, content becomes completely
90+// inaccessible when the flap is revealed while folded.
91+//
92+// The position of the flap and separator children relative to the content is
93+// determined by orientation, as well as the [property@Flap:flap-position]
94+// value.
95+//
96+// Folding the flap will automatically hide the flap widget, and unfolding it
97+// will automatically reveal it. If this behavior is not desired, the
98+// [property@Flap:locked] property can be used to override it.
99+//
100+// Common use cases include sidebars, header bars that need to be able to
101+// overlap the window content (for example, in fullscreen mode) and bottom
102+// sheets.
103+//
104+// ## AdwFlap as GtkBuildable
105+//
106+// The `AdwFlap` implementation of the [iface@Gtk.Buildable] interface supports
107+// setting the flap child by specifying “flap” as the “type” attribute of a
108+// `&lt;child&gt;` element, and separator by specifying “separator”. Specifying
109+// “content” child type or omitting it results in setting the content child.
110+//
111+// ## CSS nodes
112+//
113+// `AdwFlap` has a single CSS node with name `flap`. The node will get the style
114+// classes `.folded` when it is folded, and `.unfolded` when it's not.
115+type Flap struct {
116+ gtk.Widget
117+}
118+
119+func FlapNewFromInternalPtr(ptr uintptr) *Flap {
120+ cls := &Flap{}
121+ cls.Ptr = ptr
122+ return cls
123+}
124+
125+var xNewFlap func() uintptr
126+
127+// Creates a new `AdwFlap`.
128+func NewFlap() *gtk.Widget {
129+ NewFlapPtr := xNewFlap()
130+ if NewFlapPtr == 0 {
131+ return nil
132+ }
133+
134+ gobject.IncreaseRef(NewFlapPtr)
135+
136+ NewFlapCls := &gtk.Widget{}
137+ NewFlapCls.Ptr = NewFlapPtr
138+ return NewFlapCls
139+}
140+
141+var xFlapGetContent func(uintptr) uintptr
142+
143+// Gets the content widget for @self.
144+func (x *Flap) GetContent() *gtk.Widget {
145+
146+ GetContentPtr := xFlapGetContent(x.GoPointer())
147+ if GetContentPtr == 0 {
148+ return nil
149+ }
150+
151+ gobject.IncreaseRef(GetContentPtr)
152+
153+ GetContentCls := &gtk.Widget{}
154+ GetContentCls.Ptr = GetContentPtr
155+ return GetContentCls
156+
157+}
158+
159+var xFlapGetFlap func(uintptr) uintptr
160+
161+// Gets the flap widget for @self.
162+func (x *Flap) GetFlap() *gtk.Widget {
163+
164+ GetFlapPtr := xFlapGetFlap(x.GoPointer())
165+ if GetFlapPtr == 0 {
166+ return nil
167+ }
168+
169+ gobject.IncreaseRef(GetFlapPtr)
170+
171+ GetFlapCls := &gtk.Widget{}
172+ GetFlapCls.Ptr = GetFlapPtr
173+ return GetFlapCls
174+
175+}
176+
177+var xFlapGetFlapPosition func(uintptr) gtk.PackType
178+
179+// Gets the flap position for @self.
180+func (x *Flap) GetFlapPosition() gtk.PackType {
181+
182+ return xFlapGetFlapPosition(x.GoPointer())
183+
184+}
185+
186+var xFlapGetFoldDuration func(uintptr) uint
187+
188+// Gets the fold transition animation duration for @self, in milliseconds.
189+func (x *Flap) GetFoldDuration() uint {
190+
191+ return xFlapGetFoldDuration(x.GoPointer())
192+
193+}
194+
195+var xFlapGetFoldPolicy func(uintptr) FlapFoldPolicy
196+
197+// Gets the fold policy for @self.
198+func (x *Flap) GetFoldPolicy() FlapFoldPolicy {
199+
200+ return xFlapGetFoldPolicy(x.GoPointer())
201+
202+}
203+
204+var xFlapGetFoldThresholdPolicy func(uintptr) FoldThresholdPolicy
205+
206+// Gets the fold threshold policy for @self.
207+func (x *Flap) GetFoldThresholdPolicy() FoldThresholdPolicy {
208+
209+ return xFlapGetFoldThresholdPolicy(x.GoPointer())
210+
211+}
212+
213+var xFlapGetFolded func(uintptr) bool
214+
215+// Gets whether @self is currently folded.
216+//
217+// See [property@Flap:fold-policy].
218+func (x *Flap) GetFolded() bool {
219+
220+ return xFlapGetFolded(x.GoPointer())
221+
222+}
223+
224+var xFlapGetLocked func(uintptr) bool
225+
226+// Gets whether @self is locked.
227+func (x *Flap) GetLocked() bool {
228+
229+ return xFlapGetLocked(x.GoPointer())
230+
231+}
232+
233+var xFlapGetModal func(uintptr) bool
234+
235+// Gets whether @self is modal.
236+func (x *Flap) GetModal() bool {
237+
238+ return xFlapGetModal(x.GoPointer())
239+
240+}
241+
242+var xFlapGetRevealFlap func(uintptr) bool
243+
244+// Gets whether the flap widget is revealed for @self.
245+func (x *Flap) GetRevealFlap() bool {
246+
247+ return xFlapGetRevealFlap(x.GoPointer())
248+
249+}
250+
251+var xFlapGetRevealParams func(uintptr) *SpringParams
252+
253+// Gets the reveal animation spring parameters for @self.
254+func (x *Flap) GetRevealParams() *SpringParams {
255+
256+ return xFlapGetRevealParams(x.GoPointer())
257+
258+}
259+
260+var xFlapGetRevealProgress func(uintptr) float64
261+
262+// Gets the current reveal progress for @self.
263+//
264+// 0 means fully hidden, 1 means fully revealed.
265+//
266+// See [property@Flap:reveal-flap].
267+func (x *Flap) GetRevealProgress() float64 {
268+
269+ return xFlapGetRevealProgress(x.GoPointer())
270+
271+}
272+
273+var xFlapGetSeparator func(uintptr) uintptr
274+
275+// Gets the separator widget for @self.
276+func (x *Flap) GetSeparator() *gtk.Widget {
277+
278+ GetSeparatorPtr := xFlapGetSeparator(x.GoPointer())
279+ if GetSeparatorPtr == 0 {
280+ return nil
281+ }
282+
283+ gobject.IncreaseRef(GetSeparatorPtr)
284+
285+ GetSeparatorCls := &gtk.Widget{}
286+ GetSeparatorCls.Ptr = GetSeparatorPtr
287+ return GetSeparatorCls
288+
289+}
290+
291+var xFlapGetSwipeToClose func(uintptr) bool
292+
293+// Gets whether @self can be closed with a swipe gesture.
294+func (x *Flap) GetSwipeToClose() bool {
295+
296+ return xFlapGetSwipeToClose(x.GoPointer())
297+
298+}
299+
300+var xFlapGetSwipeToOpen func(uintptr) bool
301+
302+// Gets whether @self can be opened with a swipe gesture.
303+func (x *Flap) GetSwipeToOpen() bool {
304+
305+ return xFlapGetSwipeToOpen(x.GoPointer())
306+
307+}
308+
309+var xFlapGetTransitionType func(uintptr) FlapTransitionType
310+
311+// Gets the type of animation used for reveal and fold transitions in @self.
312+func (x *Flap) GetTransitionType() FlapTransitionType {
313+
314+ return xFlapGetTransitionType(x.GoPointer())
315+
316+}
317+
318+var xFlapSetContent func(uintptr, uintptr)
319+
320+// Sets the content widget for @self.
321+//
322+// It's always displayed when unfolded, and partially visible when folded.
323+func (x *Flap) SetContent(ContentVar *gtk.Widget) {
324+
325+ xFlapSetContent(x.GoPointer(), ContentVar.GoPointer())
326+
327+}
328+
329+var xFlapSetFlap func(uintptr, uintptr)
330+
331+// Sets the flap widget for @self.
332+//
333+// It's only visible when [property@Flap:reveal-progress] is greater than 0.
334+func (x *Flap) SetFlap(FlapVar *gtk.Widget) {
335+
336+ xFlapSetFlap(x.GoPointer(), FlapVar.GoPointer())
337+
338+}
339+
340+var xFlapSetFlapPosition func(uintptr, gtk.PackType)
341+
342+// Sets the flap position for @self.
343+//
344+// If it's set to `GTK_PACK_START`, the flap is displayed before the content,
345+// if `GTK_PACK_END`, it's displayed after the content.
346+func (x *Flap) SetFlapPosition(PositionVar gtk.PackType) {
347+
348+ xFlapSetFlapPosition(x.GoPointer(), PositionVar)
349+
350+}
351+
352+var xFlapSetFoldDuration func(uintptr, uint)
353+
354+// Sets the fold transition animation duration for @self, in milliseconds.
355+func (x *Flap) SetFoldDuration(DurationVar uint) {
356+
357+ xFlapSetFoldDuration(x.GoPointer(), DurationVar)
358+
359+}
360+
361+var xFlapSetFoldPolicy func(uintptr, FlapFoldPolicy)
362+
363+// Sets the fold policy for @self.
364+func (x *Flap) SetFoldPolicy(PolicyVar FlapFoldPolicy) {
365+
366+ xFlapSetFoldPolicy(x.GoPointer(), PolicyVar)
367+
368+}
369+
370+var xFlapSetFoldThresholdPolicy func(uintptr, FoldThresholdPolicy)
371+
372+// Sets the fold threshold policy for @self.
373+//
374+// If set to `ADW_FOLD_THRESHOLD_POLICY_MINIMUM`, flap will only fold when the
375+// children cannot fit anymore. With `ADW_FOLD_THRESHOLD_POLICY_NATURAL`, it
376+// will fold as soon as children don't get their natural size.
377+//
378+// This can be useful if you have a long ellipsizing label and want to let it
379+// ellipsize instead of immediately folding.
380+func (x *Flap) SetFoldThresholdPolicy(PolicyVar FoldThresholdPolicy) {
381+
382+ xFlapSetFoldThresholdPolicy(x.GoPointer(), PolicyVar)
383+
384+}
385+
386+var xFlapSetLocked func(uintptr, bool)
387+
388+// Sets whether @self is locked.
389+//
390+// If `FALSE`, folding when the flap is revealed automatically closes it, and
391+// unfolding it when the flap is not revealed opens it. If `TRUE`,
392+// [property@Flap:reveal-flap] value never changes on its own.
393+func (x *Flap) SetLocked(LockedVar bool) {
394+
395+ xFlapSetLocked(x.GoPointer(), LockedVar)
396+
397+}
398+
399+var xFlapSetModal func(uintptr, bool)
400+
401+// Sets whether @self is modal.
402+//
403+// If `TRUE`, clicking the content widget while flap is revealed, as well as
404+// pressing the &lt;kbd&gt;Esc&lt;/kbd&gt; key, will close the flap. If `FALSE`, clicks are
405+// passed through to the content widget.
406+func (x *Flap) SetModal(ModalVar bool) {
407+
408+ xFlapSetModal(x.GoPointer(), ModalVar)
409+
410+}
411+
412+var xFlapSetRevealFlap func(uintptr, bool)
413+
414+// Sets whether the flap widget is revealed for @self.
415+func (x *Flap) SetRevealFlap(RevealFlapVar bool) {
416+
417+ xFlapSetRevealFlap(x.GoPointer(), RevealFlapVar)
418+
419+}
420+
421+var xFlapSetRevealParams func(uintptr, *SpringParams)
422+
423+// Sets the reveal animation spring parameters for @self.
424+//
425+// The default value is equivalent to:
426+//
427+// ```c
428+// adw_spring_params_new (1, 0.5, 500)
429+// ```
430+func (x *Flap) SetRevealParams(ParamsVar *SpringParams) {
431+
432+ xFlapSetRevealParams(x.GoPointer(), ParamsVar)
433+
434+}
435+
436+var xFlapSetSeparator func(uintptr, uintptr)
437+
438+// Sets the separator widget for @self.
439+//
440+// It's displayed between content and flap when there's no shadow to display.
441+// When exactly it's visible depends on the [property@Flap:transition-type]
442+// value.
443+func (x *Flap) SetSeparator(SeparatorVar *gtk.Widget) {
444+
445+ xFlapSetSeparator(x.GoPointer(), SeparatorVar.GoPointer())
446+
447+}
448+
449+var xFlapSetSwipeToClose func(uintptr, bool)
450+
451+// Sets whether @self can be closed with a swipe gesture.
452+//
453+// The area that can be swiped depends on the [property@Flap:transition-type]
454+// value.
455+func (x *Flap) SetSwipeToClose(SwipeToCloseVar bool) {
456+
457+ xFlapSetSwipeToClose(x.GoPointer(), SwipeToCloseVar)
458+
459+}
460+
461+var xFlapSetSwipeToOpen func(uintptr, bool)
462+
463+// Sets whether @self can be opened with a swipe gesture.
464+//
465+// The area that can be swiped depends on the [property@Flap:transition-type]
466+// value.
467+func (x *Flap) SetSwipeToOpen(SwipeToOpenVar bool) {
468+
469+ xFlapSetSwipeToOpen(x.GoPointer(), SwipeToOpenVar)
470+
471+}
472+
473+var xFlapSetTransitionType func(uintptr, FlapTransitionType)
474+
475+// Sets the type of animation used for reveal and fold transitions in @self.
476+//
477+// [property@Flap:flap] is transparent by default, which means the content will
478+// be seen through it with `ADW_FLAP_TRANSITION_TYPE_OVER` transitions; add the
479+// [`.background`](style-classes.html#background) style class to it if this is
480+// unwanted.
481+func (x *Flap) SetTransitionType(TransitionTypeVar FlapTransitionType) {
482+
483+ xFlapSetTransitionType(x.GoPointer(), TransitionTypeVar)
484+
485+}
486+
487+func (c *Flap) GoPointer() uintptr {
488+ return c.Ptr
489+}
490+
491+func (c *Flap) SetGoPointer(ptr uintptr) {
492+ c.Ptr = ptr
493+}
494+
495+// Gets the progress @self will snap back to after the gesture is canceled.
496+func (x *Flap) GetCancelProgress() float64 {
497+
498+ return XAdwSwipeableGetCancelProgress(x.GoPointer())
499+
500+}
501+
502+// Gets the swipe distance of @self.
503+//
504+// This corresponds to how many pixels 1 unit represents.
505+func (x *Flap) GetDistance() float64 {
506+
507+ return XAdwSwipeableGetDistance(x.GoPointer())
508+
509+}
510+
511+// Gets the current progress of @self.
512+func (x *Flap) GetProgress() float64 {
513+
514+ return XAdwSwipeableGetProgress(x.GoPointer())
515+
516+}
517+
518+// Gets the snap points of @self.
519+//
520+// Each snap point represents a progress value that is considered acceptable to
521+// end the swipe on.
522+func (x *Flap) GetSnapPoints(NSnapPointsVar int32) uintptr {
523+
524+ return XAdwSwipeableGetSnapPoints(x.GoPointer(), NSnapPointsVar)
525+
526+}
527+
528+// Gets the area @self can start a swipe from for the given direction and
529+// gesture type.
530+//
531+// This can be used to restrict swipes to only be possible from a certain area,
532+// for example, to only allow edge swipes, or to have a draggable element and
533+// ignore swipes elsewhere.
534+//
535+// If not implemented, the default implementation returns the allocation of
536+// @self, allowing swipes from anywhere.
537+func (x *Flap) GetSwipeArea(NavigationDirectionVar NavigationDirection, IsDragVar bool, RectVar *gdk.Rectangle) {
538+
539+ XAdwSwipeableGetSwipeArea(x.GoPointer(), NavigationDirectionVar, IsDragVar, RectVar)
540+
541+}
542+
543+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
544+func (x *Flap) GetAccessibleRole() gtk.AccessibleRole {
545+
546+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
547+
548+}
549+
550+// Resets the accessible @property to its default value.
551+func (x *Flap) ResetProperty(PropertyVar gtk.AccessibleProperty) {
552+
553+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
554+
555+}
556+
557+// Resets the accessible @relation to its default value.
558+func (x *Flap) ResetRelation(RelationVar gtk.AccessibleRelation) {
559+
560+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
561+
562+}
563+
564+// Resets the accessible @state to its default value.
565+func (x *Flap) ResetState(StateVar gtk.AccessibleState) {
566+
567+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
568+
569+}
570+
571+// Updates a list of accessible properties.
572+//
573+// See the [enum@Gtk.AccessibleProperty] documentation for the
574+// value types of accessible properties.
575+//
576+// This function should be called by `GtkWidget` types whenever
577+// an accessible property change must be communicated to assistive
578+// technologies.
579+//
580+// Example:
581+// ```c
582+// value = gtk_adjustment_get_value (adjustment);
583+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
584+//
585+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
586+// -1);
587+//
588+// ```
589+func (x *Flap) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
590+
591+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
592+
593+}
594+
595+// Updates an array of accessible properties.
596+//
597+// This function should be called by `GtkWidget` types whenever an accessible
598+// property change must be communicated to assistive technologies.
599+//
600+// This function is meant to be used by language bindings.
601+func (x *Flap) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
602+
603+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
604+
605+}
606+
607+// Updates a list of accessible relations.
608+//
609+// This function should be called by `GtkWidget` types whenever an accessible
610+// relation change must be communicated to assistive technologies.
611+//
612+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
613+// you should pass each reference individually, followed by %NULL, e.g.
614+//
615+// ```c
616+// gtk_accessible_update_relation (accessible,
617+//
618+// GTK_ACCESSIBLE_RELATION_CONTROLS,
619+// ref1, NULL,
620+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
621+// ref1, ref2, ref3, NULL,
622+// -1);
623+//
624+// ```
625+func (x *Flap) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
626+
627+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
628+
629+}
630+
631+// Updates an array of accessible relations.
632+//
633+// This function should be called by `GtkWidget` types whenever an accessible
634+// relation change must be communicated to assistive technologies.
635+//
636+// This function is meant to be used by language bindings.
637+func (x *Flap) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
638+
639+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
640+
641+}
642+
643+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
644+// documentation for the value types of accessible states.
645+//
646+// This function should be called by `GtkWidget` types whenever an accessible
647+// state change must be communicated to assistive technologies.
648+//
649+// Example:
650+// ```c
651+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
652+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
653+//
654+// GTK_ACCESSIBLE_STATE_CHECKED, value,
655+// -1);
656+//
657+// ```
658+func (x *Flap) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
659+
660+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
661+
662+}
663+
664+// Updates an array of accessible states.
665+//
666+// This function should be called by `GtkWidget` types whenever an accessible
667+// state change must be communicated to assistive technologies.
668+//
669+// This function is meant to be used by language bindings.
670+func (x *Flap) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
671+
672+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
673+
674+}
675+
676+// Gets the ID of the @buildable object.
677+//
678+// `GtkBuilder` sets the name based on the ID attribute
679+// of the &lt;object&gt; tag used to construct the @buildable.
680+func (x *Flap) GetBuildableId() string {
681+
682+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
683+
684+}
685+
686+// Retrieves the orientation of the @orientable.
687+func (x *Flap) GetOrientation() gtk.Orientation {
688+
689+ return gtk.XGtkOrientableGetOrientation(x.GoPointer())
690+
691+}
692+
693+// Sets the orientation of the @orientable.
694+func (x *Flap) SetOrientation(OrientationVar gtk.Orientation) {
695+
696+ gtk.XGtkOrientableSetOrientation(x.GoPointer(), OrientationVar)
697+
698+}
699+
700+func init() {
701+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
702+ if err != nil {
703+ panic(err)
704+ }
705+
706+ core.PuregoSafeRegister(&xNewFlap, lib, "adw_flap_new")
707+
708+ core.PuregoSafeRegister(&xFlapGetContent, lib, "adw_flap_get_content")
709+ core.PuregoSafeRegister(&xFlapGetFlap, lib, "adw_flap_get_flap")
710+ core.PuregoSafeRegister(&xFlapGetFlapPosition, lib, "adw_flap_get_flap_position")
711+ core.PuregoSafeRegister(&xFlapGetFoldDuration, lib, "adw_flap_get_fold_duration")
712+ core.PuregoSafeRegister(&xFlapGetFoldPolicy, lib, "adw_flap_get_fold_policy")
713+ core.PuregoSafeRegister(&xFlapGetFoldThresholdPolicy, lib, "adw_flap_get_fold_threshold_policy")
714+ core.PuregoSafeRegister(&xFlapGetFolded, lib, "adw_flap_get_folded")
715+ core.PuregoSafeRegister(&xFlapGetLocked, lib, "adw_flap_get_locked")
716+ core.PuregoSafeRegister(&xFlapGetModal, lib, "adw_flap_get_modal")
717+ core.PuregoSafeRegister(&xFlapGetRevealFlap, lib, "adw_flap_get_reveal_flap")
718+ core.PuregoSafeRegister(&xFlapGetRevealParams, lib, "adw_flap_get_reveal_params")
719+ core.PuregoSafeRegister(&xFlapGetRevealProgress, lib, "adw_flap_get_reveal_progress")
720+ core.PuregoSafeRegister(&xFlapGetSeparator, lib, "adw_flap_get_separator")
721+ core.PuregoSafeRegister(&xFlapGetSwipeToClose, lib, "adw_flap_get_swipe_to_close")
722+ core.PuregoSafeRegister(&xFlapGetSwipeToOpen, lib, "adw_flap_get_swipe_to_open")
723+ core.PuregoSafeRegister(&xFlapGetTransitionType, lib, "adw_flap_get_transition_type")
724+ core.PuregoSafeRegister(&xFlapSetContent, lib, "adw_flap_set_content")
725+ core.PuregoSafeRegister(&xFlapSetFlap, lib, "adw_flap_set_flap")
726+ core.PuregoSafeRegister(&xFlapSetFlapPosition, lib, "adw_flap_set_flap_position")
727+ core.PuregoSafeRegister(&xFlapSetFoldDuration, lib, "adw_flap_set_fold_duration")
728+ core.PuregoSafeRegister(&xFlapSetFoldPolicy, lib, "adw_flap_set_fold_policy")
729+ core.PuregoSafeRegister(&xFlapSetFoldThresholdPolicy, lib, "adw_flap_set_fold_threshold_policy")
730+ core.PuregoSafeRegister(&xFlapSetLocked, lib, "adw_flap_set_locked")
731+ core.PuregoSafeRegister(&xFlapSetModal, lib, "adw_flap_set_modal")
732+ core.PuregoSafeRegister(&xFlapSetRevealFlap, lib, "adw_flap_set_reveal_flap")
733+ core.PuregoSafeRegister(&xFlapSetRevealParams, lib, "adw_flap_set_reveal_params")
734+ core.PuregoSafeRegister(&xFlapSetSeparator, lib, "adw_flap_set_separator")
735+ core.PuregoSafeRegister(&xFlapSetSwipeToClose, lib, "adw_flap_set_swipe_to_close")
736+ core.PuregoSafeRegister(&xFlapSetSwipeToOpen, lib, "adw_flap_set_swipe_to_open")
737+ core.PuregoSafeRegister(&xFlapSetTransitionType, lib, "adw_flap_set_transition_type")
738+
739+}
A v4/adw/adw-fold-threshold-policy.go +13 -0
@@ -0,0 +1,13 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+// Determines when [class@Flap] and [class@Leaflet] will fold.
5+type FoldThresholdPolicy int
6+
7+const (
8+
9+ // Folding is based on the minimum size
10+ FoldThresholdPolicyMinimumValue FoldThresholdPolicy = 0
11+ // Folding is based on the natural size
12+ FoldThresholdPolicyNaturalValue FoldThresholdPolicy = 1
13+)
A v4/adw/adw-header-bar.go +486 -0
@@ -0,0 +1,486 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gobject"
8+ "github.com/jwijenbergh/puregotk/v4/gtk"
9+)
10+
11+type HeaderBarClass struct {
12+ ParentClass uintptr
13+}
14+
15+// Describes title centering behavior of a [class@HeaderBar] widget.
16+type CenteringPolicy int
17+
18+const (
19+
20+ // Keep the title centered when possible
21+ CenteringPolicyLooseValue CenteringPolicy = 0
22+ // Keep the title centered at all cost
23+ CenteringPolicyStrictValue CenteringPolicy = 1
24+)
25+
26+// A title bar widget.
27+//
28+// &lt;picture&gt;
29+//
30+// &lt;source srcset="header-bar-dark.png" media="(prefers-color-scheme: dark)"&gt;
31+// &lt;img src="header-bar.png" alt="header-bar"&gt;
32+//
33+// &lt;/picture&gt;
34+//
35+// `AdwHeaderBar` is similar to [class@Gtk.HeaderBar], but provides additional
36+// features compared to it. Refer to `GtkHeaderBar` for details.
37+//
38+// [property@HeaderBar:centering-policy] allows to enforce strict centering of
39+// the title widget, this is useful for [class@ViewSwitcherTitle].
40+//
41+// [property@HeaderBar:show-start-title-buttons] and
42+// [property@HeaderBar:show-end-title-buttons] allow to easily create split
43+// header bar layouts using [class@Leaflet], as follows:
44+//
45+// ```xml
46+// &lt;object class="AdwLeaflet" id="leaflet"&gt;
47+//
48+// &lt;child&gt;
49+// &lt;object class="GtkBox"&gt;
50+// &lt;property name="orientation"&gt;vertical&lt;/property&gt;
51+// &lt;child&gt;
52+// &lt;object class="AdwHeaderBar"&gt;
53+// &lt;binding name="show-end-title-buttons"&gt;
54+// &lt;lookup name="folded"&gt;leaflet&lt;/lookup&gt;
55+// &lt;/binding&gt;
56+// &lt;/object&gt;
57+// &lt;/child&gt;
58+// &lt;!-- ... --&gt;
59+// &lt;/object&gt;
60+// &lt;/child&gt;
61+// &lt;!-- ... --&gt;
62+// &lt;child&gt;
63+// &lt;object class="GtkBox"&gt;
64+// &lt;property name="orientation"&gt;vertical&lt;/property&gt;
65+// &lt;property name="hexpand"&gt;True&lt;/property&gt;
66+// &lt;child&gt;
67+// &lt;object class="AdwHeaderBar"&gt;
68+// &lt;binding name="show-start-title-buttons"&gt;
69+// &lt;lookup name="folded"&gt;leaflet&lt;/lookup&gt;
70+// &lt;/binding&gt;
71+// &lt;/object&gt;
72+// &lt;/child&gt;
73+// &lt;!-- ... --&gt;
74+// &lt;/object&gt;
75+// &lt;/child&gt;
76+//
77+// &lt;/object&gt;
78+// ```
79+//
80+// &lt;picture&gt;
81+//
82+// &lt;source srcset="header-bar-split-dark.png" media="(prefers-color-scheme: dark)"&gt;
83+// &lt;img src="header-bar-split.png" alt="header-bar-split"&gt;
84+//
85+// &lt;/picture&gt;
86+//
87+// ## CSS nodes
88+//
89+// ```
90+// headerbar
91+// ╰── windowhandle
92+//
93+// ╰── box
94+// ├── widget
95+// │ ╰── box.start
96+// │ ├── windowcontrols.start
97+// │ ╰── [other children]
98+// ├── [Title Widget]
99+// ╰── widget
100+// ╰── box.end
101+// ├── [other children]
102+// ╰── windowcontrols.end
103+//
104+// ```
105+//
106+// `AdwHeaderBar`'s CSS node is called `headerbar`. It contains a `windowhandle`
107+// subnode, which contains a `box` subnode, which contains two `widget` subnodes
108+// at the start and end of the header bar, each of which contains a `box`
109+// subnode with the `.start` and `.end` style classes respectively, as well as a
110+// center node that represents the title.
111+//
112+// Each of the boxes contains a `windowcontrols` subnode, see
113+// [class@Gtk.WindowControls] for details, as well as other children.
114+//
115+// ## Accessibility
116+//
117+// `AdwHeaderBar` uses the `GTK_ACCESSIBLE_ROLE_GROUP` role.
118+type HeaderBar struct {
119+ gtk.Widget
120+}
121+
122+func HeaderBarNewFromInternalPtr(ptr uintptr) *HeaderBar {
123+ cls := &HeaderBar{}
124+ cls.Ptr = ptr
125+ return cls
126+}
127+
128+var xNewHeaderBar func() uintptr
129+
130+// Creates a new `AdwHeaderBar`.
131+func NewHeaderBar() *gtk.Widget {
132+ NewHeaderBarPtr := xNewHeaderBar()
133+ if NewHeaderBarPtr == 0 {
134+ return nil
135+ }
136+
137+ gobject.IncreaseRef(NewHeaderBarPtr)
138+
139+ NewHeaderBarCls := &gtk.Widget{}
140+ NewHeaderBarCls.Ptr = NewHeaderBarPtr
141+ return NewHeaderBarCls
142+}
143+
144+var xHeaderBarGetCenteringPolicy func(uintptr) CenteringPolicy
145+
146+// Gets the policy for aligning the center widget.
147+func (x *HeaderBar) GetCenteringPolicy() CenteringPolicy {
148+
149+ return xHeaderBarGetCenteringPolicy(x.GoPointer())
150+
151+}
152+
153+var xHeaderBarGetDecorationLayout func(uintptr) string
154+
155+// Gets the decoration layout for @self.
156+func (x *HeaderBar) GetDecorationLayout() string {
157+
158+ return xHeaderBarGetDecorationLayout(x.GoPointer())
159+
160+}
161+
162+var xHeaderBarGetShowEndTitleButtons func(uintptr) bool
163+
164+// Gets whether to show title buttons at the end of @self.
165+func (x *HeaderBar) GetShowEndTitleButtons() bool {
166+
167+ return xHeaderBarGetShowEndTitleButtons(x.GoPointer())
168+
169+}
170+
171+var xHeaderBarGetShowStartTitleButtons func(uintptr) bool
172+
173+// Gets whether to show title buttons at the start of @self.
174+func (x *HeaderBar) GetShowStartTitleButtons() bool {
175+
176+ return xHeaderBarGetShowStartTitleButtons(x.GoPointer())
177+
178+}
179+
180+var xHeaderBarGetTitleWidget func(uintptr) uintptr
181+
182+// Gets the title widget widget of @self.
183+func (x *HeaderBar) GetTitleWidget() *gtk.Widget {
184+
185+ GetTitleWidgetPtr := xHeaderBarGetTitleWidget(x.GoPointer())
186+ if GetTitleWidgetPtr == 0 {
187+ return nil
188+ }
189+
190+ gobject.IncreaseRef(GetTitleWidgetPtr)
191+
192+ GetTitleWidgetCls := &gtk.Widget{}
193+ GetTitleWidgetCls.Ptr = GetTitleWidgetPtr
194+ return GetTitleWidgetCls
195+
196+}
197+
198+var xHeaderBarPackEnd func(uintptr, uintptr)
199+
200+// Adds @child to @self, packed with reference to the end of @self.
201+func (x *HeaderBar) PackEnd(ChildVar *gtk.Widget) {
202+
203+ xHeaderBarPackEnd(x.GoPointer(), ChildVar.GoPointer())
204+
205+}
206+
207+var xHeaderBarPackStart func(uintptr, uintptr)
208+
209+// Adds @child to @self, packed with reference to the start of the @self.
210+func (x *HeaderBar) PackStart(ChildVar *gtk.Widget) {
211+
212+ xHeaderBarPackStart(x.GoPointer(), ChildVar.GoPointer())
213+
214+}
215+
216+var xHeaderBarRemove func(uintptr, uintptr)
217+
218+// Removes a child from @self.
219+//
220+// The child must have been added with [method@HeaderBar.pack_start],
221+// [method@HeaderBar.pack_end] or [property@HeaderBar:title-widget].
222+func (x *HeaderBar) Remove(ChildVar *gtk.Widget) {
223+
224+ xHeaderBarRemove(x.GoPointer(), ChildVar.GoPointer())
225+
226+}
227+
228+var xHeaderBarSetCenteringPolicy func(uintptr, CenteringPolicy)
229+
230+// Sets the policy for aligning the center widget.
231+func (x *HeaderBar) SetCenteringPolicy(CenteringPolicyVar CenteringPolicy) {
232+
233+ xHeaderBarSetCenteringPolicy(x.GoPointer(), CenteringPolicyVar)
234+
235+}
236+
237+var xHeaderBarSetDecorationLayout func(uintptr, string)
238+
239+// Sets the decoration layout for @self.
240+//
241+// If this property is not set, the
242+// [property@Gtk.Settings:gtk-decoration-layout] setting is used.
243+//
244+// The format of the string is button names, separated by commas. A colon
245+// separates the buttons that should appear at the start from those at the end.
246+// Recognized button names are minimize, maximize, close and icon (the window
247+// icon).
248+//
249+// For example, “icon:minimize,maximize,close” specifies an icon at the start,
250+// and minimize, maximize and close buttons at the end.
251+func (x *HeaderBar) SetDecorationLayout(LayoutVar string) {
252+
253+ xHeaderBarSetDecorationLayout(x.GoPointer(), LayoutVar)
254+
255+}
256+
257+var xHeaderBarSetShowEndTitleButtons func(uintptr, bool)
258+
259+// Sets whether to show title buttons at the end of @self.
260+//
261+// See [property@HeaderBar:show-start-title-buttons] for the other side.
262+//
263+// Which buttons are actually shown and where is determined by the
264+// [property@HeaderBar:decoration-layout] property, and by the state of the
265+// window (e.g. a close button will not be shown if the window can't be closed).
266+func (x *HeaderBar) SetShowEndTitleButtons(SettingVar bool) {
267+
268+ xHeaderBarSetShowEndTitleButtons(x.GoPointer(), SettingVar)
269+
270+}
271+
272+var xHeaderBarSetShowStartTitleButtons func(uintptr, bool)
273+
274+// Sets whether to show title buttons at the start of @self.
275+//
276+// See [property@HeaderBar:show-end-title-buttons] for the other side.
277+//
278+// Which buttons are actually shown and where is determined by the
279+// [property@HeaderBar:decoration-layout] property, and by the state of the
280+// window (e.g. a close button will not be shown if the window can't be closed).
281+func (x *HeaderBar) SetShowStartTitleButtons(SettingVar bool) {
282+
283+ xHeaderBarSetShowStartTitleButtons(x.GoPointer(), SettingVar)
284+
285+}
286+
287+var xHeaderBarSetTitleWidget func(uintptr, uintptr)
288+
289+// Sets the title widget for @self.
290+//
291+// When set to `NULL`, the header bar will display the title of the window it
292+// is contained in.
293+//
294+// To use a different title, use [class@WindowTitle]:
295+//
296+// ```xml
297+// &lt;object class="AdwHeaderBar"&gt;
298+//
299+// &lt;property name="title-widget"&gt;
300+// &lt;object class="AdwWindowTitle"&gt;
301+// &lt;property name="title" translatable="yes"&gt;Title&lt;/property&gt;
302+// &lt;/object&gt;
303+// &lt;/property&gt;
304+//
305+// &lt;/object&gt;
306+// ```
307+func (x *HeaderBar) SetTitleWidget(TitleWidgetVar *gtk.Widget) {
308+
309+ xHeaderBarSetTitleWidget(x.GoPointer(), TitleWidgetVar.GoPointer())
310+
311+}
312+
313+func (c *HeaderBar) GoPointer() uintptr {
314+ return c.Ptr
315+}
316+
317+func (c *HeaderBar) SetGoPointer(ptr uintptr) {
318+ c.Ptr = ptr
319+}
320+
321+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
322+func (x *HeaderBar) GetAccessibleRole() gtk.AccessibleRole {
323+
324+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
325+
326+}
327+
328+// Resets the accessible @property to its default value.
329+func (x *HeaderBar) ResetProperty(PropertyVar gtk.AccessibleProperty) {
330+
331+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
332+
333+}
334+
335+// Resets the accessible @relation to its default value.
336+func (x *HeaderBar) ResetRelation(RelationVar gtk.AccessibleRelation) {
337+
338+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
339+
340+}
341+
342+// Resets the accessible @state to its default value.
343+func (x *HeaderBar) ResetState(StateVar gtk.AccessibleState) {
344+
345+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
346+
347+}
348+
349+// Updates a list of accessible properties.
350+//
351+// See the [enum@Gtk.AccessibleProperty] documentation for the
352+// value types of accessible properties.
353+//
354+// This function should be called by `GtkWidget` types whenever
355+// an accessible property change must be communicated to assistive
356+// technologies.
357+//
358+// Example:
359+// ```c
360+// value = gtk_adjustment_get_value (adjustment);
361+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
362+//
363+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
364+// -1);
365+//
366+// ```
367+func (x *HeaderBar) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
368+
369+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
370+
371+}
372+
373+// Updates an array of accessible properties.
374+//
375+// This function should be called by `GtkWidget` types whenever an accessible
376+// property change must be communicated to assistive technologies.
377+//
378+// This function is meant to be used by language bindings.
379+func (x *HeaderBar) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
380+
381+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
382+
383+}
384+
385+// Updates a list of accessible relations.
386+//
387+// This function should be called by `GtkWidget` types whenever an accessible
388+// relation change must be communicated to assistive technologies.
389+//
390+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
391+// you should pass each reference individually, followed by %NULL, e.g.
392+//
393+// ```c
394+// gtk_accessible_update_relation (accessible,
395+//
396+// GTK_ACCESSIBLE_RELATION_CONTROLS,
397+// ref1, NULL,
398+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
399+// ref1, ref2, ref3, NULL,
400+// -1);
401+//
402+// ```
403+func (x *HeaderBar) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
404+
405+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
406+
407+}
408+
409+// Updates an array of accessible relations.
410+//
411+// This function should be called by `GtkWidget` types whenever an accessible
412+// relation change must be communicated to assistive technologies.
413+//
414+// This function is meant to be used by language bindings.
415+func (x *HeaderBar) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
416+
417+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
418+
419+}
420+
421+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
422+// documentation for the value types of accessible states.
423+//
424+// This function should be called by `GtkWidget` types whenever an accessible
425+// state change must be communicated to assistive technologies.
426+//
427+// Example:
428+// ```c
429+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
430+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
431+//
432+// GTK_ACCESSIBLE_STATE_CHECKED, value,
433+// -1);
434+//
435+// ```
436+func (x *HeaderBar) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
437+
438+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
439+
440+}
441+
442+// Updates an array of accessible states.
443+//
444+// This function should be called by `GtkWidget` types whenever an accessible
445+// state change must be communicated to assistive technologies.
446+//
447+// This function is meant to be used by language bindings.
448+func (x *HeaderBar) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
449+
450+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
451+
452+}
453+
454+// Gets the ID of the @buildable object.
455+//
456+// `GtkBuilder` sets the name based on the ID attribute
457+// of the &lt;object&gt; tag used to construct the @buildable.
458+func (x *HeaderBar) GetBuildableId() string {
459+
460+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
461+
462+}
463+
464+func init() {
465+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
466+ if err != nil {
467+ panic(err)
468+ }
469+
470+ core.PuregoSafeRegister(&xNewHeaderBar, lib, "adw_header_bar_new")
471+
472+ core.PuregoSafeRegister(&xHeaderBarGetCenteringPolicy, lib, "adw_header_bar_get_centering_policy")
473+ core.PuregoSafeRegister(&xHeaderBarGetDecorationLayout, lib, "adw_header_bar_get_decoration_layout")
474+ core.PuregoSafeRegister(&xHeaderBarGetShowEndTitleButtons, lib, "adw_header_bar_get_show_end_title_buttons")
475+ core.PuregoSafeRegister(&xHeaderBarGetShowStartTitleButtons, lib, "adw_header_bar_get_show_start_title_buttons")
476+ core.PuregoSafeRegister(&xHeaderBarGetTitleWidget, lib, "adw_header_bar_get_title_widget")
477+ core.PuregoSafeRegister(&xHeaderBarPackEnd, lib, "adw_header_bar_pack_end")
478+ core.PuregoSafeRegister(&xHeaderBarPackStart, lib, "adw_header_bar_pack_start")
479+ core.PuregoSafeRegister(&xHeaderBarRemove, lib, "adw_header_bar_remove")
480+ core.PuregoSafeRegister(&xHeaderBarSetCenteringPolicy, lib, "adw_header_bar_set_centering_policy")
481+ core.PuregoSafeRegister(&xHeaderBarSetDecorationLayout, lib, "adw_header_bar_set_decoration_layout")
482+ core.PuregoSafeRegister(&xHeaderBarSetShowEndTitleButtons, lib, "adw_header_bar_set_show_end_title_buttons")
483+ core.PuregoSafeRegister(&xHeaderBarSetShowStartTitleButtons, lib, "adw_header_bar_set_show_start_title_buttons")
484+ core.PuregoSafeRegister(&xHeaderBarSetTitleWidget, lib, "adw_header_bar_set_title_widget")
485+
486+}
A v4/adw/adw-leaflet.go +880 -0
@@ -0,0 +1,880 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gdk"
8+ "github.com/jwijenbergh/puregotk/v4/gobject"
9+ "github.com/jwijenbergh/puregotk/v4/gtk"
10+)
11+
12+type LeafletClass struct {
13+ ParentClass uintptr
14+}
15+
16+type LeafletPageClass struct {
17+ ParentClass uintptr
18+}
19+
20+// Describes the possible transitions in a [class@Leaflet] widget.
21+//
22+// New values may be added to this enumeration over time.
23+type LeafletTransitionType int
24+
25+const (
26+
27+ // Cover the old page or uncover the new page, sliding from or towards the end according to orientation, text direction and children order
28+ LeafletTransitionTypeOverValue LeafletTransitionType = 0
29+ // Uncover the new page or cover the old page, sliding from or towards the start according to orientation, text direction and children order
30+ LeafletTransitionTypeUnderValue LeafletTransitionType = 1
31+ // Slide from left, right, up or down according to the orientation, text direction and the children order
32+ LeafletTransitionTypeSlideValue LeafletTransitionType = 2
33+)
34+
35+// An adaptive container acting like a box or a stack.
36+//
37+// &lt;picture&gt;
38+//
39+// &lt;source srcset="leaflet-wide-dark.png" media="(prefers-color-scheme: dark)"&gt;
40+// &lt;img src="leaflet-wide.png" alt="leaflet-wide"&gt;
41+//
42+// &lt;/picture&gt;
43+// &lt;picture&gt;
44+//
45+// &lt;source srcset="leaflet-narrow-dark.png" media="(prefers-color-scheme: dark)"&gt;
46+// &lt;img src="leaflet-narrow.png" alt="leaflet-narrow"&gt;
47+//
48+// &lt;/picture&gt;
49+//
50+// The `AdwLeaflet` widget can display its children like a [class@Gtk.Box] does
51+// or like a [class@Gtk.Stack] does, adapting to size changes by switching
52+// between the two modes.
53+//
54+// When there is enough space the children are displayed side by side, otherwise
55+// only one is displayed and the leaflet is said to be “folded”.
56+// The threshold is dictated by the preferred minimum sizes of the children.
57+// When a leaflet is folded, the children can be navigated using swipe gestures.
58+//
59+// The “over” and “under” transition types stack the children one on top of the
60+// other, while the “slide” transition puts the children side by side. While
61+// navigating to a child on the side or below can be performed by swiping the
62+// current child away, navigating to an upper child requires dragging it from
63+// the edge where it resides. This doesn't affect non-dragging swipes.
64+//
65+// ## CSS nodes
66+//
67+// `AdwLeaflet` has a single CSS node with name `leaflet`. The node will get the
68+// style classes `.folded` when it is folded, `.unfolded` when it's not, or none
69+// if it hasn't computed its fold yet.
70+type Leaflet struct {
71+ gtk.Widget
72+}
73+
74+func LeafletNewFromInternalPtr(ptr uintptr) *Leaflet {
75+ cls := &Leaflet{}
76+ cls.Ptr = ptr
77+ return cls
78+}
79+
80+var xNewLeaflet func() uintptr
81+
82+// Creates a new `AdwLeaflet`.
83+func NewLeaflet() *gtk.Widget {
84+ NewLeafletPtr := xNewLeaflet()
85+ if NewLeafletPtr == 0 {
86+ return nil
87+ }
88+
89+ gobject.IncreaseRef(NewLeafletPtr)
90+
91+ NewLeafletCls := &gtk.Widget{}
92+ NewLeafletCls.Ptr = NewLeafletPtr
93+ return NewLeafletCls
94+}
95+
96+var xLeafletAppend func(uintptr, uintptr) uintptr
97+
98+// Adds a child to @self.
99+func (x *Leaflet) Append(ChildVar *gtk.Widget) *LeafletPage {
100+
101+ AppendPtr := xLeafletAppend(x.GoPointer(), ChildVar.GoPointer())
102+ if AppendPtr == 0 {
103+ return nil
104+ }
105+
106+ gobject.IncreaseRef(AppendPtr)
107+
108+ AppendCls := &LeafletPage{}
109+ AppendCls.Ptr = AppendPtr
110+ return AppendCls
111+
112+}
113+
114+var xLeafletGetAdjacentChild func(uintptr, NavigationDirection) uintptr
115+
116+// Finds the previous or next navigatable child.
117+//
118+// This will be the same child [method@Leaflet.navigate] or swipe gestures will
119+// navigate to.
120+//
121+// If there's no child to navigate to, `NULL` will be returned instead.
122+//
123+// See [property@LeafletPage:navigatable].
124+func (x *Leaflet) GetAdjacentChild(DirectionVar NavigationDirection) *gtk.Widget {
125+
126+ GetAdjacentChildPtr := xLeafletGetAdjacentChild(x.GoPointer(), DirectionVar)
127+ if GetAdjacentChildPtr == 0 {
128+ return nil
129+ }
130+
131+ gobject.IncreaseRef(GetAdjacentChildPtr)
132+
133+ GetAdjacentChildCls := &gtk.Widget{}
134+ GetAdjacentChildCls.Ptr = GetAdjacentChildPtr
135+ return GetAdjacentChildCls
136+
137+}
138+
139+var xLeafletGetCanNavigateBack func(uintptr) bool
140+
141+// Gets whether gestures and shortcuts for navigating backward are enabled.
142+func (x *Leaflet) GetCanNavigateBack() bool {
143+
144+ return xLeafletGetCanNavigateBack(x.GoPointer())
145+
146+}
147+
148+var xLeafletGetCanNavigateForward func(uintptr) bool
149+
150+// Gets whether gestures and shortcuts for navigating forward are enabled.
151+func (x *Leaflet) GetCanNavigateForward() bool {
152+
153+ return xLeafletGetCanNavigateForward(x.GoPointer())
154+
155+}
156+
157+var xLeafletGetCanUnfold func(uintptr) bool
158+
159+// Gets whether @self can unfold.
160+func (x *Leaflet) GetCanUnfold() bool {
161+
162+ return xLeafletGetCanUnfold(x.GoPointer())
163+
164+}
165+
166+var xLeafletGetChildByName func(uintptr, string) uintptr
167+
168+// Finds the child of @self with @name.
169+//
170+// Returns `NULL` if there is no child with this name.
171+//
172+// See [property@LeafletPage:name].
173+func (x *Leaflet) GetChildByName(NameVar string) *gtk.Widget {
174+
175+ GetChildByNamePtr := xLeafletGetChildByName(x.GoPointer(), NameVar)
176+ if GetChildByNamePtr == 0 {
177+ return nil
178+ }
179+
180+ gobject.IncreaseRef(GetChildByNamePtr)
181+
182+ GetChildByNameCls := &gtk.Widget{}
183+ GetChildByNameCls.Ptr = GetChildByNamePtr
184+ return GetChildByNameCls
185+
186+}
187+
188+var xLeafletGetChildTransitionParams func(uintptr) *SpringParams
189+
190+// Gets the child transition spring parameters for @self.
191+func (x *Leaflet) GetChildTransitionParams() *SpringParams {
192+
193+ return xLeafletGetChildTransitionParams(x.GoPointer())
194+
195+}
196+
197+var xLeafletGetChildTransitionRunning func(uintptr) bool
198+
199+// Gets whether a child transition is currently running for @self.
200+func (x *Leaflet) GetChildTransitionRunning() bool {
201+
202+ return xLeafletGetChildTransitionRunning(x.GoPointer())
203+
204+}
205+
206+var xLeafletGetFoldThresholdPolicy func(uintptr) FoldThresholdPolicy
207+
208+// Gets the fold threshold policy for @self.
209+func (x *Leaflet) GetFoldThresholdPolicy() FoldThresholdPolicy {
210+
211+ return xLeafletGetFoldThresholdPolicy(x.GoPointer())
212+
213+}
214+
215+var xLeafletGetFolded func(uintptr) bool
216+
217+// Gets whether @self is folded.
218+//
219+// The leaflet will be folded if the size allocated to it is smaller than the
220+// sum of the minimum or natural sizes of the children (see
221+// [property@Leaflet:fold-threshold-policy]), it will be unfolded otherwise.
222+func (x *Leaflet) GetFolded() bool {
223+
224+ return xLeafletGetFolded(x.GoPointer())
225+
226+}
227+
228+var xLeafletGetHomogeneous func(uintptr) bool
229+
230+// Gets whether @self is homogeneous.
231+func (x *Leaflet) GetHomogeneous() bool {
232+
233+ return xLeafletGetHomogeneous(x.GoPointer())
234+
235+}
236+
237+var xLeafletGetModeTransitionDuration func(uintptr) uint
238+
239+// Gets the mode transition animation duration for @self.
240+func (x *Leaflet) GetModeTransitionDuration() uint {
241+
242+ return xLeafletGetModeTransitionDuration(x.GoPointer())
243+
244+}
245+
246+var xLeafletGetPage func(uintptr, uintptr) uintptr
247+
248+// Returns the [class@LeafletPage] object for @child.
249+func (x *Leaflet) GetPage(ChildVar *gtk.Widget) *LeafletPage {
250+
251+ GetPagePtr := xLeafletGetPage(x.GoPointer(), ChildVar.GoPointer())
252+ if GetPagePtr == 0 {
253+ return nil
254+ }
255+
256+ gobject.IncreaseRef(GetPagePtr)
257+
258+ GetPageCls := &LeafletPage{}
259+ GetPageCls.Ptr = GetPagePtr
260+ return GetPageCls
261+
262+}
263+
264+var xLeafletGetPages func(uintptr) uintptr
265+
266+// Returns a [iface@Gio.ListModel] that contains the pages of the leaflet.
267+//
268+// This can be used to keep an up-to-date view. The model also implements
269+// [iface@Gtk.SelectionModel] and can be used to track and change the visible
270+// page.
271+func (x *Leaflet) GetPages() *gtk.SelectionModelBase {
272+
273+ GetPagesPtr := xLeafletGetPages(x.GoPointer())
274+ if GetPagesPtr == 0 {
275+ return nil
276+ }
277+
278+ GetPagesCls := &gtk.SelectionModelBase{}
279+ GetPagesCls.Ptr = GetPagesPtr
280+ return GetPagesCls
281+
282+}
283+
284+var xLeafletGetTransitionType func(uintptr) LeafletTransitionType
285+
286+// Gets the type of animation used for transitions between modes and children.
287+func (x *Leaflet) GetTransitionType() LeafletTransitionType {
288+
289+ return xLeafletGetTransitionType(x.GoPointer())
290+
291+}
292+
293+var xLeafletGetVisibleChild func(uintptr) uintptr
294+
295+// Gets the widget currently visible when the leaflet is folded.
296+func (x *Leaflet) GetVisibleChild() *gtk.Widget {
297+
298+ GetVisibleChildPtr := xLeafletGetVisibleChild(x.GoPointer())
299+ if GetVisibleChildPtr == 0 {
300+ return nil
301+ }
302+
303+ gobject.IncreaseRef(GetVisibleChildPtr)
304+
305+ GetVisibleChildCls := &gtk.Widget{}
306+ GetVisibleChildCls.Ptr = GetVisibleChildPtr
307+ return GetVisibleChildCls
308+
309+}
310+
311+var xLeafletGetVisibleChildName func(uintptr) string
312+
313+// Gets the name of the currently visible child widget.
314+func (x *Leaflet) GetVisibleChildName() string {
315+
316+ return xLeafletGetVisibleChildName(x.GoPointer())
317+
318+}
319+
320+var xLeafletInsertChildAfter func(uintptr, uintptr, uintptr) uintptr
321+
322+// Inserts @child in the position after @sibling in the list of children.
323+//
324+// If @sibling is `NULL`, inserts @child at the first position.
325+func (x *Leaflet) InsertChildAfter(ChildVar *gtk.Widget, SiblingVar *gtk.Widget) *LeafletPage {
326+
327+ InsertChildAfterPtr := xLeafletInsertChildAfter(x.GoPointer(), ChildVar.GoPointer(), SiblingVar.GoPointer())
328+ if InsertChildAfterPtr == 0 {
329+ return nil
330+ }
331+
332+ gobject.IncreaseRef(InsertChildAfterPtr)
333+
334+ InsertChildAfterCls := &LeafletPage{}
335+ InsertChildAfterCls.Ptr = InsertChildAfterPtr
336+ return InsertChildAfterCls
337+
338+}
339+
340+var xLeafletNavigate func(uintptr, NavigationDirection) bool
341+
342+// Navigates to the previous or next child.
343+//
344+// The child must have the [property@LeafletPage:navigatable] property set to
345+// `TRUE`, otherwise it will be skipped.
346+//
347+// This will be the same child as returned by
348+// [method@Leaflet.get_adjacent_child] or navigated to via swipe gestures.
349+func (x *Leaflet) Navigate(DirectionVar NavigationDirection) bool {
350+
351+ return xLeafletNavigate(x.GoPointer(), DirectionVar)
352+
353+}
354+
355+var xLeafletPrepend func(uintptr, uintptr) uintptr
356+
357+// Inserts @child at the first position in @self.
358+func (x *Leaflet) Prepend(ChildVar *gtk.Widget) *LeafletPage {
359+
360+ PrependPtr := xLeafletPrepend(x.GoPointer(), ChildVar.GoPointer())
361+ if PrependPtr == 0 {
362+ return nil
363+ }
364+
365+ gobject.IncreaseRef(PrependPtr)
366+
367+ PrependCls := &LeafletPage{}
368+ PrependCls.Ptr = PrependPtr
369+ return PrependCls
370+
371+}
372+
373+var xLeafletRemove func(uintptr, uintptr)
374+
375+// Removes a child widget from @self.
376+func (x *Leaflet) Remove(ChildVar *gtk.Widget) {
377+
378+ xLeafletRemove(x.GoPointer(), ChildVar.GoPointer())
379+
380+}
381+
382+var xLeafletReorderChildAfter func(uintptr, uintptr, uintptr)
383+
384+// Moves @child to the position after @sibling in the list of children.
385+//
386+// If @sibling is `NULL`, moves @child to the first position.
387+func (x *Leaflet) ReorderChildAfter(ChildVar *gtk.Widget, SiblingVar *gtk.Widget) {
388+
389+ xLeafletReorderChildAfter(x.GoPointer(), ChildVar.GoPointer(), SiblingVar.GoPointer())
390+
391+}
392+
393+var xLeafletSetCanNavigateBack func(uintptr, bool)
394+
395+// Sets whether gestures and shortcuts for navigating backward are enabled.
396+//
397+// The supported gestures are:
398+//
399+// - One-finger swipe on touchscreens
400+// - Horizontal scrolling on touchpads (usually two-finger swipe)
401+// - Back/forward mouse buttons
402+//
403+// The keyboard back/forward keys are also supported, as well as the
404+// &lt;kbd&gt;Alt&lt;/kbd&gt;+&lt;kbd&gt;←&lt;/kbd&gt; shortcut for horizontal orientation, or
405+// &lt;kbd&gt;Alt&lt;/kbd&gt;+&lt;kbd&gt;↑&lt;/kbd&gt; for vertical orientation.
406+//
407+// If the orientation is horizontal, for right-to-left locales, gestures and
408+// shortcuts are reversed.
409+//
410+// Only children that have [property@LeafletPage:navigatable] set to `TRUE` can
411+// be navigated to.
412+func (x *Leaflet) SetCanNavigateBack(CanNavigateBackVar bool) {
413+
414+ xLeafletSetCanNavigateBack(x.GoPointer(), CanNavigateBackVar)
415+
416+}
417+
418+var xLeafletSetCanNavigateForward func(uintptr, bool)
419+
420+// Sets whether gestures and shortcuts for navigating forward are enabled.
421+//
422+// The supported gestures are:
423+//
424+// - One-finger swipe on touchscreens
425+// - Horizontal scrolling on touchpads (usually two-finger swipe)
426+// - Back/forward mouse buttons
427+//
428+// The keyboard back/forward keys are also supported, as well as the
429+// &lt;kbd&gt;Alt&lt;/kbd&gt;+&lt;kbd&gt;→&lt;/kbd&gt; shortcut for horizontal orientation, or
430+// &lt;kbd&gt;Alt&lt;/kbd&gt;+&lt;kbd&gt;↓&lt;/kbd&gt; for vertical orientation.
431+//
432+// If the orientation is horizontal, for right-to-left locales, gestures and
433+// shortcuts are reversed.
434+//
435+// Only children that have [property@LeafletPage:navigatable] set to `TRUE` can
436+// be navigated to.
437+func (x *Leaflet) SetCanNavigateForward(CanNavigateForwardVar bool) {
438+
439+ xLeafletSetCanNavigateForward(x.GoPointer(), CanNavigateForwardVar)
440+
441+}
442+
443+var xLeafletSetCanUnfold func(uintptr, bool)
444+
445+// Sets whether @self can unfold.
446+func (x *Leaflet) SetCanUnfold(CanUnfoldVar bool) {
447+
448+ xLeafletSetCanUnfold(x.GoPointer(), CanUnfoldVar)
449+
450+}
451+
452+var xLeafletSetChildTransitionParams func(uintptr, *SpringParams)
453+
454+// Sets the child transition spring parameters for @self.
455+//
456+// The default value is equivalent to:
457+//
458+// ```c
459+// adw_spring_params_new (1, 0.5, 500)
460+// ```
461+func (x *Leaflet) SetChildTransitionParams(ParamsVar *SpringParams) {
462+
463+ xLeafletSetChildTransitionParams(x.GoPointer(), ParamsVar)
464+
465+}
466+
467+var xLeafletSetFoldThresholdPolicy func(uintptr, FoldThresholdPolicy)
468+
469+// Sets the fold threshold policy for @self.
470+//
471+// If set to `ADW_FOLD_THRESHOLD_POLICY_MINIMUM`, it will only fold when the
472+// children cannot fit anymore. With `ADW_FOLD_THRESHOLD_POLICY_NATURAL`, it
473+// will fold as soon as children don't get their natural size.
474+//
475+// This can be useful if you have a long ellipsizing label and want to let it
476+// ellipsize instead of immediately folding.
477+func (x *Leaflet) SetFoldThresholdPolicy(PolicyVar FoldThresholdPolicy) {
478+
479+ xLeafletSetFoldThresholdPolicy(x.GoPointer(), PolicyVar)
480+
481+}
482+
483+var xLeafletSetHomogeneous func(uintptr, bool)
484+
485+// Sets @self to be homogeneous or not.
486+//
487+// If set to `FALSE`, different children can have different size along the
488+// opposite orientation.
489+func (x *Leaflet) SetHomogeneous(HomogeneousVar bool) {
490+
491+ xLeafletSetHomogeneous(x.GoPointer(), HomogeneousVar)
492+
493+}
494+
495+var xLeafletSetModeTransitionDuration func(uintptr, uint)
496+
497+// Sets the mode transition animation duration for @self.
498+func (x *Leaflet) SetModeTransitionDuration(DurationVar uint) {
499+
500+ xLeafletSetModeTransitionDuration(x.GoPointer(), DurationVar)
501+
502+}
503+
504+var xLeafletSetTransitionType func(uintptr, LeafletTransitionType)
505+
506+// Sets the type of animation used for transitions between modes and children.
507+//
508+// The transition type can be changed without problems at runtime, so it is
509+// possible to change the animation based on the mode or child that is about to
510+// become current.
511+func (x *Leaflet) SetTransitionType(TransitionVar LeafletTransitionType) {
512+
513+ xLeafletSetTransitionType(x.GoPointer(), TransitionVar)
514+
515+}
516+
517+var xLeafletSetVisibleChild func(uintptr, uintptr)
518+
519+// Sets the widget currently visible when the leaflet is folded.
520+//
521+// The transition is determined by [property@Leaflet:transition-type] and
522+// [property@Leaflet:child-transition-params]. The transition can be cancelled
523+// by the user, in which case visible child will change back to the previously
524+// visible child.
525+func (x *Leaflet) SetVisibleChild(VisibleChildVar *gtk.Widget) {
526+
527+ xLeafletSetVisibleChild(x.GoPointer(), VisibleChildVar.GoPointer())
528+
529+}
530+
531+var xLeafletSetVisibleChildName func(uintptr, string)
532+
533+// Makes the child with the name @name visible.
534+//
535+// See [property@Leaflet:visible-child].
536+func (x *Leaflet) SetVisibleChildName(NameVar string) {
537+
538+ xLeafletSetVisibleChildName(x.GoPointer(), NameVar)
539+
540+}
541+
542+func (c *Leaflet) GoPointer() uintptr {
543+ return c.Ptr
544+}
545+
546+func (c *Leaflet) SetGoPointer(ptr uintptr) {
547+ c.Ptr = ptr
548+}
549+
550+// Gets the progress @self will snap back to after the gesture is canceled.
551+func (x *Leaflet) GetCancelProgress() float64 {
552+
553+ return XAdwSwipeableGetCancelProgress(x.GoPointer())
554+
555+}
556+
557+// Gets the swipe distance of @self.
558+//
559+// This corresponds to how many pixels 1 unit represents.
560+func (x *Leaflet) GetDistance() float64 {
561+
562+ return XAdwSwipeableGetDistance(x.GoPointer())
563+
564+}
565+
566+// Gets the current progress of @self.
567+func (x *Leaflet) GetProgress() float64 {
568+
569+ return XAdwSwipeableGetProgress(x.GoPointer())
570+
571+}
572+
573+// Gets the snap points of @self.
574+//
575+// Each snap point represents a progress value that is considered acceptable to
576+// end the swipe on.
577+func (x *Leaflet) GetSnapPoints(NSnapPointsVar int32) uintptr {
578+
579+ return XAdwSwipeableGetSnapPoints(x.GoPointer(), NSnapPointsVar)
580+
581+}
582+
583+// Gets the area @self can start a swipe from for the given direction and
584+// gesture type.
585+//
586+// This can be used to restrict swipes to only be possible from a certain area,
587+// for example, to only allow edge swipes, or to have a draggable element and
588+// ignore swipes elsewhere.
589+//
590+// If not implemented, the default implementation returns the allocation of
591+// @self, allowing swipes from anywhere.
592+func (x *Leaflet) GetSwipeArea(NavigationDirectionVar NavigationDirection, IsDragVar bool, RectVar *gdk.Rectangle) {
593+
594+ XAdwSwipeableGetSwipeArea(x.GoPointer(), NavigationDirectionVar, IsDragVar, RectVar)
595+
596+}
597+
598+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
599+func (x *Leaflet) GetAccessibleRole() gtk.AccessibleRole {
600+
601+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
602+
603+}
604+
605+// Resets the accessible @property to its default value.
606+func (x *Leaflet) ResetProperty(PropertyVar gtk.AccessibleProperty) {
607+
608+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
609+
610+}
611+
612+// Resets the accessible @relation to its default value.
613+func (x *Leaflet) ResetRelation(RelationVar gtk.AccessibleRelation) {
614+
615+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
616+
617+}
618+
619+// Resets the accessible @state to its default value.
620+func (x *Leaflet) ResetState(StateVar gtk.AccessibleState) {
621+
622+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
623+
624+}
625+
626+// Updates a list of accessible properties.
627+//
628+// See the [enum@Gtk.AccessibleProperty] documentation for the
629+// value types of accessible properties.
630+//
631+// This function should be called by `GtkWidget` types whenever
632+// an accessible property change must be communicated to assistive
633+// technologies.
634+//
635+// Example:
636+// ```c
637+// value = gtk_adjustment_get_value (adjustment);
638+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
639+//
640+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
641+// -1);
642+//
643+// ```
644+func (x *Leaflet) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
645+
646+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
647+
648+}
649+
650+// Updates an array of accessible properties.
651+//
652+// This function should be called by `GtkWidget` types whenever an accessible
653+// property change must be communicated to assistive technologies.
654+//
655+// This function is meant to be used by language bindings.
656+func (x *Leaflet) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
657+
658+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
659+
660+}
661+
662+// Updates a list of accessible relations.
663+//
664+// This function should be called by `GtkWidget` types whenever an accessible
665+// relation change must be communicated to assistive technologies.
666+//
667+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
668+// you should pass each reference individually, followed by %NULL, e.g.
669+//
670+// ```c
671+// gtk_accessible_update_relation (accessible,
672+//
673+// GTK_ACCESSIBLE_RELATION_CONTROLS,
674+// ref1, NULL,
675+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
676+// ref1, ref2, ref3, NULL,
677+// -1);
678+//
679+// ```
680+func (x *Leaflet) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
681+
682+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
683+
684+}
685+
686+// Updates an array of accessible relations.
687+//
688+// This function should be called by `GtkWidget` types whenever an accessible
689+// relation change must be communicated to assistive technologies.
690+//
691+// This function is meant to be used by language bindings.
692+func (x *Leaflet) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
693+
694+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
695+
696+}
697+
698+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
699+// documentation for the value types of accessible states.
700+//
701+// This function should be called by `GtkWidget` types whenever an accessible
702+// state change must be communicated to assistive technologies.
703+//
704+// Example:
705+// ```c
706+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
707+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
708+//
709+// GTK_ACCESSIBLE_STATE_CHECKED, value,
710+// -1);
711+//
712+// ```
713+func (x *Leaflet) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
714+
715+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
716+
717+}
718+
719+// Updates an array of accessible states.
720+//
721+// This function should be called by `GtkWidget` types whenever an accessible
722+// state change must be communicated to assistive technologies.
723+//
724+// This function is meant to be used by language bindings.
725+func (x *Leaflet) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
726+
727+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
728+
729+}
730+
731+// Gets the ID of the @buildable object.
732+//
733+// `GtkBuilder` sets the name based on the ID attribute
734+// of the &lt;object&gt; tag used to construct the @buildable.
735+func (x *Leaflet) GetBuildableId() string {
736+
737+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
738+
739+}
740+
741+// Retrieves the orientation of the @orientable.
742+func (x *Leaflet) GetOrientation() gtk.Orientation {
743+
744+ return gtk.XGtkOrientableGetOrientation(x.GoPointer())
745+
746+}
747+
748+// Sets the orientation of the @orientable.
749+func (x *Leaflet) SetOrientation(OrientationVar gtk.Orientation) {
750+
751+ gtk.XGtkOrientableSetOrientation(x.GoPointer(), OrientationVar)
752+
753+}
754+
755+// An auxiliary class used by [class@Leaflet].
756+type LeafletPage struct {
757+ gobject.Object
758+}
759+
760+func LeafletPageNewFromInternalPtr(ptr uintptr) *LeafletPage {
761+ cls := &LeafletPage{}
762+ cls.Ptr = ptr
763+ return cls
764+}
765+
766+var xLeafletPageGetChild func(uintptr) uintptr
767+
768+// Gets the leaflet child to which @self belongs.
769+func (x *LeafletPage) GetChild() *gtk.Widget {
770+
771+ GetChildPtr := xLeafletPageGetChild(x.GoPointer())
772+ if GetChildPtr == 0 {
773+ return nil
774+ }
775+
776+ gobject.IncreaseRef(GetChildPtr)
777+
778+ GetChildCls := &gtk.Widget{}
779+ GetChildCls.Ptr = GetChildPtr
780+ return GetChildCls
781+
782+}
783+
784+var xLeafletPageGetName func(uintptr) string
785+
786+// Gets the name of @self.
787+func (x *LeafletPage) GetName() string {
788+
789+ return xLeafletPageGetName(x.GoPointer())
790+
791+}
792+
793+var xLeafletPageGetNavigatable func(uintptr) bool
794+
795+// Gets whether the child can be navigated to when folded.
796+func (x *LeafletPage) GetNavigatable() bool {
797+
798+ return xLeafletPageGetNavigatable(x.GoPointer())
799+
800+}
801+
802+var xLeafletPageSetName func(uintptr, string)
803+
804+// Sets the name of the @self.
805+func (x *LeafletPage) SetName(NameVar string) {
806+
807+ xLeafletPageSetName(x.GoPointer(), NameVar)
808+
809+}
810+
811+var xLeafletPageSetNavigatable func(uintptr, bool)
812+
813+// Sets whether @self can be navigated to when folded.
814+//
815+// If `FALSE`, the child will be ignored by [method@Leaflet.get_adjacent_child],
816+// [method@Leaflet.navigate], and swipe gestures.
817+//
818+// This can be used used to prevent switching to widgets like separators.
819+func (x *LeafletPage) SetNavigatable(NavigatableVar bool) {
820+
821+ xLeafletPageSetNavigatable(x.GoPointer(), NavigatableVar)
822+
823+}
824+
825+func (c *LeafletPage) GoPointer() uintptr {
826+ return c.Ptr
827+}
828+
829+func (c *LeafletPage) SetGoPointer(ptr uintptr) {
830+ c.Ptr = ptr
831+}
832+
833+func init() {
834+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
835+ if err != nil {
836+ panic(err)
837+ }
838+
839+ core.PuregoSafeRegister(&xNewLeaflet, lib, "adw_leaflet_new")
840+
841+ core.PuregoSafeRegister(&xLeafletAppend, lib, "adw_leaflet_append")
842+ core.PuregoSafeRegister(&xLeafletGetAdjacentChild, lib, "adw_leaflet_get_adjacent_child")
843+ core.PuregoSafeRegister(&xLeafletGetCanNavigateBack, lib, "adw_leaflet_get_can_navigate_back")
844+ core.PuregoSafeRegister(&xLeafletGetCanNavigateForward, lib, "adw_leaflet_get_can_navigate_forward")
845+ core.PuregoSafeRegister(&xLeafletGetCanUnfold, lib, "adw_leaflet_get_can_unfold")
846+ core.PuregoSafeRegister(&xLeafletGetChildByName, lib, "adw_leaflet_get_child_by_name")
847+ core.PuregoSafeRegister(&xLeafletGetChildTransitionParams, lib, "adw_leaflet_get_child_transition_params")
848+ core.PuregoSafeRegister(&xLeafletGetChildTransitionRunning, lib, "adw_leaflet_get_child_transition_running")
849+ core.PuregoSafeRegister(&xLeafletGetFoldThresholdPolicy, lib, "adw_leaflet_get_fold_threshold_policy")
850+ core.PuregoSafeRegister(&xLeafletGetFolded, lib, "adw_leaflet_get_folded")
851+ core.PuregoSafeRegister(&xLeafletGetHomogeneous, lib, "adw_leaflet_get_homogeneous")
852+ core.PuregoSafeRegister(&xLeafletGetModeTransitionDuration, lib, "adw_leaflet_get_mode_transition_duration")
853+ core.PuregoSafeRegister(&xLeafletGetPage, lib, "adw_leaflet_get_page")
854+ core.PuregoSafeRegister(&xLeafletGetPages, lib, "adw_leaflet_get_pages")
855+ core.PuregoSafeRegister(&xLeafletGetTransitionType, lib, "adw_leaflet_get_transition_type")
856+ core.PuregoSafeRegister(&xLeafletGetVisibleChild, lib, "adw_leaflet_get_visible_child")
857+ core.PuregoSafeRegister(&xLeafletGetVisibleChildName, lib, "adw_leaflet_get_visible_child_name")
858+ core.PuregoSafeRegister(&xLeafletInsertChildAfter, lib, "adw_leaflet_insert_child_after")
859+ core.PuregoSafeRegister(&xLeafletNavigate, lib, "adw_leaflet_navigate")
860+ core.PuregoSafeRegister(&xLeafletPrepend, lib, "adw_leaflet_prepend")
861+ core.PuregoSafeRegister(&xLeafletRemove, lib, "adw_leaflet_remove")
862+ core.PuregoSafeRegister(&xLeafletReorderChildAfter, lib, "adw_leaflet_reorder_child_after")
863+ core.PuregoSafeRegister(&xLeafletSetCanNavigateBack, lib, "adw_leaflet_set_can_navigate_back")
864+ core.PuregoSafeRegister(&xLeafletSetCanNavigateForward, lib, "adw_leaflet_set_can_navigate_forward")
865+ core.PuregoSafeRegister(&xLeafletSetCanUnfold, lib, "adw_leaflet_set_can_unfold")
866+ core.PuregoSafeRegister(&xLeafletSetChildTransitionParams, lib, "adw_leaflet_set_child_transition_params")
867+ core.PuregoSafeRegister(&xLeafletSetFoldThresholdPolicy, lib, "adw_leaflet_set_fold_threshold_policy")
868+ core.PuregoSafeRegister(&xLeafletSetHomogeneous, lib, "adw_leaflet_set_homogeneous")
869+ core.PuregoSafeRegister(&xLeafletSetModeTransitionDuration, lib, "adw_leaflet_set_mode_transition_duration")
870+ core.PuregoSafeRegister(&xLeafletSetTransitionType, lib, "adw_leaflet_set_transition_type")
871+ core.PuregoSafeRegister(&xLeafletSetVisibleChild, lib, "adw_leaflet_set_visible_child")
872+ core.PuregoSafeRegister(&xLeafletSetVisibleChildName, lib, "adw_leaflet_set_visible_child_name")
873+
874+ core.PuregoSafeRegister(&xLeafletPageGetChild, lib, "adw_leaflet_page_get_child")
875+ core.PuregoSafeRegister(&xLeafletPageGetName, lib, "adw_leaflet_page_get_name")
876+ core.PuregoSafeRegister(&xLeafletPageGetNavigatable, lib, "adw_leaflet_page_get_navigatable")
877+ core.PuregoSafeRegister(&xLeafletPageSetName, lib, "adw_leaflet_page_set_name")
878+ core.PuregoSafeRegister(&xLeafletPageSetNavigatable, lib, "adw_leaflet_page_set_navigatable")
879+
880+}
A v4/adw/adw-main.go +46 -0
@@ -0,0 +1,46 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+)
8+
9+var xInit func()
10+
11+// Initializes Libadwaita.
12+//
13+// This function can be used instead of [func@Gtk.init] as it initializes GTK
14+// implicitly.
15+//
16+// There's no need to call this function if you're using [class@Application].
17+//
18+// If Libadwaita has already been initialized, the function will simply return.
19+//
20+// This makes sure translations, types, themes, and icons for the Adwaita
21+// library are set up properly.
22+func Init() {
23+
24+ xInit()
25+
26+}
27+
28+var xIsInitialized func() bool
29+
30+// Use this function to check if libadwaita has been initialized with
31+// [func@init].
32+func IsInitialized() bool {
33+
34+ return xIsInitialized()
35+
36+}
37+
38+func init() {
39+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
40+ if err != nil {
41+ panic(err)
42+ }
43+ core.PuregoSafeRegister(&xInit, lib, "adw_init")
44+ core.PuregoSafeRegister(&xIsInitialized, lib, "adw_is_initialized")
45+
46+}
A v4/adw/adw-message-dialog.go +928 -0
@@ -0,0 +1,928 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gdk"
8+ "github.com/jwijenbergh/puregotk/v4/gio"
9+ "github.com/jwijenbergh/puregotk/v4/gobject"
10+ "github.com/jwijenbergh/puregotk/v4/gsk"
11+ "github.com/jwijenbergh/puregotk/v4/gtk"
12+)
13+
14+type MessageDialogClass struct {
15+ ParentClass uintptr
16+
17+ Padding uintptr
18+}
19+
20+// Describes the possible styles of [class@MessageDialog] response buttons.
21+//
22+// See [method@MessageDialog.set_response_appearance].
23+type ResponseAppearance int
24+
25+const (
26+
27+ // the default appearance.
28+ ResponseDefaultValue ResponseAppearance = 0
29+ // used to denote important responses such as the
30+ // affirmative action.
31+ ResponseSuggestedValue ResponseAppearance = 1
32+ // used to draw attention to the potentially damaging
33+ // consequences of using the response. This appearance acts as a warning to
34+ // the user.
35+ ResponseDestructiveValue ResponseAppearance = 2
36+)
37+
38+// A dialog presenting a message or a question.
39+//
40+// &lt;picture&gt;
41+//
42+// &lt;source srcset="message-dialog-dark.png" media="(prefers-color-scheme: dark)"&gt;
43+// &lt;img src="message-dialog.png" alt="message-dialog"&gt;
44+//
45+// &lt;/picture&gt;
46+//
47+// Message dialogs have a heading, a body, an optional child widget, and one or
48+// multiple responses, each presented as a button.
49+//
50+// Each response has a unique string ID, and a button label. Additionally, each
51+// response can be enabled or disabled, and can have a suggested or destructive
52+// appearance.
53+//
54+// When one of the responses is activated, or the dialog is closed, the
55+// [signal@MessageDialog::response] signal will be emitted. This signal is
56+// detailed, and the detail, as well as the `response` parameter will be set to
57+// the ID of the activated response, or to the value of the
58+// [property@MessageDialog:close-response] property if the dialog had been
59+// closed without activating any of the responses.
60+//
61+// Response buttons can be presented horizontally or vertically depending on
62+// available space.
63+//
64+// When a response is activated, `AdwMessageDialog` is closed automatically.
65+//
66+// An example of using a message dialog:
67+//
68+// ```c
69+// GtkWidget *dialog;
70+//
71+// dialog = adw_message_dialog_new (parent, _("Replace File?"), NULL);
72+//
73+// adw_message_dialog_format_body (ADW_MESSAGE_DIALOG (dialog),
74+//
75+// _("A file named “%s” already exists. Do you want to replace it?"),
76+// filename);
77+//
78+// adw_message_dialog_add_responses (ADW_MESSAGE_DIALOG (dialog),
79+//
80+// "cancel", _("_Cancel"),
81+// "replace", _("_Replace"),
82+// NULL);
83+//
84+// adw_message_dialog_set_response_appearance (ADW_MESSAGE_DIALOG (dialog), "replace", ADW_RESPONSE_DESTRUCTIVE);
85+//
86+// adw_message_dialog_set_default_response (ADW_MESSAGE_DIALOG (dialog), "cancel");
87+// adw_message_dialog_set_close_response (ADW_MESSAGE_DIALOG (dialog), "cancel");
88+//
89+// g_signal_connect (dialog, "response", G_CALLBACK (response_cb), self);
90+//
91+// gtk_window_present (GTK_WINDOW (dialog));
92+// ```
93+//
94+// ## Async API
95+//
96+// `AdwMessageDialog` can also be used via the [method@MessageDialog.choose]
97+// method. This API follows the GIO async pattern, and the result can be
98+// obtained by calling [method@MessageDialog.choose_finish], for example:
99+//
100+// ```c
101+// static void
102+// dialog_cb (AdwMessageDialog *dialog,
103+//
104+// GAsyncResult *result,
105+// MyWindow *self)
106+//
107+// {
108+// const char *response = adw_message_dialog_choose_finish (dialog, result);
109+//
110+// // ...
111+// }
112+//
113+// static void
114+// show_dialog (MyWindow *self)
115+//
116+// {
117+// GtkWidget *dialog;
118+//
119+// dialog = adw_message_dialog_new (GTK_WINDOW (self), _("Replace File?"), NULL);
120+//
121+// adw_message_dialog_format_body (ADW_MESSAGE_DIALOG (dialog),
122+// _("A file named “%s” already exists. Do you want to replace it?"),
123+// filename);
124+//
125+// adw_message_dialog_add_responses (ADW_MESSAGE_DIALOG (dialog),
126+// "cancel", _("_Cancel"),
127+// "replace", _("_Replace"),
128+// NULL);
129+//
130+// adw_message_dialog_set_response_appearance (ADW_MESSAGE_DIALOG (dialog), "replace", ADW_RESPONSE_DESTRUCTIVE);
131+//
132+// adw_message_dialog_set_default_response (ADW_MESSAGE_DIALOG (dialog), "cancel");
133+// adw_message_dialog_set_close_response (ADW_MESSAGE_DIALOG (dialog), "cancel");
134+//
135+// adw_message_dialog_choose (ADW_MESSAGE_DIALOG (dialog), NULL, (GAsyncReadyCallback) dialog_cb, self);
136+// }
137+//
138+// ```
139+//
140+// ## AdwMessageDialog as GtkBuildable
141+//
142+// `AdwMessageDialog` supports adding responses in UI definitions by via the
143+// `&lt;responses&gt;` element that may contain multiple `&lt;response&gt;` elements, each
144+// respresenting a response.
145+//
146+// Each of the `&lt;response&gt;` elements must have the `id` attribute specifying the
147+// response ID. The contents of the element are used as the response label.
148+//
149+// Response labels can be translated with the usual `translatable`, `context`
150+// and `comments` attributes.
151+//
152+// The `&lt;response&gt;` elements can also have `enabled` and/or `appearance`
153+// attributes. See [method@MessageDialog.set_response_enabled] and
154+// [method@MessageDialog.set_response_appearance] for details.
155+//
156+// Example of an `AdwMessageDialog` UI definition:
157+//
158+// ```xml
159+// &lt;object class="AdwMessageDialog" id="dialog"&gt;
160+//
161+// &lt;property name="heading" translatable="yes"&gt;Save Changes?&lt;/property&gt;
162+// &lt;property name="body" translatable="yes"&gt;Open documents contain unsaved changes. Changes which are not saved will be permanently lost.&lt;/property&gt;
163+// &lt;property name="default-response"&gt;save&lt;/property&gt;
164+// &lt;property name="close-response"&gt;cancel&lt;/property&gt;
165+// &lt;signal name="response" handler="response_cb"/&gt;
166+// &lt;responses&gt;
167+// &lt;response id="cancel" translatable="yes"&gt;_Cancel&lt;/response&gt;
168+// &lt;response id="discard" translatable="yes" appearance="destructive"&gt;_Discard&lt;/response&gt;
169+// &lt;response id="save" translatable="yes" appearance="suggested" enabled="false"&gt;_Save&lt;/response&gt;
170+// &lt;/responses&gt;
171+//
172+// &lt;/object&gt;
173+// ```
174+//
175+// ## Accessibility
176+//
177+// `AdwMessageDialog` uses the `GTK_ACCESSIBLE_ROLE_DIALOG` role.
178+type MessageDialog struct {
179+ gtk.Window
180+}
181+
182+func MessageDialogNewFromInternalPtr(ptr uintptr) *MessageDialog {
183+ cls := &MessageDialog{}
184+ cls.Ptr = ptr
185+ return cls
186+}
187+
188+var xNewMessageDialog func(uintptr, string, string) uintptr
189+
190+// Creates a new `AdwMessageDialog`.
191+//
192+// @heading and @body can be set to `NULL`. This can be useful if they need to
193+// be formatted or use markup. In that case, set them to `NULL` and call
194+// [method@MessageDialog.format_body] or similar methods afterwards:
195+//
196+// ```c
197+// GtkWidget *dialog;
198+//
199+// dialog = adw_message_dialog_new (parent, _("Replace File?"), NULL);
200+// adw_message_dialog_format_body (ADW_MESSAGE_DIALOG (dialog),
201+//
202+// _("A file named “%s” already exists. Do you want to replace it?"),
203+// filename);
204+//
205+// ```
206+func NewMessageDialog(ParentVar *gtk.Window, HeadingVar string, BodyVar string) *gtk.Widget {
207+ NewMessageDialogPtr := xNewMessageDialog(ParentVar.GoPointer(), HeadingVar, BodyVar)
208+ if NewMessageDialogPtr == 0 {
209+ return nil
210+ }
211+
212+ gobject.IncreaseRef(NewMessageDialogPtr)
213+
214+ NewMessageDialogCls := &gtk.Widget{}
215+ NewMessageDialogCls.Ptr = NewMessageDialogPtr
216+ return NewMessageDialogCls
217+}
218+
219+var xMessageDialogAddResponse func(uintptr, string, string)
220+
221+// Adds a response with @id and @label to @self.
222+//
223+// Responses are represented as buttons in the dialog.
224+//
225+// Response ID must be unique. It will be used in
226+// [signal@MessageDialog::response] to tell which response had been activated,
227+// as well as to inspect and modify the response later.
228+//
229+// An embedded underline in @label indicates a mnemonic.
230+//
231+// [method@MessageDialog.set_response_label] can be used to change the response
232+// label after it had been added.
233+//
234+// [method@MessageDialog.set_response_enabled] and
235+// [method@MessageDialog.set_response_appearance] can be used to customize the
236+// responses further.
237+func (x *MessageDialog) AddResponse(IdVar string, LabelVar string) {
238+
239+ xMessageDialogAddResponse(x.GoPointer(), IdVar, LabelVar)
240+
241+}
242+
243+var xMessageDialogAddResponses func(uintptr, string, ...interface{})
244+
245+// Adds multiple responses to @self.
246+//
247+// This is the same as calling [method@MessageDialog.add_response] repeatedly.
248+// The variable argument list should be `NULL`-terminated list of response IDs
249+// and labels.
250+//
251+// Example:
252+//
253+// ```c
254+// adw_message_dialog_add_responses (dialog,
255+//
256+// "cancel", _("_Cancel"),
257+// "discard", _("_Discard"),
258+// "save", _("_Save"),
259+// NULL);
260+//
261+// ```
262+func (x *MessageDialog) AddResponses(FirstIdVar string, varArgs ...interface{}) {
263+
264+ xMessageDialogAddResponses(x.GoPointer(), FirstIdVar, varArgs...)
265+
266+}
267+
268+var xMessageDialogChoose func(uintptr, uintptr, uintptr, uintptr)
269+
270+// This function shows @self to the user.
271+//
272+// The @callback will be called when the alert is dismissed. It should call
273+// [method@MessageDialog.choose_finish] to obtain the result.
274+func (x *MessageDialog) Choose(CancellableVar *gio.Cancellable, CallbackVar gio.AsyncReadyCallback, UserDataVar uintptr) {
275+
276+ xMessageDialogChoose(x.GoPointer(), CancellableVar.GoPointer(), purego.NewCallback(CallbackVar), UserDataVar)
277+
278+}
279+
280+var xMessageDialogChooseFinish func(uintptr, uintptr) string
281+
282+// Finishes the [method@MessageDialog.choose] call and returns the response ID.
283+func (x *MessageDialog) ChooseFinish(ResultVar gio.AsyncResult) string {
284+
285+ return xMessageDialogChooseFinish(x.GoPointer(), ResultVar.GoPointer())
286+
287+}
288+
289+var xMessageDialogFormatBody func(uintptr, string, ...interface{})
290+
291+// Sets the formatted body text of @self.
292+//
293+// See [property@MessageDialog:body].
294+func (x *MessageDialog) FormatBody(FormatVar string, varArgs ...interface{}) {
295+
296+ xMessageDialogFormatBody(x.GoPointer(), FormatVar, varArgs...)
297+
298+}
299+
300+var xMessageDialogFormatBodyMarkup func(uintptr, string, ...interface{})
301+
302+// Sets the formatted body text of @self with Pango markup.
303+//
304+// The @format is assumed to contain Pango markup.
305+//
306+// Special XML characters in the `printf()` arguments passed to this function
307+// will automatically be escaped as necessary, see
308+// [func@GLib.markup_printf_escaped].
309+//
310+// See [property@MessageDialog:body].
311+func (x *MessageDialog) FormatBodyMarkup(FormatVar string, varArgs ...interface{}) {
312+
313+ xMessageDialogFormatBodyMarkup(x.GoPointer(), FormatVar, varArgs...)
314+
315+}
316+
317+var xMessageDialogFormatHeading func(uintptr, string, ...interface{})
318+
319+// Sets the formatted heading of @self.
320+//
321+// See [property@MessageDialog:heading].
322+func (x *MessageDialog) FormatHeading(FormatVar string, varArgs ...interface{}) {
323+
324+ xMessageDialogFormatHeading(x.GoPointer(), FormatVar, varArgs...)
325+
326+}
327+
328+var xMessageDialogFormatHeadingMarkup func(uintptr, string, ...interface{})
329+
330+// Sets the formatted heading of @self with Pango markup.
331+//
332+// The @format is assumed to contain Pango markup.
333+//
334+// Special XML characters in the `printf()` arguments passed to this function
335+// will automatically be escaped as necessary, see
336+// [func@GLib.markup_printf_escaped].
337+//
338+// See [property@MessageDialog:heading].
339+func (x *MessageDialog) FormatHeadingMarkup(FormatVar string, varArgs ...interface{}) {
340+
341+ xMessageDialogFormatHeadingMarkup(x.GoPointer(), FormatVar, varArgs...)
342+
343+}
344+
345+var xMessageDialogGetBody func(uintptr) string
346+
347+// Gets the body text of @self.
348+func (x *MessageDialog) GetBody() string {
349+
350+ return xMessageDialogGetBody(x.GoPointer())
351+
352+}
353+
354+var xMessageDialogGetBodyUseMarkup func(uintptr) bool
355+
356+// Gets whether the body text of @self includes Pango markup.
357+func (x *MessageDialog) GetBodyUseMarkup() bool {
358+
359+ return xMessageDialogGetBodyUseMarkup(x.GoPointer())
360+
361+}
362+
363+var xMessageDialogGetCloseResponse func(uintptr) string
364+
365+// Gets the ID of the close response of @self.
366+func (x *MessageDialog) GetCloseResponse() string {
367+
368+ return xMessageDialogGetCloseResponse(x.GoPointer())
369+
370+}
371+
372+var xMessageDialogGetDefaultResponse func(uintptr) string
373+
374+// Gets the ID of the default response of @self.
375+func (x *MessageDialog) GetDefaultResponse() string {
376+
377+ return xMessageDialogGetDefaultResponse(x.GoPointer())
378+
379+}
380+
381+var xMessageDialogGetExtraChild func(uintptr) uintptr
382+
383+// Gets the child widget of @self.
384+func (x *MessageDialog) GetExtraChild() *gtk.Widget {
385+
386+ GetExtraChildPtr := xMessageDialogGetExtraChild(x.GoPointer())
387+ if GetExtraChildPtr == 0 {
388+ return nil
389+ }
390+
391+ gobject.IncreaseRef(GetExtraChildPtr)
392+
393+ GetExtraChildCls := &gtk.Widget{}
394+ GetExtraChildCls.Ptr = GetExtraChildPtr
395+ return GetExtraChildCls
396+
397+}
398+
399+var xMessageDialogGetHeading func(uintptr) string
400+
401+// Gets the heading of @self.
402+func (x *MessageDialog) GetHeading() string {
403+
404+ return xMessageDialogGetHeading(x.GoPointer())
405+
406+}
407+
408+var xMessageDialogGetHeadingUseMarkup func(uintptr) bool
409+
410+// Gets whether the heading of @self includes Pango markup.
411+func (x *MessageDialog) GetHeadingUseMarkup() bool {
412+
413+ return xMessageDialogGetHeadingUseMarkup(x.GoPointer())
414+
415+}
416+
417+var xMessageDialogGetResponseAppearance func(uintptr, string) ResponseAppearance
418+
419+// Gets the appearance of @response.
420+//
421+// See [method@MessageDialog.set_response_appearance].
422+func (x *MessageDialog) GetResponseAppearance(ResponseVar string) ResponseAppearance {
423+
424+ return xMessageDialogGetResponseAppearance(x.GoPointer(), ResponseVar)
425+
426+}
427+
428+var xMessageDialogGetResponseEnabled func(uintptr, string) bool
429+
430+// Gets whether @response is enabled.
431+//
432+// See [method@MessageDialog.set_response_enabled].
433+func (x *MessageDialog) GetResponseEnabled(ResponseVar string) bool {
434+
435+ return xMessageDialogGetResponseEnabled(x.GoPointer(), ResponseVar)
436+
437+}
438+
439+var xMessageDialogGetResponseLabel func(uintptr, string) string
440+
441+// Gets the label of @response.
442+//
443+// See [method@MessageDialog.set_response_label].
444+func (x *MessageDialog) GetResponseLabel(ResponseVar string) string {
445+
446+ return xMessageDialogGetResponseLabel(x.GoPointer(), ResponseVar)
447+
448+}
449+
450+var xMessageDialogHasResponse func(uintptr, string) bool
451+
452+// Gets whether @self has a response with the ID @response.
453+func (x *MessageDialog) HasResponse(ResponseVar string) bool {
454+
455+ return xMessageDialogHasResponse(x.GoPointer(), ResponseVar)
456+
457+}
458+
459+var xMessageDialogResponse func(uintptr, string)
460+
461+// Emits the [signal@MessageDialog::response] signal with the given response ID.
462+//
463+// Used to indicate that the user has responded to the dialog in some way.
464+func (x *MessageDialog) Response(ResponseVar string) {
465+
466+ xMessageDialogResponse(x.GoPointer(), ResponseVar)
467+
468+}
469+
470+var xMessageDialogSetBody func(uintptr, string)
471+
472+// Sets the body text of @self.
473+func (x *MessageDialog) SetBody(BodyVar string) {
474+
475+ xMessageDialogSetBody(x.GoPointer(), BodyVar)
476+
477+}
478+
479+var xMessageDialogSetBodyUseMarkup func(uintptr, bool)
480+
481+// Sets whether the body text of @self includes Pango markup.
482+//
483+// See [func@Pango.parse_markup].
484+func (x *MessageDialog) SetBodyUseMarkup(UseMarkupVar bool) {
485+
486+ xMessageDialogSetBodyUseMarkup(x.GoPointer(), UseMarkupVar)
487+
488+}
489+
490+var xMessageDialogSetCloseResponse func(uintptr, string)
491+
492+// Sets the ID of the close response of @self.
493+//
494+// It will be passed to [signal@MessageDialog::response] if the window is
495+// closed by pressing &lt;kbd&gt;Escape&lt;/kbd&gt; or with a system action.
496+//
497+// It doesn't have to correspond to any of the responses in the dialog.
498+//
499+// The default close response is `close`.
500+func (x *MessageDialog) SetCloseResponse(ResponseVar string) {
501+
502+ xMessageDialogSetCloseResponse(x.GoPointer(), ResponseVar)
503+
504+}
505+
506+var xMessageDialogSetDefaultResponse func(uintptr, string)
507+
508+// Sets the ID of the default response of @self.
509+//
510+// If set, pressing &lt;kbd&gt;Enter&lt;/kbd&gt; will activate the corresponding button.
511+//
512+// If set to `NULL` or to a non-existent response ID, pressing &lt;kbd&gt;Enter&lt;/kbd&gt;
513+// will do nothing.
514+func (x *MessageDialog) SetDefaultResponse(ResponseVar string) {
515+
516+ xMessageDialogSetDefaultResponse(x.GoPointer(), ResponseVar)
517+
518+}
519+
520+var xMessageDialogSetExtraChild func(uintptr, uintptr)
521+
522+// Sets the child widget of @self.
523+//
524+// The child widget is displayed below the heading and body.
525+func (x *MessageDialog) SetExtraChild(ChildVar *gtk.Widget) {
526+
527+ xMessageDialogSetExtraChild(x.GoPointer(), ChildVar.GoPointer())
528+
529+}
530+
531+var xMessageDialogSetHeading func(uintptr, string)
532+
533+// Sets the heading of @self.
534+func (x *MessageDialog) SetHeading(HeadingVar string) {
535+
536+ xMessageDialogSetHeading(x.GoPointer(), HeadingVar)
537+
538+}
539+
540+var xMessageDialogSetHeadingUseMarkup func(uintptr, bool)
541+
542+// Sets whether the heading of @self includes Pango markup.
543+//
544+// See [func@Pango.parse_markup].
545+func (x *MessageDialog) SetHeadingUseMarkup(UseMarkupVar bool) {
546+
547+ xMessageDialogSetHeadingUseMarkup(x.GoPointer(), UseMarkupVar)
548+
549+}
550+
551+var xMessageDialogSetResponseAppearance func(uintptr, string, ResponseAppearance)
552+
553+// Sets the appearance for @response.
554+//
555+// &lt;picture&gt;
556+//
557+// &lt;source srcset="message-dialog-appearance-dark.png" media="(prefers-color-scheme: dark)"&gt;
558+// &lt;img src="message-dialog-appearance.png" alt="message-dialog-appearance"&gt;
559+//
560+// &lt;/picture&gt;
561+//
562+// Use `ADW_RESPONSE_SUGGESTED` to mark important responses such as the
563+// affirmative action, like the Save button in the example.
564+//
565+// Use `ADW_RESPONSE_DESTRUCTIVE` to draw attention to the potentially damaging
566+// consequences of using @response. This appearance acts as a warning to the
567+// user. The Discard button in the example is using this appearance.
568+//
569+// The default appearance is `ADW_RESPONSE_DEFAULT`.
570+//
571+// Negative responses like Cancel or Close should use the default appearance.
572+func (x *MessageDialog) SetResponseAppearance(ResponseVar string, AppearanceVar ResponseAppearance) {
573+
574+ xMessageDialogSetResponseAppearance(x.GoPointer(), ResponseVar, AppearanceVar)
575+
576+}
577+
578+var xMessageDialogSetResponseEnabled func(uintptr, string, bool)
579+
580+// Sets whether @response is enabled.
581+//
582+// If @response is not enabled, the corresponding button will have
583+// [property@Gtk.Widget:sensitive] set to `FALSE` and it can't be activated as
584+// a default response.
585+//
586+// @response can still be used as [property@MessageDialog:close-response] while
587+// it's not enabled.
588+//
589+// Responses are enabled by default.
590+func (x *MessageDialog) SetResponseEnabled(ResponseVar string, EnabledVar bool) {
591+
592+ xMessageDialogSetResponseEnabled(x.GoPointer(), ResponseVar, EnabledVar)
593+
594+}
595+
596+var xMessageDialogSetResponseLabel func(uintptr, string, string)
597+
598+// Sets the label of @response to @label.
599+//
600+// Labels are displayed on the dialog buttons. An embedded underline in @label
601+// indicates a mnemonic.
602+func (x *MessageDialog) SetResponseLabel(ResponseVar string, LabelVar string) {
603+
604+ xMessageDialogSetResponseLabel(x.GoPointer(), ResponseVar, LabelVar)
605+
606+}
607+
608+func (c *MessageDialog) GoPointer() uintptr {
609+ return c.Ptr
610+}
611+
612+func (c *MessageDialog) SetGoPointer(ptr uintptr) {
613+ c.Ptr = ptr
614+}
615+
616+// This signal is emitted when the dialog is closed.
617+//
618+// @response will be set to the response ID of the button that had been
619+// activated.
620+//
621+// if the dialog was closed by pressing &lt;kbd&gt;Escape&lt;/kbd&gt; or with a system
622+// action, @response will be set to the value of
623+// [property@MessageDialog:close-response].
624+func (x *MessageDialog) ConnectResponse(cb func(MessageDialog, string)) {
625+ fcb := func(clsPtr uintptr, ResponseVarp string) {
626+ fa := MessageDialog{}
627+ fa.Ptr = clsPtr
628+
629+ cb(fa, ResponseVarp)
630+
631+ }
632+ gobject.ObjectConnect(x.GoPointer(), "signal::response", purego.NewCallback(fcb))
633+}
634+
635+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
636+func (x *MessageDialog) GetAccessibleRole() gtk.AccessibleRole {
637+
638+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
639+
640+}
641+
642+// Resets the accessible @property to its default value.
643+func (x *MessageDialog) ResetProperty(PropertyVar gtk.AccessibleProperty) {
644+
645+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
646+
647+}
648+
649+// Resets the accessible @relation to its default value.
650+func (x *MessageDialog) ResetRelation(RelationVar gtk.AccessibleRelation) {
651+
652+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
653+
654+}
655+
656+// Resets the accessible @state to its default value.
657+func (x *MessageDialog) ResetState(StateVar gtk.AccessibleState) {
658+
659+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
660+
661+}
662+
663+// Updates a list of accessible properties.
664+//
665+// See the [enum@Gtk.AccessibleProperty] documentation for the
666+// value types of accessible properties.
667+//
668+// This function should be called by `GtkWidget` types whenever
669+// an accessible property change must be communicated to assistive
670+// technologies.
671+//
672+// Example:
673+// ```c
674+// value = gtk_adjustment_get_value (adjustment);
675+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
676+//
677+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
678+// -1);
679+//
680+// ```
681+func (x *MessageDialog) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
682+
683+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
684+
685+}
686+
687+// Updates an array of accessible properties.
688+//
689+// This function should be called by `GtkWidget` types whenever an accessible
690+// property change must be communicated to assistive technologies.
691+//
692+// This function is meant to be used by language bindings.
693+func (x *MessageDialog) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
694+
695+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
696+
697+}
698+
699+// Updates a list of accessible relations.
700+//
701+// This function should be called by `GtkWidget` types whenever an accessible
702+// relation change must be communicated to assistive technologies.
703+//
704+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
705+// you should pass each reference individually, followed by %NULL, e.g.
706+//
707+// ```c
708+// gtk_accessible_update_relation (accessible,
709+//
710+// GTK_ACCESSIBLE_RELATION_CONTROLS,
711+// ref1, NULL,
712+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
713+// ref1, ref2, ref3, NULL,
714+// -1);
715+//
716+// ```
717+func (x *MessageDialog) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
718+
719+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
720+
721+}
722+
723+// Updates an array of accessible relations.
724+//
725+// This function should be called by `GtkWidget` types whenever an accessible
726+// relation change must be communicated to assistive technologies.
727+//
728+// This function is meant to be used by language bindings.
729+func (x *MessageDialog) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
730+
731+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
732+
733+}
734+
735+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
736+// documentation for the value types of accessible states.
737+//
738+// This function should be called by `GtkWidget` types whenever an accessible
739+// state change must be communicated to assistive technologies.
740+//
741+// Example:
742+// ```c
743+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
744+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
745+//
746+// GTK_ACCESSIBLE_STATE_CHECKED, value,
747+// -1);
748+//
749+// ```
750+func (x *MessageDialog) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
751+
752+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
753+
754+}
755+
756+// Updates an array of accessible states.
757+//
758+// This function should be called by `GtkWidget` types whenever an accessible
759+// state change must be communicated to assistive technologies.
760+//
761+// This function is meant to be used by language bindings.
762+func (x *MessageDialog) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
763+
764+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
765+
766+}
767+
768+// Gets the ID of the @buildable object.
769+//
770+// `GtkBuilder` sets the name based on the ID attribute
771+// of the &lt;object&gt; tag used to construct the @buildable.
772+func (x *MessageDialog) GetBuildableId() string {
773+
774+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
775+
776+}
777+
778+// Returns the renderer that is used for this `GtkNative`.
779+func (x *MessageDialog) GetRenderer() *gsk.Renderer {
780+
781+ GetRendererPtr := gtk.XGtkNativeGetRenderer(x.GoPointer())
782+ if GetRendererPtr == 0 {
783+ return nil
784+ }
785+
786+ gobject.IncreaseRef(GetRendererPtr)
787+
788+ GetRendererCls := &gsk.Renderer{}
789+ GetRendererCls.Ptr = GetRendererPtr
790+ return GetRendererCls
791+
792+}
793+
794+// Returns the surface of this `GtkNative`.
795+func (x *MessageDialog) GetSurface() *gdk.Surface {
796+
797+ GetSurfacePtr := gtk.XGtkNativeGetSurface(x.GoPointer())
798+ if GetSurfacePtr == 0 {
799+ return nil
800+ }
801+
802+ gobject.IncreaseRef(GetSurfacePtr)
803+
804+ GetSurfaceCls := &gdk.Surface{}
805+ GetSurfaceCls.Ptr = GetSurfacePtr
806+ return GetSurfaceCls
807+
808+}
809+
810+// Retrieves the surface transform of @self.
811+//
812+// This is the translation from @self's surface coordinates into
813+// @self's widget coordinates.
814+func (x *MessageDialog) GetSurfaceTransform(XVar float64, YVar float64) {
815+
816+ gtk.XGtkNativeGetSurfaceTransform(x.GoPointer(), XVar, YVar)
817+
818+}
819+
820+// Realizes a `GtkNative`.
821+//
822+// This should only be used by subclasses.
823+func (x *MessageDialog) Realize() {
824+
825+ gtk.XGtkNativeRealize(x.GoPointer())
826+
827+}
828+
829+// Unrealizes a `GtkNative`.
830+//
831+// This should only be used by subclasses.
832+func (x *MessageDialog) Unrealize() {
833+
834+ gtk.XGtkNativeUnrealize(x.GoPointer())
835+
836+}
837+
838+// Returns the display that this `GtkRoot` is on.
839+func (x *MessageDialog) GetDisplay() *gdk.Display {
840+
841+ GetDisplayPtr := gtk.XGtkRootGetDisplay(x.GoPointer())
842+ if GetDisplayPtr == 0 {
843+ return nil
844+ }
845+
846+ gobject.IncreaseRef(GetDisplayPtr)
847+
848+ GetDisplayCls := &gdk.Display{}
849+ GetDisplayCls.Ptr = GetDisplayPtr
850+ return GetDisplayCls
851+
852+}
853+
854+// Retrieves the current focused widget within the root.
855+//
856+// Note that this is the widget that would have the focus
857+// if the root is active; if the root is not focused then
858+// `gtk_widget_has_focus (widget)` will be %FALSE for the
859+// widget.
860+func (x *MessageDialog) GetFocus() *gtk.Widget {
861+
862+ GetFocusPtr := gtk.XGtkRootGetFocus(x.GoPointer())
863+ if GetFocusPtr == 0 {
864+ return nil
865+ }
866+
867+ gobject.IncreaseRef(GetFocusPtr)
868+
869+ GetFocusCls := &gtk.Widget{}
870+ GetFocusCls.Ptr = GetFocusPtr
871+ return GetFocusCls
872+
873+}
874+
875+// If @focus is not the current focus widget, and is focusable, sets
876+// it as the focus widget for the root.
877+//
878+// If @focus is %NULL, unsets the focus widget for the root.
879+//
880+// To set the focus to a particular widget in the root, it is usually
881+// more convenient to use [method@Gtk.Widget.grab_focus] instead of
882+// this function.
883+func (x *MessageDialog) SetFocus(FocusVar *gtk.Widget) {
884+
885+ gtk.XGtkRootSetFocus(x.GoPointer(), FocusVar.GoPointer())
886+
887+}
888+
889+func init() {
890+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
891+ if err != nil {
892+ panic(err)
893+ }
894+
895+ core.PuregoSafeRegister(&xNewMessageDialog, lib, "adw_message_dialog_new")
896+
897+ core.PuregoSafeRegister(&xMessageDialogAddResponse, lib, "adw_message_dialog_add_response")
898+ core.PuregoSafeRegister(&xMessageDialogAddResponses, lib, "adw_message_dialog_add_responses")
899+ core.PuregoSafeRegister(&xMessageDialogChoose, lib, "adw_message_dialog_choose")
900+ core.PuregoSafeRegister(&xMessageDialogChooseFinish, lib, "adw_message_dialog_choose_finish")
901+ core.PuregoSafeRegister(&xMessageDialogFormatBody, lib, "adw_message_dialog_format_body")
902+ core.PuregoSafeRegister(&xMessageDialogFormatBodyMarkup, lib, "adw_message_dialog_format_body_markup")
903+ core.PuregoSafeRegister(&xMessageDialogFormatHeading, lib, "adw_message_dialog_format_heading")
904+ core.PuregoSafeRegister(&xMessageDialogFormatHeadingMarkup, lib, "adw_message_dialog_format_heading_markup")
905+ core.PuregoSafeRegister(&xMessageDialogGetBody, lib, "adw_message_dialog_get_body")
906+ core.PuregoSafeRegister(&xMessageDialogGetBodyUseMarkup, lib, "adw_message_dialog_get_body_use_markup")
907+ core.PuregoSafeRegister(&xMessageDialogGetCloseResponse, lib, "adw_message_dialog_get_close_response")
908+ core.PuregoSafeRegister(&xMessageDialogGetDefaultResponse, lib, "adw_message_dialog_get_default_response")
909+ core.PuregoSafeRegister(&xMessageDialogGetExtraChild, lib, "adw_message_dialog_get_extra_child")
910+ core.PuregoSafeRegister(&xMessageDialogGetHeading, lib, "adw_message_dialog_get_heading")
911+ core.PuregoSafeRegister(&xMessageDialogGetHeadingUseMarkup, lib, "adw_message_dialog_get_heading_use_markup")
912+ core.PuregoSafeRegister(&xMessageDialogGetResponseAppearance, lib, "adw_message_dialog_get_response_appearance")
913+ core.PuregoSafeRegister(&xMessageDialogGetResponseEnabled, lib, "adw_message_dialog_get_response_enabled")
914+ core.PuregoSafeRegister(&xMessageDialogGetResponseLabel, lib, "adw_message_dialog_get_response_label")
915+ core.PuregoSafeRegister(&xMessageDialogHasResponse, lib, "adw_message_dialog_has_response")
916+ core.PuregoSafeRegister(&xMessageDialogResponse, lib, "adw_message_dialog_response")
917+ core.PuregoSafeRegister(&xMessageDialogSetBody, lib, "adw_message_dialog_set_body")
918+ core.PuregoSafeRegister(&xMessageDialogSetBodyUseMarkup, lib, "adw_message_dialog_set_body_use_markup")
919+ core.PuregoSafeRegister(&xMessageDialogSetCloseResponse, lib, "adw_message_dialog_set_close_response")
920+ core.PuregoSafeRegister(&xMessageDialogSetDefaultResponse, lib, "adw_message_dialog_set_default_response")
921+ core.PuregoSafeRegister(&xMessageDialogSetExtraChild, lib, "adw_message_dialog_set_extra_child")
922+ core.PuregoSafeRegister(&xMessageDialogSetHeading, lib, "adw_message_dialog_set_heading")
923+ core.PuregoSafeRegister(&xMessageDialogSetHeadingUseMarkup, lib, "adw_message_dialog_set_heading_use_markup")
924+ core.PuregoSafeRegister(&xMessageDialogSetResponseAppearance, lib, "adw_message_dialog_set_response_appearance")
925+ core.PuregoSafeRegister(&xMessageDialogSetResponseEnabled, lib, "adw_message_dialog_set_response_enabled")
926+ core.PuregoSafeRegister(&xMessageDialogSetResponseLabel, lib, "adw_message_dialog_set_response_label")
927+
928+}
A v4/adw/adw-navigation-direction.go +13 -0
@@ -0,0 +1,13 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+// Describes the direction of a swipe navigation gesture.
5+type NavigationDirection int
6+
7+const (
8+
9+ // Corresponds to start or top, depending on orientation and text direction
10+ NavigationDirectionBackValue NavigationDirection = 0
11+ // Corresponds to end or bottom, depending on orientation and text direction
12+ NavigationDirectionForwardValue NavigationDirection = 1
13+)
A v4/adw/adw-password-entry-row.go +548 -0
@@ -0,0 +1,548 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/glib"
8+ "github.com/jwijenbergh/puregotk/v4/gobject"
9+ "github.com/jwijenbergh/puregotk/v4/gtk"
10+)
11+
12+type PasswordEntryRowClass struct {
13+ ParentClass uintptr
14+}
15+
16+// A [class@EntryRow] tailored for entering secrets.
17+//
18+// &lt;picture&gt;
19+//
20+// &lt;source srcset="password-entry-row-dark.png" media="(prefers-color-scheme: dark)"&gt;
21+// &lt;img src="password-entry-row.png" alt="password-entry-row"&gt;
22+//
23+// &lt;/picture&gt;
24+//
25+// It does not show its contents in clear text, does not allow to copy it to the
26+// clipboard, and shows a warning when Caps Lock is engaged. If the underlying
27+// platform allows it, `AdwPasswordEntryRow` will also place the text in a
28+// non-pageable memory area, to avoid it being written out to disk by the
29+// operating system.
30+//
31+// It offer a way to reveal the contents in clear text.
32+//
33+// ## CSS Nodes
34+//
35+// `AdwPasswordEntryRow` has a single CSS node with name `row` that carries
36+// `.entry` and `.password` style classes.
37+type PasswordEntryRow struct {
38+ EntryRow
39+}
40+
41+func PasswordEntryRowNewFromInternalPtr(ptr uintptr) *PasswordEntryRow {
42+ cls := &PasswordEntryRow{}
43+ cls.Ptr = ptr
44+ return cls
45+}
46+
47+var xNewPasswordEntryRow func() uintptr
48+
49+// Creates a new `AdwPasswordEntryRow`.
50+func NewPasswordEntryRow() *gtk.Widget {
51+ NewPasswordEntryRowPtr := xNewPasswordEntryRow()
52+ if NewPasswordEntryRowPtr == 0 {
53+ return nil
54+ }
55+
56+ gobject.IncreaseRef(NewPasswordEntryRowPtr)
57+
58+ NewPasswordEntryRowCls := &gtk.Widget{}
59+ NewPasswordEntryRowCls.Ptr = NewPasswordEntryRowPtr
60+ return NewPasswordEntryRowCls
61+}
62+
63+func (c *PasswordEntryRow) GoPointer() uintptr {
64+ return c.Ptr
65+}
66+
67+func (c *PasswordEntryRow) SetGoPointer(ptr uintptr) {
68+ c.Ptr = ptr
69+}
70+
71+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
72+func (x *PasswordEntryRow) GetAccessibleRole() gtk.AccessibleRole {
73+
74+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
75+
76+}
77+
78+// Resets the accessible @property to its default value.
79+func (x *PasswordEntryRow) ResetProperty(PropertyVar gtk.AccessibleProperty) {
80+
81+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
82+
83+}
84+
85+// Resets the accessible @relation to its default value.
86+func (x *PasswordEntryRow) ResetRelation(RelationVar gtk.AccessibleRelation) {
87+
88+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
89+
90+}
91+
92+// Resets the accessible @state to its default value.
93+func (x *PasswordEntryRow) ResetState(StateVar gtk.AccessibleState) {
94+
95+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
96+
97+}
98+
99+// Updates a list of accessible properties.
100+//
101+// See the [enum@Gtk.AccessibleProperty] documentation for the
102+// value types of accessible properties.
103+//
104+// This function should be called by `GtkWidget` types whenever
105+// an accessible property change must be communicated to assistive
106+// technologies.
107+//
108+// Example:
109+// ```c
110+// value = gtk_adjustment_get_value (adjustment);
111+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
112+//
113+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
114+// -1);
115+//
116+// ```
117+func (x *PasswordEntryRow) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
118+
119+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
120+
121+}
122+
123+// Updates an array of accessible properties.
124+//
125+// This function should be called by `GtkWidget` types whenever an accessible
126+// property change must be communicated to assistive technologies.
127+//
128+// This function is meant to be used by language bindings.
129+func (x *PasswordEntryRow) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
130+
131+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
132+
133+}
134+
135+// Updates a list of accessible relations.
136+//
137+// This function should be called by `GtkWidget` types whenever an accessible
138+// relation change must be communicated to assistive technologies.
139+//
140+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
141+// you should pass each reference individually, followed by %NULL, e.g.
142+//
143+// ```c
144+// gtk_accessible_update_relation (accessible,
145+//
146+// GTK_ACCESSIBLE_RELATION_CONTROLS,
147+// ref1, NULL,
148+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
149+// ref1, ref2, ref3, NULL,
150+// -1);
151+//
152+// ```
153+func (x *PasswordEntryRow) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
154+
155+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
156+
157+}
158+
159+// Updates an array of accessible relations.
160+//
161+// This function should be called by `GtkWidget` types whenever an accessible
162+// relation change must be communicated to assistive technologies.
163+//
164+// This function is meant to be used by language bindings.
165+func (x *PasswordEntryRow) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
166+
167+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
168+
169+}
170+
171+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
172+// documentation for the value types of accessible states.
173+//
174+// This function should be called by `GtkWidget` types whenever an accessible
175+// state change must be communicated to assistive technologies.
176+//
177+// Example:
178+// ```c
179+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
180+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
181+//
182+// GTK_ACCESSIBLE_STATE_CHECKED, value,
183+// -1);
184+//
185+// ```
186+func (x *PasswordEntryRow) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
187+
188+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
189+
190+}
191+
192+// Updates an array of accessible states.
193+//
194+// This function should be called by `GtkWidget` types whenever an accessible
195+// state change must be communicated to assistive technologies.
196+//
197+// This function is meant to be used by language bindings.
198+func (x *PasswordEntryRow) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
199+
200+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
201+
202+}
203+
204+// Gets the action name for @actionable.
205+func (x *PasswordEntryRow) GetActionName() string {
206+
207+ return gtk.XGtkActionableGetActionName(x.GoPointer())
208+
209+}
210+
211+// Gets the current target value of @actionable.
212+func (x *PasswordEntryRow) GetActionTargetValue() *glib.Variant {
213+
214+ return gtk.XGtkActionableGetActionTargetValue(x.GoPointer())
215+
216+}
217+
218+// Specifies the name of the action with which this widget should be
219+// associated.
220+//
221+// If @action_name is %NULL then the widget will be unassociated from
222+// any previous action.
223+//
224+// Usually this function is used when the widget is located (or will be
225+// located) within the hierarchy of a `GtkApplicationWindow`.
226+//
227+// Names are of the form “win.save” or “app.quit” for actions on the
228+// containing [class@ApplicationWindow] or its associated [class@Application],
229+// respectively. This is the same form used for actions in the [class@Gio.Menu]
230+// associated with the window.
231+func (x *PasswordEntryRow) SetActionName(ActionNameVar string) {
232+
233+ gtk.XGtkActionableSetActionName(x.GoPointer(), ActionNameVar)
234+
235+}
236+
237+// Sets the target of an actionable widget.
238+//
239+// This is a convenience function that calls [ctor@GLib.Variant.new] for
240+// @format_string and uses the result to call
241+// [method@Gtk.Actionable.set_action_target_value].
242+//
243+// If you are setting a string-valued target and want to set
244+// the action name at the same time, you can use
245+// [method@Gtk.Actionable.set_detailed_action_name].
246+func (x *PasswordEntryRow) SetActionTarget(FormatStringVar string, varArgs ...interface{}) {
247+
248+ gtk.XGtkActionableSetActionTarget(x.GoPointer(), FormatStringVar, varArgs...)
249+
250+}
251+
252+// Sets the target value of an actionable widget.
253+//
254+// If @target_value is %NULL then the target value is unset.
255+//
256+// The target value has two purposes. First, it is used as the parameter
257+// to activation of the action associated with the `GtkActionable` widget.
258+// Second, it is used to determine if the widget should be rendered as
259+// “active” — the widget is active if the state is equal to the given target.
260+//
261+// Consider the example of associating a set of buttons with a [iface@Gio.Action]
262+// with string state in a typical “radio button” situation. Each button
263+// will be associated with the same action, but with a different target
264+// value for that action. Clicking on a particular button will activate
265+// the action with the target of that button, which will typically cause
266+// the action’s state to change to that value. Since the action’s state
267+// is now equal to the target value of the button, the button will now
268+// be rendered as active (and the other buttons, with different targets,
269+// rendered inactive).
270+func (x *PasswordEntryRow) SetActionTargetValue(TargetValueVar *glib.Variant) {
271+
272+ gtk.XGtkActionableSetActionTargetValue(x.GoPointer(), TargetValueVar)
273+
274+}
275+
276+// Sets the action-name and associated string target value of an
277+// actionable widget.
278+//
279+// @detailed_action_name is a string in the format accepted by
280+// [func@Gio.Action.parse_detailed_name].
281+func (x *PasswordEntryRow) SetDetailedActionName(DetailedActionNameVar string) {
282+
283+ gtk.XGtkActionableSetDetailedActionName(x.GoPointer(), DetailedActionNameVar)
284+
285+}
286+
287+// Gets the ID of the @buildable object.
288+//
289+// `GtkBuilder` sets the name based on the ID attribute
290+// of the &lt;object&gt; tag used to construct the @buildable.
291+func (x *PasswordEntryRow) GetBuildableId() string {
292+
293+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
294+
295+}
296+
297+// Deletes the currently selected text of the editable.
298+//
299+// This call doesn’t do anything if there is no selected text.
300+func (x *PasswordEntryRow) DeleteSelection() {
301+
302+ gtk.XGtkEditableDeleteSelection(x.GoPointer())
303+
304+}
305+
306+// Deletes a sequence of characters.
307+//
308+// The characters that are deleted are those characters at positions
309+// from @start_pos up to, but not including @end_pos. If @end_pos is
310+// negative, then the characters deleted are those from @start_pos to
311+// the end of the text.
312+//
313+// Note that the positions are specified in characters, not bytes.
314+func (x *PasswordEntryRow) DeleteText(StartPosVar int32, EndPosVar int32) {
315+
316+ gtk.XGtkEditableDeleteText(x.GoPointer(), StartPosVar, EndPosVar)
317+
318+}
319+
320+// Undoes the setup done by [method@Gtk.Editable.init_delegate].
321+//
322+// This is a helper function that should be called from dispose,
323+// before removing the delegate object.
324+func (x *PasswordEntryRow) FinishDelegate() {
325+
326+ gtk.XGtkEditableFinishDelegate(x.GoPointer())
327+
328+}
329+
330+// Gets the alignment of the editable.
331+func (x *PasswordEntryRow) GetAlignment() float32 {
332+
333+ return gtk.XGtkEditableGetAlignment(x.GoPointer())
334+
335+}
336+
337+// Retrieves a sequence of characters.
338+//
339+// The characters that are retrieved are those characters at positions
340+// from @start_pos up to, but not including @end_pos. If @end_pos is negative,
341+// then the characters retrieved are those characters from @start_pos to
342+// the end of the text.
343+//
344+// Note that positions are specified in characters, not bytes.
345+func (x *PasswordEntryRow) GetChars(StartPosVar int32, EndPosVar int32) string {
346+
347+ return gtk.XGtkEditableGetChars(x.GoPointer(), StartPosVar, EndPosVar)
348+
349+}
350+
351+// Gets the `GtkEditable` that @editable is delegating its
352+// implementation to.
353+//
354+// Typically, the delegate is a [class@Gtk.Text] widget.
355+func (x *PasswordEntryRow) GetDelegate() *gtk.EditableBase {
356+
357+ GetDelegatePtr := gtk.XGtkEditableGetDelegate(x.GoPointer())
358+ if GetDelegatePtr == 0 {
359+ return nil
360+ }
361+
362+ gobject.IncreaseRef(GetDelegatePtr)
363+
364+ GetDelegateCls := &gtk.EditableBase{}
365+ GetDelegateCls.Ptr = GetDelegatePtr
366+ return GetDelegateCls
367+
368+}
369+
370+// Retrieves whether @editable is editable.
371+func (x *PasswordEntryRow) GetEditable() bool {
372+
373+ return gtk.XGtkEditableGetEditable(x.GoPointer())
374+
375+}
376+
377+// Gets if undo/redo actions are enabled for @editable
378+func (x *PasswordEntryRow) GetEnableUndo() bool {
379+
380+ return gtk.XGtkEditableGetEnableUndo(x.GoPointer())
381+
382+}
383+
384+// Retrieves the desired maximum width of @editable, in characters.
385+func (x *PasswordEntryRow) GetMaxWidthChars() int32 {
386+
387+ return gtk.XGtkEditableGetMaxWidthChars(x.GoPointer())
388+
389+}
390+
391+// Retrieves the current position of the cursor relative
392+// to the start of the content of the editable.
393+//
394+// Note that this position is in characters, not in bytes.
395+func (x *PasswordEntryRow) GetPosition() int32 {
396+
397+ return gtk.XGtkEditableGetPosition(x.GoPointer())
398+
399+}
400+
401+// Retrieves the selection bound of the editable.
402+//
403+// @start_pos will be filled with the start of the selection and
404+// @end_pos with end. If no text was selected both will be identical
405+// and %FALSE will be returned.
406+//
407+// Note that positions are specified in characters, not bytes.
408+func (x *PasswordEntryRow) GetSelectionBounds(StartPosVar int32, EndPosVar int32) bool {
409+
410+ return gtk.XGtkEditableGetSelectionBounds(x.GoPointer(), StartPosVar, EndPosVar)
411+
412+}
413+
414+// Retrieves the contents of @editable.
415+//
416+// The returned string is owned by GTK and must not be modified or freed.
417+func (x *PasswordEntryRow) GetText() string {
418+
419+ return gtk.XGtkEditableGetText(x.GoPointer())
420+
421+}
422+
423+// Gets the number of characters of space reserved
424+// for the contents of the editable.
425+func (x *PasswordEntryRow) GetWidthChars() int32 {
426+
427+ return gtk.XGtkEditableGetWidthChars(x.GoPointer())
428+
429+}
430+
431+// Sets up a delegate for `GtkEditable`.
432+//
433+// This is assuming that the get_delegate vfunc in the `GtkEditable`
434+// interface has been set up for the @editable's type.
435+//
436+// This is a helper function that should be called in instance init,
437+// after creating the delegate object.
438+func (x *PasswordEntryRow) InitDelegate() {
439+
440+ gtk.XGtkEditableInitDelegate(x.GoPointer())
441+
442+}
443+
444+// Inserts @length bytes of @text into the contents of the
445+// widget, at position @position.
446+//
447+// Note that the position is in characters, not in bytes.
448+// The function updates @position to point after the newly
449+// inserted text.
450+func (x *PasswordEntryRow) InsertText(TextVar string, LengthVar int32, PositionVar int32) {
451+
452+ gtk.XGtkEditableInsertText(x.GoPointer(), TextVar, LengthVar, PositionVar)
453+
454+}
455+
456+// Selects a region of text.
457+//
458+// The characters that are selected are those characters at positions
459+// from @start_pos up to, but not including @end_pos. If @end_pos is
460+// negative, then the characters selected are those characters from
461+// @start_pos to the end of the text.
462+//
463+// Note that positions are specified in characters, not bytes.
464+func (x *PasswordEntryRow) SelectRegion(StartPosVar int32, EndPosVar int32) {
465+
466+ gtk.XGtkEditableSelectRegion(x.GoPointer(), StartPosVar, EndPosVar)
467+
468+}
469+
470+// Sets the alignment for the contents of the editable.
471+//
472+// This controls the horizontal positioning of the contents when
473+// the displayed text is shorter than the width of the editable.
474+func (x *PasswordEntryRow) SetAlignment(XalignVar float32) {
475+
476+ gtk.XGtkEditableSetAlignment(x.GoPointer(), XalignVar)
477+
478+}
479+
480+// Determines if the user can edit the text in the editable widget.
481+func (x *PasswordEntryRow) SetEditable(IsEditableVar bool) {
482+
483+ gtk.XGtkEditableSetEditable(x.GoPointer(), IsEditableVar)
484+
485+}
486+
487+// If enabled, changes to @editable will be saved for undo/redo
488+// actions.
489+//
490+// This results in an additional copy of text changes and are not
491+// stored in secure memory. As such, undo is forcefully disabled
492+// when [property@Gtk.Text:visibility] is set to %FALSE.
493+func (x *PasswordEntryRow) SetEnableUndo(EnableUndoVar bool) {
494+
495+ gtk.XGtkEditableSetEnableUndo(x.GoPointer(), EnableUndoVar)
496+
497+}
498+
499+// Sets the desired maximum width in characters of @editable.
500+func (x *PasswordEntryRow) SetMaxWidthChars(NCharsVar int32) {
501+
502+ gtk.XGtkEditableSetMaxWidthChars(x.GoPointer(), NCharsVar)
503+
504+}
505+
506+// Sets the cursor position in the editable to the given value.
507+//
508+// The cursor is displayed before the character with the given (base 0)
509+// index in the contents of the editable. The value must be less than
510+// or equal to the number of characters in the editable. A value of -1
511+// indicates that the position should be set after the last character
512+// of the editable. Note that @position is in characters, not in bytes.
513+func (x *PasswordEntryRow) SetPosition(PositionVar int32) {
514+
515+ gtk.XGtkEditableSetPosition(x.GoPointer(), PositionVar)
516+
517+}
518+
519+// Sets the text in the editable to the given value.
520+//
521+// This is replacing the current contents.
522+func (x *PasswordEntryRow) SetText(TextVar string) {
523+
524+ gtk.XGtkEditableSetText(x.GoPointer(), TextVar)
525+
526+}
527+
528+// Changes the size request of the editable to be about the
529+// right size for @n_chars characters.
530+//
531+// Note that it changes the size request, the size can still
532+// be affected by how you pack the widget into containers.
533+// If @n_chars is -1, the size reverts to the default size.
534+func (x *PasswordEntryRow) SetWidthChars(NCharsVar int32) {
535+
536+ gtk.XGtkEditableSetWidthChars(x.GoPointer(), NCharsVar)
537+
538+}
539+
540+func init() {
541+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
542+ if err != nil {
543+ panic(err)
544+ }
545+
546+ core.PuregoSafeRegister(&xNewPasswordEntryRow, lib, "adw_password_entry_row_new")
547+
548+}
A v4/adw/adw-preferences-group.go +329 -0
@@ -0,0 +1,329 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gobject"
8+ "github.com/jwijenbergh/puregotk/v4/gtk"
9+)
10+
11+type PreferencesGroupClass struct {
12+ ParentClass uintptr
13+
14+ Padding uintptr
15+}
16+
17+// A group of preference rows.
18+//
19+// &lt;picture&gt;
20+//
21+// &lt;source srcset="preferences-group-dark.png" media="(prefers-color-scheme: dark)"&gt;
22+// &lt;img src="preferences-group.png" alt="preferences-group"&gt;
23+//
24+// &lt;/picture&gt;
25+//
26+// An `AdwPreferencesGroup` represents a group or tightly related preferences,
27+// which in turn are represented by [class@PreferencesRow].
28+//
29+// To summarize the role of the preferences it gathers, a group can have both a
30+// title and a description. The title will be used by [class@PreferencesWindow]
31+// to let the user look for a preference.
32+//
33+// ## AdwPreferencesGroup as GtkBuildable
34+//
35+// The `AdwPreferencesGroup` implementation of the [iface@Gtk.Buildable] interface
36+// supports adding [class@PreferencesRow]s to the list by omitting "type". If "type"
37+// is omitted and the widget isn't a [class@PreferencesRow] the child is added to
38+// a box below the list.
39+//
40+// When the "type" attribute of a child is `header-suffix`, the child
41+// is set as the suffix on the end of the title and description.
42+//
43+// ## CSS nodes
44+//
45+// `AdwPreferencesGroup` has a single CSS node with name `preferencesgroup`.
46+//
47+// ## Accessibility
48+//
49+// `AdwPreferencesGroup` uses the `GTK_ACCESSIBLE_ROLE_GROUP` role.
50+type PreferencesGroup struct {
51+ gtk.Widget
52+}
53+
54+func PreferencesGroupNewFromInternalPtr(ptr uintptr) *PreferencesGroup {
55+ cls := &PreferencesGroup{}
56+ cls.Ptr = ptr
57+ return cls
58+}
59+
60+var xNewPreferencesGroup func() uintptr
61+
62+// Creates a new `AdwPreferencesGroup`.
63+func NewPreferencesGroup() *gtk.Widget {
64+ NewPreferencesGroupPtr := xNewPreferencesGroup()
65+ if NewPreferencesGroupPtr == 0 {
66+ return nil
67+ }
68+
69+ gobject.IncreaseRef(NewPreferencesGroupPtr)
70+
71+ NewPreferencesGroupCls := &gtk.Widget{}
72+ NewPreferencesGroupCls.Ptr = NewPreferencesGroupPtr
73+ return NewPreferencesGroupCls
74+}
75+
76+var xPreferencesGroupAdd func(uintptr, uintptr)
77+
78+// Adds a child to @self.
79+func (x *PreferencesGroup) Add(ChildVar *gtk.Widget) {
80+
81+ xPreferencesGroupAdd(x.GoPointer(), ChildVar.GoPointer())
82+
83+}
84+
85+var xPreferencesGroupGetDescription func(uintptr) string
86+
87+// Gets the description of @self.
88+func (x *PreferencesGroup) GetDescription() string {
89+
90+ return xPreferencesGroupGetDescription(x.GoPointer())
91+
92+}
93+
94+var xPreferencesGroupGetHeaderSuffix func(uintptr) uintptr
95+
96+// Gets the suffix for @self's header.
97+func (x *PreferencesGroup) GetHeaderSuffix() *gtk.Widget {
98+
99+ GetHeaderSuffixPtr := xPreferencesGroupGetHeaderSuffix(x.GoPointer())
100+ if GetHeaderSuffixPtr == 0 {
101+ return nil
102+ }
103+
104+ gobject.IncreaseRef(GetHeaderSuffixPtr)
105+
106+ GetHeaderSuffixCls := &gtk.Widget{}
107+ GetHeaderSuffixCls.Ptr = GetHeaderSuffixPtr
108+ return GetHeaderSuffixCls
109+
110+}
111+
112+var xPreferencesGroupGetTitle func(uintptr) string
113+
114+// Gets the title of @self.
115+func (x *PreferencesGroup) GetTitle() string {
116+
117+ return xPreferencesGroupGetTitle(x.GoPointer())
118+
119+}
120+
121+var xPreferencesGroupRemove func(uintptr, uintptr)
122+
123+// Removes a child from @self.
124+func (x *PreferencesGroup) Remove(ChildVar *gtk.Widget) {
125+
126+ xPreferencesGroupRemove(x.GoPointer(), ChildVar.GoPointer())
127+
128+}
129+
130+var xPreferencesGroupSetDescription func(uintptr, string)
131+
132+// Sets the description for @self.
133+func (x *PreferencesGroup) SetDescription(DescriptionVar string) {
134+
135+ xPreferencesGroupSetDescription(x.GoPointer(), DescriptionVar)
136+
137+}
138+
139+var xPreferencesGroupSetHeaderSuffix func(uintptr, uintptr)
140+
141+// Sets the suffix for @self's header.
142+//
143+// Displayed above the list, next to the title and description.
144+//
145+// Suffixes are commonly used to show a button or a spinner for the whole group.
146+func (x *PreferencesGroup) SetHeaderSuffix(SuffixVar *gtk.Widget) {
147+
148+ xPreferencesGroupSetHeaderSuffix(x.GoPointer(), SuffixVar.GoPointer())
149+
150+}
151+
152+var xPreferencesGroupSetTitle func(uintptr, string)
153+
154+// Sets the title for @self.
155+func (x *PreferencesGroup) SetTitle(TitleVar string) {
156+
157+ xPreferencesGroupSetTitle(x.GoPointer(), TitleVar)
158+
159+}
160+
161+func (c *PreferencesGroup) GoPointer() uintptr {
162+ return c.Ptr
163+}
164+
165+func (c *PreferencesGroup) SetGoPointer(ptr uintptr) {
166+ c.Ptr = ptr
167+}
168+
169+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
170+func (x *PreferencesGroup) GetAccessibleRole() gtk.AccessibleRole {
171+
172+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
173+
174+}
175+
176+// Resets the accessible @property to its default value.
177+func (x *PreferencesGroup) ResetProperty(PropertyVar gtk.AccessibleProperty) {
178+
179+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
180+
181+}
182+
183+// Resets the accessible @relation to its default value.
184+func (x *PreferencesGroup) ResetRelation(RelationVar gtk.AccessibleRelation) {
185+
186+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
187+
188+}
189+
190+// Resets the accessible @state to its default value.
191+func (x *PreferencesGroup) ResetState(StateVar gtk.AccessibleState) {
192+
193+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
194+
195+}
196+
197+// Updates a list of accessible properties.
198+//
199+// See the [enum@Gtk.AccessibleProperty] documentation for the
200+// value types of accessible properties.
201+//
202+// This function should be called by `GtkWidget` types whenever
203+// an accessible property change must be communicated to assistive
204+// technologies.
205+//
206+// Example:
207+// ```c
208+// value = gtk_adjustment_get_value (adjustment);
209+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
210+//
211+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
212+// -1);
213+//
214+// ```
215+func (x *PreferencesGroup) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
216+
217+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
218+
219+}
220+
221+// Updates an array of accessible properties.
222+//
223+// This function should be called by `GtkWidget` types whenever an accessible
224+// property change must be communicated to assistive technologies.
225+//
226+// This function is meant to be used by language bindings.
227+func (x *PreferencesGroup) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
228+
229+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
230+
231+}
232+
233+// Updates a list of accessible relations.
234+//
235+// This function should be called by `GtkWidget` types whenever an accessible
236+// relation change must be communicated to assistive technologies.
237+//
238+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
239+// you should pass each reference individually, followed by %NULL, e.g.
240+//
241+// ```c
242+// gtk_accessible_update_relation (accessible,
243+//
244+// GTK_ACCESSIBLE_RELATION_CONTROLS,
245+// ref1, NULL,
246+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
247+// ref1, ref2, ref3, NULL,
248+// -1);
249+//
250+// ```
251+func (x *PreferencesGroup) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
252+
253+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
254+
255+}
256+
257+// Updates an array of accessible relations.
258+//
259+// This function should be called by `GtkWidget` types whenever an accessible
260+// relation change must be communicated to assistive technologies.
261+//
262+// This function is meant to be used by language bindings.
263+func (x *PreferencesGroup) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
264+
265+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
266+
267+}
268+
269+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
270+// documentation for the value types of accessible states.
271+//
272+// This function should be called by `GtkWidget` types whenever an accessible
273+// state change must be communicated to assistive technologies.
274+//
275+// Example:
276+// ```c
277+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
278+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
279+//
280+// GTK_ACCESSIBLE_STATE_CHECKED, value,
281+// -1);
282+//
283+// ```
284+func (x *PreferencesGroup) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
285+
286+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
287+
288+}
289+
290+// Updates an array of accessible states.
291+//
292+// This function should be called by `GtkWidget` types whenever an accessible
293+// state change must be communicated to assistive technologies.
294+//
295+// This function is meant to be used by language bindings.
296+func (x *PreferencesGroup) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
297+
298+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
299+
300+}
301+
302+// Gets the ID of the @buildable object.
303+//
304+// `GtkBuilder` sets the name based on the ID attribute
305+// of the &lt;object&gt; tag used to construct the @buildable.
306+func (x *PreferencesGroup) GetBuildableId() string {
307+
308+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
309+
310+}
311+
312+func init() {
313+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
314+ if err != nil {
315+ panic(err)
316+ }
317+
318+ core.PuregoSafeRegister(&xNewPreferencesGroup, lib, "adw_preferences_group_new")
319+
320+ core.PuregoSafeRegister(&xPreferencesGroupAdd, lib, "adw_preferences_group_add")
321+ core.PuregoSafeRegister(&xPreferencesGroupGetDescription, lib, "adw_preferences_group_get_description")
322+ core.PuregoSafeRegister(&xPreferencesGroupGetHeaderSuffix, lib, "adw_preferences_group_get_header_suffix")
323+ core.PuregoSafeRegister(&xPreferencesGroupGetTitle, lib, "adw_preferences_group_get_title")
324+ core.PuregoSafeRegister(&xPreferencesGroupRemove, lib, "adw_preferences_group_remove")
325+ core.PuregoSafeRegister(&xPreferencesGroupSetDescription, lib, "adw_preferences_group_set_description")
326+ core.PuregoSafeRegister(&xPreferencesGroupSetHeaderSuffix, lib, "adw_preferences_group_set_header_suffix")
327+ core.PuregoSafeRegister(&xPreferencesGroupSetTitle, lib, "adw_preferences_group_set_title")
328+
329+}
A v4/adw/adw-preferences-page.go +332 -0
@@ -0,0 +1,332 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gobject"
8+ "github.com/jwijenbergh/puregotk/v4/gtk"
9+)
10+
11+type PreferencesPageClass struct {
12+ ParentClass uintptr
13+
14+ Padding uintptr
15+}
16+
17+// A page from [class@PreferencesWindow].
18+//
19+// &lt;picture&gt;
20+//
21+// &lt;source srcset="preferences-page-dark.png" media="(prefers-color-scheme: dark)"&gt;
22+// &lt;img src="preferences-page.png" alt="preferences-page"&gt;
23+//
24+// &lt;/picture&gt;
25+//
26+// The `AdwPreferencesPage` widget gathers preferences groups into a single page
27+// of a preferences window.
28+//
29+// ## CSS nodes
30+//
31+// `AdwPreferencesPage` has a single CSS node with name `preferencespage`.
32+//
33+// ## Accessibility
34+//
35+// `AdwPreferencesPage` uses the `GTK_ACCESSIBLE_ROLE_GROUP` role.
36+type PreferencesPage struct {
37+ gtk.Widget
38+}
39+
40+func PreferencesPageNewFromInternalPtr(ptr uintptr) *PreferencesPage {
41+ cls := &PreferencesPage{}
42+ cls.Ptr = ptr
43+ return cls
44+}
45+
46+var xNewPreferencesPage func() uintptr
47+
48+// Creates a new `AdwPreferencesPage`.
49+func NewPreferencesPage() *gtk.Widget {
50+ NewPreferencesPagePtr := xNewPreferencesPage()
51+ if NewPreferencesPagePtr == 0 {
52+ return nil
53+ }
54+
55+ gobject.IncreaseRef(NewPreferencesPagePtr)
56+
57+ NewPreferencesPageCls := &gtk.Widget{}
58+ NewPreferencesPageCls.Ptr = NewPreferencesPagePtr
59+ return NewPreferencesPageCls
60+}
61+
62+var xPreferencesPageAdd func(uintptr, uintptr)
63+
64+// Adds a preferences group to @self.
65+func (x *PreferencesPage) Add(GroupVar *PreferencesGroup) {
66+
67+ xPreferencesPageAdd(x.GoPointer(), GroupVar.GoPointer())
68+
69+}
70+
71+var xPreferencesPageGetIconName func(uintptr) string
72+
73+// Gets the icon name for @self.
74+func (x *PreferencesPage) GetIconName() string {
75+
76+ return xPreferencesPageGetIconName(x.GoPointer())
77+
78+}
79+
80+var xPreferencesPageGetName func(uintptr) string
81+
82+// Gets the name of @self.
83+func (x *PreferencesPage) GetName() string {
84+
85+ return xPreferencesPageGetName(x.GoPointer())
86+
87+}
88+
89+var xPreferencesPageGetTitle func(uintptr) string
90+
91+// Gets the title of @self.
92+func (x *PreferencesPage) GetTitle() string {
93+
94+ return xPreferencesPageGetTitle(x.GoPointer())
95+
96+}
97+
98+var xPreferencesPageGetUseUnderline func(uintptr) bool
99+
100+// Gets whether an embedded underline in the title indicates a mnemonic.
101+func (x *PreferencesPage) GetUseUnderline() bool {
102+
103+ return xPreferencesPageGetUseUnderline(x.GoPointer())
104+
105+}
106+
107+var xPreferencesPageRemove func(uintptr, uintptr)
108+
109+// Removes a group from @self.
110+func (x *PreferencesPage) Remove(GroupVar *PreferencesGroup) {
111+
112+ xPreferencesPageRemove(x.GoPointer(), GroupVar.GoPointer())
113+
114+}
115+
116+var xPreferencesPageScrollToTop func(uintptr)
117+
118+// Scrolls the scrolled window of @self to the top.
119+func (x *PreferencesPage) ScrollToTop() {
120+
121+ xPreferencesPageScrollToTop(x.GoPointer())
122+
123+}
124+
125+var xPreferencesPageSetIconName func(uintptr, string)
126+
127+// Sets the icon name for @self.
128+func (x *PreferencesPage) SetIconName(IconNameVar string) {
129+
130+ xPreferencesPageSetIconName(x.GoPointer(), IconNameVar)
131+
132+}
133+
134+var xPreferencesPageSetName func(uintptr, string)
135+
136+// Sets the name of @self.
137+func (x *PreferencesPage) SetName(NameVar string) {
138+
139+ xPreferencesPageSetName(x.GoPointer(), NameVar)
140+
141+}
142+
143+var xPreferencesPageSetTitle func(uintptr, string)
144+
145+// Sets the title of @self.
146+func (x *PreferencesPage) SetTitle(TitleVar string) {
147+
148+ xPreferencesPageSetTitle(x.GoPointer(), TitleVar)
149+
150+}
151+
152+var xPreferencesPageSetUseUnderline func(uintptr, bool)
153+
154+// Sets whether an embedded underline in the title indicates a mnemonic.
155+func (x *PreferencesPage) SetUseUnderline(UseUnderlineVar bool) {
156+
157+ xPreferencesPageSetUseUnderline(x.GoPointer(), UseUnderlineVar)
158+
159+}
160+
161+func (c *PreferencesPage) GoPointer() uintptr {
162+ return c.Ptr
163+}
164+
165+func (c *PreferencesPage) SetGoPointer(ptr uintptr) {
166+ c.Ptr = ptr
167+}
168+
169+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
170+func (x *PreferencesPage) GetAccessibleRole() gtk.AccessibleRole {
171+
172+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
173+
174+}
175+
176+// Resets the accessible @property to its default value.
177+func (x *PreferencesPage) ResetProperty(PropertyVar gtk.AccessibleProperty) {
178+
179+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
180+
181+}
182+
183+// Resets the accessible @relation to its default value.
184+func (x *PreferencesPage) ResetRelation(RelationVar gtk.AccessibleRelation) {
185+
186+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
187+
188+}
189+
190+// Resets the accessible @state to its default value.
191+func (x *PreferencesPage) ResetState(StateVar gtk.AccessibleState) {
192+
193+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
194+
195+}
196+
197+// Updates a list of accessible properties.
198+//
199+// See the [enum@Gtk.AccessibleProperty] documentation for the
200+// value types of accessible properties.
201+//
202+// This function should be called by `GtkWidget` types whenever
203+// an accessible property change must be communicated to assistive
204+// technologies.
205+//
206+// Example:
207+// ```c
208+// value = gtk_adjustment_get_value (adjustment);
209+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
210+//
211+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
212+// -1);
213+//
214+// ```
215+func (x *PreferencesPage) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
216+
217+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
218+
219+}
220+
221+// Updates an array of accessible properties.
222+//
223+// This function should be called by `GtkWidget` types whenever an accessible
224+// property change must be communicated to assistive technologies.
225+//
226+// This function is meant to be used by language bindings.
227+func (x *PreferencesPage) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
228+
229+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
230+
231+}
232+
233+// Updates a list of accessible relations.
234+//
235+// This function should be called by `GtkWidget` types whenever an accessible
236+// relation change must be communicated to assistive technologies.
237+//
238+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
239+// you should pass each reference individually, followed by %NULL, e.g.
240+//
241+// ```c
242+// gtk_accessible_update_relation (accessible,
243+//
244+// GTK_ACCESSIBLE_RELATION_CONTROLS,
245+// ref1, NULL,
246+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
247+// ref1, ref2, ref3, NULL,
248+// -1);
249+//
250+// ```
251+func (x *PreferencesPage) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
252+
253+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
254+
255+}
256+
257+// Updates an array of accessible relations.
258+//
259+// This function should be called by `GtkWidget` types whenever an accessible
260+// relation change must be communicated to assistive technologies.
261+//
262+// This function is meant to be used by language bindings.
263+func (x *PreferencesPage) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
264+
265+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
266+
267+}
268+
269+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
270+// documentation for the value types of accessible states.
271+//
272+// This function should be called by `GtkWidget` types whenever an accessible
273+// state change must be communicated to assistive technologies.
274+//
275+// Example:
276+// ```c
277+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
278+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
279+//
280+// GTK_ACCESSIBLE_STATE_CHECKED, value,
281+// -1);
282+//
283+// ```
284+func (x *PreferencesPage) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
285+
286+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
287+
288+}
289+
290+// Updates an array of accessible states.
291+//
292+// This function should be called by `GtkWidget` types whenever an accessible
293+// state change must be communicated to assistive technologies.
294+//
295+// This function is meant to be used by language bindings.
296+func (x *PreferencesPage) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
297+
298+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
299+
300+}
301+
302+// Gets the ID of the @buildable object.
303+//
304+// `GtkBuilder` sets the name based on the ID attribute
305+// of the &lt;object&gt; tag used to construct the @buildable.
306+func (x *PreferencesPage) GetBuildableId() string {
307+
308+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
309+
310+}
311+
312+func init() {
313+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
314+ if err != nil {
315+ panic(err)
316+ }
317+
318+ core.PuregoSafeRegister(&xNewPreferencesPage, lib, "adw_preferences_page_new")
319+
320+ core.PuregoSafeRegister(&xPreferencesPageAdd, lib, "adw_preferences_page_add")
321+ core.PuregoSafeRegister(&xPreferencesPageGetIconName, lib, "adw_preferences_page_get_icon_name")
322+ core.PuregoSafeRegister(&xPreferencesPageGetName, lib, "adw_preferences_page_get_name")
323+ core.PuregoSafeRegister(&xPreferencesPageGetTitle, lib, "adw_preferences_page_get_title")
324+ core.PuregoSafeRegister(&xPreferencesPageGetUseUnderline, lib, "adw_preferences_page_get_use_underline")
325+ core.PuregoSafeRegister(&xPreferencesPageRemove, lib, "adw_preferences_page_remove")
326+ core.PuregoSafeRegister(&xPreferencesPageScrollToTop, lib, "adw_preferences_page_scroll_to_top")
327+ core.PuregoSafeRegister(&xPreferencesPageSetIconName, lib, "adw_preferences_page_set_icon_name")
328+ core.PuregoSafeRegister(&xPreferencesPageSetName, lib, "adw_preferences_page_set_name")
329+ core.PuregoSafeRegister(&xPreferencesPageSetTitle, lib, "adw_preferences_page_set_title")
330+ core.PuregoSafeRegister(&xPreferencesPageSetUseUnderline, lib, "adw_preferences_page_set_use_underline")
331+
332+}
A v4/adw/adw-preferences-row.go +385 -0
@@ -0,0 +1,385 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/glib"
8+ "github.com/jwijenbergh/puregotk/v4/gobject"
9+ "github.com/jwijenbergh/puregotk/v4/gtk"
10+)
11+
12+type PreferencesRowClass struct {
13+ ParentClass uintptr
14+
15+ Padding uintptr
16+}
17+
18+// A [class@Gtk.ListBoxRow] used to present preferences.
19+//
20+// The `AdwPreferencesRow` widget has a title that [class@PreferencesWindow]
21+// will use to let the user look for a preference. It doesn't present the title
22+// in any way and lets you present the preference as you please.
23+//
24+// [class@ActionRow] and its derivatives are convenient to use as preference
25+// rows as they take care of presenting the preference's title while letting you
26+// compose the inputs of the preference around it.
27+type PreferencesRow struct {
28+ gtk.ListBoxRow
29+}
30+
31+func PreferencesRowNewFromInternalPtr(ptr uintptr) *PreferencesRow {
32+ cls := &PreferencesRow{}
33+ cls.Ptr = ptr
34+ return cls
35+}
36+
37+var xNewPreferencesRow func() uintptr
38+
39+// Creates a new `AdwPreferencesRow`.
40+func NewPreferencesRow() *gtk.Widget {
41+ NewPreferencesRowPtr := xNewPreferencesRow()
42+ if NewPreferencesRowPtr == 0 {
43+ return nil
44+ }
45+
46+ gobject.IncreaseRef(NewPreferencesRowPtr)
47+
48+ NewPreferencesRowCls := &gtk.Widget{}
49+ NewPreferencesRowCls.Ptr = NewPreferencesRowPtr
50+ return NewPreferencesRowCls
51+}
52+
53+var xPreferencesRowGetTitle func(uintptr) string
54+
55+// Gets the title of the preference represented by @self.
56+func (x *PreferencesRow) GetTitle() string {
57+
58+ return xPreferencesRowGetTitle(x.GoPointer())
59+
60+}
61+
62+var xPreferencesRowGetTitleSelectable func(uintptr) bool
63+
64+// Gets whether the user can copy the title from the label
65+func (x *PreferencesRow) GetTitleSelectable() bool {
66+
67+ return xPreferencesRowGetTitleSelectable(x.GoPointer())
68+
69+}
70+
71+var xPreferencesRowGetUseMarkup func(uintptr) bool
72+
73+// Gets whether to use Pango markup for the title label.
74+func (x *PreferencesRow) GetUseMarkup() bool {
75+
76+ return xPreferencesRowGetUseMarkup(x.GoPointer())
77+
78+}
79+
80+var xPreferencesRowGetUseUnderline func(uintptr) bool
81+
82+// Gets whether an embedded underline in the title indicates a mnemonic.
83+func (x *PreferencesRow) GetUseUnderline() bool {
84+
85+ return xPreferencesRowGetUseUnderline(x.GoPointer())
86+
87+}
88+
89+var xPreferencesRowSetTitle func(uintptr, string)
90+
91+// Sets the title of the preference represented by @self.
92+//
93+// The title is interpreted as Pango markup unless
94+// [property@PreferencesRow:use-markup] is set to `FALSE`.
95+func (x *PreferencesRow) SetTitle(TitleVar string) {
96+
97+ xPreferencesRowSetTitle(x.GoPointer(), TitleVar)
98+
99+}
100+
101+var xPreferencesRowSetTitleSelectable func(uintptr, bool)
102+
103+// Sets whether the user can copy the title from the label
104+//
105+// See also [property@Gtk.Label:selectable].
106+func (x *PreferencesRow) SetTitleSelectable(TitleSelectableVar bool) {
107+
108+ xPreferencesRowSetTitleSelectable(x.GoPointer(), TitleSelectableVar)
109+
110+}
111+
112+var xPreferencesRowSetUseMarkup func(uintptr, bool)
113+
114+// Sets whether to use Pango markup for the title label.
115+//
116+// Subclasses may also use it for other labels, such as subtitle.
117+//
118+// See also [func@Pango.parse_markup].
119+func (x *PreferencesRow) SetUseMarkup(UseMarkupVar bool) {
120+
121+ xPreferencesRowSetUseMarkup(x.GoPointer(), UseMarkupVar)
122+
123+}
124+
125+var xPreferencesRowSetUseUnderline func(uintptr, bool)
126+
127+// Sets whether an embedded underline in the title indicates a mnemonic.
128+func (x *PreferencesRow) SetUseUnderline(UseUnderlineVar bool) {
129+
130+ xPreferencesRowSetUseUnderline(x.GoPointer(), UseUnderlineVar)
131+
132+}
133+
134+func (c *PreferencesRow) GoPointer() uintptr {
135+ return c.Ptr
136+}
137+
138+func (c *PreferencesRow) SetGoPointer(ptr uintptr) {
139+ c.Ptr = ptr
140+}
141+
142+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
143+func (x *PreferencesRow) GetAccessibleRole() gtk.AccessibleRole {
144+
145+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
146+
147+}
148+
149+// Resets the accessible @property to its default value.
150+func (x *PreferencesRow) ResetProperty(PropertyVar gtk.AccessibleProperty) {
151+
152+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
153+
154+}
155+
156+// Resets the accessible @relation to its default value.
157+func (x *PreferencesRow) ResetRelation(RelationVar gtk.AccessibleRelation) {
158+
159+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
160+
161+}
162+
163+// Resets the accessible @state to its default value.
164+func (x *PreferencesRow) ResetState(StateVar gtk.AccessibleState) {
165+
166+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
167+
168+}
169+
170+// Updates a list of accessible properties.
171+//
172+// See the [enum@Gtk.AccessibleProperty] documentation for the
173+// value types of accessible properties.
174+//
175+// This function should be called by `GtkWidget` types whenever
176+// an accessible property change must be communicated to assistive
177+// technologies.
178+//
179+// Example:
180+// ```c
181+// value = gtk_adjustment_get_value (adjustment);
182+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
183+//
184+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
185+// -1);
186+//
187+// ```
188+func (x *PreferencesRow) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
189+
190+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
191+
192+}
193+
194+// Updates an array of accessible properties.
195+//
196+// This function should be called by `GtkWidget` types whenever an accessible
197+// property change must be communicated to assistive technologies.
198+//
199+// This function is meant to be used by language bindings.
200+func (x *PreferencesRow) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
201+
202+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
203+
204+}
205+
206+// Updates a list of accessible relations.
207+//
208+// This function should be called by `GtkWidget` types whenever an accessible
209+// relation change must be communicated to assistive technologies.
210+//
211+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
212+// you should pass each reference individually, followed by %NULL, e.g.
213+//
214+// ```c
215+// gtk_accessible_update_relation (accessible,
216+//
217+// GTK_ACCESSIBLE_RELATION_CONTROLS,
218+// ref1, NULL,
219+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
220+// ref1, ref2, ref3, NULL,
221+// -1);
222+//
223+// ```
224+func (x *PreferencesRow) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
225+
226+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
227+
228+}
229+
230+// Updates an array of accessible relations.
231+//
232+// This function should be called by `GtkWidget` types whenever an accessible
233+// relation change must be communicated to assistive technologies.
234+//
235+// This function is meant to be used by language bindings.
236+func (x *PreferencesRow) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
237+
238+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
239+
240+}
241+
242+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
243+// documentation for the value types of accessible states.
244+//
245+// This function should be called by `GtkWidget` types whenever an accessible
246+// state change must be communicated to assistive technologies.
247+//
248+// Example:
249+// ```c
250+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
251+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
252+//
253+// GTK_ACCESSIBLE_STATE_CHECKED, value,
254+// -1);
255+//
256+// ```
257+func (x *PreferencesRow) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
258+
259+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
260+
261+}
262+
263+// Updates an array of accessible states.
264+//
265+// This function should be called by `GtkWidget` types whenever an accessible
266+// state change must be communicated to assistive technologies.
267+//
268+// This function is meant to be used by language bindings.
269+func (x *PreferencesRow) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
270+
271+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
272+
273+}
274+
275+// Gets the action name for @actionable.
276+func (x *PreferencesRow) GetActionName() string {
277+
278+ return gtk.XGtkActionableGetActionName(x.GoPointer())
279+
280+}
281+
282+// Gets the current target value of @actionable.
283+func (x *PreferencesRow) GetActionTargetValue() *glib.Variant {
284+
285+ return gtk.XGtkActionableGetActionTargetValue(x.GoPointer())
286+
287+}
288+
289+// Specifies the name of the action with which this widget should be
290+// associated.
291+//
292+// If @action_name is %NULL then the widget will be unassociated from
293+// any previous action.
294+//
295+// Usually this function is used when the widget is located (or will be
296+// located) within the hierarchy of a `GtkApplicationWindow`.
297+//
298+// Names are of the form “win.save” or “app.quit” for actions on the
299+// containing [class@ApplicationWindow] or its associated [class@Application],
300+// respectively. This is the same form used for actions in the [class@Gio.Menu]
301+// associated with the window.
302+func (x *PreferencesRow) SetActionName(ActionNameVar string) {
303+
304+ gtk.XGtkActionableSetActionName(x.GoPointer(), ActionNameVar)
305+
306+}
307+
308+// Sets the target of an actionable widget.
309+//
310+// This is a convenience function that calls [ctor@GLib.Variant.new] for
311+// @format_string and uses the result to call
312+// [method@Gtk.Actionable.set_action_target_value].
313+//
314+// If you are setting a string-valued target and want to set
315+// the action name at the same time, you can use
316+// [method@Gtk.Actionable.set_detailed_action_name].
317+func (x *PreferencesRow) SetActionTarget(FormatStringVar string, varArgs ...interface{}) {
318+
319+ gtk.XGtkActionableSetActionTarget(x.GoPointer(), FormatStringVar, varArgs...)
320+
321+}
322+
323+// Sets the target value of an actionable widget.
324+//
325+// If @target_value is %NULL then the target value is unset.
326+//
327+// The target value has two purposes. First, it is used as the parameter
328+// to activation of the action associated with the `GtkActionable` widget.
329+// Second, it is used to determine if the widget should be rendered as
330+// “active” — the widget is active if the state is equal to the given target.
331+//
332+// Consider the example of associating a set of buttons with a [iface@Gio.Action]
333+// with string state in a typical “radio button” situation. Each button
334+// will be associated with the same action, but with a different target
335+// value for that action. Clicking on a particular button will activate
336+// the action with the target of that button, which will typically cause
337+// the action’s state to change to that value. Since the action’s state
338+// is now equal to the target value of the button, the button will now
339+// be rendered as active (and the other buttons, with different targets,
340+// rendered inactive).
341+func (x *PreferencesRow) SetActionTargetValue(TargetValueVar *glib.Variant) {
342+
343+ gtk.XGtkActionableSetActionTargetValue(x.GoPointer(), TargetValueVar)
344+
345+}
346+
347+// Sets the action-name and associated string target value of an
348+// actionable widget.
349+//
350+// @detailed_action_name is a string in the format accepted by
351+// [func@Gio.Action.parse_detailed_name].
352+func (x *PreferencesRow) SetDetailedActionName(DetailedActionNameVar string) {
353+
354+ gtk.XGtkActionableSetDetailedActionName(x.GoPointer(), DetailedActionNameVar)
355+
356+}
357+
358+// Gets the ID of the @buildable object.
359+//
360+// `GtkBuilder` sets the name based on the ID attribute
361+// of the &lt;object&gt; tag used to construct the @buildable.
362+func (x *PreferencesRow) GetBuildableId() string {
363+
364+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
365+
366+}
367+
368+func init() {
369+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
370+ if err != nil {
371+ panic(err)
372+ }
373+
374+ core.PuregoSafeRegister(&xNewPreferencesRow, lib, "adw_preferences_row_new")
375+
376+ core.PuregoSafeRegister(&xPreferencesRowGetTitle, lib, "adw_preferences_row_get_title")
377+ core.PuregoSafeRegister(&xPreferencesRowGetTitleSelectable, lib, "adw_preferences_row_get_title_selectable")
378+ core.PuregoSafeRegister(&xPreferencesRowGetUseMarkup, lib, "adw_preferences_row_get_use_markup")
379+ core.PuregoSafeRegister(&xPreferencesRowGetUseUnderline, lib, "adw_preferences_row_get_use_underline")
380+ core.PuregoSafeRegister(&xPreferencesRowSetTitle, lib, "adw_preferences_row_set_title")
381+ core.PuregoSafeRegister(&xPreferencesRowSetTitleSelectable, lib, "adw_preferences_row_set_title_selectable")
382+ core.PuregoSafeRegister(&xPreferencesRowSetUseMarkup, lib, "adw_preferences_row_set_use_markup")
383+ core.PuregoSafeRegister(&xPreferencesRowSetUseUnderline, lib, "adw_preferences_row_set_use_underline")
384+
385+}
A v4/adw/adw-preferences-window.go +491 -0
@@ -0,0 +1,491 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gdk"
8+ "github.com/jwijenbergh/puregotk/v4/gobject"
9+ "github.com/jwijenbergh/puregotk/v4/gsk"
10+ "github.com/jwijenbergh/puregotk/v4/gtk"
11+)
12+
13+type PreferencesWindowClass struct {
14+ ParentClass uintptr
15+
16+ Padding uintptr
17+}
18+
19+// A window to present an application's preferences.
20+//
21+// &lt;picture&gt;
22+//
23+// &lt;source srcset="preferences-window-dark.png" media="(prefers-color-scheme: dark)"&gt;
24+// &lt;img src="preferences-window.png" alt="preferences-window"&gt;
25+//
26+// &lt;/picture&gt;
27+//
28+// The `AdwPreferencesWindow` widget presents an application's preferences
29+// gathered into pages and groups. The preferences are searchable by the user.
30+//
31+// ## CSS nodes
32+//
33+// `AdwPreferencesWindow` has a main CSS node with the name `window` and the
34+// style class `.preferences`.
35+type PreferencesWindow struct {
36+ Window
37+}
38+
39+func PreferencesWindowNewFromInternalPtr(ptr uintptr) *PreferencesWindow {
40+ cls := &PreferencesWindow{}
41+ cls.Ptr = ptr
42+ return cls
43+}
44+
45+var xNewPreferencesWindow func() uintptr
46+
47+// Creates a new `AdwPreferencesWindow`.
48+func NewPreferencesWindow() *gtk.Widget {
49+ NewPreferencesWindowPtr := xNewPreferencesWindow()
50+ if NewPreferencesWindowPtr == 0 {
51+ return nil
52+ }
53+
54+ gobject.IncreaseRef(NewPreferencesWindowPtr)
55+
56+ NewPreferencesWindowCls := &gtk.Widget{}
57+ NewPreferencesWindowCls.Ptr = NewPreferencesWindowPtr
58+ return NewPreferencesWindowCls
59+}
60+
61+var xPreferencesWindowAdd func(uintptr, uintptr)
62+
63+// Adds a preferences page to @self.
64+func (x *PreferencesWindow) Add(PageVar *PreferencesPage) {
65+
66+ xPreferencesWindowAdd(x.GoPointer(), PageVar.GoPointer())
67+
68+}
69+
70+var xPreferencesWindowAddToast func(uintptr, uintptr)
71+
72+// Displays @toast.
73+//
74+// See [method@ToastOverlay.add_toast].
75+func (x *PreferencesWindow) AddToast(ToastVar *Toast) {
76+
77+ xPreferencesWindowAddToast(x.GoPointer(), ToastVar.GoPointer())
78+
79+}
80+
81+var xPreferencesWindowCloseSubpage func(uintptr)
82+
83+// Closes the current subpage.
84+//
85+// If there is no presented subpage, this does nothing.
86+func (x *PreferencesWindow) CloseSubpage() {
87+
88+ xPreferencesWindowCloseSubpage(x.GoPointer())
89+
90+}
91+
92+var xPreferencesWindowGetCanNavigateBack func(uintptr) bool
93+
94+// Gets whether gestures and shortcuts for closing subpages are enabled.
95+func (x *PreferencesWindow) GetCanNavigateBack() bool {
96+
97+ return xPreferencesWindowGetCanNavigateBack(x.GoPointer())
98+
99+}
100+
101+var xPreferencesWindowGetSearchEnabled func(uintptr) bool
102+
103+// Gets whether search is enabled for @self.
104+func (x *PreferencesWindow) GetSearchEnabled() bool {
105+
106+ return xPreferencesWindowGetSearchEnabled(x.GoPointer())
107+
108+}
109+
110+var xPreferencesWindowGetVisiblePage func(uintptr) uintptr
111+
112+// Gets the currently visible page of @self.
113+func (x *PreferencesWindow) GetVisiblePage() *PreferencesPage {
114+
115+ GetVisiblePagePtr := xPreferencesWindowGetVisiblePage(x.GoPointer())
116+ if GetVisiblePagePtr == 0 {
117+ return nil
118+ }
119+
120+ gobject.IncreaseRef(GetVisiblePagePtr)
121+
122+ GetVisiblePageCls := &PreferencesPage{}
123+ GetVisiblePageCls.Ptr = GetVisiblePagePtr
124+ return GetVisiblePageCls
125+
126+}
127+
128+var xPreferencesWindowGetVisiblePageName func(uintptr) string
129+
130+// Gets the name of currently visible page of @self.
131+func (x *PreferencesWindow) GetVisiblePageName() string {
132+
133+ return xPreferencesWindowGetVisiblePageName(x.GoPointer())
134+
135+}
136+
137+var xPreferencesWindowPresentSubpage func(uintptr, uintptr)
138+
139+// Sets @subpage as the window's subpage and opens it.
140+//
141+// The transition can be cancelled by the user, in which case visible child will
142+// change back to the previously visible child.
143+func (x *PreferencesWindow) PresentSubpage(SubpageVar *gtk.Widget) {
144+
145+ xPreferencesWindowPresentSubpage(x.GoPointer(), SubpageVar.GoPointer())
146+
147+}
148+
149+var xPreferencesWindowRemove func(uintptr, uintptr)
150+
151+// Removes a page from @self.
152+func (x *PreferencesWindow) Remove(PageVar *PreferencesPage) {
153+
154+ xPreferencesWindowRemove(x.GoPointer(), PageVar.GoPointer())
155+
156+}
157+
158+var xPreferencesWindowSetCanNavigateBack func(uintptr, bool)
159+
160+// Sets whether gestures and shortcuts for closing subpages are enabled.
161+//
162+// The supported gestures are:
163+//
164+// - One-finger swipe on touchscreens
165+// - Horizontal scrolling on touchpads (usually two-finger swipe)
166+// - Back mouse button
167+//
168+// The keyboard back key is also supported, as well as the
169+// &lt;kbd&gt;Alt&lt;/kbd&gt;+&lt;kbd&gt;←&lt;/kbd&gt; shortcut.
170+//
171+// For right-to-left locales, gestures and shortcuts are reversed.
172+func (x *PreferencesWindow) SetCanNavigateBack(CanNavigateBackVar bool) {
173+
174+ xPreferencesWindowSetCanNavigateBack(x.GoPointer(), CanNavigateBackVar)
175+
176+}
177+
178+var xPreferencesWindowSetSearchEnabled func(uintptr, bool)
179+
180+// Sets whether search is enabled for @self.
181+func (x *PreferencesWindow) SetSearchEnabled(SearchEnabledVar bool) {
182+
183+ xPreferencesWindowSetSearchEnabled(x.GoPointer(), SearchEnabledVar)
184+
185+}
186+
187+var xPreferencesWindowSetVisiblePage func(uintptr, uintptr)
188+
189+// Makes @page the visible page of @self.
190+func (x *PreferencesWindow) SetVisiblePage(PageVar *PreferencesPage) {
191+
192+ xPreferencesWindowSetVisiblePage(x.GoPointer(), PageVar.GoPointer())
193+
194+}
195+
196+var xPreferencesWindowSetVisiblePageName func(uintptr, string)
197+
198+// Makes the page with the given name visible.
199+//
200+// See [property@ViewStack:visible-child].
201+func (x *PreferencesWindow) SetVisiblePageName(NameVar string) {
202+
203+ xPreferencesWindowSetVisiblePageName(x.GoPointer(), NameVar)
204+
205+}
206+
207+func (c *PreferencesWindow) GoPointer() uintptr {
208+ return c.Ptr
209+}
210+
211+func (c *PreferencesWindow) SetGoPointer(ptr uintptr) {
212+ c.Ptr = ptr
213+}
214+
215+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
216+func (x *PreferencesWindow) GetAccessibleRole() gtk.AccessibleRole {
217+
218+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
219+
220+}
221+
222+// Resets the accessible @property to its default value.
223+func (x *PreferencesWindow) ResetProperty(PropertyVar gtk.AccessibleProperty) {
224+
225+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
226+
227+}
228+
229+// Resets the accessible @relation to its default value.
230+func (x *PreferencesWindow) ResetRelation(RelationVar gtk.AccessibleRelation) {
231+
232+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
233+
234+}
235+
236+// Resets the accessible @state to its default value.
237+func (x *PreferencesWindow) ResetState(StateVar gtk.AccessibleState) {
238+
239+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
240+
241+}
242+
243+// Updates a list of accessible properties.
244+//
245+// See the [enum@Gtk.AccessibleProperty] documentation for the
246+// value types of accessible properties.
247+//
248+// This function should be called by `GtkWidget` types whenever
249+// an accessible property change must be communicated to assistive
250+// technologies.
251+//
252+// Example:
253+// ```c
254+// value = gtk_adjustment_get_value (adjustment);
255+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
256+//
257+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
258+// -1);
259+//
260+// ```
261+func (x *PreferencesWindow) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
262+
263+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
264+
265+}
266+
267+// Updates an array of accessible properties.
268+//
269+// This function should be called by `GtkWidget` types whenever an accessible
270+// property change must be communicated to assistive technologies.
271+//
272+// This function is meant to be used by language bindings.
273+func (x *PreferencesWindow) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
274+
275+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
276+
277+}
278+
279+// Updates a list of accessible relations.
280+//
281+// This function should be called by `GtkWidget` types whenever an accessible
282+// relation change must be communicated to assistive technologies.
283+//
284+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
285+// you should pass each reference individually, followed by %NULL, e.g.
286+//
287+// ```c
288+// gtk_accessible_update_relation (accessible,
289+//
290+// GTK_ACCESSIBLE_RELATION_CONTROLS,
291+// ref1, NULL,
292+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
293+// ref1, ref2, ref3, NULL,
294+// -1);
295+//
296+// ```
297+func (x *PreferencesWindow) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
298+
299+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
300+
301+}
302+
303+// Updates an array of accessible relations.
304+//
305+// This function should be called by `GtkWidget` types whenever an accessible
306+// relation change must be communicated to assistive technologies.
307+//
308+// This function is meant to be used by language bindings.
309+func (x *PreferencesWindow) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
310+
311+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
312+
313+}
314+
315+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
316+// documentation for the value types of accessible states.
317+//
318+// This function should be called by `GtkWidget` types whenever an accessible
319+// state change must be communicated to assistive technologies.
320+//
321+// Example:
322+// ```c
323+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
324+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
325+//
326+// GTK_ACCESSIBLE_STATE_CHECKED, value,
327+// -1);
328+//
329+// ```
330+func (x *PreferencesWindow) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
331+
332+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
333+
334+}
335+
336+// Updates an array of accessible states.
337+//
338+// This function should be called by `GtkWidget` types whenever an accessible
339+// state change must be communicated to assistive technologies.
340+//
341+// This function is meant to be used by language bindings.
342+func (x *PreferencesWindow) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
343+
344+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
345+
346+}
347+
348+// Gets the ID of the @buildable object.
349+//
350+// `GtkBuilder` sets the name based on the ID attribute
351+// of the &lt;object&gt; tag used to construct the @buildable.
352+func (x *PreferencesWindow) GetBuildableId() string {
353+
354+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
355+
356+}
357+
358+// Returns the renderer that is used for this `GtkNative`.
359+func (x *PreferencesWindow) GetRenderer() *gsk.Renderer {
360+
361+ GetRendererPtr := gtk.XGtkNativeGetRenderer(x.GoPointer())
362+ if GetRendererPtr == 0 {
363+ return nil
364+ }
365+
366+ gobject.IncreaseRef(GetRendererPtr)
367+
368+ GetRendererCls := &gsk.Renderer{}
369+ GetRendererCls.Ptr = GetRendererPtr
370+ return GetRendererCls
371+
372+}
373+
374+// Returns the surface of this `GtkNative`.
375+func (x *PreferencesWindow) GetSurface() *gdk.Surface {
376+
377+ GetSurfacePtr := gtk.XGtkNativeGetSurface(x.GoPointer())
378+ if GetSurfacePtr == 0 {
379+ return nil
380+ }
381+
382+ gobject.IncreaseRef(GetSurfacePtr)
383+
384+ GetSurfaceCls := &gdk.Surface{}
385+ GetSurfaceCls.Ptr = GetSurfacePtr
386+ return GetSurfaceCls
387+
388+}
389+
390+// Retrieves the surface transform of @self.
391+//
392+// This is the translation from @self's surface coordinates into
393+// @self's widget coordinates.
394+func (x *PreferencesWindow) GetSurfaceTransform(XVar float64, YVar float64) {
395+
396+ gtk.XGtkNativeGetSurfaceTransform(x.GoPointer(), XVar, YVar)
397+
398+}
399+
400+// Realizes a `GtkNative`.
401+//
402+// This should only be used by subclasses.
403+func (x *PreferencesWindow) Realize() {
404+
405+ gtk.XGtkNativeRealize(x.GoPointer())
406+
407+}
408+
409+// Unrealizes a `GtkNative`.
410+//
411+// This should only be used by subclasses.
412+func (x *PreferencesWindow) Unrealize() {
413+
414+ gtk.XGtkNativeUnrealize(x.GoPointer())
415+
416+}
417+
418+// Returns the display that this `GtkRoot` is on.
419+func (x *PreferencesWindow) GetDisplay() *gdk.Display {
420+
421+ GetDisplayPtr := gtk.XGtkRootGetDisplay(x.GoPointer())
422+ if GetDisplayPtr == 0 {
423+ return nil
424+ }
425+
426+ gobject.IncreaseRef(GetDisplayPtr)
427+
428+ GetDisplayCls := &gdk.Display{}
429+ GetDisplayCls.Ptr = GetDisplayPtr
430+ return GetDisplayCls
431+
432+}
433+
434+// Retrieves the current focused widget within the root.
435+//
436+// Note that this is the widget that would have the focus
437+// if the root is active; if the root is not focused then
438+// `gtk_widget_has_focus (widget)` will be %FALSE for the
439+// widget.
440+func (x *PreferencesWindow) GetFocus() *gtk.Widget {
441+
442+ GetFocusPtr := gtk.XGtkRootGetFocus(x.GoPointer())
443+ if GetFocusPtr == 0 {
444+ return nil
445+ }
446+
447+ gobject.IncreaseRef(GetFocusPtr)
448+
449+ GetFocusCls := &gtk.Widget{}
450+ GetFocusCls.Ptr = GetFocusPtr
451+ return GetFocusCls
452+
453+}
454+
455+// If @focus is not the current focus widget, and is focusable, sets
456+// it as the focus widget for the root.
457+//
458+// If @focus is %NULL, unsets the focus widget for the root.
459+//
460+// To set the focus to a particular widget in the root, it is usually
461+// more convenient to use [method@Gtk.Widget.grab_focus] instead of
462+// this function.
463+func (x *PreferencesWindow) SetFocus(FocusVar *gtk.Widget) {
464+
465+ gtk.XGtkRootSetFocus(x.GoPointer(), FocusVar.GoPointer())
466+
467+}
468+
469+func init() {
470+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
471+ if err != nil {
472+ panic(err)
473+ }
474+
475+ core.PuregoSafeRegister(&xNewPreferencesWindow, lib, "adw_preferences_window_new")
476+
477+ core.PuregoSafeRegister(&xPreferencesWindowAdd, lib, "adw_preferences_window_add")
478+ core.PuregoSafeRegister(&xPreferencesWindowAddToast, lib, "adw_preferences_window_add_toast")
479+ core.PuregoSafeRegister(&xPreferencesWindowCloseSubpage, lib, "adw_preferences_window_close_subpage")
480+ core.PuregoSafeRegister(&xPreferencesWindowGetCanNavigateBack, lib, "adw_preferences_window_get_can_navigate_back")
481+ core.PuregoSafeRegister(&xPreferencesWindowGetSearchEnabled, lib, "adw_preferences_window_get_search_enabled")
482+ core.PuregoSafeRegister(&xPreferencesWindowGetVisiblePage, lib, "adw_preferences_window_get_visible_page")
483+ core.PuregoSafeRegister(&xPreferencesWindowGetVisiblePageName, lib, "adw_preferences_window_get_visible_page_name")
484+ core.PuregoSafeRegister(&xPreferencesWindowPresentSubpage, lib, "adw_preferences_window_present_subpage")
485+ core.PuregoSafeRegister(&xPreferencesWindowRemove, lib, "adw_preferences_window_remove")
486+ core.PuregoSafeRegister(&xPreferencesWindowSetCanNavigateBack, lib, "adw_preferences_window_set_can_navigate_back")
487+ core.PuregoSafeRegister(&xPreferencesWindowSetSearchEnabled, lib, "adw_preferences_window_set_search_enabled")
488+ core.PuregoSafeRegister(&xPreferencesWindowSetVisiblePage, lib, "adw_preferences_window_set_visible_page")
489+ core.PuregoSafeRegister(&xPreferencesWindowSetVisiblePageName, lib, "adw_preferences_window_set_visible_page_name")
490+
491+}
A v4/adw/adw-split-button.go +594 -0
@@ -0,0 +1,594 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gio"
8+ "github.com/jwijenbergh/puregotk/v4/glib"
9+ "github.com/jwijenbergh/puregotk/v4/gobject"
10+ "github.com/jwijenbergh/puregotk/v4/gtk"
11+)
12+
13+type SplitButtonClass struct {
14+ ParentClass uintptr
15+}
16+
17+// A combined button and dropdown widget.
18+//
19+// &lt;picture&gt;
20+//
21+// &lt;source srcset="split-button-dark.png" media="(prefers-color-scheme: dark)"&gt;
22+// &lt;img src="split-button.png" alt="split-button"&gt;
23+//
24+// &lt;/picture&gt;
25+//
26+// `AdwSplitButton` is typically used to present a set of actions in a menu,
27+// but allow access to one of them with a single click.
28+//
29+// The API is very similar to [class@Gtk.Button] and [class@Gtk.MenuButton], see
30+// their documentation for details.
31+//
32+// ## CSS nodes
33+//
34+// ```
35+// splitbutton[.image-button][.text-button]
36+// ├── button
37+// │ ╰── &lt;content&gt;
38+// ├── separator
39+// ╰── menubutton
40+//
41+// ╰── button.toggle
42+// ╰── arrow
43+//
44+// ```
45+//
46+// `AdwSplitButton`'s CSS node is called `splitbutton`. It contains the css
47+// nodes: `button`, `separator`, `menubutton`. See [class@Gtk.MenuButton]
48+// documentation for the `menubutton` contents.
49+//
50+// The main CSS node will contain the `.image-button` or `.text-button` style
51+// classes matching the button contents. The nested button nodes will never
52+// contain them.
53+//
54+// ## Accessibility
55+//
56+// `AdwSplitButton` uses the `GTK_ACCESSIBLE_ROLE_GROUP` role.
57+type SplitButton struct {
58+ gtk.Widget
59+}
60+
61+func SplitButtonNewFromInternalPtr(ptr uintptr) *SplitButton {
62+ cls := &SplitButton{}
63+ cls.Ptr = ptr
64+ return cls
65+}
66+
67+var xNewSplitButton func() uintptr
68+
69+// Creates a new `AdwSplitButton`.
70+func NewSplitButton() *gtk.Widget {
71+ NewSplitButtonPtr := xNewSplitButton()
72+ if NewSplitButtonPtr == 0 {
73+ return nil
74+ }
75+
76+ gobject.IncreaseRef(NewSplitButtonPtr)
77+
78+ NewSplitButtonCls := &gtk.Widget{}
79+ NewSplitButtonCls.Ptr = NewSplitButtonPtr
80+ return NewSplitButtonCls
81+}
82+
83+var xSplitButtonGetChild func(uintptr) uintptr
84+
85+// Gets the child widget.
86+func (x *SplitButton) GetChild() *gtk.Widget {
87+
88+ GetChildPtr := xSplitButtonGetChild(x.GoPointer())
89+ if GetChildPtr == 0 {
90+ return nil
91+ }
92+
93+ gobject.IncreaseRef(GetChildPtr)
94+
95+ GetChildCls := &gtk.Widget{}
96+ GetChildCls.Ptr = GetChildPtr
97+ return GetChildCls
98+
99+}
100+
101+var xSplitButtonGetDirection func(uintptr) gtk.ArrowType
102+
103+// Gets the direction in which the popup will be popped up.
104+func (x *SplitButton) GetDirection() gtk.ArrowType {
105+
106+ return xSplitButtonGetDirection(x.GoPointer())
107+
108+}
109+
110+var xSplitButtonGetDropdownTooltip func(uintptr) string
111+
112+// Gets the tooltip of the dropdown button of @self.
113+func (x *SplitButton) GetDropdownTooltip() string {
114+
115+ return xSplitButtonGetDropdownTooltip(x.GoPointer())
116+
117+}
118+
119+var xSplitButtonGetIconName func(uintptr) string
120+
121+// Gets the name of the icon used to automatically populate the button.
122+func (x *SplitButton) GetIconName() string {
123+
124+ return xSplitButtonGetIconName(x.GoPointer())
125+
126+}
127+
128+var xSplitButtonGetLabel func(uintptr) string
129+
130+// Gets the label for @self.
131+func (x *SplitButton) GetLabel() string {
132+
133+ return xSplitButtonGetLabel(x.GoPointer())
134+
135+}
136+
137+var xSplitButtonGetMenuModel func(uintptr) uintptr
138+
139+// Gets the menu model from which the popup will be created.
140+func (x *SplitButton) GetMenuModel() *gio.MenuModel {
141+
142+ GetMenuModelPtr := xSplitButtonGetMenuModel(x.GoPointer())
143+ if GetMenuModelPtr == 0 {
144+ return nil
145+ }
146+
147+ gobject.IncreaseRef(GetMenuModelPtr)
148+
149+ GetMenuModelCls := &gio.MenuModel{}
150+ GetMenuModelCls.Ptr = GetMenuModelPtr
151+ return GetMenuModelCls
152+
153+}
154+
155+var xSplitButtonGetPopover func(uintptr) uintptr
156+
157+// Gets the popover that will be popped up when the dropdown is clicked.
158+func (x *SplitButton) GetPopover() *gtk.Popover {
159+
160+ GetPopoverPtr := xSplitButtonGetPopover(x.GoPointer())
161+ if GetPopoverPtr == 0 {
162+ return nil
163+ }
164+
165+ gobject.IncreaseRef(GetPopoverPtr)
166+
167+ GetPopoverCls := &gtk.Popover{}
168+ GetPopoverCls.Ptr = GetPopoverPtr
169+ return GetPopoverCls
170+
171+}
172+
173+var xSplitButtonGetUseUnderline func(uintptr) bool
174+
175+// Gets whether an underline in the text indicates a mnemonic.
176+func (x *SplitButton) GetUseUnderline() bool {
177+
178+ return xSplitButtonGetUseUnderline(x.GoPointer())
179+
180+}
181+
182+var xSplitButtonPopdown func(uintptr)
183+
184+// Dismisses the menu.
185+func (x *SplitButton) Popdown() {
186+
187+ xSplitButtonPopdown(x.GoPointer())
188+
189+}
190+
191+var xSplitButtonPopup func(uintptr)
192+
193+// Pops up the menu.
194+func (x *SplitButton) Popup() {
195+
196+ xSplitButtonPopup(x.GoPointer())
197+
198+}
199+
200+var xSplitButtonSetChild func(uintptr, uintptr)
201+
202+// Sets the child widget.
203+//
204+// Setting the child widget will set [property@SplitButton:label] and
205+// [property@SplitButton:icon-name] to `NULL`.
206+func (x *SplitButton) SetChild(ChildVar *gtk.Widget) {
207+
208+ xSplitButtonSetChild(x.GoPointer(), ChildVar.GoPointer())
209+
210+}
211+
212+var xSplitButtonSetDirection func(uintptr, gtk.ArrowType)
213+
214+// Sets the direction in which the popup will be popped up.
215+//
216+// The dropdown arrow icon will point at the same direction.
217+//
218+// If the does not fit in the available space in the given direction, GTK will
219+// try its best to keep it inside the screen and fully visible.
220+//
221+// If you pass `GTK_ARROW_NONE`, it's equivalent to `GTK_ARROW_DOWN`.
222+func (x *SplitButton) SetDirection(DirectionVar gtk.ArrowType) {
223+
224+ xSplitButtonSetDirection(x.GoPointer(), DirectionVar)
225+
226+}
227+
228+var xSplitButtonSetDropdownTooltip func(uintptr, string)
229+
230+// Sets the tooltip of the dropdown button of @self.
231+//
232+// The tooltip can be marked up with the Pango text markup language.
233+func (x *SplitButton) SetDropdownTooltip(TooltipVar string) {
234+
235+ xSplitButtonSetDropdownTooltip(x.GoPointer(), TooltipVar)
236+
237+}
238+
239+var xSplitButtonSetIconName func(uintptr, string)
240+
241+// Sets the name of the icon used to automatically populate the button.
242+//
243+// Setting the icon name will set [property@SplitButton:label] and
244+// [property@SplitButton:child] to `NULL`.
245+func (x *SplitButton) SetIconName(IconNameVar string) {
246+
247+ xSplitButtonSetIconName(x.GoPointer(), IconNameVar)
248+
249+}
250+
251+var xSplitButtonSetLabel func(uintptr, string)
252+
253+// Sets the label for @self.
254+//
255+// Setting the label will set [property@SplitButton:icon-name] and
256+// [property@SplitButton:child] to `NULL`.
257+func (x *SplitButton) SetLabel(LabelVar string) {
258+
259+ xSplitButtonSetLabel(x.GoPointer(), LabelVar)
260+
261+}
262+
263+var xSplitButtonSetMenuModel func(uintptr, uintptr)
264+
265+// Sets the menu model from which the popup will be created.
266+//
267+// If the menu model is `NULL`, the dropdown is disabled.
268+//
269+// A [class@Gtk.Popover] will be created from the menu model with
270+// [ctor@Gtk.PopoverMenu.new_from_model]. Actions will be connected as
271+// documented for this function.
272+//
273+// If [property@SplitButton:popover] is already set, it will be dissociated from
274+// the button, and the property is set to `NULL`.
275+func (x *SplitButton) SetMenuModel(MenuModelVar *gio.MenuModel) {
276+
277+ xSplitButtonSetMenuModel(x.GoPointer(), MenuModelVar.GoPointer())
278+
279+}
280+
281+var xSplitButtonSetPopover func(uintptr, uintptr)
282+
283+// Sets the popover that will be popped up when the dropdown is clicked.
284+//
285+// If the popover is `NULL`, the dropdown is disabled.
286+//
287+// If [property@SplitButton:menu-model] is set, the menu model is dissociated
288+// from the button, and the property is set to `NULL`.
289+func (x *SplitButton) SetPopover(PopoverVar *gtk.Popover) {
290+
291+ xSplitButtonSetPopover(x.GoPointer(), PopoverVar.GoPointer())
292+
293+}
294+
295+var xSplitButtonSetUseUnderline func(uintptr, bool)
296+
297+// Sets whether an underline in the text indicates a mnemonic.
298+//
299+// See [property@SplitButton:label].
300+func (x *SplitButton) SetUseUnderline(UseUnderlineVar bool) {
301+
302+ xSplitButtonSetUseUnderline(x.GoPointer(), UseUnderlineVar)
303+
304+}
305+
306+func (c *SplitButton) GoPointer() uintptr {
307+ return c.Ptr
308+}
309+
310+func (c *SplitButton) SetGoPointer(ptr uintptr) {
311+ c.Ptr = ptr
312+}
313+
314+// Emitted to animate press then release.
315+//
316+// This is an action signal. Applications should never connect to this signal,
317+// but use the [signal@SplitButton::clicked] signal.
318+func (x *SplitButton) ConnectActivate(cb func(SplitButton)) {
319+ fcb := func(clsPtr uintptr) {
320+ fa := SplitButton{}
321+ fa.Ptr = clsPtr
322+
323+ cb(fa)
324+
325+ }
326+ gobject.ObjectConnect(x.GoPointer(), "signal::activate", purego.NewCallback(fcb))
327+}
328+
329+// Emitted when the button has been activated (pressed and released).
330+func (x *SplitButton) ConnectClicked(cb func(SplitButton)) {
331+ fcb := func(clsPtr uintptr) {
332+ fa := SplitButton{}
333+ fa.Ptr = clsPtr
334+
335+ cb(fa)
336+
337+ }
338+ gobject.ObjectConnect(x.GoPointer(), "signal::clicked", purego.NewCallback(fcb))
339+}
340+
341+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
342+func (x *SplitButton) GetAccessibleRole() gtk.AccessibleRole {
343+
344+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
345+
346+}
347+
348+// Resets the accessible @property to its default value.
349+func (x *SplitButton) ResetProperty(PropertyVar gtk.AccessibleProperty) {
350+
351+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
352+
353+}
354+
355+// Resets the accessible @relation to its default value.
356+func (x *SplitButton) ResetRelation(RelationVar gtk.AccessibleRelation) {
357+
358+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
359+
360+}
361+
362+// Resets the accessible @state to its default value.
363+func (x *SplitButton) ResetState(StateVar gtk.AccessibleState) {
364+
365+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
366+
367+}
368+
369+// Updates a list of accessible properties.
370+//
371+// See the [enum@Gtk.AccessibleProperty] documentation for the
372+// value types of accessible properties.
373+//
374+// This function should be called by `GtkWidget` types whenever
375+// an accessible property change must be communicated to assistive
376+// technologies.
377+//
378+// Example:
379+// ```c
380+// value = gtk_adjustment_get_value (adjustment);
381+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
382+//
383+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
384+// -1);
385+//
386+// ```
387+func (x *SplitButton) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
388+
389+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
390+
391+}
392+
393+// Updates an array of accessible properties.
394+//
395+// This function should be called by `GtkWidget` types whenever an accessible
396+// property change must be communicated to assistive technologies.
397+//
398+// This function is meant to be used by language bindings.
399+func (x *SplitButton) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
400+
401+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
402+
403+}
404+
405+// Updates a list of accessible relations.
406+//
407+// This function should be called by `GtkWidget` types whenever an accessible
408+// relation change must be communicated to assistive technologies.
409+//
410+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
411+// you should pass each reference individually, followed by %NULL, e.g.
412+//
413+// ```c
414+// gtk_accessible_update_relation (accessible,
415+//
416+// GTK_ACCESSIBLE_RELATION_CONTROLS,
417+// ref1, NULL,
418+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
419+// ref1, ref2, ref3, NULL,
420+// -1);
421+//
422+// ```
423+func (x *SplitButton) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
424+
425+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
426+
427+}
428+
429+// Updates an array of accessible relations.
430+//
431+// This function should be called by `GtkWidget` types whenever an accessible
432+// relation change must be communicated to assistive technologies.
433+//
434+// This function is meant to be used by language bindings.
435+func (x *SplitButton) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
436+
437+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
438+
439+}
440+
441+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
442+// documentation for the value types of accessible states.
443+//
444+// This function should be called by `GtkWidget` types whenever an accessible
445+// state change must be communicated to assistive technologies.
446+//
447+// Example:
448+// ```c
449+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
450+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
451+//
452+// GTK_ACCESSIBLE_STATE_CHECKED, value,
453+// -1);
454+//
455+// ```
456+func (x *SplitButton) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
457+
458+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
459+
460+}
461+
462+// Updates an array of accessible states.
463+//
464+// This function should be called by `GtkWidget` types whenever an accessible
465+// state change must be communicated to assistive technologies.
466+//
467+// This function is meant to be used by language bindings.
468+func (x *SplitButton) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
469+
470+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
471+
472+}
473+
474+// Gets the action name for @actionable.
475+func (x *SplitButton) GetActionName() string {
476+
477+ return gtk.XGtkActionableGetActionName(x.GoPointer())
478+
479+}
480+
481+// Gets the current target value of @actionable.
482+func (x *SplitButton) GetActionTargetValue() *glib.Variant {
483+
484+ return gtk.XGtkActionableGetActionTargetValue(x.GoPointer())
485+
486+}
487+
488+// Specifies the name of the action with which this widget should be
489+// associated.
490+//
491+// If @action_name is %NULL then the widget will be unassociated from
492+// any previous action.
493+//
494+// Usually this function is used when the widget is located (or will be
495+// located) within the hierarchy of a `GtkApplicationWindow`.
496+//
497+// Names are of the form “win.save” or “app.quit” for actions on the
498+// containing [class@ApplicationWindow] or its associated [class@Application],
499+// respectively. This is the same form used for actions in the [class@Gio.Menu]
500+// associated with the window.
501+func (x *SplitButton) SetActionName(ActionNameVar string) {
502+
503+ gtk.XGtkActionableSetActionName(x.GoPointer(), ActionNameVar)
504+
505+}
506+
507+// Sets the target of an actionable widget.
508+//
509+// This is a convenience function that calls [ctor@GLib.Variant.new] for
510+// @format_string and uses the result to call
511+// [method@Gtk.Actionable.set_action_target_value].
512+//
513+// If you are setting a string-valued target and want to set
514+// the action name at the same time, you can use
515+// [method@Gtk.Actionable.set_detailed_action_name].
516+func (x *SplitButton) SetActionTarget(FormatStringVar string, varArgs ...interface{}) {
517+
518+ gtk.XGtkActionableSetActionTarget(x.GoPointer(), FormatStringVar, varArgs...)
519+
520+}
521+
522+// Sets the target value of an actionable widget.
523+//
524+// If @target_value is %NULL then the target value is unset.
525+//
526+// The target value has two purposes. First, it is used as the parameter
527+// to activation of the action associated with the `GtkActionable` widget.
528+// Second, it is used to determine if the widget should be rendered as
529+// “active” — the widget is active if the state is equal to the given target.
530+//
531+// Consider the example of associating a set of buttons with a [iface@Gio.Action]
532+// with string state in a typical “radio button” situation. Each button
533+// will be associated with the same action, but with a different target
534+// value for that action. Clicking on a particular button will activate
535+// the action with the target of that button, which will typically cause
536+// the action’s state to change to that value. Since the action’s state
537+// is now equal to the target value of the button, the button will now
538+// be rendered as active (and the other buttons, with different targets,
539+// rendered inactive).
540+func (x *SplitButton) SetActionTargetValue(TargetValueVar *glib.Variant) {
541+
542+ gtk.XGtkActionableSetActionTargetValue(x.GoPointer(), TargetValueVar)
543+
544+}
545+
546+// Sets the action-name and associated string target value of an
547+// actionable widget.
548+//
549+// @detailed_action_name is a string in the format accepted by
550+// [func@Gio.Action.parse_detailed_name].
551+func (x *SplitButton) SetDetailedActionName(DetailedActionNameVar string) {
552+
553+ gtk.XGtkActionableSetDetailedActionName(x.GoPointer(), DetailedActionNameVar)
554+
555+}
556+
557+// Gets the ID of the @buildable object.
558+//
559+// `GtkBuilder` sets the name based on the ID attribute
560+// of the &lt;object&gt; tag used to construct the @buildable.
561+func (x *SplitButton) GetBuildableId() string {
562+
563+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
564+
565+}
566+
567+func init() {
568+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
569+ if err != nil {
570+ panic(err)
571+ }
572+
573+ core.PuregoSafeRegister(&xNewSplitButton, lib, "adw_split_button_new")
574+
575+ core.PuregoSafeRegister(&xSplitButtonGetChild, lib, "adw_split_button_get_child")
576+ core.PuregoSafeRegister(&xSplitButtonGetDirection, lib, "adw_split_button_get_direction")
577+ core.PuregoSafeRegister(&xSplitButtonGetDropdownTooltip, lib, "adw_split_button_get_dropdown_tooltip")
578+ core.PuregoSafeRegister(&xSplitButtonGetIconName, lib, "adw_split_button_get_icon_name")
579+ core.PuregoSafeRegister(&xSplitButtonGetLabel, lib, "adw_split_button_get_label")
580+ core.PuregoSafeRegister(&xSplitButtonGetMenuModel, lib, "adw_split_button_get_menu_model")
581+ core.PuregoSafeRegister(&xSplitButtonGetPopover, lib, "adw_split_button_get_popover")
582+ core.PuregoSafeRegister(&xSplitButtonGetUseUnderline, lib, "adw_split_button_get_use_underline")
583+ core.PuregoSafeRegister(&xSplitButtonPopdown, lib, "adw_split_button_popdown")
584+ core.PuregoSafeRegister(&xSplitButtonPopup, lib, "adw_split_button_popup")
585+ core.PuregoSafeRegister(&xSplitButtonSetChild, lib, "adw_split_button_set_child")
586+ core.PuregoSafeRegister(&xSplitButtonSetDirection, lib, "adw_split_button_set_direction")
587+ core.PuregoSafeRegister(&xSplitButtonSetDropdownTooltip, lib, "adw_split_button_set_dropdown_tooltip")
588+ core.PuregoSafeRegister(&xSplitButtonSetIconName, lib, "adw_split_button_set_icon_name")
589+ core.PuregoSafeRegister(&xSplitButtonSetLabel, lib, "adw_split_button_set_label")
590+ core.PuregoSafeRegister(&xSplitButtonSetMenuModel, lib, "adw_split_button_set_menu_model")
591+ core.PuregoSafeRegister(&xSplitButtonSetPopover, lib, "adw_split_button_set_popover")
592+ core.PuregoSafeRegister(&xSplitButtonSetUseUnderline, lib, "adw_split_button_set_use_underline")
593+
594+}
A v4/adw/adw-spring-animation.go +288 -0
@@ -0,0 +1,288 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gobject"
8+ "github.com/jwijenbergh/puregotk/v4/gtk"
9+)
10+
11+type SpringAnimationClass struct {
12+}
13+
14+// A spring-based [class@Animation].
15+//
16+// `AdwSpringAnimation` implements an animation driven by a physical model of a
17+// spring described by [struct@SpringParams], with a resting position in
18+// [property@SpringAnimation:value-to], stretched to
19+// [property@SpringAnimation:value-from].
20+//
21+// Since the animation is physically simulated, spring animations don't have a
22+// fixed duration. The animation will stop when the simulated spring comes to a
23+// rest - when the amplitude of the oscillations becomes smaller than
24+// [property@SpringAnimation:epsilon], or immediately when it reaches
25+// [property@SpringAnimation:value-to] if
26+// [property@SpringAnimation:clamp] is set to `TRUE`. The estimated duration can
27+// be obtained with [property@SpringAnimation:estimated-duration].
28+//
29+// Due to the nature of spring-driven motion the animation can overshoot
30+// [property@SpringAnimation:value-to] before coming to a rest. Whether the
31+// animation will overshoot or not depends on the damping ratio of the spring.
32+// See [struct@SpringParams] for more information about specific damping ratio
33+// values.
34+//
35+// If [property@SpringAnimation:clamp] is `TRUE`, the animation will abruptly
36+// end as soon as it reaches the final value, preventing overshooting.
37+//
38+// Animations can have an initial velocity value, set via
39+// [property@SpringAnimation:initial-velocity], which adjusts the curve without
40+// changing the duration. This makes spring animations useful for deceleration
41+// at the end of gestures.
42+//
43+// If the initial and final values are equal, and the initial velocity is not 0,
44+// the animation value will bounce and return to its resting position.
45+type SpringAnimation struct {
46+ Animation
47+}
48+
49+func SpringAnimationNewFromInternalPtr(ptr uintptr) *SpringAnimation {
50+ cls := &SpringAnimation{}
51+ cls.Ptr = ptr
52+ return cls
53+}
54+
55+var xNewSpringAnimation func(uintptr, float64, float64, *SpringParams, uintptr) uintptr
56+
57+// Creates a new `AdwSpringAnimation` on @widget.
58+//
59+// The animation will animate @target from @from to @to with the dynamics of a
60+// spring described by @spring_params.
61+func NewSpringAnimation(WidgetVar *gtk.Widget, FromVar float64, ToVar float64, SpringParamsVar *SpringParams, TargetVar *AnimationTarget) *Animation {
62+ NewSpringAnimationPtr := xNewSpringAnimation(WidgetVar.GoPointer(), FromVar, ToVar, SpringParamsVar, TargetVar.GoPointer())
63+ if NewSpringAnimationPtr == 0 {
64+ return nil
65+ }
66+
67+ gobject.IncreaseRef(NewSpringAnimationPtr)
68+
69+ NewSpringAnimationCls := &Animation{}
70+ NewSpringAnimationCls.Ptr = NewSpringAnimationPtr
71+ return NewSpringAnimationCls
72+}
73+
74+var xSpringAnimationCalculateValue func(uintptr, uint) float64
75+
76+// Calculates the value @self will have at @time.
77+//
78+// The time starts at 0 and ends at
79+// [property@SpringAnimation:estimated_duration].
80+//
81+// See also [method@SpringAnimation.calculate_velocity].
82+func (x *SpringAnimation) CalculateValue(TimeVar uint) float64 {
83+
84+ return xSpringAnimationCalculateValue(x.GoPointer(), TimeVar)
85+
86+}
87+
88+var xSpringAnimationCalculateVelocity func(uintptr, uint) float64
89+
90+// Calculates the velocity @self will have at @time.
91+//
92+// The time starts at 0 and ends at
93+// [property@SpringAnimation:estimated_duration].
94+//
95+// See also [method@SpringAnimation.calculate_value].
96+func (x *SpringAnimation) CalculateVelocity(TimeVar uint) float64 {
97+
98+ return xSpringAnimationCalculateVelocity(x.GoPointer(), TimeVar)
99+
100+}
101+
102+var xSpringAnimationGetClamp func(uintptr) bool
103+
104+// Gets whether @self should be clamped.
105+func (x *SpringAnimation) GetClamp() bool {
106+
107+ return xSpringAnimationGetClamp(x.GoPointer())
108+
109+}
110+
111+var xSpringAnimationGetEpsilon func(uintptr) float64
112+
113+// Gets the precision of the spring.
114+func (x *SpringAnimation) GetEpsilon() float64 {
115+
116+ return xSpringAnimationGetEpsilon(x.GoPointer())
117+
118+}
119+
120+var xSpringAnimationGetEstimatedDuration func(uintptr) uint
121+
122+// Gets the estimated duration of @self, in milliseconds.
123+//
124+// Can be [const@DURATION_INFINITE] if the spring damping is set to 0.
125+func (x *SpringAnimation) GetEstimatedDuration() uint {
126+
127+ return xSpringAnimationGetEstimatedDuration(x.GoPointer())
128+
129+}
130+
131+var xSpringAnimationGetInitialVelocity func(uintptr) float64
132+
133+// Gets the initial velocity of @self.
134+func (x *SpringAnimation) GetInitialVelocity() float64 {
135+
136+ return xSpringAnimationGetInitialVelocity(x.GoPointer())
137+
138+}
139+
140+var xSpringAnimationGetSpringParams func(uintptr) *SpringParams
141+
142+// Gets the physical parameters of the spring of @self.
143+func (x *SpringAnimation) GetSpringParams() *SpringParams {
144+
145+ return xSpringAnimationGetSpringParams(x.GoPointer())
146+
147+}
148+
149+var xSpringAnimationGetValueFrom func(uintptr) float64
150+
151+// Gets the value @self will animate from.
152+func (x *SpringAnimation) GetValueFrom() float64 {
153+
154+ return xSpringAnimationGetValueFrom(x.GoPointer())
155+
156+}
157+
158+var xSpringAnimationGetValueTo func(uintptr) float64
159+
160+// Gets the value @self will animate to.
161+func (x *SpringAnimation) GetValueTo() float64 {
162+
163+ return xSpringAnimationGetValueTo(x.GoPointer())
164+
165+}
166+
167+var xSpringAnimationGetVelocity func(uintptr) float64
168+
169+// Gets the current velocity of @self.
170+func (x *SpringAnimation) GetVelocity() float64 {
171+
172+ return xSpringAnimationGetVelocity(x.GoPointer())
173+
174+}
175+
176+var xSpringAnimationSetClamp func(uintptr, bool)
177+
178+// Sets whether @self should be clamped.
179+//
180+// If set to `TRUE`, the animation will abruptly end as soon as it reaches the
181+// final value, preventing overshooting.
182+//
183+// It won't prevent overshooting [property@SpringAnimation:value-from] if a
184+// relative negative [property@SpringAnimation:initial-velocity] is set.
185+func (x *SpringAnimation) SetClamp(ClampVar bool) {
186+
187+ xSpringAnimationSetClamp(x.GoPointer(), ClampVar)
188+
189+}
190+
191+var xSpringAnimationSetEpsilon func(uintptr, float64)
192+
193+// Sets the precision of the spring.
194+//
195+// The level of precision used to determine when the animation has come to a
196+// rest, that is, when the amplitude of the oscillations becomes smaller than
197+// this value.
198+//
199+// If the epsilon value is too small, the animation will take a long time to
200+// stop after the animated value has stopped visibly changing.
201+//
202+// If the epsilon value is too large, the animation will end prematurely.
203+//
204+// The default value is 0.001.
205+func (x *SpringAnimation) SetEpsilon(EpsilonVar float64) {
206+
207+ xSpringAnimationSetEpsilon(x.GoPointer(), EpsilonVar)
208+
209+}
210+
211+var xSpringAnimationSetInitialVelocity func(uintptr, float64)
212+
213+// Sets the initial velocity of @self.
214+//
215+// Initial velocity affects only the animation curve, but not its duration.
216+func (x *SpringAnimation) SetInitialVelocity(VelocityVar float64) {
217+
218+ xSpringAnimationSetInitialVelocity(x.GoPointer(), VelocityVar)
219+
220+}
221+
222+var xSpringAnimationSetSpringParams func(uintptr, *SpringParams)
223+
224+// Sets the physical parameters of the spring of @self.
225+func (x *SpringAnimation) SetSpringParams(SpringParamsVar *SpringParams) {
226+
227+ xSpringAnimationSetSpringParams(x.GoPointer(), SpringParamsVar)
228+
229+}
230+
231+var xSpringAnimationSetValueFrom func(uintptr, float64)
232+
233+// Sets the value @self will animate from.
234+//
235+// The animation will start at this value and end at
236+// [property@SpringAnimation:value-to].
237+func (x *SpringAnimation) SetValueFrom(ValueVar float64) {
238+
239+ xSpringAnimationSetValueFrom(x.GoPointer(), ValueVar)
240+
241+}
242+
243+var xSpringAnimationSetValueTo func(uintptr, float64)
244+
245+// Sets the value @self will animate to.
246+//
247+// The animation will start at [property@SpringAnimation:value-from] and end at
248+// this value.
249+func (x *SpringAnimation) SetValueTo(ValueVar float64) {
250+
251+ xSpringAnimationSetValueTo(x.GoPointer(), ValueVar)
252+
253+}
254+
255+func (c *SpringAnimation) GoPointer() uintptr {
256+ return c.Ptr
257+}
258+
259+func (c *SpringAnimation) SetGoPointer(ptr uintptr) {
260+ c.Ptr = ptr
261+}
262+
263+func init() {
264+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
265+ if err != nil {
266+ panic(err)
267+ }
268+
269+ core.PuregoSafeRegister(&xNewSpringAnimation, lib, "adw_spring_animation_new")
270+
271+ core.PuregoSafeRegister(&xSpringAnimationCalculateValue, lib, "adw_spring_animation_calculate_value")
272+ core.PuregoSafeRegister(&xSpringAnimationCalculateVelocity, lib, "adw_spring_animation_calculate_velocity")
273+ core.PuregoSafeRegister(&xSpringAnimationGetClamp, lib, "adw_spring_animation_get_clamp")
274+ core.PuregoSafeRegister(&xSpringAnimationGetEpsilon, lib, "adw_spring_animation_get_epsilon")
275+ core.PuregoSafeRegister(&xSpringAnimationGetEstimatedDuration, lib, "adw_spring_animation_get_estimated_duration")
276+ core.PuregoSafeRegister(&xSpringAnimationGetInitialVelocity, lib, "adw_spring_animation_get_initial_velocity")
277+ core.PuregoSafeRegister(&xSpringAnimationGetSpringParams, lib, "adw_spring_animation_get_spring_params")
278+ core.PuregoSafeRegister(&xSpringAnimationGetValueFrom, lib, "adw_spring_animation_get_value_from")
279+ core.PuregoSafeRegister(&xSpringAnimationGetValueTo, lib, "adw_spring_animation_get_value_to")
280+ core.PuregoSafeRegister(&xSpringAnimationGetVelocity, lib, "adw_spring_animation_get_velocity")
281+ core.PuregoSafeRegister(&xSpringAnimationSetClamp, lib, "adw_spring_animation_set_clamp")
282+ core.PuregoSafeRegister(&xSpringAnimationSetEpsilon, lib, "adw_spring_animation_set_epsilon")
283+ core.PuregoSafeRegister(&xSpringAnimationSetInitialVelocity, lib, "adw_spring_animation_set_initial_velocity")
284+ core.PuregoSafeRegister(&xSpringAnimationSetSpringParams, lib, "adw_spring_animation_set_spring_params")
285+ core.PuregoSafeRegister(&xSpringAnimationSetValueFrom, lib, "adw_spring_animation_set_value_from")
286+ core.PuregoSafeRegister(&xSpringAnimationSetValueTo, lib, "adw_spring_animation_set_value_to")
287+
288+}
A v4/adw/adw-spring-params.go +35 -0
@@ -0,0 +1,35 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+// Physical parameters of a spring for [class@SpringAnimation].
5+//
6+// Any spring can be described by three parameters: mass, stiffness and damping.
7+//
8+// An undamped spring will produce an oscillatory motion which will go on
9+// forever.
10+//
11+// The frequency and amplitude of the oscillations will be determined by the
12+// stiffness (how "strong" the spring is) and its mass (how much "inertia" it
13+// has).
14+//
15+// If damping is larger than 0, the amplitude of that oscillating motion will
16+// exponientally decrease over time. If that damping is strong enough that the
17+// spring can't complete a full oscillation, it's called an overdamped spring.
18+//
19+// If we the spring can oscillate, it's called an underdamped spring.
20+//
21+// The value between these two behaviors is called critical damping; a
22+// critically damped spring will comes to rest in the minimum possible time
23+// without producing oscillations.
24+//
25+// The damping can be replaced by damping ratio, which produces the following
26+// springs:
27+//
28+// * 0: an undamped spring.
29+// * Between 0 and 1: an underdamped spring.
30+// * 1: a critically damped spring.
31+// * Larger than 1: an overdamped spring.
32+//
33+// As such
34+type SpringParams struct {
35+}
A v4/adw/adw-squeezer.go +619 -0 collapsed to keep the page light
A v4/adw/adw-status-page.go +347 -0
@@ -0,0 +1,347 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gdk"
8+ "github.com/jwijenbergh/puregotk/v4/gobject"
9+ "github.com/jwijenbergh/puregotk/v4/gtk"
10+)
11+
12+type StatusPageClass struct {
13+ ParentClass uintptr
14+}
15+
16+// A page used for empty/error states and similar use-cases.
17+//
18+// &lt;picture&gt;
19+//
20+// &lt;source srcset="status-page-dark.png" media="(prefers-color-scheme: dark)"&gt;
21+// &lt;img src="status-page.png" alt="status-page"&gt;
22+//
23+// &lt;/picture&gt;
24+//
25+// The `AdwStatusPage` widget can have an icon, a title, a description and a
26+// custom widget which is displayed below them.
27+//
28+// ## CSS nodes
29+//
30+// `AdwStatusPage` has a main CSS node with name `statuspage`.
31+//
32+// `AdwStatusPage` can use the
33+// [`.compact`](style-classes.html#compact-status-page) style class for when it
34+// needs to fit into a small space such a sidebar or a popover.
35+type StatusPage struct {
36+ gtk.Widget
37+}
38+
39+func StatusPageNewFromInternalPtr(ptr uintptr) *StatusPage {
40+ cls := &StatusPage{}
41+ cls.Ptr = ptr
42+ return cls
43+}
44+
45+var xNewStatusPage func() uintptr
46+
47+// Creates a new `AdwStatusPage`.
48+func NewStatusPage() *gtk.Widget {
49+ NewStatusPagePtr := xNewStatusPage()
50+ if NewStatusPagePtr == 0 {
51+ return nil
52+ }
53+
54+ gobject.IncreaseRef(NewStatusPagePtr)
55+
56+ NewStatusPageCls := &gtk.Widget{}
57+ NewStatusPageCls.Ptr = NewStatusPagePtr
58+ return NewStatusPageCls
59+}
60+
61+var xStatusPageGetChild func(uintptr) uintptr
62+
63+// Gets the child widget of @self.
64+func (x *StatusPage) GetChild() *gtk.Widget {
65+
66+ GetChildPtr := xStatusPageGetChild(x.GoPointer())
67+ if GetChildPtr == 0 {
68+ return nil
69+ }
70+
71+ gobject.IncreaseRef(GetChildPtr)
72+
73+ GetChildCls := &gtk.Widget{}
74+ GetChildCls.Ptr = GetChildPtr
75+ return GetChildCls
76+
77+}
78+
79+var xStatusPageGetDescription func(uintptr) string
80+
81+// Gets the description for @self.
82+func (x *StatusPage) GetDescription() string {
83+
84+ return xStatusPageGetDescription(x.GoPointer())
85+
86+}
87+
88+var xStatusPageGetIconName func(uintptr) string
89+
90+// Gets the icon name for @self.
91+func (x *StatusPage) GetIconName() string {
92+
93+ return xStatusPageGetIconName(x.GoPointer())
94+
95+}
96+
97+var xStatusPageGetPaintable func(uintptr) uintptr
98+
99+// Gets the paintable for @self.
100+func (x *StatusPage) GetPaintable() *gdk.PaintableBase {
101+
102+ GetPaintablePtr := xStatusPageGetPaintable(x.GoPointer())
103+ if GetPaintablePtr == 0 {
104+ return nil
105+ }
106+
107+ gobject.IncreaseRef(GetPaintablePtr)
108+
109+ GetPaintableCls := &gdk.PaintableBase{}
110+ GetPaintableCls.Ptr = GetPaintablePtr
111+ return GetPaintableCls
112+
113+}
114+
115+var xStatusPageGetTitle func(uintptr) string
116+
117+// Gets the title for @self.
118+func (x *StatusPage) GetTitle() string {
119+
120+ return xStatusPageGetTitle(x.GoPointer())
121+
122+}
123+
124+var xStatusPageSetChild func(uintptr, uintptr)
125+
126+// Sets the child widget of @self.
127+func (x *StatusPage) SetChild(ChildVar *gtk.Widget) {
128+
129+ xStatusPageSetChild(x.GoPointer(), ChildVar.GoPointer())
130+
131+}
132+
133+var xStatusPageSetDescription func(uintptr, string)
134+
135+// Sets the description for @self.
136+//
137+// The description is displayed below the title.
138+func (x *StatusPage) SetDescription(DescriptionVar string) {
139+
140+ xStatusPageSetDescription(x.GoPointer(), DescriptionVar)
141+
142+}
143+
144+var xStatusPageSetIconName func(uintptr, string)
145+
146+// Sets the icon name for @self.
147+//
148+// Changing this will set [property@StatusPage:paintable] to `NULL`.
149+func (x *StatusPage) SetIconName(IconNameVar string) {
150+
151+ xStatusPageSetIconName(x.GoPointer(), IconNameVar)
152+
153+}
154+
155+var xStatusPageSetPaintable func(uintptr, uintptr)
156+
157+// Sets the paintable for @self.
158+//
159+// Changing this will set [property@StatusPage:icon-name] to `NULL`.
160+func (x *StatusPage) SetPaintable(PaintableVar gdk.Paintable) {
161+
162+ xStatusPageSetPaintable(x.GoPointer(), PaintableVar.GoPointer())
163+
164+}
165+
166+var xStatusPageSetTitle func(uintptr, string)
167+
168+// Sets the title for @self.
169+//
170+// The title is displayed below the icon.
171+func (x *StatusPage) SetTitle(TitleVar string) {
172+
173+ xStatusPageSetTitle(x.GoPointer(), TitleVar)
174+
175+}
176+
177+func (c *StatusPage) GoPointer() uintptr {
178+ return c.Ptr
179+}
180+
181+func (c *StatusPage) SetGoPointer(ptr uintptr) {
182+ c.Ptr = ptr
183+}
184+
185+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
186+func (x *StatusPage) GetAccessibleRole() gtk.AccessibleRole {
187+
188+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
189+
190+}
191+
192+// Resets the accessible @property to its default value.
193+func (x *StatusPage) ResetProperty(PropertyVar gtk.AccessibleProperty) {
194+
195+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
196+
197+}
198+
199+// Resets the accessible @relation to its default value.
200+func (x *StatusPage) ResetRelation(RelationVar gtk.AccessibleRelation) {
201+
202+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
203+
204+}
205+
206+// Resets the accessible @state to its default value.
207+func (x *StatusPage) ResetState(StateVar gtk.AccessibleState) {
208+
209+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
210+
211+}
212+
213+// Updates a list of accessible properties.
214+//
215+// See the [enum@Gtk.AccessibleProperty] documentation for the
216+// value types of accessible properties.
217+//
218+// This function should be called by `GtkWidget` types whenever
219+// an accessible property change must be communicated to assistive
220+// technologies.
221+//
222+// Example:
223+// ```c
224+// value = gtk_adjustment_get_value (adjustment);
225+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
226+//
227+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
228+// -1);
229+//
230+// ```
231+func (x *StatusPage) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
232+
233+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
234+
235+}
236+
237+// Updates an array of accessible properties.
238+//
239+// This function should be called by `GtkWidget` types whenever an accessible
240+// property change must be communicated to assistive technologies.
241+//
242+// This function is meant to be used by language bindings.
243+func (x *StatusPage) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
244+
245+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
246+
247+}
248+
249+// Updates a list of accessible relations.
250+//
251+// This function should be called by `GtkWidget` types whenever an accessible
252+// relation change must be communicated to assistive technologies.
253+//
254+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
255+// you should pass each reference individually, followed by %NULL, e.g.
256+//
257+// ```c
258+// gtk_accessible_update_relation (accessible,
259+//
260+// GTK_ACCESSIBLE_RELATION_CONTROLS,
261+// ref1, NULL,
262+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
263+// ref1, ref2, ref3, NULL,
264+// -1);
265+//
266+// ```
267+func (x *StatusPage) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
268+
269+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
270+
271+}
272+
273+// Updates an array of accessible relations.
274+//
275+// This function should be called by `GtkWidget` types whenever an accessible
276+// relation change must be communicated to assistive technologies.
277+//
278+// This function is meant to be used by language bindings.
279+func (x *StatusPage) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
280+
281+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
282+
283+}
284+
285+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
286+// documentation for the value types of accessible states.
287+//
288+// This function should be called by `GtkWidget` types whenever an accessible
289+// state change must be communicated to assistive technologies.
290+//
291+// Example:
292+// ```c
293+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
294+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
295+//
296+// GTK_ACCESSIBLE_STATE_CHECKED, value,
297+// -1);
298+//
299+// ```
300+func (x *StatusPage) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
301+
302+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
303+
304+}
305+
306+// Updates an array of accessible states.
307+//
308+// This function should be called by `GtkWidget` types whenever an accessible
309+// state change must be communicated to assistive technologies.
310+//
311+// This function is meant to be used by language bindings.
312+func (x *StatusPage) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
313+
314+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
315+
316+}
317+
318+// Gets the ID of the @buildable object.
319+//
320+// `GtkBuilder` sets the name based on the ID attribute
321+// of the &lt;object&gt; tag used to construct the @buildable.
322+func (x *StatusPage) GetBuildableId() string {
323+
324+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
325+
326+}
327+
328+func init() {
329+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
330+ if err != nil {
331+ panic(err)
332+ }
333+
334+ core.PuregoSafeRegister(&xNewStatusPage, lib, "adw_status_page_new")
335+
336+ core.PuregoSafeRegister(&xStatusPageGetChild, lib, "adw_status_page_get_child")
337+ core.PuregoSafeRegister(&xStatusPageGetDescription, lib, "adw_status_page_get_description")
338+ core.PuregoSafeRegister(&xStatusPageGetIconName, lib, "adw_status_page_get_icon_name")
339+ core.PuregoSafeRegister(&xStatusPageGetPaintable, lib, "adw_status_page_get_paintable")
340+ core.PuregoSafeRegister(&xStatusPageGetTitle, lib, "adw_status_page_get_title")
341+ core.PuregoSafeRegister(&xStatusPageSetChild, lib, "adw_status_page_set_child")
342+ core.PuregoSafeRegister(&xStatusPageSetDescription, lib, "adw_status_page_set_description")
343+ core.PuregoSafeRegister(&xStatusPageSetIconName, lib, "adw_status_page_set_icon_name")
344+ core.PuregoSafeRegister(&xStatusPageSetPaintable, lib, "adw_status_page_set_paintable")
345+ core.PuregoSafeRegister(&xStatusPageSetTitle, lib, "adw_status_page_set_title")
346+
347+}
A v4/adw/adw-style-manager.go +180 -0 collapsed to keep the page light
A v4/adw/adw-swipe-tracker.go +258 -0 collapsed to keep the page light
A v4/adw/adw-swipeable.go +109 -0
@@ -0,0 +1,109 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gdk"
8+)
9+
10+// An interface for swipeable widgets.
11+type SwipeableInterface struct {
12+ Parent uintptr
13+
14+ Padding uintptr
15+}
16+
17+// An interface for swipeable widgets.
18+//
19+// The `AdwSwipeable` interface is implemented by all swipeable widgets.
20+//
21+// See [class@SwipeTracker] for details about implementing it.
22+type Swipeable interface {
23+ GoPointer() uintptr
24+ SetGoPointer(uintptr)
25+ GetCancelProgress() float64
26+ GetDistance() float64
27+ GetProgress() float64
28+ GetSnapPoints(NSnapPointsVar int32) uintptr
29+ GetSwipeArea(NavigationDirectionVar NavigationDirection, IsDragVar bool, RectVar *gdk.Rectangle)
30+}
31+type SwipeableBase struct {
32+ Ptr uintptr
33+}
34+
35+func (x *SwipeableBase) GoPointer() uintptr {
36+ return x.Ptr
37+}
38+
39+func (x *SwipeableBase) SetGoPointer(ptr uintptr) {
40+ x.Ptr = ptr
41+}
42+
43+// Gets the progress @self will snap back to after the gesture is canceled.
44+func (x *SwipeableBase) GetCancelProgress() float64 {
45+
46+ return XAdwSwipeableGetCancelProgress(x.GoPointer())
47+
48+}
49+
50+// Gets the swipe distance of @self.
51+//
52+// This corresponds to how many pixels 1 unit represents.
53+func (x *SwipeableBase) GetDistance() float64 {
54+
55+ return XAdwSwipeableGetDistance(x.GoPointer())
56+
57+}
58+
59+// Gets the current progress of @self.
60+func (x *SwipeableBase) GetProgress() float64 {
61+
62+ return XAdwSwipeableGetProgress(x.GoPointer())
63+
64+}
65+
66+// Gets the snap points of @self.
67+//
68+// Each snap point represents a progress value that is considered acceptable to
69+// end the swipe on.
70+func (x *SwipeableBase) GetSnapPoints(NSnapPointsVar int32) uintptr {
71+
72+ return XAdwSwipeableGetSnapPoints(x.GoPointer(), NSnapPointsVar)
73+
74+}
75+
76+// Gets the area @self can start a swipe from for the given direction and
77+// gesture type.
78+//
79+// This can be used to restrict swipes to only be possible from a certain area,
80+// for example, to only allow edge swipes, or to have a draggable element and
81+// ignore swipes elsewhere.
82+//
83+// If not implemented, the default implementation returns the allocation of
84+// @self, allowing swipes from anywhere.
85+func (x *SwipeableBase) GetSwipeArea(NavigationDirectionVar NavigationDirection, IsDragVar bool, RectVar *gdk.Rectangle) {
86+
87+ XAdwSwipeableGetSwipeArea(x.GoPointer(), NavigationDirectionVar, IsDragVar, RectVar)
88+
89+}
90+
91+var XAdwSwipeableGetCancelProgress func(uintptr) float64
92+var XAdwSwipeableGetDistance func(uintptr) float64
93+var XAdwSwipeableGetProgress func(uintptr) float64
94+var XAdwSwipeableGetSnapPoints func(uintptr, int32) uintptr
95+var XAdwSwipeableGetSwipeArea func(uintptr, NavigationDirection, bool, *gdk.Rectangle)
96+
97+func init() {
98+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
99+ if err != nil {
100+ panic(err)
101+ }
102+
103+ core.PuregoSafeRegister(&XAdwSwipeableGetCancelProgress, lib, "adw_swipeable_get_cancel_progress")
104+ core.PuregoSafeRegister(&XAdwSwipeableGetDistance, lib, "adw_swipeable_get_distance")
105+ core.PuregoSafeRegister(&XAdwSwipeableGetProgress, lib, "adw_swipeable_get_progress")
106+ core.PuregoSafeRegister(&XAdwSwipeableGetSnapPoints, lib, "adw_swipeable_get_snap_points")
107+ core.PuregoSafeRegister(&XAdwSwipeableGetSwipeArea, lib, "adw_swipeable_get_swipe_area")
108+
109+}
A v4/adw/adw-tab-bar.go +485 -0 collapsed to keep the page light
A v4/adw/adw-tab-button.go +373 -0 collapsed to keep the page light
A v4/adw/adw-tab-overview.go +601 -0 collapsed to keep the page light
A v4/adw/adw-tab-view.go +1637 -0 collapsed to keep the page light
A v4/adw/adw-timed-animation.go +232 -0 collapsed to keep the page light
A v4/adw/adw-toast-overlay.go +292 -0 collapsed to keep the page light
A v4/adw/adw-toast.go +484 -0 collapsed to keep the page light
A v4/adw/adw-version.go +66 -0 collapsed to keep the page light
A v4/adw/adw-view-stack.go +842 -0 collapsed to keep the page light
A v4/adw/adw-view-switcher-bar.go +308 -0 collapsed to keep the page light
A v4/adw/adw-view-switcher-title.go +379 -0 collapsed to keep the page light
A v4/adw/adw-view-switcher.go +290 -0 collapsed to keep the page light
A v4/adw/adw-window-title.go +261 -0 collapsed to keep the page light
A v4/adw/adw-window.go +382 -0 collapsed to keep the page light
A v4/cairo/main.go +510 -0 collapsed to keep the page light
A v4/gdk/gdkapplaunchcontext.go +149 -0 collapsed to keep the page light
A v4/gdk/gdkcairo.go +101 -0 collapsed to keep the page light
A v4/gdk/gdkcairocontext.go +58 -0 collapsed to keep the page light
A v4/gdk/gdkclipboard.go +378 -0 collapsed to keep the page light
A v4/gdk/gdkcontentdeserializer.go +267 -0 collapsed to keep the page light
A v4/gdk/gdkcontentformats.go +54 -0 collapsed to keep the page light
A v4/gdk/gdkcontentprovider.go +231 -0 collapsed to keep the page light
A v4/gdk/gdkcontentserializer.go +268 -0 collapsed to keep the page light
A v4/gdk/gdkcursor.go +205 -0 collapsed to keep the page light
A v4/gdk/gdkdevice.go +375 -0 collapsed to keep the page light
A v4/gdk/gdkdevicepad.go +112 -0 collapsed to keep the page light
A v4/gdk/gdkdevicetool.go +113 -0 collapsed to keep the page light
A v4/gdk/gdkdisplay.go +564 -0 collapsed to keep the page light
A v4/gdk/gdkdisplaymanager.go +196 -0 collapsed to keep the page light
A v4/gdk/gdkdrag.go +274 -0 collapsed to keep the page light
A v4/gdk/gdkdragsurface.go +48 -0
@@ -0,0 +1,48 @@
1+// Package gdk was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package gdk
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+)
8+
9+// The `GdkDragSurfaceInterface` implementation is private to GDK.
10+type DragSurfaceInterface struct {
11+}
12+
13+// A `GdkDragSurface` is an interface for surfaces used during DND.
14+type DragSurface interface {
15+ GoPointer() uintptr
16+ SetGoPointer(uintptr)
17+ Present(WidthVar int32, HeightVar int32) bool
18+}
19+type DragSurfaceBase struct {
20+ Ptr uintptr
21+}
22+
23+func (x *DragSurfaceBase) GoPointer() uintptr {
24+ return x.Ptr
25+}
26+
27+func (x *DragSurfaceBase) SetGoPointer(ptr uintptr) {
28+ x.Ptr = ptr
29+}
30+
31+// Present @drag_surface.
32+func (x *DragSurfaceBase) Present(WidthVar int32, HeightVar int32) bool {
33+
34+ return XGdkDragSurfacePresent(x.GoPointer(), WidthVar, HeightVar)
35+
36+}
37+
38+var XGdkDragSurfacePresent func(uintptr, int32, int32) bool
39+
40+func init() {
41+ lib, err := purego.Dlopen(core.GetPath("GDK"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
42+ if err != nil {
43+ panic(err)
44+ }
45+
46+ core.PuregoSafeRegister(&XGdkDragSurfacePresent, lib, "gdk_drag_surface_present")
47+
48+}
A v4/gdk/gdkdrawcontext.go +164 -0 collapsed to keep the page light
A v4/gdk/gdkdrop.go +264 -0 collapsed to keep the page light
A v4/gdk/gdkenums.go +255 -0 collapsed to keep the page light
A v4/gdk/gdkevents.go +1222 -0 collapsed to keep the page light
A v4/gdk/gdkframeclock.go +351 -0 collapsed to keep the page light
A v4/gdk/gdkframetimings.go +13 -0 collapsed to keep the page light
A v4/gdk/gdkglcontext.go +399 -0 collapsed to keep the page light
A v4/gdk/gdkgltexture.go +296 -0 collapsed to keep the page light
A v4/gdk/gdkkeys.go +120 -0 collapsed to keep the page light
A v4/gdk/gdkmemorytexture.go +280 -0 collapsed to keep the page light
A v4/gdk/gdkmonitor.go +222 -0 collapsed to keep the page light
A v4/gdk/gdkpaintable.go +301 -0 collapsed to keep the page light
A v4/gdk/gdkpango.go +60 -0 collapsed to keep the page light
A v4/gdk/gdkpixbuf.go +61 -0 collapsed to keep the page light
A v4/gdk/gdkpopup.go +143 -0 collapsed to keep the page light
A v4/gdk/gdkpopuplayout.go +77 -0 collapsed to keep the page light
A v4/gdk/gdkrgba.go +21 -0 collapsed to keep the page light
A v4/gdk/gdkseat.go +202 -0 collapsed to keep the page light
A v4/gdk/gdksnapshot.go +28 -0 collapsed to keep the page light
A v4/gdk/gdksurface.go +566 -0 collapsed to keep the page light
A v4/gdk/gdktexture.go +536 -0 collapsed to keep the page light
A v4/gdk/gdktoplevel.go +399 -0 collapsed to keep the page light
A v4/gdk/gdktoplevellayout.go +14 -0 collapsed to keep the page light
A v4/gdk/gdktoplevelsize.go +29 -0 collapsed to keep the page light
A v4/gdk/gdktypes.go +71 -0 collapsed to keep the page light
A v4/gdk/gdkvulkancontext.go +94 -0 collapsed to keep the page light
A v4/gdk/main.go +53 -0 collapsed to keep the page light
A v4/gdkpixbuf/gdk-pixbuf-animation.go +405 -0 collapsed to keep the page light
A v4/gdkpixbuf/gdk-pixbuf-core.go +86 -0 collapsed to keep the page light
A v4/gdkpixbuf/gdk-pixbuf-io.go +245 -0 collapsed to keep the page light
A v4/gdkpixbuf/gdk-pixbuf-loader.go +359 -0 collapsed to keep the page light
A v4/gdkpixbuf/gdk-pixbuf-simple-anim.go +86 -0 collapsed to keep the page light
A v4/gdkpixbuf/gdk-pixbuf-transform.go +59 -0 collapsed to keep the page light
A v4/gdkpixbuf/gdk-pixbuf.go +1394 -0 collapsed to keep the page light
A v4/gdkpixbuf/main.go +76 -0 collapsed to keep the page light
A v4/gio/gaction.go +276 -0 collapsed to keep the page light
A v4/gio/gactiongroup.go +357 -0 collapsed to keep the page light
A v4/gio/gactionmap.go +168 -0 collapsed to keep the page light
A v4/gio/gappinfo.go +777 -0 collapsed to keep the page light
A v4/gio/gapplication.go +1388 -0 collapsed to keep the page light
A v4/gio/gapplicationcommandline.go +463 -0 collapsed to keep the page light
A v4/gio/gasyncinitable.go +237 -0 collapsed to keep the page light
A v4/gio/gasyncresult.go +186 -0 collapsed to keep the page light
A v4/gio/gbufferedinputstream.go +281 -0 collapsed to keep the page light
A v4/gio/gbufferedoutputstream.go +187 -0 collapsed to keep the page light
A v4/gio/gcancellable.go +362 -0 collapsed to keep the page light
A v4/gio/gcharsetconverter.go +228 -0 collapsed to keep the page light
A v4/gio/gcontenttype.go +240 -0 collapsed to keep the page light
A v4/gio/gconverter.go +150 -0 collapsed to keep the page light
A v4/gio/gconverterinputstream.go +141 -0 collapsed to keep the page light
A v4/gio/gconverteroutputstream.go +167 -0 collapsed to keep the page light
A v4/gio/gcredentials.go +194 -0 collapsed to keep the page light
A v4/gio/gdatagrambased.go +282 -0 collapsed to keep the page light
A v4/gio/gdatainputstream.go +451 -0 collapsed to keep the page light
A v4/gio/gdataoutputstream.go +217 -0 collapsed to keep the page light
A v4/gio/gdbusaddress.go +140 -0 collapsed to keep the page light
A v4/gio/gdbusconnection.go +277 -0 collapsed to keep the page light
A v4/gio/gdbuserror.go +156 -0 collapsed to keep the page light
A v4/gio/gdbusinterface.go +105 -0 collapsed to keep the page light
A v4/gio/gdbusinterfaceskeleton.go +298 -0 collapsed to keep the page light
A v4/gio/gdbusintrospection.go +114 -0 collapsed to keep the page light
A v4/gio/gdbusnameowning.go +134 -0 collapsed to keep the page light
A v4/gio/gdbusnamewatching.go +115 -0 collapsed to keep the page light
A v4/gio/gdbusobject.go +81 -0 collapsed to keep the page light
A v4/gio/gdbusobjectmanager.go +101 -0 collapsed to keep the page light
A v4/gio/gdbusobjectmanagerclient.go +437 -0 collapsed to keep the page light
A v4/gio/gdbusobjectmanagerserver.go +217 -0 collapsed to keep the page light
A v4/gio/gdbusobjectproxy.go +115 -0 collapsed to keep the page light
A v4/gio/gdbusobjectskeleton.go +176 -0 collapsed to keep the page light
A v4/gio/gdbusproxy.go +712 -0 collapsed to keep the page light
A v4/gio/gdbusutils.go +213 -0 collapsed to keep the page light
A v4/gio/gdebugcontroller.go +73 -0 collapsed to keep the page light
A v4/gio/gdebugcontrollerdbus.go +287 -0 collapsed to keep the page light
A v4/gio/gdesktopappinfo.go +663 -0 collapsed to keep the page light
A v4/gio/gdrive.go +388 -0 collapsed to keep the page light
A v4/gio/gdtlsclientconnection.go +130 -0 collapsed to keep the page light
A v4/gio/gdtlsconnection.go +536 -0 collapsed to keep the page light
A v4/gio/gdtlsserverconnection.go +55 -0 collapsed to keep the page light
A v4/gio/gemblem.go +145 -0 collapsed to keep the page light
A v4/gio/gemblemedicon.go +154 -0 collapsed to keep the page light
A v4/gio/gfile.go +2758 -0 large diff (2758 lines changed): collapsed
A v4/gio/gfileattribute.go +19 -0 collapsed to keep the page light
A v4/gio/gfiledescriptorbased.go +54 -0 collapsed to keep the page light
A v4/gio/gfileenumerator.go +313 -0 collapsed to keep the page light
A v4/gio/gfileicon.go +154 -0 collapsed to keep the page light
A v4/gio/gfileinfo.go +876 -0 collapsed to keep the page light
A v4/gio/gfileinputstream.go +166 -0 collapsed to keep the page light
A v4/gio/gfileiostream.go +197 -0 collapsed to keep the page light
A v4/gio/gfilemonitor.go +142 -0 collapsed to keep the page light
A v4/gio/gfilenamecompleter.go +101 -0 collapsed to keep the page light
A v4/gio/gfileoutputstream.go +191 -0 collapsed to keep the page light
A v4/gio/gfilterinputstream.go +83 -0 collapsed to keep the page light
A v4/gio/gfilteroutputstream.go +83 -0 collapsed to keep the page light
A v4/gio/gicon.go +167 -0 collapsed to keep the page light
A v4/gio/ginetaddress.go +272 -0 collapsed to keep the page light
A v4/gio/ginetaddressmask.go +194 -0 collapsed to keep the page light
A v4/gio/ginetsocketaddress.go +176 -0 collapsed to keep the page light
A v4/gio/ginitable.go +130 -0 collapsed to keep the page light
A v4/gio/ginputstream.go +430 -0 collapsed to keep the page light
A v4/gio/gio-2.0.go +5784 -0 large diff (5784 lines changed): collapsed
A v4/gio/gioenums.go +1790 -0 collapsed to keep the page light
A v4/gio/gioerror.go +31 -0 collapsed to keep the page light
A v4/gio/giomodule.go +248 -0 collapsed to keep the page light
A v4/gio/gioscheduler.go +46 -0 collapsed to keep the page light
A v4/gio/giostream.go +257 -0 collapsed to keep the page light
A v4/gio/giotypes.go +351 -0 collapsed to keep the page light
A v4/gio/glistmodel.go +192 -0 collapsed to keep the page light
A v4/gio/gliststore.go +286 -0 collapsed to keep the page light
A v4/gio/gloadableicon.go +87 -0 collapsed to keep the page light
A v4/gio/gmemoryinputstream.go +228 -0 collapsed to keep the page light
A v4/gio/gmemorymonitor.go +102 -0 collapsed to keep the page light
A v4/gio/gmemoryoutputstream.go +340 -0 collapsed to keep the page light
A v4/gio/gmenumodel.go +534 -0 collapsed to keep the page light
A v4/gio/gmount.go +448 -0 collapsed to keep the page light
A v4/gio/gmountoperation.go +383 -0 collapsed to keep the page light
A v4/gio/gnativesocketaddress.go +104 -0 collapsed to keep the page light
A v4/gio/gnativevolumemonitor.go +24 -0 collapsed to keep the page light
A v4/gio/gnetworkaddress.go +179 -0 collapsed to keep the page light
A v4/gio/gnetworking.go +28 -0 collapsed to keep the page light
A v4/gio/gnetworkmonitor.go +171 -0 collapsed to keep the page light
A v4/gio/gnetworkservice.go +169 -0 collapsed to keep the page light
A v4/gio/goutputstream.go +660 -0 collapsed to keep the page light
A v4/gio/gpermission.go +211 -0 collapsed to keep the page light
A v4/gio/gpollableinputstream.go +122 -0 collapsed to keep the page light
A v4/gio/gpollableoutputstream.go +157 -0 collapsed to keep the page light
A v4/gio/gpollableutils.go +108 -0 collapsed to keep the page light
A v4/gio/gpowerprofilemonitor.go +91 -0 collapsed to keep the page light
A v4/gio/gproxy.go +125 -0 collapsed to keep the page light
A v4/gio/gproxyaddress.go +186 -0 collapsed to keep the page light
A v4/gio/gproxyaddressenumerator.go +37 -0 collapsed to keep the page light
A v4/gio/gproxyresolver.go +124 -0 collapsed to keep the page light
A v4/gio/gremoteactiongroup.go +96 -0 collapsed to keep the page light
A v4/gio/gresolver.go +348 -0 collapsed to keep the page light
A v4/gio/gresource.go +143 -0 collapsed to keep the page light
A v4/gio/gseekable.go +125 -0 collapsed to keep the page light
A v4/gio/gsettings.go +1357 -0 collapsed to keep the page light
A v4/gio/gsettingsbackend.go +310 -0 collapsed to keep the page light
A v4/gio/gsettingsschema.go +146 -0 collapsed to keep the page light
A v4/gio/gsimpleactiongroup.go +441 -0 collapsed to keep the page light
A v4/gio/gsimpleasyncresult.go +576 -0 collapsed to keep the page light
A v4/gio/gsimpleproxyresolver.go +143 -0 collapsed to keep the page light
A v4/gio/gsocket.go +1353 -0 collapsed to keep the page light
A v4/gio/gsocketaddress.go +143 -0 collapsed to keep the page light
A v4/gio/gsocketaddressenumerator.go +117 -0 collapsed to keep the page light
A v4/gio/gsocketclient.go +713 -0 collapsed to keep the page light
A v4/gio/gsocketconnectable.go +155 -0 collapsed to keep the page light
A v4/gio/gsocketconnection.go +166 -0 collapsed to keep the page light
A v4/gio/gsocketcontrolmessage.go +111 -0 collapsed to keep the page light
A v4/gio/gsocketlistener.go +327 -0 collapsed to keep the page light
A v4/gio/gsocketservice.go +162 -0 collapsed to keep the page light
A v4/gio/gsrvtarget.go +26 -0 collapsed to keep the page light
A v4/gio/gtask.go +1138 -0 collapsed to keep the page light
A v4/gio/gtcpconnection.go +72 -0 collapsed to keep the page light
A v4/gio/gtcpwrapperconnection.go +82 -0 collapsed to keep the page light
A v4/gio/gthemedicon.go +183 -0 collapsed to keep the page light
A v4/gio/gthreadedsocketservice.go +88 -0 collapsed to keep the page light
A v4/gio/gtlsbackend.go +175 -0 collapsed to keep the page light
A v4/gio/gtlscertificate.go +357 -0 collapsed to keep the page light
A v4/gio/gtlsclientconnection.go +210 -0 collapsed to keep the page light
A v4/gio/gtlsconnection.go +521 -0 collapsed to keep the page light
A v4/gio/gtlsdatabase.go +339 -0 collapsed to keep the page light
A v4/gio/gtlsfiledatabase.go +61 -0 collapsed to keep the page light
A v4/gio/gtlsinteraction.go +260 -0 collapsed to keep the page light
A v4/gio/gtlspassword.go +175 -0 collapsed to keep the page light
A v4/gio/gtlsserverconnection.go +60 -0 collapsed to keep the page light
A v4/gio/gunixconnection.go +208 -0 collapsed to keep the page light
A v4/gio/gunixcredentialsmessage.go +112 -0 collapsed to keep the page light
A v4/gio/gunixfdlist.go +192 -0 collapsed to keep the page light
A v4/gio/gunixfdmessage.go +151 -0 collapsed to keep the page light
A v4/gio/gunixinputstream.go +160 -0 collapsed to keep the page light
A v4/gio/gunixmounts.go +429 -0 collapsed to keep the page light
A v4/gio/gunixoutputstream.go +186 -0 collapsed to keep the page light
A v4/gio/gunixsocketaddress.go +233 -0 collapsed to keep the page light
A v4/gio/gvfs.go +166 -0 collapsed to keep the page light
A v4/gio/gvolume.go +352 -0 collapsed to keep the page light
A v4/gio/gvolumemonitor.go +271 -0 collapsed to keep the page light
A v4/gio/gzlibcompressor.go +190 -0 collapsed to keep the page light
A v4/gio/gzlibdecompressor.go +177 -0 collapsed to keep the page light
A v4/gio/main.go +25 -0 collapsed to keep the page light
A v4/glib/garray.go +177 -0 collapsed to keep the page light
A v4/glib/gasyncqueue.go +8 -0 collapsed to keep the page light
A v4/glib/gatomic.go +321 -0 collapsed to keep the page light
A v4/glib/gbacktrace.go +96 -0 collapsed to keep the page light
A v4/glib/gbase64.go +110 -0 collapsed to keep the page light
A v4/glib/gbitlock.go +128 -0 collapsed to keep the page light
A v4/glib/gbookmarkfile.go +31 -0 collapsed to keep the page light
A v4/glib/gcharset.go +143 -0 collapsed to keep the page light
A v4/glib/gchecksum.go +93 -0 collapsed to keep the page light
A v4/glib/gconvert.go +356 -0 collapsed to keep the page light
A v4/glib/gdataset.go +261 -0 collapsed to keep the page light
A v4/glib/gdate.go +296 -0 collapsed to keep the page light
A v4/glib/gdatetime.go +9 -0 collapsed to keep the page light
A v4/glib/gdir.go +6 -0 collapsed to keep the page light
A v4/glib/genviron.go +154 -0 collapsed to keep the page light
A v4/glib/gerror.go +143 -0 collapsed to keep the page light
A v4/glib/gfileutils.go +716 -0 collapsed to keep the page light
A v4/glib/ggettext.go +135 -0 collapsed to keep the page light
A v4/glib/ghash.go +441 -0 collapsed to keep the page light
A v4/glib/ghmac.go +61 -0 collapsed to keep the page light
A v4/glib/ghook.go +154 -0 collapsed to keep the page light
A v4/glib/ghostutils.go +89 -0 collapsed to keep the page light
A v4/glib/giochannel.go +237 -0 collapsed to keep the page light
A v4/glib/gkeyfile.go +46 -0 collapsed to keep the page light
A v4/glib/glib-2.0.go +46 -0 collapsed to keep the page light
A v4/glib/glib-types.go +35 -0 collapsed to keep the page light
A v4/glib/glib-unix.go +174 -0 collapsed to keep the page light
A v4/glib/glibconfig.go +11 -0 collapsed to keep the page light
A v4/glib/glist.go +36 -0 collapsed to keep the page light
A v4/glib/gmain.go +826 -0 collapsed to keep the page light
A v4/glib/gmappedfile.go +8 -0 collapsed to keep the page light
A v4/glib/gmarkup.go +228 -0 collapsed to keep the page light
A v4/glib/gmem.go +273 -0 collapsed to keep the page light
A v4/glib/gmessages.go +815 -0 collapsed to keep the page light
A v4/glib/gnode.go +83 -0 collapsed to keep the page light
A v4/glib/goption.go +136 -0 collapsed to keep the page light
A v4/glib/gpattern.go +71 -0 collapsed to keep the page light
A v4/glib/gpoll.go +55 -0 collapsed to keep the page light
A v4/glib/gprimes.go +30 -0 collapsed to keep the page light
A v4/glib/gprintf.go +122 -0 collapsed to keep the page light
A v4/glib/gqsort.go +28 -0 collapsed to keep the page light
A v4/glib/gquark.go +120 -0 collapsed to keep the page light
A v4/glib/gqueue.go +12 -0 collapsed to keep the page light
A v4/glib/grand.go +74 -0 collapsed to keep the page light
A v4/glib/grcbox.go +205 -0 collapsed to keep the page light
A v4/glib/grefcount.go +103 -0 collapsed to keep the page light
A v4/glib/grefstring.go +95 -0 collapsed to keep the page light
A v4/glib/gregex.go +536 -0 collapsed to keep the page light
A v4/glib/gscanner.go +203 -0 collapsed to keep the page light
A v4/glib/gsequence.go +145 -0 collapsed to keep the page light
A v4/glib/gshell.go +110 -0 collapsed to keep the page light
A v4/glib/gslice.go +142 -0 collapsed to keep the page light
A v4/glib/gslist.go +35 -0 collapsed to keep the page light
A v4/glib/gspawn.go +550 -0 collapsed to keep the page light
A v4/glib/gstdio.go +103 -0 collapsed to keep the page light
A v4/glib/gstrfuncs.go +1089 -0 collapsed to keep the page light
A v4/glib/gstring.go +11 -0 collapsed to keep the page light
A v4/glib/gstringchunk.go +7 -0 collapsed to keep the page light
A v4/glib/gstrvbuilder.go +18 -0 collapsed to keep the page light
A v4/glib/gtestutils.go +1164 -0 collapsed to keep the page light
A v4/glib/gthread.go +436 -0 collapsed to keep the page light
A v4/glib/gthreadpool.go +105 -0 collapsed to keep the page light
A v4/glib/gtimer.go +60 -0 collapsed to keep the page light
A v4/glib/gtimezone.go +27 -0 collapsed to keep the page light
A v4/glib/gtrashstack.go +65 -0 collapsed to keep the page light
A v4/glib/gtree.go +24 -0 collapsed to keep the page light
A v4/glib/gtypes.go +106 -0 collapsed to keep the page light
A v4/glib/gunicode.go +1566 -0 collapsed to keep the page light
A v4/glib/guri.go +600 -0 collapsed to keep the page light
A v4/glib/gutils.go +744 -0 collapsed to keep the page light
A v4/glib/guuid.go +44 -0 collapsed to keep the page light
A v4/glib/gvariant.go +582 -0 collapsed to keep the page light
A v4/glib/gvarianttype.go +238 -0 collapsed to keep the page light
A v4/glib/gversion.go +39 -0 collapsed to keep the page light
A v4/glib/main.go +159 -0 collapsed to keep the page light
A v4/gmodule/gmodule.go +106 -0 collapsed to keep the page light
A v4/gmodule/main.go +25 -0 collapsed to keep the page light
A v4/gobject/gbinding.go +38 -0 collapsed to keep the page light
A v4/gobject/gboxed.go +61 -0 collapsed to keep the page light
A v4/gobject/gclosure.go +172 -0 collapsed to keep the page light
A v4/gobject/genums.go +220 -0 collapsed to keep the page light
A v4/gobject/gmarshal.go +260 -0 collapsed to keep the page light
A v4/gobject/gobject-2.0.go +723 -0 collapsed to keep the page light
A v4/gobject/gobject.go +1326 -0 collapsed to keep the page light
A v4/gobject/gparam.go +411 -0 collapsed to keep the page light
A v4/gobject/gparamspecs.go +929 -0 collapsed to keep the page light
A v4/gobject/gsignal.go +765 -0 collapsed to keep the page light
A v4/gobject/gsourceclosure.go +49 -0 collapsed to keep the page light
A v4/gobject/gtype.go +1114 -0 collapsed to keep the page light
A v4/gobject/gtypemodule.go +204 -0 collapsed to keep the page light
A v4/gobject/gtypeplugin.go +29 -0 collapsed to keep the page light
A v4/gobject/gvalue.go +73 -0 collapsed to keep the page light
A v4/gobject/gvaluearray.go +11 -0 collapsed to keep the page light
A v4/gobject/gvaluetypes.go +48 -0 collapsed to keep the page light
A v4/gobject/main.go +4 -0 collapsed to keep the page light
A v4/gobject/more.go +94 -0 collapsed to keep the page light
A v4/graphene/graphene-box.go +98 -0 collapsed to keep the page light
A v4/graphene/graphene-config.go +22 -0 collapsed to keep the page light
A v4/graphene/graphene-euler.go +91 -0 collapsed to keep the page light
A v4/graphene/graphene-frustum.go +10 -0 collapsed to keep the page light
A v4/graphene/graphene-matrix.go +10 -0 collapsed to keep the page light
A v4/graphene/graphene-plane.go +12 -0 collapsed to keep the page light
A v4/graphene/graphene-point.go +32 -0 collapsed to keep the page light
A v4/graphene/graphene-point3d.go +34 -0 collapsed to keep the page light
A v4/graphene/graphene-quad.go +10 -0 collapsed to keep the page light
A v4/graphene/graphene-quaternion.go +16 -0 collapsed to keep the page light
A v4/graphene/graphene-ray.go +27 -0 collapsed to keep the page light
A v4/graphene/graphene-rect.go +56 -0 collapsed to keep the page light
A v4/graphene/graphene-size.go +33 -0 collapsed to keep the page light
A v4/graphene/graphene-sphere.go +9 -0 collapsed to keep the page light
A v4/graphene/graphene-triangle.go +11 -0 collapsed to keep the page light
A v4/graphene/graphene-vec2.go +63 -0 collapsed to keep the page light
A v4/graphene/graphene-vec3.go +78 -0 collapsed to keep the page light
A v4/graphene/graphene-vec4.go +89 -0 collapsed to keep the page light
A v4/gsk/gskbroadwayrenderer.go +59 -0 collapsed to keep the page light
A v4/gsk/gskcairorenderer.go +63 -0 collapsed to keep the page light
A v4/gsk/gskenums.go +221 -0 collapsed to keep the page light
A v4/gsk/gskglrenderer.go +52 -0 collapsed to keep the page light
A v4/gsk/gskglshader.go +432 -0 collapsed to keep the page light
A v4/gsk/gskrenderer.go +177 -0 collapsed to keep the page light
A v4/gsk/gskrendernode.go +250 -0 collapsed to keep the page light
A v4/gsk/gskrendernodeimpl.go +1884 -0 collapsed to keep the page light
A v4/gsk/gskroundedrect.go +21 -0 collapsed to keep the page light
A v4/gsk/gsktransform.go +32 -0 collapsed to keep the page light
A v4/gsk/gsktypes.go +14 -0 collapsed to keep the page light
A v4/gsk/main.go +59 -0 collapsed to keep the page light
A v4/gtk/gtkaboutdialog.go +819 -0 collapsed to keep the page light
A v4/gtk/gtkaccelgroup.go +161 -0 collapsed to keep the page light
A v4/gtk/gtkaccessible.go +243 -0 collapsed to keep the page light
A v4/gtk/gtkactionable.go +153 -0 collapsed to keep the page light
A v4/gtk/gtkactionbar.go +321 -0 collapsed to keep the page light
A v4/gtk/gtkadjustment.go +299 -0 collapsed to keep the page light
A v4/gtk/gtkappchooser.go +91 -0 collapsed to keep the page light
A v4/gtk/gtkappchooserbutton.go +426 -0 collapsed to keep the page light
A v4/gtk/gtkappchooserdialog.go +413 -0 collapsed to keep the page light
A v4/gtk/gtkappchooserwidget.go +410 -0 collapsed to keep the page light
A v4/gtk/gtkapplication.go +812 -0 collapsed to keep the page light
A v4/gtk/gtkapplicationwindow.go +778 -0 collapsed to keep the page light
A v4/gtk/gtkaspectframe.go +320 -0 collapsed to keep the page light
A v4/gtk/gtkassistant.go +809 -0 collapsed to keep the page light
A v4/gtk/gtkatcontext.go +107 -0 collapsed to keep the page light
A v4/gtk/gtkbinlayout.go +60 -0 collapsed to keep the page light
A v4/gtk/gtkbitset.go +64 -0 collapsed to keep the page light
A v4/gtk/gtkbookmarklist.go +225 -0 collapsed to keep the page light
A v4/gtk/gtkboolfilter.go +110 -0 collapsed to keep the page light
A v4/gtk/gtkborder.go +15 -0 collapsed to keep the page light
A v4/gtk/gtkbox.go +376 -0 collapsed to keep the page light
A v4/gtk/gtkboxlayout.go +149 -0 collapsed to keep the page light
A v4/gtk/gtkbuildable.go +75 -0 collapsed to keep the page light
A v4/gtk/gtkbuilder.go +706 -0 collapsed to keep the page light
A v4/gtk/gtkbuilderlistitemfactory.go +137 -0 collapsed to keep the page light
A v4/gtk/gtkbuilderscope.go +168 -0 collapsed to keep the page light
A v4/gtk/gtkbutton.go +543 -0 collapsed to keep the page light
A v4/gtk/gtkcalendar.go +445 -0 collapsed to keep the page light
A v4/gtk/gtkcellarea.go +1168 -0 collapsed to keep the page light
A v4/gtk/gtkcellareabox.go +234 -0 collapsed to keep the page light
A v4/gtk/gtkcellareacontext.go +236 -0 collapsed to keep the page light
A v4/gtk/gtkcelleditable.go +82 -0 collapsed to keep the page light
A v4/gtk/gtkcelllayout.go +303 -0 collapsed to keep the page light
A v4/gtk/gtkcellrenderer.go +483 -0 collapsed to keep the page light
A v4/gtk/gtkcellrendereraccel.go +93 -0 collapsed to keep the page light
A v4/gtk/gtkcellrenderercombo.go +92 -0 collapsed to keep the page light
A v4/gtk/gtkcellrendererpixbuf.go +72 -0 collapsed to keep the page light
A v4/gtk/gtkcellrendererprogress.go +70 -0 collapsed to keep the page light
A v4/gtk/gtkcellrendererspin.go +67 -0 collapsed to keep the page light
A v4/gtk/gtkcellrendererspinner.go +65 -0 collapsed to keep the page light
A v4/gtk/gtkcellrenderertext.go +104 -0 collapsed to keep the page light
A v4/gtk/gtkcellrenderertoggle.go +149 -0 collapsed to keep the page light
A v4/gtk/gtkcellview.go +530 -0 collapsed to keep the page light
A v4/gtk/gtkcenterbox.go +364 -0 collapsed to keep the page light
A v4/gtk/gtkcenterlayout.go +195 -0 collapsed to keep the page light
A v4/gtk/gtkcheckbutton.go +553 -0 collapsed to keep the page light
A v4/gtk/gtkcolorbutton.go +365 -0 collapsed to keep the page light
A v4/gtk/gtkcolorchooser.go +114 -0 collapsed to keep the page light
A v4/gtk/gtkcolorchooserdialog.go +371 -0 collapsed to keep the page light
A v4/gtk/gtkcolorchooserwidget.go +271 -0 collapsed to keep the page light
A v4/gtk/gtkcolorutils.go +41 -0 collapsed to keep the page light
A v4/gtk/gtkcolumnview.go +627 -0 collapsed to keep the page light
A v4/gtk/gtkcolumnviewcolumn.go +311 -0 collapsed to keep the page light
A v4/gtk/gtkcombobox.go +918 -0 collapsed to keep the page light
A v4/gtk/gtkcomboboxtext.go +538 -0 collapsed to keep the page light
A v4/gtk/gtkconstraint.go +253 -0 collapsed to keep the page light
A v4/gtk/gtkconstraintguide.go +179 -0 collapsed to keep the page light
A v4/gtk/gtkconstraintlayout.go +490 -0 collapsed to keep the page light
A v4/gtk/gtkcssenums.go +40 -0 collapsed to keep the page light
A v4/gtk/gtkcsserror.go +25 -0 collapsed to keep the page light
A v4/gtk/gtkcsslocation.go +26 -0 collapsed to keep the page light
A v4/gtk/gtkcssprovider.go +190 -0 collapsed to keep the page light
A v4/gtk/gtkcsssection.go +9 -0 collapsed to keep the page light
A v4/gtk/gtkcustomfilter.go +86 -0 collapsed to keep the page light
A v4/gtk/gtkcustomlayout.go +72 -0 collapsed to keep the page light
A v4/gtk/gtkcustomsorter.go +78 -0 collapsed to keep the page light
A v4/gtk/gtkdebug.go +89 -0 collapsed to keep the page light
A v4/gtk/gtkdialog.go +741 -0 collapsed to keep the page light
A v4/gtk/gtkdirectorylist.go +317 -0 collapsed to keep the page light
A v4/gtk/gtkdragicon.go +335 -0 collapsed to keep the page light
A v4/gtk/gtkdragsource.go +318 -0 collapsed to keep the page light
A v4/gtk/gtkdrawingarea.go +388 -0 collapsed to keep the page light
A v4/gtk/gtkdropcontrollermotion.go +142 -0 collapsed to keep the page light
A v4/gtk/gtkdropdown.go +489 -0 collapsed to keep the page light
A v4/gtk/gtkdroptarget.go +365 -0 collapsed to keep the page light
A v4/gtk/gtkdroptargetasync.go +237 -0 collapsed to keep the page light
A v4/gtk/gtkeditable.go +572 -0 collapsed to keep the page light
A v4/gtk/gtkeditablelabel.go +508 -0 collapsed to keep the page light
A v4/gtk/gtkemojichooser.go +302 -0 collapsed to keep the page light
A v4/gtk/gtkentry.go +1419 -0 collapsed to keep the page light
A v4/gtk/gtkentrybuffer.go +226 -0 collapsed to keep the page light
A v4/gtk/gtkentrycompletion.go +595 -0 collapsed to keep the page light
A v4/gtk/gtkenums.go +1512 -0 collapsed to keep the page light
A v4/gtk/gtkeventcontroller.go +226 -0 collapsed to keep the page light
A v4/gtk/gtkeventcontrollerfocus.go +124 -0 collapsed to keep the page light
A v4/gtk/gtkeventcontrollerkey.go +165 -0 collapsed to keep the page light
A v4/gtk/gtkeventcontrollerlegacy.go +70 -0 collapsed to keep the page light
A v4/gtk/gtkeventcontrollermotion.go +119 -0 collapsed to keep the page light
A v4/gtk/gtkeventcontrollerscroll.go +203 -0 collapsed to keep the page light
A v4/gtk/gtkexpander.go +507 -0 collapsed to keep the page light
A v4/gtk/gtkexpression.go +711 -0 collapsed to keep the page light
A v4/gtk/gtkfilechooser.go +532 -0 collapsed to keep the page light
A v4/gtk/gtkfilechooserdialog.go +820 -0 collapsed to keep the page light
A v4/gtk/gtkfilechoosernative.go +596 -0 collapsed to keep the page light
A v4/gtk/gtkfilechooserwidget.go +783 -0 collapsed to keep the page light
A v4/gtk/gtkfilefilter.go +244 -0 collapsed to keep the page light
A v4/gtk/gtkfilter.go +170 -0 collapsed to keep the page light
A v4/gtk/gtkfilterlistmodel.go +282 -0 collapsed to keep the page light
A v4/gtk/gtkfixed.go +309 -0 collapsed to keep the page light
A v4/gtk/gtkfixedlayout.go +129 -0 collapsed to keep the page light
A v4/gtk/gtkflattenlistmodel.go +200 -0 collapsed to keep the page light
A v4/gtk/gtkflowbox.go +1130 -0 collapsed to keep the page light
A v4/gtk/gtkfontbutton.go +565 -0 collapsed to keep the page light
A v4/gtk/gtkfontchooser.go +347 -0 collapsed to keep the page light
A v4/gtk/gtkfontchooserdialog.go +539 -0 collapsed to keep the page light
A v4/gtk/gtkfontchooserwidget.go +429 -0 collapsed to keep the page light
A v4/gtk/gtkframe.go +355 -0 collapsed to keep the page light
A v4/gtk/gtkgesture.go +506 -0 collapsed to keep the page light
A v4/gtk/gtkgestureclick.go +119 -0 collapsed to keep the page light
A v4/gtk/gtkgesturedrag.go +127 -0 collapsed to keep the page light
A v4/gtk/gtkgesturelongpress.go +118 -0 collapsed to keep the page light
A v4/gtk/gtkgesturepan.go +100 -0 collapsed to keep the page light
A v4/gtk/gtkgesturerotate.go +85 -0 collapsed to keep the page light
A v4/gtk/gtkgesturesingle.go +152 -0 collapsed to keep the page light
A v4/gtk/gtkgesturestylus.go +183 -0 collapsed to keep the page light
A v4/gtk/gtkgestureswipe.go +94 -0 collapsed to keep the page light
A v4/gtk/gtkgesturezoom.go +87 -0 collapsed to keep the page light
A v4/gtk/gtkglarea.go +592 -0 collapsed to keep the page light
A v4/gtk/gtkgrid.go +577 -0 collapsed to keep the page light
A v4/gtk/gtkgridlayout.go +302 -0 collapsed to keep the page light
A v4/gtk/gtkgridview.go +519 -0 collapsed to keep the page light
A v4/gtk/gtkheaderbar.go +407 -0 collapsed to keep the page light
A v4/gtk/gtkicontheme.go +622 -0 collapsed to keep the page light
A v4/gtk/gtkiconview.go +1373 -0 collapsed to keep the page light
A v4/gtk/gtkimage.go +618 -0 collapsed to keep the page light
A v4/gtk/gtkimcontext.go +384 -0 collapsed to keep the page light
A v4/gtk/gtkimcontextsimple.go +122 -0 collapsed to keep the page light
A v4/gtk/gtkimmulticontext.go +90 -0 collapsed to keep the page light
A v4/gtk/gtkinfobar.go +528 -0 collapsed to keep the page light
A v4/gtk/gtkinscription.go +469 -0 collapsed to keep the page light
A v4/gtk/gtklabel.go +1201 -0 collapsed to keep the page light
A v4/gtk/gtklayoutchild.go +87 -0 collapsed to keep the page light
A v4/gtk/gtklayoutmanager.go +191 -0 collapsed to keep the page light
A v4/gtk/gtklevelbar.go +494 -0 collapsed to keep the page light
A v4/gtk/gtklinkbutton.go +391 -0 collapsed to keep the page light
A v4/gtk/gtklistbase.go +275 -0 collapsed to keep the page light
A v4/gtk/gtklistbox.go +1290 -0 collapsed to keep the page light
A v4/gtk/gtklistitem.go +195 -0 collapsed to keep the page light
A v4/gtk/gtklistitemfactory.go +73 -0 collapsed to keep the page light
A v4/gtk/gtkliststore.go +955 -0 collapsed to keep the page light
A v4/gtk/gtklistview.go +560 -0 collapsed to keep the page light
A v4/gtk/gtklockbutton.go +347 -0 collapsed to keep the page light
A v4/gtk/gtkmain.go +148 -0 collapsed to keep the page light
A v4/gtk/gtkmaplistmodel.go +250 -0 collapsed to keep the page light
A v4/gtk/gtkmediacontrols.go +234 -0 collapsed to keep the page light
A v4/gtk/gtkmediafile.go +385 -0 collapsed to keep the page light
A v4/gtk/gtkmediastream.go +687 -0 collapsed to keep the page light
A v4/gtk/gtkmenubutton.go +607 -0 collapsed to keep the page light
A v4/gtk/gtkmessagedialog.go +526 -0 collapsed to keep the page light
A v4/gtk/gtkmountoperation.go +144 -0 collapsed to keep the page light
A v4/gtk/gtkmultifilter.go +459 -0 collapsed to keep the page light
A v4/gtk/gtkmultiselection.go +305 -0 collapsed to keep the page light
A v4/gtk/gtkmultisorter.go +193 -0 collapsed to keep the page light
A v4/gtk/gtknative.go +148 -0 collapsed to keep the page light
A v4/gtk/gtknativedialog.go +217 -0 collapsed to keep the page light
A v4/gtk/gtknoselection.go +308 -0 collapsed to keep the page light
A v4/gtk/gtknotebook.go +1060 -0 collapsed to keep the page light
A v4/gtk/gtknumericsorter.go +117 -0 collapsed to keep the page light
A v4/gtk/gtkorientable.go +62 -0 collapsed to keep the page light
A v4/gtk/gtkoverlay.go +354 -0 collapsed to keep the page light
A v4/gtk/gtkoverlaylayout.go +124 -0 collapsed to keep the page light
A v4/gtk/gtkpadcontroller.go +173 -0 collapsed to keep the page light
A v4/gtk/gtkpagesetup.go +412 -0 collapsed to keep the page light
A v4/gtk/gtkpagesetupunixdialog.go +377 -0 collapsed to keep the page light
A v4/gtk/gtkpaned.go +561 -0 collapsed to keep the page light
A v4/gtk/gtkpapersize.go +51 -0 collapsed to keep the page light
A v4/gtk/gtkpasswordentry.go +545 -0 collapsed to keep the page light
A v4/gtk/gtkpasswordentrybuffer.go +57 -0 collapsed to keep the page light
A v4/gtk/gtkpicture.go +569 -0 collapsed to keep the page light
A v4/gtk/gtkpopover.go +620 -0 collapsed to keep the page light
A v4/gtk/gtkpopovermenu.go +471 -0 collapsed to keep the page light
A v4/gtk/gtkpopovermenubar.go +282 -0 collapsed to keep the page light
A v4/gtk/gtkprintcontext.go +264 -0 collapsed to keep the page light
A v4/gtk/gtkprinter.go +399 -0 collapsed to keep the page light
A v4/gtk/gtkprintjob.go +429 -0 collapsed to keep the page light
A v4/gtk/gtkprintoperation.go +1049 -0 collapsed to keep the page light
A v4/gtk/gtkprintoperationpreview.go +86 -0 collapsed to keep the page light
A v4/gtk/gtkprintsettings.go +901 -0 collapsed to keep the page light
A v4/gtk/gtkprintunixdialog.go +579 -0 collapsed to keep the page light
A v4/gtk/gtkprogressbar.go +434 -0 collapsed to keep the page light
A v4/gtk/gtkrange.go +572 -0 collapsed to keep the page light
A v4/gtk/gtkrecentmanager.go +307 -0 collapsed to keep the page light
A v4/gtk/gtkrender.go +187 -0 collapsed to keep the page light
A v4/gtk/gtkrevealer.go +360 -0 collapsed to keep the page light
A v4/gtk/gtkroot.go +111 -0 collapsed to keep the page light
A v4/gtk/gtkscale.go +510 -0 collapsed to keep the page light
A v4/gtk/gtkscalebutton.go +401 -0 collapsed to keep the page light
A v4/gtk/gtkscrollable.go +185 -0 collapsed to keep the page light
A v4/gtk/gtkscrollbar.go +283 -0 collapsed to keep the page light
A v4/gtk/gtkscrolledwindow.go +814 -0 collapsed to keep the page light
A v4/gtk/gtksearchbar.go +373 -0 collapsed to keep the page light
A v4/gtk/gtksearchentry.go +649 -0 collapsed to keep the page light
A v4/gtk/gtkselectionfiltermodel.go +184 -0 collapsed to keep the page light
A v4/gtk/gtkselectionmodel.go +244 -0 collapsed to keep the page light
A v4/gtk/gtkseparator.go +225 -0 collapsed to keep the page light
A v4/gtk/gtksettings.go +75 -0 collapsed to keep the page light
A v4/gtk/gtkshortcut.go +166 -0 collapsed to keep the page light
A v4/gtk/gtkshortcutaction.go +368 -0 collapsed to keep the page light
A v4/gtk/gtkshortcutcontroller.go +307 -0 collapsed to keep the page light
A v4/gtk/gtkshortcutlabel.go +242 -0 collapsed to keep the page light
A v4/gtk/gtkshortcutmanager.go +39 -0 collapsed to keep the page light
A v4/gtk/gtkshortcutsgroup.go +188 -0 collapsed to keep the page light
A v4/gtk/gtkshortcutssection.go +209 -0 collapsed to keep the page light
A v4/gtk/gtkshortcutsshortcut.go +201 -0 collapsed to keep the page light
A v4/gtk/gtkshortcutswindow.go +354 -0 collapsed to keep the page light
A v4/gtk/gtkshortcuttrigger.go +437 -0 collapsed to keep the page light
A v4/gtk/gtkshow.go +55 -0 collapsed to keep the page light
A v4/gtk/gtksignallistitemfactory.go +167 -0 collapsed to keep the page light
A v4/gtk/gtksingleselection.go +411 -0 collapsed to keep the page light
A v4/gtk/gtksizegroup.go +194 -0 collapsed to keep the page light
A v4/gtk/gtksizerequest.go +41 -0 collapsed to keep the page light
A v4/gtk/gtkslicelistmodel.go +233 -0 collapsed to keep the page light
A v4/gtk/gtksnapshot.go +688 -0 collapsed to keep the page light
A v4/gtk/gtksorter.go +175 -0 collapsed to keep the page light
A v4/gtk/gtksortlistmodel.go +289 -0 collapsed to keep the page light
A v4/gtk/gtkspinbutton.go +1050 -0 collapsed to keep the page light
A v4/gtk/gtkspinner.go +251 -0 collapsed to keep the page light
A v4/gtk/gtkstack.go +948 -0 collapsed to keep the page light
A v4/gtk/gtkstacksidebar.go +243 -0 collapsed to keep the page light
A v4/gtk/gtkstackswitcher.go +272 -0 collapsed to keep the page light
A v4/gtk/gtkstatusbar.go +316 -0 collapsed to keep the page light
A v4/gtk/gtkstringfilter.go +180 -0 collapsed to keep the page light
A v4/gtk/gtkstringlist.go +318 -0 collapsed to keep the page light
A v4/gtk/gtkstringsorter.go +118 -0 collapsed to keep the page light
A v4/gtk/gtkstylecontext.go +353 -0 collapsed to keep the page light
A v4/gtk/gtkstyleprovider.go +27 -0 collapsed to keep the page light
A v4/gtk/gtkswitch.go +393 -0 collapsed to keep the page light
A v4/gtk/gtksymbolicpaintable.go +65 -0 collapsed to keep the page light
A v4/gtk/gtktestatcontext.go +98 -0 collapsed to keep the page light
A v4/gtk/gtktestutils.go +74 -0 collapsed to keep the page light
A v4/gtk/gtktext.go +1176 -0 collapsed to keep the page light
A v4/gtk/gtktextbuffer.go +1494 -0 collapsed to keep the page light
A v4/gtk/gtktextchild.go +111 -0 collapsed to keep the page light
A v4/gtk/gtktextiter.go +62 -0 collapsed to keep the page light
A v4/gtk/gtktextmark.go +177 -0 collapsed to keep the page light
A v4/gtk/gtktexttag.go +125 -0 collapsed to keep the page light
A v4/gtk/gtktexttagtable.go +201 -0 collapsed to keep the page light
A v4/gtk/gtktextview.go +1722 -0 collapsed to keep the page light
A v4/gtk/gtktogglebutton.go +473 -0 collapsed to keep the page light
A v4/gtk/gtktooltip.go +157 -0 collapsed to keep the page light
A v4/gtk/gtktreednd.go +167 -0 collapsed to keep the page light
A v4/gtk/gtktreeexpander.go +340 -0 collapsed to keep the page light
A v4/gtk/gtktreelistmodel.go +472 -0 collapsed to keep the page light
A v4/gtk/gtktreelistrowsorter.go +104 -0 collapsed to keep the page light
A v4/gtk/gtktreemodel.go +739 -0 collapsed to keep the page light
A v4/gtk/gtktreemodelfilter.go +662 -0 collapsed to keep the page light
A v4/gtk/gtktreemodelsort.go +697 -0 collapsed to keep the page light
A v4/gtk/gtktreeselection.go +323 -0 collapsed to keep the page light
A v4/gtk/gtktreesortable.go +140 -0 collapsed to keep the page light
A v4/gtk/gtktreestore.go +868 -0 collapsed to keep the page light
A v4/gtk/gtktreeview.go +1829 -0 collapsed to keep the page light
A v4/gtk/gtktreeviewcolumn.go +819 -0 collapsed to keep the page light
A v4/gtk/gtktypes.go +23 -0 collapsed to keep the page light
A v4/gtk/gtkversion.go +122 -0 collapsed to keep the page light
A v4/gtk/gtkvideo.go +420 -0 collapsed to keep the page light
A v4/gtk/gtkviewport.go +358 -0 collapsed to keep the page light
A v4/gtk/gtkvolumebutton.go +217 -0 collapsed to keep the page light
A v4/gtk/gtkwidget.go +3604 -0 collapsed to keep the page light
A v4/gtk/gtkwidgetpaintable.go +249 -0 collapsed to keep the page light
A v4/gtk/gtkwindow.go +1301 -0 collapsed to keep the page light
A v4/gtk/gtkwindowcontrols.go +318 -0 collapsed to keep the page light
A v4/gtk/gtkwindowgroup.go +105 -0 collapsed to keep the page light
A v4/gtk/gtkwindowhandle.go +241 -0 collapsed to keep the page light
A v4/gtk/main.go +61 -0 collapsed to keep the page light
A v4/pango/main.go +25 -0 collapsed to keep the page light
A v4/pango/pango-attributes.go +854 -0 collapsed to keep the page light
A v4/pango/pango-bidi-type.go +127 -0 collapsed to keep the page light
A v4/pango/pango-break.go +131 -0 collapsed to keep the page light
A v4/pango/pango-color.go +12 -0 collapsed to keep the page light
A v4/pango/pango-context.go +406 -0 collapsed to keep the page light
A v4/pango/pango-coverage.go +174 -0 collapsed to keep the page light
A v4/pango/pango-direction.go +42 -0 collapsed to keep the page light
A v4/pango/pango-font.go +688 -0 collapsed to keep the page light
A v4/pango/pango-fontmap.go +174 -0 collapsed to keep the page light
A v4/pango/pango-fontset.go +157 -0 collapsed to keep the page light
A v4/pango/pango-glyph-item.go +81 -0 collapsed to keep the page light
A v4/pango/pango-glyph.go +199 -0 collapsed to keep the page light
A v4/pango/pango-gravity.go +132 -0 collapsed to keep the page light
A v4/pango/pango-item.go +105 -0 collapsed to keep the page light
A v4/pango/pango-language.go +96 -0 collapsed to keep the page light
A v4/pango/pango-layout.go +1265 -0 collapsed to keep the page light
A v4/pango/pango-markup.go +88 -0 collapsed to keep the page light
A v4/pango/pango-matrix.go +25 -0 collapsed to keep the page light
A v4/pango/pango-renderer.go +362 -0 collapsed to keep the page light
A v4/pango/pango-script.go +332 -0 collapsed to keep the page light
A v4/pango/pango-tabs.go +59 -0 collapsed to keep the page light
A v4/pango/pango-types.go +92 -0 collapsed to keep the page light
A v4/pango/pango-utils.go +304 -0 collapsed to keep the page light
A v4/pangocairo/pangocairo.go +543 -0 collapsed to keep the page light

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 1

Tags 102

↑↓ moveenter openesc close