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 large diff (13375 lines changed): collapsed
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
@@ -0,0 +1,22709 @@
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="HarfBuzz" version="0.0"/>
11+ <include name="cairo" version="1.0"/>
12+ <package name="pango"/>
13+ <c:include name="pango/pango.h"/>
14+ <namespace name="Pango"
15+ version="1.0"
16+ shared-library="libpango-1.0.so.0"
17+ c:identifier-prefixes="Pango"
18+ c:symbol-prefixes="pango">
19+ <alias name="Glyph" c:type="PangoGlyph">
20+ <doc xml:space="preserve"
21+ filename="../pango/pango-types.h"
22+ line="49">A `PangoGlyph` represents a single glyph in the output form of a string.</doc>
23+ <source-position filename="../pango/pango-types.h" line="54"/>
24+ <type name="guint32" c:type="guint32"/>
25+ </alias>
26+ <alias name="GlyphUnit" c:type="PangoGlyphUnit">
27+ <doc xml:space="preserve"
28+ filename="../pango/pango-glyph.h"
29+ line="37">The `PangoGlyphUnit` type is used to store dimensions within
30+Pango.
31+
32+Dimensions are stored in 1/PANGO_SCALE of a device unit.
33+(A device unit might be a pixel for screen display, or
34+a point on a printer.) PANGO_SCALE is currently 1024, and
35+may change in the future (unlikely though), but you should not
36+depend on its exact value.
37+
38+The PANGO_PIXELS() macro can be used to convert from glyph units
39+into device units with correct rounding.</doc>
40+ <source-position filename="../pango/pango-glyph.h" line="52"/>
41+ <type name="gint32" c:type="gint32"/>
42+ </alias>
43+ <alias name="LayoutRun" c:type="PangoLayoutRun">
44+ <doc xml:space="preserve"
45+ filename="../pango/pango-layout.h"
46+ line="36">A `PangoLayoutRun` represents a single run within a `PangoLayoutLine`.
47+
48+It is simply an alternate name for [struct@Pango.GlyphItem].
49+See the [struct@Pango.GlyphItem] docs for details on the fields.</doc>
50+ <source-position filename="../pango/pango-layout.h" line="44"/>
51+ <type name="GlyphItem" c:type="PangoGlyphItem"/>
52+ </alias>
53+ <constant name="ANALYSIS_FLAG_CENTERED_BASELINE"
54+ value="1"
55+ c:type="PANGO_ANALYSIS_FLAG_CENTERED_BASELINE"
56+ version="1.16">
57+ <doc xml:space="preserve"
58+ filename="../pango/pango-item.h"
59+ line="33">Whether the segment should be shifted to center around the baseline.
60+
61+This is mainly used in vertical writing directions.</doc>
62+ <source-position filename="../pango/pango-item.h" line="42"/>
63+ <type name="gint" c:type="gint"/>
64+ </constant>
65+ <constant name="ANALYSIS_FLAG_IS_ELLIPSIS"
66+ value="2"
67+ c:type="PANGO_ANALYSIS_FLAG_IS_ELLIPSIS"
68+ version="1.36.7">
69+ <doc xml:space="preserve"
70+ filename="../pango/pango-item.h"
71+ line="44">Whether this run holds ellipsized text.</doc>
72+ <source-position filename="../pango/pango-item.h" line="51"/>
73+ <type name="gint" c:type="gint"/>
74+ </constant>
75+ <constant name="ANALYSIS_FLAG_NEED_HYPHEN"
76+ value="4"
77+ c:type="PANGO_ANALYSIS_FLAG_NEED_HYPHEN"
78+ version="1.44">
79+ <doc xml:space="preserve"
80+ filename="../pango/pango-item.h"
81+ line="53">Whether to add a hyphen at the end of the run during shaping.</doc>
82+ <source-position filename="../pango/pango-item.h" line="60"/>
83+ <type name="gint" c:type="gint"/>
84+ </constant>
85+ <function-macro name="ASCENT"
86+ c:identifier="PANGO_ASCENT"
87+ introspectable="0">
88+ <doc xml:space="preserve"
89+ filename="../pango/pango-types.h"
90+ line="179">Extracts the *ascent* from a `PangoRectangle`
91+representing glyph extents.
92+
93+The ascent is the distance from the baseline to the
94+highest point of the character. This is positive if the
95+glyph ascends above the baseline.</doc>
96+ <source-position filename="../pango/pango-types.h" line="225"/>
97+ <parameters>
98+ <parameter name="rect">
99+ <doc xml:space="preserve"
100+ filename="../pango/pango-types.h"
101+ line="181">a `PangoRectangle`</doc>
102+ </parameter>
103+ </parameters>
104+ </function-macro>
105+ <constant name="ATTR_INDEX_FROM_TEXT_BEGINNING"
106+ value="0"
107+ c:type="PANGO_ATTR_INDEX_FROM_TEXT_BEGINNING"
108+ version="1.24">
109+ <doc xml:space="preserve"
110+ filename="../pango/pango-attributes.h"
111+ line="270">Value for @start_index in `PangoAttribute` that indicates
112+the beginning of the text.</doc>
113+ <source-position filename="../pango/pango-attributes.h" line="278"/>
114+ <type name="guint" c:type="guint"/>
115+ </constant>
116+ <constant name="ATTR_INDEX_TO_TEXT_END"
117+ value="4294967295"
118+ c:type="PANGO_ATTR_INDEX_TO_TEXT_END"
119+ version="1.24">
120+ <doc xml:space="preserve"
121+ filename="../pango/pango-attributes.h"
122+ line="280">Value for @end_index in `PangoAttribute` that indicates
123+the end of the text.</doc>
124+ <source-position filename="../pango/pango-attributes.h" line="288"/>
125+ <type name="guint" c:type="guint"/>
126+ </constant>
127+ <enumeration name="Alignment"
128+ glib:type-name="PangoAlignment"
129+ glib:get-type="pango_alignment_get_type"
130+ c:type="PangoAlignment">
131+ <doc xml:space="preserve"
132+ filename="../pango/pango-layout.h"
133+ line="46">`PangoAlignment` describes how to align the lines of a `PangoLayout`
134+within the available space.
135+
136+If the `PangoLayout` is set to justify using [method@Pango.Layout.set_justify],
137+this only affects partial lines.
138+
139+See [method@Pango.Layout.set_auto_dir] for how text direction affects
140+the interpretation of `PangoAlignment` values.</doc>
141+ <member name="left"
142+ value="0"
143+ c:identifier="PANGO_ALIGN_LEFT"
144+ glib:nick="left"
145+ glib:name="PANGO_ALIGN_LEFT">
146+ <doc xml:space="preserve"
147+ filename="../pango/pango-layout.h"
148+ line="48">Put all available space on the right</doc>
149+ </member>
150+ <member name="center"
151+ value="1"
152+ c:identifier="PANGO_ALIGN_CENTER"
153+ glib:nick="center"
154+ glib:name="PANGO_ALIGN_CENTER">
155+ <doc xml:space="preserve"
156+ filename="../pango/pango-layout.h"
157+ line="49">Center the line within the available space</doc>
158+ </member>
159+ <member name="right"
160+ value="2"
161+ c:identifier="PANGO_ALIGN_RIGHT"
162+ glib:nick="right"
163+ glib:name="PANGO_ALIGN_RIGHT">
164+ <doc xml:space="preserve"
165+ filename="../pango/pango-layout.h"
166+ line="50">Put all available space on the left</doc>
167+ </member>
168+ </enumeration>
169+ <record name="Analysis" c:type="PangoAnalysis">
170+ <doc xml:space="preserve"
171+ filename="../pango/pango-item.h"
172+ line="62">The `PangoAnalysis` structure stores information about
173+the properties of a segment of text.</doc>
174+ <source-position filename="../pango/pango-item.h" line="96"/>
175+ <field name="shape_engine" writable="1">
176+ <doc xml:space="preserve"
177+ filename="../pango/pango-item.h"
178+ line="64">unused, reserved</doc>
179+ <type name="gpointer" c:type="gpointer"/>
180+ </field>
181+ <field name="lang_engine" writable="1">
182+ <doc xml:space="preserve"
183+ filename="../pango/pango-item.h"
184+ line="65">unused, reserved</doc>
185+ <type name="gpointer" c:type="gpointer"/>
186+ </field>
187+ <field name="font" writable="1">
188+ <doc xml:space="preserve"
189+ filename="../pango/pango-item.h"
190+ line="66">the font for this segment.</doc>
191+ <type name="Font" c:type="PangoFont*"/>
192+ </field>
193+ <field name="level" writable="1">
194+ <doc xml:space="preserve"
195+ filename="../pango/pango-item.h"
196+ line="67">the bidirectional level for this segment.</doc>
197+ <type name="guint8" c:type="guint8"/>
198+ </field>
199+ <field name="gravity" writable="1">
200+ <doc xml:space="preserve"
201+ filename="../pango/pango-item.h"
202+ line="68">the glyph orientation for this segment (A `PangoGravity`).</doc>
203+ <type name="guint8" c:type="guint8"/>
204+ </field>
205+ <field name="flags" writable="1">
206+ <doc xml:space="preserve"
207+ filename="../pango/pango-item.h"
208+ line="69">boolean flags for this segment (Since: 1.16).</doc>
209+ <type name="guint8" c:type="guint8"/>
210+ </field>
211+ <field name="script" writable="1">
212+ <doc xml:space="preserve"
213+ filename="../pango/pango-item.h"
214+ line="70">the detected script for this segment (A `PangoScript`) (Since: 1.18).</doc>
215+ <type name="guint8" c:type="guint8"/>
216+ </field>
217+ <field name="language" writable="1">
218+ <doc xml:space="preserve"
219+ filename="../pango/pango-item.h"
220+ line="71">the detected language for this segment.</doc>
221+ <type name="Language" c:type="PangoLanguage*"/>
222+ </field>
223+ <field name="extra_attrs" writable="1">
224+ <doc xml:space="preserve"
225+ filename="../pango/pango-item.h"
226+ line="72">extra attributes for this segment.</doc>
227+ <type name="GLib.SList" c:type="GSList*">
228+ <type name="gpointer" c:type="gpointer"/>
229+ </type>
230+ </field>
231+ </record>
232+ <record name="AttrClass" c:type="PangoAttrClass">
233+ <doc xml:space="preserve"
234+ filename="../pango/pango-attributes.h"
235+ line="336">The `PangoAttrClass` structure stores the type and operations for
236+a particular type of attribute.
237+
238+The functions in this structure should not be called directly. Instead,
239+one should use the wrapper functions provided for `PangoAttribute`.</doc>
240+ <source-position filename="../pango/pango-attributes.h" line="359"/>
241+ <field name="type" writable="1">
242+ <doc xml:space="preserve"
243+ filename="../pango/pango-attributes.h"
244+ line="338">the type ID for this attribute</doc>
245+ <type name="AttrType" c:type="PangoAttrType"/>
246+ </field>
247+ <field name="copy">
248+ <callback name="copy">
249+ <source-position filename="../pango/pango-attributes.h" line="356"/>
250+ <return-value transfer-ownership="full">
251+ <type name="Attribute" c:type="PangoAttribute*"/>
252+ </return-value>
253+ <parameters>
254+ <parameter name="attr" transfer-ownership="none">
255+ <type name="Attribute" c:type="const PangoAttribute*"/>
256+ </parameter>
257+ </parameters>
258+ </callback>
259+ </field>
260+ <field name="destroy">
261+ <callback name="destroy">
262+ <source-position filename="../pango/pango-attributes.h" line="357"/>
263+ <return-value transfer-ownership="none">
264+ <type name="none" c:type="void"/>
265+ </return-value>
266+ <parameters>
267+ <parameter name="attr" transfer-ownership="none">
268+ <type name="Attribute" c:type="PangoAttribute*"/>
269+ </parameter>
270+ </parameters>
271+ </callback>
272+ </field>
273+ <field name="equal">
274+ <callback name="equal">
275+ <source-position filename="../pango/pango-attributes.h" line="358"/>
276+ <return-value transfer-ownership="none">
277+ <type name="gboolean" c:type="gboolean"/>
278+ </return-value>
279+ <parameters>
280+ <parameter name="attr1" transfer-ownership="none">
281+ <type name="Attribute" c:type="const PangoAttribute*"/>
282+ </parameter>
283+ <parameter name="attr2" transfer-ownership="none">
284+ <type name="Attribute" c:type="const PangoAttribute*"/>
285+ </parameter>
286+ </parameters>
287+ </callback>
288+ </field>
289+ </record>
290+ <record name="AttrColor" c:type="PangoAttrColor">
291+ <doc xml:space="preserve"
292+ filename="../pango/pango-attributes.h"
293+ line="413">The `PangoAttrColor` structure is used to represent attributes that
294+are colors.</doc>
295+ <source-position filename="../pango/pango-attributes.h" line="425"/>
296+ <field name="attr" writable="1">
297+ <doc xml:space="preserve"
298+ filename="../pango/pango-attributes.h"
299+ line="415">the common portion of the attribute</doc>
300+ <type name="Attribute" c:type="PangoAttribute"/>
301+ </field>
302+ <field name="color" writable="1">
303+ <doc xml:space="preserve"
304+ filename="../pango/pango-attributes.h"
305+ line="416">the `PangoColor` which is the value of the attribute</doc>
306+ <type name="Color" c:type="PangoColor"/>
307+ </field>
308+ </record>
309+ <callback name="AttrDataCopyFunc" c:type="PangoAttrDataCopyFunc">
310+ <doc xml:space="preserve"
311+ filename="../pango/pango-attributes.h"
312+ line="326">Type of a function that can duplicate user data for an attribute.</doc>
313+ <source-position filename="../pango/pango-attributes.h" line="334"/>
314+ <return-value transfer-ownership="none" nullable="1">
315+ <doc xml:space="preserve"
316+ filename="../pango/pango-attributes.h"
317+ line="332">new copy of @user_data.</doc>
318+ <type name="gpointer" c:type="gpointer"/>
319+ </return-value>
320+ <parameters>
321+ <parameter name="user_data"
322+ transfer-ownership="none"
323+ nullable="1"
324+ allow-none="1"
325+ closure="0">
326+ <doc xml:space="preserve"
327+ filename="../pango/pango-attributes.h"
328+ line="328">user data to copy</doc>
329+ <type name="gpointer" c:type="gconstpointer"/>
330+ </parameter>
331+ </parameters>
332+ </callback>
333+ <callback name="AttrFilterFunc" c:type="PangoAttrFilterFunc">
334+ <doc xml:space="preserve"
335+ filename="../pango/pango-attributes.h"
336+ line="313">Type of a function filtering a list of attributes.</doc>
337+ <source-position filename="../pango/pango-attributes.h" line="323"/>
338+ <return-value transfer-ownership="none">
339+ <doc xml:space="preserve"
340+ filename="../pango/pango-attributes.h"
341+ line="320">%TRUE if the attribute should be selected for
342+ filtering, %FALSE otherwise.</doc>
343+ <type name="gboolean" c:type="gboolean"/>
344+ </return-value>
345+ <parameters>
346+ <parameter name="attribute" transfer-ownership="none">
347+ <doc xml:space="preserve"
348+ filename="../pango/pango-attributes.h"
349+ line="315">a Pango attribute</doc>
350+ <type name="Attribute" c:type="PangoAttribute*"/>
351+ </parameter>
352+ <parameter name="user_data"
353+ transfer-ownership="none"
354+ nullable="1"
355+ allow-none="1"
356+ closure="1">
357+ <doc xml:space="preserve"
358+ filename="../pango/pango-attributes.h"
359+ line="316">user data passed to the function</doc>
360+ <type name="gpointer" c:type="gpointer"/>
361+ </parameter>
362+ </parameters>
363+ </callback>
364+ <record name="AttrFloat" c:type="PangoAttrFloat">
365+ <doc xml:space="preserve"
366+ filename="../pango/pango-attributes.h"
367+ line="400">The `PangoAttrFloat` structure is used to represent attributes with
368+a float or double value.</doc>
369+ <source-position filename="../pango/pango-attributes.h" line="412"/>
370+ <field name="attr" writable="1">
371+ <doc xml:space="preserve"
372+ filename="../pango/pango-attributes.h"
373+ line="402">the common portion of the attribute</doc>
374+ <type name="Attribute" c:type="PangoAttribute"/>
375+ </field>
376+ <field name="value" writable="1">
377+ <doc xml:space="preserve"
378+ filename="../pango/pango-attributes.h"
379+ line="403">the value of the attribute</doc>
380+ <type name="gdouble" c:type="double"/>
381+ </field>
382+ </record>
383+ <record name="AttrFontDesc" c:type="PangoAttrFontDesc">
384+ <doc xml:space="preserve"
385+ filename="../pango/pango-attributes.h"
386+ line="470">The `PangoAttrFontDesc` structure is used to store an attribute that
387+sets all aspects of the font description at once.</doc>
388+ <source-position filename="../pango/pango-attributes.h" line="482"/>
389+ <field name="attr" writable="1">
390+ <doc xml:space="preserve"
391+ filename="../pango/pango-attributes.h"
392+ line="472">the common portion of the attribute</doc>
393+ <type name="Attribute" c:type="PangoAttribute"/>
394+ </field>
395+ <field name="desc" writable="1">
396+ <doc xml:space="preserve"
397+ filename="../pango/pango-attributes.h"
398+ line="473">the font description which is the value of this attribute</doc>
399+ <type name="FontDescription" c:type="PangoFontDescription*"/>
400+ </field>
401+ <function name="new" c:identifier="pango_attr_font_desc_new">
402+ <doc xml:space="preserve"
403+ filename="../pango/pango-attributes.c"
404+ line="762">Create a new font description attribute.
405+
406+This attribute allows setting family, style, weight, variant,
407+stretch, and size simultaneously.</doc>
408+ <source-position filename="../pango/pango-attributes.h" line="543"/>
409+ <return-value transfer-ownership="full">
410+ <doc xml:space="preserve"
411+ filename="../pango/pango-attributes.c"
412+ line="771">the newly allocated
413+ `PangoAttribute`, which should be freed with
414+ [method@Pango.Attribute.destroy]</doc>
415+ <type name="Attribute" c:type="PangoAttribute*"/>
416+ </return-value>
417+ <parameters>
418+ <parameter name="desc" transfer-ownership="none">
419+ <doc xml:space="preserve"
420+ filename="../pango/pango-attributes.c"
421+ line="764">the font description</doc>
422+ <type name="FontDescription" c:type="const PangoFontDescription*"/>
423+ </parameter>
424+ </parameters>
425+ </function>
426+ </record>
427+ <record name="AttrFontFeatures"
428+ c:type="PangoAttrFontFeatures"
429+ version="1.38">
430+ <doc xml:space="preserve"
431+ filename="../pango/pango-attributes.h"
432+ line="484">The `PangoAttrFontFeatures` structure is used to represent OpenType
433+font features as an attribute.</doc>
434+ <source-position filename="../pango/pango-attributes.h" line="498"/>
435+ <field name="attr" writable="1">
436+ <doc xml:space="preserve"
437+ filename="../pango/pango-attributes.h"
438+ line="486">the common portion of the attribute</doc>
439+ <type name="Attribute" c:type="PangoAttribute"/>
440+ </field>
441+ <field name="features" writable="1">
442+ <doc xml:space="preserve"
443+ filename="../pango/pango-attributes.h"
444+ line="487">the featues, as a string in CSS syntax</doc>
445+ <type name="utf8" c:type="gchar*"/>
446+ </field>
447+ <function name="new"
448+ c:identifier="pango_attr_font_features_new"
449+ version="1.38">
450+ <doc xml:space="preserve"
451+ filename="../pango/pango-attributes.c"
452+ line="1206">Create a new font features tag attribute.
453+
454+You can use this attribute to select OpenType font features like small-caps,
455+alternative glyphs, ligatures, etc. for fonts that support them.</doc>
456+ <source-position filename="../pango/pango-attributes.h" line="583"/>
457+ <return-value transfer-ownership="full">
458+ <doc xml:space="preserve"
459+ filename="../pango/pango-attributes.c"
460+ line="1216">the newly allocated
461+ `PangoAttribute`, which should be freed with
462+ [method@Pango.Attribute.destroy]</doc>
463+ <type name="Attribute" c:type="PangoAttribute*"/>
464+ </return-value>
465+ <parameters>
466+ <parameter name="features" transfer-ownership="none">
467+ <doc xml:space="preserve"
468+ filename="../pango/pango-attributes.c"
469+ line="1208">a string with OpenType font features, with the syntax of the [CSS
470+font-feature-settings property](https://www.w3.org/TR/css-fonts-4/#font-rend-desc)</doc>
471+ <type name="utf8" c:type="const char*"/>
472+ </parameter>
473+ </parameters>
474+ </function>
475+ </record>
476+ <record name="AttrInt" c:type="PangoAttrInt">
477+ <doc xml:space="preserve"
478+ filename="../pango/pango-attributes.h"
479+ line="387">The `PangoAttrInt` structure is used to represent attributes with
480+an integer or enumeration value.</doc>
481+ <source-position filename="../pango/pango-attributes.h" line="399"/>
482+ <field name="attr" writable="1">
483+ <doc xml:space="preserve"
484+ filename="../pango/pango-attributes.h"
485+ line="389">the common portion of the attribute</doc>
486+ <type name="Attribute" c:type="PangoAttribute"/>
487+ </field>
488+ <field name="value" writable="1">
489+ <doc xml:space="preserve"
490+ filename="../pango/pango-attributes.h"
491+ line="390">the value of the attribute</doc>
492+ <type name="gint" c:type="int"/>
493+ </field>
494+ </record>
495+ <record name="AttrIterator"
496+ c:type="PangoAttrIterator"
497+ glib:type-name="PangoAttrIterator"
498+ glib:get-type="pango_attr_iterator_get_type"
499+ c:symbol-prefix="attr_iterator">
500+ <doc xml:space="preserve"
501+ filename="../pango/pango-attributes.h"
502+ line="639">A `PangoAttrIterator` is used to iterate through a `PangoAttrList`.
503+
504+A new iterator is created with [method@Pango.AttrList.get_iterator].
505+Once the iterator is created, it can be advanced through the style
506+changes in the text using [method@Pango.AttrIterator.next]. At each
507+style change, the range of the current style segment and the attributes
508+currently in effect can be queried.</doc>
509+ <source-position filename="../pango/pango-attributes.h" line="635"/>
510+ <method name="copy" c:identifier="pango_attr_iterator_copy">
511+ <doc xml:space="preserve"
512+ filename="../pango/pango-attributes.c"
513+ line="3215">Copy a `PangoAttrIterator`.</doc>
514+ <source-position filename="../pango/pango-attributes.h" line="728"/>
515+ <return-value transfer-ownership="full">
516+ <doc xml:space="preserve"
517+ filename="../pango/pango-attributes.c"
518+ line="3221">the newly allocated
519+ `PangoAttrIterator`, which should be freed with
520+ [method@Pango.AttrIterator.destroy]</doc>
521+ <type name="AttrIterator" c:type="PangoAttrIterator*"/>
522+ </return-value>
523+ <parameters>
524+ <instance-parameter name="iterator" transfer-ownership="none">
525+ <doc xml:space="preserve"
526+ filename="../pango/pango-attributes.c"
527+ line="3217">a `PangoAttrIterator`</doc>
528+ <type name="AttrIterator" c:type="PangoAttrIterator*"/>
529+ </instance-parameter>
530+ </parameters>
531+ </method>
532+ <method name="destroy" c:identifier="pango_attr_iterator_destroy">
533+ <doc xml:space="preserve"
534+ filename="../pango/pango-attributes.c"
535+ line="3251">Destroy a `PangoAttrIterator` and free all associated memory.</doc>
536+ <source-position filename="../pango/pango-attributes.h" line="730"/>
537+ <return-value transfer-ownership="none">
538+ <type name="none" c:type="void"/>
539+ </return-value>
540+ <parameters>
541+ <instance-parameter name="iterator" transfer-ownership="none">
542+ <doc xml:space="preserve"
543+ filename="../pango/pango-attributes.c"
544+ line="3253">a `PangoAttrIterator`</doc>
545+ <type name="AttrIterator" c:type="PangoAttrIterator*"/>
546+ </instance-parameter>
547+ </parameters>
548+ </method>
549+ <method name="get" c:identifier="pango_attr_iterator_get">
550+ <doc xml:space="preserve"
551+ filename="../pango/pango-attributes.c"
552+ line="3266">Find the current attribute of a particular type
553+at the iterator location.
554+
555+When multiple attributes of the same type overlap,
556+the attribute whose range starts closest to the
557+current location is used.</doc>
558+ <source-position filename="../pango/pango-attributes.h" line="732"/>
559+ <return-value transfer-ownership="none" nullable="1">
560+ <doc xml:space="preserve"
561+ filename="../pango/pango-attributes.c"
562+ line="3278">the current
563+ attribute of the given type, or %NULL if no attribute
564+ of that type applies to the current location.</doc>
565+ <type name="Attribute" c:type="PangoAttribute*"/>
566+ </return-value>
567+ <parameters>
568+ <instance-parameter name="iterator" transfer-ownership="none">
569+ <doc xml:space="preserve"
570+ filename="../pango/pango-attributes.c"
571+ line="3268">a `PangoAttrIterator`</doc>
572+ <type name="AttrIterator" c:type="PangoAttrIterator*"/>
573+ </instance-parameter>
574+ <parameter name="type" transfer-ownership="none">
575+ <doc xml:space="preserve"
576+ filename="../pango/pango-attributes.c"
577+ line="3269">the type of attribute to find</doc>
578+ <type name="AttrType" c:type="PangoAttrType"/>
579+ </parameter>
580+ </parameters>
581+ </method>
582+ <method name="get_attrs"
583+ c:identifier="pango_attr_iterator_get_attrs"
584+ version="1.2">
585+ <doc xml:space="preserve"
586+ filename="../pango/pango-attributes.c"
587+ line="3480">Gets a list of all attributes at the current position of the
588+iterator.</doc>
589+ <source-position filename="../pango/pango-attributes.h" line="740"/>
590+ <return-value transfer-ownership="full">
591+ <doc xml:space="preserve"
592+ filename="../pango/pango-attributes.c"
593+ line="3487">
594+ a list of all attributes for the current range. To free
595+ this value, call [method@Pango.Attribute.destroy] on each
596+ value and g_slist_free() on the list.</doc>
597+ <type name="GLib.SList" c:type="GSList*">
598+ <type name="Attribute"/>
599+ </type>
600+ </return-value>
601+ <parameters>
602+ <instance-parameter name="iterator" transfer-ownership="none">
603+ <doc xml:space="preserve"
604+ filename="../pango/pango-attributes.c"
605+ line="3482">a `PangoAttrIterator`</doc>
606+ <type name="AttrIterator" c:type="PangoAttrIterator*"/>
607+ </instance-parameter>
608+ </parameters>
609+ </method>
610+ <method name="get_font" c:identifier="pango_attr_iterator_get_font">
611+ <doc xml:space="preserve"
612+ filename="../pango/pango-attributes.c"
613+ line="3304">Get the font and other attributes at the current
614+iterator position.</doc>
615+ <source-position filename="../pango/pango-attributes.h" line="735"/>
616+ <return-value transfer-ownership="none">
617+ <type name="none" c:type="void"/>
618+ </return-value>
619+ <parameters>
620+ <instance-parameter name="iterator" transfer-ownership="none">
621+ <doc xml:space="preserve"
622+ filename="../pango/pango-attributes.c"
623+ line="3306">a `PangoAttrIterator`</doc>
624+ <type name="AttrIterator" c:type="PangoAttrIterator*"/>
625+ </instance-parameter>
626+ <parameter name="desc" transfer-ownership="none">
627+ <doc xml:space="preserve"
628+ filename="../pango/pango-attributes.c"
629+ line="3307">a `PangoFontDescription` to fill in with the current
630+ values. The family name in this structure will be set using
631+ [method@Pango.FontDescription.set_family_static] using
632+ values from an attribute in the `PangoAttrList` associated
633+ with the iterator, so if you plan to keep it around, you
634+ must call:
635+ `pango_font_description_set_family (desc, pango_font_description_get_family (desc))`.</doc>
636+ <type name="FontDescription" c:type="PangoFontDescription*"/>
637+ </parameter>
638+ <parameter name="language"
639+ direction="out"
640+ caller-allocates="0"
641+ transfer-ownership="full"
642+ optional="1"
643+ allow-none="1">
644+ <doc xml:space="preserve"
645+ filename="../pango/pango-attributes.c"
646+ line="3314">location to store language tag
647+ for item, or %NULL if none is found.</doc>
648+ <type name="Language" c:type="PangoLanguage**"/>
649+ </parameter>
650+ <parameter name="extra_attrs"
651+ direction="out"
652+ caller-allocates="0"
653+ transfer-ownership="full"
654+ optional="1"
655+ allow-none="1">
656+ <doc xml:space="preserve"
657+ filename="../pango/pango-attributes.c"
658+ line="3316">
659+ location in which to store a list of non-font attributes
660+ at the the current position; only the highest priority
661+ value of each attribute will be added to this list. In
662+ order to free this value, you must call
663+ [method@Pango.Attribute.destroy] on each member.</doc>
664+ <type name="GLib.SList" c:type="GSList**">
665+ <type name="Attribute"/>
666+ </type>
667+ </parameter>
668+ </parameters>
669+ </method>
670+ <method name="next" c:identifier="pango_attr_iterator_next">
671+ <doc xml:space="preserve"
672+ filename="../pango/pango-attributes.c"
673+ line="3144">Advance the iterator until the next change of style.</doc>
674+ <source-position filename="../pango/pango-attributes.h" line="726"/>
675+ <return-value transfer-ownership="none">
676+ <doc xml:space="preserve"
677+ filename="../pango/pango-attributes.c"
678+ line="3150">%FALSE if the iterator is at the end
679+ of the list, otherwise %TRUE</doc>
680+ <type name="gboolean" c:type="gboolean"/>
681+ </return-value>
682+ <parameters>
683+ <instance-parameter name="iterator" transfer-ownership="none">
684+ <doc xml:space="preserve"
685+ filename="../pango/pango-attributes.c"
686+ line="3146">a `PangoAttrIterator`</doc>
687+ <type name="AttrIterator" c:type="PangoAttrIterator*"/>
688+ </instance-parameter>
689+ </parameters>
690+ </method>
691+ <method name="range" c:identifier="pango_attr_iterator_range">
692+ <doc xml:space="preserve"
693+ filename="../pango/pango-attributes.c"
694+ line="3118">Get the range of the current segment.
695+
696+Note that the stored return values are signed, not unsigned
697+like the values in `PangoAttribute`. To deal with this API
698+oversight, stored return values that wouldn't fit into
699+a signed integer are clamped to %G_MAXINT.</doc>
700+ <source-position filename="../pango/pango-attributes.h" line="722"/>
701+ <return-value transfer-ownership="none">
702+ <type name="none" c:type="void"/>
703+ </return-value>
704+ <parameters>
705+ <instance-parameter name="iterator" transfer-ownership="none">
706+ <doc xml:space="preserve"
707+ filename="../pango/pango-attributes.c"
708+ line="3120">a PangoAttrIterator</doc>
709+ <type name="AttrIterator" c:type="PangoAttrIterator*"/>
710+ </instance-parameter>
711+ <parameter name="start"
712+ direction="out"
713+ caller-allocates="0"
714+ transfer-ownership="full">
715+ <doc xml:space="preserve"
716+ filename="../pango/pango-attributes.c"
717+ line="3121">location to store the start of the range</doc>
718+ <type name="gint" c:type="int*"/>
719+ </parameter>
720+ <parameter name="end"
721+ direction="out"
722+ caller-allocates="0"
723+ transfer-ownership="full">
724+ <doc xml:space="preserve"
725+ filename="../pango/pango-attributes.c"
726+ line="3122">location to store the end of the range</doc>
727+ <type name="gint" c:type="int*"/>
728+ </parameter>
729+ </parameters>
730+ </method>
731+ </record>
732+ <record name="AttrLanguage" c:type="PangoAttrLanguage">
733+ <doc xml:space="preserve"
734+ filename="../pango/pango-attributes.h"
735+ line="374">The `PangoAttrLanguage` structure is used to represent attributes that
736+are languages.</doc>
737+ <source-position filename="../pango/pango-attributes.h" line="386"/>
738+ <field name="attr" writable="1">
739+ <doc xml:space="preserve"
740+ filename="../pango/pango-attributes.h"
741+ line="376">the common portion of the attribute</doc>
742+ <type name="Attribute" c:type="PangoAttribute"/>
743+ </field>
744+ <field name="value" writable="1">
745+ <doc xml:space="preserve"
746+ filename="../pango/pango-attributes.h"
747+ line="377">the `PangoLanguage` which is the value of the attribute</doc>
748+ <type name="Language" c:type="PangoLanguage*"/>
749+ </field>
750+ <function name="new" c:identifier="pango_attr_language_new">
751+ <doc xml:space="preserve"
752+ filename="../pango/pango-attributes.c"
753+ line="554">Create a new language tag attribute.</doc>
754+ <source-position filename="../pango/pango-attributes.h" line="519"/>
755+ <return-value transfer-ownership="full">
756+ <doc xml:space="preserve"
757+ filename="../pango/pango-attributes.c"
758+ line="560">the newly allocated
759+ `PangoAttribute`, which should be freed with
760+ [method@Pango.Attribute.destroy]</doc>
761+ <type name="Attribute" c:type="PangoAttribute*"/>
762+ </return-value>
763+ <parameters>
764+ <parameter name="language" transfer-ownership="none">
765+ <doc xml:space="preserve"
766+ filename="../pango/pango-attributes.c"
767+ line="556">language tag</doc>
768+ <type name="Language" c:type="PangoLanguage*"/>
769+ </parameter>
770+ </parameters>
771+ </function>
772+ </record>
773+ <record name="AttrList"
774+ c:type="PangoAttrList"
775+ glib:type-name="PangoAttrList"
776+ glib:get-type="pango_attr_list_get_type"
777+ c:symbol-prefix="attr_list">
778+ <doc xml:space="preserve"
779+ filename="../pango/pango-attributes.h"
780+ line="651">A `PangoAttrList` represents a list of attributes that apply to a section
781+of text.
782+
783+The attributes in a `PangoAttrList` are, in general, allowed to overlap in
784+an arbitrary fashion. However, if the attributes are manipulated only through
785+[method@Pango.AttrList.change], the overlap between properties will meet
786+stricter criteria.
787+
788+Since the `PangoAttrList` structure is stored as a linear list, it is not
789+suitable for storing attributes for large amounts of text. In general, you
790+should not use a single `PangoAttrList` for more than one paragraph of text.</doc>
791+ <source-position filename="../pango/pango-attributes.h" line="634"/>
792+ <constructor name="new" c:identifier="pango_attr_list_new">
793+ <doc xml:space="preserve"
794+ filename="../pango/pango-attributes.c"
795+ line="1838">Create a new empty attribute list with a reference
796+count of one.</doc>
797+ <source-position filename="../pango/pango-attributes.h" line="671"/>
798+ <return-value transfer-ownership="full">
799+ <doc xml:space="preserve"
800+ filename="../pango/pango-attributes.c"
801+ line="1844">the newly allocated
802+ `PangoAttrList`, which should be freed with
803+ [method@Pango.AttrList.unref]</doc>
804+ <type name="AttrList" c:type="PangoAttrList*"/>
805+ </return-value>
806+ </constructor>
807+ <method name="change" c:identifier="pango_attr_list_change">
808+ <doc xml:space="preserve"
809+ filename="../pango/pango-attributes.c"
810+ line="2035">Insert the given attribute into the `PangoAttrList`.
811+
812+It will replace any attributes of the same type
813+on that segment and be merged with any adjoining
814+attributes that are identical.
815+
816+This function is slower than [method@Pango.AttrList.insert]
817+for creating an attribute list in order (potentially
818+much slower for large lists). However,
819+[method@Pango.AttrList.insert] is not suitable for
820+continually changing a set of attributes since it
821+never removes or combines existing attributes.</doc>
822+ <source-position filename="../pango/pango-attributes.h" line="685"/>
823+ <return-value transfer-ownership="none">
824+ <type name="none" c:type="void"/>
825+ </return-value>
826+ <parameters>
827+ <instance-parameter name="list" transfer-ownership="none">
828+ <doc xml:space="preserve"
829+ filename="../pango/pango-attributes.c"
830+ line="2037">a `PangoAttrList`</doc>
831+ <type name="AttrList" c:type="PangoAttrList*"/>
832+ </instance-parameter>
833+ <parameter name="attr" transfer-ownership="full">
834+ <doc xml:space="preserve"
835+ filename="../pango/pango-attributes.c"
836+ line="2038">the attribute to insert</doc>
837+ <type name="Attribute" c:type="PangoAttribute*"/>
838+ </parameter>
839+ </parameters>
840+ </method>
841+ <method name="copy" c:identifier="pango_attr_list_copy">
842+ <doc xml:space="preserve"
843+ filename="../pango/pango-attributes.c"
844+ line="1923">Copy @list and return an identical new list.</doc>
845+ <source-position filename="../pango/pango-attributes.h" line="677"/>
846+ <return-value transfer-ownership="full" nullable="1">
847+ <doc xml:space="preserve"
848+ filename="../pango/pango-attributes.c"
849+ line="1929">the newly allocated
850+ `PangoAttrList`, with a reference count of one,
851+ which should be freed with [method@Pango.AttrList.unref].
852+ Returns %NULL if @list was %NULL.</doc>
853+ <type name="AttrList" c:type="PangoAttrList*"/>
854+ </return-value>
855+ <parameters>
856+ <instance-parameter name="list"
857+ transfer-ownership="none"
858+ nullable="1"
859+ allow-none="1">
860+ <doc xml:space="preserve"
861+ filename="../pango/pango-attributes.c"
862+ line="1925">a `PangoAttrList`</doc>
863+ <type name="AttrList" c:type="PangoAttrList*"/>
864+ </instance-parameter>
865+ </parameters>
866+ </method>
867+ <method name="equal" c:identifier="pango_attr_list_equal" version="1.46">
868+ <doc xml:space="preserve"
869+ filename="../pango/pango-attributes.c"
870+ line="2395">Checks whether @list and @other_list contain the same
871+attributes and whether those attributes apply to the
872+same ranges.
873+
874+Beware that this will return wrong values if any list
875+contains duplicates.</doc>
876+ <source-position filename="../pango/pango-attributes.h" line="707"/>
877+ <return-value transfer-ownership="none">
878+ <doc xml:space="preserve"
879+ filename="../pango/pango-attributes.c"
880+ line="2407">%TRUE if the lists are equal, %FALSE if
881+ they aren't</doc>
882+ <type name="gboolean" c:type="gboolean"/>
883+ </return-value>
884+ <parameters>
885+ <instance-parameter name="list" transfer-ownership="none">
886+ <doc xml:space="preserve"
887+ filename="../pango/pango-attributes.c"
888+ line="2397">a `PangoAttrList`</doc>
889+ <type name="AttrList" c:type="PangoAttrList*"/>
890+ </instance-parameter>
891+ <parameter name="other_list" transfer-ownership="none">
892+ <doc xml:space="preserve"
893+ filename="../pango/pango-attributes.c"
894+ line="2398">the other `PangoAttrList`</doc>
895+ <type name="AttrList" c:type="PangoAttrList*"/>
896+ </parameter>
897+ </parameters>
898+ </method>
899+ <method name="filter"
900+ c:identifier="pango_attr_list_filter"
901+ version="1.2">
902+ <doc xml:space="preserve"
903+ filename="../pango/pango-attributes.c"
904+ line="2473">Given a `PangoAttrList` and callback function, removes
905+any elements of @list for which @func returns %TRUE and
906+inserts them into a new list.</doc>
907+ <source-position filename="../pango/pango-attributes.h" line="699"/>
908+ <return-value transfer-ownership="full" nullable="1">
909+ <doc xml:space="preserve"
910+ filename="../pango/pango-attributes.c"
911+ line="2484">the new
912+ `PangoAttrList` or %NULL if no attributes of the
913+ given types were found</doc>
914+ <type name="AttrList" c:type="PangoAttrList*"/>
915+ </return-value>
916+ <parameters>
917+ <instance-parameter name="list" transfer-ownership="none">
918+ <doc xml:space="preserve"
919+ filename="../pango/pango-attributes.c"
920+ line="2475">a `PangoAttrList`</doc>
921+ <type name="AttrList" c:type="PangoAttrList*"/>
922+ </instance-parameter>
923+ <parameter name="func"
924+ transfer-ownership="none"
925+ scope="call"
926+ closure="1">
927+ <doc xml:space="preserve"
928+ filename="../pango/pango-attributes.c"
929+ line="2476">callback function;
930+ returns %TRUE if an attribute should be filtered out</doc>
931+ <type name="AttrFilterFunc" c:type="PangoAttrFilterFunc"/>
932+ </parameter>
933+ <parameter name="data"
934+ transfer-ownership="none"
935+ nullable="1"
936+ allow-none="1">
937+ <doc xml:space="preserve"
938+ filename="../pango/pango-attributes.c"
939+ line="2478">Data to be passed to @func</doc>
940+ <type name="gpointer" c:type="gpointer"/>
941+ </parameter>
942+ </parameters>
943+ </method>
944+ <method name="get_attributes"
945+ c:identifier="pango_attr_list_get_attributes"
946+ version="1.44">
947+ <doc xml:space="preserve"
948+ filename="../pango/pango-attributes.c"
949+ line="2361">Gets a list of all attributes in @list.</doc>
950+ <source-position filename="../pango/pango-attributes.h" line="704"/>
951+ <return-value transfer-ownership="full">
952+ <doc xml:space="preserve"
953+ filename="../pango/pango-attributes.c"
954+ line="2367">
955+ a list of all attributes in @list. To free this value,
956+ call [method@Pango.Attribute.destroy] on each value and
957+ g_slist_free() on the list.</doc>
958+ <type name="GLib.SList" c:type="GSList*">
959+ <type name="Attribute"/>
960+ </type>
961+ </return-value>
962+ <parameters>
963+ <instance-parameter name="list" transfer-ownership="none">
964+ <doc xml:space="preserve"
965+ filename="../pango/pango-attributes.c"
966+ line="2363">a `PangoAttrList`</doc>
967+ <type name="AttrList" c:type="PangoAttrList*"/>
968+ </instance-parameter>
969+ </parameters>
970+ </method>
971+ <method name="get_iterator" c:identifier="pango_attr_list_get_iterator">
972+ <doc xml:space="preserve"
973+ filename="../pango/pango-attributes.c"
974+ line="3093">Create a iterator initialized to the beginning of the list.
975+
976+@list must not be modified until this iterator is freed.</doc>
977+ <source-position filename="../pango/pango-attributes.h" line="719"/>
978+ <return-value transfer-ownership="full">
979+ <doc xml:space="preserve"
980+ filename="../pango/pango-attributes.c"
981+ line="3101">the newly allocated
982+ `PangoAttrIterator`, which should be freed with
983+ [method@Pango.AttrIterator.destroy]</doc>
984+ <type name="AttrIterator" c:type="PangoAttrIterator*"/>
985+ </return-value>
986+ <parameters>
987+ <instance-parameter name="list" transfer-ownership="none">
988+ <doc xml:space="preserve"
989+ filename="../pango/pango-attributes.c"
990+ line="3095">a `PangoAttrList`</doc>
991+ <type name="AttrList" c:type="PangoAttrList*"/>
992+ </instance-parameter>
993+ </parameters>
994+ </method>
995+ <method name="insert" c:identifier="pango_attr_list_insert">
996+ <doc xml:space="preserve"
997+ filename="../pango/pango-attributes.c"
998+ line="1995">Insert the given attribute into the `PangoAttrList`.
999+
1000+It will be inserted after all other attributes with a
1001+matching @start_index.</doc>
1002+ <source-position filename="../pango/pango-attributes.h" line="679"/>
1003+ <return-value transfer-ownership="none">
1004+ <type name="none" c:type="void"/>
1005+ </return-value>
1006+ <parameters>
1007+ <instance-parameter name="list" transfer-ownership="none">
1008+ <doc xml:space="preserve"
1009+ filename="../pango/pango-attributes.c"
1010+ line="1997">a `PangoAttrList`</doc>
1011+ <type name="AttrList" c:type="PangoAttrList*"/>
1012+ </instance-parameter>
1013+ <parameter name="attr" transfer-ownership="full">
1014+ <doc xml:space="preserve"
1015+ filename="../pango/pango-attributes.c"
1016+ line="1998">the attribute to insert</doc>
1017+ <type name="Attribute" c:type="PangoAttribute*"/>
1018+ </parameter>
1019+ </parameters>
1020+ </method>
1021+ <method name="insert_before"
1022+ c:identifier="pango_attr_list_insert_before">
1023+ <doc xml:space="preserve"
1024+ filename="../pango/pango-attributes.c"
1025+ line="2015">Insert the given attribute into the `PangoAttrList`.
1026+
1027+It will be inserted before all other attributes with a
1028+matching @start_index.</doc>
1029+ <source-position filename="../pango/pango-attributes.h" line="682"/>
1030+ <return-value transfer-ownership="none">
1031+ <type name="none" c:type="void"/>
1032+ </return-value>
1033+ <parameters>
1034+ <instance-parameter name="list" transfer-ownership="none">
1035+ <doc xml:space="preserve"
1036+ filename="../pango/pango-attributes.c"
1037+ line="2017">a `PangoAttrList`</doc>
1038+ <type name="AttrList" c:type="PangoAttrList*"/>
1039+ </instance-parameter>
1040+ <parameter name="attr" transfer-ownership="full">
1041+ <doc xml:space="preserve"
1042+ filename="../pango/pango-attributes.c"
1043+ line="2018">the attribute to insert</doc>
1044+ <type name="Attribute" c:type="PangoAttribute*"/>
1045+ </parameter>
1046+ </parameters>
1047+ </method>
1048+ <method name="ref" c:identifier="pango_attr_list_ref" version="1.10">
1049+ <doc xml:space="preserve"
1050+ filename="../pango/pango-attributes.c"
1051+ line="1858">Increase the reference count of the given attribute
1052+list by one.</doc>
1053+ <source-position filename="../pango/pango-attributes.h" line="673"/>
1054+ <return-value transfer-ownership="full">
1055+ <doc xml:space="preserve"
1056+ filename="../pango/pango-attributes.c"
1057+ line="1865">The attribute list passed in</doc>
1058+ <type name="AttrList" c:type="PangoAttrList*"/>
1059+ </return-value>
1060+ <parameters>
1061+ <instance-parameter name="list"
1062+ transfer-ownership="none"
1063+ nullable="1"
1064+ allow-none="1">
1065+ <doc xml:space="preserve"
1066+ filename="../pango/pango-attributes.c"
1067+ line="1860">a `PangoAttrList`</doc>
1068+ <type name="AttrList" c:type="PangoAttrList*"/>
1069+ </instance-parameter>
1070+ </parameters>
1071+ </method>
1072+ <method name="splice" c:identifier="pango_attr_list_splice">
1073+ <doc xml:space="preserve"
1074+ filename="../pango/pango-attributes.c"
1075+ line="2275">This function opens up a hole in @list, fills it
1076+in with attributes from the left, and then merges
1077+@other on top of the hole.
1078+
1079+This operation is equivalent to stretching every attribute
1080+that applies at position @pos in @list by an amount @len,
1081+and then calling [method@Pango.AttrList.change] with a copy
1082+of each attribute in @other in sequence (offset in position
1083+by @pos).
1084+
1085+This operation proves useful for, for instance, inserting
1086+a pre-edit string in the middle of an edit buffer.</doc>
1087+ <source-position filename="../pango/pango-attributes.h" line="688"/>
1088+ <return-value transfer-ownership="none">
1089+ <type name="none" c:type="void"/>
1090+ </return-value>
1091+ <parameters>
1092+ <instance-parameter name="list" transfer-ownership="none">
1093+ <doc xml:space="preserve"
1094+ filename="../pango/pango-attributes.c"
1095+ line="2277">a `PangoAttrList`</doc>
1096+ <type name="AttrList" c:type="PangoAttrList*"/>
1097+ </instance-parameter>
1098+ <parameter name="other" transfer-ownership="none">
1099+ <doc xml:space="preserve"
1100+ filename="../pango/pango-attributes.c"
1101+ line="2278">another `PangoAttrList`</doc>
1102+ <type name="AttrList" c:type="PangoAttrList*"/>
1103+ </parameter>
1104+ <parameter name="pos" transfer-ownership="none">
1105+ <doc xml:space="preserve"
1106+ filename="../pango/pango-attributes.c"
1107+ line="2279">the position in @list at which to insert @other</doc>
1108+ <type name="gint" c:type="int"/>
1109+ </parameter>
1110+ <parameter name="len" transfer-ownership="none">
1111+ <doc xml:space="preserve"
1112+ filename="../pango/pango-attributes.c"
1113+ line="2280">the length of the spliced segment. (Note that this
1114+ must be specified since the attributes in @other may only
1115+ be present at some subsection of this range)</doc>
1116+ <type name="gint" c:type="int"/>
1117+ </parameter>
1118+ </parameters>
1119+ </method>
1120+ <method name="to_string"
1121+ c:identifier="pango_attr_list_to_string"
1122+ version="1.50">
1123+ <doc xml:space="preserve"
1124+ filename="../pango/pango-attributes.c"
1125+ line="2660">Serializes a `PangoAttrList` to a string.
1126+
1127+No guarantees are made about the format of the string,
1128+it may change between Pango versions.
1129+
1130+The intended use of this function is testing and
1131+debugging. The format is not meant as a permanent
1132+storage format.</doc>
1133+ <source-position filename="../pango/pango-attributes.h" line="711"/>
1134+ <return-value transfer-ownership="full">
1135+ <doc xml:space="preserve"
1136+ filename="../pango/pango-attributes.c"
1137+ line="2673">a newly allocated string</doc>
1138+ <type name="utf8" c:type="char*"/>
1139+ </return-value>
1140+ <parameters>
1141+ <instance-parameter name="list" transfer-ownership="none">
1142+ <doc xml:space="preserve"
1143+ filename="../pango/pango-attributes.c"
1144+ line="2662">a `PangoAttrList`</doc>
1145+ <type name="AttrList" c:type="PangoAttrList*"/>
1146+ </instance-parameter>
1147+ </parameters>
1148+ </method>
1149+ <method name="unref" c:identifier="pango_attr_list_unref">
1150+ <doc xml:space="preserve"
1151+ filename="../pango/pango-attributes.c"
1152+ line="1898">Decrease the reference count of the given attribute
1153+list by one.
1154+
1155+If the result is zero, free the attribute list
1156+and the attributes it contains.</doc>
1157+ <source-position filename="../pango/pango-attributes.h" line="675"/>
1158+ <return-value transfer-ownership="none">
1159+ <type name="none" c:type="void"/>
1160+ </return-value>
1161+ <parameters>
1162+ <instance-parameter name="list"
1163+ transfer-ownership="none"
1164+ nullable="1"
1165+ allow-none="1">
1166+ <doc xml:space="preserve"
1167+ filename="../pango/pango-attributes.c"
1168+ line="1900">a `PangoAttrList`</doc>
1169+ <type name="AttrList" c:type="PangoAttrList*"/>
1170+ </instance-parameter>
1171+ </parameters>
1172+ </method>
1173+ <method name="update"
1174+ c:identifier="pango_attr_list_update"
1175+ version="1.44">
1176+ <doc xml:space="preserve"
1177+ filename="../pango/pango-attributes.c"
1178+ line="2192">Update indices of attributes in @list for a change in the
1179+text they refer to.
1180+
1181+The change that this function applies is removing @remove
1182+bytes at position @pos and inserting @add bytes instead.
1183+
1184+Attributes that fall entirely in the (@pos, @pos + @remove)
1185+range are removed.
1186+
1187+Attributes that start or end inside the (@pos, @pos + @remove)
1188+range are shortened to reflect the removal.
1189+
1190+Attributes start and end positions are updated if they are
1191+behind @pos + @remove.</doc>
1192+ <source-position filename="../pango/pango-attributes.h" line="693"/>
1193+ <return-value transfer-ownership="none">
1194+ <type name="none" c:type="void"/>
1195+ </return-value>
1196+ <parameters>
1197+ <instance-parameter name="list" transfer-ownership="none">
1198+ <doc xml:space="preserve"
1199+ filename="../pango/pango-attributes.c"
1200+ line="2194">a `PangoAttrList`</doc>
1201+ <type name="AttrList" c:type="PangoAttrList*"/>
1202+ </instance-parameter>
1203+ <parameter name="pos" transfer-ownership="none">
1204+ <doc xml:space="preserve"
1205+ filename="../pango/pango-attributes.c"
1206+ line="2195">the position of the change</doc>
1207+ <type name="gint" c:type="int"/>
1208+ </parameter>
1209+ <parameter name="remove" transfer-ownership="none">
1210+ <doc xml:space="preserve"
1211+ filename="../pango/pango-attributes.c"
1212+ line="2196">the number of removed bytes</doc>
1213+ <type name="gint" c:type="int"/>
1214+ </parameter>
1215+ <parameter name="add" transfer-ownership="none">
1216+ <doc xml:space="preserve"
1217+ filename="../pango/pango-attributes.c"
1218+ line="2197">the number of added bytes</doc>
1219+ <type name="gint" c:type="int"/>
1220+ </parameter>
1221+ </parameters>
1222+ </method>
1223+ <function name="from_string"
1224+ c:identifier="pango_attr_list_from_string"
1225+ version="1.50">
1226+ <doc xml:space="preserve"
1227+ filename="../pango/pango-attributes.c"
1228+ line="2749">Deserializes a `PangoAttrList` from a string.
1229+
1230+This is the counterpart to [method@Pango.AttrList.to_string].
1231+See that functions for details about the format.</doc>
1232+ <source-position filename="../pango/pango-attributes.h" line="713"/>
1233+ <return-value transfer-ownership="full" nullable="1">
1234+ <doc xml:space="preserve"
1235+ filename="../pango/pango-attributes.c"
1236+ line="2758">a new `PangoAttrList`</doc>
1237+ <type name="AttrList" c:type="PangoAttrList*"/>
1238+ </return-value>
1239+ <parameters>
1240+ <parameter name="text" transfer-ownership="none">
1241+ <doc xml:space="preserve"
1242+ filename="../pango/pango-attributes.c"
1243+ line="2751">a string</doc>
1244+ <type name="utf8" c:type="const char*"/>
1245+ </parameter>
1246+ </parameters>
1247+ </function>
1248+ </record>
1249+ <record name="AttrShape" c:type="PangoAttrShape">
1250+ <doc xml:space="preserve"
1251+ filename="../pango/pango-attributes.h"
1252+ line="447">The `PangoAttrShape` structure is used to represent attributes which
1253+impose shape restrictions.</doc>
1254+ <source-position filename="../pango/pango-attributes.h" line="468"/>
1255+ <field name="attr" writable="1">
1256+ <doc xml:space="preserve"
1257+ filename="../pango/pango-attributes.h"
1258+ line="449">the common portion of the attribute</doc>
1259+ <type name="Attribute" c:type="PangoAttribute"/>
1260+ </field>
1261+ <field name="ink_rect" writable="1">
1262+ <doc xml:space="preserve"
1263+ filename="../pango/pango-attributes.h"
1264+ line="450">the ink rectangle to restrict to</doc>
1265+ <type name="Rectangle" c:type="PangoRectangle"/>
1266+ </field>
1267+ <field name="logical_rect" writable="1">
1268+ <doc xml:space="preserve"
1269+ filename="../pango/pango-attributes.h"
1270+ line="451">the logical rectangle to restrict to</doc>
1271+ <type name="Rectangle" c:type="PangoRectangle"/>
1272+ </field>
1273+ <field name="data" writable="1">
1274+ <doc xml:space="preserve"
1275+ filename="../pango/pango-attributes.h"
1276+ line="452">user data set (see [func@Pango.AttrShape.new_with_data])</doc>
1277+ <type name="gpointer" c:type="gpointer"/>
1278+ </field>
1279+ <field name="copy_func" writable="1">
1280+ <doc xml:space="preserve"
1281+ filename="../pango/pango-attributes.h"
1282+ line="453">copy function for the user data</doc>
1283+ <type name="AttrDataCopyFunc" c:type="PangoAttrDataCopyFunc"/>
1284+ </field>
1285+ <field name="destroy_func" writable="1">
1286+ <doc xml:space="preserve"
1287+ filename="../pango/pango-attributes.h"
1288+ line="454">destroy function for the user data</doc>
1289+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
1290+ </field>
1291+ <function name="new" c:identifier="pango_attr_shape_new">
1292+ <doc xml:space="preserve"
1293+ filename="../pango/pango-attributes.c"
1294+ line="1127">Create a new shape attribute.
1295+
1296+A shape is used to impose a particular ink and logical
1297+rectangle on the result of shaping a particular glyph.
1298+This might be used, for instance, for embedding a picture
1299+or a widget inside a `PangoLayout`.</doc>
1300+ <source-position filename="../pango/pango-attributes.h" line="570"/>
1301+ <return-value transfer-ownership="full">
1302+ <doc xml:space="preserve"
1303+ filename="../pango/pango-attributes.c"
1304+ line="1139">the newly allocated
1305+ `PangoAttribute`, which should be freed with
1306+ [method@Pango.Attribute.destroy]</doc>
1307+ <type name="Attribute" c:type="PangoAttribute*"/>
1308+ </return-value>
1309+ <parameters>
1310+ <parameter name="ink_rect" transfer-ownership="none">
1311+ <doc xml:space="preserve"
1312+ filename="../pango/pango-attributes.c"
1313+ line="1129">ink rectangle to assign to each character</doc>
1314+ <type name="Rectangle" c:type="const PangoRectangle*"/>
1315+ </parameter>
1316+ <parameter name="logical_rect" transfer-ownership="none">
1317+ <doc xml:space="preserve"
1318+ filename="../pango/pango-attributes.c"
1319+ line="1130">logical rectangle to assign to each character</doc>
1320+ <type name="Rectangle" c:type="const PangoRectangle*"/>
1321+ </parameter>
1322+ </parameters>
1323+ </function>
1324+ <function name="new_with_data"
1325+ c:identifier="pango_attr_shape_new_with_data"
1326+ version="1.8">
1327+ <doc xml:space="preserve"
1328+ filename="../pango/pango-attributes.c"
1329+ line="1074">Creates a new shape attribute.
1330+
1331+Like [func@Pango.AttrShape.new], but a user data pointer
1332+is also provided; this pointer can be accessed when later
1333+rendering the glyph.</doc>
1334+ <source-position filename="../pango/pango-attributes.h" line="573"/>
1335+ <return-value transfer-ownership="full">
1336+ <doc xml:space="preserve"
1337+ filename="../pango/pango-attributes.c"
1338+ line="1091">the newly allocated
1339+ `PangoAttribute`, which should be freed with
1340+ [method@Pango.Attribute.destroy]</doc>
1341+ <type name="Attribute" c:type="PangoAttribute*"/>
1342+ </return-value>
1343+ <parameters>
1344+ <parameter name="ink_rect" transfer-ownership="none">
1345+ <doc xml:space="preserve"
1346+ filename="../pango/pango-attributes.c"
1347+ line="1076">ink rectangle to assign to each character</doc>
1348+ <type name="Rectangle" c:type="const PangoRectangle*"/>
1349+ </parameter>
1350+ <parameter name="logical_rect" transfer-ownership="none">
1351+ <doc xml:space="preserve"
1352+ filename="../pango/pango-attributes.c"
1353+ line="1077">logical rectangle to assign to each character</doc>
1354+ <type name="Rectangle" c:type="const PangoRectangle*"/>
1355+ </parameter>
1356+ <parameter name="data"
1357+ transfer-ownership="none"
1358+ nullable="1"
1359+ allow-none="1">
1360+ <doc xml:space="preserve"
1361+ filename="../pango/pango-attributes.c"
1362+ line="1078">user data pointer</doc>
1363+ <type name="gpointer" c:type="gpointer"/>
1364+ </parameter>
1365+ <parameter name="copy_func"
1366+ transfer-ownership="none"
1367+ nullable="1"
1368+ allow-none="1"
1369+ scope="notified"
1370+ destroy="4">
1371+ <doc xml:space="preserve"
1372+ filename="../pango/pango-attributes.c"
1373+ line="1079">function to copy @data when the
1374+ attribute is copied. If %NULL, @data is simply copied
1375+ as a pointer</doc>
1376+ <type name="AttrDataCopyFunc" c:type="PangoAttrDataCopyFunc"/>
1377+ </parameter>
1378+ <parameter name="destroy_func"
1379+ transfer-ownership="none"
1380+ nullable="1"
1381+ allow-none="1"
1382+ scope="async">
1383+ <doc xml:space="preserve"
1384+ filename="../pango/pango-attributes.c"
1385+ line="1082">function to free @data when the
1386+ attribute is freed</doc>
1387+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
1388+ </parameter>
1389+ </parameters>
1390+ </function>
1391+ </record>
1392+ <record name="AttrSize" c:type="PangoAttrSize">
1393+ <doc xml:space="preserve"
1394+ filename="../pango/pango-attributes.h"
1395+ line="427">The `PangoAttrSize` structure is used to represent attributes which
1396+set font size.</doc>
1397+ <source-position filename="../pango/pango-attributes.h" line="445"/>
1398+ <field name="attr" writable="1">
1399+ <doc xml:space="preserve"
1400+ filename="../pango/pango-attributes.h"
1401+ line="429">the common portion of the attribute</doc>
1402+ <type name="Attribute" c:type="PangoAttribute"/>
1403+ </field>
1404+ <field name="size" writable="1">
1405+ <doc xml:space="preserve"
1406+ filename="../pango/pango-attributes.h"
1407+ line="430">size of font, in units of 1/%PANGO_SCALE of a point (for
1408+ %PANGO_ATTR_SIZE) or of a device unit (for %PANGO_ATTR_ABSOLUTE_SIZE)</doc>
1409+ <type name="gint" c:type="int"/>
1410+ </field>
1411+ <field name="absolute" writable="1" bits="1">
1412+ <doc xml:space="preserve"
1413+ filename="../pango/pango-attributes.h"
1414+ line="432">whether the font size is in device units or points.
1415+ This field is only present for compatibility with Pango-1.8.0
1416+ (%PANGO_ATTR_ABSOLUTE_SIZE was added in 1.8.1); and always will
1417+ be %FALSE for %PANGO_ATTR_SIZE and %TRUE for %PANGO_ATTR_ABSOLUTE_SIZE.</doc>
1418+ <type name="guint" c:type="guint"/>
1419+ </field>
1420+ <function name="new" c:identifier="pango_attr_size_new">
1421+ <doc xml:space="preserve"
1422+ filename="../pango/pango-attributes.c"
1423+ line="637">Create a new font-size attribute in fractional points.</doc>
1424+ <source-position filename="../pango/pango-attributes.h" line="531"/>
1425+ <return-value transfer-ownership="full">
1426+ <doc xml:space="preserve"
1427+ filename="../pango/pango-attributes.c"
1428+ line="643">the newly allocated
1429+ `PangoAttribute`, which should be freed with
1430+ [method@Pango.Attribute.destroy]</doc>
1431+ <type name="Attribute" c:type="PangoAttribute*"/>
1432+ </return-value>
1433+ <parameters>
1434+ <parameter name="size" transfer-ownership="none">
1435+ <doc xml:space="preserve"
1436+ filename="../pango/pango-attributes.c"
1437+ line="639">the font size, in %PANGO_SCALE-ths of a point</doc>
1438+ <type name="gint" c:type="int"/>
1439+ </parameter>
1440+ </parameters>
1441+ </function>
1442+ <function name="new_absolute"
1443+ c:identifier="pango_attr_size_new_absolute"
1444+ version="1.8">
1445+ <doc xml:space="preserve"
1446+ filename="../pango/pango-attributes.c"
1447+ line="653">Create a new font-size attribute in device units.</doc>
1448+ <source-position filename="../pango/pango-attributes.h" line="533"/>
1449+ <return-value transfer-ownership="full">
1450+ <doc xml:space="preserve"
1451+ filename="../pango/pango-attributes.c"
1452+ line="659">the newly allocated
1453+ `PangoAttribute`, which should be freed with
1454+ [method@Pango.Attribute.destroy]</doc>
1455+ <type name="Attribute" c:type="PangoAttribute*"/>
1456+ </return-value>
1457+ <parameters>
1458+ <parameter name="size" transfer-ownership="none">
1459+ <doc xml:space="preserve"
1460+ filename="../pango/pango-attributes.c"
1461+ line="655">the font size, in %PANGO_SCALE-ths of a device unit</doc>
1462+ <type name="gint" c:type="int"/>
1463+ </parameter>
1464+ </parameters>
1465+ </function>
1466+ </record>
1467+ <record name="AttrString" c:type="PangoAttrString">
1468+ <doc xml:space="preserve"
1469+ filename="../pango/pango-attributes.h"
1470+ line="361">The `PangoAttrString` structure is used to represent attributes with
1471+a string value.</doc>
1472+ <source-position filename="../pango/pango-attributes.h" line="373"/>
1473+ <field name="attr" writable="1">
1474+ <doc xml:space="preserve"
1475+ filename="../pango/pango-attributes.h"
1476+ line="363">the common portion of the attribute</doc>
1477+ <type name="Attribute" c:type="PangoAttribute"/>
1478+ </field>
1479+ <field name="value" writable="1">
1480+ <doc xml:space="preserve"
1481+ filename="../pango/pango-attributes.h"
1482+ line="364">the string which is the value of the attribute</doc>
1483+ <type name="utf8" c:type="char*"/>
1484+ </field>
1485+ </record>
1486+ <enumeration name="AttrType"
1487+ glib:type-name="PangoAttrType"
1488+ glib:get-type="pango_attr_type_get_type"
1489+ c:type="PangoAttrType">
1490+ <doc xml:space="preserve"
1491+ filename="../pango/pango-attributes.h"
1492+ line="45">The `PangoAttrType` distinguishes between different types of attributes.
1493+
1494+Along with the predefined values, it is possible to allocate additional
1495+values for custom attributes using [func@AttrType.register]. The predefined
1496+values are given below. The type of structure used to store the attribute is
1497+listed in parentheses after the description.</doc>
1498+ <member name="invalid"
1499+ value="0"
1500+ c:identifier="PANGO_ATTR_INVALID"
1501+ glib:nick="invalid"
1502+ glib:name="PANGO_ATTR_INVALID">
1503+ <doc xml:space="preserve"
1504+ filename="../pango/pango-attributes.h"
1505+ line="47">does not happen</doc>
1506+ </member>
1507+ <member name="language"
1508+ value="1"
1509+ c:identifier="PANGO_ATTR_LANGUAGE"
1510+ glib:nick="language"
1511+ glib:name="PANGO_ATTR_LANGUAGE">
1512+ <doc xml:space="preserve"
1513+ filename="../pango/pango-attributes.h"
1514+ line="48">language ([struct@Pango.AttrLanguage])</doc>
1515+ </member>
1516+ <member name="family"
1517+ value="2"
1518+ c:identifier="PANGO_ATTR_FAMILY"
1519+ glib:nick="family"
1520+ glib:name="PANGO_ATTR_FAMILY">
1521+ <doc xml:space="preserve"
1522+ filename="../pango/pango-attributes.h"
1523+ line="49">font family name list ([struct@Pango.AttrString])</doc>
1524+ </member>
1525+ <member name="style"
1526+ value="3"
1527+ c:identifier="PANGO_ATTR_STYLE"
1528+ glib:nick="style"
1529+ glib:name="PANGO_ATTR_STYLE">
1530+ <doc xml:space="preserve"
1531+ filename="../pango/pango-attributes.h"
1532+ line="50">font slant style ([struct@Pango.AttrInt])</doc>
1533+ </member>
1534+ <member name="weight"
1535+ value="4"
1536+ c:identifier="PANGO_ATTR_WEIGHT"
1537+ glib:nick="weight"
1538+ glib:name="PANGO_ATTR_WEIGHT">
1539+ <doc xml:space="preserve"
1540+ filename="../pango/pango-attributes.h"
1541+ line="51">font weight ([struct@Pango.AttrInt])</doc>
1542+ </member>
1543+ <member name="variant"
1544+ value="5"
1545+ c:identifier="PANGO_ATTR_VARIANT"
1546+ glib:nick="variant"
1547+ glib:name="PANGO_ATTR_VARIANT">
1548+ <doc xml:space="preserve"
1549+ filename="../pango/pango-attributes.h"
1550+ line="52">font variant (normal or small caps) ([struct@Pango.AttrInt])</doc>
1551+ </member>
1552+ <member name="stretch"
1553+ value="6"
1554+ c:identifier="PANGO_ATTR_STRETCH"
1555+ glib:nick="stretch"
1556+ glib:name="PANGO_ATTR_STRETCH">
1557+ <doc xml:space="preserve"
1558+ filename="../pango/pango-attributes.h"
1559+ line="53">font stretch ([struct@Pango.AttrInt])</doc>
1560+ </member>
1561+ <member name="size"
1562+ value="7"
1563+ c:identifier="PANGO_ATTR_SIZE"
1564+ glib:nick="size"
1565+ glib:name="PANGO_ATTR_SIZE">
1566+ <doc xml:space="preserve"
1567+ filename="../pango/pango-attributes.h"
1568+ line="54">font size in points scaled by %PANGO_SCALE ([struct@Pango.AttrInt])</doc>
1569+ </member>
1570+ <member name="font_desc"
1571+ value="8"
1572+ c:identifier="PANGO_ATTR_FONT_DESC"
1573+ glib:nick="font-desc"
1574+ glib:name="PANGO_ATTR_FONT_DESC">
1575+ <doc xml:space="preserve"
1576+ filename="../pango/pango-attributes.h"
1577+ line="55">font description ([struct@Pango.AttrFontDesc])</doc>
1578+ </member>
1579+ <member name="foreground"
1580+ value="9"
1581+ c:identifier="PANGO_ATTR_FOREGROUND"
1582+ glib:nick="foreground"
1583+ glib:name="PANGO_ATTR_FOREGROUND">
1584+ <doc xml:space="preserve"
1585+ filename="../pango/pango-attributes.h"
1586+ line="56">foreground color ([struct@Pango.AttrColor])</doc>
1587+ </member>
1588+ <member name="background"
1589+ value="10"
1590+ c:identifier="PANGO_ATTR_BACKGROUND"
1591+ glib:nick="background"
1592+ glib:name="PANGO_ATTR_BACKGROUND">
1593+ <doc xml:space="preserve"
1594+ filename="../pango/pango-attributes.h"
1595+ line="57">background color ([struct@Pango.AttrColor])</doc>
1596+ </member>
1597+ <member name="underline"
1598+ value="11"
1599+ c:identifier="PANGO_ATTR_UNDERLINE"
1600+ glib:nick="underline"
1601+ glib:name="PANGO_ATTR_UNDERLINE">
1602+ <doc xml:space="preserve"
1603+ filename="../pango/pango-attributes.h"
1604+ line="58">whether the text has an underline ([struct@Pango.AttrInt])</doc>
1605+ </member>
1606+ <member name="strikethrough"
1607+ value="12"
1608+ c:identifier="PANGO_ATTR_STRIKETHROUGH"
1609+ glib:nick="strikethrough"
1610+ glib:name="PANGO_ATTR_STRIKETHROUGH">
1611+ <doc xml:space="preserve"
1612+ filename="../pango/pango-attributes.h"
1613+ line="59">whether the text is struck-through ([struct@Pango.AttrInt])</doc>
1614+ </member>
1615+ <member name="rise"
1616+ value="13"
1617+ c:identifier="PANGO_ATTR_RISE"
1618+ glib:nick="rise"
1619+ glib:name="PANGO_ATTR_RISE">
1620+ <doc xml:space="preserve"
1621+ filename="../pango/pango-attributes.h"
1622+ line="60">baseline displacement ([struct@Pango.AttrInt])</doc>
1623+ </member>
1624+ <member name="shape"
1625+ value="14"
1626+ c:identifier="PANGO_ATTR_SHAPE"
1627+ glib:nick="shape"
1628+ glib:name="PANGO_ATTR_SHAPE">
1629+ <doc xml:space="preserve"
1630+ filename="../pango/pango-attributes.h"
1631+ line="61">shape ([struct@Pango.AttrShape])</doc>
1632+ </member>
1633+ <member name="scale"
1634+ value="15"
1635+ c:identifier="PANGO_ATTR_SCALE"
1636+ glib:nick="scale"
1637+ glib:name="PANGO_ATTR_SCALE">
1638+ <doc xml:space="preserve"
1639+ filename="../pango/pango-attributes.h"
1640+ line="62">font size scale factor ([struct@Pango.AttrFloat])</doc>
1641+ </member>
1642+ <member name="fallback"
1643+ value="16"
1644+ c:identifier="PANGO_ATTR_FALLBACK"
1645+ glib:nick="fallback"
1646+ glib:name="PANGO_ATTR_FALLBACK">
1647+ <doc xml:space="preserve"
1648+ filename="../pango/pango-attributes.h"
1649+ line="63">whether fallback is enabled ([struct@Pango.AttrInt])</doc>
1650+ </member>
1651+ <member name="letter_spacing"
1652+ value="17"
1653+ c:identifier="PANGO_ATTR_LETTER_SPACING"
1654+ glib:nick="letter-spacing"
1655+ glib:name="PANGO_ATTR_LETTER_SPACING">
1656+ <doc xml:space="preserve"
1657+ filename="../pango/pango-attributes.h"
1658+ line="64">letter spacing ([struct@PangoAttrInt])</doc>
1659+ </member>
1660+ <member name="underline_color"
1661+ value="18"
1662+ c:identifier="PANGO_ATTR_UNDERLINE_COLOR"
1663+ glib:nick="underline-color"
1664+ glib:name="PANGO_ATTR_UNDERLINE_COLOR">
1665+ <doc xml:space="preserve"
1666+ filename="../pango/pango-attributes.h"
1667+ line="65">underline color ([struct@Pango.AttrColor])</doc>
1668+ </member>
1669+ <member name="strikethrough_color"
1670+ value="19"
1671+ c:identifier="PANGO_ATTR_STRIKETHROUGH_COLOR"
1672+ glib:nick="strikethrough-color"
1673+ glib:name="PANGO_ATTR_STRIKETHROUGH_COLOR">
1674+ <doc xml:space="preserve"
1675+ filename="../pango/pango-attributes.h"
1676+ line="66">strikethrough color ([struct@Pango.AttrColor])</doc>
1677+ </member>
1678+ <member name="absolute_size"
1679+ value="20"
1680+ c:identifier="PANGO_ATTR_ABSOLUTE_SIZE"
1681+ glib:nick="absolute-size"
1682+ glib:name="PANGO_ATTR_ABSOLUTE_SIZE">
1683+ <doc xml:space="preserve"
1684+ filename="../pango/pango-attributes.h"
1685+ line="67">font size in pixels scaled by %PANGO_SCALE ([struct@Pango.AttrInt])</doc>
1686+ </member>
1687+ <member name="gravity"
1688+ value="21"
1689+ c:identifier="PANGO_ATTR_GRAVITY"
1690+ glib:nick="gravity"
1691+ glib:name="PANGO_ATTR_GRAVITY">
1692+ <doc xml:space="preserve"
1693+ filename="../pango/pango-attributes.h"
1694+ line="68">base text gravity ([struct@Pango.AttrInt])</doc>
1695+ </member>
1696+ <member name="gravity_hint"
1697+ value="22"
1698+ c:identifier="PANGO_ATTR_GRAVITY_HINT"
1699+ glib:nick="gravity-hint"
1700+ glib:name="PANGO_ATTR_GRAVITY_HINT">
1701+ <doc xml:space="preserve"
1702+ filename="../pango/pango-attributes.h"
1703+ line="69">gravity hint ([struct@Pango.AttrInt])</doc>
1704+ </member>
1705+ <member name="font_features"
1706+ value="23"
1707+ c:identifier="PANGO_ATTR_FONT_FEATURES"
1708+ glib:nick="font-features"
1709+ glib:name="PANGO_ATTR_FONT_FEATURES">
1710+ <doc xml:space="preserve"
1711+ filename="../pango/pango-attributes.h"
1712+ line="70">OpenType font features ([struct@Pango.AttrFontFeatures]). Since 1.38</doc>
1713+ </member>
1714+ <member name="foreground_alpha"
1715+ value="24"
1716+ c:identifier="PANGO_ATTR_FOREGROUND_ALPHA"
1717+ glib:nick="foreground-alpha"
1718+ glib:name="PANGO_ATTR_FOREGROUND_ALPHA">
1719+ <doc xml:space="preserve"
1720+ filename="../pango/pango-attributes.h"
1721+ line="71">foreground alpha ([struct@Pango.AttrInt]). Since 1.38</doc>
1722+ </member>
1723+ <member name="background_alpha"
1724+ value="25"
1725+ c:identifier="PANGO_ATTR_BACKGROUND_ALPHA"
1726+ glib:nick="background-alpha"
1727+ glib:name="PANGO_ATTR_BACKGROUND_ALPHA">
1728+ <doc xml:space="preserve"
1729+ filename="../pango/pango-attributes.h"
1730+ line="72">background alpha ([struct@Pango.AttrInt]). Since 1.38</doc>
1731+ </member>
1732+ <member name="allow_breaks"
1733+ value="26"
1734+ c:identifier="PANGO_ATTR_ALLOW_BREAKS"
1735+ glib:nick="allow-breaks"
1736+ glib:name="PANGO_ATTR_ALLOW_BREAKS">
1737+ <doc xml:space="preserve"
1738+ filename="../pango/pango-attributes.h"
1739+ line="73">whether breaks are allowed ([struct@Pango.AttrInt]). Since 1.44</doc>
1740+ </member>
1741+ <member name="show"
1742+ value="27"
1743+ c:identifier="PANGO_ATTR_SHOW"
1744+ glib:nick="show"
1745+ glib:name="PANGO_ATTR_SHOW">
1746+ <doc xml:space="preserve"
1747+ filename="../pango/pango-attributes.h"
1748+ line="74">how to render invisible characters ([struct@Pango.AttrInt]). Since 1.44</doc>
1749+ </member>
1750+ <member name="insert_hyphens"
1751+ value="28"
1752+ c:identifier="PANGO_ATTR_INSERT_HYPHENS"
1753+ glib:nick="insert-hyphens"
1754+ glib:name="PANGO_ATTR_INSERT_HYPHENS">
1755+ <doc xml:space="preserve"
1756+ filename="../pango/pango-attributes.h"
1757+ line="75">whether to insert hyphens at intra-word line breaks ([struct@Pango.AttrInt]). Since 1.44</doc>
1758+ </member>
1759+ <member name="overline"
1760+ value="29"
1761+ c:identifier="PANGO_ATTR_OVERLINE"
1762+ glib:nick="overline"
1763+ glib:name="PANGO_ATTR_OVERLINE">
1764+ <doc xml:space="preserve"
1765+ filename="../pango/pango-attributes.h"
1766+ line="76">whether the text has an overline ([struct@Pango.AttrInt]). Since 1.46</doc>
1767+ </member>
1768+ <member name="overline_color"
1769+ value="30"
1770+ c:identifier="PANGO_ATTR_OVERLINE_COLOR"
1771+ glib:nick="overline-color"
1772+ glib:name="PANGO_ATTR_OVERLINE_COLOR">
1773+ <doc xml:space="preserve"
1774+ filename="../pango/pango-attributes.h"
1775+ line="77">overline color ([struct@Pango.AttrColor]). Since 1.46</doc>
1776+ </member>
1777+ <member name="line_height"
1778+ value="31"
1779+ c:identifier="PANGO_ATTR_LINE_HEIGHT"
1780+ glib:nick="line-height"
1781+ glib:name="PANGO_ATTR_LINE_HEIGHT">
1782+ <doc xml:space="preserve"
1783+ filename="../pango/pango-attributes.h"
1784+ line="78">line height factor ([struct@Pango.AttrFloat]). Since: 1.50</doc>
1785+ </member>
1786+ <member name="absolute_line_height"
1787+ value="32"
1788+ c:identifier="PANGO_ATTR_ABSOLUTE_LINE_HEIGHT"
1789+ glib:nick="absolute-line-height"
1790+ glib:name="PANGO_ATTR_ABSOLUTE_LINE_HEIGHT">
1791+ <doc xml:space="preserve"
1792+ filename="../pango/pango-attributes.h"
1793+ line="79">line height ([struct@Pango.AttrInt]). Since: 1.50</doc>
1794+ </member>
1795+ <member name="text_transform"
1796+ value="33"
1797+ c:identifier="PANGO_ATTR_TEXT_TRANSFORM"
1798+ glib:nick="text-transform"
1799+ glib:name="PANGO_ATTR_TEXT_TRANSFORM">
1800+ </member>
1801+ <member name="word"
1802+ value="34"
1803+ c:identifier="PANGO_ATTR_WORD"
1804+ glib:nick="word"
1805+ glib:name="PANGO_ATTR_WORD">
1806+ <doc xml:space="preserve"
1807+ filename="../pango/pango-attributes.h"
1808+ line="80">override segmentation to classify the range of the attribute as a single word ([struct@Pango.AttrInt]). Since 1.50</doc>
1809+ </member>
1810+ <member name="sentence"
1811+ value="35"
1812+ c:identifier="PANGO_ATTR_SENTENCE"
1813+ glib:nick="sentence"
1814+ glib:name="PANGO_ATTR_SENTENCE">
1815+ <doc xml:space="preserve"
1816+ filename="../pango/pango-attributes.h"
1817+ line="81">override segmentation to classify the range of the attribute as a single sentence ([struct@Pango.AttrInt]). Since 1.50</doc>
1818+ </member>
1819+ <member name="baseline_shift"
1820+ value="36"
1821+ c:identifier="PANGO_ATTR_BASELINE_SHIFT"
1822+ glib:nick="baseline-shift"
1823+ glib:name="PANGO_ATTR_BASELINE_SHIFT">
1824+ <doc xml:space="preserve"
1825+ filename="../pango/pango-attributes.h"
1826+ line="82">baseline displacement ([struct@Pango.AttrInt]). Since 1.50</doc>
1827+ </member>
1828+ <member name="font_scale"
1829+ value="37"
1830+ c:identifier="PANGO_ATTR_FONT_SCALE"
1831+ glib:nick="font-scale"
1832+ glib:name="PANGO_ATTR_FONT_SCALE">
1833+ <doc xml:space="preserve"
1834+ filename="../pango/pango-attributes.h"
1835+ line="83">font-relative size change ([struct@Pango.AttrInt]). Since 1.50</doc>
1836+ </member>
1837+ <function name="get_name"
1838+ c:identifier="pango_attr_type_get_name"
1839+ version="1.22">
1840+ <doc xml:space="preserve"
1841+ filename="../pango/pango-attributes.c"
1842+ line="69">Fetches the attribute type name.
1843+
1844+The attribute type name is the string passed in
1845+when registering the type using
1846+[func@Pango.AttrType.register].
1847+
1848+The returned value is an interned string (see
1849+g_intern_string() for what that means) that should
1850+not be modified or freed.</doc>
1851+ <source-position filename="../pango/pango-attributes.h" line="506"/>
1852+ <return-value transfer-ownership="none" nullable="1">
1853+ <doc xml:space="preserve"
1854+ filename="../pango/pango-attributes.c"
1855+ line="83">the type ID name (which
1856+ may be %NULL), or %NULL if @type is a built-in Pango
1857+ attribute type or invalid.</doc>
1858+ <type name="utf8" c:type="const char*"/>
1859+ </return-value>
1860+ <parameters>
1861+ <parameter name="type" transfer-ownership="none">
1862+ <doc xml:space="preserve"
1863+ filename="../pango/pango-attributes.c"
1864+ line="71">an attribute type ID to fetch the name for</doc>
1865+ <type name="AttrType" c:type="PangoAttrType"/>
1866+ </parameter>
1867+ </parameters>
1868+ </function>
1869+ <function name="register" c:identifier="pango_attr_type_register">
1870+ <doc xml:space="preserve"
1871+ filename="../pango/pango-attributes.c"
1872+ line="35">Allocate a new attribute type ID.
1873+
1874+The attribute type name can be accessed later
1875+by using [func@Pango.AttrType.get_name].</doc>
1876+ <source-position filename="../pango/pango-attributes.h" line="504"/>
1877+ <return-value transfer-ownership="none">
1878+ <doc xml:space="preserve"
1879+ filename="../pango/pango-attributes.c"
1880+ line="44">the new type ID.</doc>
1881+ <type name="AttrType" c:type="PangoAttrType"/>
1882+ </return-value>
1883+ <parameters>
1884+ <parameter name="name" transfer-ownership="none">
1885+ <doc xml:space="preserve"
1886+ filename="../pango/pango-attributes.c"
1887+ line="37">an identifier for the type</doc>
1888+ <type name="utf8" c:type="const char*"/>
1889+ </parameter>
1890+ </parameters>
1891+ </function>
1892+ </enumeration>
1893+ <record name="Attribute"
1894+ c:type="PangoAttribute"
1895+ glib:type-name="PangoAttribute"
1896+ glib:get-type="pango_attribute_get_type"
1897+ c:symbol-prefix="attribute">
1898+ <doc xml:space="preserve"
1899+ filename="../pango/pango-attributes.h"
1900+ line="290">The `PangoAttribute` structure represents the common portions of all
1901+attributes.
1902+
1903+Particular types of attributes include this structure as their initial
1904+portion. The common portion of the attribute holds the range to which
1905+the value in the type-specific part of the attribute applies and should
1906+be initialized using [method@Pango.Attribute.init]. By default, an attribute
1907+will have an all-inclusive range of [0,%G_MAXUINT].</doc>
1908+ <source-position filename="../pango/pango-attributes.h" line="311"/>
1909+ <field name="klass" writable="1">
1910+ <doc xml:space="preserve"
1911+ filename="../pango/pango-attributes.h"
1912+ line="292">the class structure holding information about the type of the attribute</doc>
1913+ <type name="AttrClass" c:type="const PangoAttrClass*"/>
1914+ </field>
1915+ <field name="start_index" writable="1">
1916+ <doc xml:space="preserve"
1917+ filename="../pango/pango-attributes.h"
1918+ line="293">the start index of the range (in bytes).</doc>
1919+ <type name="guint" c:type="guint"/>
1920+ </field>
1921+ <field name="end_index" writable="1">
1922+ <doc xml:space="preserve"
1923+ filename="../pango/pango-attributes.h"
1924+ line="294">end index of the range (in bytes). The character at this index
1925+ is not included in the range.</doc>
1926+ <type name="guint" c:type="guint"/>
1927+ </field>
1928+ <method name="as_color"
1929+ c:identifier="pango_attribute_as_color"
1930+ version="1.50">
1931+ <doc xml:space="preserve"
1932+ filename="../pango/pango-attributes.c"
1933+ line="1690">Returns the attribute cast to `PangoAttrColor`.
1934+
1935+This is mainly useful for language bindings.</doc>
1936+ <source-position filename="../pango/pango-attributes.h" line="624"/>
1937+ <return-value transfer-ownership="none" nullable="1">
1938+ <doc xml:space="preserve"
1939+ filename="../pango/pango-attributes.c"
1940+ line="1698">The attribute as `PangoAttrColor`,
1941+ or %NULL if it's not a color attribute</doc>
1942+ <type name="AttrColor" c:type="PangoAttrColor*"/>
1943+ </return-value>
1944+ <parameters>
1945+ <instance-parameter name="attr" transfer-ownership="none">
1946+ <doc xml:space="preserve"
1947+ filename="../pango/pango-attributes.c"
1948+ line="1692">A `PangoAttribute` such as foreground</doc>
1949+ <type name="Attribute" c:type="PangoAttribute*"/>
1950+ </instance-parameter>
1951+ </parameters>
1952+ </method>
1953+ <method name="as_float"
1954+ c:identifier="pango_attribute_as_float"
1955+ version="1.50">
1956+ <doc xml:space="preserve"
1957+ filename="../pango/pango-attributes.c"
1958+ line="1610">Returns the attribute cast to `PangoAttrFloat`.
1959+
1960+This is mainly useful for language bindings.</doc>
1961+ <source-position filename="../pango/pango-attributes.h" line="622"/>
1962+ <return-value transfer-ownership="none" nullable="1">
1963+ <doc xml:space="preserve"
1964+ filename="../pango/pango-attributes.c"
1965+ line="1618">The attribute as `PangoAttrFloat`,
1966+ or %NULL if it's not a floating point attribute</doc>
1967+ <type name="AttrFloat" c:type="PangoAttrFloat*"/>
1968+ </return-value>
1969+ <parameters>
1970+ <instance-parameter name="attr" transfer-ownership="none">
1971+ <doc xml:space="preserve"
1972+ filename="../pango/pango-attributes.c"
1973+ line="1612">A `PangoAttribute` such as scale</doc>
1974+ <type name="Attribute" c:type="PangoAttribute*"/>
1975+ </instance-parameter>
1976+ </parameters>
1977+ </method>
1978+ <method name="as_font_desc"
1979+ c:identifier="pango_attribute_as_font_desc"
1980+ version="1.50">
1981+ <doc xml:space="preserve"
1982+ filename="../pango/pango-attributes.c"
1983+ line="1720">Returns the attribute cast to `PangoAttrFontDesc`.
1984+
1985+This is mainly useful for language bindings.</doc>
1986+ <source-position filename="../pango/pango-attributes.h" line="626"/>
1987+ <return-value transfer-ownership="none" nullable="1">
1988+ <doc xml:space="preserve"
1989+ filename="../pango/pango-attributes.c"
1990+ line="1728">The attribute as `PangoAttrFontDesc`,
1991+ or %NULL if it's not a font description attribute</doc>
1992+ <type name="AttrFontDesc" c:type="PangoAttrFontDesc*"/>
1993+ </return-value>
1994+ <parameters>
1995+ <instance-parameter name="attr" transfer-ownership="none">
1996+ <doc xml:space="preserve"
1997+ filename="../pango/pango-attributes.c"
1998+ line="1722">A `PangoAttribute` representing a font description</doc>
1999+ <type name="Attribute" c:type="PangoAttribute*"/>
2000+ </instance-parameter>
2001+ </parameters>
2002+ </method>
2003+ <method name="as_font_features"
2004+ c:identifier="pango_attribute_as_font_features"
2005+ version="1.50">
2006+ <doc xml:space="preserve"
2007+ filename="../pango/pango-attributes.c"
2008+ line="1746">Returns the attribute cast to `PangoAttrFontFeatures`.
2009+
2010+This is mainly useful for language bindings.</doc>
2011+ <source-position filename="../pango/pango-attributes.h" line="630"/>
2012+ <return-value transfer-ownership="none" nullable="1">
2013+ <doc xml:space="preserve"
2014+ filename="../pango/pango-attributes.c"
2015+ line="1754">The attribute as `PangoAttrFontFeatures`,
2016+ or %NULL if it's not a font features attribute</doc>
2017+ <type name="AttrFontFeatures" c:type="PangoAttrFontFeatures*"/>
2018+ </return-value>
2019+ <parameters>
2020+ <instance-parameter name="attr" transfer-ownership="none">
2021+ <doc xml:space="preserve"
2022+ filename="../pango/pango-attributes.c"
2023+ line="1748">A `PangoAttribute` representing font features</doc>
2024+ <type name="Attribute" c:type="PangoAttribute*"/>
2025+ </instance-parameter>
2026+ </parameters>
2027+ </method>
2028+ <method name="as_int"
2029+ c:identifier="pango_attribute_as_int"
2030+ version="1.50">
2031+ <doc xml:space="preserve"
2032+ filename="../pango/pango-attributes.c"
2033+ line="1562">Returns the attribute cast to `PangoAttrInt`.
2034+
2035+This is mainly useful for language bindings.</doc>
2036+ <source-position filename="../pango/pango-attributes.h" line="618"/>
2037+ <return-value transfer-ownership="none" nullable="1">
2038+ <doc xml:space="preserve"
2039+ filename="../pango/pango-attributes.c"
2040+ line="1570">The attribute as `PangoAttrInt`,
2041+ or %NULL if it's not an integer attribute</doc>
2042+ <type name="AttrInt" c:type="PangoAttrInt*"/>
2043+ </return-value>
2044+ <parameters>
2045+ <instance-parameter name="attr" transfer-ownership="none">
2046+ <doc xml:space="preserve"
2047+ filename="../pango/pango-attributes.c"
2048+ line="1564">A `PangoAttribute` such as weight</doc>
2049+ <type name="Attribute" c:type="PangoAttribute*"/>
2050+ </instance-parameter>
2051+ </parameters>
2052+ </method>
2053+ <method name="as_language"
2054+ c:identifier="pango_attribute_as_language"
2055+ version="1.50">
2056+ <doc xml:space="preserve"
2057+ filename="../pango/pango-attributes.c"
2058+ line="1772">Returns the attribute cast to `PangoAttrLanguage`.
2059+
2060+This is mainly useful for language bindings.</doc>
2061+ <source-position filename="../pango/pango-attributes.h" line="616"/>
2062+ <return-value transfer-ownership="none" nullable="1">
2063+ <doc xml:space="preserve"
2064+ filename="../pango/pango-attributes.c"
2065+ line="1780">The attribute as `PangoAttrLanguage`,
2066+ or %NULL if it's not a language attribute</doc>
2067+ <type name="AttrLanguage" c:type="PangoAttrLanguage*"/>
2068+ </return-value>
2069+ <parameters>
2070+ <instance-parameter name="attr" transfer-ownership="none">
2071+ <doc xml:space="preserve"
2072+ filename="../pango/pango-attributes.c"
2073+ line="1774">A `PangoAttribute` representing a language</doc>
2074+ <type name="Attribute" c:type="PangoAttribute*"/>
2075+ </instance-parameter>
2076+ </parameters>
2077+ </method>
2078+ <method name="as_shape"
2079+ c:identifier="pango_attribute_as_shape"
2080+ version="1.50">
2081+ <doc xml:space="preserve"
2082+ filename="../pango/pango-attributes.c"
2083+ line="1798">Returns the attribute cast to `PangoAttrShape`.
2084+
2085+This is mainly useful for language bindings.</doc>
2086+ <source-position filename="../pango/pango-attributes.h" line="628"/>
2087+ <return-value transfer-ownership="none" nullable="1">
2088+ <doc xml:space="preserve"
2089+ filename="../pango/pango-attributes.c"
2090+ line="1806">The attribute as `PangoAttrShape`,
2091+ or %NULL if it's not a shape attribute</doc>
2092+ <type name="AttrShape" c:type="PangoAttrShape*"/>
2093+ </return-value>
2094+ <parameters>
2095+ <instance-parameter name="attr" transfer-ownership="none">
2096+ <doc xml:space="preserve"
2097+ filename="../pango/pango-attributes.c"
2098+ line="1800">A `PangoAttribute` representing a shape</doc>
2099+ <type name="Attribute" c:type="PangoAttribute*"/>
2100+ </instance-parameter>
2101+ </parameters>
2102+ </method>
2103+ <method name="as_size"
2104+ c:identifier="pango_attribute_as_size"
2105+ version="1.50">
2106+ <doc xml:space="preserve"
2107+ filename="../pango/pango-attributes.c"
2108+ line="1663">Returns the attribute cast to `PangoAttrSize`.
2109+
2110+This is mainly useful for language bindings.</doc>
2111+ <source-position filename="../pango/pango-attributes.h" line="620"/>
2112+ <return-value transfer-ownership="none" nullable="1">
2113+ <doc xml:space="preserve"
2114+ filename="../pango/pango-attributes.c"
2115+ line="1671">The attribute as `PangoAttrSize`,
2116+ or NULL if it's not a size attribute</doc>
2117+ <type name="AttrSize" c:type="PangoAttrSize*"/>
2118+ </return-value>
2119+ <parameters>
2120+ <instance-parameter name="attr" transfer-ownership="none">
2121+ <doc xml:space="preserve"
2122+ filename="../pango/pango-attributes.c"
2123+ line="1665">A `PangoAttribute` representing a size</doc>
2124+ <type name="Attribute" c:type="PangoAttribute*"/>
2125+ </instance-parameter>
2126+ </parameters>
2127+ </method>
2128+ <method name="as_string"
2129+ c:identifier="pango_attribute_as_string"
2130+ version="1.50">
2131+ <doc xml:space="preserve"
2132+ filename="../pango/pango-attributes.c"
2133+ line="1637">Returns the attribute cast to `PangoAttrString`.
2134+
2135+This is mainly useful for language bindings.</doc>
2136+ <source-position filename="../pango/pango-attributes.h" line="614"/>
2137+ <return-value transfer-ownership="none" nullable="1">
2138+ <doc xml:space="preserve"
2139+ filename="../pango/pango-attributes.c"
2140+ line="1645">The attribute as `PangoAttrString`,
2141+ or %NULL if it's not a string attribute</doc>
2142+ <type name="AttrString" c:type="PangoAttrString*"/>
2143+ </return-value>
2144+ <parameters>
2145+ <instance-parameter name="attr" transfer-ownership="none">
2146+ <doc xml:space="preserve"
2147+ filename="../pango/pango-attributes.c"
2148+ line="1639">A `PangoAttribute` such as family</doc>
2149+ <type name="Attribute" c:type="PangoAttribute*"/>
2150+ </instance-parameter>
2151+ </parameters>
2152+ </method>
2153+ <method name="copy" c:identifier="pango_attribute_copy">
2154+ <doc xml:space="preserve"
2155+ filename="../pango/pango-attributes.c"
2156+ line="128">Make a copy of an attribute.</doc>
2157+ <source-position filename="../pango/pango-attributes.h" line="511"/>
2158+ <return-value transfer-ownership="full">
2159+ <doc xml:space="preserve"
2160+ filename="../pango/pango-attributes.c"
2161+ line="134">the newly allocated
2162+ `PangoAttribute`, which should be freed with
2163+ [method@Pango.Attribute.destroy].</doc>
2164+ <type name="Attribute" c:type="PangoAttribute*"/>
2165+ </return-value>
2166+ <parameters>
2167+ <instance-parameter name="attr" transfer-ownership="none">
2168+ <doc xml:space="preserve"
2169+ filename="../pango/pango-attributes.c"
2170+ line="130">a `PangoAttribute`</doc>
2171+ <type name="Attribute" c:type="const PangoAttribute*"/>
2172+ </instance-parameter>
2173+ </parameters>
2174+ </method>
2175+ <method name="destroy" c:identifier="pango_attribute_destroy">
2176+ <doc xml:space="preserve"
2177+ filename="../pango/pango-attributes.c"
2178+ line="152">Destroy a `PangoAttribute` and free all associated memory.</doc>
2179+ <source-position filename="../pango/pango-attributes.h" line="513"/>
2180+ <return-value transfer-ownership="none">
2181+ <type name="none" c:type="void"/>
2182+ </return-value>
2183+ <parameters>
2184+ <instance-parameter name="attr" transfer-ownership="none">
2185+ <doc xml:space="preserve"
2186+ filename="../pango/pango-attributes.c"
2187+ line="154">a `PangoAttribute`.</doc>
2188+ <type name="Attribute" c:type="PangoAttribute*"/>
2189+ </instance-parameter>
2190+ </parameters>
2191+ </method>
2192+ <method name="equal" c:identifier="pango_attribute_equal">
2193+ <doc xml:space="preserve"
2194+ filename="../pango/pango-attributes.c"
2195+ line="170">Compare two attributes for equality.
2196+
2197+This compares only the actual value of the two
2198+attributes and not the ranges that the attributes
2199+apply to.</doc>
2200+ <source-position filename="../pango/pango-attributes.h" line="515"/>
2201+ <return-value transfer-ownership="none">
2202+ <doc xml:space="preserve"
2203+ filename="../pango/pango-attributes.c"
2204+ line="181">%TRUE if the two attributes have the same value</doc>
2205+ <type name="gboolean" c:type="gboolean"/>
2206+ </return-value>
2207+ <parameters>
2208+ <instance-parameter name="attr1" transfer-ownership="none">
2209+ <doc xml:space="preserve"
2210+ filename="../pango/pango-attributes.c"
2211+ line="172">a `PangoAttribute`</doc>
2212+ <type name="Attribute" c:type="const PangoAttribute*"/>
2213+ </instance-parameter>
2214+ <parameter name="attr2" transfer-ownership="none">
2215+ <doc xml:space="preserve"
2216+ filename="../pango/pango-attributes.c"
2217+ line="173">another `PangoAttribute`</doc>
2218+ <type name="Attribute" c:type="const PangoAttribute*"/>
2219+ </parameter>
2220+ </parameters>
2221+ </method>
2222+ <method name="init" c:identifier="pango_attribute_init" version="1.20">
2223+ <doc xml:space="preserve"
2224+ filename="../pango/pango-attributes.c"
2225+ line="104">Initializes @attr's klass to @klass, it's start_index to
2226+%PANGO_ATTR_INDEX_FROM_TEXT_BEGINNING and end_index to
2227+%PANGO_ATTR_INDEX_TO_TEXT_END such that the attribute applies
2228+to the entire text by default.</doc>
2229+ <source-position filename="../pango/pango-attributes.h" line="508"/>
2230+ <return-value transfer-ownership="none">
2231+ <type name="none" c:type="void"/>
2232+ </return-value>
2233+ <parameters>
2234+ <instance-parameter name="attr" transfer-ownership="none">
2235+ <doc xml:space="preserve"
2236+ filename="../pango/pango-attributes.c"
2237+ line="106">a `PangoAttribute`</doc>
2238+ <type name="Attribute" c:type="PangoAttribute*"/>
2239+ </instance-parameter>
2240+ <parameter name="klass" transfer-ownership="none">
2241+ <doc xml:space="preserve"
2242+ filename="../pango/pango-attributes.c"
2243+ line="107">a `PangoAttrClass`</doc>
2244+ <type name="AttrClass" c:type="const PangoAttrClass*"/>
2245+ </parameter>
2246+ </parameters>
2247+ </method>
2248+ </record>
2249+ <enumeration name="BaselineShift"
2250+ version="1.50"
2251+ glib:type-name="PangoBaselineShift"
2252+ glib:get-type="pango_baseline_shift_get_type"
2253+ c:type="PangoBaselineShift">
2254+ <doc xml:space="preserve"
2255+ filename="../pango/pango-attributes.h"
2256+ line="233">An enumeration that affects baseline shifts between runs.</doc>
2257+ <member name="none"
2258+ value="0"
2259+ c:identifier="PANGO_BASELINE_SHIFT_NONE"
2260+ glib:nick="none"
2261+ glib:name="PANGO_BASELINE_SHIFT_NONE">
2262+ <doc xml:space="preserve"
2263+ filename="../pango/pango-attributes.h"
2264+ line="235">Leave the baseline unchanged</doc>
2265+ </member>
2266+ <member name="superscript"
2267+ value="1"
2268+ c:identifier="PANGO_BASELINE_SHIFT_SUPERSCRIPT"
2269+ glib:nick="superscript"
2270+ glib:name="PANGO_BASELINE_SHIFT_SUPERSCRIPT">
2271+ <doc xml:space="preserve"
2272+ filename="../pango/pango-attributes.h"
2273+ line="236">Shift the baseline to the superscript position,
2274+ relative to the previous run</doc>
2275+ </member>
2276+ <member name="subscript"
2277+ value="2"
2278+ c:identifier="PANGO_BASELINE_SHIFT_SUBSCRIPT"
2279+ glib:nick="subscript"
2280+ glib:name="PANGO_BASELINE_SHIFT_SUBSCRIPT">
2281+ <doc xml:space="preserve"
2282+ filename="../pango/pango-attributes.h"
2283+ line="238">Shift the baseline to the subscript position,
2284+ relative to the previous run</doc>
2285+ </member>
2286+ </enumeration>
2287+ <enumeration name="BidiType"
2288+ version="1.22"
2289+ deprecated="1"
2290+ deprecated-version="1.44"
2291+ glib:type-name="PangoBidiType"
2292+ glib:get-type="pango_bidi_type_get_type"
2293+ c:type="PangoBidiType">
2294+ <doc xml:space="preserve"
2295+ filename="../pango/pango-bidi-type.h"
2296+ line="33">`PangoBidiType` represents the bidirectional character
2297+type of a Unicode character.
2298+
2299+The values in this enumeration are specified by the
2300+[Unicode bidirectional algorithm](http://www.unicode.org/reports/tr9/).</doc>
2301+ <doc-deprecated xml:space="preserve">Use fribidi for this information</doc-deprecated>
2302+ <member name="l"
2303+ value="0"
2304+ c:identifier="PANGO_BIDI_TYPE_L"
2305+ glib:nick="l"
2306+ glib:name="PANGO_BIDI_TYPE_L">
2307+ <doc xml:space="preserve"
2308+ filename="../pango/pango-bidi-type.h"
2309+ line="35">Left-to-Right</doc>
2310+ </member>
2311+ <member name="lre"
2312+ value="1"
2313+ c:identifier="PANGO_BIDI_TYPE_LRE"
2314+ glib:nick="lre"
2315+ glib:name="PANGO_BIDI_TYPE_LRE">
2316+ <doc xml:space="preserve"
2317+ filename="../pango/pango-bidi-type.h"
2318+ line="36">Left-to-Right Embedding</doc>
2319+ </member>
2320+ <member name="lro"
2321+ value="2"
2322+ c:identifier="PANGO_BIDI_TYPE_LRO"
2323+ glib:nick="lro"
2324+ glib:name="PANGO_BIDI_TYPE_LRO">
2325+ <doc xml:space="preserve"
2326+ filename="../pango/pango-bidi-type.h"
2327+ line="37">Left-to-Right Override</doc>
2328+ </member>
2329+ <member name="r"
2330+ value="3"
2331+ c:identifier="PANGO_BIDI_TYPE_R"
2332+ glib:nick="r"
2333+ glib:name="PANGO_BIDI_TYPE_R">
2334+ <doc xml:space="preserve"
2335+ filename="../pango/pango-bidi-type.h"
2336+ line="38">Right-to-Left</doc>
2337+ </member>
2338+ <member name="al"
2339+ value="4"
2340+ c:identifier="PANGO_BIDI_TYPE_AL"
2341+ glib:nick="al"
2342+ glib:name="PANGO_BIDI_TYPE_AL">
2343+ <doc xml:space="preserve"
2344+ filename="../pango/pango-bidi-type.h"
2345+ line="39">Right-to-Left Arabic</doc>
2346+ </member>
2347+ <member name="rle"
2348+ value="5"
2349+ c:identifier="PANGO_BIDI_TYPE_RLE"
2350+ glib:nick="rle"
2351+ glib:name="PANGO_BIDI_TYPE_RLE">
2352+ <doc xml:space="preserve"
2353+ filename="../pango/pango-bidi-type.h"
2354+ line="40">Right-to-Left Embedding</doc>
2355+ </member>
2356+ <member name="rlo"
2357+ value="6"
2358+ c:identifier="PANGO_BIDI_TYPE_RLO"
2359+ glib:nick="rlo"
2360+ glib:name="PANGO_BIDI_TYPE_RLO">
2361+ <doc xml:space="preserve"
2362+ filename="../pango/pango-bidi-type.h"
2363+ line="41">Right-to-Left Override</doc>
2364+ </member>
2365+ <member name="pdf"
2366+ value="7"
2367+ c:identifier="PANGO_BIDI_TYPE_PDF"
2368+ glib:nick="pdf"
2369+ glib:name="PANGO_BIDI_TYPE_PDF">
2370+ <doc xml:space="preserve"
2371+ filename="../pango/pango-bidi-type.h"
2372+ line="42">Pop Directional Format</doc>
2373+ </member>
2374+ <member name="en"
2375+ value="8"
2376+ c:identifier="PANGO_BIDI_TYPE_EN"
2377+ glib:nick="en"
2378+ glib:name="PANGO_BIDI_TYPE_EN">
2379+ <doc xml:space="preserve"
2380+ filename="../pango/pango-bidi-type.h"
2381+ line="43">European Number</doc>
2382+ </member>
2383+ <member name="es"
2384+ value="9"
2385+ c:identifier="PANGO_BIDI_TYPE_ES"
2386+ glib:nick="es"
2387+ glib:name="PANGO_BIDI_TYPE_ES">
2388+ <doc xml:space="preserve"
2389+ filename="../pango/pango-bidi-type.h"
2390+ line="44">European Number Separator</doc>
2391+ </member>
2392+ <member name="et"
2393+ value="10"
2394+ c:identifier="PANGO_BIDI_TYPE_ET"
2395+ glib:nick="et"
2396+ glib:name="PANGO_BIDI_TYPE_ET">
2397+ <doc xml:space="preserve"
2398+ filename="../pango/pango-bidi-type.h"
2399+ line="45">European Number Terminator</doc>
2400+ </member>
2401+ <member name="an"
2402+ value="11"
2403+ c:identifier="PANGO_BIDI_TYPE_AN"
2404+ glib:nick="an"
2405+ glib:name="PANGO_BIDI_TYPE_AN">
2406+ <doc xml:space="preserve"
2407+ filename="../pango/pango-bidi-type.h"
2408+ line="46">Arabic Number</doc>
2409+ </member>
2410+ <member name="cs"
2411+ value="12"
2412+ c:identifier="PANGO_BIDI_TYPE_CS"
2413+ glib:nick="cs"
2414+ glib:name="PANGO_BIDI_TYPE_CS">
2415+ <doc xml:space="preserve"
2416+ filename="../pango/pango-bidi-type.h"
2417+ line="47">Common Number Separator</doc>
2418+ </member>
2419+ <member name="nsm"
2420+ value="13"
2421+ c:identifier="PANGO_BIDI_TYPE_NSM"
2422+ glib:nick="nsm"
2423+ glib:name="PANGO_BIDI_TYPE_NSM">
2424+ <doc xml:space="preserve"
2425+ filename="../pango/pango-bidi-type.h"
2426+ line="48">Nonspacing Mark</doc>
2427+ </member>
2428+ <member name="bn"
2429+ value="14"
2430+ c:identifier="PANGO_BIDI_TYPE_BN"
2431+ glib:nick="bn"
2432+ glib:name="PANGO_BIDI_TYPE_BN">
2433+ <doc xml:space="preserve"
2434+ filename="../pango/pango-bidi-type.h"
2435+ line="49">Boundary Neutral</doc>
2436+ </member>
2437+ <member name="b"
2438+ value="15"
2439+ c:identifier="PANGO_BIDI_TYPE_B"
2440+ glib:nick="b"
2441+ glib:name="PANGO_BIDI_TYPE_B">
2442+ <doc xml:space="preserve"
2443+ filename="../pango/pango-bidi-type.h"
2444+ line="50">Paragraph Separator</doc>
2445+ </member>
2446+ <member name="s"
2447+ value="16"
2448+ c:identifier="PANGO_BIDI_TYPE_S"
2449+ glib:nick="s"
2450+ glib:name="PANGO_BIDI_TYPE_S">
2451+ <doc xml:space="preserve"
2452+ filename="../pango/pango-bidi-type.h"
2453+ line="51">Segment Separator</doc>
2454+ </member>
2455+ <member name="ws"
2456+ value="17"
2457+ c:identifier="PANGO_BIDI_TYPE_WS"
2458+ glib:nick="ws"
2459+ glib:name="PANGO_BIDI_TYPE_WS">
2460+ <doc xml:space="preserve"
2461+ filename="../pango/pango-bidi-type.h"
2462+ line="52">Whitespace</doc>
2463+ </member>
2464+ <member name="on"
2465+ value="18"
2466+ c:identifier="PANGO_BIDI_TYPE_ON"
2467+ glib:nick="on"
2468+ glib:name="PANGO_BIDI_TYPE_ON">
2469+ <doc xml:space="preserve"
2470+ filename="../pango/pango-bidi-type.h"
2471+ line="53">Other Neutrals</doc>
2472+ </member>
2473+ <member name="lri"
2474+ value="19"
2475+ c:identifier="PANGO_BIDI_TYPE_LRI"
2476+ glib:nick="lri"
2477+ glib:name="PANGO_BIDI_TYPE_LRI">
2478+ <doc xml:space="preserve"
2479+ filename="../pango/pango-bidi-type.h"
2480+ line="54">Left-to-Right isolate. Since 1.48.6</doc>
2481+ </member>
2482+ <member name="rli"
2483+ value="20"
2484+ c:identifier="PANGO_BIDI_TYPE_RLI"
2485+ glib:nick="rli"
2486+ glib:name="PANGO_BIDI_TYPE_RLI">
2487+ <doc xml:space="preserve"
2488+ filename="../pango/pango-bidi-type.h"
2489+ line="55">Right-to-Left isolate. Since 1.48.6</doc>
2490+ </member>
2491+ <member name="fsi"
2492+ value="21"
2493+ c:identifier="PANGO_BIDI_TYPE_FSI"
2494+ glib:nick="fsi"
2495+ glib:name="PANGO_BIDI_TYPE_FSI">
2496+ <doc xml:space="preserve"
2497+ filename="../pango/pango-bidi-type.h"
2498+ line="56">First strong isolate. Since 1.48.6</doc>
2499+ </member>
2500+ <member name="pdi"
2501+ value="22"
2502+ c:identifier="PANGO_BIDI_TYPE_PDI"
2503+ glib:nick="pdi"
2504+ glib:name="PANGO_BIDI_TYPE_PDI">
2505+ <doc xml:space="preserve"
2506+ filename="../pango/pango-bidi-type.h"
2507+ line="57">Pop directional isolate. Since 1.48.6</doc>
2508+ </member>
2509+ <function name="for_unichar"
2510+ c:identifier="pango_bidi_type_for_unichar"
2511+ version="1.22">
2512+ <doc xml:space="preserve"
2513+ filename="../pango/pango-bidi-type.c"
2514+ line="33">Determines the bidirectional type of a character.
2515+
2516+The bidirectional type is specified in the Unicode Character Database.
2517+
2518+A simplified version of this function is available as [func@unichar_direction].</doc>
2519+ <source-position filename="../pango/pango-bidi-type.h" line="102"/>
2520+ <return-value transfer-ownership="none">
2521+ <doc xml:space="preserve"
2522+ filename="../pango/pango-bidi-type.c"
2523+ line="43">the bidirectional character type, as used in the
2524+Unicode bidirectional algorithm.</doc>
2525+ <type name="BidiType" c:type="PangoBidiType"/>
2526+ </return-value>
2527+ <parameters>
2528+ <parameter name="ch" transfer-ownership="none">
2529+ <doc xml:space="preserve"
2530+ filename="../pango/pango-bidi-type.c"
2531+ line="35">a Unicode character</doc>
2532+ <type name="gunichar" c:type="gunichar"/>
2533+ </parameter>
2534+ </parameters>
2535+ </function>
2536+ </enumeration>
2537+ <function-macro name="CONTEXT"
2538+ c:identifier="PANGO_CONTEXT"
2539+ introspectable="0">
2540+ <source-position filename="../pango/pango-context.h" line="36"/>
2541+ <parameters>
2542+ <parameter name="object">
2543+ </parameter>
2544+ </parameters>
2545+ </function-macro>
2546+ <function-macro name="CONTEXT_CLASS"
2547+ c:identifier="PANGO_CONTEXT_CLASS"
2548+ introspectable="0">
2549+ <source-position filename="../pango/pango-context.h" line="37"/>
2550+ <parameters>
2551+ <parameter name="klass">
2552+ </parameter>
2553+ </parameters>
2554+ </function-macro>
2555+ <function-macro name="CONTEXT_GET_CLASS"
2556+ c:identifier="PANGO_CONTEXT_GET_CLASS"
2557+ introspectable="0">
2558+ <source-position filename="../pango/pango-context.h" line="40"/>
2559+ <parameters>
2560+ <parameter name="obj">
2561+ </parameter>
2562+ </parameters>
2563+ </function-macro>
2564+ <record name="Color"
2565+ c:type="PangoColor"
2566+ glib:type-name="PangoColor"
2567+ glib:get-type="pango_color_get_type"
2568+ c:symbol-prefix="color">
2569+ <doc xml:space="preserve"
2570+ filename="../pango/pango-color.h"
2571+ line="33">The `PangoColor` structure is used to
2572+represent a color in an uncalibrated RGB color-space.</doc>
2573+ <source-position filename="../pango/pango-color.h" line="47"/>
2574+ <field name="red" writable="1">
2575+ <doc xml:space="preserve"
2576+ filename="../pango/pango-color.h"
2577+ line="35">value of red component</doc>
2578+ <type name="guint16" c:type="guint16"/>
2579+ </field>
2580+ <field name="green" writable="1">
2581+ <doc xml:space="preserve"
2582+ filename="../pango/pango-color.h"
2583+ line="36">value of green component</doc>
2584+ <type name="guint16" c:type="guint16"/>
2585+ </field>
2586+ <field name="blue" writable="1">
2587+ <doc xml:space="preserve"
2588+ filename="../pango/pango-color.h"
2589+ line="37">value of blue component</doc>
2590+ <type name="guint16" c:type="guint16"/>
2591+ </field>
2592+ <method name="copy" c:identifier="pango_color_copy">
2593+ <doc xml:space="preserve"
2594+ filename="../pango/pango-color.c"
2595+ line="35">Creates a copy of @src.
2596+
2597+The copy should be freed with [method@Pango.Color.free].
2598+Primarily used by language bindings, not that useful
2599+otherwise (since colors can just be copied by assignment
2600+in C).</doc>
2601+ <source-position filename="../pango/pango-color.h" line="55"/>
2602+ <return-value transfer-ownership="full" nullable="1">
2603+ <doc xml:space="preserve"
2604+ filename="../pango/pango-color.c"
2605+ line="46">the newly allocated `PangoColor`,
2606+ which should be freed with [method@Pango.Color.free]</doc>
2607+ <type name="Color" c:type="PangoColor*"/>
2608+ </return-value>
2609+ <parameters>
2610+ <instance-parameter name="src"
2611+ transfer-ownership="none"
2612+ nullable="1"
2613+ allow-none="1">
2614+ <doc xml:space="preserve"
2615+ filename="../pango/pango-color.c"
2616+ line="37">color to copy</doc>
2617+ <type name="Color" c:type="const PangoColor*"/>
2618+ </instance-parameter>
2619+ </parameters>
2620+ </method>
2621+ <method name="free" c:identifier="pango_color_free">
2622+ <doc xml:space="preserve"
2623+ filename="../pango/pango-color.c"
2624+ line="64">Frees a color allocated by [method@Pango.Color.copy].</doc>
2625+ <source-position filename="../pango/pango-color.h" line="58"/>
2626+ <return-value transfer-ownership="none">
2627+ <type name="none" c:type="void"/>
2628+ </return-value>
2629+ <parameters>
2630+ <instance-parameter name="color"
2631+ transfer-ownership="none"
2632+ nullable="1"
2633+ allow-none="1">
2634+ <doc xml:space="preserve"
2635+ filename="../pango/pango-color.c"
2636+ line="66">an allocated `PangoColor`</doc>
2637+ <type name="Color" c:type="PangoColor*"/>
2638+ </instance-parameter>
2639+ </parameters>
2640+ </method>
2641+ <method name="parse" c:identifier="pango_color_parse">
2642+ <doc xml:space="preserve"
2643+ filename="../pango/pango-color.c"
2644+ line="324">Fill in the fields of a color from a string specification.
2645+
2646+The string can either one of a large set of standard names.
2647+(Taken from the CSS Color [specification](https://www.w3.org/TR/css-color-4/#named-colors),
2648+or it can be a value in the form `#rgb`, `#rrggbb`,
2649+`#rrrgggbbb` or `#rrrrggggbbbb`, where `r`, `g` and `b`
2650+are hex digits of the red, green, and blue components
2651+of the color, respectively. (White in the four forms is
2652+`#fff`, `#ffffff`, `#fffffffff` and `#ffffffffffff`.)</doc>
2653+ <source-position filename="../pango/pango-color.h" line="61"/>
2654+ <return-value transfer-ownership="none">
2655+ <doc xml:space="preserve"
2656+ filename="../pango/pango-color.c"
2657+ line="340">%TRUE if parsing of the specifier succeeded,
2658+ otherwise %FALSE</doc>
2659+ <type name="gboolean" c:type="gboolean"/>
2660+ </return-value>
2661+ <parameters>
2662+ <instance-parameter name="color"
2663+ transfer-ownership="none"
2664+ nullable="1"
2665+ allow-none="1">
2666+ <doc xml:space="preserve"
2667+ filename="../pango/pango-color.c"
2668+ line="326">a `PangoColor` structure in which
2669+ to store the result</doc>
2670+ <type name="Color" c:type="PangoColor*"/>
2671+ </instance-parameter>
2672+ <parameter name="spec" transfer-ownership="none">
2673+ <doc xml:space="preserve"
2674+ filename="../pango/pango-color.c"
2675+ line="328">a string specifying the new color</doc>
2676+ <type name="utf8" c:type="const char*"/>
2677+ </parameter>
2678+ </parameters>
2679+ </method>
2680+ <method name="parse_with_alpha"
2681+ c:identifier="pango_color_parse_with_alpha"
2682+ version="1.46">
2683+ <doc xml:space="preserve"
2684+ filename="../pango/pango-color.c"
2685+ line="213">Fill in the fields of a color from a string specification.
2686+
2687+The string can either one of a large set of standard names.
2688+(Taken from the CSS Color [specification](https://www.w3.org/TR/css-color-4/#named-colors),
2689+or it can be a hexadecimal value in the form `#rgb`,
2690+`#rrggbb`, `#rrrgggbbb` or `#rrrrggggbbbb` where `r`, `g`
2691+and `b` are hex digits of the red, green, and blue components
2692+of the color, respectively. (White in the four forms is
2693+`#fff`, `#ffffff`, `#fffffffff` and `#ffffffffffff`.)
2694+
2695+Additionally, parse strings of the form `#rgba`, `#rrggbbaa`,
2696+`#rrrrggggbbbbaaaa`, if @alpha is not %NULL, and set @alpha
2697+to the value specified by the hex digits for `a`. If no alpha
2698+component is found in @spec, @alpha is set to 0xffff (for a
2699+solid color).</doc>
2700+ <source-position filename="../pango/pango-color.h" line="65"/>
2701+ <return-value transfer-ownership="none">
2702+ <doc xml:space="preserve"
2703+ filename="../pango/pango-color.c"
2704+ line="236">%TRUE if parsing of the specifier succeeded,
2705+ otherwise %FALSE</doc>
2706+ <type name="gboolean" c:type="gboolean"/>
2707+ </return-value>
2708+ <parameters>
2709+ <instance-parameter name="color"
2710+ transfer-ownership="none"
2711+ nullable="1"
2712+ allow-none="1">
2713+ <doc xml:space="preserve"
2714+ filename="../pango/pango-color.c"
2715+ line="215">a `PangoColor` structure in which
2716+ to store the result</doc>
2717+ <type name="Color" c:type="PangoColor*"/>
2718+ </instance-parameter>
2719+ <parameter name="alpha"
2720+ direction="out"
2721+ caller-allocates="0"
2722+ transfer-ownership="full"
2723+ optional="1"
2724+ allow-none="1">
2725+ <doc xml:space="preserve"
2726+ filename="../pango/pango-color.c"
2727+ line="217">return location for alpha</doc>
2728+ <type name="guint16" c:type="guint16*"/>
2729+ </parameter>
2730+ <parameter name="spec" transfer-ownership="none">
2731+ <doc xml:space="preserve"
2732+ filename="../pango/pango-color.c"
2733+ line="218">a string specifying the new color</doc>
2734+ <type name="utf8" c:type="const char*"/>
2735+ </parameter>
2736+ </parameters>
2737+ </method>
2738+ <method name="to_string"
2739+ c:identifier="pango_color_to_string"
2740+ version="1.16">
2741+ <doc xml:space="preserve"
2742+ filename="../pango/pango-color.c"
2743+ line="79">Returns a textual specification of @color.
2744+
2745+The string is in the hexadecimal form `#rrrrggggbbbb`,
2746+where `r`, `g` and `b` are hex digits representing the
2747+red, green, and blue components respectively.</doc>
2748+ <source-position filename="../pango/pango-color.h" line="70"/>
2749+ <return-value transfer-ownership="full">
2750+ <doc xml:space="preserve"
2751+ filename="../pango/pango-color.c"
2752+ line="89">a newly-allocated text string that must
2753+ be freed with g_free().</doc>
2754+ <type name="utf8" c:type="char*"/>
2755+ </return-value>
2756+ <parameters>
2757+ <instance-parameter name="color" transfer-ownership="none">
2758+ <doc xml:space="preserve"
2759+ filename="../pango/pango-color.c"
2760+ line="81">a `PangoColor`</doc>
2761+ <type name="Color" c:type="const PangoColor*"/>
2762+ </instance-parameter>
2763+ </parameters>
2764+ </method>
2765+ </record>
2766+ <class name="Context"
2767+ c:symbol-prefix="context"
2768+ c:type="PangoContext"
2769+ parent="GObject.Object"
2770+ glib:type-name="PangoContext"
2771+ glib:get-type="pango_context_get_type"
2772+ glib:type-struct="ContextClass">
2773+ <doc xml:space="preserve"
2774+ filename="../pango/pango-context.c"
2775+ line="37">A `PangoContext` stores global information used to control the
2776+itemization process.
2777+
2778+The information stored by `PangoContext` includes the fontmap used
2779+to look up fonts, and default values such as the default language,
2780+default gravity, or default font.
2781+
2782+To obtain a `PangoContext`, use [method@Pango.FontMap.create_context].</doc>
2783+ <source-position filename="../pango/pango-context.h" line="33"/>
2784+ <constructor name="new" c:identifier="pango_context_new">
2785+ <doc xml:space="preserve"
2786+ filename="../pango/pango-context.c"
2787+ line="111">Creates a new `PangoContext` initialized to default values.
2788+
2789+This function is not particularly useful as it should always
2790+be followed by a [method@Pango.Context.set_font_map] call, and the
2791+function [method@Pango.FontMap.create_context] does these two steps
2792+together and hence users are recommended to use that.
2793+
2794+If you are using Pango as part of a higher-level system,
2795+that system may have it's own way of create a `PangoContext`.
2796+For instance, the GTK toolkit has, among others,
2797+`gtk_widget_get_pango_context()`. Use those instead.</doc>
2798+ <source-position filename="../pango/pango-context.h" line="47"/>
2799+ <return-value transfer-ownership="full">
2800+ <doc xml:space="preserve"
2801+ filename="../pango/pango-context.c"
2802+ line="126">the newly allocated `PangoContext`, which should
2803+ be freed with g_object_unref().</doc>
2804+ <type name="Context" c:type="PangoContext*"/>
2805+ </return-value>
2806+ </constructor>
2807+ <method name="changed"
2808+ c:identifier="pango_context_changed"
2809+ version="1.32.4">
2810+ <doc xml:space="preserve"
2811+ filename="../pango/pango-context.c"
2812+ line="745">Forces a change in the context, which will cause any `PangoLayout`
2813+using this context to re-layout.
2814+
2815+This function is only useful when implementing a new backend
2816+for Pango, something applications won't do. Backends should
2817+call this function if they have attached extra data to the context
2818+and such data is changed.</doc>
2819+ <source-position filename="../pango/pango-context.h" line="49"/>
2820+ <return-value transfer-ownership="none">
2821+ <type name="none" c:type="void"/>
2822+ </return-value>
2823+ <parameters>
2824+ <instance-parameter name="context" transfer-ownership="none">
2825+ <doc xml:space="preserve"
2826+ filename="../pango/pango-context.c"
2827+ line="747">a `PangoContext`</doc>
2828+ <type name="Context" c:type="PangoContext*"/>
2829+ </instance-parameter>
2830+ </parameters>
2831+ </method>
2832+ <method name="get_base_dir" c:identifier="pango_context_get_base_dir">
2833+ <doc xml:space="preserve"
2834+ filename="../pango/pango-context.c"
2835+ line="445">Retrieves the base direction for the context.
2836+
2837+See [method@Pango.Context.set_base_dir].</doc>
2838+ <source-position filename="../pango/pango-context.h" line="88"/>
2839+ <return-value transfer-ownership="none">
2840+ <doc xml:space="preserve"
2841+ filename="../pango/pango-context.c"
2842+ line="453">the base direction for the context.</doc>
2843+ <type name="Direction" c:type="PangoDirection"/>
2844+ </return-value>
2845+ <parameters>
2846+ <instance-parameter name="context" transfer-ownership="none">
2847+ <doc xml:space="preserve"
2848+ filename="../pango/pango-context.c"
2849+ line="447">a `PangoContext`</doc>
2850+ <type name="Context" c:type="PangoContext*"/>
2851+ </instance-parameter>
2852+ </parameters>
2853+ </method>
2854+ <method name="get_base_gravity"
2855+ c:identifier="pango_context_get_base_gravity"
2856+ version="1.16">
2857+ <doc xml:space="preserve"
2858+ filename="../pango/pango-context.c"
2859+ line="488">Retrieves the base gravity for the context.
2860+
2861+See [method@Pango.Context.set_base_gravity].</doc>
2862+ <source-position filename="../pango/pango-context.h" line="93"/>
2863+ <return-value transfer-ownership="none">
2864+ <doc xml:space="preserve"
2865+ filename="../pango/pango-context.c"
2866+ line="496">the base gravity for the context.</doc>
2867+ <type name="Gravity" c:type="PangoGravity"/>
2868+ </return-value>
2869+ <parameters>
2870+ <instance-parameter name="context" transfer-ownership="none">
2871+ <doc xml:space="preserve"
2872+ filename="../pango/pango-context.c"
2873+ line="490">a `PangoContext`</doc>
2874+ <type name="Context" c:type="PangoContext*"/>
2875+ </instance-parameter>
2876+ </parameters>
2877+ </method>
2878+ <method name="get_font_description"
2879+ c:identifier="pango_context_get_font_description">
2880+ <doc xml:space="preserve"
2881+ filename="../pango/pango-context.c"
2882+ line="360">Retrieve the default font description for the context.</doc>
2883+ <source-position filename="../pango/pango-context.h" line="78"/>
2884+ <return-value transfer-ownership="none">
2885+ <doc xml:space="preserve"
2886+ filename="../pango/pango-context.c"
2887+ line="366">a pointer to the context's default font
2888+ description. This value must not be modified or freed.</doc>
2889+ <type name="FontDescription" c:type="PangoFontDescription*"/>
2890+ </return-value>
2891+ <parameters>
2892+ <instance-parameter name="context" transfer-ownership="none">
2893+ <doc xml:space="preserve"
2894+ filename="../pango/pango-context.c"
2895+ line="362">a `PangoContext`</doc>
2896+ <type name="Context" c:type="PangoContext*"/>
2897+ </instance-parameter>
2898+ </parameters>
2899+ </method>
2900+ <method name="get_font_map"
2901+ c:identifier="pango_context_get_font_map"
2902+ version="1.6">
2903+ <doc xml:space="preserve"
2904+ filename="../pango/pango-context.c"
2905+ line="241">Gets the `PangoFontMap` used to look up fonts for this context.</doc>
2906+ <source-position filename="../pango/pango-context.h" line="54"/>
2907+ <return-value transfer-ownership="none">
2908+ <doc xml:space="preserve"
2909+ filename="../pango/pango-context.c"
2910+ line="247">the font map for the `PangoContext`.
2911+ This value is owned by Pango and should not be unreferenced.</doc>
2912+ <type name="FontMap" c:type="PangoFontMap*"/>
2913+ </return-value>
2914+ <parameters>
2915+ <instance-parameter name="context" transfer-ownership="none">
2916+ <doc xml:space="preserve"
2917+ filename="../pango/pango-context.c"
2918+ line="243">a `PangoContext`</doc>
2919+ <type name="Context" c:type="PangoContext*"/>
2920+ </instance-parameter>
2921+ </parameters>
2922+ </method>
2923+ <method name="get_gravity"
2924+ c:identifier="pango_context_get_gravity"
2925+ version="1.16">
2926+ <doc xml:space="preserve"
2927+ filename="../pango/pango-context.c"
2928+ line="508">Retrieves the gravity for the context.
2929+
2930+This is similar to [method@Pango.Context.get_base_gravity],
2931+except for when the base gravity is %PANGO_GRAVITY_AUTO for
2932+which [func@Pango.Gravity.get_for_matrix] is used to return the
2933+gravity from the current context matrix.</doc>
2934+ <source-position filename="../pango/pango-context.h" line="95"/>
2935+ <return-value transfer-ownership="none">
2936+ <doc xml:space="preserve"
2937+ filename="../pango/pango-context.c"
2938+ line="519">the resolved gravity for the context.</doc>
2939+ <type name="Gravity" c:type="PangoGravity"/>
2940+ </return-value>
2941+ <parameters>
2942+ <instance-parameter name="context" transfer-ownership="none">
2943+ <doc xml:space="preserve"
2944+ filename="../pango/pango-context.c"
2945+ line="510">a `PangoContext`</doc>
2946+ <type name="Context" c:type="PangoContext*"/>
2947+ </instance-parameter>
2948+ </parameters>
2949+ </method>
2950+ <method name="get_gravity_hint"
2951+ c:identifier="pango_context_get_gravity_hint"
2952+ version="1.16">
2953+ <doc xml:space="preserve"
2954+ filename="../pango/pango-context.c"
2955+ line="557">Retrieves the gravity hint for the context.
2956+
2957+See [method@Pango.Context.set_gravity_hint] for details.</doc>
2958+ <source-position filename="../pango/pango-context.h" line="100"/>
2959+ <return-value transfer-ownership="none">
2960+ <doc xml:space="preserve"
2961+ filename="../pango/pango-context.c"
2962+ line="565">the gravity hint for the context.</doc>
2963+ <type name="GravityHint" c:type="PangoGravityHint"/>
2964+ </return-value>
2965+ <parameters>
2966+ <instance-parameter name="context" transfer-ownership="none">
2967+ <doc xml:space="preserve"
2968+ filename="../pango/pango-context.c"
2969+ line="559">a `PangoContext`</doc>
2970+ <type name="Context" c:type="PangoContext*"/>
2971+ </instance-parameter>
2972+ </parameters>
2973+ </method>
2974+ <method name="get_language" c:identifier="pango_context_get_language">
2975+ <doc xml:space="preserve"
2976+ filename="../pango/pango-context.c"
2977+ line="403">Retrieves the global language tag for the context.</doc>
2978+ <source-position filename="../pango/pango-context.h" line="80"/>
2979+ <return-value transfer-ownership="full">
2980+ <doc xml:space="preserve"
2981+ filename="../pango/pango-context.c"
2982+ line="409">the global language tag.</doc>
2983+ <type name="Language" c:type="PangoLanguage*"/>
2984+ </return-value>
2985+ <parameters>
2986+ <instance-parameter name="context" transfer-ownership="none">
2987+ <doc xml:space="preserve"
2988+ filename="../pango/pango-context.c"
2989+ line="405">a `PangoContext`</doc>
2990+ <type name="Context" c:type="PangoContext*"/>
2991+ </instance-parameter>
2992+ </parameters>
2993+ </method>
2994+ <method name="get_matrix"
2995+ c:identifier="pango_context_get_matrix"
2996+ version="1.6">
2997+ <doc xml:space="preserve"
2998+ filename="../pango/pango-context.c"
2999+ line="184">Gets the transformation matrix that will be applied when
3000+rendering with this context.
3001+
3002+See [method@Pango.Context.set_matrix].</doc>
3003+ <source-position filename="../pango/pango-context.h" line="106"/>
3004+ <return-value transfer-ownership="none" nullable="1">
3005+ <doc xml:space="preserve"
3006+ filename="../pango/pango-context.c"
3007+ line="193">the matrix, or %NULL if no matrix has
3008+ been set (which is the same as the identity matrix). The returned
3009+ matrix is owned by Pango and must not be modified or freed.</doc>
3010+ <type name="Matrix" c:type="const PangoMatrix*"/>
3011+ </return-value>
3012+ <parameters>
3013+ <instance-parameter name="context" transfer-ownership="none">
3014+ <doc xml:space="preserve"
3015+ filename="../pango/pango-context.c"
3016+ line="186">a `PangoContext`</doc>
3017+ <type name="Context" c:type="PangoContext*"/>
3018+ </instance-parameter>
3019+ </parameters>
3020+ </method>
3021+ <method name="get_metrics" c:identifier="pango_context_get_metrics">
3022+ <doc xml:space="preserve"
3023+ filename="../pango/pango-context.c"
3024+ line="661">Get overall metric information for a particular font description.
3025+
3026+Since the metrics may be substantially different for different scripts,
3027+a language tag can be provided to indicate that the metrics should be
3028+retrieved that correspond to the script(s) used by that language.
3029+
3030+The `PangoFontDescription` is interpreted in the same way as by [func@itemize],
3031+and the family name may be a comma separated list of names. If characters
3032+from multiple of these families would be used to render the string, then
3033+the returned fonts would be a composite of the metrics for the fonts loaded
3034+for the individual families.</doc>
3035+ <source-position filename="../pango/pango-context.h" line="70"/>
3036+ <return-value transfer-ownership="full">
3037+ <doc xml:space="preserve"
3038+ filename="../pango/pango-context.c"
3039+ line="684">a `PangoFontMetrics` object. The caller must call
3040+ [method@Pango.FontMetrics.unref] when finished using the object.</doc>
3041+ <type name="FontMetrics" c:type="PangoFontMetrics*"/>
3042+ </return-value>
3043+ <parameters>
3044+ <instance-parameter name="context" transfer-ownership="none">
3045+ <doc xml:space="preserve"
3046+ filename="../pango/pango-context.c"
3047+ line="663">a `PangoContext`</doc>
3048+ <type name="Context" c:type="PangoContext*"/>
3049+ </instance-parameter>
3050+ <parameter name="desc"
3051+ transfer-ownership="none"
3052+ nullable="1"
3053+ allow-none="1">
3054+ <doc xml:space="preserve"
3055+ filename="../pango/pango-context.c"
3056+ line="664">a `PangoFontDescription` structure. %NULL means that the
3057+ font description from the context will be used.</doc>
3058+ <type name="FontDescription" c:type="const PangoFontDescription*"/>
3059+ </parameter>
3060+ <parameter name="language"
3061+ transfer-ownership="none"
3062+ nullable="1"
3063+ allow-none="1">
3064+ <doc xml:space="preserve"
3065+ filename="../pango/pango-context.c"
3066+ line="666">language tag used to determine which script to get
3067+ the metrics for. %NULL means that the language tag from the context
3068+ will be used. If no language tag is set on the context, metrics
3069+ for the default language (as determined by [func@Pango.Language.get_default]
3070+ will be returned.</doc>
3071+ <type name="Language" c:type="PangoLanguage*"/>
3072+ </parameter>
3073+ </parameters>
3074+ </method>
3075+ <method name="get_round_glyph_positions"
3076+ c:identifier="pango_context_get_round_glyph_positions"
3077+ version="1.44">
3078+ <doc xml:space="preserve"
3079+ filename="../pango/pango-context.c"
3080+ line="835">Returns whether font rendering with this context should
3081+round glyph positions and widths.</doc>
3082+ <source-position filename="../pango/pango-context.h" line="112"/>
3083+ <return-value transfer-ownership="none">
3084+ <type name="gboolean" c:type="gboolean"/>
3085+ </return-value>
3086+ <parameters>
3087+ <instance-parameter name="context" transfer-ownership="none">
3088+ <doc xml:space="preserve"
3089+ filename="../pango/pango-context.c"
3090+ line="837">a `PangoContext`</doc>
3091+ <type name="Context" c:type="PangoContext*"/>
3092+ </instance-parameter>
3093+ </parameters>
3094+ </method>
3095+ <method name="get_serial"
3096+ c:identifier="pango_context_get_serial"
3097+ version="1.32.4">
3098+ <doc xml:space="preserve"
3099+ filename="../pango/pango-context.c"
3100+ line="779">Returns the current serial number of @context.
3101+
3102+The serial number is initialized to an small number larger than zero
3103+when a new context is created and is increased whenever the context
3104+is changed using any of the setter functions, or the `PangoFontMap` it
3105+uses to find fonts has changed. The serial may wrap, but will never
3106+have the value 0. Since it can wrap, never compare it with "less than",
3107+always use "not equals".
3108+
3109+This can be used to automatically detect changes to a `PangoContext`,
3110+and is only useful when implementing objects that need update when their
3111+`PangoContext` changes, like `PangoLayout`.</doc>
3112+ <source-position filename="../pango/pango-context.h" line="56"/>
3113+ <return-value transfer-ownership="none">
3114+ <doc xml:space="preserve"
3115+ filename="../pango/pango-context.c"
3116+ line="796">The current serial number of @context.</doc>
3117+ <type name="guint" c:type="guint"/>
3118+ </return-value>
3119+ <parameters>
3120+ <instance-parameter name="context" transfer-ownership="none">
3121+ <doc xml:space="preserve"
3122+ filename="../pango/pango-context.c"
3123+ line="781">a `PangoContext`</doc>
3124+ <type name="Context" c:type="PangoContext*"/>
3125+ </instance-parameter>
3126+ </parameters>
3127+ </method>
3128+ <method name="list_families" c:identifier="pango_context_list_families">
3129+ <doc xml:space="preserve"
3130+ filename="../pango/pango-context.c"
3131+ line="260">List all families for a context.</doc>
3132+ <source-position filename="../pango/pango-context.h" line="58"/>
3133+ <return-value transfer-ownership="none">
3134+ <type name="none" c:type="void"/>
3135+ </return-value>
3136+ <parameters>
3137+ <instance-parameter name="context" transfer-ownership="none">
3138+ <doc xml:space="preserve"
3139+ filename="../pango/pango-context.c"
3140+ line="262">a `PangoContext`</doc>
3141+ <type name="Context" c:type="PangoContext*"/>
3142+ </instance-parameter>
3143+ <parameter name="families"
3144+ direction="out"
3145+ caller-allocates="0"
3146+ transfer-ownership="container">
3147+ <doc xml:space="preserve"
3148+ filename="../pango/pango-context.c"
3149+ line="263">location
3150+ to store a pointer to an array of `PangoFontFamily`. This array should
3151+ be freed with g_free().</doc>
3152+ <array length="1" zero-terminated="0" c:type="PangoFontFamily***">
3153+ <type name="FontFamily" c:type="PangoFontFamily**"/>
3154+ </array>
3155+ </parameter>
3156+ <parameter name="n_families"
3157+ direction="out"
3158+ caller-allocates="0"
3159+ transfer-ownership="full">
3160+ <doc xml:space="preserve"
3161+ filename="../pango/pango-context.c"
3162+ line="266">location to store the number of elements in @descs</doc>
3163+ <type name="gint" c:type="int*"/>
3164+ </parameter>
3165+ </parameters>
3166+ </method>
3167+ <method name="load_font" c:identifier="pango_context_load_font">
3168+ <doc xml:space="preserve"
3169+ filename="../pango/pango-context.c"
3170+ line="293">Loads the font in one of the fontmaps in the context
3171+that is the closest match for @desc.</doc>
3172+ <source-position filename="../pango/pango-context.h" line="62"/>
3173+ <return-value transfer-ownership="full" nullable="1">
3174+ <doc xml:space="preserve"
3175+ filename="../pango/pango-context.c"
3176+ line="301">the newly allocated `PangoFont`
3177+ that was loaded, or %NULL if no font matched.</doc>
3178+ <type name="Font" c:type="PangoFont*"/>
3179+ </return-value>
3180+ <parameters>
3181+ <instance-parameter name="context" transfer-ownership="none">
3182+ <doc xml:space="preserve"
3183+ filename="../pango/pango-context.c"
3184+ line="295">a `PangoContext`</doc>
3185+ <type name="Context" c:type="PangoContext*"/>
3186+ </instance-parameter>
3187+ <parameter name="desc" transfer-ownership="none">
3188+ <doc xml:space="preserve"
3189+ filename="../pango/pango-context.c"
3190+ line="296">a `PangoFontDescription` describing the font to load</doc>
3191+ <type name="FontDescription" c:type="const PangoFontDescription*"/>
3192+ </parameter>
3193+ </parameters>
3194+ </method>
3195+ <method name="load_fontset" c:identifier="pango_context_load_fontset">
3196+ <doc xml:space="preserve"
3197+ filename="../pango/pango-context.c"
3198+ line="314">Load a set of fonts in the context that can be used to render
3199+a font matching @desc.</doc>
3200+ <source-position filename="../pango/pango-context.h" line="65"/>
3201+ <return-value transfer-ownership="full" nullable="1">
3202+ <doc xml:space="preserve"
3203+ filename="../pango/pango-context.c"
3204+ line="323">the newly allocated
3205+ `PangoFontset` loaded, or %NULL if no font matched.</doc>
3206+ <type name="Fontset" c:type="PangoFontset*"/>
3207+ </return-value>
3208+ <parameters>
3209+ <instance-parameter name="context" transfer-ownership="none">
3210+ <doc xml:space="preserve"
3211+ filename="../pango/pango-context.c"
3212+ line="316">a `PangoContext`</doc>
3213+ <type name="Context" c:type="PangoContext*"/>
3214+ </instance-parameter>
3215+ <parameter name="desc" transfer-ownership="none">
3216+ <doc xml:space="preserve"
3217+ filename="../pango/pango-context.c"
3218+ line="317">a `PangoFontDescription` describing the fonts to load</doc>
3219+ <type name="FontDescription" c:type="const PangoFontDescription*"/>
3220+ </parameter>
3221+ <parameter name="language" transfer-ownership="none">
3222+ <doc xml:space="preserve"
3223+ filename="../pango/pango-context.c"
3224+ line="318">a `PangoLanguage` the fonts will be used for</doc>
3225+ <type name="Language" c:type="PangoLanguage*"/>
3226+ </parameter>
3227+ </parameters>
3228+ </method>
3229+ <method name="set_base_dir" c:identifier="pango_context_set_base_dir">
3230+ <doc xml:space="preserve"
3231+ filename="../pango/pango-context.c"
3232+ line="419">Sets the base direction for the context.
3233+
3234+The base direction is used in applying the Unicode bidirectional
3235+algorithm; if the @direction is %PANGO_DIRECTION_LTR or
3236+%PANGO_DIRECTION_RTL, then the value will be used as the paragraph
3237+direction in the Unicode bidirectional algorithm. A value of
3238+%PANGO_DIRECTION_WEAK_LTR or %PANGO_DIRECTION_WEAK_RTL is used only
3239+for paragraphs that do not contain any strong characters themselves.</doc>
3240+ <source-position filename="../pango/pango-context.h" line="85"/>
3241+ <return-value transfer-ownership="none">
3242+ <type name="none" c:type="void"/>
3243+ </return-value>
3244+ <parameters>
3245+ <instance-parameter name="context" transfer-ownership="none">
3246+ <doc xml:space="preserve"
3247+ filename="../pango/pango-context.c"
3248+ line="421">a `PangoContext`</doc>
3249+ <type name="Context" c:type="PangoContext*"/>
3250+ </instance-parameter>
3251+ <parameter name="direction" transfer-ownership="none">
3252+ <doc xml:space="preserve"
3253+ filename="../pango/pango-context.c"
3254+ line="422">the new base direction</doc>
3255+ <type name="Direction" c:type="PangoDirection"/>
3256+ </parameter>
3257+ </parameters>
3258+ </method>
3259+ <method name="set_base_gravity"
3260+ c:identifier="pango_context_set_base_gravity"
3261+ version="1.16">
3262+ <doc xml:space="preserve"
3263+ filename="../pango/pango-context.c"
3264+ line="463">Sets the base gravity for the context.
3265+
3266+The base gravity is used in laying vertical text out.</doc>
3267+ <source-position filename="../pango/pango-context.h" line="90"/>
3268+ <return-value transfer-ownership="none">
3269+ <type name="none" c:type="void"/>
3270+ </return-value>
3271+ <parameters>
3272+ <instance-parameter name="context" transfer-ownership="none">
3273+ <doc xml:space="preserve"
3274+ filename="../pango/pango-context.c"
3275+ line="465">a `PangoContext`</doc>
3276+ <type name="Context" c:type="PangoContext*"/>
3277+ </instance-parameter>
3278+ <parameter name="gravity" transfer-ownership="none">
3279+ <doc xml:space="preserve"
3280+ filename="../pango/pango-context.c"
3281+ line="466">the new base gravity</doc>
3282+ <type name="Gravity" c:type="PangoGravity"/>
3283+ </parameter>
3284+ </parameters>
3285+ </method>
3286+ <method name="set_font_description"
3287+ c:identifier="pango_context_set_font_description">
3288+ <doc xml:space="preserve"
3289+ filename="../pango/pango-context.c"
3290+ line="336">Set the default font description for the context</doc>
3291+ <source-position filename="../pango/pango-context.h" line="75"/>
3292+ <return-value transfer-ownership="none">
3293+ <type name="none" c:type="void"/>
3294+ </return-value>
3295+ <parameters>
3296+ <instance-parameter name="context" transfer-ownership="none">
3297+ <doc xml:space="preserve"
3298+ filename="../pango/pango-context.c"
3299+ line="338">a `PangoContext`</doc>
3300+ <type name="Context" c:type="PangoContext*"/>
3301+ </instance-parameter>
3302+ <parameter name="desc" transfer-ownership="none">
3303+ <doc xml:space="preserve"
3304+ filename="../pango/pango-context.c"
3305+ line="339">the new pango font description</doc>
3306+ <type name="FontDescription" c:type="const PangoFontDescription*"/>
3307+ </parameter>
3308+ </parameters>
3309+ </method>
3310+ <method name="set_font_map" c:identifier="pango_context_set_font_map">
3311+ <doc xml:space="preserve"
3312+ filename="../pango/pango-context.c"
3313+ line="207">Sets the font map to be searched when fonts are looked-up
3314+in this context.
3315+
3316+This is only for internal use by Pango backends, a `PangoContext`
3317+obtained via one of the recommended methods should already have a
3318+suitable font map.</doc>
3319+ <source-position filename="../pango/pango-context.h" line="51"/>
3320+ <return-value transfer-ownership="none">
3321+ <type name="none" c:type="void"/>
3322+ </return-value>
3323+ <parameters>
3324+ <instance-parameter name="context" transfer-ownership="none">
3325+ <doc xml:space="preserve"
3326+ filename="../pango/pango-context.c"
3327+ line="209">a `PangoContext`</doc>
3328+ <type name="Context" c:type="PangoContext*"/>
3329+ </instance-parameter>
3330+ <parameter name="font_map" transfer-ownership="none">
3331+ <doc xml:space="preserve"
3332+ filename="../pango/pango-context.c"
3333+ line="210">the `PangoFontMap` to set.</doc>
3334+ <type name="FontMap" c:type="PangoFontMap*"/>
3335+ </parameter>
3336+ </parameters>
3337+ </method>
3338+ <method name="set_gravity_hint"
3339+ c:identifier="pango_context_set_gravity_hint"
3340+ version="1.16">
3341+ <doc xml:space="preserve"
3342+ filename="../pango/pango-context.c"
3343+ line="531">Sets the gravity hint for the context.
3344+
3345+The gravity hint is used in laying vertical text out, and
3346+is only relevant if gravity of the context as returned by
3347+[method@Pango.Context.get_gravity] is set to %PANGO_GRAVITY_EAST
3348+or %PANGO_GRAVITY_WEST.</doc>
3349+ <source-position filename="../pango/pango-context.h" line="97"/>
3350+ <return-value transfer-ownership="none">
3351+ <type name="none" c:type="void"/>
3352+ </return-value>
3353+ <parameters>
3354+ <instance-parameter name="context" transfer-ownership="none">
3355+ <doc xml:space="preserve"
3356+ filename="../pango/pango-context.c"
3357+ line="533">a `PangoContext`</doc>
3358+ <type name="Context" c:type="PangoContext*"/>
3359+ </instance-parameter>
3360+ <parameter name="hint" transfer-ownership="none">
3361+ <doc xml:space="preserve"
3362+ filename="../pango/pango-context.c"
3363+ line="534">the new gravity hint</doc>
3364+ <type name="GravityHint" c:type="PangoGravityHint"/>
3365+ </parameter>
3366+ </parameters>
3367+ </method>
3368+ <method name="set_language" c:identifier="pango_context_set_language">
3369+ <doc xml:space="preserve"
3370+ filename="../pango/pango-context.c"
3371+ line="377">Sets the global language tag for the context.
3372+
3373+The default language for the locale of the running process
3374+can be found using [func@Pango.Language.get_default].</doc>
3375+ <source-position filename="../pango/pango-context.h" line="82"/>
3376+ <return-value transfer-ownership="none">
3377+ <type name="none" c:type="void"/>
3378+ </return-value>
3379+ <parameters>
3380+ <instance-parameter name="context" transfer-ownership="none">
3381+ <doc xml:space="preserve"
3382+ filename="../pango/pango-context.c"
3383+ line="379">a `PangoContext`</doc>
3384+ <type name="Context" c:type="PangoContext*"/>
3385+ </instance-parameter>
3386+ <parameter name="language" transfer-ownership="none">
3387+ <doc xml:space="preserve"
3388+ filename="../pango/pango-context.c"
3389+ line="380">the new language tag.</doc>
3390+ <type name="Language" c:type="PangoLanguage*"/>
3391+ </parameter>
3392+ </parameters>
3393+ </method>
3394+ <method name="set_matrix"
3395+ c:identifier="pango_context_set_matrix"
3396+ version="1.6">
3397+ <doc xml:space="preserve"
3398+ filename="../pango/pango-context.c"
3399+ line="148">Sets the transformation matrix that will be applied when rendering
3400+with this context.
3401+
3402+Note that reported metrics are in the user space coordinates before
3403+the application of the matrix, not device-space coordinates after the
3404+application of the matrix. So, they don't scale with the matrix, though
3405+they may change slightly for different matrices, depending on how the
3406+text is fit to the pixel grid.</doc>
3407+ <source-position filename="../pango/pango-context.h" line="103"/>
3408+ <return-value transfer-ownership="none">
3409+ <type name="none" c:type="void"/>
3410+ </return-value>
3411+ <parameters>
3412+ <instance-parameter name="context" transfer-ownership="none">
3413+ <doc xml:space="preserve"
3414+ filename="../pango/pango-context.c"
3415+ line="150">a `PangoContext`</doc>
3416+ <type name="Context" c:type="PangoContext*"/>
3417+ </instance-parameter>
3418+ <parameter name="matrix"
3419+ transfer-ownership="none"
3420+ nullable="1"
3421+ allow-none="1">
3422+ <doc xml:space="preserve"
3423+ filename="../pango/pango-context.c"
3424+ line="151">a `PangoMatrix`, or %NULL to unset any existing
3425+matrix. (No matrix set is the same as setting the identity matrix.)</doc>
3426+ <type name="Matrix" c:type="const PangoMatrix*"/>
3427+ </parameter>
3428+ </parameters>
3429+ </method>
3430+ <method name="set_round_glyph_positions"
3431+ c:identifier="pango_context_set_round_glyph_positions"
3432+ version="1.44">
3433+ <doc xml:space="preserve"
3434+ filename="../pango/pango-context.c"
3435+ line="807">Sets whether font rendering with this context should
3436+round glyph positions and widths to integral positions,
3437+in device units.
3438+
3439+This is useful when the renderer can't handle subpixel
3440+positioning of glyphs.
3441+
3442+The default value is to round glyph positions, to remain
3443+compatible with previous Pango behavior.</doc>
3444+ <source-position filename="../pango/pango-context.h" line="109"/>
3445+ <return-value transfer-ownership="none">
3446+ <type name="none" c:type="void"/>
3447+ </return-value>
3448+ <parameters>
3449+ <instance-parameter name="context" transfer-ownership="none">
3450+ <doc xml:space="preserve"
3451+ filename="../pango/pango-context.c"
3452+ line="809">a `PangoContext`</doc>
3453+ <type name="Context" c:type="PangoContext*"/>
3454+ </instance-parameter>
3455+ <parameter name="round_positions" transfer-ownership="none">
3456+ <doc xml:space="preserve"
3457+ filename="../pango/pango-context.c"
3458+ line="810">whether to round glyph positions</doc>
3459+ <type name="gboolean" c:type="gboolean"/>
3460+ </parameter>
3461+ </parameters>
3462+ </method>
3463+ </class>
3464+ <record name="ContextClass"
3465+ c:type="PangoContextClass"
3466+ disguised="1"
3467+ glib:is-gtype-struct-for="Context">
3468+ <source-position filename="../pango/pango-context.h" line="33"/>
3469+ </record>
3470+ <class name="Coverage"
3471+ c:symbol-prefix="coverage"
3472+ c:type="PangoCoverage"
3473+ parent="GObject.Object"
3474+ glib:type-name="PangoCoverage"
3475+ glib:get-type="pango_coverage_get_type">
3476+ <doc xml:space="preserve"
3477+ filename="../pango/pango-coverage.h"
3478+ line="32">A `PangoCoverage` structure is a map from Unicode characters
3479+to [enum@Pango.CoverageLevel] values.
3480+
3481+It is often necessary in Pango to determine if a particular
3482+font can represent a particular character, and also how well
3483+it can represent that character. The `PangoCoverage` is a data
3484+structure that is used to represent that information. It is an
3485+opaque structure with no public fields.</doc>
3486+ <constructor name="new" c:identifier="pango_coverage_new">
3487+ <doc xml:space="preserve"
3488+ filename="../pango/pango-coverage.c"
3489+ line="107">Create a new `PangoCoverage`</doc>
3490+ <source-position filename="../pango/pango-coverage.h" line="78"/>
3491+ <return-value transfer-ownership="full">
3492+ <doc xml:space="preserve"
3493+ filename="../pango/pango-coverage.c"
3494+ line="112">the newly allocated `PangoCoverage`, initialized
3495+ to %PANGO_COVERAGE_NONE with a reference count of one, which
3496+ should be freed with [method@Pango.Coverage.unref].</doc>
3497+ <type name="Coverage" c:type="PangoCoverage*"/>
3498+ </return-value>
3499+ </constructor>
3500+ <function name="from_bytes"
3501+ c:identifier="pango_coverage_from_bytes"
3502+ deprecated="1"
3503+ deprecated-version="1.44">
3504+ <doc xml:space="preserve"
3505+ filename="../pango/pango-coverage.c"
3506+ line="235">Convert data generated from [method@Pango.Coverage.to_bytes]
3507+back to a `PangoCoverage`.</doc>
3508+ <doc-deprecated xml:space="preserve">This returns %NULL</doc-deprecated>
3509+ <source-position filename="../pango/pango-coverage.h" line="101"/>
3510+ <return-value transfer-ownership="full" nullable="1">
3511+ <doc xml:space="preserve"
3512+ filename="../pango/pango-coverage.c"
3513+ line="244">a newly allocated `PangoCoverage`</doc>
3514+ <type name="Coverage" c:type="PangoCoverage*"/>
3515+ </return-value>
3516+ <parameters>
3517+ <parameter name="bytes" transfer-ownership="none">
3518+ <doc xml:space="preserve"
3519+ filename="../pango/pango-coverage.c"
3520+ line="237">binary data
3521+ representing a `PangoCoverage`</doc>
3522+ <array length="1" zero-terminated="0" c:type="guchar*">
3523+ <type name="guint8"/>
3524+ </array>
3525+ </parameter>
3526+ <parameter name="n_bytes" transfer-ownership="none">
3527+ <doc xml:space="preserve"
3528+ filename="../pango/pango-coverage.c"
3529+ line="239">the size of @bytes in bytes</doc>
3530+ <type name="gint" c:type="int"/>
3531+ </parameter>
3532+ </parameters>
3533+ </function>
3534+ <method name="copy" c:identifier="pango_coverage_copy">
3535+ <doc xml:space="preserve"
3536+ filename="../pango/pango-coverage.c"
3537+ line="122">Copy an existing `PangoCoverage`.</doc>
3538+ <source-position filename="../pango/pango-coverage.h" line="84"/>
3539+ <return-value transfer-ownership="full">
3540+ <doc xml:space="preserve"
3541+ filename="../pango/pango-coverage.c"
3542+ line="128">the newly allocated `PangoCoverage`,
3543+ with a reference count of one, which should be freed with
3544+ [method@Pango.Coverage.unref].</doc>
3545+ <type name="Coverage" c:type="PangoCoverage*"/>
3546+ </return-value>
3547+ <parameters>
3548+ <instance-parameter name="coverage" transfer-ownership="none">
3549+ <doc xml:space="preserve"
3550+ filename="../pango/pango-coverage.c"
3551+ line="124">a `PangoCoverage`</doc>
3552+ <type name="Coverage" c:type="PangoCoverage*"/>
3553+ </instance-parameter>
3554+ </parameters>
3555+ </method>
3556+ <method name="get" c:identifier="pango_coverage_get">
3557+ <doc xml:space="preserve"
3558+ filename="../pango/pango-coverage.c"
3559+ line="166">Determine whether a particular index is covered by @coverage.</doc>
3560+ <source-position filename="../pango/pango-coverage.h" line="86"/>
3561+ <return-value transfer-ownership="none">
3562+ <doc xml:space="preserve"
3563+ filename="../pango/pango-coverage.c"
3564+ line="173">the coverage level of @coverage for character @index_.</doc>
3565+ <type name="CoverageLevel" c:type="PangoCoverageLevel"/>
3566+ </return-value>
3567+ <parameters>
3568+ <instance-parameter name="coverage" transfer-ownership="none">
3569+ <doc xml:space="preserve"
3570+ filename="../pango/pango-coverage.c"
3571+ line="168">a `PangoCoverage`</doc>
3572+ <type name="Coverage" c:type="PangoCoverage*"/>
3573+ </instance-parameter>
3574+ <parameter name="index_" transfer-ownership="none">
3575+ <doc xml:space="preserve"
3576+ filename="../pango/pango-coverage.c"
3577+ line="169">the index to check</doc>
3578+ <type name="gint" c:type="int"/>
3579+ </parameter>
3580+ </parameters>
3581+ </method>
3582+ <method name="max"
3583+ c:identifier="pango_coverage_max"
3584+ deprecated="1"
3585+ deprecated-version="1.44">
3586+ <doc xml:space="preserve"
3587+ filename="../pango/pango-coverage.c"
3588+ line="198">Set the coverage for each index in @coverage to be the max (better)
3589+value of the current coverage for the index and the coverage for
3590+the corresponding index in @other.</doc>
3591+ <doc-deprecated xml:space="preserve">This function does nothing</doc-deprecated>
3592+ <source-position filename="../pango/pango-coverage.h" line="93"/>
3593+ <return-value transfer-ownership="none">
3594+ <type name="none" c:type="void"/>
3595+ </return-value>
3596+ <parameters>
3597+ <instance-parameter name="coverage" transfer-ownership="none">
3598+ <doc xml:space="preserve"
3599+ filename="../pango/pango-coverage.c"
3600+ line="200">a `PangoCoverage`</doc>
3601+ <type name="Coverage" c:type="PangoCoverage*"/>
3602+ </instance-parameter>
3603+ <parameter name="other" transfer-ownership="none">
3604+ <doc xml:space="preserve"
3605+ filename="../pango/pango-coverage.c"
3606+ line="201">another `PangoCoverage`</doc>
3607+ <type name="Coverage" c:type="PangoCoverage*"/>
3608+ </parameter>
3609+ </parameters>
3610+ </method>
3611+ <method name="ref" c:identifier="pango_coverage_ref">
3612+ <doc xml:space="preserve"
3613+ filename="../pango/pango-coverage.c"
3614+ line="138">Increase the reference count on the `PangoCoverage` by one.</doc>
3615+ <source-position filename="../pango/pango-coverage.h" line="80"/>
3616+ <return-value transfer-ownership="full">
3617+ <doc xml:space="preserve"
3618+ filename="../pango/pango-coverage.c"
3619+ line="144">@coverage</doc>
3620+ <type name="Coverage" c:type="PangoCoverage*"/>
3621+ </return-value>
3622+ <parameters>
3623+ <instance-parameter name="coverage" transfer-ownership="none">
3624+ <doc xml:space="preserve"
3625+ filename="../pango/pango-coverage.c"
3626+ line="140">a `PangoCoverage`</doc>
3627+ <type name="Coverage" c:type="PangoCoverage*"/>
3628+ </instance-parameter>
3629+ </parameters>
3630+ </method>
3631+ <method name="set" c:identifier="pango_coverage_set">
3632+ <doc xml:space="preserve"
3633+ filename="../pango/pango-coverage.c"
3634+ line="182">Modify a particular index within @coverage</doc>
3635+ <source-position filename="../pango/pango-coverage.h" line="89"/>
3636+ <return-value transfer-ownership="none">
3637+ <type name="none" c:type="void"/>
3638+ </return-value>
3639+ <parameters>
3640+ <instance-parameter name="coverage" transfer-ownership="none">
3641+ <doc xml:space="preserve"
3642+ filename="../pango/pango-coverage.c"
3643+ line="184">a `PangoCoverage`</doc>
3644+ <type name="Coverage" c:type="PangoCoverage*"/>
3645+ </instance-parameter>
3646+ <parameter name="index_" transfer-ownership="none">
3647+ <doc xml:space="preserve"
3648+ filename="../pango/pango-coverage.c"
3649+ line="185">the index to modify</doc>
3650+ <type name="gint" c:type="int"/>
3651+ </parameter>
3652+ <parameter name="level" transfer-ownership="none">
3653+ <doc xml:space="preserve"
3654+ filename="../pango/pango-coverage.c"
3655+ line="186">the new level for @index_</doc>
3656+ <type name="CoverageLevel" c:type="PangoCoverageLevel"/>
3657+ </parameter>
3658+ </parameters>
3659+ </method>
3660+ <method name="to_bytes"
3661+ c:identifier="pango_coverage_to_bytes"
3662+ deprecated="1"
3663+ deprecated-version="1.44">
3664+ <doc xml:space="preserve"
3665+ filename="../pango/pango-coverage.c"
3666+ line="215">Convert a `PangoCoverage` structure into a flat binary format.</doc>
3667+ <doc-deprecated xml:space="preserve">This returns %NULL</doc-deprecated>
3668+ <source-position filename="../pango/pango-coverage.h" line="97"/>
3669+ <return-value transfer-ownership="none">
3670+ <type name="none" c:type="void"/>
3671+ </return-value>
3672+ <parameters>
3673+ <instance-parameter name="coverage" transfer-ownership="none">
3674+ <doc xml:space="preserve"
3675+ filename="../pango/pango-coverage.c"
3676+ line="217">a `PangoCoverage`</doc>
3677+ <type name="Coverage" c:type="PangoCoverage*"/>
3678+ </instance-parameter>
3679+ <parameter name="bytes"
3680+ direction="out"
3681+ caller-allocates="0"
3682+ transfer-ownership="full">
3683+ <doc xml:space="preserve"
3684+ filename="../pango/pango-coverage.c"
3685+ line="218">
3686+ location to store result (must be freed with g_free())</doc>
3687+ <array length="1" zero-terminated="0" c:type="guchar**">
3688+ <type name="guint8"/>
3689+ </array>
3690+ </parameter>
3691+ <parameter name="n_bytes"
3692+ direction="out"
3693+ caller-allocates="0"
3694+ transfer-ownership="full">
3695+ <doc xml:space="preserve"
3696+ filename="../pango/pango-coverage.c"
3697+ line="220">location to store size of result</doc>
3698+ <type name="gint" c:type="int*"/>
3699+ </parameter>
3700+ </parameters>
3701+ </method>
3702+ <method name="unref" c:identifier="pango_coverage_unref">
3703+ <doc xml:space="preserve"
3704+ filename="../pango/pango-coverage.c"
3705+ line="152">Decrease the reference count on the `PangoCoverage` by one.
3706+
3707+If the result is zero, free the coverage and all associated memory.</doc>
3708+ <source-position filename="../pango/pango-coverage.h" line="82"/>
3709+ <return-value transfer-ownership="none">
3710+ <type name="none" c:type="void"/>
3711+ </return-value>
3712+ <parameters>
3713+ <instance-parameter name="coverage" transfer-ownership="full">
3714+ <doc xml:space="preserve"
3715+ filename="../pango/pango-coverage.c"
3716+ line="154">a `PangoCoverage`</doc>
3717+ <type name="Coverage" c:type="PangoCoverage*"/>
3718+ </instance-parameter>
3719+ </parameters>
3720+ </method>
3721+ </class>
3722+ <enumeration name="CoverageLevel"
3723+ glib:type-name="PangoCoverageLevel"
3724+ glib:get-type="pango_coverage_level_get_type"
3725+ c:type="PangoCoverageLevel">
3726+ <doc xml:space="preserve"
3727+ filename="../pango/pango-coverage.h"
3728+ line="46">`PangoCoverageLevel` is used to indicate how well a font can
3729+represent a particular Unicode character for a particular script.
3730+
3731+Since 1.44, only %PANGO_COVERAGE_NONE and %PANGO_COVERAGE_EXACT
3732+will be returned.</doc>
3733+ <member name="none"
3734+ value="0"
3735+ c:identifier="PANGO_COVERAGE_NONE"
3736+ glib:nick="none"
3737+ glib:name="PANGO_COVERAGE_NONE">
3738+ <doc xml:space="preserve"
3739+ filename="../pango/pango-coverage.h"
3740+ line="48">The character is not representable with
3741+ the font.</doc>
3742+ </member>
3743+ <member name="fallback"
3744+ value="1"
3745+ c:identifier="PANGO_COVERAGE_FALLBACK"
3746+ glib:nick="fallback"
3747+ glib:name="PANGO_COVERAGE_FALLBACK">
3748+ <doc xml:space="preserve"
3749+ filename="../pango/pango-coverage.h"
3750+ line="50">The character is represented in a
3751+ way that may be comprehensible but is not the correct
3752+ graphical form. For instance, a Hangul character represented
3753+ as a a sequence of Jamos, or a Latin transliteration of a
3754+ Cyrillic word.</doc>
3755+ </member>
3756+ <member name="approximate"
3757+ value="2"
3758+ c:identifier="PANGO_COVERAGE_APPROXIMATE"
3759+ glib:nick="approximate"
3760+ glib:name="PANGO_COVERAGE_APPROXIMATE">
3761+ <doc xml:space="preserve"
3762+ filename="../pango/pango-coverage.h"
3763+ line="55">The character is represented as
3764+ basically the correct graphical form, but with a stylistic
3765+ variant inappropriate for the current script.</doc>
3766+ </member>
3767+ <member name="exact"
3768+ value="3"
3769+ c:identifier="PANGO_COVERAGE_EXACT"
3770+ glib:nick="exact"
3771+ glib:name="PANGO_COVERAGE_EXACT">
3772+ <doc xml:space="preserve"
3773+ filename="../pango/pango-coverage.h"
3774+ line="58">The character is represented as the
3775+ correct graphical form.</doc>
3776+ </member>
3777+ </enumeration>
3778+ <function-macro name="DESCENT"
3779+ c:identifier="PANGO_DESCENT"
3780+ introspectable="0">
3781+ <doc xml:space="preserve"
3782+ filename="../pango/pango-types.h"
3783+ line="190">Extracts the *descent* from a `PangoRectangle`
3784+representing glyph extents.
3785+
3786+The descent is the distance from the baseline to the
3787+lowest point of the character. This is positive if the
3788+glyph descends below the baseline.</doc>
3789+ <source-position filename="../pango/pango-types.h" line="226"/>
3790+ <parameters>
3791+ <parameter name="rect">
3792+ <doc xml:space="preserve"
3793+ filename="../pango/pango-types.h"
3794+ line="192">a `PangoRectangle`</doc>
3795+ </parameter>
3796+ </parameters>
3797+ </function-macro>
3798+ <enumeration name="Direction"
3799+ glib:type-name="PangoDirection"
3800+ glib:get-type="pango_direction_get_type"
3801+ c:type="PangoDirection">
3802+ <doc xml:space="preserve"
3803+ filename="../pango/pango-direction.h"
3804+ line="29">`PangoDirection` represents a direction in the Unicode bidirectional
3805+algorithm.
3806+
3807+Not every value in this enumeration makes sense for every usage of
3808+`PangoDirection`; for example, the return value of [func@unichar_direction]
3809+and [func@find_base_dir] cannot be `PANGO_DIRECTION_WEAK_LTR` or
3810+`PANGO_DIRECTION_WEAK_RTL`, since every character is either neutral
3811+or has a strong direction; on the other hand `PANGO_DIRECTION_NEUTRAL`
3812+doesn't make sense to pass to [func@itemize_with_base_dir].
3813+
3814+The `PANGO_DIRECTION_TTB_LTR`, `PANGO_DIRECTION_TTB_RTL` values come from
3815+an earlier interpretation of this enumeration as the writing direction
3816+of a block of text and are no longer used. See `PangoGravity` for how
3817+vertical text is handled in Pango.
3818+
3819+If you are interested in text direction, you should really use fribidi
3820+directly. `PangoDirection` is only retained because it is used in some
3821+public apis.</doc>
3822+ <member name="ltr"
3823+ value="0"
3824+ c:identifier="PANGO_DIRECTION_LTR"
3825+ glib:nick="ltr"
3826+ glib:name="PANGO_DIRECTION_LTR">
3827+ <doc xml:space="preserve"
3828+ filename="../pango/pango-direction.h"
3829+ line="31">A strong left-to-right direction</doc>
3830+ </member>
3831+ <member name="rtl"
3832+ value="1"
3833+ c:identifier="PANGO_DIRECTION_RTL"
3834+ glib:nick="rtl"
3835+ glib:name="PANGO_DIRECTION_RTL">
3836+ <doc xml:space="preserve"
3837+ filename="../pango/pango-direction.h"
3838+ line="32">A strong right-to-left direction</doc>
3839+ </member>
3840+ <member name="ttb_ltr"
3841+ value="2"
3842+ c:identifier="PANGO_DIRECTION_TTB_LTR"
3843+ glib:nick="ttb-ltr"
3844+ glib:name="PANGO_DIRECTION_TTB_LTR">
3845+ <doc xml:space="preserve"
3846+ filename="../pango/pango-direction.h"
3847+ line="33">Deprecated value; treated the
3848+ same as `PANGO_DIRECTION_RTL`.</doc>
3849+ </member>
3850+ <member name="ttb_rtl"
3851+ value="3"
3852+ c:identifier="PANGO_DIRECTION_TTB_RTL"
3853+ glib:nick="ttb-rtl"
3854+ glib:name="PANGO_DIRECTION_TTB_RTL">
3855+ <doc xml:space="preserve"
3856+ filename="../pango/pango-direction.h"
3857+ line="35">Deprecated value; treated the
3858+ same as `PANGO_DIRECTION_LTR`</doc>
3859+ </member>
3860+ <member name="weak_ltr"
3861+ value="4"
3862+ c:identifier="PANGO_DIRECTION_WEAK_LTR"
3863+ glib:nick="weak-ltr"
3864+ glib:name="PANGO_DIRECTION_WEAK_LTR">
3865+ <doc xml:space="preserve"
3866+ filename="../pango/pango-direction.h"
3867+ line="37">A weak left-to-right direction</doc>
3868+ </member>
3869+ <member name="weak_rtl"
3870+ value="5"
3871+ c:identifier="PANGO_DIRECTION_WEAK_RTL"
3872+ glib:nick="weak-rtl"
3873+ glib:name="PANGO_DIRECTION_WEAK_RTL">
3874+ <doc xml:space="preserve"
3875+ filename="../pango/pango-direction.h"
3876+ line="38">A weak right-to-left direction</doc>
3877+ </member>
3878+ <member name="neutral"
3879+ value="6"
3880+ c:identifier="PANGO_DIRECTION_NEUTRAL"
3881+ glib:nick="neutral"
3882+ glib:name="PANGO_DIRECTION_NEUTRAL">
3883+ <doc xml:space="preserve"
3884+ filename="../pango/pango-direction.h"
3885+ line="39">No direction specified</doc>
3886+ </member>
3887+ </enumeration>
3888+ <enumeration name="EllipsizeMode"
3889+ glib:type-name="PangoEllipsizeMode"
3890+ glib:get-type="pango_ellipsize_mode_get_type"
3891+ c:type="PangoEllipsizeMode">
3892+ <doc xml:space="preserve"
3893+ filename="../pango/pango-layout.h"
3894+ line="88">`PangoEllipsizeMode` describes what sort of ellipsization
3895+should be applied to text.
3896+
3897+In the ellipsization process characters are removed from the
3898+text in order to make it fit to a given width and replaced
3899+with an ellipsis.</doc>
3900+ <member name="none"
3901+ value="0"
3902+ c:identifier="PANGO_ELLIPSIZE_NONE"
3903+ glib:nick="none"
3904+ glib:name="PANGO_ELLIPSIZE_NONE">
3905+ <doc xml:space="preserve"
3906+ filename="../pango/pango-layout.h"
3907+ line="90">No ellipsization</doc>
3908+ </member>
3909+ <member name="start"
3910+ value="1"
3911+ c:identifier="PANGO_ELLIPSIZE_START"
3912+ glib:nick="start"
3913+ glib:name="PANGO_ELLIPSIZE_START">
3914+ <doc xml:space="preserve"
3915+ filename="../pango/pango-layout.h"
3916+ line="91">Omit characters at the start of the text</doc>
3917+ </member>
3918+ <member name="middle"
3919+ value="2"
3920+ c:identifier="PANGO_ELLIPSIZE_MIDDLE"
3921+ glib:nick="middle"
3922+ glib:name="PANGO_ELLIPSIZE_MIDDLE">
3923+ <doc xml:space="preserve"
3924+ filename="../pango/pango-layout.h"
3925+ line="92">Omit characters in the middle of the text</doc>
3926+ </member>
3927+ <member name="end"
3928+ value="3"
3929+ c:identifier="PANGO_ELLIPSIZE_END"
3930+ glib:nick="end"
3931+ glib:name="PANGO_ELLIPSIZE_END">
3932+ <doc xml:space="preserve"
3933+ filename="../pango/pango-layout.h"
3934+ line="93">Omit characters at the end of the text</doc>
3935+ </member>
3936+ </enumeration>
3937+ <function-macro name="FONT" c:identifier="PANGO_FONT" introspectable="0">
3938+ <source-position filename="../pango/pango-font.h" line="544"/>
3939+ <parameters>
3940+ <parameter name="object">
3941+ </parameter>
3942+ </parameters>
3943+ </function-macro>
3944+ <function-macro name="FONTSET"
3945+ c:identifier="PANGO_FONTSET"
3946+ introspectable="0">
3947+ <source-position filename="../pango/pango-fontset.h" line="37"/>
3948+ <parameters>
3949+ <parameter name="object">
3950+ </parameter>
3951+ </parameters>
3952+ </function-macro>
3953+ <function-macro name="FONTSET_CLASS"
3954+ c:identifier="PANGO_FONTSET_CLASS"
3955+ introspectable="0">
3956+ <source-position filename="../pango/pango-fontset.h" line="39"/>
3957+ <parameters>
3958+ <parameter name="klass">
3959+ </parameter>
3960+ </parameters>
3961+ </function-macro>
3962+ <function-macro name="FONTSET_GET_CLASS"
3963+ c:identifier="PANGO_FONTSET_GET_CLASS"
3964+ introspectable="0">
3965+ <source-position filename="../pango/pango-fontset.h" line="41"/>
3966+ <parameters>
3967+ <parameter name="obj">
3968+ </parameter>
3969+ </parameters>
3970+ </function-macro>
3971+ <function-macro name="FONTSET_SIMPLE"
3972+ c:identifier="PANGO_FONTSET_SIMPLE"
3973+ introspectable="0">
3974+ <source-position filename="../pango/pango-fontset.h" line="130"/>
3975+ <parameters>
3976+ <parameter name="object">
3977+ </parameter>
3978+ </parameters>
3979+ </function-macro>
3980+ <function-macro name="FONT_CLASS"
3981+ c:identifier="PANGO_FONT_CLASS"
3982+ introspectable="0">
3983+ <source-position filename="../pango/pango-font.h" line="546"/>
3984+ <parameters>
3985+ <parameter name="klass">
3986+ </parameter>
3987+ </parameters>
3988+ </function-macro>
3989+ <function-macro name="FONT_FACE"
3990+ c:identifier="PANGO_FONT_FACE"
3991+ introspectable="0">
3992+ <source-position filename="../pango/pango-font.h" line="477"/>
3993+ <parameters>
3994+ <parameter name="object">
3995+ </parameter>
3996+ </parameters>
3997+ </function-macro>
3998+ <function-macro name="FONT_FACE_CLASS"
3999+ c:identifier="PANGO_FONT_FACE_CLASS"
4000+ introspectable="0">
4001+ <source-position filename="../pango/pango-font.h" line="479"/>
4002+ <parameters>
4003+ <parameter name="klass">
4004+ </parameter>
4005+ </parameters>
4006+ </function-macro>
4007+ <function-macro name="FONT_FACE_GET_CLASS"
4008+ c:identifier="PANGO_FONT_FACE_GET_CLASS"
4009+ introspectable="0">
4010+ <source-position filename="../pango/pango-font.h" line="481"/>
4011+ <parameters>
4012+ <parameter name="obj">
4013+ </parameter>
4014+ </parameters>
4015+ </function-macro>
4016+ <function-macro name="FONT_FAMILY"
4017+ c:identifier="PANGO_FONT_FAMILY"
4018+ introspectable="0">
4019+ <source-position filename="../pango/pango-font.h" line="402"/>
4020+ <parameters>
4021+ <parameter name="object">
4022+ </parameter>
4023+ </parameters>
4024+ </function-macro>
4025+ <function-macro name="FONT_FAMILY_CLASS"
4026+ c:identifier="PANGO_FONT_FAMILY_CLASS"
4027+ introspectable="0">
4028+ <source-position filename="../pango/pango-font.h" line="404"/>
4029+ <parameters>
4030+ <parameter name="klass">
4031+ </parameter>
4032+ </parameters>
4033+ </function-macro>
4034+ <function-macro name="FONT_FAMILY_GET_CLASS"
4035+ c:identifier="PANGO_FONT_FAMILY_GET_CLASS"
4036+ introspectable="0">
4037+ <source-position filename="../pango/pango-font.h" line="406"/>
4038+ <parameters>
4039+ <parameter name="obj">
4040+ </parameter>
4041+ </parameters>
4042+ </function-macro>
4043+ <function-macro name="FONT_GET_CLASS"
4044+ c:identifier="PANGO_FONT_GET_CLASS"
4045+ introspectable="0">
4046+ <source-position filename="../pango/pango-font.h" line="548"/>
4047+ <parameters>
4048+ <parameter name="obj">
4049+ </parameter>
4050+ </parameters>
4051+ </function-macro>
4052+ <function-macro name="FONT_MAP"
4053+ c:identifier="PANGO_FONT_MAP"
4054+ introspectable="0">
4055+ <source-position filename="../pango/pango-fontmap.h" line="32"/>
4056+ <parameters>
4057+ <parameter name="object">
4058+ </parameter>
4059+ </parameters>
4060+ </function-macro>
4061+ <function-macro name="FONT_MAP_CLASS"
4062+ c:identifier="PANGO_FONT_MAP_CLASS"
4063+ introspectable="0">
4064+ <source-position filename="../pango/pango-fontmap.h" line="34"/>
4065+ <parameters>
4066+ <parameter name="klass">
4067+ </parameter>
4068+ </parameters>
4069+ </function-macro>
4070+ <function-macro name="FONT_MAP_GET_CLASS"
4071+ c:identifier="PANGO_FONT_MAP_GET_CLASS"
4072+ introspectable="0">
4073+ <source-position filename="../pango/pango-fontmap.h" line="36"/>
4074+ <parameters>
4075+ <parameter name="obj">
4076+ </parameter>
4077+ </parameters>
4078+ </function-macro>
4079+ <class name="Font"
4080+ c:symbol-prefix="font"
4081+ c:type="PangoFont"
4082+ parent="GObject.Object"
4083+ abstract="1"
4084+ glib:type-name="PangoFont"
4085+ glib:get-type="pango_font_get_type"
4086+ glib:type-struct="FontClass">
4087+ <doc xml:space="preserve"
4088+ filename="../pango/pango-font.h"
4089+ line="553">A `PangoFont` is used to represent a font in a
4090+rendering-system-independent manner.</doc>
4091+ <source-position filename="../pango/pango-font.h" line="587"/>
4092+ <function name="descriptions_free"
4093+ c:identifier="pango_font_descriptions_free">
4094+ <doc xml:space="preserve"
4095+ filename="../pango/fonts.c"
4096+ line="986">Frees an array of font descriptions.</doc>
4097+ <source-position filename="../pango/pango-font.h" line="266"/>
4098+ <return-value transfer-ownership="none">
4099+ <type name="none" c:type="void"/>
4100+ </return-value>
4101+ <parameters>
4102+ <parameter name="descs"
4103+ transfer-ownership="full"
4104+ nullable="1"
4105+ allow-none="1">
4106+ <doc xml:space="preserve"
4107+ filename="../pango/fonts.c"
4108+ line="988">a pointer
4109+ to an array of `PangoFontDescription`, may be %NULL</doc>
4110+ <array length="1"
4111+ zero-terminated="0"
4112+ c:type="PangoFontDescription**">
4113+ <type name="FontDescription" c:type="PangoFontDescription*"/>
4114+ </array>
4115+ </parameter>
4116+ <parameter name="n_descs" transfer-ownership="none">
4117+ <doc xml:space="preserve"
4118+ filename="../pango/fonts.c"
4119+ line="990">number of font descriptions in @descs</doc>
4120+ <type name="gint" c:type="int"/>
4121+ </parameter>
4122+ </parameters>
4123+ </function>
4124+ <function name="deserialize"
4125+ c:identifier="pango_font_deserialize"
4126+ version="1.50"
4127+ throws="1">
4128+ <doc xml:space="preserve"
4129+ filename="../pango/serializer.c"
4130+ line="1766">Loads data previously created via [method@Pango.Font.serialize].
4131+
4132+For a discussion of the supported format, see that function.
4133+
4134+Note: to verify that the returned font is identical to
4135+the one that was serialized, you can compare @bytes to the
4136+result of serializing the font again.</doc>
4137+ <source-position filename="../pango/pango-font.h" line="639"/>
4138+ <return-value transfer-ownership="full" nullable="1">
4139+ <doc xml:space="preserve"
4140+ filename="../pango/serializer.c"
4141+ line="1780">a new `PangoFont`</doc>
4142+ <type name="Font" c:type="PangoFont*"/>
4143+ </return-value>
4144+ <parameters>
4145+ <parameter name="context" transfer-ownership="none">
4146+ <doc xml:space="preserve"
4147+ filename="../pango/serializer.c"
4148+ line="1768">a `PangoContext`</doc>
4149+ <type name="Context" c:type="PangoContext*"/>
4150+ </parameter>
4151+ <parameter name="bytes" transfer-ownership="none">
4152+ <doc xml:space="preserve"
4153+ filename="../pango/serializer.c"
4154+ line="1769">the bytes containing the data</doc>
4155+ <type name="GLib.Bytes" c:type="GBytes*"/>
4156+ </parameter>
4157+ </parameters>
4158+ </function>
4159+ <virtual-method name="create_hb_font">
4160+ <source-position filename="../pango/pango-font.h" line="586"/>
4161+ <return-value transfer-ownership="full">
4162+ <type name="HarfBuzz.font_t" c:type="hb_font_t*"/>
4163+ </return-value>
4164+ <parameters>
4165+ <instance-parameter name="font" transfer-ownership="none">
4166+ <type name="Font" c:type="PangoFont*"/>
4167+ </instance-parameter>
4168+ </parameters>
4169+ </virtual-method>
4170+ <virtual-method name="describe" invoker="describe">
4171+ <doc xml:space="preserve"
4172+ filename="../pango/fonts.c"
4173+ line="1801">Returns a description of the font, with font size set in points.
4174+
4175+Use [method@Pango.Font.describe_with_absolute_size] if you want
4176+the font size in device units.</doc>
4177+ <source-position filename="../pango/pango-font.h" line="571"/>
4178+ <return-value transfer-ownership="full">
4179+ <doc xml:space="preserve"
4180+ filename="../pango/fonts.c"
4181+ line="1810">a newly-allocated `PangoFontDescription` object.</doc>
4182+ <type name="FontDescription" c:type="PangoFontDescription*"/>
4183+ </return-value>
4184+ <parameters>
4185+ <instance-parameter name="font" transfer-ownership="none">
4186+ <doc xml:space="preserve"
4187+ filename="../pango/fonts.c"
4188+ line="1803">a `PangoFont`</doc>
4189+ <type name="Font" c:type="PangoFont*"/>
4190+ </instance-parameter>
4191+ </parameters>
4192+ </virtual-method>
4193+ <virtual-method name="describe_absolute">
4194+ <source-position filename="../pango/pango-font.h" line="581"/>
4195+ <return-value transfer-ownership="full">
4196+ <type name="FontDescription" c:type="PangoFontDescription*"/>
4197+ </return-value>
4198+ <parameters>
4199+ <instance-parameter name="font" transfer-ownership="none">
4200+ <type name="Font" c:type="PangoFont*"/>
4201+ </instance-parameter>
4202+ </parameters>
4203+ </virtual-method>
4204+ <virtual-method name="get_coverage" invoker="get_coverage">
4205+ <doc xml:space="preserve"
4206+ filename="../pango/fonts.c"
4207+ line="1847">Computes the coverage map for a given font and language tag.</doc>
4208+ <source-position filename="../pango/pango-font.h" line="572"/>
4209+ <return-value transfer-ownership="full">
4210+ <doc xml:space="preserve"
4211+ filename="../pango/fonts.c"
4212+ line="1854">a newly-allocated `PangoCoverage`
4213+ object.</doc>
4214+ <type name="Coverage" c:type="PangoCoverage*"/>
4215+ </return-value>
4216+ <parameters>
4217+ <instance-parameter name="font" transfer-ownership="none">
4218+ <doc xml:space="preserve"
4219+ filename="../pango/fonts.c"
4220+ line="1849">a `PangoFont`</doc>
4221+ <type name="Font" c:type="PangoFont*"/>
4222+ </instance-parameter>
4223+ <parameter name="language" transfer-ownership="none">
4224+ <doc xml:space="preserve"
4225+ filename="../pango/fonts.c"
4226+ line="1850">the language tag</doc>
4227+ <type name="Language" c:type="PangoLanguage*"/>
4228+ </parameter>
4229+ </parameters>
4230+ </virtual-method>
4231+ <virtual-method name="get_features"
4232+ invoker="get_features"
4233+ version="1.44">
4234+ <doc xml:space="preserve"
4235+ filename="../pango/fonts.c"
4236+ line="2703">Obtain the OpenType features that are provided by the font.
4237+
4238+These are passed to the rendering system, together with features
4239+that have been explicitly set via attributes.
4240+
4241+Note that this does not include OpenType features which the
4242+rendering system enables by default.</doc>
4243+ <source-position filename="../pango/pango-font.h" line="582"/>
4244+ <return-value transfer-ownership="none">
4245+ <type name="none" c:type="void"/>
4246+ </return-value>
4247+ <parameters>
4248+ <instance-parameter name="font" transfer-ownership="none">
4249+ <doc xml:space="preserve"
4250+ filename="../pango/fonts.c"
4251+ line="2705">a `PangoFont`</doc>
4252+ <type name="Font" c:type="PangoFont*"/>
4253+ </instance-parameter>
4254+ <parameter name="features"
4255+ direction="out"
4256+ caller-allocates="1"
4257+ transfer-ownership="none">
4258+ <doc xml:space="preserve"
4259+ filename="../pango/fonts.c"
4260+ line="2706">Array to features in</doc>
4261+ <array length="1" zero-terminated="0" c:type="hb_feature_t*">
4262+ <type name="HarfBuzz.feature_t" c:type="hb_feature_t"/>
4263+ </array>
4264+ </parameter>
4265+ <parameter name="len"
4266+ direction="out"
4267+ caller-allocates="0"
4268+ transfer-ownership="full">
4269+ <doc xml:space="preserve"
4270+ filename="../pango/fonts.c"
4271+ line="2707">the length of @features</doc>
4272+ <type name="guint" c:type="guint"/>
4273+ </parameter>
4274+ <parameter name="num_features"
4275+ direction="inout"
4276+ caller-allocates="0"
4277+ transfer-ownership="full">
4278+ <doc xml:space="preserve"
4279+ filename="../pango/fonts.c"
4280+ line="2708">the number of used items in @features</doc>
4281+ <type name="guint" c:type="guint*"/>
4282+ </parameter>
4283+ </parameters>
4284+ </virtual-method>
4285+ <virtual-method name="get_font_map"
4286+ invoker="get_font_map"
4287+ version="1.10">
4288+ <doc xml:space="preserve"
4289+ filename="../pango/fonts.c"
4290+ line="1976">Gets the font map for which the font was created.
4291+
4292+Note that the font maintains a *weak* reference to
4293+the font map, so if all references to font map are
4294+dropped, the font map will be finalized even if there
4295+are fonts created with the font map that are still alive.
4296+In that case this function will return %NULL.
4297+
4298+It is the responsibility of the user to ensure that the
4299+font map is kept alive. In most uses this is not an issue
4300+as a `PangoContext` holds a reference to the font map.</doc>
4301+ <source-position filename="../pango/pango-font.h" line="580"/>
4302+ <return-value transfer-ownership="none" nullable="1">
4303+ <doc xml:space="preserve"
4304+ filename="../pango/fonts.c"
4305+ line="1992">the `PangoFontMap`
4306+ for the font</doc>
4307+ <type name="FontMap" c:type="PangoFontMap*"/>
4308+ </return-value>
4309+ <parameters>
4310+ <instance-parameter name="font"
4311+ transfer-ownership="none"
4312+ nullable="1"
4313+ allow-none="1">
4314+ <doc xml:space="preserve"
4315+ filename="../pango/fonts.c"
4316+ line="1978">a `PangoFont`</doc>
4317+ <type name="Font" c:type="PangoFont*"/>
4318+ </instance-parameter>
4319+ </parameters>
4320+ </virtual-method>
4321+ <virtual-method name="get_glyph_extents" invoker="get_glyph_extents">
4322+ <doc xml:space="preserve"
4323+ filename="../pango/fonts.c"
4324+ line="1886">Gets the logical and ink extents of a glyph within a font.
4325+
4326+The coordinate system for each rectangle has its origin at the
4327+base line and horizontal origin of the character with increasing
4328+coordinates extending to the right and down. The macros PANGO_ASCENT(),
4329+PANGO_DESCENT(), PANGO_LBEARING(), and PANGO_RBEARING() can be used to convert
4330+from the extents rectangle to more traditional font metrics. The units
4331+of the rectangles are in 1/PANGO_SCALE of a device unit.
4332+
4333+If @font is %NULL, this function gracefully sets some sane values in the
4334+output variables and returns.</doc>
4335+ <source-position filename="../pango/pango-font.h" line="574"/>
4336+ <return-value transfer-ownership="none">
4337+ <type name="none" c:type="void"/>
4338+ </return-value>
4339+ <parameters>
4340+ <instance-parameter name="font"
4341+ transfer-ownership="none"
4342+ nullable="1"
4343+ allow-none="1">
4344+ <doc xml:space="preserve"
4345+ filename="../pango/fonts.c"
4346+ line="1888">a `PangoFont`</doc>
4347+ <type name="Font" c:type="PangoFont*"/>
4348+ </instance-parameter>
4349+ <parameter name="glyph" transfer-ownership="none">
4350+ <doc xml:space="preserve"
4351+ filename="../pango/fonts.c"
4352+ line="1889">the glyph index</doc>
4353+ <type name="Glyph" c:type="PangoGlyph"/>
4354+ </parameter>
4355+ <parameter name="ink_rect"
4356+ direction="out"
4357+ caller-allocates="1"
4358+ transfer-ownership="none"
4359+ optional="1"
4360+ allow-none="1">
4361+ <doc xml:space="preserve"
4362+ filename="../pango/fonts.c"
4363+ line="1890">rectangle used to store the extents of the glyph as drawn</doc>
4364+ <type name="Rectangle" c:type="PangoRectangle*"/>
4365+ </parameter>
4366+ <parameter name="logical_rect"
4367+ direction="out"
4368+ caller-allocates="1"
4369+ transfer-ownership="none"
4370+ optional="1"
4371+ allow-none="1">
4372+ <doc xml:space="preserve"
4373+ filename="../pango/fonts.c"
4374+ line="1891">rectangle used to store the logical extents of the glyph</doc>
4375+ <type name="Rectangle" c:type="PangoRectangle*"/>
4376+ </parameter>
4377+ </parameters>
4378+ </virtual-method>
4379+ <virtual-method name="get_metrics" invoker="get_metrics">
4380+ <doc xml:space="preserve"
4381+ filename="../pango/fonts.c"
4382+ line="1933">Gets overall metric information for a font.
4383+
4384+Since the metrics may be substantially different for different scripts,
4385+a language tag can be provided to indicate that the metrics should be
4386+retrieved that correspond to the script(s) used by that language.
4387+
4388+If @font is %NULL, this function gracefully sets some sane values in the
4389+output variables and returns.</doc>
4390+ <source-position filename="../pango/pango-font.h" line="578"/>
4391+ <return-value transfer-ownership="full">
4392+ <doc xml:space="preserve"
4393+ filename="../pango/fonts.c"
4394+ line="1949">a `PangoFontMetrics` object. The caller must call
4395+ [method@Pango.FontMetrics.unref] when finished using the object.</doc>
4396+ <type name="FontMetrics" c:type="PangoFontMetrics*"/>
4397+ </return-value>
4398+ <parameters>
4399+ <instance-parameter name="font"
4400+ transfer-ownership="none"
4401+ nullable="1"
4402+ allow-none="1">
4403+ <doc xml:space="preserve"
4404+ filename="../pango/fonts.c"
4405+ line="1935">a `PangoFont`</doc>
4406+ <type name="Font" c:type="PangoFont*"/>
4407+ </instance-parameter>
4408+ <parameter name="language"
4409+ transfer-ownership="none"
4410+ nullable="1"
4411+ allow-none="1">
4412+ <doc xml:space="preserve"
4413+ filename="../pango/fonts.c"
4414+ line="1936">language tag used to determine which script
4415+ to get the metrics for, or %NULL to indicate to get the metrics for
4416+ the entire font.</doc>
4417+ <type name="Language" c:type="PangoLanguage*"/>
4418+ </parameter>
4419+ </parameters>
4420+ </virtual-method>
4421+ <method name="describe" c:identifier="pango_font_describe">
4422+ <doc xml:space="preserve"
4423+ filename="../pango/fonts.c"
4424+ line="1801">Returns a description of the font, with font size set in points.
4425+
4426+Use [method@Pango.Font.describe_with_absolute_size] if you want
4427+the font size in device units.</doc>
4428+ <source-position filename="../pango/pango-font.h" line="595"/>
4429+ <return-value transfer-ownership="full">
4430+ <doc xml:space="preserve"
4431+ filename="../pango/fonts.c"
4432+ line="1810">a newly-allocated `PangoFontDescription` object.</doc>
4433+ <type name="FontDescription" c:type="PangoFontDescription*"/>
4434+ </return-value>
4435+ <parameters>
4436+ <instance-parameter name="font" transfer-ownership="none">
4437+ <doc xml:space="preserve"
4438+ filename="../pango/fonts.c"
4439+ line="1803">a `PangoFont`</doc>
4440+ <type name="Font" c:type="PangoFont*"/>
4441+ </instance-parameter>
4442+ </parameters>
4443+ </method>
4444+ <method name="describe_with_absolute_size"
4445+ c:identifier="pango_font_describe_with_absolute_size"
4446+ version="1.14">
4447+ <doc xml:space="preserve"
4448+ filename="../pango/fonts.c"
4449+ line="1820">Returns a description of the font, with absolute font size set
4450+in device units.
4451+
4452+Use [method@Pango.Font.describe] if you want the font size in points.</doc>
4453+ <source-position filename="../pango/pango-font.h" line="597"/>
4454+ <return-value transfer-ownership="full">
4455+ <doc xml:space="preserve"
4456+ filename="../pango/fonts.c"
4457+ line="1829">a newly-allocated `PangoFontDescription` object.</doc>
4458+ <type name="FontDescription" c:type="PangoFontDescription*"/>
4459+ </return-value>
4460+ <parameters>
4461+ <instance-parameter name="font" transfer-ownership="none">
4462+ <doc xml:space="preserve"
4463+ filename="../pango/fonts.c"
4464+ line="1822">a `PangoFont`</doc>
4465+ <type name="Font" c:type="PangoFont*"/>
4466+ </instance-parameter>
4467+ </parameters>
4468+ </method>
4469+ <method name="get_coverage" c:identifier="pango_font_get_coverage">
4470+ <doc xml:space="preserve"
4471+ filename="../pango/fonts.c"
4472+ line="1847">Computes the coverage map for a given font and language tag.</doc>
4473+ <source-position filename="../pango/pango-font.h" line="599"/>
4474+ <return-value transfer-ownership="full">
4475+ <doc xml:space="preserve"
4476+ filename="../pango/fonts.c"
4477+ line="1854">a newly-allocated `PangoCoverage`
4478+ object.</doc>
4479+ <type name="Coverage" c:type="PangoCoverage*"/>
4480+ </return-value>
4481+ <parameters>
4482+ <instance-parameter name="font" transfer-ownership="none">
4483+ <doc xml:space="preserve"
4484+ filename="../pango/fonts.c"
4485+ line="1849">a `PangoFont`</doc>
4486+ <type name="Font" c:type="PangoFont*"/>
4487+ </instance-parameter>
4488+ <parameter name="language" transfer-ownership="none">
4489+ <doc xml:space="preserve"
4490+ filename="../pango/fonts.c"
4491+ line="1850">the language tag</doc>
4492+ <type name="Language" c:type="PangoLanguage*"/>
4493+ </parameter>
4494+ </parameters>
4495+ </method>
4496+ <method name="get_face"
4497+ c:identifier="pango_font_get_face"
4498+ version="1.46">
4499+ <doc xml:space="preserve"
4500+ filename="../pango/fonts.c"
4501+ line="2009">Gets the `PangoFontFace` to which @font belongs.</doc>
4502+ <source-position filename="../pango/pango-font.h" line="619"/>
4503+ <return-value transfer-ownership="none">
4504+ <doc xml:space="preserve"
4505+ filename="../pango/fonts.c"
4506+ line="2015">the `PangoFontFace`</doc>
4507+ <type name="FontFace" c:type="PangoFontFace*"/>
4508+ </return-value>
4509+ <parameters>
4510+ <instance-parameter name="font" transfer-ownership="none">
4511+ <doc xml:space="preserve"
4512+ filename="../pango/fonts.c"
4513+ line="2011">a `PangoFont`</doc>
4514+ <type name="Font" c:type="PangoFont*"/>
4515+ </instance-parameter>
4516+ </parameters>
4517+ </method>
4518+ <method name="get_features"
4519+ c:identifier="pango_font_get_features"
4520+ version="1.44">
4521+ <doc xml:space="preserve"
4522+ filename="../pango/fonts.c"
4523+ line="2703">Obtain the OpenType features that are provided by the font.
4524+
4525+These are passed to the rendering system, together with features
4526+that have been explicitly set via attributes.
4527+
4528+Note that this does not include OpenType features which the
4529+rendering system enables by default.</doc>
4530+ <source-position filename="../pango/pango-font.h" line="625"/>
4531+ <return-value transfer-ownership="none">
4532+ <type name="none" c:type="void"/>
4533+ </return-value>
4534+ <parameters>
4535+ <instance-parameter name="font" transfer-ownership="none">
4536+ <doc xml:space="preserve"
4537+ filename="../pango/fonts.c"
4538+ line="2705">a `PangoFont`</doc>
4539+ <type name="Font" c:type="PangoFont*"/>
4540+ </instance-parameter>
4541+ <parameter name="features"
4542+ direction="out"
4543+ caller-allocates="1"
4544+ transfer-ownership="none">
4545+ <doc xml:space="preserve"
4546+ filename="../pango/fonts.c"
4547+ line="2706">Array to features in</doc>
4548+ <array length="1" zero-terminated="0" c:type="hb_feature_t*">
4549+ <type name="HarfBuzz.feature_t" c:type="hb_feature_t"/>
4550+ </array>
4551+ </parameter>
4552+ <parameter name="len"
4553+ direction="out"
4554+ caller-allocates="0"
4555+ transfer-ownership="full">
4556+ <doc xml:space="preserve"
4557+ filename="../pango/fonts.c"
4558+ line="2707">the length of @features</doc>
4559+ <type name="guint" c:type="guint"/>
4560+ </parameter>
4561+ <parameter name="num_features"
4562+ direction="inout"
4563+ caller-allocates="0"
4564+ transfer-ownership="full">
4565+ <doc xml:space="preserve"
4566+ filename="../pango/fonts.c"
4567+ line="2708">the number of used items in @features</doc>
4568+ <type name="guint" c:type="guint*"/>
4569+ </parameter>
4570+ </parameters>
4571+ </method>
4572+ <method name="get_font_map"
4573+ c:identifier="pango_font_get_font_map"
4574+ version="1.10">
4575+ <doc xml:space="preserve"
4576+ filename="../pango/fonts.c"
4577+ line="1976">Gets the font map for which the font was created.
4578+
4579+Note that the font maintains a *weak* reference to
4580+the font map, so if all references to font map are
4581+dropped, the font map will be finalized even if there
4582+are fonts created with the font map that are still alive.
4583+In that case this function will return %NULL.
4584+
4585+It is the responsibility of the user to ensure that the
4586+font map is kept alive. In most uses this is not an issue
4587+as a `PangoContext` holds a reference to the font map.</doc>
4588+ <source-position filename="../pango/pango-font.h" line="616"/>
4589+ <return-value transfer-ownership="none" nullable="1">
4590+ <doc xml:space="preserve"
4591+ filename="../pango/fonts.c"
4592+ line="1992">the `PangoFontMap`
4593+ for the font</doc>
4594+ <type name="FontMap" c:type="PangoFontMap*"/>
4595+ </return-value>
4596+ <parameters>
4597+ <instance-parameter name="font"
4598+ transfer-ownership="none"
4599+ nullable="1"
4600+ allow-none="1">
4601+ <doc xml:space="preserve"
4602+ filename="../pango/fonts.c"
4603+ line="1978">a `PangoFont`</doc>
4604+ <type name="Font" c:type="PangoFont*"/>
4605+ </instance-parameter>
4606+ </parameters>
4607+ </method>
4608+ <method name="get_glyph_extents"
4609+ c:identifier="pango_font_get_glyph_extents">
4610+ <doc xml:space="preserve"
4611+ filename="../pango/fonts.c"
4612+ line="1886">Gets the logical and ink extents of a glyph within a font.
4613+
4614+The coordinate system for each rectangle has its origin at the
4615+base line and horizontal origin of the character with increasing
4616+coordinates extending to the right and down. The macros PANGO_ASCENT(),
4617+PANGO_DESCENT(), PANGO_LBEARING(), and PANGO_RBEARING() can be used to convert
4618+from the extents rectangle to more traditional font metrics. The units
4619+of the rectangles are in 1/PANGO_SCALE of a device unit.
4620+
4621+If @font is %NULL, this function gracefully sets some sane values in the
4622+output variables and returns.</doc>
4623+ <source-position filename="../pango/pango-font.h" line="611"/>
4624+ <return-value transfer-ownership="none">
4625+ <type name="none" c:type="void"/>
4626+ </return-value>
4627+ <parameters>
4628+ <instance-parameter name="font"
4629+ transfer-ownership="none"
4630+ nullable="1"
4631+ allow-none="1">
4632+ <doc xml:space="preserve"
4633+ filename="../pango/fonts.c"
4634+ line="1888">a `PangoFont`</doc>
4635+ <type name="Font" c:type="PangoFont*"/>
4636+ </instance-parameter>
4637+ <parameter name="glyph" transfer-ownership="none">
4638+ <doc xml:space="preserve"
4639+ filename="../pango/fonts.c"
4640+ line="1889">the glyph index</doc>
4641+ <type name="Glyph" c:type="PangoGlyph"/>
4642+ </parameter>
4643+ <parameter name="ink_rect"
4644+ direction="out"
4645+ caller-allocates="1"
4646+ transfer-ownership="none"
4647+ optional="1"
4648+ allow-none="1">
4649+ <doc xml:space="preserve"
4650+ filename="../pango/fonts.c"
4651+ line="1890">rectangle used to store the extents of the glyph as drawn</doc>
4652+ <type name="Rectangle" c:type="PangoRectangle*"/>
4653+ </parameter>
4654+ <parameter name="logical_rect"
4655+ direction="out"
4656+ caller-allocates="1"
4657+ transfer-ownership="none"
4658+ optional="1"
4659+ allow-none="1">
4660+ <doc xml:space="preserve"
4661+ filename="../pango/fonts.c"
4662+ line="1891">rectangle used to store the logical extents of the glyph</doc>
4663+ <type name="Rectangle" c:type="PangoRectangle*"/>
4664+ </parameter>
4665+ </parameters>
4666+ </method>
4667+ <method name="get_hb_font"
4668+ c:identifier="pango_font_get_hb_font"
4669+ version="1.44"
4670+ introspectable="0">
4671+ <doc xml:space="preserve"
4672+ filename="../pango/fonts.c"
4673+ line="2027">Get a `hb_font_t` object backing this font.
4674+
4675+Note that the objects returned by this function are cached
4676+and immutable. If you need to make changes to the `hb_font_t`,
4677+use [hb_font_create_sub_font()](https://harfbuzz.github.io/harfbuzz-hb-font.html#hb-font-create-sub-font).</doc>
4678+ <source-position filename="../pango/pango-font.h" line="630"/>
4679+ <return-value transfer-ownership="none" nullable="1">
4680+ <doc xml:space="preserve"
4681+ filename="../pango/fonts.c"
4682+ line="2037">the `hb_font_t` object
4683+ backing the font</doc>
4684+ <type name="HarfBuzz.font_t" c:type="hb_font_t*"/>
4685+ </return-value>
4686+ <parameters>
4687+ <instance-parameter name="font" transfer-ownership="none">
4688+ <doc xml:space="preserve"
4689+ filename="../pango/fonts.c"
4690+ line="2029">a `PangoFont`</doc>
4691+ <type name="Font" c:type="PangoFont*"/>
4692+ </instance-parameter>
4693+ </parameters>
4694+ </method>
4695+ <method name="get_languages"
4696+ c:identifier="pango_font_get_languages"
4697+ version="1.50">
4698+ <doc xml:space="preserve"
4699+ filename="../pango/fonts.c"
4700+ line="2730">Returns the languages that are supported by @font.
4701+
4702+If the font backend does not provide this information,
4703+%NULL is returned. For the fontconfig backend, this
4704+corresponds to the FC_LANG member of the FcPattern.
4705+
4706+The returned array is only valid as long as the font
4707+and its fontmap are valid.</doc>
4708+ <source-position filename="../pango/pango-font.h" line="633"/>
4709+ <return-value transfer-ownership="none" nullable="1">
4710+ <doc xml:space="preserve"
4711+ filename="../pango/fonts.c"
4712+ line="2743">an array of `PangoLanguage`</doc>
4713+ <array c:type="PangoLanguage**">
4714+ <type name="Language"/>
4715+ </array>
4716+ </return-value>
4717+ <parameters>
4718+ <instance-parameter name="font" transfer-ownership="none">
4719+ <doc xml:space="preserve"
4720+ filename="../pango/fonts.c"
4721+ line="2732">a `PangoFont`</doc>
4722+ <type name="Font" c:type="PangoFont*"/>
4723+ </instance-parameter>
4724+ </parameters>
4725+ </method>
4726+ <method name="get_metrics" c:identifier="pango_font_get_metrics">
4727+ <doc xml:space="preserve"
4728+ filename="../pango/fonts.c"
4729+ line="1933">Gets overall metric information for a font.
4730+
4731+Since the metrics may be substantially different for different scripts,
4732+a language tag can be provided to indicate that the metrics should be
4733+retrieved that correspond to the script(s) used by that language.
4734+
4735+If @font is %NULL, this function gracefully sets some sane values in the
4736+output variables and returns.</doc>
4737+ <source-position filename="../pango/pango-font.h" line="608"/>
4738+ <return-value transfer-ownership="full">
4739+ <doc xml:space="preserve"
4740+ filename="../pango/fonts.c"
4741+ line="1949">a `PangoFontMetrics` object. The caller must call
4742+ [method@Pango.FontMetrics.unref] when finished using the object.</doc>
4743+ <type name="FontMetrics" c:type="PangoFontMetrics*"/>
4744+ </return-value>
4745+ <parameters>
4746+ <instance-parameter name="font"
4747+ transfer-ownership="none"
4748+ nullable="1"
4749+ allow-none="1">
4750+ <doc xml:space="preserve"
4751+ filename="../pango/fonts.c"
4752+ line="1935">a `PangoFont`</doc>
4753+ <type name="Font" c:type="PangoFont*"/>
4754+ </instance-parameter>
4755+ <parameter name="language"
4756+ transfer-ownership="none"
4757+ nullable="1"
4758+ allow-none="1">
4759+ <doc xml:space="preserve"
4760+ filename="../pango/fonts.c"
4761+ line="1936">language tag used to determine which script
4762+ to get the metrics for, or %NULL to indicate to get the metrics for
4763+ the entire font.</doc>
4764+ <type name="Language" c:type="PangoLanguage*"/>
4765+ </parameter>
4766+ </parameters>
4767+ </method>
4768+ <method name="has_char"
4769+ c:identifier="pango_font_has_char"
4770+ version="1.44">
4771+ <doc xml:space="preserve"
4772+ filename="../pango/fonts.c"
4773+ line="2683">Returns whether the font provides a glyph for this character.
4774+
4775+Returns %TRUE if @font can render @wc</doc>
4776+ <source-position filename="../pango/pango-font.h" line="622"/>
4777+ <return-value transfer-ownership="none">
4778+ <type name="gboolean" c:type="gboolean"/>
4779+ </return-value>
4780+ <parameters>
4781+ <instance-parameter name="font" transfer-ownership="none">
4782+ <doc xml:space="preserve"
4783+ filename="../pango/fonts.c"
4784+ line="2685">a `PangoFont`</doc>
4785+ <type name="Font" c:type="PangoFont*"/>
4786+ </instance-parameter>
4787+ <parameter name="wc" transfer-ownership="none">
4788+ <doc xml:space="preserve"
4789+ filename="../pango/fonts.c"
4790+ line="2686">a Unicode character</doc>
4791+ <type name="gunichar" c:type="gunichar"/>
4792+ </parameter>
4793+ </parameters>
4794+ </method>
4795+ <method name="serialize"
4796+ c:identifier="pango_font_serialize"
4797+ version="1.50">
4798+ <doc xml:space="preserve"
4799+ filename="../pango/serializer.c"
4800+ line="1725">Serializes the @font in a way that can be uniquely identified.
4801+
4802+There are no guarantees about the format of the output across different
4803+versions of Pango.
4804+
4805+The intended use of this function is testing, benchmarking and debugging.
4806+The format is not meant as a permanent storage format.
4807+
4808+To recreate a font from its serialized form, use [func@Pango.Font.deserialize].</doc>
4809+ <source-position filename="../pango/pango-font.h" line="636"/>
4810+ <return-value transfer-ownership="full">
4811+ <doc xml:space="preserve"
4812+ filename="../pango/serializer.c"
4813+ line="1739">a `GBytes` containing the serialized form of @font</doc>
4814+ <type name="GLib.Bytes" c:type="GBytes*"/>
4815+ </return-value>
4816+ <parameters>
4817+ <instance-parameter name="font" transfer-ownership="none">
4818+ <doc xml:space="preserve"
4819+ filename="../pango/serializer.c"
4820+ line="1727">a `PangoFont`</doc>
4821+ <type name="Font" c:type="PangoFont*"/>
4822+ </instance-parameter>
4823+ </parameters>
4824+ </method>
4825+ <field name="parent_instance">
4826+ <type name="GObject.Object" c:type="GObject"/>
4827+ </field>
4828+ </class>
4829+ <record name="FontClass"
4830+ c:type="PangoFontClass"
4831+ glib:is-gtype-struct-for="Font">
4832+ <source-position filename="../pango/pango-font.h" line="587"/>
4833+ <field name="parent_class">
4834+ <type name="GObject.ObjectClass" c:type="GObjectClass"/>
4835+ </field>
4836+ <field name="describe">
4837+ <callback name="describe">
4838+ <source-position filename="../pango/pango-font.h" line="571"/>
4839+ <return-value transfer-ownership="full">
4840+ <doc xml:space="preserve"
4841+ filename="../pango/fonts.c"
4842+ line="1810">a newly-allocated `PangoFontDescription` object.</doc>
4843+ <type name="FontDescription" c:type="PangoFontDescription*"/>
4844+ </return-value>
4845+ <parameters>
4846+ <parameter name="font" transfer-ownership="none">
4847+ <doc xml:space="preserve"
4848+ filename="../pango/fonts.c"
4849+ line="1803">a `PangoFont`</doc>
4850+ <type name="Font" c:type="PangoFont*"/>
4851+ </parameter>
4852+ </parameters>
4853+ </callback>
4854+ </field>
4855+ <field name="get_coverage">
4856+ <callback name="get_coverage">
4857+ <source-position filename="../pango/pango-font.h" line="572"/>
4858+ <return-value transfer-ownership="full">
4859+ <doc xml:space="preserve"
4860+ filename="../pango/fonts.c"
4861+ line="1854">a newly-allocated `PangoCoverage`
4862+ object.</doc>
4863+ <type name="Coverage" c:type="PangoCoverage*"/>
4864+ </return-value>
4865+ <parameters>
4866+ <parameter name="font" transfer-ownership="none">
4867+ <doc xml:space="preserve"
4868+ filename="../pango/fonts.c"
4869+ line="1849">a `PangoFont`</doc>
4870+ <type name="Font" c:type="PangoFont*"/>
4871+ </parameter>
4872+ <parameter name="language" transfer-ownership="none">
4873+ <doc xml:space="preserve"
4874+ filename="../pango/fonts.c"
4875+ line="1850">the language tag</doc>
4876+ <type name="Language" c:type="PangoLanguage*"/>
4877+ </parameter>
4878+ </parameters>
4879+ </callback>
4880+ </field>
4881+ <field name="get_glyph_extents">
4882+ <callback name="get_glyph_extents">
4883+ <source-position filename="../pango/pango-font.h" line="574"/>
4884+ <return-value transfer-ownership="none">
4885+ <type name="none" c:type="void"/>
4886+ </return-value>
4887+ <parameters>
4888+ <parameter name="font"
4889+ transfer-ownership="none"
4890+ nullable="1"
4891+ allow-none="1">
4892+ <doc xml:space="preserve"
4893+ filename="../pango/fonts.c"
4894+ line="1888">a `PangoFont`</doc>
4895+ <type name="Font" c:type="PangoFont*"/>
4896+ </parameter>
4897+ <parameter name="glyph" transfer-ownership="none">
4898+ <doc xml:space="preserve"
4899+ filename="../pango/fonts.c"
4900+ line="1889">the glyph index</doc>
4901+ <type name="Glyph" c:type="PangoGlyph"/>
4902+ </parameter>
4903+ <parameter name="ink_rect"
4904+ direction="out"
4905+ caller-allocates="1"
4906+ transfer-ownership="none"
4907+ optional="1"
4908+ allow-none="1">
4909+ <doc xml:space="preserve"
4910+ filename="../pango/fonts.c"
4911+ line="1890">rectangle used to store the extents of the glyph as drawn</doc>
4912+ <type name="Rectangle" c:type="PangoRectangle*"/>
4913+ </parameter>
4914+ <parameter name="logical_rect"
4915+ direction="out"
4916+ caller-allocates="1"
4917+ transfer-ownership="none"
4918+ optional="1"
4919+ allow-none="1">
4920+ <doc xml:space="preserve"
4921+ filename="../pango/fonts.c"
4922+ line="1891">rectangle used to store the logical extents of the glyph</doc>
4923+ <type name="Rectangle" c:type="PangoRectangle*"/>
4924+ </parameter>
4925+ </parameters>
4926+ </callback>
4927+ </field>
4928+ <field name="get_metrics">
4929+ <callback name="get_metrics">
4930+ <source-position filename="../pango/pango-font.h" line="578"/>
4931+ <return-value transfer-ownership="full">
4932+ <doc xml:space="preserve"
4933+ filename="../pango/fonts.c"
4934+ line="1949">a `PangoFontMetrics` object. The caller must call
4935+ [method@Pango.FontMetrics.unref] when finished using the object.</doc>
4936+ <type name="FontMetrics" c:type="PangoFontMetrics*"/>
4937+ </return-value>
4938+ <parameters>
4939+ <parameter name="font"
4940+ transfer-ownership="none"
4941+ nullable="1"
4942+ allow-none="1">
4943+ <doc xml:space="preserve"
4944+ filename="../pango/fonts.c"
4945+ line="1935">a `PangoFont`</doc>
4946+ <type name="Font" c:type="PangoFont*"/>
4947+ </parameter>
4948+ <parameter name="language"
4949+ transfer-ownership="none"
4950+ nullable="1"
4951+ allow-none="1">
4952+ <doc xml:space="preserve"
4953+ filename="../pango/fonts.c"
4954+ line="1936">language tag used to determine which script
4955+ to get the metrics for, or %NULL to indicate to get the metrics for
4956+ the entire font.</doc>
4957+ <type name="Language" c:type="PangoLanguage*"/>
4958+ </parameter>
4959+ </parameters>
4960+ </callback>
4961+ </field>
4962+ <field name="get_font_map">
4963+ <callback name="get_font_map">
4964+ <source-position filename="../pango/pango-font.h" line="580"/>
4965+ <return-value transfer-ownership="none" nullable="1">
4966+ <doc xml:space="preserve"
4967+ filename="../pango/fonts.c"
4968+ line="1992">the `PangoFontMap`
4969+ for the font</doc>
4970+ <type name="FontMap" c:type="PangoFontMap*"/>
4971+ </return-value>
4972+ <parameters>
4973+ <parameter name="font"
4974+ transfer-ownership="none"
4975+ nullable="1"
4976+ allow-none="1">
4977+ <doc xml:space="preserve"
4978+ filename="../pango/fonts.c"
4979+ line="1978">a `PangoFont`</doc>
4980+ <type name="Font" c:type="PangoFont*"/>
4981+ </parameter>
4982+ </parameters>
4983+ </callback>
4984+ </field>
4985+ <field name="describe_absolute">
4986+ <callback name="describe_absolute">
4987+ <source-position filename="../pango/pango-font.h" line="581"/>
4988+ <return-value transfer-ownership="full">
4989+ <type name="FontDescription" c:type="PangoFontDescription*"/>
4990+ </return-value>
4991+ <parameters>
4992+ <parameter name="font" transfer-ownership="none">
4993+ <type name="Font" c:type="PangoFont*"/>
4994+ </parameter>
4995+ </parameters>
4996+ </callback>
4997+ </field>
4998+ <field name="get_features">
4999+ <callback name="get_features">
5000+ <source-position filename="../pango/pango-font.h" line="582"/>
5001+ <return-value transfer-ownership="none">
5002+ <type name="none" c:type="void"/>
5003+ </return-value>
5004+ <parameters>
5005+ <parameter name="font" transfer-ownership="none">
5006+ <doc xml:space="preserve"
5007+ filename="../pango/fonts.c"
5008+ line="2705">a `PangoFont`</doc>
5009+ <type name="Font" c:type="PangoFont*"/>
5010+ </parameter>
5011+ <parameter name="features"
5012+ direction="out"
5013+ caller-allocates="1"
5014+ transfer-ownership="none">
5015+ <doc xml:space="preserve"
5016+ filename="../pango/fonts.c"
5017+ line="2706">Array to features in</doc>
5018+ <array length="2" zero-terminated="0" c:type="hb_feature_t*">
5019+ <type name="HarfBuzz.feature_t" c:type="hb_feature_t"/>
5020+ </array>
5021+ </parameter>
5022+ <parameter name="len"
5023+ direction="out"
5024+ caller-allocates="0"
5025+ transfer-ownership="full">
5026+ <doc xml:space="preserve"
5027+ filename="../pango/fonts.c"
5028+ line="2707">the length of @features</doc>
5029+ <type name="guint" c:type="guint"/>
5030+ </parameter>
5031+ <parameter name="num_features"
5032+ direction="inout"
5033+ caller-allocates="0"
5034+ transfer-ownership="full">
5035+ <doc xml:space="preserve"
5036+ filename="../pango/fonts.c"
5037+ line="2708">the number of used items in @features</doc>
5038+ <type name="guint" c:type="guint*"/>
5039+ </parameter>
5040+ </parameters>
5041+ </callback>
5042+ </field>
5043+ <field name="create_hb_font">
5044+ <callback name="create_hb_font">
5045+ <source-position filename="../pango/pango-font.h" line="586"/>
5046+ <return-value transfer-ownership="full">
5047+ <type name="HarfBuzz.font_t" c:type="hb_font_t*"/>
5048+ </return-value>
5049+ <parameters>
5050+ <parameter name="font" transfer-ownership="none">
5051+ <type name="Font" c:type="PangoFont*"/>
5052+ </parameter>
5053+ </parameters>
5054+ </callback>
5055+ </field>
5056+ </record>
5057+ <record name="FontDescription"
5058+ c:type="PangoFontDescription"
5059+ glib:type-name="PangoFontDescription"
5060+ glib:get-type="pango_font_description_get_type"
5061+ c:symbol-prefix="font_description">
5062+ <doc xml:space="preserve"
5063+ filename="../pango/pango-font.h"
5064+ line="33">A `PangoFontDescription` describes a font in an implementation-independent
5065+manner.
5066+
5067+`PangoFontDescription` structures are used both to list what fonts are
5068+available on the system and also for specifying the characteristics of
5069+a font to load.</doc>
5070+ <source-position filename="../pango/pango-font.h" line="43"/>
5071+ <constructor name="new" c:identifier="pango_font_description_new">
5072+ <doc xml:space="preserve"
5073+ filename="../pango/fonts.c"
5074+ line="76">Creates a new font description structure with all fields unset.</doc>
5075+ <source-position filename="../pango/pango-font.h" line="253"/>
5076+ <return-value transfer-ownership="full">
5077+ <doc xml:space="preserve"
5078+ filename="../pango/fonts.c"
5079+ line="81">the newly allocated `PangoFontDescription`, which
5080+ should be freed using [method@Pango.FontDescription.free].</doc>
5081+ <type name="FontDescription" c:type="PangoFontDescription*"/>
5082+ </return-value>
5083+ </constructor>
5084+ <method name="better_match"
5085+ c:identifier="pango_font_description_better_match">
5086+ <doc xml:space="preserve"
5087+ filename="../pango/fonts.c"
5088+ line="767">Determines if the style attributes of @new_match are a closer match
5089+for @desc than those of @old_match are, or if @old_match is %NULL,
5090+determines if @new_match is a match at all.
5091+
5092+Approximate matching is done for weight and style; other style attributes
5093+must match exactly. Style attributes are all attributes other than family
5094+and size-related attributes. Approximate matching for style considers
5095+%PANGO_STYLE_OBLIQUE and %PANGO_STYLE_ITALIC as matches, but not as good
5096+a match as when the styles are equal.
5097+
5098+Note that @old_match must match @desc.</doc>
5099+ <source-position filename="../pango/pango-font.h" line="338"/>
5100+ <return-value transfer-ownership="none">
5101+ <doc xml:space="preserve"
5102+ filename="../pango/fonts.c"
5103+ line="785">%TRUE if @new_match is a better match</doc>
5104+ <type name="gboolean" c:type="gboolean"/>
5105+ </return-value>
5106+ <parameters>
5107+ <instance-parameter name="desc" transfer-ownership="none">
5108+ <doc xml:space="preserve"
5109+ filename="../pango/fonts.c"
5110+ line="769">a `PangoFontDescription`</doc>
5111+ <type name="FontDescription" c:type="const PangoFontDescription*"/>
5112+ </instance-parameter>
5113+ <parameter name="old_match"
5114+ transfer-ownership="none"
5115+ nullable="1"
5116+ allow-none="1">
5117+ <doc xml:space="preserve"
5118+ filename="../pango/fonts.c"
5119+ line="770">a `PangoFontDescription`, or %NULL</doc>
5120+ <type name="FontDescription" c:type="const PangoFontDescription*"/>
5121+ </parameter>
5122+ <parameter name="new_match" transfer-ownership="none">
5123+ <doc xml:space="preserve"
5124+ filename="../pango/fonts.c"
5125+ line="771">a `PangoFontDescription`</doc>
5126+ <type name="FontDescription" c:type="const PangoFontDescription*"/>
5127+ </parameter>
5128+ </parameters>
5129+ </method>
5130+ <method name="copy" c:identifier="pango_font_description_copy">
5131+ <doc xml:space="preserve"
5132+ filename="../pango/fonts.c"
5133+ line="809">Make a copy of a `PangoFontDescription`.</doc>
5134+ <source-position filename="../pango/pango-font.h" line="255"/>
5135+ <return-value transfer-ownership="full" nullable="1">
5136+ <doc xml:space="preserve"
5137+ filename="../pango/fonts.c"
5138+ line="815">the newly allocated `PangoFontDescription`,
5139+ which should be freed with [method@Pango.FontDescription.free],
5140+ or %NULL if @desc was %NULL.</doc>
5141+ <type name="FontDescription" c:type="PangoFontDescription*"/>
5142+ </return-value>
5143+ <parameters>
5144+ <instance-parameter name="desc"
5145+ transfer-ownership="none"
5146+ nullable="1"
5147+ allow-none="1">
5148+ <doc xml:space="preserve"
5149+ filename="../pango/fonts.c"
5150+ line="811">a `PangoFontDescription`, may be %NULL</doc>
5151+ <type name="FontDescription" c:type="const PangoFontDescription*"/>
5152+ </instance-parameter>
5153+ </parameters>
5154+ </method>
5155+ <method name="copy_static"
5156+ c:identifier="pango_font_description_copy_static">
5157+ <doc xml:space="preserve"
5158+ filename="../pango/fonts.c"
5159+ line="843">Make a copy of a `PangoFontDescription`, but don't duplicate
5160+allocated fields.
5161+
5162+This is like [method@Pango.FontDescription.copy], but only a shallow
5163+copy is made of the family name and other allocated fields. The result
5164+can only be used until @desc is modified or freed. This is meant
5165+to be used when the copy is only needed temporarily.</doc>
5166+ <source-position filename="../pango/pango-font.h" line="257"/>
5167+ <return-value transfer-ownership="full" nullable="1">
5168+ <doc xml:space="preserve"
5169+ filename="../pango/fonts.c"
5170+ line="855">the newly allocated `PangoFontDescription`,
5171+ which should be freed with [method@Pango.FontDescription.free],
5172+ or %NULL if @desc was %NULL.</doc>
5173+ <type name="FontDescription" c:type="PangoFontDescription*"/>
5174+ </return-value>
5175+ <parameters>
5176+ <instance-parameter name="desc"
5177+ transfer-ownership="none"
5178+ nullable="1"
5179+ allow-none="1">
5180+ <doc xml:space="preserve"
5181+ filename="../pango/fonts.c"
5182+ line="845">a `PangoFontDescription`, may be %NULL</doc>
5183+ <type name="FontDescription" c:type="const PangoFontDescription*"/>
5184+ </instance-parameter>
5185+ </parameters>
5186+ </method>
5187+ <method name="equal" c:identifier="pango_font_description_equal">
5188+ <doc xml:space="preserve"
5189+ filename="../pango/fonts.c"
5190+ line="880">Compares two font descriptions for equality.
5191+
5192+Two font descriptions are considered equal if the fonts they describe
5193+are provably identical. This means that their masks do not have to match,
5194+as long as other fields are all the same. (Two font descriptions may
5195+result in identical fonts being loaded, but still compare %FALSE.)</doc>
5196+ <source-position filename="../pango/pango-font.h" line="261"/>
5197+ <return-value transfer-ownership="none">
5198+ <doc xml:space="preserve"
5199+ filename="../pango/fonts.c"
5200+ line="892">%TRUE if the two font descriptions are identical,
5201+ %FALSE otherwise.</doc>
5202+ <type name="gboolean" c:type="gboolean"/>
5203+ </return-value>
5204+ <parameters>
5205+ <instance-parameter name="desc1" transfer-ownership="none">
5206+ <doc xml:space="preserve"
5207+ filename="../pango/fonts.c"
5208+ line="882">a `PangoFontDescription`</doc>
5209+ <type name="FontDescription" c:type="const PangoFontDescription*"/>
5210+ </instance-parameter>
5211+ <parameter name="desc2" transfer-ownership="none">
5212+ <doc xml:space="preserve"
5213+ filename="../pango/fonts.c"
5214+ line="883">another `PangoFontDescription`</doc>
5215+ <type name="FontDescription" c:type="const PangoFontDescription*"/>
5216+ </parameter>
5217+ </parameters>
5218+ </method>
5219+ <method name="free" c:identifier="pango_font_description_free">
5220+ <doc xml:space="preserve"
5221+ filename="../pango/fonts.c"
5222+ line="965">Frees a font description.</doc>
5223+ <source-position filename="../pango/pango-font.h" line="264"/>
5224+ <return-value transfer-ownership="none">
5225+ <type name="none" c:type="void"/>
5226+ </return-value>
5227+ <parameters>
5228+ <instance-parameter name="desc"
5229+ transfer-ownership="none"
5230+ nullable="1"
5231+ allow-none="1">
5232+ <doc xml:space="preserve"
5233+ filename="../pango/fonts.c"
5234+ line="967">a `PangoFontDescription`, may be %NULL</doc>
5235+ <type name="FontDescription" c:type="PangoFontDescription*"/>
5236+ </instance-parameter>
5237+ </parameters>
5238+ </method>
5239+ <method name="get_family"
5240+ c:identifier="pango_font_description_get_family">
5241+ <doc xml:space="preserve"
5242+ filename="../pango/fonts.c"
5243+ line="157">Gets the family name field of a font description.
5244+
5245+See [method@Pango.FontDescription.set_family].</doc>
5246+ <source-position filename="../pango/pango-font.h" line="276"/>
5247+ <return-value transfer-ownership="none" nullable="1">
5248+ <doc xml:space="preserve"
5249+ filename="../pango/fonts.c"
5250+ line="165">the family name field for the font
5251+ description, or %NULL if not previously set. This has the same
5252+ life-time as the font description itself and should not be freed.</doc>
5253+ <type name="utf8" c:type="const char*"/>
5254+ </return-value>
5255+ <parameters>
5256+ <instance-parameter name="desc" transfer-ownership="none">
5257+ <doc xml:space="preserve"
5258+ filename="../pango/fonts.c"
5259+ line="159">a `PangoFontDescription`.</doc>
5260+ <type name="FontDescription" c:type="const PangoFontDescription*"/>
5261+ </instance-parameter>
5262+ </parameters>
5263+ </method>
5264+ <method name="get_gravity"
5265+ c:identifier="pango_font_description_get_gravity"
5266+ version="1.16">
5267+ <doc xml:space="preserve"
5268+ filename="../pango/fonts.c"
5269+ line="482">Gets the gravity field of a font description.
5270+
5271+See [method@Pango.FontDescription.set_gravity].</doc>
5272+ <source-position filename="../pango/pango-font.h" line="311"/>
5273+ <return-value transfer-ownership="none">
5274+ <doc xml:space="preserve"
5275+ filename="../pango/fonts.c"
5276+ line="490">the gravity field for the font description.
5277+ Use [method@Pango.FontDescription.get_set_fields] to find out
5278+ if the field was explicitly set or not.</doc>
5279+ <type name="Gravity" c:type="PangoGravity"/>
5280+ </return-value>
5281+ <parameters>
5282+ <instance-parameter name="desc" transfer-ownership="none">
5283+ <doc xml:space="preserve"
5284+ filename="../pango/fonts.c"
5285+ line="484">a `PangoFontDescription`</doc>
5286+ <type name="FontDescription" c:type="const PangoFontDescription*"/>
5287+ </instance-parameter>
5288+ </parameters>
5289+ </method>
5290+ <method name="get_set_fields"
5291+ c:identifier="pango_font_description_get_set_fields">
5292+ <doc xml:space="preserve"
5293+ filename="../pango/fonts.c"
5294+ line="603">Determines which fields in a font description have been set.</doc>
5295+ <source-position filename="../pango/pango-font.h" line="323"/>
5296+ <return-value transfer-ownership="none">
5297+ <doc xml:space="preserve"
5298+ filename="../pango/fonts.c"
5299+ line="609">a bitmask with bits set corresponding to the
5300+ fields in @desc that have been set.</doc>
5301+ <type name="FontMask" c:type="PangoFontMask"/>
5302+ </return-value>
5303+ <parameters>
5304+ <instance-parameter name="desc" transfer-ownership="none">
5305+ <doc xml:space="preserve"
5306+ filename="../pango/fonts.c"
5307+ line="605">a `PangoFontDescription`</doc>
5308+ <type name="FontDescription" c:type="const PangoFontDescription*"/>
5309+ </instance-parameter>
5310+ </parameters>
5311+ </method>
5312+ <method name="get_size" c:identifier="pango_font_description_get_size">
5313+ <doc xml:space="preserve"
5314+ filename="../pango/fonts.c"
5315+ line="374">Gets the size field of a font description.
5316+
5317+See [method@Pango.FontDescription.set_size].</doc>
5318+ <source-position filename="../pango/pango-font.h" line="301"/>
5319+ <return-value transfer-ownership="none">
5320+ <doc xml:space="preserve"
5321+ filename="../pango/fonts.c"
5322+ line="382">the size field for the font description in points
5323+ or device units. You must call
5324+ [method@Pango.FontDescription.get_size_is_absolute] to find out
5325+ which is the case. Returns 0 if the size field has not previously
5326+ been set or it has been set to 0 explicitly.
5327+ Use [method@Pango.FontDescription.get_set_fields] to find out
5328+ if the field was explicitly set or not.</doc>
5329+ <type name="gint" c:type="gint"/>
5330+ </return-value>
5331+ <parameters>
5332+ <instance-parameter name="desc" transfer-ownership="none">
5333+ <doc xml:space="preserve"
5334+ filename="../pango/fonts.c"
5335+ line="376">a `PangoFontDescription`</doc>
5336+ <type name="FontDescription" c:type="const PangoFontDescription*"/>
5337+ </instance-parameter>
5338+ </parameters>
5339+ </method>
5340+ <method name="get_size_is_absolute"
5341+ c:identifier="pango_font_description_get_size_is_absolute"
5342+ version="1.8">
5343+ <doc xml:space="preserve"
5344+ filename="../pango/fonts.c"
5345+ line="424">Determines whether the size of the font is in points (not absolute)
5346+or device units (absolute).
5347+
5348+See [method@Pango.FontDescription.set_size]
5349+and [method@Pango.FontDescription.set_absolute_size].</doc>
5350+ <source-position filename="../pango/pango-font.h" line="306"/>
5351+ <return-value transfer-ownership="none">
5352+ <doc xml:space="preserve"
5353+ filename="../pango/fonts.c"
5354+ line="434">whether the size for the font description is in
5355+ points or device units. Use [method@Pango.FontDescription.get_set_fields]
5356+ to find out if the size field of the font description was explicitly
5357+ set or not.</doc>
5358+ <type name="gboolean" c:type="gboolean"/>
5359+ </return-value>
5360+ <parameters>
5361+ <instance-parameter name="desc" transfer-ownership="none">
5362+ <doc xml:space="preserve"
5363+ filename="../pango/fonts.c"
5364+ line="426">a `PangoFontDescription`</doc>
5365+ <type name="FontDescription" c:type="const PangoFontDescription*"/>
5366+ </instance-parameter>
5367+ </parameters>
5368+ </method>
5369+ <method name="get_stretch"
5370+ c:identifier="pango_font_description_get_stretch">
5371+ <doc xml:space="preserve"
5372+ filename="../pango/fonts.c"
5373+ line="325">Gets the stretch field of a font description.
5374+
5375+See [method@Pango.FontDescription.set_stretch].</doc>
5376+ <source-position filename="../pango/pango-font.h" line="296"/>
5377+ <return-value transfer-ownership="none">
5378+ <doc xml:space="preserve"
5379+ filename="../pango/fonts.c"
5380+ line="333">the stretch field for the font description.
5381+ Use [method@Pango.FontDescription.get_set_fields] to find
5382+ out if the field was explicitly set or not.</doc>
5383+ <type name="Stretch" c:type="PangoStretch"/>
5384+ </return-value>
5385+ <parameters>
5386+ <instance-parameter name="desc" transfer-ownership="none">
5387+ <doc xml:space="preserve"
5388+ filename="../pango/fonts.c"
5389+ line="327">a `PangoFontDescription`.</doc>
5390+ <type name="FontDescription" c:type="const PangoFontDescription*"/>
5391+ </instance-parameter>
5392+ </parameters>
5393+ </method>
5394+ <method name="get_style" c:identifier="pango_font_description_get_style">
5395+ <doc xml:space="preserve"
5396+ filename="../pango/fonts.c"
5397+ line="203">Gets the style field of a `PangoFontDescription`.
5398+
5399+See [method@Pango.FontDescription.set_style].</doc>
5400+ <source-position filename="../pango/pango-font.h" line="281"/>
5401+ <return-value transfer-ownership="none">
5402+ <doc xml:space="preserve"
5403+ filename="../pango/fonts.c"
5404+ line="211">the style field for the font description.
5405+ Use [method@Pango.FontDescription.get_set_fields] to
5406+ find out if the field was explicitly set or not.</doc>
5407+ <type name="Style" c:type="PangoStyle"/>
5408+ </return-value>
5409+ <parameters>
5410+ <instance-parameter name="desc" transfer-ownership="none">
5411+ <doc xml:space="preserve"
5412+ filename="../pango/fonts.c"
5413+ line="205">a `PangoFontDescription`</doc>
5414+ <type name="FontDescription" c:type="const PangoFontDescription*"/>
5415+ </instance-parameter>
5416+ </parameters>
5417+ </method>
5418+ <method name="get_variant"
5419+ c:identifier="pango_font_description_get_variant">
5420+ <doc xml:space="preserve"
5421+ filename="../pango/fonts.c"
5422+ line="243">Gets the variant field of a `PangoFontDescription`.
5423+
5424+See [method@Pango.FontDescription.set_variant].</doc>
5425+ <source-position filename="../pango/pango-font.h" line="286"/>
5426+ <return-value transfer-ownership="none">
5427+ <doc xml:space="preserve"
5428+ filename="../pango/fonts.c"
5429+ line="251">the variant field for the font description.
5430+ Use [method@Pango.FontDescription.get_set_fields] to find
5431+ out if the field was explicitly set or not.</doc>
5432+ <type name="Variant" c:type="PangoVariant"/>
5433+ </return-value>
5434+ <parameters>
5435+ <instance-parameter name="desc" transfer-ownership="none">
5436+ <doc xml:space="preserve"
5437+ filename="../pango/fonts.c"
5438+ line="245">a `PangoFontDescription`.</doc>
5439+ <type name="FontDescription" c:type="const PangoFontDescription*"/>
5440+ </instance-parameter>
5441+ </parameters>
5442+ </method>
5443+ <method name="get_variations"
5444+ c:identifier="pango_font_description_get_variations"
5445+ version="1.42">
5446+ <doc xml:space="preserve"
5447+ filename="../pango/fonts.c"
5448+ line="581">Gets the variations field of a font description.
5449+
5450+See [method@Pango.FontDescription.set_variations].</doc>
5451+ <source-position filename="../pango/pango-font.h" line="320"/>
5452+ <return-value transfer-ownership="none" nullable="1">
5453+ <doc xml:space="preserve"
5454+ filename="../pango/fonts.c"
5455+ line="589">the variations field for the font
5456+ description, or %NULL if not previously set. This has the same
5457+ life-time as the font description itself and should not be freed.</doc>
5458+ <type name="utf8" c:type="const char*"/>
5459+ </return-value>
5460+ <parameters>
5461+ <instance-parameter name="desc" transfer-ownership="none">
5462+ <doc xml:space="preserve"
5463+ filename="../pango/fonts.c"
5464+ line="583">a `PangoFontDescription`</doc>
5465+ <type name="FontDescription" c:type="const PangoFontDescription*"/>
5466+ </instance-parameter>
5467+ </parameters>
5468+ </method>
5469+ <method name="get_weight"
5470+ c:identifier="pango_font_description_get_weight">
5471+ <doc xml:space="preserve"
5472+ filename="../pango/fonts.c"
5473+ line="285">Gets the weight field of a font description.
5474+
5475+See [method@Pango.FontDescription.set_weight].</doc>
5476+ <source-position filename="../pango/pango-font.h" line="291"/>
5477+ <return-value transfer-ownership="none">
5478+ <doc xml:space="preserve"
5479+ filename="../pango/fonts.c"
5480+ line="293">the weight field for the font description.
5481+ Use [method@Pango.FontDescription.get_set_fields] to find
5482+ out if the field was explicitly set or not.</doc>
5483+ <type name="Weight" c:type="PangoWeight"/>
5484+ </return-value>
5485+ <parameters>
5486+ <instance-parameter name="desc" transfer-ownership="none">
5487+ <doc xml:space="preserve"
5488+ filename="../pango/fonts.c"
5489+ line="287">a `PangoFontDescription`</doc>
5490+ <type name="FontDescription" c:type="const PangoFontDescription*"/>
5491+ </instance-parameter>
5492+ </parameters>
5493+ </method>
5494+ <method name="hash" c:identifier="pango_font_description_hash">
5495+ <doc xml:space="preserve"
5496+ filename="../pango/fonts.c"
5497+ line="932">Computes a hash of a `PangoFontDescription` structure.
5498+
5499+This is suitable to be used, for example, as an argument
5500+to g_hash_table_new(). The hash value is independent of @desc-&gt;mask.</doc>
5501+ <source-position filename="../pango/pango-font.h" line="259"/>
5502+ <return-value transfer-ownership="none">
5503+ <doc xml:space="preserve"
5504+ filename="../pango/fonts.c"
5505+ line="941">the hash value.</doc>
5506+ <type name="guint" c:type="guint"/>
5507+ </return-value>
5508+ <parameters>
5509+ <instance-parameter name="desc" transfer-ownership="none">
5510+ <doc xml:space="preserve"
5511+ filename="../pango/fonts.c"
5512+ line="934">a `PangoFontDescription`</doc>
5513+ <type name="FontDescription" c:type="const PangoFontDescription*"/>
5514+ </instance-parameter>
5515+ </parameters>
5516+ </method>
5517+ <method name="merge" c:identifier="pango_font_description_merge">
5518+ <doc xml:space="preserve"
5519+ filename="../pango/fonts.c"
5520+ line="645">Merges the fields that are set in @desc_to_merge into the fields in
5521+@desc.
5522+
5523+If @replace_existing is %FALSE, only fields in @desc that
5524+are not already set are affected. If %TRUE, then fields that are
5525+already set will be replaced as well.
5526+
5527+If @desc_to_merge is %NULL, this function performs nothing.</doc>
5528+ <source-position filename="../pango/pango-font.h" line="329"/>
5529+ <return-value transfer-ownership="none">
5530+ <type name="none" c:type="void"/>
5531+ </return-value>
5532+ <parameters>
5533+ <instance-parameter name="desc" transfer-ownership="none">
5534+ <doc xml:space="preserve"
5535+ filename="../pango/fonts.c"
5536+ line="647">a `PangoFontDescription`</doc>
5537+ <type name="FontDescription" c:type="PangoFontDescription*"/>
5538+ </instance-parameter>
5539+ <parameter name="desc_to_merge"
5540+ transfer-ownership="none"
5541+ nullable="1"
5542+ allow-none="1">
5543+ <doc xml:space="preserve"
5544+ filename="../pango/fonts.c"
5545+ line="648">the `PangoFontDescription` to merge from,
5546+ or %NULL</doc>
5547+ <type name="FontDescription" c:type="const PangoFontDescription*"/>
5548+ </parameter>
5549+ <parameter name="replace_existing" transfer-ownership="none">
5550+ <doc xml:space="preserve"
5551+ filename="../pango/fonts.c"
5552+ line="650">if %TRUE, replace fields in @desc with the
5553+ corresponding values from @desc_to_merge, even if they
5554+ are already exist.</doc>
5555+ <type name="gboolean" c:type="gboolean"/>
5556+ </parameter>
5557+ </parameters>
5558+ </method>
5559+ <method name="merge_static"
5560+ c:identifier="pango_font_description_merge_static">
5561+ <doc xml:space="preserve"
5562+ filename="../pango/fonts.c"
5563+ line="694">Merges the fields that are set in @desc_to_merge into the fields in
5564+@desc, without copying allocated fields.
5565+
5566+This is like [method@Pango.FontDescription.merge], but only a shallow copy
5567+is made of the family name and other allocated fields. @desc can only
5568+be used until @desc_to_merge is modified or freed. This is meant to
5569+be used when the merged font description is only needed temporarily.</doc>
5570+ <source-position filename="../pango/pango-font.h" line="333"/>
5571+ <return-value transfer-ownership="none">
5572+ <type name="none" c:type="void"/>
5573+ </return-value>
5574+ <parameters>
5575+ <instance-parameter name="desc" transfer-ownership="none">
5576+ <doc xml:space="preserve"
5577+ filename="../pango/fonts.c"
5578+ line="696">a `PangoFontDescription`</doc>
5579+ <type name="FontDescription" c:type="PangoFontDescription*"/>
5580+ </instance-parameter>
5581+ <parameter name="desc_to_merge" transfer-ownership="none">
5582+ <doc xml:space="preserve"
5583+ filename="../pango/fonts.c"
5584+ line="697">the `PangoFontDescription` to merge from</doc>
5585+ <type name="FontDescription" c:type="const PangoFontDescription*"/>
5586+ </parameter>
5587+ <parameter name="replace_existing" transfer-ownership="none">
5588+ <doc xml:space="preserve"
5589+ filename="../pango/fonts.c"
5590+ line="698">if %TRUE, replace fields in @desc with the
5591+ corresponding values from @desc_to_merge, even if they
5592+ are already exist.</doc>
5593+ <type name="gboolean" c:type="gboolean"/>
5594+ </parameter>
5595+ </parameters>
5596+ </method>
5597+ <method name="set_absolute_size"
5598+ c:identifier="pango_font_description_set_absolute_size"
5599+ version="1.8">
5600+ <doc xml:space="preserve"
5601+ filename="../pango/fonts.c"
5602+ line="398">Sets the size field of a font description, in device units.
5603+
5604+This is mutually exclusive with [method@Pango.FontDescription.set_size]
5605+which sets the font size in points.</doc>
5606+ <source-position filename="../pango/pango-font.h" line="303"/>
5607+ <return-value transfer-ownership="none">
5608+ <type name="none" c:type="void"/>
5609+ </return-value>
5610+ <parameters>
5611+ <instance-parameter name="desc" transfer-ownership="none">
5612+ <doc xml:space="preserve"
5613+ filename="../pango/fonts.c"
5614+ line="400">a `PangoFontDescription`</doc>
5615+ <type name="FontDescription" c:type="PangoFontDescription*"/>
5616+ </instance-parameter>
5617+ <parameter name="size" transfer-ownership="none">
5618+ <doc xml:space="preserve"
5619+ filename="../pango/fonts.c"
5620+ line="401">the new size, in Pango units. There are %PANGO_SCALE Pango units
5621+ in one device unit. For an output backend where a device unit is a pixel,
5622+ a @size value of 10 * PANGO_SCALE gives a 10 pixel font.</doc>
5623+ <type name="gdouble" c:type="double"/>
5624+ </parameter>
5625+ </parameters>
5626+ </method>
5627+ <method name="set_family"
5628+ c:identifier="pango_font_description_set_family">
5629+ <doc xml:space="preserve"
5630+ filename="../pango/fonts.c"
5631+ line="94">Sets the family name field of a font description.
5632+
5633+The family
5634+name represents a family of related font styles, and will
5635+resolve to a particular `PangoFontFamily`. In some uses of
5636+`PangoFontDescription`, it is also possible to use a comma
5637+separated list of family names for this field.</doc>
5638+ <source-position filename="../pango/pango-font.h" line="270"/>
5639+ <return-value transfer-ownership="none">
5640+ <type name="none" c:type="void"/>
5641+ </return-value>
5642+ <parameters>
5643+ <instance-parameter name="desc" transfer-ownership="none">
5644+ <doc xml:space="preserve"
5645+ filename="../pango/fonts.c"
5646+ line="96">a `PangoFontDescription`.</doc>
5647+ <type name="FontDescription" c:type="PangoFontDescription*"/>
5648+ </instance-parameter>
5649+ <parameter name="family" transfer-ownership="none">
5650+ <doc xml:space="preserve"
5651+ filename="../pango/fonts.c"
5652+ line="97">a string representing the family name.</doc>
5653+ <type name="utf8" c:type="const char*"/>
5654+ </parameter>
5655+ </parameters>
5656+ </method>
5657+ <method name="set_family_static"
5658+ c:identifier="pango_font_description_set_family_static">
5659+ <doc xml:space="preserve"
5660+ filename="../pango/fonts.c"
5661+ line="118">Sets the family name field of a font description, without copying the string.
5662+
5663+This is like [method@Pango.FontDescription.set_family], except that no
5664+copy of @family is made. The caller must make sure that the
5665+string passed in stays around until @desc has been freed or the
5666+name is set again. This function can be used if @family is a static
5667+string such as a C string literal, or if @desc is only needed temporarily.</doc>
5668+ <source-position filename="../pango/pango-font.h" line="273"/>
5669+ <return-value transfer-ownership="none">
5670+ <type name="none" c:type="void"/>
5671+ </return-value>
5672+ <parameters>
5673+ <instance-parameter name="desc" transfer-ownership="none">
5674+ <doc xml:space="preserve"
5675+ filename="../pango/fonts.c"
5676+ line="120">a `PangoFontDescription`</doc>
5677+ <type name="FontDescription" c:type="PangoFontDescription*"/>
5678+ </instance-parameter>
5679+ <parameter name="family" transfer-ownership="none">
5680+ <doc xml:space="preserve"
5681+ filename="../pango/fonts.c"
5682+ line="121">a string representing the family name</doc>
5683+ <type name="utf8" c:type="const char*"/>
5684+ </parameter>
5685+ </parameters>
5686+ </method>
5687+ <method name="set_gravity"
5688+ c:identifier="pango_font_description_set_gravity"
5689+ version="1.16">
5690+ <doc xml:space="preserve"
5691+ filename="../pango/fonts.c"
5692+ line="449">Sets the gravity field of a font description.
5693+
5694+The gravity field
5695+specifies how the glyphs should be rotated. If @gravity is
5696+%PANGO_GRAVITY_AUTO, this actually unsets the gravity mask on
5697+the font description.
5698+
5699+This function is seldom useful to the user. Gravity should normally
5700+be set on a `PangoContext`.</doc>
5701+ <source-position filename="../pango/pango-font.h" line="308"/>
5702+ <return-value transfer-ownership="none">
5703+ <type name="none" c:type="void"/>
5704+ </return-value>
5705+ <parameters>
5706+ <instance-parameter name="desc" transfer-ownership="none">
5707+ <doc xml:space="preserve"
5708+ filename="../pango/fonts.c"
5709+ line="451">a `PangoFontDescription`</doc>
5710+ <type name="FontDescription" c:type="PangoFontDescription*"/>
5711+ </instance-parameter>
5712+ <parameter name="gravity" transfer-ownership="none">
5713+ <doc xml:space="preserve"
5714+ filename="../pango/fonts.c"
5715+ line="452">the gravity for the font description.</doc>
5716+ <type name="Gravity" c:type="PangoGravity"/>
5717+ </parameter>
5718+ </parameters>
5719+ </method>
5720+ <method name="set_size" c:identifier="pango_font_description_set_size">
5721+ <doc xml:space="preserve"
5722+ filename="../pango/fonts.c"
5723+ line="345">Sets the size field of a font description in fractional points.
5724+
5725+This is mutually exclusive with
5726+[method@Pango.FontDescription.set_absolute_size].</doc>
5727+ <source-position filename="../pango/pango-font.h" line="298"/>
5728+ <return-value transfer-ownership="none">
5729+ <type name="none" c:type="void"/>
5730+ </return-value>
5731+ <parameters>
5732+ <instance-parameter name="desc" transfer-ownership="none">
5733+ <doc xml:space="preserve"
5734+ filename="../pango/fonts.c"
5735+ line="347">a `PangoFontDescription`</doc>
5736+ <type name="FontDescription" c:type="PangoFontDescription*"/>
5737+ </instance-parameter>
5738+ <parameter name="size" transfer-ownership="none">
5739+ <doc xml:space="preserve"
5740+ filename="../pango/fonts.c"
5741+ line="348">the size of the font in points, scaled by %PANGO_SCALE.
5742+ (That is, a @size value of 10 * PANGO_SCALE is a 10 point font.
5743+ The conversion factor between points and device units depends on
5744+ system configuration and the output device. For screen display, a
5745+ logical DPI of 96 is common, in which case a 10 point font corresponds
5746+ to a 10 * (96 / 72) = 13.3 pixel font.
5747+ Use [method@Pango.FontDescription.set_absolute_size] if you need
5748+ a particular size in device units.</doc>
5749+ <type name="gint" c:type="gint"/>
5750+ </parameter>
5751+ </parameters>
5752+ </method>
5753+ <method name="set_stretch"
5754+ c:identifier="pango_font_description_set_stretch">
5755+ <doc xml:space="preserve"
5756+ filename="../pango/fonts.c"
5757+ line="305">Sets the stretch field of a font description.
5758+
5759+The [enum@Pango.Stretch] field specifies how narrow or
5760+wide the font should be.</doc>
5761+ <source-position filename="../pango/pango-font.h" line="293"/>
5762+ <return-value transfer-ownership="none">
5763+ <type name="none" c:type="void"/>
5764+ </return-value>
5765+ <parameters>
5766+ <instance-parameter name="desc" transfer-ownership="none">
5767+ <doc xml:space="preserve"
5768+ filename="../pango/fonts.c"
5769+ line="307">a `PangoFontDescription`</doc>
5770+ <type name="FontDescription" c:type="PangoFontDescription*"/>
5771+ </instance-parameter>
5772+ <parameter name="stretch" transfer-ownership="none">
5773+ <doc xml:space="preserve"
5774+ filename="../pango/fonts.c"
5775+ line="308">the stretch for the font description</doc>
5776+ <type name="Stretch" c:type="PangoStretch"/>
5777+ </parameter>
5778+ </parameters>
5779+ </method>
5780+ <method name="set_style" c:identifier="pango_font_description_set_style">
5781+ <doc xml:space="preserve"
5782+ filename="../pango/fonts.c"
5783+ line="177">Sets the style field of a `PangoFontDescription`.
5784+
5785+The [enum@Pango.Style] enumeration describes whether the font is
5786+slanted and the manner in which it is slanted; it can be either
5787+%PANGO_STYLE_NORMAL, %PANGO_STYLE_ITALIC, or %PANGO_STYLE_OBLIQUE.
5788+
5789+Most fonts will either have a italic style or an oblique style,
5790+but not both, and font matching in Pango will match italic
5791+specifications with oblique fonts and vice-versa if an exact
5792+match is not found.</doc>
5793+ <source-position filename="../pango/pango-font.h" line="278"/>
5794+ <return-value transfer-ownership="none">
5795+ <type name="none" c:type="void"/>
5796+ </return-value>
5797+ <parameters>
5798+ <instance-parameter name="desc" transfer-ownership="none">
5799+ <doc xml:space="preserve"
5800+ filename="../pango/fonts.c"
5801+ line="179">a `PangoFontDescription`</doc>
5802+ <type name="FontDescription" c:type="PangoFontDescription*"/>
5803+ </instance-parameter>
5804+ <parameter name="style" transfer-ownership="none">
5805+ <doc xml:space="preserve"
5806+ filename="../pango/fonts.c"
5807+ line="180">the style for the font description</doc>
5808+ <type name="Style" c:type="PangoStyle"/>
5809+ </parameter>
5810+ </parameters>
5811+ </method>
5812+ <method name="set_variant"
5813+ c:identifier="pango_font_description_set_variant">
5814+ <doc xml:space="preserve"
5815+ filename="../pango/fonts.c"
5816+ line="223">Sets the variant field of a font description.
5817+
5818+The [enum@Pango.Variant] can either be %PANGO_VARIANT_NORMAL
5819+or %PANGO_VARIANT_SMALL_CAPS.</doc>
5820+ <source-position filename="../pango/pango-font.h" line="283"/>
5821+ <return-value transfer-ownership="none">
5822+ <type name="none" c:type="void"/>
5823+ </return-value>
5824+ <parameters>
5825+ <instance-parameter name="desc" transfer-ownership="none">
5826+ <doc xml:space="preserve"
5827+ filename="../pango/fonts.c"
5828+ line="225">a `PangoFontDescription`</doc>
5829+ <type name="FontDescription" c:type="PangoFontDescription*"/>
5830+ </instance-parameter>
5831+ <parameter name="variant" transfer-ownership="none">
5832+ <doc xml:space="preserve"
5833+ filename="../pango/fonts.c"
5834+ line="226">the variant type for the font description.</doc>
5835+ <type name="Variant" c:type="PangoVariant"/>
5836+ </parameter>
5837+ </parameters>
5838+ </method>
5839+ <method name="set_variations"
5840+ c:identifier="pango_font_description_set_variations"
5841+ version="1.42">
5842+ <doc xml:space="preserve"
5843+ filename="../pango/fonts.c"
5844+ line="546">Sets the variations field of a font description.
5845+
5846+OpenType font variations allow to select a font instance by
5847+specifying values for a number of axes, such as width or weight.
5848+
5849+The format of the variations string is
5850+
5851+ AXIS1=VALUE,AXIS2=VALUE...
5852+
5853+with each AXIS a 4 character tag that identifies a font axis,
5854+and each VALUE a floating point number. Unknown axes are ignored,
5855+and values are clamped to their allowed range.
5856+
5857+Pango does not currently have a way to find supported axes of
5858+a font. Both harfbuzz and freetype have API for this. See
5859+for example [hb_ot_var_get_axis_infos](https://harfbuzz.github.io/harfbuzz-hb-ot-var.html#hb-ot-var-get-axis-infos).</doc>
5860+ <source-position filename="../pango/pango-font.h" line="317"/>
5861+ <return-value transfer-ownership="none">
5862+ <type name="none" c:type="void"/>
5863+ </return-value>
5864+ <parameters>
5865+ <instance-parameter name="desc" transfer-ownership="none">
5866+ <doc xml:space="preserve"
5867+ filename="../pango/fonts.c"
5868+ line="548">a `PangoFontDescription`.</doc>
5869+ <type name="FontDescription" c:type="PangoFontDescription*"/>
5870+ </instance-parameter>
5871+ <parameter name="variations"
5872+ transfer-ownership="none"
5873+ nullable="1"
5874+ allow-none="1">
5875+ <doc xml:space="preserve"
5876+ filename="../pango/fonts.c"
5877+ line="549">a string representing the variations</doc>
5878+ <type name="utf8" c:type="const char*"/>
5879+ </parameter>
5880+ </parameters>
5881+ </method>
5882+ <method name="set_variations_static"
5883+ c:identifier="pango_font_description_set_variations_static"
5884+ version="1.42">
5885+ <doc xml:space="preserve"
5886+ filename="../pango/fonts.c"
5887+ line="504">Sets the variations field of a font description.
5888+
5889+This is like [method@Pango.FontDescription.set_variations], except
5890+that no copy of @variations is made. The caller must make sure that
5891+the string passed in stays around until @desc has been freed
5892+or the name is set again. This function can be used if
5893+@variations is a static string such as a C string literal,
5894+or if @desc is only needed temporarily.</doc>
5895+ <source-position filename="../pango/pango-font.h" line="314"/>
5896+ <return-value transfer-ownership="none">
5897+ <type name="none" c:type="void"/>
5898+ </return-value>
5899+ <parameters>
5900+ <instance-parameter name="desc" transfer-ownership="none">
5901+ <doc xml:space="preserve"
5902+ filename="../pango/fonts.c"
5903+ line="506">a `PangoFontDescription`</doc>
5904+ <type name="FontDescription" c:type="PangoFontDescription*"/>
5905+ </instance-parameter>
5906+ <parameter name="variations" transfer-ownership="none">
5907+ <doc xml:space="preserve"
5908+ filename="../pango/fonts.c"
5909+ line="507">a string representing the variations</doc>
5910+ <type name="utf8" c:type="const char*"/>
5911+ </parameter>
5912+ </parameters>
5913+ </method>
5914+ <method name="set_weight"
5915+ c:identifier="pango_font_description_set_weight">
5916+ <doc xml:space="preserve"
5917+ filename="../pango/fonts.c"
5918+ line="263">Sets the weight field of a font description.
5919+
5920+The weight field
5921+specifies how bold or light the font should be. In addition
5922+to the values of the [enum@Pango.Weight] enumeration, other
5923+intermediate numeric values are possible.</doc>
5924+ <source-position filename="../pango/pango-font.h" line="288"/>
5925+ <return-value transfer-ownership="none">
5926+ <type name="none" c:type="void"/>
5927+ </return-value>
5928+ <parameters>
5929+ <instance-parameter name="desc" transfer-ownership="none">
5930+ <doc xml:space="preserve"
5931+ filename="../pango/fonts.c"
5932+ line="265">a `PangoFontDescription`</doc>
5933+ <type name="FontDescription" c:type="PangoFontDescription*"/>
5934+ </instance-parameter>
5935+ <parameter name="weight" transfer-ownership="none">
5936+ <doc xml:space="preserve"
5937+ filename="../pango/fonts.c"
5938+ line="266">the weight for the font description.</doc>
5939+ <type name="Weight" c:type="PangoWeight"/>
5940+ </parameter>
5941+ </parameters>
5942+ </method>
5943+ <method name="to_filename"
5944+ c:identifier="pango_font_description_to_filename">
5945+ <doc xml:space="preserve"
5946+ filename="../pango/fonts.c"
5947+ line="1506">Creates a filename representation of a font description.
5948+
5949+The filename is identical to the result from calling
5950+[method@Pango.FontDescription.to_string], but with underscores
5951+instead of characters that are untypical in filenames, and in
5952+lower case only.</doc>
5953+ <source-position filename="../pango/pango-font.h" line="347"/>
5954+ <return-value transfer-ownership="full">
5955+ <doc xml:space="preserve"
5956+ filename="../pango/fonts.c"
5957+ line="1517">a new string that must be freed with g_free().</doc>
5958+ <type name="utf8" c:type="char*"/>
5959+ </return-value>
5960+ <parameters>
5961+ <instance-parameter name="desc" transfer-ownership="none">
5962+ <doc xml:space="preserve"
5963+ filename="../pango/fonts.c"
5964+ line="1508">a `PangoFontDescription`</doc>
5965+ <type name="FontDescription" c:type="const PangoFontDescription*"/>
5966+ </instance-parameter>
5967+ </parameters>
5968+ </method>
5969+ <method name="to_string" c:identifier="pango_font_description_to_string">
5970+ <doc xml:space="preserve"
5971+ filename="../pango/fonts.c"
5972+ line="1422">Creates a string representation of a font description.
5973+
5974+See [func@Pango.FontDescription.from_string] for a description
5975+of the format of the string representation. The family list in
5976+the string description will only have a terminating comma if
5977+the last word of the list is a valid style option.</doc>
5978+ <source-position filename="../pango/pango-font.h" line="345"/>
5979+ <return-value transfer-ownership="full">
5980+ <doc xml:space="preserve"
5981+ filename="../pango/fonts.c"
5982+ line="1433">a new string that must be freed with g_free().</doc>
5983+ <type name="utf8" c:type="char*"/>
5984+ </return-value>
5985+ <parameters>
5986+ <instance-parameter name="desc" transfer-ownership="none">
5987+ <doc xml:space="preserve"
5988+ filename="../pango/fonts.c"
5989+ line="1424">a `PangoFontDescription`</doc>
5990+ <type name="FontDescription" c:type="const PangoFontDescription*"/>
5991+ </instance-parameter>
5992+ </parameters>
5993+ </method>
5994+ <method name="unset_fields"
5995+ c:identifier="pango_font_description_unset_fields">
5996+ <doc xml:space="preserve"
5997+ filename="../pango/fonts.c"
5998+ line="620">Unsets some of the fields in a `PangoFontDescription`.
5999+
6000+The unset fields will get back to their default values.</doc>
6001+ <source-position filename="../pango/pango-font.h" line="325"/>
6002+ <return-value transfer-ownership="none">
6003+ <type name="none" c:type="void"/>
6004+ </return-value>
6005+ <parameters>
6006+ <instance-parameter name="desc" transfer-ownership="none">
6007+ <doc xml:space="preserve"
6008+ filename="../pango/fonts.c"
6009+ line="622">a `PangoFontDescription`</doc>
6010+ <type name="FontDescription" c:type="PangoFontDescription*"/>
6011+ </instance-parameter>
6012+ <parameter name="to_unset" transfer-ownership="none">
6013+ <doc xml:space="preserve"
6014+ filename="../pango/fonts.c"
6015+ line="623">bitmask of fields in the @desc to unset.</doc>
6016+ <type name="FontMask" c:type="PangoFontMask"/>
6017+ </parameter>
6018+ </parameters>
6019+ </method>
6020+ <function name="from_string"
6021+ c:identifier="pango_font_description_from_string">
6022+ <doc xml:space="preserve"
6023+ filename="../pango/fonts.c"
6024+ line="1252">Creates a new font description from a string representation.
6025+
6026+The string must have the form
6027+
6028+ "\[FAMILY-LIST] \[STYLE-OPTIONS] \[SIZE] \[VARIATIONS]",
6029+
6030+where FAMILY-LIST is a comma-separated list of families optionally
6031+terminated by a comma, STYLE_OPTIONS is a whitespace-separated list
6032+of words where each word describes one of style, variant, weight,
6033+stretch, or gravity, and SIZE is a decimal number (size in points)
6034+or optionally followed by the unit modifier "px" for absolute size.
6035+VARIATIONS is a comma-separated list of font variation
6036+specifications of the form "\@axis=value" (the = sign is optional).
6037+
6038+The following words are understood as styles:
6039+"Normal", "Roman", "Oblique", "Italic".
6040+
6041+The following words are understood as variants:
6042+"Small-Caps", "All-Small-Caps", "Petite-Caps", "All-Petite-Caps",
6043+"Unicase", "Title-Caps".
6044+
6045+The following words are understood as weights:
6046+"Thin", "Ultra-Light", "Extra-Light", "Light", "Semi-Light",
6047+"Demi-Light", "Book", "Regular", "Medium", "Semi-Bold", "Demi-Bold",
6048+"Bold", "Ultra-Bold", "Extra-Bold", "Heavy", "Black", "Ultra-Black",
6049+"Extra-Black".
6050+
6051+The following words are understood as stretch values:
6052+"Ultra-Condensed", "Extra-Condensed", "Condensed", "Semi-Condensed",
6053+"Semi-Expanded", "Expanded", "Extra-Expanded", "Ultra-Expanded".
6054+
6055+The following words are understood as gravity values:
6056+"Not-Rotated", "South", "Upside-Down", "North", "Rotated-Left",
6057+"East", "Rotated-Right", "West".
6058+
6059+Any one of the options may be absent. If FAMILY-LIST is absent, then
6060+the family_name field of the resulting font description will be
6061+initialized to %NULL. If STYLE-OPTIONS is missing, then all style
6062+options will be set to the default values. If SIZE is missing, the
6063+size in the resulting font description will be set to 0.
6064+
6065+A typical example:
6066+
6067+ "Cantarell Italic Light 15 \@wght=200"</doc>
6068+ <source-position filename="../pango/pango-font.h" line="343"/>
6069+ <return-value transfer-ownership="full">
6070+ <doc xml:space="preserve"
6071+ filename="../pango/fonts.c"
6072+ line="1301">a new `PangoFontDescription`.</doc>
6073+ <type name="FontDescription" c:type="PangoFontDescription*"/>
6074+ </return-value>
6075+ <parameters>
6076+ <parameter name="str" transfer-ownership="none">
6077+ <doc xml:space="preserve"
6078+ filename="../pango/fonts.c"
6079+ line="1254">string representation of a font description.</doc>
6080+ <type name="utf8" c:type="const char*"/>
6081+ </parameter>
6082+ </parameters>
6083+ </function>
6084+ </record>
6085+ <class name="FontFace"
6086+ c:symbol-prefix="font_face"
6087+ c:type="PangoFontFace"
6088+ parent="GObject.Object"
6089+ abstract="1"
6090+ glib:type-name="PangoFontFace"
6091+ glib:get-type="pango_font_face_get_type"
6092+ glib:type-struct="FontFaceClass">
6093+ <doc xml:space="preserve"
6094+ filename="../pango/pango-font.h"
6095+ line="487">A `PangoFontFace` is used to represent a group of fonts with
6096+the same family, slant, weight, and width, but varying sizes.</doc>
6097+ <source-position filename="../pango/pango-font.h" line="517"/>
6098+ <virtual-method name="describe" invoker="describe">
6099+ <doc xml:space="preserve"
6100+ filename="../pango/fonts.c"
6101+ line="2559">Returns a font description that matches the face.
6102+
6103+The resulting font description will have the family, style,
6104+variant, weight and stretch of the face, but its size field
6105+will be unset.</doc>
6106+ <source-position filename="../pango/pango-font.h" line="505"/>
6107+ <return-value transfer-ownership="full">
6108+ <doc xml:space="preserve"
6109+ filename="../pango/fonts.c"
6110+ line="2569">a newly-created `PangoFontDescription` structure
6111+ holding the description of the face. Use [method@Pango.FontDescription.free]
6112+ to free the result.</doc>
6113+ <type name="FontDescription" c:type="PangoFontDescription*"/>
6114+ </return-value>
6115+ <parameters>
6116+ <instance-parameter name="face" transfer-ownership="none">
6117+ <doc xml:space="preserve"
6118+ filename="../pango/fonts.c"
6119+ line="2561">a `PangoFontFace`</doc>
6120+ <type name="FontFace" c:type="PangoFontFace*"/>
6121+ </instance-parameter>
6122+ </parameters>
6123+ </virtual-method>
6124+ <virtual-method name="get_face_name" invoker="get_face_name">
6125+ <doc xml:space="preserve"
6126+ filename="../pango/fonts.c"
6127+ line="2606">Gets a name representing the style of this face.
6128+
6129+The name identifies the face among the different faces
6130+in the `PangoFontFamily` for the face. It is suitable
6131+for displaying to users.</doc>
6132+ <source-position filename="../pango/pango-font.h" line="504"/>
6133+ <return-value transfer-ownership="none">
6134+ <doc xml:space="preserve"
6135+ filename="../pango/fonts.c"
6136+ line="2616">the face name for the face. This string is
6137+ owned by the face object and must not be modified or freed.</doc>
6138+ <type name="utf8" c:type="const char*"/>
6139+ </return-value>
6140+ <parameters>
6141+ <instance-parameter name="face" transfer-ownership="none">
6142+ <doc xml:space="preserve"
6143+ filename="../pango/fonts.c"
6144+ line="2608">a `PangoFontFace`.</doc>
6145+ <type name="FontFace" c:type="PangoFontFace*"/>
6146+ </instance-parameter>
6147+ </parameters>
6148+ </virtual-method>
6149+ <virtual-method name="get_family" invoker="get_family" version="1.46">
6150+ <doc xml:space="preserve"
6151+ filename="../pango/fonts.c"
6152+ line="2665">Gets the `PangoFontFamily` that @face belongs to.</doc>
6153+ <source-position filename="../pango/pango-font.h" line="510"/>
6154+ <return-value transfer-ownership="none">
6155+ <doc xml:space="preserve"
6156+ filename="../pango/fonts.c"
6157+ line="2671">the `PangoFontFamily`</doc>
6158+ <type name="FontFamily" c:type="PangoFontFamily*"/>
6159+ </return-value>
6160+ <parameters>
6161+ <instance-parameter name="face" transfer-ownership="none">
6162+ <doc xml:space="preserve"
6163+ filename="../pango/fonts.c"
6164+ line="2667">a `PangoFontFace`</doc>
6165+ <type name="FontFace" c:type="PangoFontFace*"/>
6166+ </instance-parameter>
6167+ </parameters>
6168+ </virtual-method>
6169+ <virtual-method name="is_synthesized"
6170+ invoker="is_synthesized"
6171+ version="1.18">
6172+ <doc xml:space="preserve"
6173+ filename="../pango/fonts.c"
6174+ line="2581">Returns whether a `PangoFontFace` is synthesized.
6175+
6176+This will be the case if the underlying font rendering engine
6177+creates this face from another face, by shearing, emboldening,
6178+lightening or modifying it in some other way.</doc>
6179+ <source-position filename="../pango/pango-font.h" line="509"/>
6180+ <return-value transfer-ownership="none">
6181+ <doc xml:space="preserve"
6182+ filename="../pango/fonts.c"
6183+ line="2591">whether @face is synthesized</doc>
6184+ <type name="gboolean" c:type="gboolean"/>
6185+ </return-value>
6186+ <parameters>
6187+ <instance-parameter name="face" transfer-ownership="none">
6188+ <doc xml:space="preserve"
6189+ filename="../pango/fonts.c"
6190+ line="2583">a `PangoFontFace`</doc>
6191+ <type name="FontFace" c:type="PangoFontFace*"/>
6192+ </instance-parameter>
6193+ </parameters>
6194+ </virtual-method>
6195+ <virtual-method name="list_sizes" invoker="list_sizes" version="1.4">
6196+ <doc xml:space="preserve"
6197+ filename="../pango/fonts.c"
6198+ line="2627">List the available sizes for a font.
6199+
6200+This is only applicable to bitmap fonts. For scalable fonts, stores
6201+%NULL at the location pointed to by @sizes and 0 at the location pointed
6202+to by @n_sizes. The sizes returned are in Pango units and are sorted
6203+in ascending order.</doc>
6204+ <source-position filename="../pango/pango-font.h" line="506"/>
6205+ <return-value transfer-ownership="none">
6206+ <type name="none" c:type="void"/>
6207+ </return-value>
6208+ <parameters>
6209+ <instance-parameter name="face" transfer-ownership="none">
6210+ <doc xml:space="preserve"
6211+ filename="../pango/fonts.c"
6212+ line="2629">a `PangoFontFace`.</doc>
6213+ <type name="FontFace" c:type="PangoFontFace*"/>
6214+ </instance-parameter>
6215+ <parameter name="sizes"
6216+ direction="out"
6217+ caller-allocates="0"
6218+ transfer-ownership="full"
6219+ nullable="1"
6220+ optional="1"
6221+ allow-none="1">
6222+ <doc xml:space="preserve"
6223+ filename="../pango/fonts.c"
6224+ line="2630">
6225+ location to store a pointer to an array of int. This array
6226+ should be freed with g_free().</doc>
6227+ <array length="1" zero-terminated="0" c:type="int**">
6228+ <type name="gint" c:type="int*"/>
6229+ </array>
6230+ </parameter>
6231+ <parameter name="n_sizes"
6232+ direction="out"
6233+ caller-allocates="0"
6234+ transfer-ownership="full">
6235+ <doc xml:space="preserve"
6236+ filename="../pango/fonts.c"
6237+ line="2633">location to store the number of elements in @sizes</doc>
6238+ <type name="gint" c:type="int*"/>
6239+ </parameter>
6240+ </parameters>
6241+ </virtual-method>
6242+ <method name="describe" c:identifier="pango_font_face_describe">
6243+ <doc xml:space="preserve"
6244+ filename="../pango/fonts.c"
6245+ line="2559">Returns a font description that matches the face.
6246+
6247+The resulting font description will have the family, style,
6248+variant, weight and stretch of the face, but its size field
6249+will be unset.</doc>
6250+ <source-position filename="../pango/pango-font.h" line="525"/>
6251+ <return-value transfer-ownership="full">
6252+ <doc xml:space="preserve"
6253+ filename="../pango/fonts.c"
6254+ line="2569">a newly-created `PangoFontDescription` structure
6255+ holding the description of the face. Use [method@Pango.FontDescription.free]
6256+ to free the result.</doc>
6257+ <type name="FontDescription" c:type="PangoFontDescription*"/>
6258+ </return-value>
6259+ <parameters>
6260+ <instance-parameter name="face" transfer-ownership="none">
6261+ <doc xml:space="preserve"
6262+ filename="../pango/fonts.c"
6263+ line="2561">a `PangoFontFace`</doc>
6264+ <type name="FontFace" c:type="PangoFontFace*"/>
6265+ </instance-parameter>
6266+ </parameters>
6267+ </method>
6268+ <method name="get_face_name"
6269+ c:identifier="pango_font_face_get_face_name">
6270+ <doc xml:space="preserve"
6271+ filename="../pango/fonts.c"
6272+ line="2606">Gets a name representing the style of this face.
6273+
6274+The name identifies the face among the different faces
6275+in the `PangoFontFamily` for the face. It is suitable
6276+for displaying to users.</doc>
6277+ <source-position filename="../pango/pango-font.h" line="527"/>
6278+ <return-value transfer-ownership="none">
6279+ <doc xml:space="preserve"
6280+ filename="../pango/fonts.c"
6281+ line="2616">the face name for the face. This string is
6282+ owned by the face object and must not be modified or freed.</doc>
6283+ <type name="utf8" c:type="const char*"/>
6284+ </return-value>
6285+ <parameters>
6286+ <instance-parameter name="face" transfer-ownership="none">
6287+ <doc xml:space="preserve"
6288+ filename="../pango/fonts.c"
6289+ line="2608">a `PangoFontFace`.</doc>
6290+ <type name="FontFace" c:type="PangoFontFace*"/>
6291+ </instance-parameter>
6292+ </parameters>
6293+ </method>
6294+ <method name="get_family"
6295+ c:identifier="pango_font_face_get_family"
6296+ version="1.46">
6297+ <doc xml:space="preserve"
6298+ filename="../pango/fonts.c"
6299+ line="2665">Gets the `PangoFontFamily` that @face belongs to.</doc>
6300+ <source-position filename="../pango/pango-font.h" line="536"/>
6301+ <return-value transfer-ownership="none">
6302+ <doc xml:space="preserve"
6303+ filename="../pango/fonts.c"
6304+ line="2671">the `PangoFontFamily`</doc>
6305+ <type name="FontFamily" c:type="PangoFontFamily*"/>
6306+ </return-value>
6307+ <parameters>
6308+ <instance-parameter name="face" transfer-ownership="none">
6309+ <doc xml:space="preserve"
6310+ filename="../pango/fonts.c"
6311+ line="2667">a `PangoFontFace`</doc>
6312+ <type name="FontFace" c:type="PangoFontFace*"/>
6313+ </instance-parameter>
6314+ </parameters>
6315+ </method>
6316+ <method name="is_synthesized"
6317+ c:identifier="pango_font_face_is_synthesized"
6318+ version="1.18">
6319+ <doc xml:space="preserve"
6320+ filename="../pango/fonts.c"
6321+ line="2581">Returns whether a `PangoFontFace` is synthesized.
6322+
6323+This will be the case if the underlying font rendering engine
6324+creates this face from another face, by shearing, emboldening,
6325+lightening or modifying it in some other way.</doc>
6326+ <source-position filename="../pango/pango-font.h" line="533"/>
6327+ <return-value transfer-ownership="none">
6328+ <doc xml:space="preserve"
6329+ filename="../pango/fonts.c"
6330+ line="2591">whether @face is synthesized</doc>
6331+ <type name="gboolean" c:type="gboolean"/>
6332+ </return-value>
6333+ <parameters>
6334+ <instance-parameter name="face" transfer-ownership="none">
6335+ <doc xml:space="preserve"
6336+ filename="../pango/fonts.c"
6337+ line="2583">a `PangoFontFace`</doc>
6338+ <type name="FontFace" c:type="PangoFontFace*"/>
6339+ </instance-parameter>
6340+ </parameters>
6341+ </method>
6342+ <method name="list_sizes"
6343+ c:identifier="pango_font_face_list_sizes"
6344+ version="1.4">
6345+ <doc xml:space="preserve"
6346+ filename="../pango/fonts.c"
6347+ line="2627">List the available sizes for a font.
6348+
6349+This is only applicable to bitmap fonts. For scalable fonts, stores
6350+%NULL at the location pointed to by @sizes and 0 at the location pointed
6351+to by @n_sizes. The sizes returned are in Pango units and are sorted
6352+in ascending order.</doc>
6353+ <source-position filename="../pango/pango-font.h" line="529"/>
6354+ <return-value transfer-ownership="none">
6355+ <type name="none" c:type="void"/>
6356+ </return-value>
6357+ <parameters>
6358+ <instance-parameter name="face" transfer-ownership="none">
6359+ <doc xml:space="preserve"
6360+ filename="../pango/fonts.c"
6361+ line="2629">a `PangoFontFace`.</doc>
6362+ <type name="FontFace" c:type="PangoFontFace*"/>
6363+ </instance-parameter>
6364+ <parameter name="sizes"
6365+ direction="out"
6366+ caller-allocates="0"
6367+ transfer-ownership="full"
6368+ nullable="1"
6369+ optional="1"
6370+ allow-none="1">
6371+ <doc xml:space="preserve"
6372+ filename="../pango/fonts.c"
6373+ line="2630">
6374+ location to store a pointer to an array of int. This array
6375+ should be freed with g_free().</doc>
6376+ <array length="1" zero-terminated="0" c:type="int**">
6377+ <type name="gint" c:type="int*"/>
6378+ </array>
6379+ </parameter>
6380+ <parameter name="n_sizes"
6381+ direction="out"
6382+ caller-allocates="0"
6383+ transfer-ownership="full">
6384+ <doc xml:space="preserve"
6385+ filename="../pango/fonts.c"
6386+ line="2633">location to store the number of elements in @sizes</doc>
6387+ <type name="gint" c:type="int*"/>
6388+ </parameter>
6389+ </parameters>
6390+ </method>
6391+ <field name="parent_instance">
6392+ <type name="GObject.Object" c:type="GObject"/>
6393+ </field>
6394+ </class>
6395+ <record name="FontFaceClass"
6396+ c:type="PangoFontFaceClass"
6397+ glib:is-gtype-struct-for="FontFace">
6398+ <source-position filename="../pango/pango-font.h" line="517"/>
6399+ <field name="parent_class">
6400+ <type name="GObject.ObjectClass" c:type="GObjectClass"/>
6401+ </field>
6402+ <field name="get_face_name">
6403+ <callback name="get_face_name">
6404+ <source-position filename="../pango/pango-font.h" line="504"/>
6405+ <return-value transfer-ownership="none">
6406+ <doc xml:space="preserve"
6407+ filename="../pango/fonts.c"
6408+ line="2616">the face name for the face. This string is
6409+ owned by the face object and must not be modified or freed.</doc>
6410+ <type name="utf8" c:type="const char*"/>
6411+ </return-value>
6412+ <parameters>
6413+ <parameter name="face" transfer-ownership="none">
6414+ <doc xml:space="preserve"
6415+ filename="../pango/fonts.c"
6416+ line="2608">a `PangoFontFace`.</doc>
6417+ <type name="FontFace" c:type="PangoFontFace*"/>
6418+ </parameter>
6419+ </parameters>
6420+ </callback>
6421+ </field>
6422+ <field name="describe">
6423+ <callback name="describe">
6424+ <source-position filename="../pango/pango-font.h" line="505"/>
6425+ <return-value transfer-ownership="full">
6426+ <doc xml:space="preserve"
6427+ filename="../pango/fonts.c"
6428+ line="2569">a newly-created `PangoFontDescription` structure
6429+ holding the description of the face. Use [method@Pango.FontDescription.free]
6430+ to free the result.</doc>
6431+ <type name="FontDescription" c:type="PangoFontDescription*"/>
6432+ </return-value>
6433+ <parameters>
6434+ <parameter name="face" transfer-ownership="none">
6435+ <doc xml:space="preserve"
6436+ filename="../pango/fonts.c"
6437+ line="2561">a `PangoFontFace`</doc>
6438+ <type name="FontFace" c:type="PangoFontFace*"/>
6439+ </parameter>
6440+ </parameters>
6441+ </callback>
6442+ </field>
6443+ <field name="list_sizes">
6444+ <callback name="list_sizes">
6445+ <source-position filename="../pango/pango-font.h" line="506"/>
6446+ <return-value transfer-ownership="none">
6447+ <type name="none" c:type="void"/>
6448+ </return-value>
6449+ <parameters>
6450+ <parameter name="face" transfer-ownership="none">
6451+ <doc xml:space="preserve"
6452+ filename="../pango/fonts.c"
6453+ line="2629">a `PangoFontFace`.</doc>
6454+ <type name="FontFace" c:type="PangoFontFace*"/>
6455+ </parameter>
6456+ <parameter name="sizes"
6457+ direction="out"
6458+ caller-allocates="0"
6459+ transfer-ownership="full"
6460+ nullable="1"
6461+ optional="1"
6462+ allow-none="1">
6463+ <doc xml:space="preserve"
6464+ filename="../pango/fonts.c"
6465+ line="2630">
6466+ location to store a pointer to an array of int. This array
6467+ should be freed with g_free().</doc>
6468+ <array length="2" zero-terminated="0" c:type="int**">
6469+ <type name="gint" c:type="int*"/>
6470+ </array>
6471+ </parameter>
6472+ <parameter name="n_sizes"
6473+ direction="out"
6474+ caller-allocates="0"
6475+ transfer-ownership="full">
6476+ <doc xml:space="preserve"
6477+ filename="../pango/fonts.c"
6478+ line="2633">location to store the number of elements in @sizes</doc>
6479+ <type name="gint" c:type="int*"/>
6480+ </parameter>
6481+ </parameters>
6482+ </callback>
6483+ </field>
6484+ <field name="is_synthesized">
6485+ <callback name="is_synthesized">
6486+ <source-position filename="../pango/pango-font.h" line="509"/>
6487+ <return-value transfer-ownership="none">
6488+ <doc xml:space="preserve"
6489+ filename="../pango/fonts.c"
6490+ line="2591">whether @face is synthesized</doc>
6491+ <type name="gboolean" c:type="gboolean"/>
6492+ </return-value>
6493+ <parameters>
6494+ <parameter name="face" transfer-ownership="none">
6495+ <doc xml:space="preserve"
6496+ filename="../pango/fonts.c"
6497+ line="2583">a `PangoFontFace`</doc>
6498+ <type name="FontFace" c:type="PangoFontFace*"/>
6499+ </parameter>
6500+ </parameters>
6501+ </callback>
6502+ </field>
6503+ <field name="get_family">
6504+ <callback name="get_family">
6505+ <source-position filename="../pango/pango-font.h" line="510"/>
6506+ <return-value transfer-ownership="none">
6507+ <doc xml:space="preserve"
6508+ filename="../pango/fonts.c"
6509+ line="2671">the `PangoFontFamily`</doc>
6510+ <type name="FontFamily" c:type="PangoFontFamily*"/>
6511+ </return-value>
6512+ <parameters>
6513+ <parameter name="face" transfer-ownership="none">
6514+ <doc xml:space="preserve"
6515+ filename="../pango/fonts.c"
6516+ line="2667">a `PangoFontFace`</doc>
6517+ <type name="FontFace" c:type="PangoFontFace*"/>
6518+ </parameter>
6519+ </parameters>
6520+ </callback>
6521+ </field>
6522+ <field name="_pango_reserved3" introspectable="0">
6523+ <callback name="_pango_reserved3">
6524+ <source-position filename="../pango/pango-font.h" line="515"/>
6525+ <return-value transfer-ownership="none">
6526+ <type name="none" c:type="void"/>
6527+ </return-value>
6528+ </callback>
6529+ </field>
6530+ <field name="_pango_reserved4" introspectable="0">
6531+ <callback name="_pango_reserved4">
6532+ <source-position filename="../pango/pango-font.h" line="516"/>
6533+ <return-value transfer-ownership="none">
6534+ <type name="none" c:type="void"/>
6535+ </return-value>
6536+ </callback>
6537+ </field>
6538+ </record>
6539+ <class name="FontFamily"
6540+ c:symbol-prefix="font_family"
6541+ c:type="PangoFontFamily"
6542+ parent="GObject.Object"
6543+ abstract="1"
6544+ glib:type-name="PangoFontFamily"
6545+ glib:get-type="pango_font_family_get_type"
6546+ glib:type-struct="FontFamilyClass">
6547+ <doc xml:space="preserve"
6548+ filename="../pango/pango-font.h"
6549+ line="414">A `PangoFontFamily` is used to represent a family of related
6550+font faces.
6551+
6552+The font faces in a family share a common design, but differ in
6553+slant, weight, width or other aspects.</doc>
6554+ <source-position filename="../pango/pango-font.h" line="449"/>
6555+ <virtual-method name="get_face" invoker="get_face" version="1.46">
6556+ <doc xml:space="preserve"
6557+ filename="../pango/fonts.c"
6558+ line="2467">Gets the `PangoFontFace` of @family with the given name.</doc>
6559+ <source-position filename="../pango/pango-font.h" line="441"/>
6560+ <return-value transfer-ownership="none" nullable="1">
6561+ <doc xml:space="preserve"
6562+ filename="../pango/fonts.c"
6563+ line="2476">the `PangoFontFace`,
6564+ or %NULL if no face with the given name exists.</doc>
6565+ <type name="FontFace" c:type="PangoFontFace*"/>
6566+ </return-value>
6567+ <parameters>
6568+ <instance-parameter name="family" transfer-ownership="none">
6569+ <doc xml:space="preserve"
6570+ filename="../pango/fonts.c"
6571+ line="2469">a `PangoFontFamily`</doc>
6572+ <type name="FontFamily" c:type="PangoFontFamily*"/>
6573+ </instance-parameter>
6574+ <parameter name="name"
6575+ transfer-ownership="none"
6576+ nullable="1"
6577+ allow-none="1">
6578+ <doc xml:space="preserve"
6579+ filename="../pango/fonts.c"
6580+ line="2470">the name of a face. If the name is %NULL,
6581+ the family's default face (fontconfig calls it "Regular")
6582+ will be returned.</doc>
6583+ <type name="utf8" c:type="const char*"/>
6584+ </parameter>
6585+ </parameters>
6586+ </virtual-method>
6587+ <virtual-method name="get_name" invoker="get_name">
6588+ <doc xml:space="preserve"
6589+ filename="../pango/fonts.c"
6590+ line="2389">Gets the name of the family.
6591+
6592+The name is unique among all fonts for the font backend and can
6593+be used in a `PangoFontDescription` to specify that a face from
6594+this family is desired.</doc>
6595+ <source-position filename="../pango/pango-font.h" line="437"/>
6596+ <return-value transfer-ownership="none">
6597+ <doc xml:space="preserve"
6598+ filename="../pango/fonts.c"
6599+ line="2399">the name of the family. This string is owned
6600+ by the family object and must not be modified or freed.</doc>
6601+ <type name="utf8" c:type="const char*"/>
6602+ </return-value>
6603+ <parameters>
6604+ <instance-parameter name="family" transfer-ownership="none">
6605+ <doc xml:space="preserve"
6606+ filename="../pango/fonts.c"
6607+ line="2391">a `PangoFontFamily`</doc>
6608+ <type name="FontFamily" c:type="PangoFontFamily*"/>
6609+ </instance-parameter>
6610+ </parameters>
6611+ </virtual-method>
6612+ <virtual-method name="is_monospace" invoker="is_monospace" version="1.4">
6613+ <doc xml:space="preserve"
6614+ filename="../pango/fonts.c"
6615+ line="2490">A monospace font is a font designed for text display where the the
6616+characters form a regular grid.
6617+
6618+For Western languages this would
6619+mean that the advance width of all characters are the same, but
6620+this categorization also includes Asian fonts which include
6621+double-width characters: characters that occupy two grid cells.
6622+g_unichar_iswide() returns a result that indicates whether a
6623+character is typically double-width in a monospace font.
6624+
6625+The best way to find out the grid-cell size is to call
6626+[method@Pango.FontMetrics.get_approximate_digit_width], since the
6627+results of [method@Pango.FontMetrics.get_approximate_char_width] may
6628+be affected by double-width characters.</doc>
6629+ <source-position filename="../pango/pango-font.h" line="438"/>
6630+ <return-value transfer-ownership="none">
6631+ <doc xml:space="preserve"
6632+ filename="../pango/fonts.c"
6633+ line="2509">%TRUE if the family is monospace.</doc>
6634+ <type name="gboolean" c:type="gboolean"/>
6635+ </return-value>
6636+ <parameters>
6637+ <instance-parameter name="family" transfer-ownership="none">
6638+ <doc xml:space="preserve"
6639+ filename="../pango/fonts.c"
6640+ line="2492">a `PangoFontFamily`</doc>
6641+ <type name="FontFamily" c:type="PangoFontFamily*"/>
6642+ </instance-parameter>
6643+ </parameters>
6644+ </virtual-method>
6645+ <virtual-method name="is_variable" invoker="is_variable" version="1.44">
6646+ <doc xml:space="preserve"
6647+ filename="../pango/fonts.c"
6648+ line="2521">A variable font is a font which has axes that can be modified to
6649+produce different faces.
6650+
6651+Such axes are also known as _variations_; see
6652+[method@Pango.FontDescription.set_variations] for more information.</doc>
6653+ <source-position filename="../pango/pango-font.h" line="439"/>
6654+ <return-value transfer-ownership="none">
6655+ <doc xml:space="preserve"
6656+ filename="../pango/fonts.c"
6657+ line="2531">%TRUE if the family is variable</doc>
6658+ <type name="gboolean" c:type="gboolean"/>
6659+ </return-value>
6660+ <parameters>
6661+ <instance-parameter name="family" transfer-ownership="none">
6662+ <doc xml:space="preserve"
6663+ filename="../pango/fonts.c"
6664+ line="2523">a `PangoFontFamily`</doc>
6665+ <type name="FontFamily" c:type="PangoFontFamily*"/>
6666+ </instance-parameter>
6667+ </parameters>
6668+ </virtual-method>
6669+ <virtual-method name="list_faces" invoker="list_faces">
6670+ <doc xml:space="preserve"
6671+ filename="../pango/fonts.c"
6672+ line="2410">Lists the different font faces that make up @family.
6673+
6674+The faces in a family share a common design, but differ in slant, weight,
6675+width and other aspects.</doc>
6676+ <source-position filename="../pango/pango-font.h" line="434"/>
6677+ <return-value transfer-ownership="none">
6678+ <type name="none" c:type="void"/>
6679+ </return-value>
6680+ <parameters>
6681+ <instance-parameter name="family" transfer-ownership="none">
6682+ <doc xml:space="preserve"
6683+ filename="../pango/fonts.c"
6684+ line="2412">a `PangoFontFamily`</doc>
6685+ <type name="FontFamily" c:type="PangoFontFamily*"/>
6686+ </instance-parameter>
6687+ <parameter name="faces"
6688+ direction="out"
6689+ caller-allocates="0"
6690+ transfer-ownership="container"
6691+ optional="1"
6692+ allow-none="1">
6693+ <doc xml:space="preserve"
6694+ filename="../pango/fonts.c"
6695+ line="2413">
6696+ location to store an array of pointers to `PangoFontFace` objects,
6697+ or %NULL. This array should be freed with g_free() when it is no
6698+ longer needed.</doc>
6699+ <array length="1" zero-terminated="0" c:type="PangoFontFace***">
6700+ <type name="FontFace" c:type="PangoFontFace**"/>
6701+ </array>
6702+ </parameter>
6703+ <parameter name="n_faces"
6704+ direction="out"
6705+ caller-allocates="0"
6706+ transfer-ownership="full">
6707+ <doc xml:space="preserve"
6708+ filename="../pango/fonts.c"
6709+ line="2417">location to store number of elements in @faces.</doc>
6710+ <type name="gint" c:type="int*"/>
6711+ </parameter>
6712+ </parameters>
6713+ </virtual-method>
6714+ <method name="get_face"
6715+ c:identifier="pango_font_family_get_face"
6716+ version="1.46">
6717+ <doc xml:space="preserve"
6718+ filename="../pango/fonts.c"
6719+ line="2467">Gets the `PangoFontFace` of @family with the given name.</doc>
6720+ <source-position filename="../pango/pango-font.h" line="468"/>
6721+ <return-value transfer-ownership="none" nullable="1">
6722+ <doc xml:space="preserve"
6723+ filename="../pango/fonts.c"
6724+ line="2476">the `PangoFontFace`,
6725+ or %NULL if no face with the given name exists.</doc>
6726+ <type name="FontFace" c:type="PangoFontFace*"/>
6727+ </return-value>
6728+ <parameters>
6729+ <instance-parameter name="family" transfer-ownership="none">
6730+ <doc xml:space="preserve"
6731+ filename="../pango/fonts.c"
6732+ line="2469">a `PangoFontFamily`</doc>
6733+ <type name="FontFamily" c:type="PangoFontFamily*"/>
6734+ </instance-parameter>
6735+ <parameter name="name"
6736+ transfer-ownership="none"
6737+ nullable="1"
6738+ allow-none="1">
6739+ <doc xml:space="preserve"
6740+ filename="../pango/fonts.c"
6741+ line="2470">the name of a face. If the name is %NULL,
6742+ the family's default face (fontconfig calls it "Regular")
6743+ will be returned.</doc>
6744+ <type name="utf8" c:type="const char*"/>
6745+ </parameter>
6746+ </parameters>
6747+ </method>
6748+ <method name="get_name" c:identifier="pango_font_family_get_name">
6749+ <doc xml:space="preserve"
6750+ filename="../pango/fonts.c"
6751+ line="2389">Gets the name of the family.
6752+
6753+The name is unique among all fonts for the font backend and can
6754+be used in a `PangoFontDescription` to specify that a face from
6755+this family is desired.</doc>
6756+ <source-position filename="../pango/pango-font.h" line="461"/>
6757+ <return-value transfer-ownership="none">
6758+ <doc xml:space="preserve"
6759+ filename="../pango/fonts.c"
6760+ line="2399">the name of the family. This string is owned
6761+ by the family object and must not be modified or freed.</doc>
6762+ <type name="utf8" c:type="const char*"/>
6763+ </return-value>
6764+ <parameters>
6765+ <instance-parameter name="family" transfer-ownership="none">
6766+ <doc xml:space="preserve"
6767+ filename="../pango/fonts.c"
6768+ line="2391">a `PangoFontFamily`</doc>
6769+ <type name="FontFamily" c:type="PangoFontFamily*"/>
6770+ </instance-parameter>
6771+ </parameters>
6772+ </method>
6773+ <method name="is_monospace"
6774+ c:identifier="pango_font_family_is_monospace"
6775+ version="1.4">
6776+ <doc xml:space="preserve"
6777+ filename="../pango/fonts.c"
6778+ line="2490">A monospace font is a font designed for text display where the the
6779+characters form a regular grid.
6780+
6781+For Western languages this would
6782+mean that the advance width of all characters are the same, but
6783+this categorization also includes Asian fonts which include
6784+double-width characters: characters that occupy two grid cells.
6785+g_unichar_iswide() returns a result that indicates whether a
6786+character is typically double-width in a monospace font.
6787+
6788+The best way to find out the grid-cell size is to call
6789+[method@Pango.FontMetrics.get_approximate_digit_width], since the
6790+results of [method@Pango.FontMetrics.get_approximate_char_width] may
6791+be affected by double-width characters.</doc>
6792+ <source-position filename="../pango/pango-font.h" line="463"/>
6793+ <return-value transfer-ownership="none">
6794+ <doc xml:space="preserve"
6795+ filename="../pango/fonts.c"
6796+ line="2509">%TRUE if the family is monospace.</doc>
6797+ <type name="gboolean" c:type="gboolean"/>
6798+ </return-value>
6799+ <parameters>
6800+ <instance-parameter name="family" transfer-ownership="none">
6801+ <doc xml:space="preserve"
6802+ filename="../pango/fonts.c"
6803+ line="2492">a `PangoFontFamily`</doc>
6804+ <type name="FontFamily" c:type="PangoFontFamily*"/>
6805+ </instance-parameter>
6806+ </parameters>
6807+ </method>
6808+ <method name="is_variable"
6809+ c:identifier="pango_font_family_is_variable"
6810+ version="1.44">
6811+ <doc xml:space="preserve"
6812+ filename="../pango/fonts.c"
6813+ line="2521">A variable font is a font which has axes that can be modified to
6814+produce different faces.
6815+
6816+Such axes are also known as _variations_; see
6817+[method@Pango.FontDescription.set_variations] for more information.</doc>
6818+ <source-position filename="../pango/pango-font.h" line="465"/>
6819+ <return-value transfer-ownership="none">
6820+ <doc xml:space="preserve"
6821+ filename="../pango/fonts.c"
6822+ line="2531">%TRUE if the family is variable</doc>
6823+ <type name="gboolean" c:type="gboolean"/>
6824+ </return-value>
6825+ <parameters>
6826+ <instance-parameter name="family" transfer-ownership="none">
6827+ <doc xml:space="preserve"
6828+ filename="../pango/fonts.c"
6829+ line="2523">a `PangoFontFamily`</doc>
6830+ <type name="FontFamily" c:type="PangoFontFamily*"/>
6831+ </instance-parameter>
6832+ </parameters>
6833+ </method>
6834+ <method name="list_faces" c:identifier="pango_font_family_list_faces">
6835+ <doc xml:space="preserve"
6836+ filename="../pango/fonts.c"
6837+ line="2410">Lists the different font faces that make up @family.
6838+
6839+The faces in a family share a common design, but differ in slant, weight,
6840+width and other aspects.</doc>
6841+ <source-position filename="../pango/pango-font.h" line="457"/>
6842+ <return-value transfer-ownership="none">
6843+ <type name="none" c:type="void"/>
6844+ </return-value>
6845+ <parameters>
6846+ <instance-parameter name="family" transfer-ownership="none">
6847+ <doc xml:space="preserve"
6848+ filename="../pango/fonts.c"
6849+ line="2412">a `PangoFontFamily`</doc>
6850+ <type name="FontFamily" c:type="PangoFontFamily*"/>
6851+ </instance-parameter>
6852+ <parameter name="faces"
6853+ direction="out"
6854+ caller-allocates="0"
6855+ transfer-ownership="container"
6856+ optional="1"
6857+ allow-none="1">
6858+ <doc xml:space="preserve"
6859+ filename="../pango/fonts.c"
6860+ line="2413">
6861+ location to store an array of pointers to `PangoFontFace` objects,
6862+ or %NULL. This array should be freed with g_free() when it is no
6863+ longer needed.</doc>
6864+ <array length="1" zero-terminated="0" c:type="PangoFontFace***">
6865+ <type name="FontFace" c:type="PangoFontFace**"/>
6866+ </array>
6867+ </parameter>
6868+ <parameter name="n_faces"
6869+ direction="out"
6870+ caller-allocates="0"
6871+ transfer-ownership="full">
6872+ <doc xml:space="preserve"
6873+ filename="../pango/fonts.c"
6874+ line="2417">location to store number of elements in @faces.</doc>
6875+ <type name="gint" c:type="int*"/>
6876+ </parameter>
6877+ </parameters>
6878+ </method>
6879+ <field name="parent_instance">
6880+ <type name="GObject.Object" c:type="GObject"/>
6881+ </field>
6882+ </class>
6883+ <record name="FontFamilyClass"
6884+ c:type="PangoFontFamilyClass"
6885+ glib:is-gtype-struct-for="FontFamily">
6886+ <source-position filename="../pango/pango-font.h" line="449"/>
6887+ <field name="parent_class">
6888+ <type name="GObject.ObjectClass" c:type="GObjectClass"/>
6889+ </field>
6890+ <field name="list_faces">
6891+ <callback name="list_faces">
6892+ <source-position filename="../pango/pango-font.h" line="434"/>
6893+ <return-value transfer-ownership="none">
6894+ <type name="none" c:type="void"/>
6895+ </return-value>
6896+ <parameters>
6897+ <parameter name="family" transfer-ownership="none">
6898+ <doc xml:space="preserve"
6899+ filename="../pango/fonts.c"
6900+ line="2412">a `PangoFontFamily`</doc>
6901+ <type name="FontFamily" c:type="PangoFontFamily*"/>
6902+ </parameter>
6903+ <parameter name="faces"
6904+ direction="out"
6905+ caller-allocates="0"
6906+ transfer-ownership="container"
6907+ optional="1"
6908+ allow-none="1">
6909+ <doc xml:space="preserve"
6910+ filename="../pango/fonts.c"
6911+ line="2413">
6912+ location to store an array of pointers to `PangoFontFace` objects,
6913+ or %NULL. This array should be freed with g_free() when it is no
6914+ longer needed.</doc>
6915+ <array length="2" zero-terminated="0" c:type="PangoFontFace***">
6916+ <type name="FontFace" c:type="PangoFontFace**"/>
6917+ </array>
6918+ </parameter>
6919+ <parameter name="n_faces"
6920+ direction="out"
6921+ caller-allocates="0"
6922+ transfer-ownership="full">
6923+ <doc xml:space="preserve"
6924+ filename="../pango/fonts.c"
6925+ line="2417">location to store number of elements in @faces.</doc>
6926+ <type name="gint" c:type="int*"/>
6927+ </parameter>
6928+ </parameters>
6929+ </callback>
6930+ </field>
6931+ <field name="get_name">
6932+ <callback name="get_name">
6933+ <source-position filename="../pango/pango-font.h" line="437"/>
6934+ <return-value transfer-ownership="none">
6935+ <doc xml:space="preserve"
6936+ filename="../pango/fonts.c"
6937+ line="2399">the name of the family. This string is owned
6938+ by the family object and must not be modified or freed.</doc>
6939+ <type name="utf8" c:type="const char*"/>
6940+ </return-value>
6941+ <parameters>
6942+ <parameter name="family" transfer-ownership="none">
6943+ <doc xml:space="preserve"
6944+ filename="../pango/fonts.c"
6945+ line="2391">a `PangoFontFamily`</doc>
6946+ <type name="FontFamily" c:type="PangoFontFamily*"/>
6947+ </parameter>
6948+ </parameters>
6949+ </callback>
6950+ </field>
6951+ <field name="is_monospace">
6952+ <callback name="is_monospace">
6953+ <source-position filename="../pango/pango-font.h" line="438"/>
6954+ <return-value transfer-ownership="none">
6955+ <doc xml:space="preserve"
6956+ filename="../pango/fonts.c"
6957+ line="2509">%TRUE if the family is monospace.</doc>
6958+ <type name="gboolean" c:type="gboolean"/>
6959+ </return-value>
6960+ <parameters>
6961+ <parameter name="family" transfer-ownership="none">
6962+ <doc xml:space="preserve"
6963+ filename="../pango/fonts.c"
6964+ line="2492">a `PangoFontFamily`</doc>
6965+ <type name="FontFamily" c:type="PangoFontFamily*"/>
6966+ </parameter>
6967+ </parameters>
6968+ </callback>
6969+ </field>
6970+ <field name="is_variable">
6971+ <callback name="is_variable">
6972+ <source-position filename="../pango/pango-font.h" line="439"/>
6973+ <return-value transfer-ownership="none">
6974+ <doc xml:space="preserve"
6975+ filename="../pango/fonts.c"
6976+ line="2531">%TRUE if the family is variable</doc>
6977+ <type name="gboolean" c:type="gboolean"/>
6978+ </return-value>
6979+ <parameters>
6980+ <parameter name="family" transfer-ownership="none">
6981+ <doc xml:space="preserve"
6982+ filename="../pango/fonts.c"
6983+ line="2523">a `PangoFontFamily`</doc>
6984+ <type name="FontFamily" c:type="PangoFontFamily*"/>
6985+ </parameter>
6986+ </parameters>
6987+ </callback>
6988+ </field>
6989+ <field name="get_face">
6990+ <callback name="get_face">
6991+ <source-position filename="../pango/pango-font.h" line="441"/>
6992+ <return-value transfer-ownership="none" nullable="1">
6993+ <doc xml:space="preserve"
6994+ filename="../pango/fonts.c"
6995+ line="2476">the `PangoFontFace`,
6996+ or %NULL if no face with the given name exists.</doc>
6997+ <type name="FontFace" c:type="PangoFontFace*"/>
6998+ </return-value>
6999+ <parameters>
7000+ <parameter name="family" transfer-ownership="none">
7001+ <doc xml:space="preserve"
7002+ filename="../pango/fonts.c"
7003+ line="2469">a `PangoFontFamily`</doc>
7004+ <type name="FontFamily" c:type="PangoFontFamily*"/>
7005+ </parameter>
7006+ <parameter name="name"
7007+ transfer-ownership="none"
7008+ nullable="1"
7009+ allow-none="1">
7010+ <doc xml:space="preserve"
7011+ filename="../pango/fonts.c"
7012+ line="2470">the name of a face. If the name is %NULL,
7013+ the family's default face (fontconfig calls it "Regular")
7014+ will be returned.</doc>
7015+ <type name="utf8" c:type="const char*"/>
7016+ </parameter>
7017+ </parameters>
7018+ </callback>
7019+ </field>
7020+ <field name="_pango_reserved2" introspectable="0">
7021+ <callback name="_pango_reserved2">
7022+ <source-position filename="../pango/pango-font.h" line="448"/>
7023+ <return-value transfer-ownership="none">
7024+ <type name="none" c:type="void"/>
7025+ </return-value>
7026+ </callback>
7027+ </field>
7028+ </record>
7029+ <class name="FontMap"
7030+ c:symbol-prefix="font_map"
7031+ c:type="PangoFontMap"
7032+ parent="GObject.Object"
7033+ abstract="1"
7034+ glib:type-name="PangoFontMap"
7035+ glib:get-type="pango_font_map_get_type"
7036+ glib:type-struct="FontMapClass">
7037+ <doc xml:space="preserve"
7038+ filename="../pango/pango-fontmap.h"
7039+ line="40">A `PangoFontMap` represents the set of fonts available for a
7040+particular rendering system.
7041+
7042+This is a virtual object with implementations being specific to
7043+particular rendering systems.</doc>
7044+ <source-position filename="../pango/pango-fontmap.h" line="99"/>
7045+ <virtual-method name="changed" invoker="changed" version="1.34">
7046+ <doc xml:space="preserve"
7047+ filename="../pango/pango-fontmap.c"
7048+ line="355">Forces a change in the context, which will cause any `PangoContext`
7049+using this fontmap to change.
7050+
7051+This function is only useful when implementing a new backend
7052+for Pango, something applications won't do. Backends should
7053+call this function if they have attached extra data to the
7054+context and such data is changed.</doc>
7055+ <source-position filename="../pango/pango-fontmap.h" line="92"/>
7056+ <return-value transfer-ownership="none">
7057+ <type name="none" c:type="void"/>
7058+ </return-value>
7059+ <parameters>
7060+ <instance-parameter name="fontmap" transfer-ownership="none">
7061+ <doc xml:space="preserve"
7062+ filename="../pango/pango-fontmap.c"
7063+ line="357">a `PangoFontMap`</doc>
7064+ <type name="FontMap" c:type="PangoFontMap*"/>
7065+ </instance-parameter>
7066+ </parameters>
7067+ </virtual-method>
7068+ <virtual-method name="get_face" introspectable="0">
7069+ <source-position filename="../pango/pango-fontmap.h" line="97"/>
7070+ <return-value>
7071+ <type name="FontFace" c:type="PangoFontFace*"/>
7072+ </return-value>
7073+ <parameters>
7074+ <instance-parameter name="fontmap" transfer-ownership="none">
7075+ <type name="FontMap" c:type="PangoFontMap*"/>
7076+ </instance-parameter>
7077+ <parameter name="font" transfer-ownership="none">
7078+ <type name="Font" c:type="PangoFont*"/>
7079+ </parameter>
7080+ </parameters>
7081+ </virtual-method>
7082+ <virtual-method name="get_family" invoker="get_family" version="1.46">
7083+ <doc xml:space="preserve"
7084+ filename="../pango/pango-fontmap.c"
7085+ line="405">Gets a font family by name.</doc>
7086+ <source-position filename="../pango/pango-fontmap.h" line="94"/>
7087+ <return-value transfer-ownership="none">
7088+ <doc xml:space="preserve"
7089+ filename="../pango/pango-fontmap.c"
7090+ line="412">the `PangoFontFamily`</doc>
7091+ <type name="FontFamily" c:type="PangoFontFamily*"/>
7092+ </return-value>
7093+ <parameters>
7094+ <instance-parameter name="fontmap" transfer-ownership="none">
7095+ <doc xml:space="preserve"
7096+ filename="../pango/pango-fontmap.c"
7097+ line="407">a `PangoFontMap`</doc>
7098+ <type name="FontMap" c:type="PangoFontMap*"/>
7099+ </instance-parameter>
7100+ <parameter name="name" transfer-ownership="none">
7101+ <doc xml:space="preserve"
7102+ filename="../pango/pango-fontmap.c"
7103+ line="408">a family name</doc>
7104+ <type name="utf8" c:type="const char*"/>
7105+ </parameter>
7106+ </parameters>
7107+ </virtual-method>
7108+ <virtual-method name="get_serial" invoker="get_serial" version="1.32.4">
7109+ <doc xml:space="preserve"
7110+ filename="../pango/pango-fontmap.c"
7111+ line="311">Returns the current serial number of @fontmap.
7112+
7113+The serial number is initialized to an small number larger than zero
7114+when a new fontmap is created and is increased whenever the fontmap
7115+is changed. It may wrap, but will never have the value 0. Since it can
7116+wrap, never compare it with "less than", always use "not equals".
7117+
7118+The fontmap can only be changed using backend-specific API, like changing
7119+fontmap resolution.
7120+
7121+This can be used to automatically detect changes to a `PangoFontMap`,
7122+like in `PangoContext`.</doc>
7123+ <source-position filename="../pango/pango-fontmap.h" line="91"/>
7124+ <return-value transfer-ownership="none">
7125+ <doc xml:space="preserve"
7126+ filename="../pango/pango-fontmap.c"
7127+ line="328">The current serial number of @fontmap.</doc>
7128+ <type name="guint" c:type="guint"/>
7129+ </return-value>
7130+ <parameters>
7131+ <instance-parameter name="fontmap" transfer-ownership="none">
7132+ <doc xml:space="preserve"
7133+ filename="../pango/pango-fontmap.c"
7134+ line="313">a `PangoFontMap`</doc>
7135+ <type name="FontMap" c:type="PangoFontMap*"/>
7136+ </instance-parameter>
7137+ </parameters>
7138+ </virtual-method>
7139+ <virtual-method name="list_families" invoker="list_families">
7140+ <doc xml:space="preserve"
7141+ filename="../pango/pango-fontmap.c"
7142+ line="118">List all families for a fontmap.</doc>
7143+ <source-position filename="../pango/pango-fontmap.h" line="81"/>
7144+ <return-value transfer-ownership="none">
7145+ <type name="none" c:type="void"/>
7146+ </return-value>
7147+ <parameters>
7148+ <instance-parameter name="fontmap" transfer-ownership="none">
7149+ <doc xml:space="preserve"
7150+ filename="../pango/pango-fontmap.c"
7151+ line="120">a `PangoFontMap`</doc>
7152+ <type name="FontMap" c:type="PangoFontMap*"/>
7153+ </instance-parameter>
7154+ <parameter name="families"
7155+ direction="out"
7156+ caller-allocates="0"
7157+ transfer-ownership="container">
7158+ <doc xml:space="preserve"
7159+ filename="../pango/pango-fontmap.c"
7160+ line="121">location to
7161+ store a pointer to an array of `PangoFontFamily` *.
7162+ This array should be freed with g_free().</doc>
7163+ <array length="1" zero-terminated="0" c:type="PangoFontFamily***">
7164+ <type name="FontFamily" c:type="PangoFontFamily**"/>
7165+ </array>
7166+ </parameter>
7167+ <parameter name="n_families"
7168+ direction="out"
7169+ caller-allocates="0"
7170+ transfer-ownership="full">
7171+ <doc xml:space="preserve"
7172+ filename="../pango/pango-fontmap.c"
7173+ line="124">location to store the number of elements in @families</doc>
7174+ <type name="gint" c:type="int*"/>
7175+ </parameter>
7176+ </parameters>
7177+ </virtual-method>
7178+ <virtual-method name="load_font" invoker="load_font">
7179+ <doc xml:space="preserve"
7180+ filename="../pango/pango-fontmap.c"
7181+ line="97">Load the font in the fontmap that is the closest match for @desc.</doc>
7182+ <source-position filename="../pango/pango-fontmap.h" line="78"/>
7183+ <return-value transfer-ownership="full" nullable="1">
7184+ <doc xml:space="preserve"
7185+ filename="../pango/pango-fontmap.c"
7186+ line="105">the newly allocated `PangoFont`
7187+ loaded, or %NULL if no font matched.</doc>
7188+ <type name="Font" c:type="PangoFont*"/>
7189+ </return-value>
7190+ <parameters>
7191+ <instance-parameter name="fontmap" transfer-ownership="none">
7192+ <doc xml:space="preserve"
7193+ filename="../pango/pango-fontmap.c"
7194+ line="99">a `PangoFontMap`</doc>
7195+ <type name="FontMap" c:type="PangoFontMap*"/>
7196+ </instance-parameter>
7197+ <parameter name="context" transfer-ownership="none">
7198+ <doc xml:space="preserve"
7199+ filename="../pango/pango-fontmap.c"
7200+ line="100">the `PangoContext` the font will be used with</doc>
7201+ <type name="Context" c:type="PangoContext*"/>
7202+ </parameter>
7203+ <parameter name="desc" transfer-ownership="none">
7204+ <doc xml:space="preserve"
7205+ filename="../pango/pango-fontmap.c"
7206+ line="101">a `PangoFontDescription` describing the font to load</doc>
7207+ <type name="FontDescription" c:type="const PangoFontDescription*"/>
7208+ </parameter>
7209+ </parameters>
7210+ </virtual-method>
7211+ <virtual-method name="load_fontset" invoker="load_fontset">
7212+ <doc xml:space="preserve"
7213+ filename="../pango/pango-fontmap.c"
7214+ line="142">Load a set of fonts in the fontmap that can be used to render
7215+a font matching @desc.</doc>
7216+ <source-position filename="../pango/pango-fontmap.h" line="84"/>
7217+ <return-value transfer-ownership="full" nullable="1">
7218+ <doc xml:space="preserve"
7219+ filename="../pango/pango-fontmap.c"
7220+ line="152">the newly allocated
7221+ `PangoFontset` loaded, or %NULL if no font matched.</doc>
7222+ <type name="Fontset" c:type="PangoFontset*"/>
7223+ </return-value>
7224+ <parameters>
7225+ <instance-parameter name="fontmap" transfer-ownership="none">
7226+ <doc xml:space="preserve"
7227+ filename="../pango/pango-fontmap.c"
7228+ line="144">a `PangoFontMap`</doc>
7229+ <type name="FontMap" c:type="PangoFontMap*"/>
7230+ </instance-parameter>
7231+ <parameter name="context" transfer-ownership="none">
7232+ <doc xml:space="preserve"
7233+ filename="../pango/pango-fontmap.c"
7234+ line="145">the `PangoContext` the font will be used with</doc>
7235+ <type name="Context" c:type="PangoContext*"/>
7236+ </parameter>
7237+ <parameter name="desc" transfer-ownership="none">
7238+ <doc xml:space="preserve"
7239+ filename="../pango/pango-fontmap.c"
7240+ line="146">a `PangoFontDescription` describing the font to load</doc>
7241+ <type name="FontDescription" c:type="const PangoFontDescription*"/>
7242+ </parameter>
7243+ <parameter name="language" transfer-ownership="none">
7244+ <doc xml:space="preserve"
7245+ filename="../pango/pango-fontmap.c"
7246+ line="147">a `PangoLanguage` the fonts will be used for</doc>
7247+ <type name="Language" c:type="PangoLanguage*"/>
7248+ </parameter>
7249+ </parameters>
7250+ </virtual-method>
7251+ <method name="changed"
7252+ c:identifier="pango_font_map_changed"
7253+ version="1.34">
7254+ <doc xml:space="preserve"
7255+ filename="../pango/pango-fontmap.c"
7256+ line="355">Forces a change in the context, which will cause any `PangoContext`
7257+using this fontmap to change.
7258+
7259+This function is only useful when implementing a new backend
7260+for Pango, something applications won't do. Backends should
7261+call this function if they have attached extra data to the
7262+context and such data is changed.</doc>
7263+ <source-position filename="../pango/pango-fontmap.h" line="121"/>
7264+ <return-value transfer-ownership="none">
7265+ <type name="none" c:type="void"/>
7266+ </return-value>
7267+ <parameters>
7268+ <instance-parameter name="fontmap" transfer-ownership="none">
7269+ <doc xml:space="preserve"
7270+ filename="../pango/pango-fontmap.c"
7271+ line="357">a `PangoFontMap`</doc>
7272+ <type name="FontMap" c:type="PangoFontMap*"/>
7273+ </instance-parameter>
7274+ </parameters>
7275+ </method>
7276+ <method name="create_context"
7277+ c:identifier="pango_font_map_create_context"
7278+ version="1.22">
7279+ <doc xml:space="preserve"
7280+ filename="../pango/pango-fontmap.c"
7281+ line="65">Creates a `PangoContext` connected to @fontmap.
7282+
7283+This is equivalent to [ctor@Pango.Context.new] followed by
7284+[method@Pango.Context.set_font_map].
7285+
7286+If you are using Pango as part of a higher-level system,
7287+that system may have it's own way of create a `PangoContext`.
7288+For instance, the GTK toolkit has, among others,
7289+gtk_widget_get_pango_context(). Use those instead.</doc>
7290+ <source-position filename="../pango/pango-fontmap.h" line="104"/>
7291+ <return-value transfer-ownership="full">
7292+ <doc xml:space="preserve"
7293+ filename="../pango/pango-fontmap.c"
7294+ line="79">the newly allocated `PangoContext`,
7295+ which should be freed with g_object_unref().</doc>
7296+ <type name="Context" c:type="PangoContext*"/>
7297+ </return-value>
7298+ <parameters>
7299+ <instance-parameter name="fontmap" transfer-ownership="none">
7300+ <doc xml:space="preserve"
7301+ filename="../pango/pango-fontmap.c"
7302+ line="67">a `PangoFontMap`</doc>
7303+ <type name="FontMap" c:type="PangoFontMap*"/>
7304+ </instance-parameter>
7305+ </parameters>
7306+ </method>
7307+ <method name="get_family"
7308+ c:identifier="pango_font_map_get_family"
7309+ version="1.46">
7310+ <doc xml:space="preserve"
7311+ filename="../pango/pango-fontmap.c"
7312+ line="405">Gets a font family by name.</doc>
7313+ <source-position filename="../pango/pango-fontmap.h" line="124"/>
7314+ <return-value transfer-ownership="none">
7315+ <doc xml:space="preserve"
7316+ filename="../pango/pango-fontmap.c"
7317+ line="412">the `PangoFontFamily`</doc>
7318+ <type name="FontFamily" c:type="PangoFontFamily*"/>
7319+ </return-value>
7320+ <parameters>
7321+ <instance-parameter name="fontmap" transfer-ownership="none">
7322+ <doc xml:space="preserve"
7323+ filename="../pango/pango-fontmap.c"
7324+ line="407">a `PangoFontMap`</doc>
7325+ <type name="FontMap" c:type="PangoFontMap*"/>
7326+ </instance-parameter>
7327+ <parameter name="name" transfer-ownership="none">
7328+ <doc xml:space="preserve"
7329+ filename="../pango/pango-fontmap.c"
7330+ line="408">a family name</doc>
7331+ <type name="utf8" c:type="const char*"/>
7332+ </parameter>
7333+ </parameters>
7334+ </method>
7335+ <method name="get_serial"
7336+ c:identifier="pango_font_map_get_serial"
7337+ version="1.32.4">
7338+ <doc xml:space="preserve"
7339+ filename="../pango/pango-fontmap.c"
7340+ line="311">Returns the current serial number of @fontmap.
7341+
7342+The serial number is initialized to an small number larger than zero
7343+when a new fontmap is created and is increased whenever the fontmap
7344+is changed. It may wrap, but will never have the value 0. Since it can
7345+wrap, never compare it with "less than", always use "not equals".
7346+
7347+The fontmap can only be changed using backend-specific API, like changing
7348+fontmap resolution.
7349+
7350+This can be used to automatically detect changes to a `PangoFontMap`,
7351+like in `PangoContext`.</doc>
7352+ <source-position filename="../pango/pango-fontmap.h" line="119"/>
7353+ <return-value transfer-ownership="none">
7354+ <doc xml:space="preserve"
7355+ filename="../pango/pango-fontmap.c"
7356+ line="328">The current serial number of @fontmap.</doc>
7357+ <type name="guint" c:type="guint"/>
7358+ </return-value>
7359+ <parameters>
7360+ <instance-parameter name="fontmap" transfer-ownership="none">
7361+ <doc xml:space="preserve"
7362+ filename="../pango/pango-fontmap.c"
7363+ line="313">a `PangoFontMap`</doc>
7364+ <type name="FontMap" c:type="PangoFontMap*"/>
7365+ </instance-parameter>
7366+ </parameters>
7367+ </method>
7368+ <method name="list_families" c:identifier="pango_font_map_list_families">
7369+ <doc xml:space="preserve"
7370+ filename="../pango/pango-fontmap.c"
7371+ line="118">List all families for a fontmap.</doc>
7372+ <source-position filename="../pango/pango-fontmap.h" line="115"/>
7373+ <return-value transfer-ownership="none">
7374+ <type name="none" c:type="void"/>
7375+ </return-value>
7376+ <parameters>
7377+ <instance-parameter name="fontmap" transfer-ownership="none">
7378+ <doc xml:space="preserve"
7379+ filename="../pango/pango-fontmap.c"
7380+ line="120">a `PangoFontMap`</doc>
7381+ <type name="FontMap" c:type="PangoFontMap*"/>
7382+ </instance-parameter>
7383+ <parameter name="families"
7384+ direction="out"
7385+ caller-allocates="0"
7386+ transfer-ownership="container">
7387+ <doc xml:space="preserve"
7388+ filename="../pango/pango-fontmap.c"
7389+ line="121">location to
7390+ store a pointer to an array of `PangoFontFamily` *.
7391+ This array should be freed with g_free().</doc>
7392+ <array length="1" zero-terminated="0" c:type="PangoFontFamily***">
7393+ <type name="FontFamily" c:type="PangoFontFamily**"/>
7394+ </array>
7395+ </parameter>
7396+ <parameter name="n_families"
7397+ direction="out"
7398+ caller-allocates="0"
7399+ transfer-ownership="full">
7400+ <doc xml:space="preserve"
7401+ filename="../pango/pango-fontmap.c"
7402+ line="124">location to store the number of elements in @families</doc>
7403+ <type name="gint" c:type="int*"/>
7404+ </parameter>
7405+ </parameters>
7406+ </method>
7407+ <method name="load_font" c:identifier="pango_font_map_load_font">
7408+ <doc xml:space="preserve"
7409+ filename="../pango/pango-fontmap.c"
7410+ line="97">Load the font in the fontmap that is the closest match for @desc.</doc>
7411+ <source-position filename="../pango/pango-fontmap.h" line="106"/>
7412+ <return-value transfer-ownership="full" nullable="1">
7413+ <doc xml:space="preserve"
7414+ filename="../pango/pango-fontmap.c"
7415+ line="105">the newly allocated `PangoFont`
7416+ loaded, or %NULL if no font matched.</doc>
7417+ <type name="Font" c:type="PangoFont*"/>
7418+ </return-value>
7419+ <parameters>
7420+ <instance-parameter name="fontmap" transfer-ownership="none">
7421+ <doc xml:space="preserve"
7422+ filename="../pango/pango-fontmap.c"
7423+ line="99">a `PangoFontMap`</doc>
7424+ <type name="FontMap" c:type="PangoFontMap*"/>
7425+ </instance-parameter>
7426+ <parameter name="context" transfer-ownership="none">
7427+ <doc xml:space="preserve"
7428+ filename="../pango/pango-fontmap.c"
7429+ line="100">the `PangoContext` the font will be used with</doc>
7430+ <type name="Context" c:type="PangoContext*"/>
7431+ </parameter>
7432+ <parameter name="desc" transfer-ownership="none">
7433+ <doc xml:space="preserve"
7434+ filename="../pango/pango-fontmap.c"
7435+ line="101">a `PangoFontDescription` describing the font to load</doc>
7436+ <type name="FontDescription" c:type="const PangoFontDescription*"/>
7437+ </parameter>
7438+ </parameters>
7439+ </method>
7440+ <method name="load_fontset" c:identifier="pango_font_map_load_fontset">
7441+ <doc xml:space="preserve"
7442+ filename="../pango/pango-fontmap.c"
7443+ line="142">Load a set of fonts in the fontmap that can be used to render
7444+a font matching @desc.</doc>
7445+ <source-position filename="../pango/pango-fontmap.h" line="110"/>
7446+ <return-value transfer-ownership="full" nullable="1">
7447+ <doc xml:space="preserve"
7448+ filename="../pango/pango-fontmap.c"
7449+ line="152">the newly allocated
7450+ `PangoFontset` loaded, or %NULL if no font matched.</doc>
7451+ <type name="Fontset" c:type="PangoFontset*"/>
7452+ </return-value>
7453+ <parameters>
7454+ <instance-parameter name="fontmap" transfer-ownership="none">
7455+ <doc xml:space="preserve"
7456+ filename="../pango/pango-fontmap.c"
7457+ line="144">a `PangoFontMap`</doc>
7458+ <type name="FontMap" c:type="PangoFontMap*"/>
7459+ </instance-parameter>
7460+ <parameter name="context" transfer-ownership="none">
7461+ <doc xml:space="preserve"
7462+ filename="../pango/pango-fontmap.c"
7463+ line="145">the `PangoContext` the font will be used with</doc>
7464+ <type name="Context" c:type="PangoContext*"/>
7465+ </parameter>
7466+ <parameter name="desc" transfer-ownership="none">
7467+ <doc xml:space="preserve"
7468+ filename="../pango/pango-fontmap.c"
7469+ line="146">a `PangoFontDescription` describing the font to load</doc>
7470+ <type name="FontDescription" c:type="const PangoFontDescription*"/>
7471+ </parameter>
7472+ <parameter name="language" transfer-ownership="none">
7473+ <doc xml:space="preserve"
7474+ filename="../pango/pango-fontmap.c"
7475+ line="147">a `PangoLanguage` the fonts will be used for</doc>
7476+ <type name="Language" c:type="PangoLanguage*"/>
7477+ </parameter>
7478+ </parameters>
7479+ </method>
7480+ <field name="parent_instance">
7481+ <type name="GObject.Object" c:type="GObject"/>
7482+ </field>
7483+ </class>
7484+ <record name="FontMapClass"
7485+ c:type="PangoFontMapClass"
7486+ glib:is-gtype-struct-for="FontMap">
7487+ <doc xml:space="preserve"
7488+ filename="../pango/pango-fontmap.h"
7489+ line="54">The `PangoFontMapClass` structure holds the virtual functions for
7490+a particular `PangoFontMap` implementation.</doc>
7491+ <source-position filename="../pango/pango-fontmap.h" line="99"/>
7492+ <field name="parent_class">
7493+ <doc xml:space="preserve"
7494+ filename="../pango/pango-fontmap.h"
7495+ line="56">parent `GObjectClass`</doc>
7496+ <type name="GObject.ObjectClass" c:type="GObjectClass"/>
7497+ </field>
7498+ <field name="load_font">
7499+ <callback name="load_font">
7500+ <source-position filename="../pango/pango-fontmap.h" line="78"/>
7501+ <return-value transfer-ownership="full" nullable="1">
7502+ <doc xml:space="preserve"
7503+ filename="../pango/pango-fontmap.c"
7504+ line="105">the newly allocated `PangoFont`
7505+ loaded, or %NULL if no font matched.</doc>
7506+ <type name="Font" c:type="PangoFont*"/>
7507+ </return-value>
7508+ <parameters>
7509+ <parameter name="fontmap" transfer-ownership="none">
7510+ <doc xml:space="preserve"
7511+ filename="../pango/pango-fontmap.c"
7512+ line="99">a `PangoFontMap`</doc>
7513+ <type name="FontMap" c:type="PangoFontMap*"/>
7514+ </parameter>
7515+ <parameter name="context" transfer-ownership="none">
7516+ <doc xml:space="preserve"
7517+ filename="../pango/pango-fontmap.c"
7518+ line="100">the `PangoContext` the font will be used with</doc>
7519+ <type name="Context" c:type="PangoContext*"/>
7520+ </parameter>
7521+ <parameter name="desc" transfer-ownership="none">
7522+ <doc xml:space="preserve"
7523+ filename="../pango/pango-fontmap.c"
7524+ line="101">a `PangoFontDescription` describing the font to load</doc>
7525+ <type name="FontDescription"
7526+ c:type="const PangoFontDescription*"/>
7527+ </parameter>
7528+ </parameters>
7529+ </callback>
7530+ </field>
7531+ <field name="list_families">
7532+ <callback name="list_families">
7533+ <source-position filename="../pango/pango-fontmap.h" line="81"/>
7534+ <return-value transfer-ownership="none">
7535+ <type name="none" c:type="void"/>
7536+ </return-value>
7537+ <parameters>
7538+ <parameter name="fontmap" transfer-ownership="none">
7539+ <doc xml:space="preserve"
7540+ filename="../pango/pango-fontmap.c"
7541+ line="120">a `PangoFontMap`</doc>
7542+ <type name="FontMap" c:type="PangoFontMap*"/>
7543+ </parameter>
7544+ <parameter name="families"
7545+ direction="out"
7546+ caller-allocates="0"
7547+ transfer-ownership="container">
7548+ <doc xml:space="preserve"
7549+ filename="../pango/pango-fontmap.c"
7550+ line="121">location to
7551+ store a pointer to an array of `PangoFontFamily` *.
7552+ This array should be freed with g_free().</doc>
7553+ <array length="2"
7554+ zero-terminated="0"
7555+ c:type="PangoFontFamily***">
7556+ <type name="FontFamily" c:type="PangoFontFamily**"/>
7557+ </array>
7558+ </parameter>
7559+ <parameter name="n_families"
7560+ direction="out"
7561+ caller-allocates="0"
7562+ transfer-ownership="full">
7563+ <doc xml:space="preserve"
7564+ filename="../pango/pango-fontmap.c"
7565+ line="124">location to store the number of elements in @families</doc>
7566+ <type name="gint" c:type="int*"/>
7567+ </parameter>
7568+ </parameters>
7569+ </callback>
7570+ </field>
7571+ <field name="load_fontset">
7572+ <callback name="load_fontset">
7573+ <source-position filename="../pango/pango-fontmap.h" line="84"/>
7574+ <return-value transfer-ownership="full" nullable="1">
7575+ <doc xml:space="preserve"
7576+ filename="../pango/pango-fontmap.c"
7577+ line="152">the newly allocated
7578+ `PangoFontset` loaded, or %NULL if no font matched.</doc>
7579+ <type name="Fontset" c:type="PangoFontset*"/>
7580+ </return-value>
7581+ <parameters>
7582+ <parameter name="fontmap" transfer-ownership="none">
7583+ <doc xml:space="preserve"
7584+ filename="../pango/pango-fontmap.c"
7585+ line="144">a `PangoFontMap`</doc>
7586+ <type name="FontMap" c:type="PangoFontMap*"/>
7587+ </parameter>
7588+ <parameter name="context" transfer-ownership="none">
7589+ <doc xml:space="preserve"
7590+ filename="../pango/pango-fontmap.c"
7591+ line="145">the `PangoContext` the font will be used with</doc>
7592+ <type name="Context" c:type="PangoContext*"/>
7593+ </parameter>
7594+ <parameter name="desc" transfer-ownership="none">
7595+ <doc xml:space="preserve"
7596+ filename="../pango/pango-fontmap.c"
7597+ line="146">a `PangoFontDescription` describing the font to load</doc>
7598+ <type name="FontDescription"
7599+ c:type="const PangoFontDescription*"/>
7600+ </parameter>
7601+ <parameter name="language" transfer-ownership="none">
7602+ <doc xml:space="preserve"
7603+ filename="../pango/pango-fontmap.c"
7604+ line="147">a `PangoLanguage` the fonts will be used for</doc>
7605+ <type name="Language" c:type="PangoLanguage*"/>
7606+ </parameter>
7607+ </parameters>
7608+ </callback>
7609+ </field>
7610+ <field name="shape_engine_type">
7611+ <doc xml:space="preserve"
7612+ filename="../pango/pango-fontmap.h"
7613+ line="63">the type of rendering-system-dependent engines that
7614+can handle fonts of this fonts loaded with this fontmap.</doc>
7615+ <type name="utf8" c:type="const char*"/>
7616+ </field>
7617+ <field name="get_serial">
7618+ <callback name="get_serial">
7619+ <source-position filename="../pango/pango-fontmap.h" line="91"/>
7620+ <return-value transfer-ownership="none">
7621+ <doc xml:space="preserve"
7622+ filename="../pango/pango-fontmap.c"
7623+ line="328">The current serial number of @fontmap.</doc>
7624+ <type name="guint" c:type="guint"/>
7625+ </return-value>
7626+ <parameters>
7627+ <parameter name="fontmap" transfer-ownership="none">
7628+ <doc xml:space="preserve"
7629+ filename="../pango/pango-fontmap.c"
7630+ line="313">a `PangoFontMap`</doc>
7631+ <type name="FontMap" c:type="PangoFontMap*"/>
7632+ </parameter>
7633+ </parameters>
7634+ </callback>
7635+ </field>
7636+ <field name="changed">
7637+ <callback name="changed">
7638+ <source-position filename="../pango/pango-fontmap.h" line="92"/>
7639+ <return-value transfer-ownership="none">
7640+ <type name="none" c:type="void"/>
7641+ </return-value>
7642+ <parameters>
7643+ <parameter name="fontmap" transfer-ownership="none">
7644+ <doc xml:space="preserve"
7645+ filename="../pango/pango-fontmap.c"
7646+ line="357">a `PangoFontMap`</doc>
7647+ <type name="FontMap" c:type="PangoFontMap*"/>
7648+ </parameter>
7649+ </parameters>
7650+ </callback>
7651+ </field>
7652+ <field name="get_family">
7653+ <callback name="get_family">
7654+ <source-position filename="../pango/pango-fontmap.h" line="94"/>
7655+ <return-value transfer-ownership="none">
7656+ <doc xml:space="preserve"
7657+ filename="../pango/pango-fontmap.c"
7658+ line="412">the `PangoFontFamily`</doc>
7659+ <type name="FontFamily" c:type="PangoFontFamily*"/>
7660+ </return-value>
7661+ <parameters>
7662+ <parameter name="fontmap" transfer-ownership="none">
7663+ <doc xml:space="preserve"
7664+ filename="../pango/pango-fontmap.c"
7665+ line="407">a `PangoFontMap`</doc>
7666+ <type name="FontMap" c:type="PangoFontMap*"/>
7667+ </parameter>
7668+ <parameter name="name" transfer-ownership="none">
7669+ <doc xml:space="preserve"
7670+ filename="../pango/pango-fontmap.c"
7671+ line="408">a family name</doc>
7672+ <type name="utf8" c:type="const char*"/>
7673+ </parameter>
7674+ </parameters>
7675+ </callback>
7676+ </field>
7677+ <field name="get_face" introspectable="0">
7678+ <callback name="get_face" introspectable="0">
7679+ <source-position filename="../pango/pango-fontmap.h" line="97"/>
7680+ <return-value>
7681+ <type name="FontFace" c:type="PangoFontFace*"/>
7682+ </return-value>
7683+ <parameters>
7684+ <parameter name="fontmap" transfer-ownership="none">
7685+ <type name="FontMap" c:type="PangoFontMap*"/>
7686+ </parameter>
7687+ <parameter name="font" transfer-ownership="none">
7688+ <type name="Font" c:type="PangoFont*"/>
7689+ </parameter>
7690+ </parameters>
7691+ </callback>
7692+ </field>
7693+ </record>
7694+ <bitfield name="FontMask"
7695+ glib:type-name="PangoFontMask"
7696+ glib:get-type="pango_font_mask_get_type"
7697+ c:type="PangoFontMask">
7698+ <doc xml:space="preserve"
7699+ filename="../pango/pango-font.h"
7700+ line="175">The bits in a `PangoFontMask` correspond to the set fields in a
7701+`PangoFontDescription`.</doc>
7702+ <member name="family"
7703+ value="1"
7704+ c:identifier="PANGO_FONT_MASK_FAMILY"
7705+ glib:nick="family"
7706+ glib:name="PANGO_FONT_MASK_FAMILY">
7707+ <doc xml:space="preserve"
7708+ filename="../pango/pango-font.h"
7709+ line="177">the font family is specified.</doc>
7710+ </member>
7711+ <member name="style"
7712+ value="2"
7713+ c:identifier="PANGO_FONT_MASK_STYLE"
7714+ glib:nick="style"
7715+ glib:name="PANGO_FONT_MASK_STYLE">
7716+ <doc xml:space="preserve"
7717+ filename="../pango/pango-font.h"
7718+ line="178">the font style is specified.</doc>
7719+ </member>
7720+ <member name="variant"
7721+ value="4"
7722+ c:identifier="PANGO_FONT_MASK_VARIANT"
7723+ glib:nick="variant"
7724+ glib:name="PANGO_FONT_MASK_VARIANT">
7725+ <doc xml:space="preserve"
7726+ filename="../pango/pango-font.h"
7727+ line="179">the font variant is specified.</doc>
7728+ </member>
7729+ <member name="weight"
7730+ value="8"
7731+ c:identifier="PANGO_FONT_MASK_WEIGHT"
7732+ glib:nick="weight"
7733+ glib:name="PANGO_FONT_MASK_WEIGHT">
7734+ <doc xml:space="preserve"
7735+ filename="../pango/pango-font.h"
7736+ line="180">the font weight is specified.</doc>
7737+ </member>
7738+ <member name="stretch"
7739+ value="16"
7740+ c:identifier="PANGO_FONT_MASK_STRETCH"
7741+ glib:nick="stretch"
7742+ glib:name="PANGO_FONT_MASK_STRETCH">
7743+ <doc xml:space="preserve"
7744+ filename="../pango/pango-font.h"
7745+ line="181">the font stretch is specified.</doc>
7746+ </member>
7747+ <member name="size"
7748+ value="32"
7749+ c:identifier="PANGO_FONT_MASK_SIZE"
7750+ glib:nick="size"
7751+ glib:name="PANGO_FONT_MASK_SIZE">
7752+ <doc xml:space="preserve"
7753+ filename="../pango/pango-font.h"
7754+ line="182">the font size is specified.</doc>
7755+ </member>
7756+ <member name="gravity"
7757+ value="64"
7758+ c:identifier="PANGO_FONT_MASK_GRAVITY"
7759+ glib:nick="gravity"
7760+ glib:name="PANGO_FONT_MASK_GRAVITY">
7761+ <doc xml:space="preserve"
7762+ filename="../pango/pango-font.h"
7763+ line="183">the font gravity is specified (Since: 1.16.)</doc>
7764+ </member>
7765+ <member name="variations"
7766+ value="128"
7767+ c:identifier="PANGO_FONT_MASK_VARIATIONS"
7768+ glib:nick="variations"
7769+ glib:name="PANGO_FONT_MASK_VARIATIONS">
7770+ <doc xml:space="preserve"
7771+ filename="../pango/pango-font.h"
7772+ line="184">OpenType font variations are specified (Since: 1.42)</doc>
7773+ </member>
7774+ </bitfield>
7775+ <record name="FontMetrics"
7776+ c:type="PangoFontMetrics"
7777+ glib:type-name="PangoFontMetrics"
7778+ glib:get-type="pango_font_metrics_get_type"
7779+ c:symbol-prefix="font_metrics">
7780+ <doc xml:space="preserve"
7781+ filename="../pango/pango-font.h"
7782+ line="45">A `PangoFontMetrics` structure holds the overall metric information
7783+for a font.
7784+
7785+The information in a `PangoFontMetrics` structure may be restricted
7786+to a script. The fields of this structure are private to implementations
7787+of a font backend. See the documentation of the corresponding getters
7788+for documentation of their meaning.
7789+
7790+For an overview of the most important metrics, see:
7791+
7792+&lt;picture&gt;
7793+ &lt;source srcset="fontmetrics-dark.png" media="(prefers-color-scheme: dark)"&gt;
7794+ &lt;img alt="Font metrics" src="fontmetrics-light.png"&gt;
7795+&lt;/picture&gt;</doc>
7796+ <source-position filename="../pango/pango-font.h" line="369"/>
7797+ <field name="ref_count" readable="0" private="1">
7798+ <type name="guint" c:type="guint"/>
7799+ </field>
7800+ <field name="ascent" readable="0" private="1">
7801+ <type name="gint" c:type="int"/>
7802+ </field>
7803+ <field name="descent" readable="0" private="1">
7804+ <type name="gint" c:type="int"/>
7805+ </field>
7806+ <field name="height" readable="0" private="1">
7807+ <type name="gint" c:type="int"/>
7808+ </field>
7809+ <field name="approximate_char_width" readable="0" private="1">
7810+ <type name="gint" c:type="int"/>
7811+ </field>
7812+ <field name="approximate_digit_width" readable="0" private="1">
7813+ <type name="gint" c:type="int"/>
7814+ </field>
7815+ <field name="underline_position" readable="0" private="1">
7816+ <type name="gint" c:type="int"/>
7817+ </field>
7818+ <field name="underline_thickness" readable="0" private="1">
7819+ <type name="gint" c:type="int"/>
7820+ </field>
7821+ <field name="strikethrough_position" readable="0" private="1">
7822+ <type name="gint" c:type="int"/>
7823+ </field>
7824+ <field name="strikethrough_thickness" readable="0" private="1">
7825+ <type name="gint" c:type="int"/>
7826+ </field>
7827+ <method name="get_approximate_char_width"
7828+ c:identifier="pango_font_metrics_get_approximate_char_width">
7829+ <doc xml:space="preserve"
7830+ filename="../pango/fonts.c"
7831+ line="2187">Gets the approximate character width for a font metrics structure.
7832+
7833+This is merely a representative value useful, for example, for
7834+determining the initial size for a window. Actual characters in
7835+text will be wider and narrower than this.</doc>
7836+ <source-position filename="../pango/pango-font.h" line="384"/>
7837+ <return-value transfer-ownership="none">
7838+ <doc xml:space="preserve"
7839+ filename="../pango/fonts.c"
7840+ line="2197">the character width, in Pango units.</doc>
7841+ <type name="gint" c:type="int"/>
7842+ </return-value>
7843+ <parameters>
7844+ <instance-parameter name="metrics" transfer-ownership="none">
7845+ <doc xml:space="preserve"
7846+ filename="../pango/fonts.c"
7847+ line="2189">a `PangoFontMetrics` structure</doc>
7848+ <type name="FontMetrics" c:type="PangoFontMetrics*"/>
7849+ </instance-parameter>
7850+ </parameters>
7851+ </method>
7852+ <method name="get_approximate_digit_width"
7853+ c:identifier="pango_font_metrics_get_approximate_digit_width">
7854+ <doc xml:space="preserve"
7855+ filename="../pango/fonts.c"
7856+ line="2207">Gets the approximate digit width for a font metrics structure.
7857+
7858+This is merely a representative value useful, for example, for
7859+determining the initial size for a window. Actual digits in
7860+text can be wider or narrower than this, though this value
7861+is generally somewhat more accurate than the result of
7862+pango_font_metrics_get_approximate_char_width() for digits.</doc>
7863+ <source-position filename="../pango/pango-font.h" line="386"/>
7864+ <return-value transfer-ownership="none">
7865+ <doc xml:space="preserve"
7866+ filename="../pango/fonts.c"
7867+ line="2219">the digit width, in Pango units.</doc>
7868+ <type name="gint" c:type="int"/>
7869+ </return-value>
7870+ <parameters>
7871+ <instance-parameter name="metrics" transfer-ownership="none">
7872+ <doc xml:space="preserve"
7873+ filename="../pango/fonts.c"
7874+ line="2209">a `PangoFontMetrics` structure</doc>
7875+ <type name="FontMetrics" c:type="PangoFontMetrics*"/>
7876+ </instance-parameter>
7877+ </parameters>
7878+ </method>
7879+ <method name="get_ascent" c:identifier="pango_font_metrics_get_ascent">
7880+ <doc xml:space="preserve"
7881+ filename="../pango/fonts.c"
7882+ line="2122">Gets the ascent from a font metrics structure.
7883+
7884+The ascent is the distance from the baseline to the logical top
7885+of a line of text. (The logical top may be above or below the top
7886+of the actual drawn ink. It is necessary to lay out the text to
7887+figure where the ink will be.)</doc>
7888+ <source-position filename="../pango/pango-font.h" line="378"/>
7889+ <return-value transfer-ownership="none">
7890+ <doc xml:space="preserve"
7891+ filename="../pango/fonts.c"
7892+ line="2133">the ascent, in Pango units.</doc>
7893+ <type name="gint" c:type="int"/>
7894+ </return-value>
7895+ <parameters>
7896+ <instance-parameter name="metrics" transfer-ownership="none">
7897+ <doc xml:space="preserve"
7898+ filename="../pango/fonts.c"
7899+ line="2124">a `PangoFontMetrics` structure</doc>
7900+ <type name="FontMetrics" c:type="PangoFontMetrics*"/>
7901+ </instance-parameter>
7902+ </parameters>
7903+ </method>
7904+ <method name="get_descent" c:identifier="pango_font_metrics_get_descent">
7905+ <doc xml:space="preserve"
7906+ filename="../pango/fonts.c"
7907+ line="2143">Gets the descent from a font metrics structure.
7908+
7909+The descent is the distance from the baseline to the logical bottom
7910+of a line of text. (The logical bottom may be above or below the
7911+bottom of the actual drawn ink. It is necessary to lay out the text
7912+to figure where the ink will be.)</doc>
7913+ <source-position filename="../pango/pango-font.h" line="380"/>
7914+ <return-value transfer-ownership="none">
7915+ <doc xml:space="preserve"
7916+ filename="../pango/fonts.c"
7917+ line="2154">the descent, in Pango units.</doc>
7918+ <type name="gint" c:type="int"/>
7919+ </return-value>
7920+ <parameters>
7921+ <instance-parameter name="metrics" transfer-ownership="none">
7922+ <doc xml:space="preserve"
7923+ filename="../pango/fonts.c"
7924+ line="2145">a `PangoFontMetrics` structure</doc>
7925+ <type name="FontMetrics" c:type="PangoFontMetrics*"/>
7926+ </instance-parameter>
7927+ </parameters>
7928+ </method>
7929+ <method name="get_height"
7930+ c:identifier="pango_font_metrics_get_height"
7931+ version="1.44">
7932+ <doc xml:space="preserve"
7933+ filename="../pango/fonts.c"
7934+ line="2164">Gets the line height from a font metrics structure.
7935+
7936+The line height is the recommended distance between successive
7937+baselines in wrapped text using this font.
7938+
7939+If the line height is not available, 0 is returned.</doc>
7940+ <source-position filename="../pango/pango-font.h" line="382"/>
7941+ <return-value transfer-ownership="none">
7942+ <doc xml:space="preserve"
7943+ filename="../pango/fonts.c"
7944+ line="2175">the height, in Pango units</doc>
7945+ <type name="gint" c:type="int"/>
7946+ </return-value>
7947+ <parameters>
7948+ <instance-parameter name="metrics" transfer-ownership="none">
7949+ <doc xml:space="preserve"
7950+ filename="../pango/fonts.c"
7951+ line="2166">a `PangoFontMetrics` structure</doc>
7952+ <type name="FontMetrics" c:type="PangoFontMetrics*"/>
7953+ </instance-parameter>
7954+ </parameters>
7955+ </method>
7956+ <method name="get_strikethrough_position"
7957+ c:identifier="pango_font_metrics_get_strikethrough_position"
7958+ version="1.6">
7959+ <doc xml:space="preserve"
7960+ filename="../pango/fonts.c"
7961+ line="2269">Gets the suggested position to draw the strikethrough.
7962+
7963+The value returned is the distance *above* the
7964+baseline of the top of the strikethrough.</doc>
7965+ <source-position filename="../pango/pango-font.h" line="392"/>
7966+ <return-value transfer-ownership="none">
7967+ <doc xml:space="preserve"
7968+ filename="../pango/fonts.c"
7969+ line="2278">the suggested strikethrough position, in Pango units.</doc>
7970+ <type name="gint" c:type="int"/>
7971+ </return-value>
7972+ <parameters>
7973+ <instance-parameter name="metrics" transfer-ownership="none">
7974+ <doc xml:space="preserve"
7975+ filename="../pango/fonts.c"
7976+ line="2271">a `PangoFontMetrics` structure</doc>
7977+ <type name="FontMetrics" c:type="PangoFontMetrics*"/>
7978+ </instance-parameter>
7979+ </parameters>
7980+ </method>
7981+ <method name="get_strikethrough_thickness"
7982+ c:identifier="pango_font_metrics_get_strikethrough_thickness"
7983+ version="1.6">
7984+ <doc xml:space="preserve"
7985+ filename="../pango/fonts.c"
7986+ line="2290">Gets the suggested thickness to draw for the strikethrough.</doc>
7987+ <source-position filename="../pango/pango-font.h" line="394"/>
7988+ <return-value transfer-ownership="none">
7989+ <doc xml:space="preserve"
7990+ filename="../pango/fonts.c"
7991+ line="2296">the suggested strikethrough thickness, in Pango units.</doc>
7992+ <type name="gint" c:type="int"/>
7993+ </return-value>
7994+ <parameters>
7995+ <instance-parameter name="metrics" transfer-ownership="none">
7996+ <doc xml:space="preserve"
7997+ filename="../pango/fonts.c"
7998+ line="2292">a `PangoFontMetrics` structure</doc>
7999+ <type name="FontMetrics" c:type="PangoFontMetrics*"/>
8000+ </instance-parameter>
8001+ </parameters>
8002+ </method>
8003+ <method name="get_underline_position"
8004+ c:identifier="pango_font_metrics_get_underline_position"
8005+ version="1.6">
8006+ <doc xml:space="preserve"
8007+ filename="../pango/fonts.c"
8008+ line="2229">Gets the suggested position to draw the underline.
8009+
8010+The value returned is the distance *above* the baseline of the top
8011+of the underline. Since most fonts have underline positions beneath
8012+the baseline, this value is typically negative.</doc>
8013+ <source-position filename="../pango/pango-font.h" line="388"/>
8014+ <return-value transfer-ownership="none">
8015+ <doc xml:space="preserve"
8016+ filename="../pango/fonts.c"
8017+ line="2239">the suggested underline position, in Pango units.</doc>
8018+ <type name="gint" c:type="int"/>
8019+ </return-value>
8020+ <parameters>
8021+ <instance-parameter name="metrics" transfer-ownership="none">
8022+ <doc xml:space="preserve"
8023+ filename="../pango/fonts.c"
8024+ line="2231">a `PangoFontMetrics` structure</doc>
8025+ <type name="FontMetrics" c:type="PangoFontMetrics*"/>
8026+ </instance-parameter>
8027+ </parameters>
8028+ </method>
8029+ <method name="get_underline_thickness"
8030+ c:identifier="pango_font_metrics_get_underline_thickness"
8031+ version="1.6">
8032+ <doc xml:space="preserve"
8033+ filename="../pango/fonts.c"
8034+ line="2251">Gets the suggested thickness to draw for the underline.</doc>
8035+ <source-position filename="../pango/pango-font.h" line="390"/>
8036+ <return-value transfer-ownership="none">
8037+ <doc xml:space="preserve"
8038+ filename="../pango/fonts.c"
8039+ line="2257">the suggested underline thickness, in Pango units.</doc>
8040+ <type name="gint" c:type="int"/>
8041+ </return-value>
8042+ <parameters>
8043+ <instance-parameter name="metrics" transfer-ownership="none">
8044+ <doc xml:space="preserve"
8045+ filename="../pango/fonts.c"
8046+ line="2253">a `PangoFontMetrics` structure</doc>
8047+ <type name="FontMetrics" c:type="PangoFontMetrics*"/>
8048+ </instance-parameter>
8049+ </parameters>
8050+ </method>
8051+ <method name="ref" c:identifier="pango_font_metrics_ref">
8052+ <doc xml:space="preserve"
8053+ filename="../pango/fonts.c"
8054+ line="2083">Increase the reference count of a font metrics structure by one.</doc>
8055+ <source-position filename="../pango/pango-font.h" line="374"/>
8056+ <return-value transfer-ownership="full" nullable="1">
8057+ <doc xml:space="preserve"
8058+ filename="../pango/fonts.c"
8059+ line="2089">@metrics</doc>
8060+ <type name="FontMetrics" c:type="PangoFontMetrics*"/>
8061+ </return-value>
8062+ <parameters>
8063+ <instance-parameter name="metrics"
8064+ transfer-ownership="none"
8065+ nullable="1"
8066+ allow-none="1">
8067+ <doc xml:space="preserve"
8068+ filename="../pango/fonts.c"
8069+ line="2085">a `PangoFontMetrics` structure, may be %NULL</doc>
8070+ <type name="FontMetrics" c:type="PangoFontMetrics*"/>
8071+ </instance-parameter>
8072+ </parameters>
8073+ </method>
8074+ <method name="unref" c:identifier="pango_font_metrics_unref">
8075+ <doc xml:space="preserve"
8076+ filename="../pango/fonts.c"
8077+ line="2102">Decrease the reference count of a font metrics structure by one.
8078+
8079+If the result is zero, frees the structure and any associated memory.</doc>
8080+ <source-position filename="../pango/pango-font.h" line="376"/>
8081+ <return-value transfer-ownership="none">
8082+ <type name="none" c:type="void"/>
8083+ </return-value>
8084+ <parameters>
8085+ <instance-parameter name="metrics"
8086+ transfer-ownership="none"
8087+ nullable="1"
8088+ allow-none="1">
8089+ <doc xml:space="preserve"
8090+ filename="../pango/fonts.c"
8091+ line="2104">a `PangoFontMetrics` structure, may be %NULL</doc>
8092+ <type name="FontMetrics" c:type="PangoFontMetrics*"/>
8093+ </instance-parameter>
8094+ </parameters>
8095+ </method>
8096+ </record>
8097+ <enumeration name="FontScale"
8098+ version="1.50"
8099+ glib:type-name="PangoFontScale"
8100+ glib:get-type="pango_font_scale_get_type"
8101+ c:type="PangoFontScale">
8102+ <doc xml:space="preserve"
8103+ filename="../pango/pango-attributes.h"
8104+ line="251">An enumeration that affects font sizes for superscript
8105+and subscript positioning and for (emulated) Small Caps.</doc>
8106+ <member name="none"
8107+ value="0"
8108+ c:identifier="PANGO_FONT_SCALE_NONE"
8109+ glib:nick="none"
8110+ glib:name="PANGO_FONT_SCALE_NONE">
8111+ <doc xml:space="preserve"
8112+ filename="../pango/pango-attributes.h"
8113+ line="253">Leave the font size unchanged</doc>
8114+ </member>
8115+ <member name="superscript"
8116+ value="1"
8117+ c:identifier="PANGO_FONT_SCALE_SUPERSCRIPT"
8118+ glib:nick="superscript"
8119+ glib:name="PANGO_FONT_SCALE_SUPERSCRIPT">
8120+ <doc xml:space="preserve"
8121+ filename="../pango/pango-attributes.h"
8122+ line="254">Change the font to a size suitable for superscripts</doc>
8123+ </member>
8124+ <member name="subscript"
8125+ value="2"
8126+ c:identifier="PANGO_FONT_SCALE_SUBSCRIPT"
8127+ glib:nick="subscript"
8128+ glib:name="PANGO_FONT_SCALE_SUBSCRIPT">
8129+ <doc xml:space="preserve"
8130+ filename="../pango/pango-attributes.h"
8131+ line="255">Change the font to a size suitable for subscripts</doc>
8132+ </member>
8133+ <member name="small_caps"
8134+ value="3"
8135+ c:identifier="PANGO_FONT_SCALE_SMALL_CAPS"
8136+ glib:nick="small-caps"
8137+ glib:name="PANGO_FONT_SCALE_SMALL_CAPS">
8138+ <doc xml:space="preserve"
8139+ filename="../pango/pango-attributes.h"
8140+ line="256">Change the font to a size suitable for Small Caps</doc>
8141+ </member>
8142+ </enumeration>
8143+ <class name="Fontset"
8144+ c:symbol-prefix="fontset"
8145+ c:type="PangoFontset"
8146+ parent="GObject.Object"
8147+ abstract="1"
8148+ glib:type-name="PangoFontset"
8149+ glib:get-type="pango_fontset_get_type"
8150+ glib:type-struct="FontsetClass">
8151+ <doc xml:space="preserve"
8152+ filename="../pango/pango-fontset.h"
8153+ line="67">A `PangoFontset` represents a set of `PangoFont` to use when rendering text.
8154+
8155+A `PAngoFontset` is the result of resolving a `PangoFontDescription`
8156+against a particular `PangoContext`. It has operations for finding the
8157+component font for a particular Unicode character, and for finding a
8158+composite set of metrics for the entire fontset.</doc>
8159+ <source-position filename="../pango/pango-fontset.h" line="118"/>
8160+ <virtual-method name="foreach" invoker="foreach" version="1.4">
8161+ <doc xml:space="preserve"
8162+ filename="../pango/pango-fontset.c"
8163+ line="86">Iterates through all the fonts in a fontset, calling @func for
8164+each one.
8165+
8166+If @func returns %TRUE, that stops the iteration.</doc>
8167+ <source-position filename="../pango/pango-fontset.h" line="107"/>
8168+ <return-value transfer-ownership="none">
8169+ <type name="none" c:type="void"/>
8170+ </return-value>
8171+ <parameters>
8172+ <instance-parameter name="fontset" transfer-ownership="none">
8173+ <doc xml:space="preserve"
8174+ filename="../pango/pango-fontset.c"
8175+ line="88">a `PangoFontset`</doc>
8176+ <type name="Fontset" c:type="PangoFontset*"/>
8177+ </instance-parameter>
8178+ <parameter name="func"
8179+ transfer-ownership="none"
8180+ scope="call"
8181+ closure="1">
8182+ <doc xml:space="preserve"
8183+ filename="../pango/pango-fontset.c"
8184+ line="89">Callback function</doc>
8185+ <type name="FontsetForeachFunc" c:type="PangoFontsetForeachFunc"/>
8186+ </parameter>
8187+ <parameter name="data"
8188+ transfer-ownership="none"
8189+ nullable="1"
8190+ allow-none="1">
8191+ <doc xml:space="preserve"
8192+ filename="../pango/pango-fontset.c"
8193+ line="90">data to pass to the callback function</doc>
8194+ <type name="gpointer" c:type="gpointer"/>
8195+ </parameter>
8196+ </parameters>
8197+ </virtual-method>
8198+ <virtual-method name="get_font" invoker="get_font">
8199+ <doc xml:space="preserve"
8200+ filename="../pango/pango-fontset.c"
8201+ line="50">Returns the font in the fontset that contains the best glyph for a
8202+Unicode character.</doc>
8203+ <source-position filename="../pango/pango-fontset.h" line="102"/>
8204+ <return-value transfer-ownership="full">
8205+ <doc xml:space="preserve"
8206+ filename="../pango/pango-fontset.c"
8207+ line="58">a `PangoFont`</doc>
8208+ <type name="Font" c:type="PangoFont*"/>
8209+ </return-value>
8210+ <parameters>
8211+ <instance-parameter name="fontset" transfer-ownership="none">
8212+ <doc xml:space="preserve"
8213+ filename="../pango/pango-fontset.c"
8214+ line="52">a `PangoFontset`</doc>
8215+ <type name="Fontset" c:type="PangoFontset*"/>
8216+ </instance-parameter>
8217+ <parameter name="wc" transfer-ownership="none">
8218+ <doc xml:space="preserve"
8219+ filename="../pango/pango-fontset.c"
8220+ line="53">a Unicode character</doc>
8221+ <type name="guint" c:type="guint"/>
8222+ </parameter>
8223+ </parameters>
8224+ </virtual-method>
8225+ <virtual-method name="get_language">
8226+ <source-position filename="../pango/pango-fontset.h" line="106"/>
8227+ <return-value transfer-ownership="full">
8228+ <type name="Language" c:type="PangoLanguage*"/>
8229+ </return-value>
8230+ <parameters>
8231+ <instance-parameter name="fontset" transfer-ownership="none">
8232+ <type name="Fontset" c:type="PangoFontset*"/>
8233+ </instance-parameter>
8234+ </parameters>
8235+ </virtual-method>
8236+ <virtual-method name="get_metrics" invoker="get_metrics">
8237+ <doc xml:space="preserve"
8238+ filename="../pango/pango-fontset.c"
8239+ line="70">Get overall metric information for the fonts in the fontset.</doc>
8240+ <source-position filename="../pango/pango-fontset.h" line="105"/>
8241+ <return-value transfer-ownership="full">
8242+ <doc xml:space="preserve"
8243+ filename="../pango/pango-fontset.c"
8244+ line="76">a `PangoFontMetrics` object</doc>
8245+ <type name="FontMetrics" c:type="PangoFontMetrics*"/>
8246+ </return-value>
8247+ <parameters>
8248+ <instance-parameter name="fontset" transfer-ownership="none">
8249+ <doc xml:space="preserve"
8250+ filename="../pango/pango-fontset.c"
8251+ line="72">a `PangoFontset`</doc>
8252+ <type name="Fontset" c:type="PangoFontset*"/>
8253+ </instance-parameter>
8254+ </parameters>
8255+ </virtual-method>
8256+ <method name="foreach"
8257+ c:identifier="pango_fontset_foreach"
8258+ version="1.4">
8259+ <doc xml:space="preserve"
8260+ filename="../pango/pango-fontset.c"
8261+ line="86">Iterates through all the fonts in a fontset, calling @func for
8262+each one.
8263+
8264+If @func returns %TRUE, that stops the iteration.</doc>
8265+ <source-position filename="../pango/pango-fontset.h" line="155"/>
8266+ <return-value transfer-ownership="none">
8267+ <type name="none" c:type="void"/>
8268+ </return-value>
8269+ <parameters>
8270+ <instance-parameter name="fontset" transfer-ownership="none">
8271+ <doc xml:space="preserve"
8272+ filename="../pango/pango-fontset.c"
8273+ line="88">a `PangoFontset`</doc>
8274+ <type name="Fontset" c:type="PangoFontset*"/>
8275+ </instance-parameter>
8276+ <parameter name="func"
8277+ transfer-ownership="none"
8278+ scope="call"
8279+ closure="1">
8280+ <doc xml:space="preserve"
8281+ filename="../pango/pango-fontset.c"
8282+ line="89">Callback function</doc>
8283+ <type name="FontsetForeachFunc" c:type="PangoFontsetForeachFunc"/>
8284+ </parameter>
8285+ <parameter name="data"
8286+ transfer-ownership="none"
8287+ nullable="1"
8288+ allow-none="1">
8289+ <doc xml:space="preserve"
8290+ filename="../pango/pango-fontset.c"
8291+ line="90">data to pass to the callback function</doc>
8292+ <type name="gpointer" c:type="gpointer"/>
8293+ </parameter>
8294+ </parameters>
8295+ </method>
8296+ <method name="get_font" c:identifier="pango_fontset_get_font">
8297+ <doc xml:space="preserve"
8298+ filename="../pango/pango-fontset.c"
8299+ line="50">Returns the font in the fontset that contains the best glyph for a
8300+Unicode character.</doc>
8301+ <source-position filename="../pango/pango-fontset.h" line="150"/>
8302+ <return-value transfer-ownership="full">
8303+ <doc xml:space="preserve"
8304+ filename="../pango/pango-fontset.c"
8305+ line="58">a `PangoFont`</doc>
8306+ <type name="Font" c:type="PangoFont*"/>
8307+ </return-value>
8308+ <parameters>
8309+ <instance-parameter name="fontset" transfer-ownership="none">
8310+ <doc xml:space="preserve"
8311+ filename="../pango/pango-fontset.c"
8312+ line="52">a `PangoFontset`</doc>
8313+ <type name="Fontset" c:type="PangoFontset*"/>
8314+ </instance-parameter>
8315+ <parameter name="wc" transfer-ownership="none">
8316+ <doc xml:space="preserve"
8317+ filename="../pango/pango-fontset.c"
8318+ line="53">a Unicode character</doc>
8319+ <type name="guint" c:type="guint"/>
8320+ </parameter>
8321+ </parameters>
8322+ </method>
8323+ <method name="get_metrics" c:identifier="pango_fontset_get_metrics">
8324+ <doc xml:space="preserve"
8325+ filename="../pango/pango-fontset.c"
8326+ line="70">Get overall metric information for the fonts in the fontset.</doc>
8327+ <source-position filename="../pango/pango-fontset.h" line="153"/>
8328+ <return-value transfer-ownership="full">
8329+ <doc xml:space="preserve"
8330+ filename="../pango/pango-fontset.c"
8331+ line="76">a `PangoFontMetrics` object</doc>
8332+ <type name="FontMetrics" c:type="PangoFontMetrics*"/>
8333+ </return-value>
8334+ <parameters>
8335+ <instance-parameter name="fontset" transfer-ownership="none">
8336+ <doc xml:space="preserve"
8337+ filename="../pango/pango-fontset.c"
8338+ line="72">a `PangoFontset`</doc>
8339+ <type name="Fontset" c:type="PangoFontset*"/>
8340+ </instance-parameter>
8341+ </parameters>
8342+ </method>
8343+ <field name="parent_instance">
8344+ <type name="GObject.Object" c:type="GObject"/>
8345+ </field>
8346+ </class>
8347+ <record name="FontsetClass"
8348+ c:type="PangoFontsetClass"
8349+ glib:is-gtype-struct-for="Fontset">
8350+ <doc xml:space="preserve"
8351+ filename="../pango/pango-fontset.h"
8352+ line="82">The `PangoFontsetClass` structure holds the virtual functions for
8353+a particular `PangoFontset` implementation.</doc>
8354+ <source-position filename="../pango/pango-fontset.h" line="118"/>
8355+ <field name="parent_class">
8356+ <doc xml:space="preserve"
8357+ filename="../pango/pango-fontset.h"
8358+ line="84">parent `GObjectClass`</doc>
8359+ <type name="GObject.ObjectClass" c:type="GObjectClass"/>
8360+ </field>
8361+ <field name="get_font">
8362+ <callback name="get_font">
8363+ <source-position filename="../pango/pango-fontset.h" line="102"/>
8364+ <return-value transfer-ownership="full">
8365+ <doc xml:space="preserve"
8366+ filename="../pango/pango-fontset.c"
8367+ line="58">a `PangoFont`</doc>
8368+ <type name="Font" c:type="PangoFont*"/>
8369+ </return-value>
8370+ <parameters>
8371+ <parameter name="fontset" transfer-ownership="none">
8372+ <doc xml:space="preserve"
8373+ filename="../pango/pango-fontset.c"
8374+ line="52">a `PangoFontset`</doc>
8375+ <type name="Fontset" c:type="PangoFontset*"/>
8376+ </parameter>
8377+ <parameter name="wc" transfer-ownership="none">
8378+ <doc xml:space="preserve"
8379+ filename="../pango/pango-fontset.c"
8380+ line="53">a Unicode character</doc>
8381+ <type name="guint" c:type="guint"/>
8382+ </parameter>
8383+ </parameters>
8384+ </callback>
8385+ </field>
8386+ <field name="get_metrics">
8387+ <callback name="get_metrics">
8388+ <source-position filename="../pango/pango-fontset.h" line="105"/>
8389+ <return-value transfer-ownership="full">
8390+ <doc xml:space="preserve"
8391+ filename="../pango/pango-fontset.c"
8392+ line="76">a `PangoFontMetrics` object</doc>
8393+ <type name="FontMetrics" c:type="PangoFontMetrics*"/>
8394+ </return-value>
8395+ <parameters>
8396+ <parameter name="fontset" transfer-ownership="none">
8397+ <doc xml:space="preserve"
8398+ filename="../pango/pango-fontset.c"
8399+ line="72">a `PangoFontset`</doc>
8400+ <type name="Fontset" c:type="PangoFontset*"/>
8401+ </parameter>
8402+ </parameters>
8403+ </callback>
8404+ </field>
8405+ <field name="get_language">
8406+ <callback name="get_language">
8407+ <source-position filename="../pango/pango-fontset.h" line="106"/>
8408+ <return-value transfer-ownership="full">
8409+ <type name="Language" c:type="PangoLanguage*"/>
8410+ </return-value>
8411+ <parameters>
8412+ <parameter name="fontset" transfer-ownership="none">
8413+ <type name="Fontset" c:type="PangoFontset*"/>
8414+ </parameter>
8415+ </parameters>
8416+ </callback>
8417+ </field>
8418+ <field name="foreach">
8419+ <callback name="foreach">
8420+ <source-position filename="../pango/pango-fontset.h" line="107"/>
8421+ <return-value transfer-ownership="none">
8422+ <type name="none" c:type="void"/>
8423+ </return-value>
8424+ <parameters>
8425+ <parameter name="fontset" transfer-ownership="none">
8426+ <doc xml:space="preserve"
8427+ filename="../pango/pango-fontset.c"
8428+ line="88">a `PangoFontset`</doc>
8429+ <type name="Fontset" c:type="PangoFontset*"/>
8430+ </parameter>
8431+ <parameter name="func"
8432+ transfer-ownership="none"
8433+ scope="call"
8434+ closure="2">
8435+ <doc xml:space="preserve"
8436+ filename="../pango/pango-fontset.c"
8437+ line="89">Callback function</doc>
8438+ <type name="FontsetForeachFunc"
8439+ c:type="PangoFontsetForeachFunc"/>
8440+ </parameter>
8441+ <parameter name="data"
8442+ transfer-ownership="none"
8443+ nullable="1"
8444+ allow-none="1">
8445+ <doc xml:space="preserve"
8446+ filename="../pango/pango-fontset.c"
8447+ line="90">data to pass to the callback function</doc>
8448+ <type name="gpointer" c:type="gpointer"/>
8449+ </parameter>
8450+ </parameters>
8451+ </callback>
8452+ </field>
8453+ <field name="_pango_reserved1" introspectable="0">
8454+ <callback name="_pango_reserved1">
8455+ <source-position filename="../pango/pango-fontset.h" line="114"/>
8456+ <return-value transfer-ownership="none">
8457+ <type name="none" c:type="void"/>
8458+ </return-value>
8459+ </callback>
8460+ </field>
8461+ <field name="_pango_reserved2" introspectable="0">
8462+ <callback name="_pango_reserved2">
8463+ <source-position filename="../pango/pango-fontset.h" line="115"/>
8464+ <return-value transfer-ownership="none">
8465+ <type name="none" c:type="void"/>
8466+ </return-value>
8467+ </callback>
8468+ </field>
8469+ <field name="_pango_reserved3" introspectable="0">
8470+ <callback name="_pango_reserved3">
8471+ <source-position filename="../pango/pango-fontset.h" line="116"/>
8472+ <return-value transfer-ownership="none">
8473+ <type name="none" c:type="void"/>
8474+ </return-value>
8475+ </callback>
8476+ </field>
8477+ <field name="_pango_reserved4" introspectable="0">
8478+ <callback name="_pango_reserved4">
8479+ <source-position filename="../pango/pango-fontset.h" line="117"/>
8480+ <return-value transfer-ownership="none">
8481+ <type name="none" c:type="void"/>
8482+ </return-value>
8483+ </callback>
8484+ </field>
8485+ </record>
8486+ <callback name="FontsetForeachFunc"
8487+ c:type="PangoFontsetForeachFunc"
8488+ version="1.4">
8489+ <doc xml:space="preserve"
8490+ filename="../pango/pango-fontset.h"
8491+ line="50">Callback used by pango_fontset_foreach() when enumerating
8492+fonts in a fontset.</doc>
8493+ <source-position filename="../pango/pango-fontset.h" line="63"/>
8494+ <return-value transfer-ownership="none">
8495+ <doc xml:space="preserve"
8496+ filename="../pango/pango-fontset.h"
8497+ line="59">if %TRUE, stop iteration and return immediately.</doc>
8498+ <type name="gboolean" c:type="gboolean"/>
8499+ </return-value>
8500+ <parameters>
8501+ <parameter name="fontset" transfer-ownership="none">
8502+ <doc xml:space="preserve"
8503+ filename="../pango/pango-fontset.h"
8504+ line="52">a `PangoFontset`</doc>
8505+ <type name="Fontset" c:type="PangoFontset*"/>
8506+ </parameter>
8507+ <parameter name="font" transfer-ownership="none">
8508+ <doc xml:space="preserve"
8509+ filename="../pango/pango-fontset.h"
8510+ line="53">a font from @fontset</doc>
8511+ <type name="Font" c:type="PangoFont*"/>
8512+ </parameter>
8513+ <parameter name="user_data"
8514+ transfer-ownership="none"
8515+ nullable="1"
8516+ allow-none="1"
8517+ closure="2">
8518+ <doc xml:space="preserve"
8519+ filename="../pango/pango-fontset.h"
8520+ line="54">callback data</doc>
8521+ <type name="gpointer" c:type="gpointer"/>
8522+ </parameter>
8523+ </parameters>
8524+ </callback>
8525+ <class name="FontsetSimple"
8526+ c:symbol-prefix="fontset_simple"
8527+ c:type="PangoFontsetSimple"
8528+ parent="Fontset"
8529+ glib:type-name="PangoFontsetSimple"
8530+ glib:get-type="pango_fontset_simple_get_type"
8531+ glib:type-struct="FontsetSimpleClass">
8532+ <doc xml:space="preserve"
8533+ filename="../pango/pango-fontset.h"
8534+ line="120">`PangoFontsetSimple` is a implementation of the abstract
8535+`PangoFontset` base class as an array of fonts.
8536+
8537+When creating a `PangoFontsetSimple`, you have to provide
8538+the array of fonts that make up the fontset.</doc>
8539+ <source-position filename="../pango/pango-fontset.h" line="134"/>
8540+ <constructor name="new" c:identifier="pango_fontset_simple_new">
8541+ <doc xml:space="preserve"
8542+ filename="../pango/pango-fontset.c"
8543+ line="233">Creates a new `PangoFontsetSimple` for the given language.</doc>
8544+ <source-position filename="../pango/pango-fontset.h" line="141"/>
8545+ <return-value transfer-ownership="full">
8546+ <doc xml:space="preserve"
8547+ filename="../pango/pango-fontset.c"
8548+ line="239">the newly allocated `PangoFontsetSimple`</doc>
8549+ <type name="FontsetSimple" c:type="PangoFontsetSimple*"/>
8550+ </return-value>
8551+ <parameters>
8552+ <parameter name="language" transfer-ownership="none">
8553+ <doc xml:space="preserve"
8554+ filename="../pango/pango-fontset.c"
8555+ line="235">a `PangoLanguage` tag</doc>
8556+ <type name="Language" c:type="PangoLanguage*"/>
8557+ </parameter>
8558+ </parameters>
8559+ </constructor>
8560+ <method name="append" c:identifier="pango_fontset_simple_append">
8561+ <doc xml:space="preserve"
8562+ filename="../pango/pango-fontset.c"
8563+ line="301">Adds a font to the fontset.
8564+
8565+The fontset takes ownership of @font.</doc>
8566+ <source-position filename="../pango/pango-fontset.h" line="143"/>
8567+ <return-value transfer-ownership="none">
8568+ <type name="none" c:type="void"/>
8569+ </return-value>
8570+ <parameters>
8571+ <instance-parameter name="fontset" transfer-ownership="none">
8572+ <doc xml:space="preserve"
8573+ filename="../pango/pango-fontset.c"
8574+ line="303">a `PangoFontsetSimple`.</doc>
8575+ <type name="FontsetSimple" c:type="PangoFontsetSimple*"/>
8576+ </instance-parameter>
8577+ <parameter name="font" transfer-ownership="full">
8578+ <doc xml:space="preserve"
8579+ filename="../pango/pango-fontset.c"
8580+ line="304">a `PangoFont`.</doc>
8581+ <type name="Font" c:type="PangoFont*"/>
8582+ </parameter>
8583+ </parameters>
8584+ </method>
8585+ <method name="size" c:identifier="pango_fontset_simple_size">
8586+ <doc xml:space="preserve"
8587+ filename="../pango/pango-fontset.c"
8588+ line="318">Returns the number of fonts in the fontset.</doc>
8589+ <source-position filename="../pango/pango-fontset.h" line="146"/>
8590+ <return-value transfer-ownership="none">
8591+ <doc xml:space="preserve"
8592+ filename="../pango/pango-fontset.c"
8593+ line="324">the size of @fontset</doc>
8594+ <type name="gint" c:type="int"/>
8595+ </return-value>
8596+ <parameters>
8597+ <instance-parameter name="fontset" transfer-ownership="none">
8598+ <doc xml:space="preserve"
8599+ filename="../pango/pango-fontset.c"
8600+ line="320">a `PangoFontsetSimple`.</doc>
8601+ <type name="FontsetSimple" c:type="PangoFontsetSimple*"/>
8602+ </instance-parameter>
8603+ </parameters>
8604+ </method>
8605+ </class>
8606+ <record name="FontsetSimpleClass"
8607+ c:type="PangoFontsetSimpleClass"
8608+ disguised="1"
8609+ glib:is-gtype-struct-for="FontsetSimple">
8610+ <source-position filename="../pango/pango-fontset.h" line="134"/>
8611+ </record>
8612+ <function-macro name="GET_UNKNOWN_GLYPH"
8613+ c:identifier="PANGO_GET_UNKNOWN_GLYPH"
8614+ introspectable="0">
8615+ <doc xml:space="preserve"
8616+ filename="../pango/pango-font.h"
8617+ line="673">The way this unknown glyphs are rendered is backend specific. For example,
8618+a box with the hexadecimal Unicode code-point of the character written in it
8619+is what is done in the most common backends.</doc>
8620+ <source-position filename="../pango/pango-font.h" line="686"/>
8621+ <parameters>
8622+ <parameter name="wc">
8623+ <doc xml:space="preserve"
8624+ filename="../pango/pango-font.h"
8625+ line="675">a Unicode character</doc>
8626+ </parameter>
8627+ </parameters>
8628+ </function-macro>
8629+ <constant name="GLYPH_EMPTY" value="268435455" c:type="PANGO_GLYPH_EMPTY">
8630+ <doc xml:space="preserve"
8631+ filename="../pango/pango-font.h"
8632+ line="643">A `PangoGlyph` value that indicates a zero-width empty glpyh.
8633+
8634+This is useful for example in shaper modules, to use as the glyph for
8635+various zero-width Unicode characters (those passing [func@is_zero_width]).</doc>
8636+ <source-position filename="../pango/pango-font.h" line="683"/>
8637+ <type name="Glyph" c:type="PangoGlyph"/>
8638+ </constant>
8639+ <constant name="GLYPH_INVALID_INPUT"
8640+ value="4294967295"
8641+ c:type="PANGO_GLYPH_INVALID_INPUT"
8642+ version="1.20">
8643+ <doc xml:space="preserve"
8644+ filename="../pango/pango-font.h"
8645+ line="652">A `PangoGlyph` value for invalid input.
8646+
8647+`PangoLayout` produces one such glyph per invalid input UTF-8 byte and such
8648+a glyph is rendered as a crossed box.
8649+
8650+Note that this value is defined such that it has the %PANGO_GLYPH_UNKNOWN_FLAG
8651+set.</doc>
8652+ <source-position filename="../pango/pango-font.h" line="684"/>
8653+ <type name="Glyph" c:type="PangoGlyph"/>
8654+ </constant>
8655+ <constant name="GLYPH_UNKNOWN_FLAG"
8656+ value="268435456"
8657+ c:type="PANGO_GLYPH_UNKNOWN_FLAG">
8658+ <doc xml:space="preserve"
8659+ filename="../pango/pango-font.h"
8660+ line="665">Flag used in `PangoGlyph` to turn a `gunichar` value of a valid Unicode
8661+character into an unknown-character glyph for that `gunichar`.
8662+
8663+Such unknown-character glyphs may be rendered as a 'hex box'.</doc>
8664+ <source-position filename="../pango/pango-font.h" line="685"/>
8665+ <type name="Glyph" c:type="PangoGlyph"/>
8666+ </constant>
8667+ <function-macro name="GRAVITY_IS_IMPROPER"
8668+ c:identifier="PANGO_GRAVITY_IS_IMPROPER"
8669+ version="1.32"
8670+ introspectable="0">
8671+ <doc xml:space="preserve"
8672+ filename="../pango/pango-gravity.h"
8673+ line="101">Whether a `PangoGravity` represents a gravity that results in reversal
8674+of text direction.</doc>
8675+ <source-position filename="../pango/pango-gravity.h" line="113"/>
8676+ <parameters>
8677+ <parameter name="gravity">
8678+ <doc xml:space="preserve"
8679+ filename="../pango/pango-gravity.h"
8680+ line="103">the `PangoGravity` to check</doc>
8681+ </parameter>
8682+ </parameters>
8683+ </function-macro>
8684+ <function-macro name="GRAVITY_IS_VERTICAL"
8685+ c:identifier="PANGO_GRAVITY_IS_VERTICAL"
8686+ version="1.16"
8687+ introspectable="0">
8688+ <doc xml:space="preserve"
8689+ filename="../pango/pango-gravity.h"
8690+ line="87">Whether a `PangoGravity` represents vertical writing directions.</doc>
8691+ <source-position filename="../pango/pango-gravity.h" line="98"/>
8692+ <parameters>
8693+ <parameter name="gravity">
8694+ <doc xml:space="preserve"
8695+ filename="../pango/pango-gravity.h"
8696+ line="89">the `PangoGravity` to check</doc>
8697+ </parameter>
8698+ </parameters>
8699+ </function-macro>
8700+ <record name="GlyphGeometry" c:type="PangoGlyphGeometry">
8701+ <doc xml:space="preserve"
8702+ filename="../pango/pango-glyph.h"
8703+ line="56">The `PangoGlyphGeometry` structure contains width and positioning
8704+information for a single glyph.
8705+
8706+Note that @width is not guaranteed to be the same as the glyph
8707+extents. Kerning and other positioning applied during shaping will
8708+affect both the @width and the @x_offset for the glyphs in the
8709+glyph string that results from shaping.
8710+
8711+The information in this struct is intended for rendering the glyphs,
8712+as follows:
8713+
8714+1. Assume the current point is (x, y)
8715+2. Render the current glyph at (x + x_offset, y + y_offset),
8716+3. Advance the current point to (x + width, y)
8717+4. Render the next glyph</doc>
8718+ <source-position filename="../pango/pango-glyph.h" line="83"/>
8719+ <field name="width" writable="1">
8720+ <doc xml:space="preserve"
8721+ filename="../pango/pango-glyph.h"
8722+ line="58">the logical width to use for the the character.</doc>
8723+ <type name="GlyphUnit" c:type="PangoGlyphUnit"/>
8724+ </field>
8725+ <field name="x_offset" writable="1">
8726+ <doc xml:space="preserve"
8727+ filename="../pango/pango-glyph.h"
8728+ line="59">horizontal offset from nominal character position.</doc>
8729+ <type name="GlyphUnit" c:type="PangoGlyphUnit"/>
8730+ </field>
8731+ <field name="y_offset" writable="1">
8732+ <doc xml:space="preserve"
8733+ filename="../pango/pango-glyph.h"
8734+ line="60">vertical offset from nominal character position.</doc>
8735+ <type name="GlyphUnit" c:type="PangoGlyphUnit"/>
8736+ </field>
8737+ </record>
8738+ <record name="GlyphInfo" c:type="PangoGlyphInfo">
8739+ <doc xml:space="preserve"
8740+ filename="../pango/pango-glyph.h"
8741+ line="111">A `PangoGlyphInfo` structure represents a single glyph with
8742+positioning information and visual attributes.</doc>
8743+ <source-position filename="../pango/pango-glyph.h" line="125"/>
8744+ <field name="glyph" writable="1">
8745+ <doc xml:space="preserve"
8746+ filename="../pango/pango-glyph.h"
8747+ line="113">the glyph itself.</doc>
8748+ <type name="Glyph" c:type="PangoGlyph"/>
8749+ </field>
8750+ <field name="geometry" writable="1">
8751+ <doc xml:space="preserve"
8752+ filename="../pango/pango-glyph.h"
8753+ line="114">the positional information about the glyph.</doc>
8754+ <type name="GlyphGeometry" c:type="PangoGlyphGeometry"/>
8755+ </field>
8756+ <field name="attr" writable="1">
8757+ <doc xml:space="preserve"
8758+ filename="../pango/pango-glyph.h"
8759+ line="115">the visual attributes of the glyph.</doc>
8760+ <type name="GlyphVisAttr" c:type="PangoGlyphVisAttr"/>
8761+ </field>
8762+ </record>
8763+ <record name="GlyphItem"
8764+ c:type="PangoGlyphItem"
8765+ glib:type-name="PangoGlyphItem"
8766+ glib:get-type="pango_glyph_item_get_type"
8767+ c:symbol-prefix="glyph_item">
8768+ <doc xml:space="preserve"
8769+ filename="../pango/pango-glyph-item.h"
8770+ line="32">A `PangoGlyphItem` is a pair of a `PangoItem` and the glyphs
8771+resulting from shaping the items text.
8772+
8773+As an example of the usage of `PangoGlyphItem`, the results
8774+of shaping text with `PangoLayout` is a list of `PangoLayoutLine`,
8775+each of which contains a list of `PangoGlyphItem`.</doc>
8776+ <source-position filename="../pango/pango-glyph-item.h" line="59"/>
8777+ <field name="item" writable="1">
8778+ <doc xml:space="preserve"
8779+ filename="../pango/pango-glyph-item.h"
8780+ line="34">corresponding `PangoItem`</doc>
8781+ <type name="Item" c:type="PangoItem*"/>
8782+ </field>
8783+ <field name="glyphs" writable="1">
8784+ <doc xml:space="preserve"
8785+ filename="../pango/pango-glyph-item.h"
8786+ line="35">corresponding `PangoGlyphString`</doc>
8787+ <type name="GlyphString" c:type="PangoGlyphString*"/>
8788+ </field>
8789+ <field name="y_offset" writable="1">
8790+ <doc xml:space="preserve"
8791+ filename="../pango/pango-glyph-item.h"
8792+ line="36">shift of the baseline, relative to the baseline
8793+ of the containing line. Positive values shift upwards</doc>
8794+ <type name="gint" c:type="int"/>
8795+ </field>
8796+ <field name="start_x_offset" writable="1">
8797+ <doc xml:space="preserve"
8798+ filename="../pango/pango-glyph-item.h"
8799+ line="38">horizontal displacement to apply before the
8800+ glyph item. Positive values shift right</doc>
8801+ <type name="gint" c:type="int"/>
8802+ </field>
8803+ <field name="end_x_offset" writable="1">
8804+ <doc xml:space="preserve"
8805+ filename="../pango/pango-glyph-item.h"
8806+ line="40">horizontal displacement to apply after th
8807+ glyph item. Positive values shift right</doc>
8808+ <type name="gint" c:type="int"/>
8809+ </field>
8810+ <method name="apply_attrs"
8811+ c:identifier="pango_glyph_item_apply_attrs"
8812+ version="1.2">
8813+ <doc xml:space="preserve"
8814+ filename="../pango/pango-glyph-item.c"
8815+ line="561">Splits a shaped item (`PangoGlyphItem`) into multiple items based
8816+on an attribute list.
8817+
8818+The idea is that if you have attributes that don't affect shaping,
8819+such as color or underline, to avoid affecting shaping, you filter
8820+them out ([method@Pango.AttrList.filter]), apply the shaping process
8821+and then reapply them to the result using this function.
8822+
8823+All attributes that start or end inside a cluster are applied
8824+to that cluster; for instance, if half of a cluster is underlined
8825+and the other-half strikethrough, then the cluster will end
8826+up with both underline and strikethrough attributes. In these
8827+cases, it may happen that @item-&gt;extra_attrs for some of the
8828+result items can have multiple attributes of the same type.
8829+
8830+This function takes ownership of @glyph_item; it will be reused
8831+as one of the elements in the list.</doc>
8832+ <source-position filename="../pango/pango-glyph-item.h" line="75"/>
8833+ <return-value transfer-ownership="full">
8834+ <doc xml:space="preserve"
8835+ filename="../pango/pango-glyph-item.c"
8836+ line="585">a
8837+ list of glyph items resulting from splitting @glyph_item. Free
8838+ the elements using [method@Pango.GlyphItem.free], the list using
8839+ g_slist_free().</doc>
8840+ <type name="GLib.SList" c:type="GSList*">
8841+ <type name="GlyphItem"/>
8842+ </type>
8843+ </return-value>
8844+ <parameters>
8845+ <instance-parameter name="glyph_item" transfer-ownership="none">
8846+ <doc xml:space="preserve"
8847+ filename="../pango/pango-glyph-item.c"
8848+ line="563">a shaped item</doc>
8849+ <type name="GlyphItem" c:type="PangoGlyphItem*"/>
8850+ </instance-parameter>
8851+ <parameter name="text" transfer-ownership="none">
8852+ <doc xml:space="preserve"
8853+ filename="../pango/pango-glyph-item.c"
8854+ line="564">text that @list applies to</doc>
8855+ <type name="utf8" c:type="const char*"/>
8856+ </parameter>
8857+ <parameter name="list" transfer-ownership="none">
8858+ <doc xml:space="preserve"
8859+ filename="../pango/pango-glyph-item.c"
8860+ line="565">a `PangoAttrList`</doc>
8861+ <type name="AttrList" c:type="PangoAttrList*"/>
8862+ </parameter>
8863+ </parameters>
8864+ </method>
8865+ <method name="copy" c:identifier="pango_glyph_item_copy" version="1.20">
8866+ <doc xml:space="preserve"
8867+ filename="../pango/pango-glyph-item.c"
8868+ line="139">Make a deep copy of an existing `PangoGlyphItem` structure.</doc>
8869+ <source-position filename="../pango/pango-glyph-item.h" line="71"/>
8870+ <return-value transfer-ownership="full" nullable="1">
8871+ <doc xml:space="preserve"
8872+ filename="../pango/pango-glyph-item.c"
8873+ line="145">the newly allocated `PangoGlyphItem`</doc>
8874+ <type name="GlyphItem" c:type="PangoGlyphItem*"/>
8875+ </return-value>
8876+ <parameters>
8877+ <instance-parameter name="orig"
8878+ transfer-ownership="none"
8879+ nullable="1"
8880+ allow-none="1">
8881+ <doc xml:space="preserve"
8882+ filename="../pango/pango-glyph-item.c"
8883+ line="141">a `PangoGlyphItem`</doc>
8884+ <type name="GlyphItem" c:type="PangoGlyphItem*"/>
8885+ </instance-parameter>
8886+ </parameters>
8887+ </method>
8888+ <method name="free" c:identifier="pango_glyph_item_free" version="1.6">
8889+ <doc xml:space="preserve"
8890+ filename="../pango/pango-glyph-item.c"
8891+ line="168">Frees a `PangoGlyphItem` and resources to which it points.</doc>
8892+ <source-position filename="../pango/pango-glyph-item.h" line="73"/>
8893+ <return-value transfer-ownership="none">
8894+ <type name="none" c:type="void"/>
8895+ </return-value>
8896+ <parameters>
8897+ <instance-parameter name="glyph_item"
8898+ transfer-ownership="none"
8899+ nullable="1"
8900+ allow-none="1">
8901+ <doc xml:space="preserve"
8902+ filename="../pango/pango-glyph-item.c"
8903+ line="170">a `PangoGlyphItem`</doc>
8904+ <type name="GlyphItem" c:type="PangoGlyphItem*"/>
8905+ </instance-parameter>
8906+ </parameters>
8907+ </method>
8908+ <method name="get_logical_widths"
8909+ c:identifier="pango_glyph_item_get_logical_widths"
8910+ version="1.26">
8911+ <doc xml:space="preserve"
8912+ filename="../pango/pango-glyph-item.c"
8913+ line="803">Given a `PangoGlyphItem` and the corresponding text, determine the
8914+width corresponding to each character.
8915+
8916+When multiple characters compose a single cluster, the width of the
8917+entire cluster is divided equally among the characters.
8918+
8919+See also [method@Pango.GlyphString.get_logical_widths].</doc>
8920+ <source-position filename="../pango/pango-glyph-item.h" line="84"/>
8921+ <return-value transfer-ownership="none">
8922+ <type name="none" c:type="void"/>
8923+ </return-value>
8924+ <parameters>
8925+ <instance-parameter name="glyph_item" transfer-ownership="none">
8926+ <doc xml:space="preserve"
8927+ filename="../pango/pango-glyph-item.c"
8928+ line="805">a `PangoGlyphItem`</doc>
8929+ <type name="GlyphItem" c:type="PangoGlyphItem*"/>
8930+ </instance-parameter>
8931+ <parameter name="text" transfer-ownership="none">
8932+ <doc xml:space="preserve"
8933+ filename="../pango/pango-glyph-item.c"
8934+ line="806">text that @glyph_item corresponds to
8935+ (glyph_item-&gt;item-&gt;offset is an offset from the
8936+ start of @text)</doc>
8937+ <type name="utf8" c:type="const char*"/>
8938+ </parameter>
8939+ <parameter name="logical_widths" transfer-ownership="none">
8940+ <doc xml:space="preserve"
8941+ filename="../pango/pango-glyph-item.c"
8942+ line="809">an array whose length is the number of
8943+ characters in glyph_item (equal to glyph_item-&gt;item-&gt;num_chars)
8944+ to be filled in with the resulting character widths.</doc>
8945+ <array zero-terminated="0" c:type="int*">
8946+ <type name="gint" c:type="int"/>
8947+ </array>
8948+ </parameter>
8949+ </parameters>
8950+ </method>
8951+ <method name="letter_space"
8952+ c:identifier="pango_glyph_item_letter_space"
8953+ version="1.6">
8954+ <doc xml:space="preserve"
8955+ filename="../pango/pango-glyph-item.c"
8956+ line="721">Adds spacing between the graphemes of @glyph_item to
8957+give the effect of typographic letter spacing.</doc>
8958+ <source-position filename="../pango/pango-glyph-item.h" line="79"/>
8959+ <return-value transfer-ownership="none">
8960+ <type name="none" c:type="void"/>
8961+ </return-value>
8962+ <parameters>
8963+ <instance-parameter name="glyph_item" transfer-ownership="none">
8964+ <doc xml:space="preserve"
8965+ filename="../pango/pango-glyph-item.c"
8966+ line="723">a `PangoGlyphItem`</doc>
8967+ <type name="GlyphItem" c:type="PangoGlyphItem*"/>
8968+ </instance-parameter>
8969+ <parameter name="text" transfer-ownership="none">
8970+ <doc xml:space="preserve"
8971+ filename="../pango/pango-glyph-item.c"
8972+ line="724">text that @glyph_item corresponds to
8973+ (glyph_item-&gt;item-&gt;offset is an offset from the
8974+ start of @text)</doc>
8975+ <type name="utf8" c:type="const char*"/>
8976+ </parameter>
8977+ <parameter name="log_attrs" transfer-ownership="none">
8978+ <doc xml:space="preserve"
8979+ filename="../pango/pango-glyph-item.c"
8980+ line="727">logical attributes for the item
8981+ (the first logical attribute refers to the position
8982+ before the first character in the item)</doc>
8983+ <array zero-terminated="0" c:type="PangoLogAttr*">
8984+ <type name="LogAttr" c:type="PangoLogAttr"/>
8985+ </array>
8986+ </parameter>
8987+ <parameter name="letter_spacing" transfer-ownership="none">
8988+ <doc xml:space="preserve"
8989+ filename="../pango/pango-glyph-item.c"
8990+ line="730">amount of letter spacing to add
8991+ in Pango units. May be negative, though too large
8992+ negative values will give ugly results.</doc>
8993+ <type name="gint" c:type="int"/>
8994+ </parameter>
8995+ </parameters>
8996+ </method>
8997+ <method name="split" c:identifier="pango_glyph_item_split" version="1.2">
8998+ <doc xml:space="preserve"
8999+ filename="../pango/pango-glyph-item.c"
9000+ line="31">Modifies @orig to cover only the text after @split_index, and
9001+returns a new item that covers the text before @split_index that
9002+used to be in @orig.
9003+
9004+You can think of @split_index as the length of the returned item.
9005+@split_index may not be 0, and it may not be greater than or equal
9006+to the length of @orig (that is, there must be at least one byte
9007+assigned to each item, you can't create a zero-length item).
9008+
9009+This function is similar in function to pango_item_split() (and uses
9010+it internally.)</doc>
9011+ <source-position filename="../pango/pango-glyph-item.h" line="67"/>
9012+ <return-value transfer-ownership="full">
9013+ <doc xml:space="preserve"
9014+ filename="../pango/pango-glyph-item.c"
9015+ line="50">the newly allocated item representing text before
9016+ @split_index, which should be freed
9017+ with pango_glyph_item_free().</doc>
9018+ <type name="GlyphItem" c:type="PangoGlyphItem*"/>
9019+ </return-value>
9020+ <parameters>
9021+ <instance-parameter name="orig" transfer-ownership="none">
9022+ <doc xml:space="preserve"
9023+ filename="../pango/pango-glyph-item.c"
9024+ line="33">a `PangoItem`</doc>
9025+ <type name="GlyphItem" c:type="PangoGlyphItem*"/>
9026+ </instance-parameter>
9027+ <parameter name="text" transfer-ownership="none">
9028+ <doc xml:space="preserve"
9029+ filename="../pango/pango-glyph-item.c"
9030+ line="34">text to which positions in @orig apply</doc>
9031+ <type name="utf8" c:type="const char*"/>
9032+ </parameter>
9033+ <parameter name="split_index" transfer-ownership="none">
9034+ <doc xml:space="preserve"
9035+ filename="../pango/pango-glyph-item.c"
9036+ line="35">byte index of position to split item, relative to the
9037+ start of the item</doc>
9038+ <type name="gint" c:type="int"/>
9039+ </parameter>
9040+ </parameters>
9041+ </method>
9042+ </record>
9043+ <record name="GlyphItemIter"
9044+ c:type="PangoGlyphItemIter"
9045+ version="1.22"
9046+ glib:type-name="PangoGlyphItemIter"
9047+ glib:get-type="pango_glyph_item_iter_get_type"
9048+ c:symbol-prefix="glyph_item_iter">
9049+ <doc xml:space="preserve"
9050+ filename="../pango/pango-glyph-item.h"
9051+ line="89">A `PangoGlyphItemIter` is an iterator over the clusters in a
9052+`PangoGlyphItem`.
9053+
9054+The *forward direction* of the iterator is the logical direction of text.
9055+That is, with increasing @start_index and @start_char values. If @glyph_item
9056+is right-to-left (that is, if `glyph_item-&gt;item-&gt;analysis.level` is odd),
9057+then @start_glyph decreases as the iterator moves forward. Moreover,
9058+in right-to-left cases, @start_glyph is greater than @end_glyph.
9059+
9060+An iterator should be initialized using either
9061+pango_glyph_item_iter_init_start() or
9062+pango_glyph_item_iter_init_end(), for forward and backward iteration
9063+respectively, and walked over using any desired mixture of
9064+pango_glyph_item_iter_next_cluster() and
9065+pango_glyph_item_iter_prev_cluster().
9066+
9067+A common idiom for doing a forward iteration over the clusters is:
9068+
9069+```
9070+PangoGlyphItemIter cluster_iter;
9071+gboolean have_cluster;
9072+
9073+for (have_cluster = pango_glyph_item_iter_init_start (&amp;cluster_iter,
9074+ glyph_item, text);
9075+ have_cluster;
9076+ have_cluster = pango_glyph_item_iter_next_cluster (&amp;cluster_iter))
9077+{
9078+ ...
9079+}
9080+```
9081+
9082+Note that @text is the start of the text for layout, which is then
9083+indexed by `glyph_item-&gt;item-&gt;offset` to get to the text of @glyph_item.
9084+The @start_index and @end_index values can directly index into @text. The
9085+@start_glyph, @end_glyph, @start_char, and @end_char values however are
9086+zero-based for the @glyph_item. For each cluster, the item pointed at by
9087+the start variables is included in the cluster while the one pointed at by
9088+end variables is not.
9089+
9090+None of the members of a `PangoGlyphItemIter` should be modified manually.</doc>
9091+ <source-position filename="../pango/pango-glyph-item.h" line="149"/>
9092+ <field name="glyph_item" writable="1">
9093+ <type name="GlyphItem" c:type="PangoGlyphItem*"/>
9094+ </field>
9095+ <field name="text" writable="1">
9096+ <type name="utf8" c:type="const gchar*"/>
9097+ </field>
9098+ <field name="start_glyph" writable="1">
9099+ <type name="gint" c:type="int"/>
9100+ </field>
9101+ <field name="start_index" writable="1">
9102+ <type name="gint" c:type="int"/>
9103+ </field>
9104+ <field name="start_char" writable="1">
9105+ <type name="gint" c:type="int"/>
9106+ </field>
9107+ <field name="end_glyph" writable="1">
9108+ <type name="gint" c:type="int"/>
9109+ </field>
9110+ <field name="end_index" writable="1">
9111+ <type name="gint" c:type="int"/>
9112+ </field>
9113+ <field name="end_char" writable="1">
9114+ <type name="gint" c:type="int"/>
9115+ </field>
9116+ <method name="copy"
9117+ c:identifier="pango_glyph_item_iter_copy"
9118+ version="1.22">
9119+ <doc xml:space="preserve"
9120+ filename="../pango/pango-glyph-item.c"
9121+ line="195">Make a shallow copy of an existing `PangoGlyphItemIter` structure.</doc>
9122+ <source-position filename="../pango/pango-glyph-item.h" line="156"/>
9123+ <return-value transfer-ownership="full" nullable="1">
9124+ <doc xml:space="preserve"
9125+ filename="../pango/pango-glyph-item.c"
9126+ line="201">the newly allocated `PangoGlyphItemIter`</doc>
9127+ <type name="GlyphItemIter" c:type="PangoGlyphItemIter*"/>
9128+ </return-value>
9129+ <parameters>
9130+ <instance-parameter name="orig"
9131+ transfer-ownership="none"
9132+ nullable="1"
9133+ allow-none="1">
9134+ <doc xml:space="preserve"
9135+ filename="../pango/pango-glyph-item.c"
9136+ line="197">a `PangoGlyphItem`Iter</doc>
9137+ <type name="GlyphItemIter" c:type="PangoGlyphItemIter*"/>
9138+ </instance-parameter>
9139+ </parameters>
9140+ </method>
9141+ <method name="free"
9142+ c:identifier="pango_glyph_item_iter_free"
9143+ version="1.22">
9144+ <doc xml:space="preserve"
9145+ filename="../pango/pango-glyph-item.c"
9146+ line="220">Frees a `PangoGlyphItem`Iter.</doc>
9147+ <source-position filename="../pango/pango-glyph-item.h" line="158"/>
9148+ <return-value transfer-ownership="none">
9149+ <type name="none" c:type="void"/>
9150+ </return-value>
9151+ <parameters>
9152+ <instance-parameter name="iter"
9153+ transfer-ownership="none"
9154+ nullable="1"
9155+ allow-none="1">
9156+ <doc xml:space="preserve"
9157+ filename="../pango/pango-glyph-item.c"
9158+ line="222">a `PangoGlyphItemIter`</doc>
9159+ <type name="GlyphItemIter" c:type="PangoGlyphItemIter*"/>
9160+ </instance-parameter>
9161+ </parameters>
9162+ </method>
9163+ <method name="init_end"
9164+ c:identifier="pango_glyph_item_iter_init_end"
9165+ version="1.22">
9166+ <doc xml:space="preserve"
9167+ filename="../pango/pango-glyph-item.c"
9168+ line="464">Initializes a `PangoGlyphItemIter` structure to point to the
9169+last cluster in a glyph item.
9170+
9171+See `PangoGlyphItemIter` for details of cluster orders.</doc>
9172+ <source-position filename="../pango/pango-glyph-item.h" line="165"/>
9173+ <return-value transfer-ownership="none">
9174+ <doc xml:space="preserve"
9175+ filename="../pango/pango-glyph-item.c"
9176+ line="475">%FALSE if there are no clusters in the glyph item</doc>
9177+ <type name="gboolean" c:type="gboolean"/>
9178+ </return-value>
9179+ <parameters>
9180+ <instance-parameter name="iter" transfer-ownership="none">
9181+ <doc xml:space="preserve"
9182+ filename="../pango/pango-glyph-item.c"
9183+ line="466">a `PangoGlyphItemIter`</doc>
9184+ <type name="GlyphItemIter" c:type="PangoGlyphItemIter*"/>
9185+ </instance-parameter>
9186+ <parameter name="glyph_item" transfer-ownership="none">
9187+ <doc xml:space="preserve"
9188+ filename="../pango/pango-glyph-item.c"
9189+ line="467">the glyph item to iterate over</doc>
9190+ <type name="GlyphItem" c:type="PangoGlyphItem*"/>
9191+ </parameter>
9192+ <parameter name="text" transfer-ownership="none">
9193+ <doc xml:space="preserve"
9194+ filename="../pango/pango-glyph-item.c"
9195+ line="468">text corresponding to the glyph item</doc>
9196+ <type name="utf8" c:type="const char*"/>
9197+ </parameter>
9198+ </parameters>
9199+ </method>
9200+ <method name="init_start"
9201+ c:identifier="pango_glyph_item_iter_init_start"
9202+ version="1.22">
9203+ <doc xml:space="preserve"
9204+ filename="../pango/pango-glyph-item.c"
9205+ line="425">Initializes a `PangoGlyphItemIter` structure to point to the
9206+first cluster in a glyph item.
9207+
9208+See `PangoGlyphItemIter` for details of cluster orders.</doc>
9209+ <source-position filename="../pango/pango-glyph-item.h" line="161"/>
9210+ <return-value transfer-ownership="none">
9211+ <doc xml:space="preserve"
9212+ filename="../pango/pango-glyph-item.c"
9213+ line="436">%FALSE if there are no clusters in the glyph item</doc>
9214+ <type name="gboolean" c:type="gboolean"/>
9215+ </return-value>
9216+ <parameters>
9217+ <instance-parameter name="iter" transfer-ownership="none">
9218+ <doc xml:space="preserve"
9219+ filename="../pango/pango-glyph-item.c"
9220+ line="427">a `PangoGlyphItemIter`</doc>
9221+ <type name="GlyphItemIter" c:type="PangoGlyphItemIter*"/>
9222+ </instance-parameter>
9223+ <parameter name="glyph_item" transfer-ownership="none">
9224+ <doc xml:space="preserve"
9225+ filename="../pango/pango-glyph-item.c"
9226+ line="428">the glyph item to iterate over</doc>
9227+ <type name="GlyphItem" c:type="PangoGlyphItem*"/>
9228+ </parameter>
9229+ <parameter name="text" transfer-ownership="none">
9230+ <doc xml:space="preserve"
9231+ filename="../pango/pango-glyph-item.c"
9232+ line="429">text corresponding to the glyph item</doc>
9233+ <type name="utf8" c:type="const char*"/>
9234+ </parameter>
9235+ </parameters>
9236+ </method>
9237+ <method name="next_cluster"
9238+ c:identifier="pango_glyph_item_iter_next_cluster"
9239+ version="1.22">
9240+ <doc xml:space="preserve"
9241+ filename="../pango/pango-glyph-item.c"
9242+ line="241">Advances the iterator to the next cluster in the glyph item.
9243+
9244+See `PangoGlyphItemIter` for details of cluster orders.</doc>
9245+ <source-position filename="../pango/pango-glyph-item.h" line="169"/>
9246+ <return-value transfer-ownership="none">
9247+ <doc xml:space="preserve"
9248+ filename="../pango/pango-glyph-item.c"
9249+ line="249">%TRUE if the iterator was advanced,
9250+ %FALSE if we were already on the last cluster.</doc>
9251+ <type name="gboolean" c:type="gboolean"/>
9252+ </return-value>
9253+ <parameters>
9254+ <instance-parameter name="iter" transfer-ownership="none">
9255+ <doc xml:space="preserve"
9256+ filename="../pango/pango-glyph-item.c"
9257+ line="243">a `PangoGlyphItemIter`</doc>
9258+ <type name="GlyphItemIter" c:type="PangoGlyphItemIter*"/>
9259+ </instance-parameter>
9260+ </parameters>
9261+ </method>
9262+ <method name="prev_cluster"
9263+ c:identifier="pango_glyph_item_iter_prev_cluster"
9264+ version="1.22">
9265+ <doc xml:space="preserve"
9266+ filename="../pango/pango-glyph-item.c"
9267+ line="332">Moves the iterator to the preceding cluster in the glyph item.
9268+See `PangoGlyphItemIter` for details of cluster orders.</doc>
9269+ <source-position filename="../pango/pango-glyph-item.h" line="171"/>
9270+ <return-value transfer-ownership="none">
9271+ <doc xml:space="preserve"
9272+ filename="../pango/pango-glyph-item.c"
9273+ line="339">%TRUE if the iterator was moved,
9274+ %FALSE if we were already on the first cluster.</doc>
9275+ <type name="gboolean" c:type="gboolean"/>
9276+ </return-value>
9277+ <parameters>
9278+ <instance-parameter name="iter" transfer-ownership="none">
9279+ <doc xml:space="preserve"
9280+ filename="../pango/pango-glyph-item.c"
9281+ line="334">a `PangoGlyphItemIter`</doc>
9282+ <type name="GlyphItemIter" c:type="PangoGlyphItemIter*"/>
9283+ </instance-parameter>
9284+ </parameters>
9285+ </method>
9286+ </record>
9287+ <record name="GlyphString"
9288+ c:type="PangoGlyphString"
9289+ glib:type-name="PangoGlyphString"
9290+ glib:get-type="pango_glyph_string_get_type"
9291+ c:symbol-prefix="glyph_string">
9292+ <doc xml:space="preserve"
9293+ filename="../pango/pango-glyph.h"
9294+ line="127">A `PangoGlyphString` is used to store strings of glyphs with geometry
9295+and visual attribute information.
9296+
9297+The storage for the glyph information is owned by the structure
9298+which simplifies memory management.</doc>
9299+ <source-position filename="../pango/pango-glyph.h" line="148"/>
9300+ <field name="num_glyphs" writable="1">
9301+ <doc xml:space="preserve"
9302+ filename="../pango/pango-glyph.h"
9303+ line="129">number of glyphs in this glyph string</doc>
9304+ <type name="gint" c:type="int"/>
9305+ </field>
9306+ <field name="glyphs" writable="1">
9307+ <doc xml:space="preserve"
9308+ filename="../pango/pango-glyph.h"
9309+ line="130">array of glyph information</doc>
9310+ <array length="0" zero-terminated="0" c:type="PangoGlyphInfo*">
9311+ <type name="GlyphInfo" c:type="PangoGlyphInfo"/>
9312+ </array>
9313+ </field>
9314+ <field name="log_clusters" writable="1">
9315+ <doc xml:space="preserve"
9316+ filename="../pango/pango-glyph.h"
9317+ line="131">logical cluster info, indexed by the byte index
9318+ within the text corresponding to the glyph string</doc>
9319+ <type name="gint" c:type="int*"/>
9320+ </field>
9321+ <field name="space" readable="0" private="1">
9322+ <type name="gint" c:type="int"/>
9323+ </field>
9324+ <constructor name="new" c:identifier="pango_glyph_string_new">
9325+ <doc xml:space="preserve"
9326+ filename="../pango/glyphstring.c"
9327+ line="30">Create a new `PangoGlyphString`.</doc>
9328+ <source-position filename="../pango/pango-glyph.h" line="156"/>
9329+ <return-value transfer-ownership="full">
9330+ <doc xml:space="preserve"
9331+ filename="../pango/glyphstring.c"
9332+ line="35">the newly allocated `PangoGlyphString`, which
9333+ should be freed with [method@Pango.GlyphString.free].</doc>
9334+ <type name="GlyphString" c:type="PangoGlyphString*"/>
9335+ </return-value>
9336+ </constructor>
9337+ <method name="copy" c:identifier="pango_glyph_string_copy">
9338+ <doc xml:space="preserve"
9339+ filename="../pango/glyphstring.c"
9340+ line="100">Copy a glyph string and associated storage.</doc>
9341+ <source-position filename="../pango/pango-glyph.h" line="162"/>
9342+ <return-value transfer-ownership="full" nullable="1">
9343+ <doc xml:space="preserve"
9344+ filename="../pango/glyphstring.c"
9345+ line="106">the newly allocated `PangoGlyphString`</doc>
9346+ <type name="GlyphString" c:type="PangoGlyphString*"/>
9347+ </return-value>
9348+ <parameters>
9349+ <instance-parameter name="string"
9350+ transfer-ownership="none"
9351+ nullable="1"
9352+ allow-none="1">
9353+ <doc xml:space="preserve"
9354+ filename="../pango/glyphstring.c"
9355+ line="102">a `PangoGlyphString`</doc>
9356+ <type name="GlyphString" c:type="PangoGlyphString*"/>
9357+ </instance-parameter>
9358+ </parameters>
9359+ </method>
9360+ <method name="extents" c:identifier="pango_glyph_string_extents">
9361+ <doc xml:space="preserve"
9362+ filename="../pango/glyphstring.c"
9363+ line="261">Compute the logical and ink extents of a glyph string.
9364+
9365+See the documentation for [method@Pango.Font.get_glyph_extents] for details
9366+about the interpretation of the rectangles.
9367+
9368+Examples of logical (red) and ink (green) rects:
9369+
9370+![](rects1.png) ![](rects2.png)</doc>
9371+ <source-position filename="../pango/pango-glyph.h" line="167"/>
9372+ <return-value transfer-ownership="none">
9373+ <type name="none" c:type="void"/>
9374+ </return-value>
9375+ <parameters>
9376+ <instance-parameter name="glyphs" transfer-ownership="none">
9377+ <doc xml:space="preserve"
9378+ filename="../pango/glyphstring.c"
9379+ line="263">a `PangoGlyphString`</doc>
9380+ <type name="GlyphString" c:type="PangoGlyphString*"/>
9381+ </instance-parameter>
9382+ <parameter name="font" transfer-ownership="none">
9383+ <doc xml:space="preserve"
9384+ filename="../pango/glyphstring.c"
9385+ line="264">a `PangoFont`</doc>
9386+ <type name="Font" c:type="PangoFont*"/>
9387+ </parameter>
9388+ <parameter name="ink_rect"
9389+ direction="out"
9390+ caller-allocates="1"
9391+ transfer-ownership="none"
9392+ optional="1"
9393+ allow-none="1">
9394+ <doc xml:space="preserve"
9395+ filename="../pango/glyphstring.c"
9396+ line="265">rectangle used to store the extents of the glyph string as drawn</doc>
9397+ <type name="Rectangle" c:type="PangoRectangle*"/>
9398+ </parameter>
9399+ <parameter name="logical_rect"
9400+ direction="out"
9401+ caller-allocates="1"
9402+ transfer-ownership="none"
9403+ optional="1"
9404+ allow-none="1">
9405+ <doc xml:space="preserve"
9406+ filename="../pango/glyphstring.c"
9407+ line="266">rectangle used to store the logical extents of the glyph string</doc>
9408+ <type name="Rectangle" c:type="PangoRectangle*"/>
9409+ </parameter>
9410+ </parameters>
9411+ </method>
9412+ <method name="extents_range"
9413+ c:identifier="pango_glyph_string_extents_range">
9414+ <doc xml:space="preserve"
9415+ filename="../pango/glyphstring.c"
9416+ line="145">Computes the extents of a sub-portion of a glyph string.
9417+
9418+The extents are relative to the start of the glyph string range
9419+(the origin of their coordinate system is at the start of the range,
9420+not at the start of the entire glyph string).</doc>
9421+ <source-position filename="../pango/pango-glyph.h" line="175"/>
9422+ <return-value transfer-ownership="none">
9423+ <type name="none" c:type="void"/>
9424+ </return-value>
9425+ <parameters>
9426+ <instance-parameter name="glyphs" transfer-ownership="none">
9427+ <doc xml:space="preserve"
9428+ filename="../pango/glyphstring.c"
9429+ line="147">a `PangoGlyphString`</doc>
9430+ <type name="GlyphString" c:type="PangoGlyphString*"/>
9431+ </instance-parameter>
9432+ <parameter name="start" transfer-ownership="none">
9433+ <doc xml:space="preserve"
9434+ filename="../pango/glyphstring.c"
9435+ line="148">start index</doc>
9436+ <type name="gint" c:type="int"/>
9437+ </parameter>
9438+ <parameter name="end" transfer-ownership="none">
9439+ <doc xml:space="preserve"
9440+ filename="../pango/glyphstring.c"
9441+ line="149">end index (the range is the set of bytes with
9442+ indices such that start &lt;= index &lt; end)</doc>
9443+ <type name="gint" c:type="int"/>
9444+ </parameter>
9445+ <parameter name="font" transfer-ownership="none">
9446+ <doc xml:space="preserve"
9447+ filename="../pango/glyphstring.c"
9448+ line="151">a `PangoFont`</doc>
9449+ <type name="Font" c:type="PangoFont*"/>
9450+ </parameter>
9451+ <parameter name="ink_rect"
9452+ direction="out"
9453+ caller-allocates="1"
9454+ transfer-ownership="none"
9455+ optional="1"
9456+ allow-none="1">
9457+ <doc xml:space="preserve"
9458+ filename="../pango/glyphstring.c"
9459+ line="152">rectangle used to
9460+ store the extents of the glyph string range as drawn</doc>
9461+ <type name="Rectangle" c:type="PangoRectangle*"/>
9462+ </parameter>
9463+ <parameter name="logical_rect"
9464+ direction="out"
9465+ caller-allocates="1"
9466+ transfer-ownership="none"
9467+ optional="1"
9468+ allow-none="1">
9469+ <doc xml:space="preserve"
9470+ filename="../pango/glyphstring.c"
9471+ line="154">rectangle used to
9472+ store the logical extents of the glyph string range</doc>
9473+ <type name="Rectangle" c:type="PangoRectangle*"/>
9474+ </parameter>
9475+ </parameters>
9476+ </method>
9477+ <method name="free" c:identifier="pango_glyph_string_free">
9478+ <doc xml:space="preserve"
9479+ filename="../pango/glyphstring.c"
9480+ line="128">Free a glyph string and associated storage.</doc>
9481+ <source-position filename="../pango/pango-glyph.h" line="164"/>
9482+ <return-value transfer-ownership="none">
9483+ <type name="none" c:type="void"/>
9484+ </return-value>
9485+ <parameters>
9486+ <instance-parameter name="string"
9487+ transfer-ownership="none"
9488+ nullable="1"
9489+ allow-none="1">
9490+ <doc xml:space="preserve"
9491+ filename="../pango/glyphstring.c"
9492+ line="130">a `PangoGlyphString`, may be %NULL</doc>
9493+ <type name="GlyphString" c:type="PangoGlyphString*"/>
9494+ </instance-parameter>
9495+ </parameters>
9496+ </method>
9497+ <method name="get_logical_widths"
9498+ c:identifier="pango_glyph_string_get_logical_widths">
9499+ <doc xml:space="preserve"
9500+ filename="../pango/glyphstring.c"
9501+ line="314">Given a `PangoGlyphString` and corresponding text, determine the width
9502+corresponding to each character.
9503+
9504+When multiple characters compose a single cluster, the width of the
9505+entire cluster is divided equally among the characters.
9506+
9507+See also [method@Pango.GlyphItem.get_logical_widths].</doc>
9508+ <source-position filename="../pango/pango-glyph.h" line="183"/>
9509+ <return-value transfer-ownership="none">
9510+ <type name="none" c:type="void"/>
9511+ </return-value>
9512+ <parameters>
9513+ <instance-parameter name="glyphs" transfer-ownership="none">
9514+ <doc xml:space="preserve"
9515+ filename="../pango/glyphstring.c"
9516+ line="316">a `PangoGlyphString`</doc>
9517+ <type name="GlyphString" c:type="PangoGlyphString*"/>
9518+ </instance-parameter>
9519+ <parameter name="text" transfer-ownership="none">
9520+ <doc xml:space="preserve"
9521+ filename="../pango/glyphstring.c"
9522+ line="317">the text corresponding to the glyphs</doc>
9523+ <type name="utf8" c:type="const char*"/>
9524+ </parameter>
9525+ <parameter name="length" transfer-ownership="none">
9526+ <doc xml:space="preserve"
9527+ filename="../pango/glyphstring.c"
9528+ line="318">the length of @text, in bytes</doc>
9529+ <type name="gint" c:type="int"/>
9530+ </parameter>
9531+ <parameter name="embedding_level" transfer-ownership="none">
9532+ <doc xml:space="preserve"
9533+ filename="../pango/glyphstring.c"
9534+ line="319">the embedding level of the string</doc>
9535+ <type name="gint" c:type="int"/>
9536+ </parameter>
9537+ <parameter name="logical_widths" transfer-ownership="none">
9538+ <doc xml:space="preserve"
9539+ filename="../pango/glyphstring.c"
9540+ line="320">an array whose length is the number of
9541+ characters in text (equal to `g_utf8_strlen (text, length)` unless
9542+ text has `NUL` bytes) to be filled in with the resulting character widths.</doc>
9543+ <array zero-terminated="0" c:type="int*">
9544+ <type name="gint" c:type="int"/>
9545+ </array>
9546+ </parameter>
9547+ </parameters>
9548+ </method>
9549+ <method name="get_width"
9550+ c:identifier="pango_glyph_string_get_width"
9551+ version="1.14">
9552+ <doc xml:space="preserve"
9553+ filename="../pango/glyphstring.c"
9554+ line="287">Computes the logical width of the glyph string.
9555+
9556+This can also be computed using [method@Pango.GlyphString.extents].
9557+However, since this only computes the width, it's much faster. This
9558+is in fact only a convenience function that computes the sum of
9559+@geometry.width for each glyph in the @glyphs.</doc>
9560+ <source-position filename="../pango/pango-glyph.h" line="172"/>
9561+ <return-value transfer-ownership="none">
9562+ <doc xml:space="preserve"
9563+ filename="../pango/glyphstring.c"
9564+ line="298">the logical width of the glyph string.</doc>
9565+ <type name="gint" c:type="int"/>
9566+ </return-value>
9567+ <parameters>
9568+ <instance-parameter name="glyphs" transfer-ownership="none">
9569+ <doc xml:space="preserve"
9570+ filename="../pango/glyphstring.c"
9571+ line="289">a `PangoGlyphString`</doc>
9572+ <type name="GlyphString" c:type="PangoGlyphString*"/>
9573+ </instance-parameter>
9574+ </parameters>
9575+ </method>
9576+ <method name="index_to_x" c:identifier="pango_glyph_string_index_to_x">
9577+ <doc xml:space="preserve"
9578+ filename="../pango/glyphstring.c"
9579+ line="359">Converts from character position to x position.
9580+
9581+The X position is measured from the left edge of the run.
9582+Character positions are obtained using font metrics for ligatures
9583+where available, and computed by dividing up each cluster
9584+into equal portions, otherwise.
9585+
9586+&lt;picture&gt;
9587+ &lt;source srcset="glyphstring-positions-dark.png" media="(prefers-color-scheme: dark)"&gt;
9588+ &lt;img alt="Glyph positions" src="glyphstring-positions-light.png"&gt;
9589+&lt;/picture&gt;</doc>
9590+ <source-position filename="../pango/pango-glyph.h" line="190"/>
9591+ <return-value transfer-ownership="none">
9592+ <type name="none" c:type="void"/>
9593+ </return-value>
9594+ <parameters>
9595+ <instance-parameter name="glyphs" transfer-ownership="none">
9596+ <doc xml:space="preserve"
9597+ filename="../pango/glyphstring.c"
9598+ line="361">the glyphs return from [func@shape]</doc>
9599+ <type name="GlyphString" c:type="PangoGlyphString*"/>
9600+ </instance-parameter>
9601+ <parameter name="text" transfer-ownership="none">
9602+ <doc xml:space="preserve"
9603+ filename="../pango/glyphstring.c"
9604+ line="362">the text for the run</doc>
9605+ <type name="utf8" c:type="const char*"/>
9606+ </parameter>
9607+ <parameter name="length" transfer-ownership="none">
9608+ <doc xml:space="preserve"
9609+ filename="../pango/glyphstring.c"
9610+ line="363">the number of bytes (not characters) in @text.</doc>
9611+ <type name="gint" c:type="int"/>
9612+ </parameter>
9613+ <parameter name="analysis" transfer-ownership="none">
9614+ <doc xml:space="preserve"
9615+ filename="../pango/glyphstring.c"
9616+ line="364">the analysis information return from [func@itemize]</doc>
9617+ <type name="Analysis" c:type="PangoAnalysis*"/>
9618+ </parameter>
9619+ <parameter name="index_" transfer-ownership="none">
9620+ <doc xml:space="preserve"
9621+ filename="../pango/glyphstring.c"
9622+ line="365">the byte index within @text</doc>
9623+ <type name="gint" c:type="int"/>
9624+ </parameter>
9625+ <parameter name="trailing" transfer-ownership="none">
9626+ <doc xml:space="preserve"
9627+ filename="../pango/glyphstring.c"
9628+ line="366">whether we should compute the result for the beginning (%FALSE)
9629+ or end (%TRUE) of the character.</doc>
9630+ <type name="gboolean" c:type="gboolean"/>
9631+ </parameter>
9632+ <parameter name="x_pos"
9633+ direction="out"
9634+ caller-allocates="0"
9635+ transfer-ownership="full">
9636+ <doc xml:space="preserve"
9637+ filename="../pango/glyphstring.c"
9638+ line="368">location to store result</doc>
9639+ <type name="gint" c:type="int*"/>
9640+ </parameter>
9641+ </parameters>
9642+ </method>
9643+ <method name="index_to_x_full"
9644+ c:identifier="pango_glyph_string_index_to_x_full"
9645+ version="1.50">
9646+ <doc xml:space="preserve"
9647+ filename="../pango/glyphstring.c"
9648+ line="399">Converts from character position to x position.
9649+
9650+This variant of [method@Pango.GlyphString.index_to_x] additionally
9651+accepts a `PangoLogAttr` array. The grapheme boundary information
9652+in it can be used to disambiguate positioning inside some complex
9653+clusters.</doc>
9654+ <source-position filename="../pango/pango-glyph.h" line="207"/>
9655+ <return-value transfer-ownership="none">
9656+ <type name="none" c:type="void"/>
9657+ </return-value>
9658+ <parameters>
9659+ <instance-parameter name="glyphs" transfer-ownership="none">
9660+ <doc xml:space="preserve"
9661+ filename="../pango/glyphstring.c"
9662+ line="401">the glyphs return from [func@shape]</doc>
9663+ <type name="GlyphString" c:type="PangoGlyphString*"/>
9664+ </instance-parameter>
9665+ <parameter name="text" transfer-ownership="none">
9666+ <doc xml:space="preserve"
9667+ filename="../pango/glyphstring.c"
9668+ line="402">the text for the run</doc>
9669+ <type name="utf8" c:type="const char*"/>
9670+ </parameter>
9671+ <parameter name="length" transfer-ownership="none">
9672+ <doc xml:space="preserve"
9673+ filename="../pango/glyphstring.c"
9674+ line="403">the number of bytes (not characters) in @text.</doc>
9675+ <type name="gint" c:type="int"/>
9676+ </parameter>
9677+ <parameter name="analysis" transfer-ownership="none">
9678+ <doc xml:space="preserve"
9679+ filename="../pango/glyphstring.c"
9680+ line="404">the analysis information return from [func@itemize]</doc>
9681+ <type name="Analysis" c:type="PangoAnalysis*"/>
9682+ </parameter>
9683+ <parameter name="attrs"
9684+ transfer-ownership="none"
9685+ nullable="1"
9686+ allow-none="1">
9687+ <doc xml:space="preserve"
9688+ filename="../pango/glyphstring.c"
9689+ line="405">`PangoLogAttr` array for @text</doc>
9690+ <type name="LogAttr" c:type="PangoLogAttr*"/>
9691+ </parameter>
9692+ <parameter name="index_" transfer-ownership="none">
9693+ <doc xml:space="preserve"
9694+ filename="../pango/glyphstring.c"
9695+ line="406">the byte index within @text</doc>
9696+ <type name="gint" c:type="int"/>
9697+ </parameter>
9698+ <parameter name="trailing" transfer-ownership="none">
9699+ <doc xml:space="preserve"
9700+ filename="../pango/glyphstring.c"
9701+ line="407">whether we should compute the result for the beginning (%FALSE)
9702+ or end (%TRUE) of the character.</doc>
9703+ <type name="gboolean" c:type="gboolean"/>
9704+ </parameter>
9705+ <parameter name="x_pos"
9706+ direction="out"
9707+ caller-allocates="0"
9708+ transfer-ownership="full">
9709+ <doc xml:space="preserve"
9710+ filename="../pango/glyphstring.c"
9711+ line="409">location to store result</doc>
9712+ <type name="gint" c:type="int*"/>
9713+ </parameter>
9714+ </parameters>
9715+ </method>
9716+ <method name="set_size" c:identifier="pango_glyph_string_set_size">
9717+ <doc xml:space="preserve"
9718+ filename="../pango/glyphstring.c"
9719+ line="51">Resize a glyph string to the given length.</doc>
9720+ <source-position filename="../pango/pango-glyph.h" line="158"/>
9721+ <return-value transfer-ownership="none">
9722+ <type name="none" c:type="void"/>
9723+ </return-value>
9724+ <parameters>
9725+ <instance-parameter name="string" transfer-ownership="none">
9726+ <doc xml:space="preserve"
9727+ filename="../pango/glyphstring.c"
9728+ line="53">a `PangoGlyphString`.</doc>
9729+ <type name="GlyphString" c:type="PangoGlyphString*"/>
9730+ </instance-parameter>
9731+ <parameter name="new_len" transfer-ownership="none">
9732+ <doc xml:space="preserve"
9733+ filename="../pango/glyphstring.c"
9734+ line="54">the new length of the string</doc>
9735+ <type name="gint" c:type="int"/>
9736+ </parameter>
9737+ </parameters>
9738+ </method>
9739+ <method name="x_to_index" c:identifier="pango_glyph_string_x_to_index">
9740+ <doc xml:space="preserve"
9741+ filename="../pango/glyphstring.c"
9742+ line="625">Convert from x offset to character position.
9743+
9744+Character positions are computed by dividing up each cluster into
9745+equal portions. In scripts where positioning within a cluster is
9746+not allowed (such as Thai), the returned value may not be a valid
9747+cursor position; the caller must combine the result with the logical
9748+attributes for the text to compute the valid cursor position.</doc>
9749+ <source-position filename="../pango/pango-glyph.h" line="198"/>
9750+ <return-value transfer-ownership="none">
9751+ <type name="none" c:type="void"/>
9752+ </return-value>
9753+ <parameters>
9754+ <instance-parameter name="glyphs" transfer-ownership="none">
9755+ <doc xml:space="preserve"
9756+ filename="../pango/glyphstring.c"
9757+ line="627">the glyphs returned from [func@shape]</doc>
9758+ <type name="GlyphString" c:type="PangoGlyphString*"/>
9759+ </instance-parameter>
9760+ <parameter name="text" transfer-ownership="none">
9761+ <doc xml:space="preserve"
9762+ filename="../pango/glyphstring.c"
9763+ line="628">the text for the run</doc>
9764+ <type name="utf8" c:type="const char*"/>
9765+ </parameter>
9766+ <parameter name="length" transfer-ownership="none">
9767+ <doc xml:space="preserve"
9768+ filename="../pango/glyphstring.c"
9769+ line="629">the number of bytes (not characters) in text.</doc>
9770+ <type name="gint" c:type="int"/>
9771+ </parameter>
9772+ <parameter name="analysis" transfer-ownership="none">
9773+ <doc xml:space="preserve"
9774+ filename="../pango/glyphstring.c"
9775+ line="630">the analysis information return from [func@itemize]</doc>
9776+ <type name="Analysis" c:type="PangoAnalysis*"/>
9777+ </parameter>
9778+ <parameter name="x_pos" transfer-ownership="none">
9779+ <doc xml:space="preserve"
9780+ filename="../pango/glyphstring.c"
9781+ line="631">the x offset (in Pango units)</doc>
9782+ <type name="gint" c:type="int"/>
9783+ </parameter>
9784+ <parameter name="index_"
9785+ direction="out"
9786+ caller-allocates="0"
9787+ transfer-ownership="full">
9788+ <doc xml:space="preserve"
9789+ filename="../pango/glyphstring.c"
9790+ line="632">location to store calculated byte index within @text</doc>
9791+ <type name="gint" c:type="int*"/>
9792+ </parameter>
9793+ <parameter name="trailing"
9794+ direction="out"
9795+ caller-allocates="0"
9796+ transfer-ownership="full">
9797+ <doc xml:space="preserve"
9798+ filename="../pango/glyphstring.c"
9799+ line="633">location to store a boolean indicating whether the
9800+ user clicked on the leading or trailing edge of the character</doc>
9801+ <type name="gint" c:type="int*"/>
9802+ </parameter>
9803+ </parameters>
9804+ </method>
9805+ </record>
9806+ <record name="GlyphVisAttr" c:type="PangoGlyphVisAttr">
9807+ <doc xml:space="preserve"
9808+ filename="../pango/pango-glyph.h"
9809+ line="87">A `PangoGlyphVisAttr` structure communicates information between
9810+the shaping and rendering phases.
9811+
9812+Currently, it contains cluster start and color information.
9813+More attributes may be added in the future.
9814+
9815+Clusters are stored in visual order, within the cluster, glyphs
9816+are always ordered in logical order, since visual order is meaningless;
9817+that is, in Arabic text, accent glyphs follow the glyphs for the
9818+base character.</doc>
9819+ <source-position filename="../pango/pango-glyph.h" line="107"/>
9820+ <field name="is_cluster_start" writable="1" bits="1">
9821+ <doc xml:space="preserve"
9822+ filename="../pango/pango-glyph.h"
9823+ line="89">set for the first logical glyph in each cluster.</doc>
9824+ <type name="guint" c:type="guint"/>
9825+ </field>
9826+ <field name="is_color" writable="1" bits="1">
9827+ <doc xml:space="preserve"
9828+ filename="../pango/pango-glyph.h"
9829+ line="90">set if the the font will render this glyph with color. Since 1.50</doc>
9830+ <type name="guint" c:type="guint"/>
9831+ </field>
9832+ </record>
9833+ <enumeration name="Gravity"
9834+ version="1.16"
9835+ glib:type-name="PangoGravity"
9836+ glib:get-type="pango_gravity_get_type"
9837+ c:type="PangoGravity">
9838+ <doc xml:space="preserve"
9839+ filename="../pango/pango-gravity.h"
9840+ line="29">`PangoGravity` represents the orientation of glyphs in a segment
9841+of text.
9842+
9843+This is useful when rendering vertical text layouts. In those situations,
9844+the layout is rotated using a non-identity [struct@Pango.Matrix], and then
9845+glyph orientation is controlled using `PangoGravity`.
9846+
9847+Not every value in this enumeration makes sense for every usage of
9848+`PangoGravity`; for example, %PANGO_GRAVITY_AUTO only can be passed to
9849+[method@Pango.Context.set_base_gravity] and can only be returned by
9850+[method@Pango.Context.get_base_gravity].
9851+
9852+See also: [enum@Pango.GravityHint]</doc>
9853+ <member name="south"
9854+ value="0"
9855+ c:identifier="PANGO_GRAVITY_SOUTH"
9856+ glib:nick="south"
9857+ glib:name="PANGO_GRAVITY_SOUTH">
9858+ <doc xml:space="preserve"
9859+ filename="../pango/pango-gravity.h"
9860+ line="31">Glyphs stand upright (default) &lt;img align="right" valign="center" src="m-south.png"&gt;</doc>
9861+ </member>
9862+ <member name="east"
9863+ value="1"
9864+ c:identifier="PANGO_GRAVITY_EAST"
9865+ glib:nick="east"
9866+ glib:name="PANGO_GRAVITY_EAST">
9867+ <doc xml:space="preserve"
9868+ filename="../pango/pango-gravity.h"
9869+ line="32">Glyphs are rotated 90 degrees counter-clockwise. &lt;img align="right" valign="center" src="m-east.png"&gt;</doc>
9870+ </member>
9871+ <member name="north"
9872+ value="2"
9873+ c:identifier="PANGO_GRAVITY_NORTH"
9874+ glib:nick="north"
9875+ glib:name="PANGO_GRAVITY_NORTH">
9876+ <doc xml:space="preserve"
9877+ filename="../pango/pango-gravity.h"
9878+ line="33">Glyphs are upside-down. &lt;img align="right" valign="cener" src="m-north.png"&gt;</doc>
9879+ </member>
9880+ <member name="west"
9881+ value="3"
9882+ c:identifier="PANGO_GRAVITY_WEST"
9883+ glib:nick="west"
9884+ glib:name="PANGO_GRAVITY_WEST">
9885+ <doc xml:space="preserve"
9886+ filename="../pango/pango-gravity.h"
9887+ line="34">Glyphs are rotated 90 degrees clockwise. &lt;img align="right" valign="center" src="m-west.png"&gt;</doc>
9888+ </member>
9889+ <member name="auto"
9890+ value="4"
9891+ c:identifier="PANGO_GRAVITY_AUTO"
9892+ glib:nick="auto"
9893+ glib:name="PANGO_GRAVITY_AUTO">
9894+ <doc xml:space="preserve"
9895+ filename="../pango/pango-gravity.h"
9896+ line="35">Gravity is resolved from the context matrix</doc>
9897+ </member>
9898+ <function name="get_for_matrix"
9899+ c:identifier="pango_gravity_get_for_matrix"
9900+ version="1.16">
9901+ <doc xml:space="preserve"
9902+ filename="../pango/pango-gravity.c"
9903+ line="62">Finds the gravity that best matches the rotation component
9904+in a `PangoMatrix`.</doc>
9905+ <source-position filename="../pango/pango-gravity.h" line="122"/>
9906+ <return-value transfer-ownership="none">
9907+ <doc xml:space="preserve"
9908+ filename="../pango/pango-gravity.c"
9909+ line="69">the gravity of @matrix, which will never be
9910+%PANGO_GRAVITY_AUTO, or %PANGO_GRAVITY_SOUTH if @matrix is %NULL</doc>
9911+ <type name="Gravity" c:type="PangoGravity"/>
9912+ </return-value>
9913+ <parameters>
9914+ <parameter name="matrix"
9915+ transfer-ownership="none"
9916+ nullable="1"
9917+ allow-none="1">
9918+ <doc xml:space="preserve"
9919+ filename="../pango/pango-gravity.c"
9920+ line="64">a `PangoMatrix`</doc>
9921+ <type name="Matrix" c:type="const PangoMatrix*"/>
9922+ </parameter>
9923+ </parameters>
9924+ </function>
9925+ <function name="get_for_script"
9926+ c:identifier="pango_gravity_get_for_script"
9927+ version="1.16">
9928+ <doc xml:space="preserve"
9929+ filename="../pango/pango-gravity.c"
9930+ line="351">Returns the gravity to use in laying out a `PangoItem`.
9931+
9932+The gravity is determined based on the script, base gravity, and hint.
9933+
9934+If @base_gravity is %PANGO_GRAVITY_AUTO, it is first replaced with the
9935+preferred gravity of @script. To get the preferred gravity of a script,
9936+pass %PANGO_GRAVITY_AUTO and %PANGO_GRAVITY_HINT_STRONG in.</doc>
9937+ <source-position filename="../pango/pango-gravity.h" line="124"/>
9938+ <return-value transfer-ownership="none">
9939+ <doc xml:space="preserve"
9940+ filename="../pango/pango-gravity.c"
9941+ line="365">resolved gravity suitable to use for a run of text
9942+with @script</doc>
9943+ <type name="Gravity" c:type="PangoGravity"/>
9944+ </return-value>
9945+ <parameters>
9946+ <parameter name="script" transfer-ownership="none">
9947+ <doc xml:space="preserve"
9948+ filename="../pango/pango-gravity.c"
9949+ line="353">`PangoScript` to query</doc>
9950+ <type name="Script" c:type="PangoScript"/>
9951+ </parameter>
9952+ <parameter name="base_gravity" transfer-ownership="none">
9953+ <doc xml:space="preserve"
9954+ filename="../pango/pango-gravity.c"
9955+ line="354">base gravity of the paragraph</doc>
9956+ <type name="Gravity" c:type="PangoGravity"/>
9957+ </parameter>
9958+ <parameter name="hint" transfer-ownership="none">
9959+ <doc xml:space="preserve"
9960+ filename="../pango/pango-gravity.c"
9961+ line="355">orientation hint</doc>
9962+ <type name="GravityHint" c:type="PangoGravityHint"/>
9963+ </parameter>
9964+ </parameters>
9965+ </function>
9966+ <function name="get_for_script_and_width"
9967+ c:identifier="pango_gravity_get_for_script_and_width"
9968+ version="1.26">
9969+ <doc xml:space="preserve"
9970+ filename="../pango/pango-gravity.c"
9971+ line="381">Returns the gravity to use in laying out a single character
9972+or `PangoItem`.
9973+
9974+The gravity is determined based on the script, East Asian width,
9975+base gravity, and hint,
9976+
9977+This function is similar to [func@Pango.Gravity.get_for_script] except
9978+that this function makes a distinction between narrow/half-width and
9979+wide/full-width characters also. Wide/full-width characters always
9980+stand *upright*, that is, they always take the base gravity,
9981+whereas narrow/full-width characters are always rotated in vertical
9982+context.
9983+
9984+If @base_gravity is %PANGO_GRAVITY_AUTO, it is first replaced with the
9985+preferred gravity of @script.</doc>
9986+ <source-position filename="../pango/pango-gravity.h" line="128"/>
9987+ <return-value transfer-ownership="none">
9988+ <doc xml:space="preserve"
9989+ filename="../pango/pango-gravity.c"
9990+ line="404">resolved gravity suitable to use for a run of text
9991+with @script and @wide.</doc>
9992+ <type name="Gravity" c:type="PangoGravity"/>
9993+ </return-value>
9994+ <parameters>
9995+ <parameter name="script" transfer-ownership="none">
9996+ <doc xml:space="preserve"
9997+ filename="../pango/pango-gravity.c"
9998+ line="383">`PangoScript` to query</doc>
9999+ <type name="Script" c:type="PangoScript"/>
10000+ </parameter>
10001+ <parameter name="wide" transfer-ownership="none">
10002+ <doc xml:space="preserve"
10003+ filename="../pango/pango-gravity.c"
10004+ line="384">%TRUE for wide characters as returned by g_unichar_iswide()</doc>
10005+ <type name="gboolean" c:type="gboolean"/>
10006+ </parameter>
10007+ <parameter name="base_gravity" transfer-ownership="none">
10008+ <doc xml:space="preserve"
10009+ filename="../pango/pango-gravity.c"
10010+ line="385">base gravity of the paragraph</doc>
10011+ <type name="Gravity" c:type="PangoGravity"/>
10012+ </parameter>
10013+ <parameter name="hint" transfer-ownership="none">
10014+ <doc xml:space="preserve"
10015+ filename="../pango/pango-gravity.c"
10016+ line="386">orientation hint</doc>
10017+ <type name="GravityHint" c:type="PangoGravityHint"/>
10018+ </parameter>
10019+ </parameters>
10020+ </function>
10021+ <function name="to_rotation"
10022+ c:identifier="pango_gravity_to_rotation"
10023+ version="1.16">
10024+ <doc xml:space="preserve"
10025+ filename="../pango/pango-gravity.c"
10026+ line="28">Converts a `PangoGravity` value to its natural rotation in radians.
10027+
10028+Note that [method@Pango.Matrix.rotate] takes angle in degrees, not radians.
10029+So, to call [method@Pango.Matrix,rotate] with the output of this function
10030+you should multiply it by (180. / G_PI).</doc>
10031+ <source-position filename="../pango/pango-gravity.h" line="120"/>
10032+ <return-value transfer-ownership="none">
10033+ <doc xml:space="preserve"
10034+ filename="../pango/pango-gravity.c"
10035+ line="38">the rotation value corresponding to @gravity.</doc>
10036+ <type name="gdouble" c:type="double"/>
10037+ </return-value>
10038+ <parameters>
10039+ <parameter name="gravity" transfer-ownership="none">
10040+ <doc xml:space="preserve"
10041+ filename="../pango/pango-gravity.c"
10042+ line="30">gravity to query, should not be %PANGO_GRAVITY_AUTO</doc>
10043+ <type name="Gravity" c:type="PangoGravity"/>
10044+ </parameter>
10045+ </parameters>
10046+ </function>
10047+ </enumeration>
10048+ <enumeration name="GravityHint"
10049+ version="1.16"
10050+ glib:type-name="PangoGravityHint"
10051+ glib:get-type="pango_gravity_hint_get_type"
10052+ c:type="PangoGravityHint">
10053+ <doc xml:space="preserve"
10054+ filename="../pango/pango-gravity.h"
10055+ line="61">`PangoGravityHint` defines how horizontal scripts should behave in a
10056+vertical context.
10057+
10058+That is, English excerpts in a vertical paragraph for example.
10059+
10060+See also [enum@Pango.Gravity]</doc>
10061+ <member name="natural"
10062+ value="0"
10063+ c:identifier="PANGO_GRAVITY_HINT_NATURAL"
10064+ glib:nick="natural"
10065+ glib:name="PANGO_GRAVITY_HINT_NATURAL">
10066+ <doc xml:space="preserve"
10067+ filename="../pango/pango-gravity.h"
10068+ line="63">scripts will take their natural gravity based
10069+ on the base gravity and the script. This is the default.</doc>
10070+ </member>
10071+ <member name="strong"
10072+ value="1"
10073+ c:identifier="PANGO_GRAVITY_HINT_STRONG"
10074+ glib:nick="strong"
10075+ glib:name="PANGO_GRAVITY_HINT_STRONG">
10076+ <doc xml:space="preserve"
10077+ filename="../pango/pango-gravity.h"
10078+ line="65">always use the base gravity set, regardless of
10079+ the script.</doc>
10080+ </member>
10081+ <member name="line"
10082+ value="2"
10083+ c:identifier="PANGO_GRAVITY_HINT_LINE"
10084+ glib:nick="line"
10085+ glib:name="PANGO_GRAVITY_HINT_LINE">
10086+ <doc xml:space="preserve"
10087+ filename="../pango/pango-gravity.h"
10088+ line="67">for scripts not in their natural direction (eg.
10089+ Latin in East gravity), choose per-script gravity such that every script
10090+ respects the line progression. This means, Latin and Arabic will take
10091+ opposite gravities and both flow top-to-bottom for example.</doc>
10092+ </member>
10093+ </enumeration>
10094+ <function-macro name="IS_CONTEXT"
10095+ c:identifier="PANGO_IS_CONTEXT"
10096+ introspectable="0">
10097+ <source-position filename="../pango/pango-context.h" line="38"/>
10098+ <parameters>
10099+ <parameter name="object">
10100+ </parameter>
10101+ </parameters>
10102+ </function-macro>
10103+ <function-macro name="IS_CONTEXT_CLASS"
10104+ c:identifier="PANGO_IS_CONTEXT_CLASS"
10105+ introspectable="0">
10106+ <source-position filename="../pango/pango-context.h" line="39"/>
10107+ <parameters>
10108+ <parameter name="klass">
10109+ </parameter>
10110+ </parameters>
10111+ </function-macro>
10112+ <function-macro name="IS_FONT"
10113+ c:identifier="PANGO_IS_FONT"
10114+ introspectable="0">
10115+ <source-position filename="../pango/pango-font.h" line="545"/>
10116+ <parameters>
10117+ <parameter name="object">
10118+ </parameter>
10119+ </parameters>
10120+ </function-macro>
10121+ <function-macro name="IS_FONTSET"
10122+ c:identifier="PANGO_IS_FONTSET"
10123+ introspectable="0">
10124+ <source-position filename="../pango/pango-fontset.h" line="38"/>
10125+ <parameters>
10126+ <parameter name="object">
10127+ </parameter>
10128+ </parameters>
10129+ </function-macro>
10130+ <function-macro name="IS_FONTSET_CLASS"
10131+ c:identifier="PANGO_IS_FONTSET_CLASS"
10132+ introspectable="0">
10133+ <source-position filename="../pango/pango-fontset.h" line="40"/>
10134+ <parameters>
10135+ <parameter name="klass">
10136+ </parameter>
10137+ </parameters>
10138+ </function-macro>
10139+ <function-macro name="IS_FONTSET_SIMPLE"
10140+ c:identifier="PANGO_IS_FONTSET_SIMPLE"
10141+ introspectable="0">
10142+ <source-position filename="../pango/pango-fontset.h" line="131"/>
10143+ <parameters>
10144+ <parameter name="object">
10145+ </parameter>
10146+ </parameters>
10147+ </function-macro>
10148+ <function-macro name="IS_FONT_CLASS"
10149+ c:identifier="PANGO_IS_FONT_CLASS"
10150+ introspectable="0">
10151+ <source-position filename="../pango/pango-font.h" line="547"/>
10152+ <parameters>
10153+ <parameter name="klass">
10154+ </parameter>
10155+ </parameters>
10156+ </function-macro>
10157+ <function-macro name="IS_FONT_FACE"
10158+ c:identifier="PANGO_IS_FONT_FACE"
10159+ introspectable="0">
10160+ <source-position filename="../pango/pango-font.h" line="478"/>
10161+ <parameters>
10162+ <parameter name="object">
10163+ </parameter>
10164+ </parameters>
10165+ </function-macro>
10166+ <function-macro name="IS_FONT_FACE_CLASS"
10167+ c:identifier="PANGO_IS_FONT_FACE_CLASS"
10168+ introspectable="0">
10169+ <source-position filename="../pango/pango-font.h" line="480"/>
10170+ <parameters>
10171+ <parameter name="klass">
10172+ </parameter>
10173+ </parameters>
10174+ </function-macro>
10175+ <function-macro name="IS_FONT_FAMILY"
10176+ c:identifier="PANGO_IS_FONT_FAMILY"
10177+ introspectable="0">
10178+ <source-position filename="../pango/pango-font.h" line="403"/>
10179+ <parameters>
10180+ <parameter name="object">
10181+ </parameter>
10182+ </parameters>
10183+ </function-macro>
10184+ <function-macro name="IS_FONT_FAMILY_CLASS"
10185+ c:identifier="PANGO_IS_FONT_FAMILY_CLASS"
10186+ introspectable="0">
10187+ <source-position filename="../pango/pango-font.h" line="405"/>
10188+ <parameters>
10189+ <parameter name="klass">
10190+ </parameter>
10191+ </parameters>
10192+ </function-macro>
10193+ <function-macro name="IS_FONT_MAP"
10194+ c:identifier="PANGO_IS_FONT_MAP"
10195+ introspectable="0">
10196+ <source-position filename="../pango/pango-fontmap.h" line="33"/>
10197+ <parameters>
10198+ <parameter name="object">
10199+ </parameter>
10200+ </parameters>
10201+ </function-macro>
10202+ <function-macro name="IS_FONT_MAP_CLASS"
10203+ c:identifier="PANGO_IS_FONT_MAP_CLASS"
10204+ introspectable="0">
10205+ <source-position filename="../pango/pango-fontmap.h" line="35"/>
10206+ <parameters>
10207+ <parameter name="klass">
10208+ </parameter>
10209+ </parameters>
10210+ </function-macro>
10211+ <function-macro name="IS_LAYOUT"
10212+ c:identifier="PANGO_IS_LAYOUT"
10213+ introspectable="0">
10214+ <source-position filename="../pango/pango-layout.h" line="139"/>
10215+ <parameters>
10216+ <parameter name="object">
10217+ </parameter>
10218+ </parameters>
10219+ </function-macro>
10220+ <function-macro name="IS_LAYOUT_CLASS"
10221+ c:identifier="PANGO_IS_LAYOUT_CLASS"
10222+ introspectable="0">
10223+ <source-position filename="../pango/pango-layout.h" line="140"/>
10224+ <parameters>
10225+ <parameter name="klass">
10226+ </parameter>
10227+ </parameters>
10228+ </function-macro>
10229+ <function-macro name="IS_RENDERER"
10230+ c:identifier="PANGO_IS_RENDERER"
10231+ introspectable="0">
10232+ <source-position filename="../pango/pango-renderer.h" line="30"/>
10233+ <parameters>
10234+ <parameter name="object">
10235+ </parameter>
10236+ </parameters>
10237+ </function-macro>
10238+ <function-macro name="IS_RENDERER_CLASS"
10239+ c:identifier="PANGO_IS_RENDERER_CLASS"
10240+ introspectable="0">
10241+ <source-position filename="../pango/pango-renderer.h" line="32"/>
10242+ <parameters>
10243+ <parameter name="klass">
10244+ </parameter>
10245+ </parameters>
10246+ </function-macro>
10247+ <record name="Item"
10248+ c:type="PangoItem"
10249+ glib:type-name="PangoItem"
10250+ glib:get-type="pango_item_get_type"
10251+ c:symbol-prefix="item">
10252+ <doc xml:space="preserve"
10253+ filename="../pango/pango-item.h"
10254+ line="98">The `PangoItem` structure stores information about a segment of text.
10255+
10256+You typically obtain `PangoItems` by itemizing a piece of text
10257+with [func@itemize].</doc>
10258+ <source-position filename="../pango/pango-item.h" line="117"/>
10259+ <field name="offset" writable="1">
10260+ <doc xml:space="preserve"
10261+ filename="../pango/pango-item.h"
10262+ line="100">byte offset of the start of this item in text.</doc>
10263+ <type name="gint" c:type="int"/>
10264+ </field>
10265+ <field name="length" writable="1">
10266+ <doc xml:space="preserve"
10267+ filename="../pango/pango-item.h"
10268+ line="101">length of this item in bytes.</doc>
10269+ <type name="gint" c:type="int"/>
10270+ </field>
10271+ <field name="num_chars" writable="1">
10272+ <doc xml:space="preserve"
10273+ filename="../pango/pango-item.h"
10274+ line="102">number of Unicode characters in the item.</doc>
10275+ <type name="gint" c:type="int"/>
10276+ </field>
10277+ <field name="analysis" writable="1">
10278+ <doc xml:space="preserve"
10279+ filename="../pango/pango-item.h"
10280+ line="104">analysis results for the item.</doc>
10281+ <type name="Analysis" c:type="PangoAnalysis"/>
10282+ </field>
10283+ <constructor name="new" c:identifier="pango_item_new">
10284+ <doc xml:space="preserve"
10285+ filename="../pango/pango-item.c"
10286+ line="27">Creates a new `PangoItem` structure initialized to default values.</doc>
10287+ <source-position filename="../pango/pango-item.h" line="125"/>
10288+ <return-value transfer-ownership="full">
10289+ <doc xml:space="preserve"
10290+ filename="../pango/pango-item.c"
10291+ line="32">the newly allocated `PangoItem`, which should
10292+ be freed with [method@Pango.Item.free].</doc>
10293+ <type name="Item" c:type="PangoItem*"/>
10294+ </return-value>
10295+ </constructor>
10296+ <method name="apply_attrs"
10297+ c:identifier="pango_item_apply_attrs"
10298+ version="1.44">
10299+ <doc xml:space="preserve"
10300+ filename="../pango/pango-item.c"
10301+ line="211">Add attributes to a `PangoItem`.
10302+
10303+The idea is that you have attributes that don't affect itemization,
10304+such as font features, so you filter them out using
10305+[method@Pango.AttrList.filter], itemize your text, then reapply the
10306+attributes to the resulting items using this function.
10307+
10308+The @iter should be positioned before the range of the item,
10309+and will be advanced past it. This function is meant to be called
10310+in a loop over the items resulting from itemization, while passing
10311+the iter to each call.</doc>
10312+ <source-position filename="../pango/pango-item.h" line="137"/>
10313+ <return-value transfer-ownership="none">
10314+ <type name="none" c:type="void"/>
10315+ </return-value>
10316+ <parameters>
10317+ <instance-parameter name="item" transfer-ownership="none">
10318+ <doc xml:space="preserve"
10319+ filename="../pango/pango-item.c"
10320+ line="213">a `PangoItem`</doc>
10321+ <type name="Item" c:type="PangoItem*"/>
10322+ </instance-parameter>
10323+ <parameter name="iter" transfer-ownership="none">
10324+ <doc xml:space="preserve"
10325+ filename="../pango/pango-item.c"
10326+ line="214">a `PangoAttrIterator`</doc>
10327+ <type name="AttrIterator" c:type="PangoAttrIterator*"/>
10328+ </parameter>
10329+ </parameters>
10330+ </method>
10331+ <method name="copy" c:identifier="pango_item_copy">
10332+ <doc xml:space="preserve"
10333+ filename="../pango/pango-item.c"
10334+ line="45">Copy an existing `PangoItem` structure.</doc>
10335+ <source-position filename="../pango/pango-item.h" line="127"/>
10336+ <return-value transfer-ownership="full" nullable="1">
10337+ <doc xml:space="preserve"
10338+ filename="../pango/pango-item.c"
10339+ line="51">the newly allocated `PangoItem`</doc>
10340+ <type name="Item" c:type="PangoItem*"/>
10341+ </return-value>
10342+ <parameters>
10343+ <instance-parameter name="item"
10344+ transfer-ownership="none"
10345+ nullable="1"
10346+ allow-none="1">
10347+ <doc xml:space="preserve"
10348+ filename="../pango/pango-item.c"
10349+ line="47">a `PangoItem`</doc>
10350+ <type name="Item" c:type="PangoItem*"/>
10351+ </instance-parameter>
10352+ </parameters>
10353+ </method>
10354+ <method name="free" c:identifier="pango_item_free">
10355+ <doc xml:space="preserve"
10356+ filename="../pango/pango-item.c"
10357+ line="90">Free a `PangoItem` and all associated memory.</doc>
10358+ <source-position filename="../pango/pango-item.h" line="129"/>
10359+ <return-value transfer-ownership="none">
10360+ <type name="none" c:type="void"/>
10361+ </return-value>
10362+ <parameters>
10363+ <instance-parameter name="item"
10364+ transfer-ownership="none"
10365+ nullable="1"
10366+ allow-none="1">
10367+ <doc xml:space="preserve"
10368+ filename="../pango/pango-item.c"
10369+ line="92">a `PangoItem`, may be %NULL</doc>
10370+ <type name="Item" c:type="PangoItem*"/>
10371+ </instance-parameter>
10372+ </parameters>
10373+ </method>
10374+ <method name="split" c:identifier="pango_item_split">
10375+ <doc xml:space="preserve"
10376+ filename="../pango/pango-item.c"
10377+ line="124">Modifies @orig to cover only the text after @split_index, and
10378+returns a new item that covers the text before @split_index that
10379+used to be in @orig.
10380+
10381+You can think of @split_index as the length of the returned item.
10382+@split_index may not be 0, and it may not be greater than or equal
10383+to the length of @orig (that is, there must be at least one byte
10384+assigned to each item, you can't create a zero-length item).
10385+@split_offset is the length of the first item in chars, and must be
10386+provided because the text used to generate the item isn't available,
10387+so `pango_item_split()` can't count the char length of the split items
10388+itself.</doc>
10389+ <source-position filename="../pango/pango-item.h" line="132"/>
10390+ <return-value transfer-ownership="full">
10391+ <doc xml:space="preserve"
10392+ filename="../pango/pango-item.c"
10393+ line="144">new item representing text before @split_index, which
10394+ should be freed with [method@Pango.Item.free].</doc>
10395+ <type name="Item" c:type="PangoItem*"/>
10396+ </return-value>
10397+ <parameters>
10398+ <instance-parameter name="orig" transfer-ownership="none">
10399+ <doc xml:space="preserve"
10400+ filename="../pango/pango-item.c"
10401+ line="126">a `PangoItem`</doc>
10402+ <type name="Item" c:type="PangoItem*"/>
10403+ </instance-parameter>
10404+ <parameter name="split_index" transfer-ownership="none">
10405+ <doc xml:space="preserve"
10406+ filename="../pango/pango-item.c"
10407+ line="127">byte index of position to split item, relative to the
10408+ start of the item</doc>
10409+ <type name="gint" c:type="int"/>
10410+ </parameter>
10411+ <parameter name="split_offset" transfer-ownership="none">
10412+ <doc xml:space="preserve"
10413+ filename="../pango/pango-item.c"
10414+ line="129">number of chars between start of @orig and @split_index</doc>
10415+ <type name="gint" c:type="int"/>
10416+ </parameter>
10417+ </parameters>
10418+ </method>
10419+ </record>
10420+ <function-macro name="LAYOUT"
10421+ c:identifier="PANGO_LAYOUT"
10422+ introspectable="0">
10423+ <source-position filename="../pango/pango-layout.h" line="137"/>
10424+ <parameters>
10425+ <parameter name="object">
10426+ </parameter>
10427+ </parameters>
10428+ </function-macro>
10429+ <function-macro name="LAYOUT_CLASS"
10430+ c:identifier="PANGO_LAYOUT_CLASS"
10431+ introspectable="0">
10432+ <source-position filename="../pango/pango-layout.h" line="138"/>
10433+ <parameters>
10434+ <parameter name="klass">
10435+ </parameter>
10436+ </parameters>
10437+ </function-macro>
10438+ <function-macro name="LAYOUT_GET_CLASS"
10439+ c:identifier="PANGO_LAYOUT_GET_CLASS"
10440+ introspectable="0">
10441+ <source-position filename="../pango/pango-layout.h" line="141"/>
10442+ <parameters>
10443+ <parameter name="obj">
10444+ </parameter>
10445+ </parameters>
10446+ </function-macro>
10447+ <function-macro name="LBEARING"
10448+ c:identifier="PANGO_LBEARING"
10449+ introspectable="0">
10450+ <doc xml:space="preserve"
10451+ filename="../pango/pango-types.h"
10452+ line="201">Extracts the *left bearing* from a `PangoRectangle`
10453+representing glyph extents.
10454+
10455+The left bearing is the distance from the horizontal
10456+origin to the farthest left point of the character.
10457+This is positive for characters drawn completely to
10458+the right of the glyph origin.</doc>
10459+ <source-position filename="../pango/pango-types.h" line="227"/>
10460+ <parameters>
10461+ <parameter name="rect">
10462+ <doc xml:space="preserve"
10463+ filename="../pango/pango-types.h"
10464+ line="203">a `PangoRectangle`</doc>
10465+ </parameter>
10466+ </parameters>
10467+ </function-macro>
10468+ <record name="Language"
10469+ c:type="PangoLanguage"
10470+ glib:type-name="PangoLanguage"
10471+ glib:get-type="pango_language_get_type"
10472+ c:symbol-prefix="language">
10473+ <doc xml:space="preserve"
10474+ filename="../pango/pango-language.c"
10475+ line="136">The `PangoLanguage` structure is used to
10476+represent a language.
10477+
10478+`PangoLanguage` pointers can be efficiently
10479+copied and compared with each other.</doc>
10480+ <source-position filename="../pango/pango-types.h" line="46"/>
10481+ <method name="get_sample_string"
10482+ c:identifier="pango_language_get_sample_string">
10483+ <doc xml:space="preserve"
10484+ filename="../pango/pango-language.c"
10485+ line="563">Get a string that is representative of the characters needed to
10486+render a particular language.
10487+
10488+The sample text may be a pangram, but is not necessarily. It is chosen
10489+to be demonstrative of normal text in the language, as well as exposing
10490+font feature requirements unique to the language. It is suitable for use
10491+as sample text in a font selection dialog.
10492+
10493+If @language is %NULL, the default language as found by
10494+[func@Pango.Language.get_default] is used.
10495+
10496+If Pango does not have a sample string for @language, the classic
10497+"The quick brown fox..." is returned. This can be detected by
10498+comparing the returned pointer value to that returned for (non-existent)
10499+language code "xx". That is, compare to:
10500+
10501+```
10502+pango_language_get_sample_string (pango_language_from_string ("xx"))
10503+```</doc>
10504+ <source-position filename="../pango/pango-language.h" line="55"/>
10505+ <return-value transfer-ownership="none">
10506+ <doc xml:space="preserve"
10507+ filename="../pango/pango-language.c"
10508+ line="587">the sample string</doc>
10509+ <type name="utf8" c:type="const char*"/>
10510+ </return-value>
10511+ <parameters>
10512+ <instance-parameter name="language"
10513+ transfer-ownership="none"
10514+ nullable="1"
10515+ allow-none="1">
10516+ <doc xml:space="preserve"
10517+ filename="../pango/pango-language.c"
10518+ line="565">a `PangoLanguage`</doc>
10519+ <type name="Language" c:type="PangoLanguage*"/>
10520+ </instance-parameter>
10521+ </parameters>
10522+ </method>
10523+ <method name="get_scripts"
10524+ c:identifier="pango_language_get_scripts"
10525+ version="1.22">
10526+ <doc xml:space="preserve"
10527+ filename="../pango/pango-language.c"
10528+ line="617">Determines the scripts used to to write @language.
10529+
10530+If nothing is known about the language tag @language,
10531+or if @language is %NULL, then %NULL is returned.
10532+The list of scripts returned starts with the script that the
10533+language uses most and continues to the one it uses least.
10534+
10535+The value @num_script points at will be set to the number
10536+of scripts in the returned array (or zero if %NULL is returned).
10537+
10538+Most languages use only one script for writing, but there are
10539+some that use two (Latin and Cyrillic for example), and a few
10540+use three (Japanese for example). Applications should not make
10541+any assumptions on the maximum number of scripts returned
10542+though, except that it is positive if the return value is not
10543+%NULL, and it is a small number.
10544+
10545+The [method@Pango.Language.includes_script] function uses this
10546+function internally.
10547+
10548+Note: while the return value is declared as `PangoScript`, the
10549+returned values are from the `GUnicodeScript` enumeration, which
10550+may have more values. Callers need to handle unknown values.</doc>
10551+ <source-position filename="../pango/pango-language.h" line="65"/>
10552+ <return-value transfer-ownership="none" nullable="1">
10553+ <doc xml:space="preserve"
10554+ filename="../pango/pango-language.c"
10555+ line="647">
10556+ An array of `PangoScript` values, with the number of entries in
10557+ the array stored in @num_scripts, or %NULL if Pango does not have
10558+ any information about this particular language tag (also the case
10559+ if @language is %NULL).</doc>
10560+ <array length="0" zero-terminated="0" c:type="const PangoScript*">
10561+ <type name="Script" c:type="PangoScript"/>
10562+ </array>
10563+ </return-value>
10564+ <parameters>
10565+ <instance-parameter name="language"
10566+ transfer-ownership="none"
10567+ nullable="1"
10568+ allow-none="1">
10569+ <doc xml:space="preserve"
10570+ filename="../pango/pango-language.c"
10571+ line="619">a `PangoLanguage`</doc>
10572+ <type name="Language" c:type="PangoLanguage*"/>
10573+ </instance-parameter>
10574+ <parameter name="num_scripts"
10575+ direction="out"
10576+ caller-allocates="1"
10577+ transfer-ownership="full"
10578+ optional="1"
10579+ allow-none="1">
10580+ <doc xml:space="preserve"
10581+ filename="../pango/pango-language.c"
10582+ line="620">location to
10583+ return number of scripts</doc>
10584+ <type name="gint" c:type="int*"/>
10585+ </parameter>
10586+ </parameters>
10587+ </method>
10588+ <method name="includes_script"
10589+ c:identifier="pango_language_includes_script"
10590+ version="1.4">
10591+ <doc xml:space="preserve"
10592+ filename="../pango/pango-language.c"
10593+ line="688">Determines if @script is one of the scripts used to
10594+write @language.
10595+
10596+The returned value is conservative; if nothing is known about
10597+the language tag @language, %TRUE will be returned, since, as
10598+far as Pango knows, @script might be used to write @language.
10599+
10600+This routine is used in Pango's itemization process when
10601+determining if a supplied language tag is relevant to
10602+a particular section of text. It probably is not useful
10603+for applications in most circumstances.
10604+
10605+This function uses [method@Pango.Language.get_scripts] internally.</doc>
10606+ <source-position filename="../pango/pango-language.h" line="62"/>
10607+ <return-value transfer-ownership="none">
10608+ <doc xml:space="preserve"
10609+ filename="../pango/pango-language.c"
10610+ line="707">%TRUE if @script is one of the scripts used
10611+ to write @language or if nothing is known about @language
10612+ (including the case that @language is %NULL), %FALSE otherwise.</doc>
10613+ <type name="gboolean" c:type="gboolean"/>
10614+ </return-value>
10615+ <parameters>
10616+ <instance-parameter name="language"
10617+ transfer-ownership="none"
10618+ nullable="1"
10619+ allow-none="1">
10620+ <doc xml:space="preserve"
10621+ filename="../pango/pango-language.c"
10622+ line="690">a `PangoLanguage`</doc>
10623+ <type name="Language" c:type="PangoLanguage*"/>
10624+ </instance-parameter>
10625+ <parameter name="script" transfer-ownership="none">
10626+ <doc xml:space="preserve"
10627+ filename="../pango/pango-language.c"
10628+ line="691">a `PangoScript`</doc>
10629+ <type name="Script" c:type="PangoScript"/>
10630+ </parameter>
10631+ </parameters>
10632+ </method>
10633+ <method name="matches" c:identifier="pango_language_matches">
10634+ <doc xml:space="preserve"
10635+ filename="../pango/pango-language.c"
10636+ line="388">Checks if a language tag matches one of the elements in a list of
10637+language ranges.
10638+
10639+A language tag is considered to match a range in the list if the
10640+range is '*', the range is exactly the tag, or the range is a prefix
10641+of the tag, and the character after it in the tag is '-'.</doc>
10642+ <source-position filename="../pango/pango-language.h" line="58"/>
10643+ <return-value transfer-ownership="none">
10644+ <doc xml:space="preserve"
10645+ filename="../pango/pango-language.c"
10646+ line="404">%TRUE if a match was found</doc>
10647+ <type name="gboolean" c:type="gboolean"/>
10648+ </return-value>
10649+ <parameters>
10650+ <instance-parameter name="language"
10651+ transfer-ownership="none"
10652+ nullable="1"
10653+ allow-none="1">
10654+ <doc xml:space="preserve"
10655+ filename="../pango/pango-language.c"
10656+ line="390">a language tag (see [func@Pango.Language.from_string]),
10657+ %NULL is allowed and matches nothing but '*'</doc>
10658+ <type name="Language" c:type="PangoLanguage*"/>
10659+ </instance-parameter>
10660+ <parameter name="range_list" transfer-ownership="none">
10661+ <doc xml:space="preserve"
10662+ filename="../pango/pango-language.c"
10663+ line="392">a list of language ranges, separated by ';', ':',
10664+ ',', or space characters.
10665+ Each element must either be '*', or a RFC 3066 language range
10666+ canonicalized as by [func@Pango.Language.from_string]</doc>
10667+ <type name="utf8" c:type="const char*"/>
10668+ </parameter>
10669+ </parameters>
10670+ </method>
10671+ <method name="to_string" c:identifier="pango_language_to_string">
10672+ <doc xml:space="preserve"
10673+ filename="../pango/pango-language.c"
10674+ line="374">Gets the RFC-3066 format string representing the given language tag.
10675+
10676+Returns (transfer none): a string representing the language tag</doc>
10677+ <source-position filename="../pango/pango-language.h" line="49"/>
10678+ <return-value transfer-ownership="none">
10679+ <type name="utf8" c:type="const char*"/>
10680+ </return-value>
10681+ <parameters>
10682+ <instance-parameter name="language" transfer-ownership="none">
10683+ <doc xml:space="preserve"
10684+ filename="../pango/pango-language.c"
10685+ line="376">a language tag.</doc>
10686+ <type name="Language" c:type="PangoLanguage*"/>
10687+ </instance-parameter>
10688+ </parameters>
10689+ </method>
10690+ <function name="from_string" c:identifier="pango_language_from_string">
10691+ <doc xml:space="preserve"
10692+ filename="../pango/pango-language.c"
10693+ line="310">Convert a language tag to a `PangoLanguage`.
10694+
10695+The language tag must be in a RFC-3066 format. `PangoLanguage` pointers
10696+can be efficiently copied (copy the pointer) and compared with other
10697+language tags (compare the pointer.)
10698+
10699+This function first canonicalizes the string by converting it to
10700+lowercase, mapping '_' to '-', and stripping all characters other
10701+than letters and '-'.
10702+
10703+Use [func@Pango.Language.get_default] if you want to get the
10704+`PangoLanguage` for the current locale of the process.</doc>
10705+ <source-position filename="../pango/pango-language.h" line="46"/>
10706+ <return-value transfer-ownership="none" nullable="1">
10707+ <doc xml:space="preserve"
10708+ filename="../pango/pango-language.c"
10709+ line="327">a `PangoLanguage`</doc>
10710+ <type name="Language" c:type="PangoLanguage*"/>
10711+ </return-value>
10712+ <parameters>
10713+ <parameter name="language"
10714+ transfer-ownership="none"
10715+ nullable="1"
10716+ allow-none="1">
10717+ <doc xml:space="preserve"
10718+ filename="../pango/pango-language.c"
10719+ line="312">a string representing a language tag</doc>
10720+ <type name="utf8" c:type="const char*"/>
10721+ </parameter>
10722+ </parameters>
10723+ </function>
10724+ <function name="get_default"
10725+ c:identifier="pango_language_get_default"
10726+ version="1.16">
10727+ <doc xml:space="preserve"
10728+ filename="../pango/pango-language.c"
10729+ line="251">Returns the `PangoLanguage` for the current locale of the process.
10730+
10731+On Unix systems, this is the return value is derived from
10732+`setlocale (LC_CTYPE, NULL)`, and the user can
10733+affect this through the environment variables LC_ALL, LC_CTYPE or
10734+LANG (checked in that order). The locale string typically is in
10735+the form lang_COUNTRY, where lang is an ISO-639 language code, and
10736+COUNTRY is an ISO-3166 country code. For instance, sv_FI for
10737+Swedish as written in Finland or pt_BR for Portuguese as written in
10738+Brazil.
10739+
10740+On Windows, the C library does not use any such environment
10741+variables, and setting them won't affect the behavior of functions
10742+like ctime(). The user sets the locale through the Regional Options
10743+in the Control Panel. The C library (in the setlocale() function)
10744+does not use country and language codes, but country and language
10745+names spelled out in English.
10746+However, this function does check the above environment
10747+variables, and does return a Unix-style locale string based on
10748+either said environment variables or the thread's current locale.
10749+
10750+Your application should call `setlocale(LC_ALL, "")` for the user
10751+settings to take effect. GTK does this in its initialization
10752+functions automatically (by calling gtk_set_locale()).
10753+See the setlocale() manpage for more details.
10754+
10755+Note that the default language can change over the life of an application.
10756+
10757+Also note that this function will not do the right thing if you
10758+use per-thread locales with uselocale(). In that case, you should
10759+just call pango_language_from_string() yourself.</doc>
10760+ <source-position filename="../pango/pango-language.h" line="40"/>
10761+ <return-value transfer-ownership="none">
10762+ <doc xml:space="preserve"
10763+ filename="../pango/pango-language.c"
10764+ line="286">the default language as a `PangoLanguage`</doc>
10765+ <type name="Language" c:type="PangoLanguage*"/>
10766+ </return-value>
10767+ </function>
10768+ <function name="get_preferred"
10769+ c:identifier="pango_language_get_preferred"
10770+ version="1.48">
10771+ <doc xml:space="preserve"
10772+ filename="../pango/pango-language.c"
10773+ line="841">Returns the list of languages that the user prefers.
10774+
10775+The list is specified by the `PANGO_LANGUAGE` or `LANGUAGE`
10776+environment variables, in order of preference. Note that this
10777+list does not necessarily include the language returned by
10778+[func@Pango.Language.get_default].
10779+
10780+When choosing language-specific resources, such as the sample
10781+text returned by [method@Pango.Language.get_sample_string],
10782+you should first try the default language, followed by the
10783+languages returned by this function.</doc>
10784+ <source-position filename="../pango/pango-language.h" line="43"/>
10785+ <return-value transfer-ownership="none" nullable="1">
10786+ <doc xml:space="preserve"
10787+ filename="../pango/pango-language.c"
10788+ line="856">a %NULL-terminated array
10789+ of `PangoLanguage`*</doc>
10790+ <type name="Language" c:type="PangoLanguage**"/>
10791+ </return-value>
10792+ </function>
10793+ </record>
10794+ <class name="Layout"
10795+ c:symbol-prefix="layout"
10796+ c:type="PangoLayout"
10797+ parent="GObject.Object"
10798+ glib:type-name="PangoLayout"
10799+ glib:get-type="pango_layout_get_type"
10800+ glib:type-struct="LayoutClass">
10801+ <doc xml:space="preserve"
10802+ filename="../pango/pango-layout.c"
10803+ line="22">A `PangoLayout` structure represents an entire paragraph of text.
10804+
10805+While complete access to the layout capabilities of Pango is provided
10806+using the detailed interfaces for itemization and shaping, using
10807+that functionality directly involves writing a fairly large amount
10808+of code. `PangoLayout` provides a high-level driver for formatting
10809+entire paragraphs of text at once. This includes paragraph-level
10810+functionality such as line breaking, justification, alignment and
10811+ellipsization.
10812+
10813+A `PangoLayout` is initialized with a `PangoContext`, UTF-8 string
10814+and set of attributes for that string. Once that is done, the set of
10815+formatted lines can be extracted from the object, the layout can be
10816+rendered, and conversion between logical character positions within
10817+the layout's text, and the physical position of the resulting glyphs
10818+can be made.
10819+
10820+There are a number of parameters to adjust the formatting of a
10821+`PangoLayout`. The following image shows adjustable parameters
10822+(on the left) and font metrics (on the right):
10823+
10824+&lt;picture&gt;
10825+ &lt;source srcset="layout-dark.png" media="(prefers-color-scheme: dark)"&gt;
10826+ &lt;img alt="Pango Layout Parameters" src="layout-light.png"&gt;
10827+&lt;/picture&gt;
10828+
10829+The following images demonstrate the effect of alignment and
10830+justification on the layout of text:
10831+
10832+| | |
10833+| --- | --- |
10834+| ![align=left](align-left.png) | ![align=left, justify](align-left-justify.png) |
10835+| ![align=center](align-center.png) | ![align=center, justify](align-center-justify.png) |
10836+| ![align=right](align-right.png) | ![align=right, justify](align-right-justify.png) |
10837+
10838+
10839+It is possible, as well, to ignore the 2-D setup,
10840+and simply treat the results of a `PangoLayout` as a list of lines.</doc>
10841+ <source-position filename="../pango/pango-layout.h" line="33"/>
10842+ <constructor name="new" c:identifier="pango_layout_new">
10843+ <doc xml:space="preserve"
10844+ filename="../pango/pango-layout.c"
10845+ line="275">Create a new `PangoLayout` object with attributes initialized to
10846+default values for a particular `PangoContext`.</doc>
10847+ <source-position filename="../pango/pango-layout.h" line="150"/>
10848+ <return-value transfer-ownership="full">
10849+ <doc xml:space="preserve"
10850+ filename="../pango/pango-layout.c"
10851+ line="282">the newly allocated `PangoLayout`</doc>
10852+ <type name="Layout" c:type="PangoLayout*"/>
10853+ </return-value>
10854+ <parameters>
10855+ <parameter name="context" transfer-ownership="none">
10856+ <doc xml:space="preserve"
10857+ filename="../pango/pango-layout.c"
10858+ line="277">a `PangoContext`</doc>
10859+ <type name="Context" c:type="PangoContext*"/>
10860+ </parameter>
10861+ </parameters>
10862+ </constructor>
10863+ <function name="deserialize"
10864+ c:identifier="pango_layout_deserialize"
10865+ version="1.50"
10866+ throws="1">
10867+ <doc xml:space="preserve"
10868+ filename="../pango/serializer.c"
10869+ line="1662">Loads data previously created via [method@Pango.Layout.serialize].
10870+
10871+For a discussion of the supported format, see that function.
10872+
10873+Note: to verify that the returned layout is identical to
10874+the one that was serialized, you can compare @bytes to the
10875+result of serializing the layout again.</doc>
10876+ <source-position filename="../pango/pango-layout.h" line="424"/>
10877+ <return-value transfer-ownership="full" nullable="1">
10878+ <doc xml:space="preserve"
10879+ filename="../pango/serializer.c"
10880+ line="1677">a new `PangoLayout`</doc>
10881+ <type name="Layout" c:type="PangoLayout*"/>
10882+ </return-value>
10883+ <parameters>
10884+ <parameter name="context" transfer-ownership="none">
10885+ <doc xml:space="preserve"
10886+ filename="../pango/serializer.c"
10887+ line="1664">a `PangoContext`</doc>
10888+ <type name="Context" c:type="PangoContext*"/>
10889+ </parameter>
10890+ <parameter name="bytes" transfer-ownership="none">
10891+ <doc xml:space="preserve"
10892+ filename="../pango/serializer.c"
10893+ line="1666">the bytes containing the data</doc>
10894+ <type name="GLib.Bytes" c:type="GBytes*"/>
10895+ </parameter>
10896+ <parameter name="flags" transfer-ownership="none">
10897+ <doc xml:space="preserve"
10898+ filename="../pango/serializer.c"
10899+ line="1665">`PangoLayoutDeserializeFlags`</doc>
10900+ <type name="LayoutDeserializeFlags"
10901+ c:type="PangoLayoutDeserializeFlags"/>
10902+ </parameter>
10903+ </parameters>
10904+ </function>
10905+ <method name="context_changed"
10906+ c:identifier="pango_layout_context_changed">
10907+ <doc xml:space="preserve"
10908+ filename="../pango/pango-layout.c"
10909+ line="1491">Forces recomputation of any state in the `PangoLayout` that
10910+might depend on the layout's context.
10911+
10912+This function should be called if you make changes to the context
10913+subsequent to creating the layout.</doc>
10914+ <source-position filename="../pango/pango-layout.h" line="273"/>
10915+ <return-value transfer-ownership="none">
10916+ <type name="none" c:type="void"/>
10917+ </return-value>
10918+ <parameters>
10919+ <instance-parameter name="layout" transfer-ownership="none">
10920+ <doc xml:space="preserve"
10921+ filename="../pango/pango-layout.c"
10922+ line="1493">a `PangoLayout`</doc>
10923+ <type name="Layout" c:type="PangoLayout*"/>
10924+ </instance-parameter>
10925+ </parameters>
10926+ </method>
10927+ <method name="copy" c:identifier="pango_layout_copy">
10928+ <doc xml:space="preserve"
10929+ filename="../pango/pango-layout.c"
10930+ line="300">Creates a deep copy-by-value of the layout.
10931+
10932+The attribute list, tab array, and text from the original layout
10933+are all copied by value.</doc>
10934+ <source-position filename="../pango/pango-layout.h" line="152"/>
10935+ <return-value transfer-ownership="full">
10936+ <doc xml:space="preserve"
10937+ filename="../pango/pango-layout.c"
10938+ line="309">the newly allocated `PangoLayout`</doc>
10939+ <type name="Layout" c:type="PangoLayout*"/>
10940+ </return-value>
10941+ <parameters>
10942+ <instance-parameter name="src" transfer-ownership="none">
10943+ <doc xml:space="preserve"
10944+ filename="../pango/pango-layout.c"
10945+ line="302">a `PangoLayout`</doc>
10946+ <type name="Layout" c:type="PangoLayout*"/>
10947+ </instance-parameter>
10948+ </parameters>
10949+ </method>
10950+ <method name="get_alignment" c:identifier="pango_layout_get_alignment">
10951+ <doc xml:space="preserve"
10952+ filename="../pango/pango-layout.c"
10953+ line="991">Gets the alignment for the layout: how partial lines are
10954+positioned within the horizontal space available.</doc>
10955+ <source-position filename="../pango/pango-layout.h" line="243"/>
10956+ <return-value transfer-ownership="none">
10957+ <doc xml:space="preserve"
10958+ filename="../pango/pango-layout.c"
10959+ line="998">the alignment</doc>
10960+ <type name="Alignment" c:type="PangoAlignment"/>
10961+ </return-value>
10962+ <parameters>
10963+ <instance-parameter name="layout" transfer-ownership="none">
10964+ <doc xml:space="preserve"
10965+ filename="../pango/pango-layout.c"
10966+ line="993">a `PangoLayout`</doc>
10967+ <type name="Layout" c:type="PangoLayout*"/>
10968+ </instance-parameter>
10969+ </parameters>
10970+ </method>
10971+ <method name="get_attributes" c:identifier="pango_layout_get_attributes">
10972+ <doc xml:space="preserve"
10973+ filename="../pango/pango-layout.c"
10974+ line="736">Gets the attribute list for the layout, if any.</doc>
10975+ <source-position filename="../pango/pango-layout.h" line="161"/>
10976+ <return-value transfer-ownership="none" nullable="1">
10977+ <doc xml:space="preserve"
10978+ filename="../pango/pango-layout.c"
10979+ line="742">a `PangoAttrList`</doc>
10980+ <type name="AttrList" c:type="PangoAttrList*"/>
10981+ </return-value>
10982+ <parameters>
10983+ <instance-parameter name="layout" transfer-ownership="none">
10984+ <doc xml:space="preserve"
10985+ filename="../pango/pango-layout.c"
10986+ line="738">a `PangoLayout`</doc>
10987+ <type name="Layout" c:type="PangoLayout*"/>
10988+ </instance-parameter>
10989+ </parameters>
10990+ </method>
10991+ <method name="get_auto_dir"
10992+ c:identifier="pango_layout_get_auto_dir"
10993+ version="1.4">
10994+ <doc xml:space="preserve"
10995+ filename="../pango/pango-layout.c"
10996+ line="946">Gets whether to calculate the base direction for the layout
10997+according to its contents.
10998+
10999+See [method@Pango.Layout.set_auto_dir].</doc>
11000+ <source-position filename="../pango/pango-layout.h" line="238"/>
11001+ <return-value transfer-ownership="none">
11002+ <doc xml:space="preserve"
11003+ filename="../pango/pango-layout.c"
11004+ line="955">%TRUE if the bidirectional base direction
11005+ is computed from the layout's contents, %FALSE otherwise</doc>
11006+ <type name="gboolean" c:type="gboolean"/>
11007+ </return-value>
11008+ <parameters>
11009+ <instance-parameter name="layout" transfer-ownership="none">
11010+ <doc xml:space="preserve"
11011+ filename="../pango/pango-layout.c"
11012+ line="948">a `PangoLayout`</doc>
11013+ <type name="Layout" c:type="PangoLayout*"/>
11014+ </instance-parameter>
11015+ </parameters>
11016+ </method>
11017+ <method name="get_baseline"
11018+ c:identifier="pango_layout_get_baseline"
11019+ version="1.22">
11020+ <doc xml:space="preserve"
11021+ filename="../pango/pango-layout.c"
11022+ line="3200">Gets the Y position of baseline of the first line in @layout.</doc>
11023+ <source-position filename="../pango/pango-layout.h" line="339"/>
11024+ <return-value transfer-ownership="none">
11025+ <doc xml:space="preserve"
11026+ filename="../pango/pango-layout.c"
11027+ line="3206">baseline of first line, from top of @layout</doc>
11028+ <type name="gint" c:type="int"/>
11029+ </return-value>
11030+ <parameters>
11031+ <instance-parameter name="layout" transfer-ownership="none">
11032+ <doc xml:space="preserve"
11033+ filename="../pango/pango-layout.c"
11034+ line="3202">a `PangoLayout`</doc>
11035+ <type name="Layout" c:type="PangoLayout*"/>
11036+ </instance-parameter>
11037+ </parameters>
11038+ </method>
11039+ <method name="get_caret_pos"
11040+ c:identifier="pango_layout_get_caret_pos"
11041+ version="1.50">
11042+ <doc xml:space="preserve"
11043+ filename="../pango/pango-layout.c"
11044+ line="2668">Given an index within a layout, determines the positions that of the
11045+strong and weak cursors if the insertion point is at that index.
11046+
11047+This is a variant of [method@Pango.Layout.get_cursor_pos] that applies
11048+font metric information about caret slope and offset to the positions
11049+it returns.
11050+
11051+&lt;picture&gt;
11052+ &lt;source srcset="caret-metrics-dark.png" media="(prefers-color-scheme: dark)"&gt;
11053+ &lt;img alt="Caret metrics" src="caret-metrics-light.png"&gt;
11054+&lt;/picture&gt;</doc>
11055+ <source-position filename="../pango/pango-layout.h" line="303"/>
11056+ <return-value transfer-ownership="none">
11057+ <type name="none" c:type="void"/>
11058+ </return-value>
11059+ <parameters>
11060+ <instance-parameter name="layout" transfer-ownership="none">
11061+ <doc xml:space="preserve"
11062+ filename="../pango/pango-layout.c"
11063+ line="2670">a `PangoLayout`</doc>
11064+ <type name="Layout" c:type="PangoLayout*"/>
11065+ </instance-parameter>
11066+ <parameter name="index_" transfer-ownership="none">
11067+ <doc xml:space="preserve"
11068+ filename="../pango/pango-layout.c"
11069+ line="2671">the byte index of the cursor</doc>
11070+ <type name="gint" c:type="int"/>
11071+ </parameter>
11072+ <parameter name="strong_pos"
11073+ direction="out"
11074+ caller-allocates="1"
11075+ transfer-ownership="none"
11076+ optional="1"
11077+ allow-none="1">
11078+ <doc xml:space="preserve"
11079+ filename="../pango/pango-layout.c"
11080+ line="2672">location to store the strong cursor position</doc>
11081+ <type name="Rectangle" c:type="PangoRectangle*"/>
11082+ </parameter>
11083+ <parameter name="weak_pos"
11084+ direction="out"
11085+ caller-allocates="1"
11086+ transfer-ownership="none"
11087+ optional="1"
11088+ allow-none="1">
11089+ <doc xml:space="preserve"
11090+ filename="../pango/pango-layout.c"
11091+ line="2673">location to store the weak cursor position</doc>
11092+ <type name="Rectangle" c:type="PangoRectangle*"/>
11093+ </parameter>
11094+ </parameters>
11095+ </method>
11096+ <method name="get_character_count"
11097+ c:identifier="pango_layout_get_character_count"
11098+ version="1.30">
11099+ <doc xml:space="preserve"
11100+ filename="../pango/pango-layout.c"
11101+ line="1314">Returns the number of Unicode characters in the
11102+the text of @layout.</doc>
11103+ <source-position filename="../pango/pango-layout.h" line="171"/>
11104+ <return-value transfer-ownership="none">
11105+ <doc xml:space="preserve"
11106+ filename="../pango/pango-layout.c"
11107+ line="1321">the number of Unicode characters
11108+ in the text of @layout</doc>
11109+ <type name="gint" c:type="gint"/>
11110+ </return-value>
11111+ <parameters>
11112+ <instance-parameter name="layout" transfer-ownership="none">
11113+ <doc xml:space="preserve"
11114+ filename="../pango/pango-layout.c"
11115+ line="1316">a `PangoLayout`</doc>
11116+ <type name="Layout" c:type="PangoLayout*"/>
11117+ </instance-parameter>
11118+ </parameters>
11119+ </method>
11120+ <method name="get_context" c:identifier="pango_layout_get_context">
11121+ <doc xml:space="preserve"
11122+ filename="../pango/pango-layout.c"
11123+ line="338">Retrieves the `PangoContext` used for this layout.</doc>
11124+ <source-position filename="../pango/pango-layout.h" line="155"/>
11125+ <return-value transfer-ownership="none">
11126+ <doc xml:space="preserve"
11127+ filename="../pango/pango-layout.c"
11128+ line="344">the `PangoContext` for the layout</doc>
11129+ <type name="Context" c:type="PangoContext*"/>
11130+ </return-value>
11131+ <parameters>
11132+ <instance-parameter name="layout" transfer-ownership="none">
11133+ <doc xml:space="preserve"
11134+ filename="../pango/pango-layout.c"
11135+ line="340">a `PangoLayout`</doc>
11136+ <type name="Layout" c:type="PangoLayout*"/>
11137+ </instance-parameter>
11138+ </parameters>
11139+ </method>
11140+ <method name="get_cursor_pos" c:identifier="pango_layout_get_cursor_pos">
11141+ <doc xml:space="preserve"
11142+ filename="../pango/pango-layout.c"
11143+ line="2545">Given an index within a layout, determines the positions that of the
11144+strong and weak cursors if the insertion point is at that index.
11145+
11146+The position of each cursor is stored as a zero-width rectangle
11147+with the height of the run extents.
11148+
11149+&lt;picture&gt;
11150+ &lt;source srcset="cursor-positions-dark.png" media="(prefers-color-scheme: dark)"&gt;
11151+ &lt;img alt="Cursor positions" src="cursor-positions-light.png"&gt;
11152+&lt;/picture&gt;
11153+
11154+The strong cursor location is the location where characters of the
11155+directionality equal to the base direction of the layout are inserted.
11156+The weak cursor location is the location where characters of the
11157+directionality opposite to the base direction of the layout are inserted.
11158+
11159+The following example shows text with both a strong and a weak cursor.
11160+
11161+&lt;picture&gt;
11162+ &lt;source srcset="split-cursor-dark.png" media="(prefers-color-scheme: dark)"&gt;
11163+ &lt;img alt="Strong and weak cursors" src="split-cursor-light.png"&gt;
11164+&lt;/picture&gt;
11165+
11166+The strong cursor has a little arrow pointing to the right, the weak
11167+cursor to the left. Typing a 'c' in this situation will insert the
11168+character after the 'b', and typing another Hebrew character, like 'ג',
11169+will insert it at the end.</doc>
11170+ <source-position filename="../pango/pango-layout.h" line="297"/>
11171+ <return-value transfer-ownership="none">
11172+ <type name="none" c:type="void"/>
11173+ </return-value>
11174+ <parameters>
11175+ <instance-parameter name="layout" transfer-ownership="none">
11176+ <doc xml:space="preserve"
11177+ filename="../pango/pango-layout.c"
11178+ line="2547">a `PangoLayout`</doc>
11179+ <type name="Layout" c:type="PangoLayout*"/>
11180+ </instance-parameter>
11181+ <parameter name="index_" transfer-ownership="none">
11182+ <doc xml:space="preserve"
11183+ filename="../pango/pango-layout.c"
11184+ line="2548">the byte index of the cursor</doc>
11185+ <type name="gint" c:type="int"/>
11186+ </parameter>
11187+ <parameter name="strong_pos"
11188+ direction="out"
11189+ caller-allocates="1"
11190+ transfer-ownership="none"
11191+ optional="1"
11192+ allow-none="1">
11193+ <doc xml:space="preserve"
11194+ filename="../pango/pango-layout.c"
11195+ line="2549">location to store the strong cursor position</doc>
11196+ <type name="Rectangle" c:type="PangoRectangle*"/>
11197+ </parameter>
11198+ <parameter name="weak_pos"
11199+ direction="out"
11200+ caller-allocates="1"
11201+ transfer-ownership="none"
11202+ optional="1"
11203+ allow-none="1">
11204+ <doc xml:space="preserve"
11205+ filename="../pango/pango-layout.c"
11206+ line="2550">location to store the weak cursor position</doc>
11207+ <type name="Rectangle" c:type="PangoRectangle*"/>
11208+ </parameter>
11209+ </parameters>
11210+ </method>
11211+ <method name="get_direction"
11212+ c:identifier="pango_layout_get_direction"
11213+ version="1.46">
11214+ <doc xml:space="preserve"
11215+ filename="../pango/pango-layout.c"
11216+ line="2520">Gets the text direction at the given character position in @layout.</doc>
11217+ <source-position filename="../pango/pango-layout.h" line="269"/>
11218+ <return-value transfer-ownership="none">
11219+ <doc xml:space="preserve"
11220+ filename="../pango/pango-layout.c"
11221+ line="2527">the text direction at @index</doc>
11222+ <type name="Direction" c:type="PangoDirection"/>
11223+ </return-value>
11224+ <parameters>
11225+ <instance-parameter name="layout" transfer-ownership="none">
11226+ <doc xml:space="preserve"
11227+ filename="../pango/pango-layout.c"
11228+ line="2522">a `PangoLayout`</doc>
11229+ <type name="Layout" c:type="PangoLayout*"/>
11230+ </instance-parameter>
11231+ <parameter name="index" transfer-ownership="none">
11232+ <doc xml:space="preserve"
11233+ filename="../pango/pango-layout.c"
11234+ line="2523">the byte index of the char</doc>
11235+ <type name="gint" c:type="int"/>
11236+ </parameter>
11237+ </parameters>
11238+ </method>
11239+ <method name="get_ellipsize"
11240+ c:identifier="pango_layout_get_ellipsize"
11241+ version="1.6">
11242+ <doc xml:space="preserve"
11243+ filename="../pango/pango-layout.c"
11244+ line="1158">Gets the type of ellipsization being performed for @layout.
11245+
11246+See [method@Pango.Layout.set_ellipsize].
11247+
11248+Use [method@Pango.Layout.is_ellipsized] to query whether any
11249+paragraphs were actually ellipsized.</doc>
11250+ <source-position filename="../pango/pango-layout.h" line="261"/>
11251+ <return-value transfer-ownership="none">
11252+ <doc xml:space="preserve"
11253+ filename="../pango/pango-layout.c"
11254+ line="1169">the current ellipsization mode for @layout</doc>
11255+ <type name="EllipsizeMode" c:type="PangoEllipsizeMode"/>
11256+ </return-value>
11257+ <parameters>
11258+ <instance-parameter name="layout" transfer-ownership="none">
11259+ <doc xml:space="preserve"
11260+ filename="../pango/pango-layout.c"
11261+ line="1160">a `PangoLayout`</doc>
11262+ <type name="Layout" c:type="PangoLayout*"/>
11263+ </instance-parameter>
11264+ </parameters>
11265+ </method>
11266+ <method name="get_extents" c:identifier="pango_layout_get_extents">
11267+ <doc xml:space="preserve"
11268+ filename="../pango/pango-layout.c"
11269+ line="3089">Computes the logical and ink extents of @layout.
11270+
11271+Logical extents are usually what you want for positioning things. Note
11272+that both extents may have non-zero x and y. You may want to use those
11273+to offset where you render the layout. Not doing that is a very typical
11274+bug that shows up as right-to-left layouts not being correctly positioned
11275+in a layout with a set width.
11276+
11277+The extents are given in layout coordinates and in Pango units; layout
11278+coordinates begin at the top left corner of the layout.</doc>
11279+ <source-position filename="../pango/pango-layout.h" line="323"/>
11280+ <return-value transfer-ownership="none">
11281+ <type name="none" c:type="void"/>
11282+ </return-value>
11283+ <parameters>
11284+ <instance-parameter name="layout" transfer-ownership="none">
11285+ <doc xml:space="preserve"
11286+ filename="../pango/pango-layout.c"
11287+ line="3091">a `PangoLayout`</doc>
11288+ <type name="Layout" c:type="PangoLayout*"/>
11289+ </instance-parameter>
11290+ <parameter name="ink_rect"
11291+ direction="out"
11292+ caller-allocates="1"
11293+ transfer-ownership="none"
11294+ optional="1"
11295+ allow-none="1">
11296+ <doc xml:space="preserve"
11297+ filename="../pango/pango-layout.c"
11298+ line="3092">rectangle used to store the extents of the
11299+ layout as drawn</doc>
11300+ <type name="Rectangle" c:type="PangoRectangle*"/>
11301+ </parameter>
11302+ <parameter name="logical_rect"
11303+ direction="out"
11304+ caller-allocates="1"
11305+ transfer-ownership="none"
11306+ optional="1"
11307+ allow-none="1">
11308+ <doc xml:space="preserve"
11309+ filename="../pango/pango-layout.c"
11310+ line="3094">rectangle used to store the logical
11311+ extents of the layout</doc>
11312+ <type name="Rectangle" c:type="PangoRectangle*"/>
11313+ </parameter>
11314+ </parameters>
11315+ </method>
11316+ <method name="get_font_description"
11317+ c:identifier="pango_layout_get_font_description"
11318+ version="1.8">
11319+ <doc xml:space="preserve"
11320+ filename="../pango/pango-layout.c"
11321+ line="782">Gets the font description for the layout, if any.</doc>
11322+ <source-position filename="../pango/pango-layout.h" line="190"/>
11323+ <return-value transfer-ownership="none" nullable="1">
11324+ <doc xml:space="preserve"
11325+ filename="../pango/pango-layout.c"
11326+ line="788">a pointer to the
11327+ layout's font description, or %NULL if the font description
11328+ from the layout's context is inherited.</doc>
11329+ <type name="FontDescription" c:type="const PangoFontDescription*"/>
11330+ </return-value>
11331+ <parameters>
11332+ <instance-parameter name="layout" transfer-ownership="none">
11333+ <doc xml:space="preserve"
11334+ filename="../pango/pango-layout.c"
11335+ line="784">a `PangoLayout`</doc>
11336+ <type name="Layout" c:type="PangoLayout*"/>
11337+ </instance-parameter>
11338+ </parameters>
11339+ </method>
11340+ <method name="get_height"
11341+ c:identifier="pango_layout_get_height"
11342+ version="1.20">
11343+ <doc xml:space="preserve"
11344+ filename="../pango/pango-layout.c"
11345+ line="451">Gets the height of layout used for ellipsization.
11346+
11347+See [method@Pango.Layout.set_height] for details.</doc>
11348+ <source-position filename="../pango/pango-layout.h" line="201"/>
11349+ <return-value transfer-ownership="none">
11350+ <doc xml:space="preserve"
11351+ filename="../pango/pango-layout.c"
11352+ line="459">the height, in Pango units if positive,
11353+ or number of lines if negative.</doc>
11354+ <type name="gint" c:type="int"/>
11355+ </return-value>
11356+ <parameters>
11357+ <instance-parameter name="layout" transfer-ownership="none">
11358+ <doc xml:space="preserve"
11359+ filename="../pango/pango-layout.c"
11360+ line="453">a `PangoLayout`</doc>
11361+ <type name="Layout" c:type="PangoLayout*"/>
11362+ </instance-parameter>
11363+ </parameters>
11364+ </method>
11365+ <method name="get_indent" c:identifier="pango_layout_get_indent">
11366+ <doc xml:space="preserve"
11367+ filename="../pango/pango-layout.c"
11368+ line="573">Gets the paragraph indent width in Pango units.
11369+
11370+A negative value indicates a hanging indentation.</doc>
11371+ <source-position filename="../pango/pango-layout.h" line="213"/>
11372+ <return-value transfer-ownership="none">
11373+ <doc xml:space="preserve"
11374+ filename="../pango/pango-layout.c"
11375+ line="581">the indent in Pango units</doc>
11376+ <type name="gint" c:type="int"/>
11377+ </return-value>
11378+ <parameters>
11379+ <instance-parameter name="layout" transfer-ownership="none">
11380+ <doc xml:space="preserve"
11381+ filename="../pango/pango-layout.c"
11382+ line="575">a `PangoLayout`</doc>
11383+ <type name="Layout" c:type="PangoLayout*"/>
11384+ </instance-parameter>
11385+ </parameters>
11386+ </method>
11387+ <method name="get_iter" c:identifier="pango_layout_get_iter">
11388+ <doc xml:space="preserve"
11389+ filename="../pango/pango-layout.c"
11390+ line="7080">Returns an iterator to iterate over the visual extents of the layout.</doc>
11391+ <source-position filename="../pango/pango-layout.h" line="486"/>
11392+ <return-value transfer-ownership="full">
11393+ <doc xml:space="preserve"
11394+ filename="../pango/pango-layout.c"
11395+ line="7086">the new `PangoLayoutIter`</doc>
11396+ <type name="LayoutIter" c:type="PangoLayoutIter*"/>
11397+ </return-value>
11398+ <parameters>
11399+ <instance-parameter name="layout" transfer-ownership="none">
11400+ <doc xml:space="preserve"
11401+ filename="../pango/pango-layout.c"
11402+ line="7082">a `PangoLayout`</doc>
11403+ <type name="Layout" c:type="PangoLayout*"/>
11404+ </instance-parameter>
11405+ </parameters>
11406+ </method>
11407+ <method name="get_justify" c:identifier="pango_layout_get_justify">
11408+ <doc xml:space="preserve"
11409+ filename="../pango/pango-layout.c"
11410+ line="842">Gets whether each complete line should be stretched to fill the entire
11411+width of the layout.</doc>
11412+ <source-position filename="../pango/pango-layout.h" line="228"/>
11413+ <return-value transfer-ownership="none">
11414+ <doc xml:space="preserve"
11415+ filename="../pango/pango-layout.c"
11416+ line="849">the justify value</doc>
11417+ <type name="gboolean" c:type="gboolean"/>
11418+ </return-value>
11419+ <parameters>
11420+ <instance-parameter name="layout" transfer-ownership="none">
11421+ <doc xml:space="preserve"
11422+ filename="../pango/pango-layout.c"
11423+ line="844">a `PangoLayout`</doc>
11424+ <type name="Layout" c:type="PangoLayout*"/>
11425+ </instance-parameter>
11426+ </parameters>
11427+ </method>
11428+ <method name="get_justify_last_line"
11429+ c:identifier="pango_layout_get_justify_last_line"
11430+ version="1.50">
11431+ <doc xml:space="preserve"
11432+ filename="../pango/pango-layout.c"
11433+ line="888">Gets whether the last line should be stretched
11434+to fill the entire width of the layout.</doc>
11435+ <source-position filename="../pango/pango-layout.h" line="233"/>
11436+ <return-value transfer-ownership="none">
11437+ <doc xml:space="preserve"
11438+ filename="../pango/pango-layout.c"
11439+ line="895">the justify value</doc>
11440+ <type name="gboolean" c:type="gboolean"/>
11441+ </return-value>
11442+ <parameters>
11443+ <instance-parameter name="layout" transfer-ownership="none">
11444+ <doc xml:space="preserve"
11445+ filename="../pango/pango-layout.c"
11446+ line="890">a `PangoLayout`</doc>
11447+ <type name="Layout" c:type="PangoLayout*"/>
11448+ </instance-parameter>
11449+ </parameters>
11450+ </method>
11451+ <method name="get_line" c:identifier="pango_layout_get_line">
11452+ <doc xml:space="preserve"
11453+ filename="../pango/pango-layout.c"
11454+ line="1688">Retrieves a particular line from a `PangoLayout`.
11455+
11456+Use the faster [method@Pango.Layout.get_line_readonly] if you do not
11457+plan to modify the contents of the line (glyphs, glyph widths, etc.).</doc>
11458+ <source-position filename="../pango/pango-layout.h" line="344"/>
11459+ <return-value transfer-ownership="none" nullable="1">
11460+ <doc xml:space="preserve"
11461+ filename="../pango/pango-layout.c"
11462+ line="1699">the requested `PangoLayoutLine`,
11463+ or %NULL if the index is out of range. This layout line can be ref'ed
11464+ and retained, but will become invalid if changes are made to the
11465+ `PangoLayout`.</doc>
11466+ <type name="LayoutLine" c:type="PangoLayoutLine*"/>
11467+ </return-value>
11468+ <parameters>
11469+ <instance-parameter name="layout" transfer-ownership="none">
11470+ <doc xml:space="preserve"
11471+ filename="../pango/pango-layout.c"
11472+ line="1690">a `PangoLayout`</doc>
11473+ <type name="Layout" c:type="PangoLayout*"/>
11474+ </instance-parameter>
11475+ <parameter name="line" transfer-ownership="none">
11476+ <doc xml:space="preserve"
11477+ filename="../pango/pango-layout.c"
11478+ line="1691">the index of a line, which must be between 0 and
11479+ `pango_layout_get_line_count(layout) - 1`, inclusive.</doc>
11480+ <type name="gint" c:type="int"/>
11481+ </parameter>
11482+ </parameters>
11483+ </method>
11484+ <method name="get_line_count" c:identifier="pango_layout_get_line_count">
11485+ <doc xml:space="preserve"
11486+ filename="../pango/pango-layout.c"
11487+ line="1611">Retrieves the count of lines for the @layout.</doc>
11488+ <source-position filename="../pango/pango-layout.h" line="342"/>
11489+ <return-value transfer-ownership="none">
11490+ <doc xml:space="preserve"
11491+ filename="../pango/pango-layout.c"
11492+ line="1617">the line count</doc>
11493+ <type name="gint" c:type="int"/>
11494+ </return-value>
11495+ <parameters>
11496+ <instance-parameter name="layout" transfer-ownership="none">
11497+ <doc xml:space="preserve"
11498+ filename="../pango/pango-layout.c"
11499+ line="1613">`PangoLayout`</doc>
11500+ <type name="Layout" c:type="PangoLayout*"/>
11501+ </instance-parameter>
11502+ </parameters>
11503+ </method>
11504+ <method name="get_line_readonly"
11505+ c:identifier="pango_layout_get_line_readonly"
11506+ version="1.16">
11507+ <doc xml:space="preserve"
11508+ filename="../pango/pango-layout.c"
11509+ line="1729">Retrieves a particular line from a `PangoLayout`.
11510+
11511+This is a faster alternative to [method@Pango.Layout.get_line],
11512+but the user is not expected to modify the contents of the line
11513+(glyphs, glyph widths, etc.).</doc>
11514+ <source-position filename="../pango/pango-layout.h" line="347"/>
11515+ <return-value transfer-ownership="none" nullable="1">
11516+ <doc xml:space="preserve"
11517+ filename="../pango/pango-layout.c"
11518+ line="1741">the requested `PangoLayoutLine`,
11519+ or %NULL if the index is out of range. This layout line can be ref'ed
11520+ and retained, but will become invalid if changes are made to the
11521+ `PangoLayout`. No changes should be made to the line.</doc>
11522+ <type name="LayoutLine" c:type="PangoLayoutLine*"/>
11523+ </return-value>
11524+ <parameters>
11525+ <instance-parameter name="layout" transfer-ownership="none">
11526+ <doc xml:space="preserve"
11527+ filename="../pango/pango-layout.c"
11528+ line="1731">a `PangoLayout`</doc>
11529+ <type name="Layout" c:type="PangoLayout*"/>
11530+ </instance-parameter>
11531+ <parameter name="line" transfer-ownership="none">
11532+ <doc xml:space="preserve"
11533+ filename="../pango/pango-layout.c"
11534+ line="1732">the index of a line, which must be between 0 and
11535+ `pango_layout_get_line_count(layout) - 1`, inclusive.</doc>
11536+ <type name="gint" c:type="int"/>
11537+ </parameter>
11538+ </parameters>
11539+ </method>
11540+ <method name="get_line_spacing"
11541+ c:identifier="pango_layout_get_line_spacing"
11542+ version="1.44">
11543+ <doc xml:space="preserve"
11544+ filename="../pango/pango-layout.c"
11545+ line="677">Gets the line spacing factor of @layout.
11546+
11547+See [method@Pango.Layout.set_line_spacing].</doc>
11548+ <source-position filename="../pango/pango-layout.h" line="223"/>
11549+ <return-value transfer-ownership="none">
11550+ <type name="gfloat" c:type="float"/>
11551+ </return-value>
11552+ <parameters>
11553+ <instance-parameter name="layout" transfer-ownership="none">
11554+ <doc xml:space="preserve"
11555+ filename="../pango/pango-layout.c"
11556+ line="679">a `PangoLayout`</doc>
11557+ <type name="Layout" c:type="PangoLayout*"/>
11558+ </instance-parameter>
11559+ </parameters>
11560+ </method>
11561+ <method name="get_lines" c:identifier="pango_layout_get_lines">
11562+ <doc xml:space="preserve"
11563+ filename="../pango/pango-layout.c"
11564+ line="1628">Returns the lines of the @layout as a list.
11565+
11566+Use the faster [method@Pango.Layout.get_lines_readonly] if you do not
11567+plan to modify the contents of the lines (glyphs, glyph widths, etc.).</doc>
11568+ <source-position filename="../pango/pango-layout.h" line="350"/>
11569+ <return-value transfer-ownership="none">
11570+ <doc xml:space="preserve"
11571+ filename="../pango/pango-layout.c"
11572+ line="1637">a `GSList`
11573+ containing the lines in the layout. This points to internal data of the
11574+ `PangoLayout` and must be used with care. It will become invalid on any
11575+ change to the layout's text or properties.</doc>
11576+ <type name="GLib.SList" c:type="GSList*">
11577+ <type name="LayoutLine"/>
11578+ </type>
11579+ </return-value>
11580+ <parameters>
11581+ <instance-parameter name="layout" transfer-ownership="none">
11582+ <doc xml:space="preserve"
11583+ filename="../pango/pango-layout.c"
11584+ line="1630">a `PangoLayout`</doc>
11585+ <type name="Layout" c:type="PangoLayout*"/>
11586+ </instance-parameter>
11587+ </parameters>
11588+ </method>
11589+ <method name="get_lines_readonly"
11590+ c:identifier="pango_layout_get_lines_readonly"
11591+ version="1.16">
11592+ <doc xml:space="preserve"
11593+ filename="../pango/pango-layout.c"
11594+ line="1662">Returns the lines of the @layout as a list.
11595+
11596+This is a faster alternative to [method@Pango.Layout.get_lines],
11597+but the user is not expected to modify the contents of the lines
11598+(glyphs, glyph widths, etc.).</doc>
11599+ <source-position filename="../pango/pango-layout.h" line="352"/>
11600+ <return-value transfer-ownership="none">
11601+ <doc xml:space="preserve"
11602+ filename="../pango/pango-layout.c"
11603+ line="1672">a `GSList`
11604+ containing the lines in the layout. This points to internal data of the
11605+ `PangoLayout` and must be used with care. It will become invalid on any
11606+ change to the layout's text or properties. No changes should be made to
11607+ the lines.</doc>
11608+ <type name="GLib.SList" c:type="GSList*">
11609+ <type name="LayoutLine"/>
11610+ </type>
11611+ </return-value>
11612+ <parameters>
11613+ <instance-parameter name="layout" transfer-ownership="none">
11614+ <doc xml:space="preserve"
11615+ filename="../pango/pango-layout.c"
11616+ line="1664">a `PangoLayout`</doc>
11617+ <type name="Layout" c:type="PangoLayout*"/>
11618+ </instance-parameter>
11619+ </parameters>
11620+ </method>
11621+ <method name="get_log_attrs" c:identifier="pango_layout_get_log_attrs">
11622+ <doc xml:space="preserve"
11623+ filename="../pango/pango-layout.c"
11624+ line="1538">Retrieves an array of logical attributes for each character in
11625+the @layout.</doc>
11626+ <source-position filename="../pango/pango-layout.h" line="278"/>
11627+ <return-value transfer-ownership="none">
11628+ <type name="none" c:type="void"/>
11629+ </return-value>
11630+ <parameters>
11631+ <instance-parameter name="layout" transfer-ownership="none">
11632+ <doc xml:space="preserve"
11633+ filename="../pango/pango-layout.c"
11634+ line="1540">a `PangoLayout`</doc>
11635+ <type name="Layout" c:type="PangoLayout*"/>
11636+ </instance-parameter>
11637+ <parameter name="attrs"
11638+ direction="out"
11639+ caller-allocates="0"
11640+ transfer-ownership="container">
11641+ <doc xml:space="preserve"
11642+ filename="../pango/pango-layout.c"
11643+ line="1541">
11644+ location to store a pointer to an array of logical attributes.
11645+ This value must be freed with g_free().</doc>
11646+ <array length="1" zero-terminated="0" c:type="PangoLogAttr**">
11647+ <type name="LogAttr" c:type="PangoLogAttr*"/>
11648+ </array>
11649+ </parameter>
11650+ <parameter name="n_attrs"
11651+ direction="out"
11652+ caller-allocates="0"
11653+ transfer-ownership="full">
11654+ <doc xml:space="preserve"
11655+ filename="../pango/pango-layout.c"
11656+ line="1544">location to store the number of the attributes in the
11657+ array. (The stored value will be one more than the total number
11658+ of characters in the layout, since there need to be attributes
11659+ corresponding to both the position before the first character
11660+ and the position after the last character.)</doc>
11661+ <type name="gint" c:type="gint*"/>
11662+ </parameter>
11663+ </parameters>
11664+ </method>
11665+ <method name="get_log_attrs_readonly"
11666+ c:identifier="pango_layout_get_log_attrs_readonly"
11667+ version="1.30">
11668+ <doc xml:space="preserve"
11669+ filename="../pango/pango-layout.c"
11670+ line="1572">Retrieves an array of logical attributes for each character in
11671+the @layout.
11672+
11673+This is a faster alternative to [method@Pango.Layout.get_log_attrs].
11674+The returned array is part of @layout and must not be modified.
11675+Modifying the layout will invalidate the returned array.
11676+
11677+The number of attributes returned in @n_attrs will be one more
11678+than the total number of characters in the layout, since there
11679+need to be attributes corresponding to both the position before
11680+the first character and the position after the last character.</doc>
11681+ <source-position filename="../pango/pango-layout.h" line="283"/>
11682+ <return-value transfer-ownership="none">
11683+ <doc xml:space="preserve"
11684+ filename="../pango/pango-layout.c"
11685+ line="1590">an array of logical attributes</doc>
11686+ <array length="0" zero-terminated="0" c:type="const PangoLogAttr*">
11687+ <type name="LogAttr" c:type="PangoLogAttr"/>
11688+ </array>
11689+ </return-value>
11690+ <parameters>
11691+ <instance-parameter name="layout" transfer-ownership="none">
11692+ <doc xml:space="preserve"
11693+ filename="../pango/pango-layout.c"
11694+ line="1574">a `PangoLayout`</doc>
11695+ <type name="Layout" c:type="PangoLayout*"/>
11696+ </instance-parameter>
11697+ <parameter name="n_attrs"
11698+ direction="out"
11699+ caller-allocates="0"
11700+ transfer-ownership="full">
11701+ <doc xml:space="preserve"
11702+ filename="../pango/pango-layout.c"
11703+ line="1575">location to store the number of the attributes in
11704+ the array</doc>
11705+ <type name="gint" c:type="gint*"/>
11706+ </parameter>
11707+ </parameters>
11708+ </method>
11709+ <method name="get_pixel_extents"
11710+ c:identifier="pango_layout_get_pixel_extents">
11711+ <doc xml:space="preserve"
11712+ filename="../pango/pango-layout.c"
11713+ line="3118">Computes the logical and ink extents of @layout in device units.
11714+
11715+This function just calls [method@Pango.Layout.get_extents] followed by
11716+two [func@extents_to_pixels] calls, rounding @ink_rect and @logical_rect
11717+such that the rounded rectangles fully contain the unrounded one (that is,
11718+passes them as first argument to [func@Pango.extents_to_pixels]).</doc>
11719+ <source-position filename="../pango/pango-layout.h" line="327"/>
11720+ <return-value transfer-ownership="none">
11721+ <type name="none" c:type="void"/>
11722+ </return-value>
11723+ <parameters>
11724+ <instance-parameter name="layout" transfer-ownership="none">
11725+ <doc xml:space="preserve"
11726+ filename="../pango/pango-layout.c"
11727+ line="3120">a `PangoLayout`</doc>
11728+ <type name="Layout" c:type="PangoLayout*"/>
11729+ </instance-parameter>
11730+ <parameter name="ink_rect"
11731+ direction="out"
11732+ caller-allocates="1"
11733+ transfer-ownership="none"
11734+ optional="1"
11735+ allow-none="1">
11736+ <doc xml:space="preserve"
11737+ filename="../pango/pango-layout.c"
11738+ line="3121">rectangle used to store the extents of the
11739+ layout as drawn</doc>
11740+ <type name="Rectangle" c:type="PangoRectangle*"/>
11741+ </parameter>
11742+ <parameter name="logical_rect"
11743+ direction="out"
11744+ caller-allocates="1"
11745+ transfer-ownership="none"
11746+ optional="1"
11747+ allow-none="1">
11748+ <doc xml:space="preserve"
11749+ filename="../pango/pango-layout.c"
11750+ line="3123">rectangle used to store the logical
11751+ extents of the layout</doc>
11752+ <type name="Rectangle" c:type="PangoRectangle*"/>
11753+ </parameter>
11754+ </parameters>
11755+ </method>
11756+ <method name="get_pixel_size" c:identifier="pango_layout_get_pixel_size">
11757+ <doc xml:space="preserve"
11758+ filename="../pango/pango-layout.c"
11759+ line="3171">Determines the logical width and height of a `PangoLayout` in device
11760+units.
11761+
11762+[method@Pango.Layout.get_size] returns the width and height
11763+scaled by %PANGO_SCALE. This is simply a convenience function
11764+around [method@Pango.Layout.get_pixel_extents].</doc>
11765+ <source-position filename="../pango/pango-layout.h" line="335"/>
11766+ <return-value transfer-ownership="none">
11767+ <type name="none" c:type="void"/>
11768+ </return-value>
11769+ <parameters>
11770+ <instance-parameter name="layout" transfer-ownership="none">
11771+ <doc xml:space="preserve"
11772+ filename="../pango/pango-layout.c"
11773+ line="3173">a `PangoLayout`</doc>
11774+ <type name="Layout" c:type="PangoLayout*"/>
11775+ </instance-parameter>
11776+ <parameter name="width"
11777+ direction="out"
11778+ caller-allocates="0"
11779+ transfer-ownership="full"
11780+ optional="1"
11781+ allow-none="1">
11782+ <doc xml:space="preserve"
11783+ filename="../pango/pango-layout.c"
11784+ line="3174">location to store the logical width</doc>
11785+ <type name="gint" c:type="int*"/>
11786+ </parameter>
11787+ <parameter name="height"
11788+ direction="out"
11789+ caller-allocates="0"
11790+ transfer-ownership="full"
11791+ optional="1"
11792+ allow-none="1">
11793+ <doc xml:space="preserve"
11794+ filename="../pango/pango-layout.c"
11795+ line="3175">location to store the logical height</doc>
11796+ <type name="gint" c:type="int*"/>
11797+ </parameter>
11798+ </parameters>
11799+ </method>
11800+ <method name="get_serial"
11801+ c:identifier="pango_layout_get_serial"
11802+ version="1.32.4">
11803+ <doc xml:space="preserve"
11804+ filename="../pango/pango-layout.c"
11805+ line="1510">Returns the current serial number of @layout.
11806+
11807+The serial number is initialized to an small number larger than zero
11808+when a new layout is created and is increased whenever the layout is
11809+changed using any of the setter functions, or the `PangoContext` it
11810+uses has changed. The serial may wrap, but will never have the value 0.
11811+Since it can wrap, never compare it with "less than", always use "not equals".
11812+
11813+This can be used to automatically detect changes to a `PangoLayout`,
11814+and is useful for example to decide whether a layout needs redrawing.
11815+To force the serial to be increased, use
11816+[method@Pango.Layout.context_changed].</doc>
11817+ <source-position filename="../pango/pango-layout.h" line="275"/>
11818+ <return-value transfer-ownership="none">
11819+ <doc xml:space="preserve"
11820+ filename="../pango/pango-layout.c"
11821+ line="1527">The current serial number of @layout.</doc>
11822+ <type name="guint" c:type="guint"/>
11823+ </return-value>
11824+ <parameters>
11825+ <instance-parameter name="layout" transfer-ownership="none">
11826+ <doc xml:space="preserve"
11827+ filename="../pango/pango-layout.c"
11828+ line="1512">a `PangoLayout`</doc>
11829+ <type name="Layout" c:type="PangoLayout*"/>
11830+ </instance-parameter>
11831+ </parameters>
11832+ </method>
11833+ <method name="get_single_paragraph_mode"
11834+ c:identifier="pango_layout_get_single_paragraph_mode">
11835+ <doc xml:space="preserve"
11836+ filename="../pango/pango-layout.c"
11837+ line="1101">Obtains whether @layout is in single paragraph mode.
11838+
11839+See [method@Pango.Layout.set_single_paragraph_mode].</doc>
11840+ <source-position filename="../pango/pango-layout.h" line="255"/>
11841+ <return-value transfer-ownership="none">
11842+ <doc xml:space="preserve"
11843+ filename="../pango/pango-layout.c"
11844+ line="1109">%TRUE if the layout does not break paragraphs
11845+ at paragraph separator characters, %FALSE otherwise</doc>
11846+ <type name="gboolean" c:type="gboolean"/>
11847+ </return-value>
11848+ <parameters>
11849+ <instance-parameter name="layout" transfer-ownership="none">
11850+ <doc xml:space="preserve"
11851+ filename="../pango/pango-layout.c"
11852+ line="1103">a `PangoLayout`</doc>
11853+ <type name="Layout" c:type="PangoLayout*"/>
11854+ </instance-parameter>
11855+ </parameters>
11856+ </method>
11857+ <method name="get_size" c:identifier="pango_layout_get_size">
11858+ <doc xml:space="preserve"
11859+ filename="../pango/pango-layout.c"
11860+ line="3145">Determines the logical width and height of a `PangoLayout` in Pango
11861+units.
11862+
11863+This is simply a convenience function around [method@Pango.Layout.get_extents].</doc>
11864+ <source-position filename="../pango/pango-layout.h" line="331"/>
11865+ <return-value transfer-ownership="none">
11866+ <type name="none" c:type="void"/>
11867+ </return-value>
11868+ <parameters>
11869+ <instance-parameter name="layout" transfer-ownership="none">
11870+ <doc xml:space="preserve"
11871+ filename="../pango/pango-layout.c"
11872+ line="3147">a `PangoLayout`</doc>
11873+ <type name="Layout" c:type="PangoLayout*"/>
11874+ </instance-parameter>
11875+ <parameter name="width"
11876+ direction="out"
11877+ caller-allocates="0"
11878+ transfer-ownership="full"
11879+ optional="1"
11880+ allow-none="1">
11881+ <doc xml:space="preserve"
11882+ filename="../pango/pango-layout.c"
11883+ line="3148">location to store the logical width</doc>
11884+ <type name="gint" c:type="int*"/>
11885+ </parameter>
11886+ <parameter name="height"
11887+ direction="out"
11888+ caller-allocates="0"
11889+ transfer-ownership="full"
11890+ optional="1"
11891+ allow-none="1">
11892+ <doc xml:space="preserve"
11893+ filename="../pango/pango-layout.c"
11894+ line="3149">location to store the logical height</doc>
11895+ <type name="gint" c:type="int*"/>
11896+ </parameter>
11897+ </parameters>
11898+ </method>
11899+ <method name="get_spacing" c:identifier="pango_layout_get_spacing">
11900+ <doc xml:space="preserve"
11901+ filename="../pango/pango-layout.c"
11902+ line="625">Gets the amount of spacing between the lines of the layout.</doc>
11903+ <source-position filename="../pango/pango-layout.h" line="218"/>
11904+ <return-value transfer-ownership="none">
11905+ <doc xml:space="preserve"
11906+ filename="../pango/pango-layout.c"
11907+ line="631">the spacing in Pango units</doc>
11908+ <type name="gint" c:type="int"/>
11909+ </return-value>
11910+ <parameters>
11911+ <instance-parameter name="layout" transfer-ownership="none">
11912+ <doc xml:space="preserve"
11913+ filename="../pango/pango-layout.c"
11914+ line="627">a `PangoLayout`</doc>
11915+ <type name="Layout" c:type="PangoLayout*"/>
11916+ </instance-parameter>
11917+ </parameters>
11918+ </method>
11919+ <method name="get_tabs" c:identifier="pango_layout_get_tabs">
11920+ <doc xml:space="preserve"
11921+ filename="../pango/pango-layout.c"
11922+ line="1048">Gets the current `PangoTabArray` used by this layout.
11923+
11924+If no `PangoTabArray` has been set, then the default tabs are
11925+in use and %NULL is returned. Default tabs are every 8 spaces.
11926+
11927+The return value should be freed with [method@Pango.TabArray.free].</doc>
11928+ <source-position filename="../pango/pango-layout.h" line="249"/>
11929+ <return-value transfer-ownership="full" nullable="1">
11930+ <doc xml:space="preserve"
11931+ filename="../pango/pango-layout.c"
11932+ line="1059">a copy of the tabs for this layout</doc>
11933+ <type name="TabArray" c:type="PangoTabArray*"/>
11934+ </return-value>
11935+ <parameters>
11936+ <instance-parameter name="layout" transfer-ownership="none">
11937+ <doc xml:space="preserve"
11938+ filename="../pango/pango-layout.c"
11939+ line="1050">a `PangoLayout`</doc>
11940+ <type name="Layout" c:type="PangoLayout*"/>
11941+ </instance-parameter>
11942+ </parameters>
11943+ </method>
11944+ <method name="get_text" c:identifier="pango_layout_get_text">
11945+ <doc xml:space="preserve"
11946+ filename="../pango/pango-layout.c"
11947+ line="1291">Gets the text in the layout.
11948+
11949+The returned text should not be freed or modified.</doc>
11950+ <source-position filename="../pango/pango-layout.h" line="168"/>
11951+ <return-value transfer-ownership="none">
11952+ <doc xml:space="preserve"
11953+ filename="../pango/pango-layout.c"
11954+ line="1299">the text in the @layout</doc>
11955+ <type name="utf8" c:type="const char*"/>
11956+ </return-value>
11957+ <parameters>
11958+ <instance-parameter name="layout" transfer-ownership="none">
11959+ <doc xml:space="preserve"
11960+ filename="../pango/pango-layout.c"
11961+ line="1293">a `PangoLayout`</doc>
11962+ <type name="Layout" c:type="PangoLayout*"/>
11963+ </instance-parameter>
11964+ </parameters>
11965+ </method>
11966+ <method name="get_unknown_glyphs_count"
11967+ c:identifier="pango_layout_get_unknown_glyphs_count"
11968+ version="1.16">
11969+ <doc xml:space="preserve"
11970+ filename="../pango/pango-layout.c"
11971+ line="1414">Counts the number of unknown glyphs in @layout.
11972+
11973+This function can be used to determine if there are any fonts
11974+available to render all characters in a certain string, or when
11975+used in combination with %PANGO_ATTR_FALLBACK, to check if a
11976+certain font supports all the characters in the string.</doc>
11977+ <source-position filename="../pango/pango-layout.h" line="266"/>
11978+ <return-value transfer-ownership="none">
11979+ <doc xml:space="preserve"
11980+ filename="../pango/pango-layout.c"
11981+ line="1425">The number of unknown glyphs in @layout</doc>
11982+ <type name="gint" c:type="int"/>
11983+ </return-value>
11984+ <parameters>
11985+ <instance-parameter name="layout" transfer-ownership="none">
11986+ <doc xml:space="preserve"
11987+ filename="../pango/pango-layout.c"
11988+ line="1416">a `PangoLayout`</doc>
11989+ <type name="Layout" c:type="PangoLayout*"/>
11990+ </instance-parameter>
11991+ </parameters>
11992+ </method>
11993+ <method name="get_width" c:identifier="pango_layout_get_width">
11994+ <doc xml:space="preserve"
11995+ filename="../pango/pango-layout.c"
11996+ line="381">Gets the width to which the lines of the `PangoLayout` should wrap.</doc>
11997+ <source-position filename="../pango/pango-layout.h" line="196"/>
11998+ <return-value transfer-ownership="none">
11999+ <doc xml:space="preserve"
12000+ filename="../pango/pango-layout.c"
12001+ line="387">the width in Pango units, or -1 if no width set.</doc>
12002+ <type name="gint" c:type="int"/>
12003+ </return-value>
12004+ <parameters>
12005+ <instance-parameter name="layout" transfer-ownership="none">
12006+ <doc xml:space="preserve"
12007+ filename="../pango/pango-layout.c"
12008+ line="383">a `PangoLayout`</doc>
12009+ <type name="Layout" c:type="PangoLayout*"/>
12010+ </instance-parameter>
12011+ </parameters>
12012+ </method>
12013+ <method name="get_wrap" c:identifier="pango_layout_get_wrap">
12014+ <doc xml:space="preserve"
12015+ filename="../pango/pango-layout.c"
12016+ line="499">Gets the wrap mode for the layout.
12017+
12018+Use [method@Pango.Layout.is_wrapped] to query whether
12019+any paragraphs were actually wrapped.</doc>
12020+ <source-position filename="../pango/pango-layout.h" line="206"/>
12021+ <return-value transfer-ownership="none">
12022+ <doc xml:space="preserve"
12023+ filename="../pango/pango-layout.c"
12024+ line="508">active wrap mode.</doc>
12025+ <type name="WrapMode" c:type="PangoWrapMode"/>
12026+ </return-value>
12027+ <parameters>
12028+ <instance-parameter name="layout" transfer-ownership="none">
12029+ <doc xml:space="preserve"
12030+ filename="../pango/pango-layout.c"
12031+ line="501">a `PangoLayout`</doc>
12032+ <type name="Layout" c:type="PangoLayout*"/>
12033+ </instance-parameter>
12034+ </parameters>
12035+ </method>
12036+ <method name="index_to_line_x"
12037+ c:identifier="pango_layout_index_to_line_x">
12038+ <doc xml:space="preserve"
12039+ filename="../pango/pango-layout.c"
12040+ line="1949">Converts from byte @index_ within the @layout to line and X position.
12041+
12042+The X position is measured from the left edge of the line.</doc>
12043+ <source-position filename="../pango/pango-layout.h" line="291"/>
12044+ <return-value transfer-ownership="none">
12045+ <type name="none" c:type="void"/>
12046+ </return-value>
12047+ <parameters>
12048+ <instance-parameter name="layout" transfer-ownership="none">
12049+ <doc xml:space="preserve"
12050+ filename="../pango/pango-layout.c"
12051+ line="1951">a `PangoLayout`</doc>
12052+ <type name="Layout" c:type="PangoLayout*"/>
12053+ </instance-parameter>
12054+ <parameter name="index_" transfer-ownership="none">
12055+ <doc xml:space="preserve"
12056+ filename="../pango/pango-layout.c"
12057+ line="1952">the byte index of a grapheme within the layout</doc>
12058+ <type name="gint" c:type="int"/>
12059+ </parameter>
12060+ <parameter name="trailing" transfer-ownership="none">
12061+ <doc xml:space="preserve"
12062+ filename="../pango/pango-layout.c"
12063+ line="1953">an integer indicating the edge of the grapheme to retrieve the
12064+ position of. If &gt; 0, the trailing edge of the grapheme, if 0,
12065+ the leading of the grapheme</doc>
12066+ <type name="gboolean" c:type="gboolean"/>
12067+ </parameter>
12068+ <parameter name="line"
12069+ direction="out"
12070+ caller-allocates="0"
12071+ transfer-ownership="full"
12072+ optional="1"
12073+ allow-none="1">
12074+ <doc xml:space="preserve"
12075+ filename="../pango/pango-layout.c"
12076+ line="1956">location to store resulting line index. (which will
12077+ between 0 and pango_layout_get_line_count(layout) - 1)</doc>
12078+ <type name="gint" c:type="int*"/>
12079+ </parameter>
12080+ <parameter name="x_pos"
12081+ direction="out"
12082+ caller-allocates="0"
12083+ transfer-ownership="full"
12084+ optional="1"
12085+ allow-none="1">
12086+ <doc xml:space="preserve"
12087+ filename="../pango/pango-layout.c"
12088+ line="1958">location to store resulting position within line
12089+ (%PANGO_SCALE units per device unit)</doc>
12090+ <type name="gint" c:type="int*"/>
12091+ </parameter>
12092+ </parameters>
12093+ </method>
12094+ <method name="index_to_pos" c:identifier="pango_layout_index_to_pos">
12095+ <doc xml:space="preserve"
12096+ filename="../pango/pango-layout.c"
12097+ line="2378">Converts from an index within a `PangoLayout` to the onscreen position
12098+corresponding to the grapheme at that index.
12099+
12100+The return value is represented as rectangle. Note that `pos-&gt;x` is
12101+always the leading edge of the grapheme and `pos-&gt;x + pos-&gt;width` the
12102+trailing edge of the grapheme. If the directionality of the grapheme
12103+is right-to-left, then `pos-&gt;width` will be negative.</doc>
12104+ <source-position filename="../pango/pango-layout.h" line="287"/>
12105+ <return-value transfer-ownership="none">
12106+ <type name="none" c:type="void"/>
12107+ </return-value>
12108+ <parameters>
12109+ <instance-parameter name="layout" transfer-ownership="none">
12110+ <doc xml:space="preserve"
12111+ filename="../pango/pango-layout.c"
12112+ line="2380">a `PangoLayout`</doc>
12113+ <type name="Layout" c:type="PangoLayout*"/>
12114+ </instance-parameter>
12115+ <parameter name="index_" transfer-ownership="none">
12116+ <doc xml:space="preserve"
12117+ filename="../pango/pango-layout.c"
12118+ line="2381">byte index within @layout</doc>
12119+ <type name="gint" c:type="int"/>
12120+ </parameter>
12121+ <parameter name="pos"
12122+ direction="out"
12123+ caller-allocates="1"
12124+ transfer-ownership="none">
12125+ <doc xml:space="preserve"
12126+ filename="../pango/pango-layout.c"
12127+ line="2382">rectangle in which to store the position of the grapheme</doc>
12128+ <type name="Rectangle" c:type="PangoRectangle*"/>
12129+ </parameter>
12130+ </parameters>
12131+ </method>
12132+ <method name="is_ellipsized"
12133+ c:identifier="pango_layout_is_ellipsized"
12134+ version="1.16">
12135+ <doc xml:space="preserve"
12136+ filename="../pango/pango-layout.c"
12137+ line="1181">Queries whether the layout had to ellipsize any paragraphs.
12138+
12139+This returns %TRUE if the ellipsization mode for @layout
12140+is not %PANGO_ELLIPSIZE_NONE, a positive width is set on @layout,
12141+and there are paragraphs exceeding that width that have to be
12142+ellipsized.</doc>
12143+ <source-position filename="../pango/pango-layout.h" line="263"/>
12144+ <return-value transfer-ownership="none">
12145+ <doc xml:space="preserve"
12146+ filename="../pango/pango-layout.c"
12147+ line="1192">%TRUE if any paragraphs had to be ellipsized,
12148+ %FALSE otherwise</doc>
12149+ <type name="gboolean" c:type="gboolean"/>
12150+ </return-value>
12151+ <parameters>
12152+ <instance-parameter name="layout" transfer-ownership="none">
12153+ <doc xml:space="preserve"
12154+ filename="../pango/pango-layout.c"
12155+ line="1183">a `PangoLayout`</doc>
12156+ <type name="Layout" c:type="PangoLayout*"/>
12157+ </instance-parameter>
12158+ </parameters>
12159+ </method>
12160+ <method name="is_wrapped"
12161+ c:identifier="pango_layout_is_wrapped"
12162+ version="1.16">
12163+ <doc xml:space="preserve"
12164+ filename="../pango/pango-layout.c"
12165+ line="518">Queries whether the layout had to wrap any paragraphs.
12166+
12167+This returns %TRUE if a positive width is set on @layout,
12168+ellipsization mode of @layout is set to %PANGO_ELLIPSIZE_NONE,
12169+and there are paragraphs exceeding the layout width that have
12170+to be wrapped.</doc>
12171+ <source-position filename="../pango/pango-layout.h" line="208"/>
12172+ <return-value transfer-ownership="none">
12173+ <doc xml:space="preserve"
12174+ filename="../pango/pango-layout.c"
12175+ line="529">%TRUE if any paragraphs had to be wrapped, %FALSE
12176+ otherwise</doc>
12177+ <type name="gboolean" c:type="gboolean"/>
12178+ </return-value>
12179+ <parameters>
12180+ <instance-parameter name="layout" transfer-ownership="none">
12181+ <doc xml:space="preserve"
12182+ filename="../pango/pango-layout.c"
12183+ line="520">a `PangoLayout`</doc>
12184+ <type name="Layout" c:type="PangoLayout*"/>
12185+ </instance-parameter>
12186+ </parameters>
12187+ </method>
12188+ <method name="move_cursor_visually"
12189+ c:identifier="pango_layout_move_cursor_visually">
12190+ <doc xml:space="preserve"
12191+ filename="../pango/pango-layout.c"
12192+ line="2064">Computes a new cursor position from an old position and a direction.
12193+
12194+If @direction is positive, then the new position will cause the strong
12195+or weak cursor to be displayed one position to right of where it was
12196+with the old cursor position. If @direction is negative, it will be
12197+moved to the left.
12198+
12199+In the presence of bidirectional text, the correspondence between
12200+logical and visual order will depend on the direction of the current
12201+run, and there may be jumps when the cursor is moved off of the end
12202+of a run.
12203+
12204+Motion here is in cursor positions, not in characters, so a single
12205+call to this function may move the cursor over multiple characters
12206+when multiple characters combine to form a single grapheme.</doc>
12207+ <source-position filename="../pango/pango-layout.h" line="309"/>
12208+ <return-value transfer-ownership="none">
12209+ <type name="none" c:type="void"/>
12210+ </return-value>
12211+ <parameters>
12212+ <instance-parameter name="layout" transfer-ownership="none">
12213+ <doc xml:space="preserve"
12214+ filename="../pango/pango-layout.c"
12215+ line="2066">a `PangoLayout`</doc>
12216+ <type name="Layout" c:type="PangoLayout*"/>
12217+ </instance-parameter>
12218+ <parameter name="strong" transfer-ownership="none">
12219+ <doc xml:space="preserve"
12220+ filename="../pango/pango-layout.c"
12221+ line="2067">whether the moving cursor is the strong cursor or the
12222+ weak cursor. The strong cursor is the cursor corresponding
12223+ to text insertion in the base direction for the layout.</doc>
12224+ <type name="gboolean" c:type="gboolean"/>
12225+ </parameter>
12226+ <parameter name="old_index" transfer-ownership="none">
12227+ <doc xml:space="preserve"
12228+ filename="../pango/pango-layout.c"
12229+ line="2070">the byte index of the current cursor position</doc>
12230+ <type name="gint" c:type="int"/>
12231+ </parameter>
12232+ <parameter name="old_trailing" transfer-ownership="none">
12233+ <doc xml:space="preserve"
12234+ filename="../pango/pango-layout.c"
12235+ line="2071">if 0, the cursor was at the leading edge of the
12236+ grapheme indicated by @old_index, if &gt; 0, the cursor
12237+ was at the trailing edge.</doc>
12238+ <type name="gint" c:type="int"/>
12239+ </parameter>
12240+ <parameter name="direction" transfer-ownership="none">
12241+ <doc xml:space="preserve"
12242+ filename="../pango/pango-layout.c"
12243+ line="2074">direction to move cursor. A negative
12244+ value indicates motion to the left</doc>
12245+ <type name="gint" c:type="int"/>
12246+ </parameter>
12247+ <parameter name="new_index"
12248+ direction="out"
12249+ caller-allocates="0"
12250+ transfer-ownership="full">
12251+ <doc xml:space="preserve"
12252+ filename="../pango/pango-layout.c"
12253+ line="2076">location to store the new cursor byte index.
12254+ A value of -1 indicates that the cursor has been moved off the
12255+ beginning of the layout. A value of %G_MAXINT indicates that
12256+ the cursor has been moved off the end of the layout.</doc>
12257+ <type name="gint" c:type="int*"/>
12258+ </parameter>
12259+ <parameter name="new_trailing"
12260+ direction="out"
12261+ caller-allocates="0"
12262+ transfer-ownership="full">
12263+ <doc xml:space="preserve"
12264+ filename="../pango/pango-layout.c"
12265+ line="2080">number of characters to move forward from
12266+ the location returned for @new_index to get the position where
12267+ the cursor should be displayed. This allows distinguishing the
12268+ position at the beginning of one line from the position at the
12269+ end of the preceding line. @new_index is always on the line where
12270+ the cursor should be displayed.</doc>
12271+ <type name="gint" c:type="int*"/>
12272+ </parameter>
12273+ </parameters>
12274+ </method>
12275+ <method name="serialize"
12276+ c:identifier="pango_layout_serialize"
12277+ version="1.50">
12278+ <doc xml:space="preserve"
12279+ filename="../pango/serializer.c"
12280+ line="1573">Serializes the @layout for later deserialization via [func@Pango.Layout.deserialize].
12281+
12282+There are no guarantees about the format of the output across different
12283+versions of Pango and [func@Pango.Layout.deserialize] will reject data
12284+that it cannot parse.
12285+
12286+The intended use of this function is testing, benchmarking and debugging.
12287+The format is not meant as a permanent storage format.</doc>
12288+ <source-position filename="../pango/pango-layout.h" line="373"/>
12289+ <return-value transfer-ownership="full">
12290+ <doc xml:space="preserve"
12291+ filename="../pango/serializer.c"
12292+ line="1587">a `GBytes` containing the serialized form of @layout</doc>
12293+ <type name="GLib.Bytes" c:type="GBytes*"/>
12294+ </return-value>
12295+ <parameters>
12296+ <instance-parameter name="layout" transfer-ownership="none">
12297+ <doc xml:space="preserve"
12298+ filename="../pango/serializer.c"
12299+ line="1575">a `PangoLayout`</doc>
12300+ <type name="Layout" c:type="PangoLayout*"/>
12301+ </instance-parameter>
12302+ <parameter name="flags" transfer-ownership="none">
12303+ <doc xml:space="preserve"
12304+ filename="../pango/serializer.c"
12305+ line="1576">`PangoLayoutSerializeFlags`</doc>
12306+ <type name="LayoutSerializeFlags"
12307+ c:type="PangoLayoutSerializeFlags"/>
12308+ </parameter>
12309+ </parameters>
12310+ </method>
12311+ <method name="set_alignment" c:identifier="pango_layout_set_alignment">
12312+ <doc xml:space="preserve"
12313+ filename="../pango/pango-layout.c"
12314+ line="968">Sets the alignment for the layout: how partial lines are
12315+positioned within the horizontal space available.
12316+
12317+The default alignment is %PANGO_ALIGN_LEFT.</doc>
12318+ <source-position filename="../pango/pango-layout.h" line="240"/>
12319+ <return-value transfer-ownership="none">
12320+ <type name="none" c:type="void"/>
12321+ </return-value>
12322+ <parameters>
12323+ <instance-parameter name="layout" transfer-ownership="none">
12324+ <doc xml:space="preserve"
12325+ filename="../pango/pango-layout.c"
12326+ line="970">a `PangoLayout`</doc>
12327+ <type name="Layout" c:type="PangoLayout*"/>
12328+ </instance-parameter>
12329+ <parameter name="alignment" transfer-ownership="none">
12330+ <doc xml:space="preserve"
12331+ filename="../pango/pango-layout.c"
12332+ line="971">the alignment</doc>
12333+ <type name="Alignment" c:type="PangoAlignment"/>
12334+ </parameter>
12335+ </parameters>
12336+ </method>
12337+ <method name="set_attributes" c:identifier="pango_layout_set_attributes">
12338+ <doc xml:space="preserve"
12339+ filename="../pango/pango-layout.c"
12340+ line="694">Sets the text attributes for a layout object.
12341+
12342+References @attrs, so the caller can unref its reference.</doc>
12343+ <source-position filename="../pango/pango-layout.h" line="158"/>
12344+ <return-value transfer-ownership="none">
12345+ <type name="none" c:type="void"/>
12346+ </return-value>
12347+ <parameters>
12348+ <instance-parameter name="layout" transfer-ownership="none">
12349+ <doc xml:space="preserve"
12350+ filename="../pango/pango-layout.c"
12351+ line="696">a `PangoLayout`</doc>
12352+ <type name="Layout" c:type="PangoLayout*"/>
12353+ </instance-parameter>
12354+ <parameter name="attrs"
12355+ transfer-ownership="none"
12356+ nullable="1"
12357+ allow-none="1">
12358+ <doc xml:space="preserve"
12359+ filename="../pango/pango-layout.c"
12360+ line="697">a `PangoAttrList`</doc>
12361+ <type name="AttrList" c:type="PangoAttrList*"/>
12362+ </parameter>
12363+ </parameters>
12364+ </method>
12365+ <method name="set_auto_dir"
12366+ c:identifier="pango_layout_set_auto_dir"
12367+ version="1.4">
12368+ <doc xml:space="preserve"
12369+ filename="../pango/pango-layout.c"
12370+ line="906">Sets whether to calculate the base direction
12371+for the layout according to its contents.
12372+
12373+When this flag is on (the default), then paragraphs in @layout that
12374+begin with strong right-to-left characters (Arabic and Hebrew principally),
12375+will have right-to-left layout, paragraphs with letters from other scripts
12376+will have left-to-right layout. Paragraphs with only neutral characters
12377+get their direction from the surrounding paragraphs.
12378+
12379+When %FALSE, the choice between left-to-right and right-to-left
12380+layout is done according to the base direction of the layout's
12381+`PangoContext`. (See [method@Pango.Context.set_base_dir]).
12382+
12383+When the auto-computed direction of a paragraph differs from the
12384+base direction of the context, the interpretation of
12385+%PANGO_ALIGN_LEFT and %PANGO_ALIGN_RIGHT are swapped.</doc>
12386+ <source-position filename="../pango/pango-layout.h" line="235"/>
12387+ <return-value transfer-ownership="none">
12388+ <type name="none" c:type="void"/>
12389+ </return-value>
12390+ <parameters>
12391+ <instance-parameter name="layout" transfer-ownership="none">
12392+ <doc xml:space="preserve"
12393+ filename="../pango/pango-layout.c"
12394+ line="908">a `PangoLayout`</doc>
12395+ <type name="Layout" c:type="PangoLayout*"/>
12396+ </instance-parameter>
12397+ <parameter name="auto_dir" transfer-ownership="none">
12398+ <doc xml:space="preserve"
12399+ filename="../pango/pango-layout.c"
12400+ line="909">if %TRUE, compute the bidirectional base direction
12401+ from the layout's contents</doc>
12402+ <type name="gboolean" c:type="gboolean"/>
12403+ </parameter>
12404+ </parameters>
12405+ </method>
12406+ <method name="set_ellipsize"
12407+ c:identifier="pango_layout_set_ellipsize"
12408+ version="1.6">
12409+ <doc xml:space="preserve"
12410+ filename="../pango/pango-layout.c"
12411+ line="1120">Sets the type of ellipsization being performed for @layout.
12412+
12413+Depending on the ellipsization mode @ellipsize text is
12414+removed from the start, middle, or end of text so they
12415+fit within the width and height of layout set with
12416+[method@Pango.Layout.set_width] and [method@Pango.Layout.set_height].
12417+
12418+If the layout contains characters such as newlines that
12419+force it to be layed out in multiple paragraphs, then whether
12420+each paragraph is ellipsized separately or the entire layout
12421+is ellipsized as a whole depends on the set height of the layout.
12422+
12423+The default value is %PANGO_ELLIPSIZE_NONE.
12424+
12425+See [method@Pango.Layout.set_height] for details.</doc>
12426+ <source-position filename="../pango/pango-layout.h" line="258"/>
12427+ <return-value transfer-ownership="none">
12428+ <type name="none" c:type="void"/>
12429+ </return-value>
12430+ <parameters>
12431+ <instance-parameter name="layout" transfer-ownership="none">
12432+ <doc xml:space="preserve"
12433+ filename="../pango/pango-layout.c"
12434+ line="1122">a `PangoLayout`</doc>
12435+ <type name="Layout" c:type="PangoLayout*"/>
12436+ </instance-parameter>
12437+ <parameter name="ellipsize" transfer-ownership="none">
12438+ <doc xml:space="preserve"
12439+ filename="../pango/pango-layout.c"
12440+ line="1123">the new ellipsization mode for @layout</doc>
12441+ <type name="EllipsizeMode" c:type="PangoEllipsizeMode"/>
12442+ </parameter>
12443+ </parameters>
12444+ </method>
12445+ <method name="set_font_description"
12446+ c:identifier="pango_layout_set_font_description">
12447+ <doc xml:space="preserve"
12448+ filename="../pango/pango-layout.c"
12449+ line="752">Sets the default font description for the layout.
12450+
12451+If no font description is set on the layout, the
12452+font description from the layout's context is used.</doc>
12453+ <source-position filename="../pango/pango-layout.h" line="186"/>
12454+ <return-value transfer-ownership="none">
12455+ <type name="none" c:type="void"/>
12456+ </return-value>
12457+ <parameters>
12458+ <instance-parameter name="layout" transfer-ownership="none">
12459+ <doc xml:space="preserve"
12460+ filename="../pango/pango-layout.c"
12461+ line="754">a `PangoLayout`</doc>
12462+ <type name="Layout" c:type="PangoLayout*"/>
12463+ </instance-parameter>
12464+ <parameter name="desc"
12465+ transfer-ownership="none"
12466+ nullable="1"
12467+ allow-none="1">
12468+ <doc xml:space="preserve"
12469+ filename="../pango/pango-layout.c"
12470+ line="755">the new `PangoFontDescription`
12471+ to unset the current font description</doc>
12472+ <type name="FontDescription" c:type="const PangoFontDescription*"/>
12473+ </parameter>
12474+ </parameters>
12475+ </method>
12476+ <method name="set_height"
12477+ c:identifier="pango_layout_set_height"
12478+ version="1.20">
12479+ <doc xml:space="preserve"
12480+ filename="../pango/pango-layout.c"
12481+ line="396">Sets the height to which the `PangoLayout` should be ellipsized at.
12482+
12483+There are two different behaviors, based on whether @height is positive
12484+or negative.
12485+
12486+If @height is positive, it will be the maximum height of the layout. Only
12487+lines would be shown that would fit, and if there is any text omitted,
12488+an ellipsis added. At least one line is included in each paragraph regardless
12489+of how small the height value is. A value of zero will render exactly one
12490+line for the entire layout.
12491+
12492+If @height is negative, it will be the (negative of) maximum number of lines
12493+per paragraph. That is, the total number of lines shown may well be more than
12494+this value if the layout contains multiple paragraphs of text.
12495+The default value of -1 means that the first line of each paragraph is ellipsized.
12496+This behavior may be changed in the future to act per layout instead of per
12497+paragraph. File a bug against pango at
12498+[https://gitlab.gnome.org/gnome/pango](https://gitlab.gnome.org/gnome/pango)
12499+if your code relies on this behavior.
12500+
12501+Height setting only has effect if a positive width is set on
12502+@layout and ellipsization mode of @layout is not %PANGO_ELLIPSIZE_NONE.
12503+The behavior is undefined if a height other than -1 is set and
12504+ellipsization mode is set to %PANGO_ELLIPSIZE_NONE, and may change in the
12505+future.</doc>
12506+ <source-position filename="../pango/pango-layout.h" line="198"/>
12507+ <return-value transfer-ownership="none">
12508+ <type name="none" c:type="void"/>
12509+ </return-value>
12510+ <parameters>
12511+ <instance-parameter name="layout" transfer-ownership="none">
12512+ <doc xml:space="preserve"
12513+ filename="../pango/pango-layout.c"
12514+ line="398">a `PangoLayout`.</doc>
12515+ <type name="Layout" c:type="PangoLayout*"/>
12516+ </instance-parameter>
12517+ <parameter name="height" transfer-ownership="none">
12518+ <doc xml:space="preserve"
12519+ filename="../pango/pango-layout.c"
12520+ line="399">the desired height of the layout in Pango units if positive,
12521+ or desired number of lines if negative.</doc>
12522+ <type name="gint" c:type="int"/>
12523+ </parameter>
12524+ </parameters>
12525+ </method>
12526+ <method name="set_indent" c:identifier="pango_layout_set_indent">
12527+ <doc xml:space="preserve"
12528+ filename="../pango/pango-layout.c"
12529+ line="544">Sets the width in Pango units to indent each paragraph.
12530+
12531+A negative value of @indent will produce a hanging indentation.
12532+That is, the first line will have the full width, and subsequent
12533+lines will be indented by the absolute value of @indent.
12534+
12535+The indent setting is ignored if layout alignment is set to
12536+%PANGO_ALIGN_CENTER.
12537+
12538+The default value is 0.</doc>
12539+ <source-position filename="../pango/pango-layout.h" line="210"/>
12540+ <return-value transfer-ownership="none">
12541+ <type name="none" c:type="void"/>
12542+ </return-value>
12543+ <parameters>
12544+ <instance-parameter name="layout" transfer-ownership="none">
12545+ <doc xml:space="preserve"
12546+ filename="../pango/pango-layout.c"
12547+ line="546">a `PangoLayout`</doc>
12548+ <type name="Layout" c:type="PangoLayout*"/>
12549+ </instance-parameter>
12550+ <parameter name="indent" transfer-ownership="none">
12551+ <doc xml:space="preserve"
12552+ filename="../pango/pango-layout.c"
12553+ line="547">the amount by which to indent</doc>
12554+ <type name="gint" c:type="int"/>
12555+ </parameter>
12556+ </parameters>
12557+ </method>
12558+ <method name="set_justify" c:identifier="pango_layout_set_justify">
12559+ <doc xml:space="preserve"
12560+ filename="../pango/pango-layout.c"
12561+ line="802">Sets whether each complete line should be stretched to fill the
12562+entire width of the layout.
12563+
12564+Stretching is typically done by adding whitespace, but for some scripts
12565+(such as Arabic), the justification may be done in more complex ways,
12566+like extending the characters.
12567+
12568+Note that this setting is not implemented and so is ignored in
12569+Pango older than 1.18.
12570+
12571+Note that tabs and justification conflict with each other:
12572+Justification will move content away from its tab-aligned
12573+positions.
12574+
12575+The default value is %FALSE.
12576+
12577+Also see [method@Pango.Layout.set_justify_last_line].</doc>
12578+ <source-position filename="../pango/pango-layout.h" line="225"/>
12579+ <return-value transfer-ownership="none">
12580+ <type name="none" c:type="void"/>
12581+ </return-value>
12582+ <parameters>
12583+ <instance-parameter name="layout" transfer-ownership="none">
12584+ <doc xml:space="preserve"
12585+ filename="../pango/pango-layout.c"
12586+ line="804">a `PangoLayout`</doc>
12587+ <type name="Layout" c:type="PangoLayout*"/>
12588+ </instance-parameter>
12589+ <parameter name="justify" transfer-ownership="none">
12590+ <doc xml:space="preserve"
12591+ filename="../pango/pango-layout.c"
12592+ line="805">whether the lines in the layout should be justified</doc>
12593+ <type name="gboolean" c:type="gboolean"/>
12594+ </parameter>
12595+ </parameters>
12596+ </method>
12597+ <method name="set_justify_last_line"
12598+ c:identifier="pango_layout_set_justify_last_line"
12599+ version="1.50">
12600+ <doc xml:space="preserve"
12601+ filename="../pango/pango-layout.c"
12602+ line="858">Sets whether the last line should be stretched to fill the
12603+entire width of the layout.
12604+
12605+This only has an effect if [method@Pango.Layout.set_justify] has
12606+been called as well.
12607+
12608+The default value is %FALSE.</doc>
12609+ <source-position filename="../pango/pango-layout.h" line="230"/>
12610+ <return-value transfer-ownership="none">
12611+ <type name="none" c:type="void"/>
12612+ </return-value>
12613+ <parameters>
12614+ <instance-parameter name="layout" transfer-ownership="none">
12615+ <doc xml:space="preserve"
12616+ filename="../pango/pango-layout.c"
12617+ line="860">a `PangoLayout`</doc>
12618+ <type name="Layout" c:type="PangoLayout*"/>
12619+ </instance-parameter>
12620+ <parameter name="justify" transfer-ownership="none">
12621+ <doc xml:space="preserve"
12622+ filename="../pango/pango-layout.c"
12623+ line="861">whether the last line in the layout should be justified</doc>
12624+ <type name="gboolean" c:type="gboolean"/>
12625+ </parameter>
12626+ </parameters>
12627+ </method>
12628+ <method name="set_line_spacing"
12629+ c:identifier="pango_layout_set_line_spacing"
12630+ version="1.44">
12631+ <doc xml:space="preserve"
12632+ filename="../pango/pango-layout.c"
12633+ line="640">Sets a factor for line spacing.
12634+
12635+Typical values are: 0, 1, 1.5, 2. The default values is 0.
12636+
12637+If @factor is non-zero, lines are placed so that
12638+
12639+ baseline2 = baseline1 + factor * height2
12640+
12641+where height2 is the line height of the second line
12642+(as determined by the font(s)). In this case, the spacing
12643+set with [method@Pango.Layout.set_spacing] is ignored.
12644+
12645+If @factor is zero (the default), spacing is applied as before.
12646+
12647+Note: for semantics that are closer to the CSS line-height
12648+property, see [func@Pango.attr_line_height_new].</doc>
12649+ <source-position filename="../pango/pango-layout.h" line="220"/>
12650+ <return-value transfer-ownership="none">
12651+ <type name="none" c:type="void"/>
12652+ </return-value>
12653+ <parameters>
12654+ <instance-parameter name="layout" transfer-ownership="none">
12655+ <doc xml:space="preserve"
12656+ filename="../pango/pango-layout.c"
12657+ line="642">a `PangoLayout`</doc>
12658+ <type name="Layout" c:type="PangoLayout*"/>
12659+ </instance-parameter>
12660+ <parameter name="factor" transfer-ownership="none">
12661+ <doc xml:space="preserve"
12662+ filename="../pango/pango-layout.c"
12663+ line="643">the new line spacing factor</doc>
12664+ <type name="gfloat" c:type="float"/>
12665+ </parameter>
12666+ </parameters>
12667+ </method>
12668+ <method name="set_markup" c:identifier="pango_layout_set_markup">
12669+ <doc xml:space="preserve"
12670+ filename="../pango/pango-layout.c"
12671+ line="1334">Sets the layout text and attribute list from marked-up text.
12672+
12673+See [Pango Markup](pango_markup.html)).
12674+
12675+Replaces the current text and attribute list.
12676+
12677+This is the same as [method@Pango.Layout.set_markup_with_accel],
12678+but the markup text isn't scanned for accelerators.</doc>
12679+ <source-position filename="../pango/pango-layout.h" line="174"/>
12680+ <return-value transfer-ownership="none">
12681+ <type name="none" c:type="void"/>
12682+ </return-value>
12683+ <parameters>
12684+ <instance-parameter name="layout" transfer-ownership="none">
12685+ <doc xml:space="preserve"
12686+ filename="../pango/pango-layout.c"
12687+ line="1336">a `PangoLayout`</doc>
12688+ <type name="Layout" c:type="PangoLayout*"/>
12689+ </instance-parameter>
12690+ <parameter name="markup" transfer-ownership="none">
12691+ <doc xml:space="preserve"
12692+ filename="../pango/pango-layout.c"
12693+ line="1337">marked-up text</doc>
12694+ <type name="utf8" c:type="const char*"/>
12695+ </parameter>
12696+ <parameter name="length" transfer-ownership="none">
12697+ <doc xml:space="preserve"
12698+ filename="../pango/pango-layout.c"
12699+ line="1338">length of marked-up text in bytes, or -1 if @markup is
12700+ `NUL`-terminated</doc>
12701+ <type name="gint" c:type="int"/>
12702+ </parameter>
12703+ </parameters>
12704+ </method>
12705+ <method name="set_markup_with_accel"
12706+ c:identifier="pango_layout_set_markup_with_accel">
12707+ <doc xml:space="preserve"
12708+ filename="../pango/pango-layout.c"
12709+ line="1358">Sets the layout text and attribute list from marked-up text.
12710+
12711+See [Pango Markup](pango_markup.html)).
12712+
12713+Replaces the current text and attribute list.
12714+
12715+If @accel_marker is nonzero, the given character will mark the
12716+character following it as an accelerator. For example, @accel_marker
12717+might be an ampersand or underscore. All characters marked
12718+as an accelerator will receive a %PANGO_UNDERLINE_LOW attribute,
12719+and the first character so marked will be returned in @accel_char.
12720+Two @accel_marker characters following each other produce a single
12721+literal @accel_marker character.</doc>
12722+ <source-position filename="../pango/pango-layout.h" line="179"/>
12723+ <return-value transfer-ownership="none">
12724+ <type name="none" c:type="void"/>
12725+ </return-value>
12726+ <parameters>
12727+ <instance-parameter name="layout" transfer-ownership="none">
12728+ <doc xml:space="preserve"
12729+ filename="../pango/pango-layout.c"
12730+ line="1360">a `PangoLayout`</doc>
12731+ <type name="Layout" c:type="PangoLayout*"/>
12732+ </instance-parameter>
12733+ <parameter name="markup" transfer-ownership="none">
12734+ <doc xml:space="preserve"
12735+ filename="../pango/pango-layout.c"
12736+ line="1361">marked-up text (see [Pango Markup](pango_markup.html))</doc>
12737+ <type name="utf8" c:type="const char*"/>
12738+ </parameter>
12739+ <parameter name="length" transfer-ownership="none">
12740+ <doc xml:space="preserve"
12741+ filename="../pango/pango-layout.c"
12742+ line="1362">length of marked-up text in bytes, or -1 if @markup is
12743+ `NUL`-terminated</doc>
12744+ <type name="gint" c:type="int"/>
12745+ </parameter>
12746+ <parameter name="accel_marker" transfer-ownership="none">
12747+ <doc xml:space="preserve"
12748+ filename="../pango/pango-layout.c"
12749+ line="1364">marker for accelerators in the text</doc>
12750+ <type name="gunichar" c:type="gunichar"/>
12751+ </parameter>
12752+ <parameter name="accel_char"
12753+ direction="out"
12754+ caller-allocates="1"
12755+ transfer-ownership="none"
12756+ optional="1"
12757+ allow-none="1">
12758+ <doc xml:space="preserve"
12759+ filename="../pango/pango-layout.c"
12760+ line="1365">return location
12761+ for first located accelerator</doc>
12762+ <type name="gunichar" c:type="gunichar*"/>
12763+ </parameter>
12764+ </parameters>
12765+ </method>
12766+ <method name="set_single_paragraph_mode"
12767+ c:identifier="pango_layout_set_single_paragraph_mode">
12768+ <doc xml:space="preserve"
12769+ filename="../pango/pango-layout.c"
12770+ line="1072">Sets the single paragraph mode of @layout.
12771+
12772+If @setting is %TRUE, do not treat newlines and similar characters
12773+as paragraph separators; instead, keep all text in a single paragraph,
12774+and display a glyph for paragraph separator characters. Used when
12775+you want to allow editing of newlines on a single text line.
12776+
12777+The default value is %FALSE.</doc>
12778+ <source-position filename="../pango/pango-layout.h" line="252"/>
12779+ <return-value transfer-ownership="none">
12780+ <type name="none" c:type="void"/>
12781+ </return-value>
12782+ <parameters>
12783+ <instance-parameter name="layout" transfer-ownership="none">
12784+ <doc xml:space="preserve"
12785+ filename="../pango/pango-layout.c"
12786+ line="1074">a `PangoLayout`</doc>
12787+ <type name="Layout" c:type="PangoLayout*"/>
12788+ </instance-parameter>
12789+ <parameter name="setting" transfer-ownership="none">
12790+ <doc xml:space="preserve"
12791+ filename="../pango/pango-layout.c"
12792+ line="1075">new setting</doc>
12793+ <type name="gboolean" c:type="gboolean"/>
12794+ </parameter>
12795+ </parameters>
12796+ </method>
12797+ <method name="set_spacing" c:identifier="pango_layout_set_spacing">
12798+ <doc xml:space="preserve"
12799+ filename="../pango/pango-layout.c"
12800+ line="590">Sets the amount of spacing in Pango units between
12801+the lines of the layout.
12802+
12803+When placing lines with spacing, Pango arranges things so that
12804+
12805+ line2.top = line1.bottom + spacing
12806+
12807+The default value is 0.
12808+
12809+Note: Since 1.44, Pango is using the line height (as determined
12810+by the font) for placing lines when the line spacing factor is set
12811+to a non-zero value with [method@Pango.Layout.set_line_spacing].
12812+In that case, the @spacing set with this function is ignored.
12813+
12814+Note: for semantics that are closer to the CSS line-height
12815+property, see [func@Pango.attr_line_height_new].</doc>
12816+ <source-position filename="../pango/pango-layout.h" line="215"/>
12817+ <return-value transfer-ownership="none">
12818+ <type name="none" c:type="void"/>
12819+ </return-value>
12820+ <parameters>
12821+ <instance-parameter name="layout" transfer-ownership="none">
12822+ <doc xml:space="preserve"
12823+ filename="../pango/pango-layout.c"
12824+ line="592">a `PangoLayout`</doc>
12825+ <type name="Layout" c:type="PangoLayout*"/>
12826+ </instance-parameter>
12827+ <parameter name="spacing" transfer-ownership="none">
12828+ <doc xml:space="preserve"
12829+ filename="../pango/pango-layout.c"
12830+ line="593">the amount of spacing</doc>
12831+ <type name="gint" c:type="int"/>
12832+ </parameter>
12833+ </parameters>
12834+ </method>
12835+ <method name="set_tabs" c:identifier="pango_layout_set_tabs">
12836+ <doc xml:space="preserve"
12837+ filename="../pango/pango-layout.c"
12838+ line="1008">Sets the tabs to use for @layout, overriding the default tabs.
12839+
12840+`PangoLayout` will place content at the next tab position
12841+whenever it meets a Tab character (U+0009).
12842+
12843+By default, tabs are every 8 spaces. If @tabs is %NULL, the
12844+default tabs are reinstated. @tabs is copied into the layout;
12845+you must free your copy of @tabs yourself.
12846+
12847+Note that tabs and justification conflict with each other:
12848+Justification will move content away from its tab-aligned
12849+positions. The same is true for alignments other than
12850+%PANGO_ALIGN_LEFT.</doc>
12851+ <source-position filename="../pango/pango-layout.h" line="246"/>
12852+ <return-value transfer-ownership="none">
12853+ <type name="none" c:type="void"/>
12854+ </return-value>
12855+ <parameters>
12856+ <instance-parameter name="layout" transfer-ownership="none">
12857+ <doc xml:space="preserve"
12858+ filename="../pango/pango-layout.c"
12859+ line="1010">a `PangoLayout`</doc>
12860+ <type name="Layout" c:type="PangoLayout*"/>
12861+ </instance-parameter>
12862+ <parameter name="tabs"
12863+ transfer-ownership="none"
12864+ nullable="1"
12865+ allow-none="1">
12866+ <doc xml:space="preserve"
12867+ filename="../pango/pango-layout.c"
12868+ line="1011">a `PangoTabArray`</doc>
12869+ <type name="TabArray" c:type="PangoTabArray*"/>
12870+ </parameter>
12871+ </parameters>
12872+ </method>
12873+ <method name="set_text" c:identifier="pango_layout_set_text">
12874+ <doc xml:space="preserve"
12875+ filename="../pango/pango-layout.c"
12876+ line="1207">Sets the text of the layout.
12877+
12878+This function validates @text and renders invalid UTF-8
12879+with a placeholder glyph.
12880+
12881+Note that if you have used [method@Pango.Layout.set_markup] or
12882+[method@Pango.Layout.set_markup_with_accel] on @layout before, you
12883+may want to call [method@Pango.Layout.set_attributes] to clear the
12884+attributes set on the layout from the markup as this function does
12885+not clear attributes.</doc>
12886+ <source-position filename="../pango/pango-layout.h" line="164"/>
12887+ <return-value transfer-ownership="none">
12888+ <type name="none" c:type="void"/>
12889+ </return-value>
12890+ <parameters>
12891+ <instance-parameter name="layout" transfer-ownership="none">
12892+ <doc xml:space="preserve"
12893+ filename="../pango/pango-layout.c"
12894+ line="1209">a `PangoLayout`</doc>
12895+ <type name="Layout" c:type="PangoLayout*"/>
12896+ </instance-parameter>
12897+ <parameter name="text" transfer-ownership="none">
12898+ <doc xml:space="preserve"
12899+ filename="../pango/pango-layout.c"
12900+ line="1210">the text</doc>
12901+ <type name="utf8" c:type="const char*"/>
12902+ </parameter>
12903+ <parameter name="length" transfer-ownership="none">
12904+ <doc xml:space="preserve"
12905+ filename="../pango/pango-layout.c"
12906+ line="1211">maximum length of @text, in bytes. -1 indicates that
12907+ the string is nul-terminated and the length should be calculated.
12908+ The text will also be truncated on encountering a nul-termination
12909+ even when @length is positive.</doc>
12910+ <type name="gint" c:type="int"/>
12911+ </parameter>
12912+ </parameters>
12913+ </method>
12914+ <method name="set_width" c:identifier="pango_layout_set_width">
12915+ <doc xml:space="preserve"
12916+ filename="../pango/pango-layout.c"
12917+ line="354">Sets the width to which the lines of the `PangoLayout` should wrap or
12918+ellipsized.
12919+
12920+The default value is -1: no width set.</doc>
12921+ <source-position filename="../pango/pango-layout.h" line="193"/>
12922+ <return-value transfer-ownership="none">
12923+ <type name="none" c:type="void"/>
12924+ </return-value>
12925+ <parameters>
12926+ <instance-parameter name="layout" transfer-ownership="none">
12927+ <doc xml:space="preserve"
12928+ filename="../pango/pango-layout.c"
12929+ line="356">a `PangoLayout`.</doc>
12930+ <type name="Layout" c:type="PangoLayout*"/>
12931+ </instance-parameter>
12932+ <parameter name="width" transfer-ownership="none">
12933+ <doc xml:space="preserve"
12934+ filename="../pango/pango-layout.c"
12935+ line="357">the desired width in Pango units, or -1 to indicate that no
12936+ wrapping or ellipsization should be performed.</doc>
12937+ <type name="gint" c:type="int"/>
12938+ </parameter>
12939+ </parameters>
12940+ </method>
12941+ <method name="set_wrap" c:identifier="pango_layout_set_wrap">
12942+ <doc xml:space="preserve"
12943+ filename="../pango/pango-layout.c"
12944+ line="471">Sets the wrap mode.
12945+
12946+The wrap mode only has effect if a width is set on the layout
12947+with [method@Pango.Layout.set_width]. To turn off wrapping,
12948+set the width to -1.
12949+
12950+The default value is %PANGO_WRAP_WORD.</doc>
12951+ <source-position filename="../pango/pango-layout.h" line="203"/>
12952+ <return-value transfer-ownership="none">
12953+ <type name="none" c:type="void"/>
12954+ </return-value>
12955+ <parameters>
12956+ <instance-parameter name="layout" transfer-ownership="none">
12957+ <doc xml:space="preserve"
12958+ filename="../pango/pango-layout.c"
12959+ line="473">a `PangoLayout`</doc>
12960+ <type name="Layout" c:type="PangoLayout*"/>
12961+ </instance-parameter>
12962+ <parameter name="wrap" transfer-ownership="none">
12963+ <doc xml:space="preserve"
12964+ filename="../pango/pango-layout.c"
12965+ line="474">the wrap mode</doc>
12966+ <type name="WrapMode" c:type="PangoWrapMode"/>
12967+ </parameter>
12968+ </parameters>
12969+ </method>
12970+ <method name="write_to_file"
12971+ c:identifier="pango_layout_write_to_file"
12972+ version="1.50"
12973+ throws="1">
12974+ <doc xml:space="preserve"
12975+ filename="../pango/serializer.c"
12976+ line="1617">A convenience method to serialize a layout to a file.
12977+
12978+It is equivalent to calling [method@Pango.Layout.serialize]
12979+followed by [func@GLib.file_set_contents].
12980+
12981+See those two functions for details on the arguments.
12982+
12983+It is mostly intended for use inside a debugger to quickly dump
12984+a layout to a file for later inspection.</doc>
12985+ <source-position filename="../pango/pango-layout.h" line="377"/>
12986+ <return-value transfer-ownership="none">
12987+ <doc xml:space="preserve"
12988+ filename="../pango/serializer.c"
12989+ line="1634">%TRUE if saving was successful</doc>
12990+ <type name="gboolean" c:type="gboolean"/>
12991+ </return-value>
12992+ <parameters>
12993+ <instance-parameter name="layout" transfer-ownership="none">
12994+ <doc xml:space="preserve"
12995+ filename="../pango/serializer.c"
12996+ line="1619">a `PangoLayout`</doc>
12997+ <type name="Layout" c:type="PangoLayout*"/>
12998+ </instance-parameter>
12999+ <parameter name="flags" transfer-ownership="none">
13000+ <doc xml:space="preserve"
13001+ filename="../pango/serializer.c"
13002+ line="1620">`PangoLayoutSerializeFlags`</doc>
13003+ <type name="LayoutSerializeFlags"
13004+ c:type="PangoLayoutSerializeFlags"/>
13005+ </parameter>
13006+ <parameter name="filename" transfer-ownership="none">
13007+ <doc xml:space="preserve"
13008+ filename="../pango/serializer.c"
13009+ line="1621">the file to save it to</doc>
13010+ <type name="filename" c:type="const char*"/>
13011+ </parameter>
13012+ </parameters>
13013+ </method>
13014+ <method name="xy_to_index" c:identifier="pango_layout_xy_to_index">
13015+ <doc xml:space="preserve"
13016+ filename="../pango/pango-layout.c"
13017+ line="2272">Converts from X and Y position within a layout to the byte index to the
13018+character at that logical position.
13019+
13020+If the Y position is not inside the layout, the closest position is
13021+chosen (the position will be clamped inside the layout). If the X position
13022+is not within the layout, then the start or the end of the line is
13023+chosen as described for [method@Pango.LayoutLine.x_to_index]. If either
13024+the X or Y positions were not inside the layout, then the function returns
13025+%FALSE; on an exact hit, it returns %TRUE.</doc>
13026+ <source-position filename="../pango/pango-layout.h" line="317"/>
13027+ <return-value transfer-ownership="none">
13028+ <doc xml:space="preserve"
13029+ filename="../pango/pango-layout.c"
13030+ line="2293">%TRUE if the coordinates were inside text, %FALSE otherwise</doc>
13031+ <type name="gboolean" c:type="gboolean"/>
13032+ </return-value>
13033+ <parameters>
13034+ <instance-parameter name="layout" transfer-ownership="none">
13035+ <doc xml:space="preserve"
13036+ filename="../pango/pango-layout.c"
13037+ line="2274">a `PangoLayout`</doc>
13038+ <type name="Layout" c:type="PangoLayout*"/>
13039+ </instance-parameter>
13040+ <parameter name="x" transfer-ownership="none">
13041+ <doc xml:space="preserve"
13042+ filename="../pango/pango-layout.c"
13043+ line="2275">the X offset (in Pango units) from the left edge of the layout</doc>
13044+ <type name="gint" c:type="int"/>
13045+ </parameter>
13046+ <parameter name="y" transfer-ownership="none">
13047+ <doc xml:space="preserve"
13048+ filename="../pango/pango-layout.c"
13049+ line="2276">the Y offset (in Pango units) from the top edge of the layout</doc>
13050+ <type name="gint" c:type="int"/>
13051+ </parameter>
13052+ <parameter name="index_"
13053+ direction="out"
13054+ caller-allocates="0"
13055+ transfer-ownership="full">
13056+ <doc xml:space="preserve"
13057+ filename="../pango/pango-layout.c"
13058+ line="2277">location to store calculated byte index</doc>
13059+ <type name="gint" c:type="int*"/>
13060+ </parameter>
13061+ <parameter name="trailing"
13062+ direction="out"
13063+ caller-allocates="0"
13064+ transfer-ownership="full">
13065+ <doc xml:space="preserve"
13066+ filename="../pango/pango-layout.c"
13067+ line="2278">location to store a integer indicating where
13068+ in the grapheme the user clicked. It will either be zero, or the
13069+ number of characters in the grapheme. 0 represents the leading edge
13070+ of the grapheme.</doc>
13071+ <type name="gint" c:type="int*"/>
13072+ </parameter>
13073+ </parameters>
13074+ </method>
13075+ </class>
13076+ <record name="LayoutClass"
13077+ c:type="PangoLayoutClass"
13078+ disguised="1"
13079+ glib:is-gtype-struct-for="Layout">
13080+ <source-position filename="../pango/pango-layout.h" line="33"/>
13081+ </record>
13082+ <enumeration name="LayoutDeserializeError"
13083+ version="1.50"
13084+ glib:type-name="PangoLayoutDeserializeError"
13085+ glib:get-type="pango_layout_deserialize_error_get_type"
13086+ c:type="PangoLayoutDeserializeError"
13087+ glib:error-domain="pango-layout-deserialize-error-quark">
13088+ <doc xml:space="preserve"
13089+ filename="../pango/pango-layout.h"
13090+ line="385">Errors that can be returned by [func@Pango.Layout.deserialize].</doc>
13091+ <member name="invalid"
13092+ value="0"
13093+ c:identifier="PANGO_LAYOUT_DESERIALIZE_INVALID"
13094+ glib:nick="invalid"
13095+ glib:name="PANGO_LAYOUT_DESERIALIZE_INVALID">
13096+ <doc xml:space="preserve"
13097+ filename="../pango/pango-layout.h"
13098+ line="387">Unspecified error</doc>
13099+ </member>
13100+ <member name="invalid_value"
13101+ value="1"
13102+ c:identifier="PANGO_LAYOUT_DESERIALIZE_INVALID_VALUE"
13103+ glib:nick="invalid-value"
13104+ glib:name="PANGO_LAYOUT_DESERIALIZE_INVALID_VALUE">
13105+ <doc xml:space="preserve"
13106+ filename="../pango/pango-layout.h"
13107+ line="388">A JSon value could not be
13108+ interpreted</doc>
13109+ </member>
13110+ <member name="missing_value"
13111+ value="2"
13112+ c:identifier="PANGO_LAYOUT_DESERIALIZE_MISSING_VALUE"
13113+ glib:nick="missing-value"
13114+ glib:name="PANGO_LAYOUT_DESERIALIZE_MISSING_VALUE">
13115+ <doc xml:space="preserve"
13116+ filename="../pango/pango-layout.h"
13117+ line="390">A required JSon member was
13118+ not found</doc>
13119+ </member>
13120+ <function name="quark"
13121+ c:identifier="pango_layout_deserialize_error_quark">
13122+ <return-value transfer-ownership="none">
13123+ <type name="GLib.Quark" c:type="GQuark"/>
13124+ </return-value>
13125+ </function>
13126+ </enumeration>
13127+ <bitfield name="LayoutDeserializeFlags"
13128+ version="1.50"
13129+ glib:type-name="PangoLayoutDeserializeFlags"
13130+ glib:get-type="pango_layout_deserialize_flags_get_type"
13131+ c:type="PangoLayoutDeserializeFlags">
13132+ <doc xml:space="preserve"
13133+ filename="../pango/pango-layout.h"
13134+ line="406">Flags that influence the behavior of [func@Pango.Layout.deserialize].
13135+
13136+New members may be added to this enumeration over time.</doc>
13137+ <member name="default"
13138+ value="0"
13139+ c:identifier="PANGO_LAYOUT_DESERIALIZE_DEFAULT"
13140+ glib:nick="default"
13141+ glib:name="PANGO_LAYOUT_DESERIALIZE_DEFAULT">
13142+ <doc xml:space="preserve"
13143+ filename="../pango/pango-layout.h"
13144+ line="408">Default behavior</doc>
13145+ </member>
13146+ <member name="context"
13147+ value="1"
13148+ c:identifier="PANGO_LAYOUT_DESERIALIZE_CONTEXT"
13149+ glib:nick="context"
13150+ glib:name="PANGO_LAYOUT_DESERIALIZE_CONTEXT">
13151+ <doc xml:space="preserve"
13152+ filename="../pango/pango-layout.h"
13153+ line="409">Apply context information
13154+ from the serialization to the `PangoContext`</doc>
13155+ </member>
13156+ </bitfield>
13157+ <record name="LayoutIter"
13158+ c:type="PangoLayoutIter"
13159+ glib:type-name="PangoLayoutIter"
13160+ glib:get-type="pango_layout_iter_get_type"
13161+ c:symbol-prefix="layout_iter">
13162+ <doc xml:space="preserve"
13163+ filename="../pango/pango-layout.c"
13164+ line="65">A `PangoLayoutIter` can be used to iterate over the visual
13165+extents of a `PangoLayout`.
13166+
13167+To obtain a `PangoLayoutIter`, use [method@Pango.Layout.get_iter].
13168+
13169+The `PangoLayoutIter` structure is opaque, and has no user-visible fields.</doc>
13170+ <source-position filename="../pango/pango-layout.h" line="478"/>
13171+ <method name="at_last_line"
13172+ c:identifier="pango_layout_iter_at_last_line">
13173+ <doc xml:space="preserve"
13174+ filename="../pango/pango-layout.c"
13175+ line="7321">Determines whether @iter is on the last line of the layout.</doc>
13176+ <source-position filename="../pango/pango-layout.h" line="503"/>
13177+ <return-value transfer-ownership="none">
13178+ <doc xml:space="preserve"
13179+ filename="../pango/pango-layout.c"
13180+ line="7327">%TRUE if @iter is on the last line</doc>
13181+ <type name="gboolean" c:type="gboolean"/>
13182+ </return-value>
13183+ <parameters>
13184+ <instance-parameter name="iter" transfer-ownership="none">
13185+ <doc xml:space="preserve"
13186+ filename="../pango/pango-layout.c"
13187+ line="7323">a `PangoLayoutIter`</doc>
13188+ <type name="LayoutIter" c:type="PangoLayoutIter*"/>
13189+ </instance-parameter>
13190+ </parameters>
13191+ </method>
13192+ <method name="copy" c:identifier="pango_layout_iter_copy" version="1.20">
13193+ <doc xml:space="preserve"
13194+ filename="../pango/pango-layout.c"
13195+ line="7020">Copies a `PangoLayoutIter`.</doc>
13196+ <source-position filename="../pango/pango-layout.h" line="488"/>
13197+ <return-value transfer-ownership="full" nullable="1">
13198+ <doc xml:space="preserve"
13199+ filename="../pango/pango-layout.c"
13200+ line="7026">the newly allocated `PangoLayoutIter`</doc>
13201+ <type name="LayoutIter" c:type="PangoLayoutIter*"/>
13202+ </return-value>
13203+ <parameters>
13204+ <instance-parameter name="iter"
13205+ transfer-ownership="none"
13206+ nullable="1"
13207+ allow-none="1">
13208+ <doc xml:space="preserve"
13209+ filename="../pango/pango-layout.c"
13210+ line="7022">a `PangoLayoutIter`</doc>
13211+ <type name="LayoutIter" c:type="PangoLayoutIter*"/>
13212+ </instance-parameter>
13213+ </parameters>
13214+ </method>
13215+ <method name="free" c:identifier="pango_layout_iter_free">
13216+ <doc xml:space="preserve"
13217+ filename="../pango/pango-layout.c"
13218+ line="7165">Frees an iterator that's no longer in use.</doc>
13219+ <source-position filename="../pango/pango-layout.h" line="490"/>
13220+ <return-value transfer-ownership="none">
13221+ <type name="none" c:type="void"/>
13222+ </return-value>
13223+ <parameters>
13224+ <instance-parameter name="iter"
13225+ transfer-ownership="none"
13226+ nullable="1"
13227+ allow-none="1">
13228+ <doc xml:space="preserve"
13229+ filename="../pango/pango-layout.c"
13230+ line="7167">a `PangoLayoutIter`, may be %NULL</doc>
13231+ <type name="LayoutIter" c:type="PangoLayoutIter*"/>
13232+ </instance-parameter>
13233+ </parameters>
13234+ </method>
13235+ <method name="get_baseline"
13236+ c:identifier="pango_layout_iter_get_baseline">
13237+ <doc xml:space="preserve"
13238+ filename="../pango/pango-layout.c"
13239+ line="7884">Gets the Y position of the current line's baseline, in layout
13240+coordinates.
13241+
13242+Layout coordinates have the origin at the top left of the entire layout.</doc>
13243+ <source-position filename="../pango/pango-layout.h" line="543"/>
13244+ <return-value transfer-ownership="none">
13245+ <doc xml:space="preserve"
13246+ filename="../pango/pango-layout.c"
13247+ line="7893">baseline of current line</doc>
13248+ <type name="gint" c:type="int"/>
13249+ </return-value>
13250+ <parameters>
13251+ <instance-parameter name="iter" transfer-ownership="none">
13252+ <doc xml:space="preserve"
13253+ filename="../pango/pango-layout.c"
13254+ line="7886">a `PangoLayoutIter`</doc>
13255+ <type name="LayoutIter" c:type="PangoLayoutIter*"/>
13256+ </instance-parameter>
13257+ </parameters>
13258+ </method>
13259+ <method name="get_char_extents"
13260+ c:identifier="pango_layout_iter_get_char_extents">
13261+ <doc xml:space="preserve"
13262+ filename="../pango/pango-layout.c"
13263+ line="7611">Gets the extents of the current character, in layout coordinates.
13264+
13265+Layout coordinates have the origin at the top left of the entire layout.
13266+
13267+Only logical extents can sensibly be obtained for characters;
13268+ink extents make sense only down to the level of clusters.</doc>
13269+ <source-position filename="../pango/pango-layout.h" line="517"/>
13270+ <return-value transfer-ownership="none">
13271+ <type name="none" c:type="void"/>
13272+ </return-value>
13273+ <parameters>
13274+ <instance-parameter name="iter" transfer-ownership="none">
13275+ <doc xml:space="preserve"
13276+ filename="../pango/pango-layout.c"
13277+ line="7613">a `PangoLayoutIter`</doc>
13278+ <type name="LayoutIter" c:type="PangoLayoutIter*"/>
13279+ </instance-parameter>
13280+ <parameter name="logical_rect"
13281+ direction="out"
13282+ caller-allocates="1"
13283+ transfer-ownership="none">
13284+ <doc xml:space="preserve"
13285+ filename="../pango/pango-layout.c"
13286+ line="7614">rectangle to fill with
13287+ logical extents</doc>
13288+ <type name="Rectangle" c:type="PangoRectangle*"/>
13289+ </parameter>
13290+ </parameters>
13291+ </method>
13292+ <method name="get_cluster_extents"
13293+ c:identifier="pango_layout_iter_get_cluster_extents">
13294+ <doc xml:space="preserve"
13295+ filename="../pango/pango-layout.c"
13296+ line="7664">Gets the extents of the current cluster, in layout coordinates.
13297+
13298+Layout coordinates have the origin at the top left of the entire layout.</doc>
13299+ <source-position filename="../pango/pango-layout.h" line="520"/>
13300+ <return-value transfer-ownership="none">
13301+ <type name="none" c:type="void"/>
13302+ </return-value>
13303+ <parameters>
13304+ <instance-parameter name="iter" transfer-ownership="none">
13305+ <doc xml:space="preserve"
13306+ filename="../pango/pango-layout.c"
13307+ line="7666">a `PangoLayoutIter`</doc>
13308+ <type name="LayoutIter" c:type="PangoLayoutIter*"/>
13309+ </instance-parameter>
13310+ <parameter name="ink_rect"
13311+ direction="out"
13312+ caller-allocates="1"
13313+ transfer-ownership="none"
13314+ optional="1"
13315+ allow-none="1">
13316+ <doc xml:space="preserve"
13317+ filename="../pango/pango-layout.c"
13318+ line="7667">rectangle to fill with ink extents</doc>
13319+ <type name="Rectangle" c:type="PangoRectangle*"/>
13320+ </parameter>
13321+ <parameter name="logical_rect"
13322+ direction="out"
13323+ caller-allocates="1"
13324+ transfer-ownership="none"
13325+ optional="1"
13326+ allow-none="1">
13327+ <doc xml:space="preserve"
13328+ filename="../pango/pango-layout.c"
13329+ line="7668">rectangle to fill with logical extents</doc>
13330+ <type name="Rectangle" c:type="PangoRectangle*"/>
13331+ </parameter>
13332+ </parameters>
13333+ </method>
13334+ <method name="get_index" c:identifier="pango_layout_iter_get_index">
13335+ <doc xml:space="preserve"
13336+ filename="../pango/pango-layout.c"
13337+ line="7181">Gets the current byte index.
13338+
13339+Note that iterating forward by char moves in visual order,
13340+not logical order, so indexes may not be sequential. Also,
13341+the index may be equal to the length of the text in the
13342+layout, if on the %NULL run (see [method@Pango.LayoutIter.get_run]).</doc>
13343+ <source-position filename="../pango/pango-layout.h" line="493"/>
13344+ <return-value transfer-ownership="none">
13345+ <doc xml:space="preserve"
13346+ filename="../pango/pango-layout.c"
13347+ line="7192">current byte index</doc>
13348+ <type name="gint" c:type="int"/>
13349+ </return-value>
13350+ <parameters>
13351+ <instance-parameter name="iter" transfer-ownership="none">
13352+ <doc xml:space="preserve"
13353+ filename="../pango/pango-layout.c"
13354+ line="7183">a `PangoLayoutIter`</doc>
13355+ <type name="LayoutIter" c:type="PangoLayoutIter*"/>
13356+ </instance-parameter>
13357+ </parameters>
13358+ </method>
13359+ <method name="get_layout"
13360+ c:identifier="pango_layout_iter_get_layout"
13361+ version="1.20">
13362+ <doc xml:space="preserve"
13363+ filename="../pango/pango-layout.c"
13364+ line="7338">Gets the layout associated with a `PangoLayoutIter`.</doc>
13365+ <source-position filename="../pango/pango-layout.h" line="505"/>
13366+ <return-value transfer-ownership="none">
13367+ <doc xml:space="preserve"
13368+ filename="../pango/pango-layout.c"
13369+ line="7344">the layout associated with @iter</doc>
13370+ <type name="Layout" c:type="PangoLayout*"/>
13371+ </return-value>
13372+ <parameters>
13373+ <instance-parameter name="iter" transfer-ownership="none">
13374+ <doc xml:space="preserve"
13375+ filename="../pango/pango-layout.c"
13376+ line="7340">a `PangoLayoutIter`</doc>
13377+ <type name="LayoutIter" c:type="PangoLayoutIter*"/>
13378+ </instance-parameter>
13379+ </parameters>
13380+ </method>
13381+ <method name="get_layout_extents"
13382+ c:identifier="pango_layout_iter_get_layout_extents">
13383+ <doc xml:space="preserve"
13384+ filename="../pango/pango-layout.c"
13385+ line="7930">Obtains the extents of the `PangoLayout` being iterated over.</doc>
13386+ <source-position filename="../pango/pango-layout.h" line="539"/>
13387+ <return-value transfer-ownership="none">
13388+ <type name="none" c:type="void"/>
13389+ </return-value>
13390+ <parameters>
13391+ <instance-parameter name="iter" transfer-ownership="none">
13392+ <doc xml:space="preserve"
13393+ filename="../pango/pango-layout.c"
13394+ line="7932">a `PangoLayoutIter`</doc>
13395+ <type name="LayoutIter" c:type="PangoLayoutIter*"/>
13396+ </instance-parameter>
13397+ <parameter name="ink_rect"
13398+ direction="out"
13399+ caller-allocates="1"
13400+ transfer-ownership="none"
13401+ optional="1"
13402+ allow-none="1">
13403+ <doc xml:space="preserve"
13404+ filename="../pango/pango-layout.c"
13405+ line="7933">rectangle to fill with ink extents</doc>
13406+ <type name="Rectangle" c:type="PangoRectangle*"/>
13407+ </parameter>
13408+ <parameter name="logical_rect"
13409+ direction="out"
13410+ caller-allocates="1"
13411+ transfer-ownership="none"
13412+ optional="1"
13413+ allow-none="1">
13414+ <doc xml:space="preserve"
13415+ filename="../pango/pango-layout.c"
13416+ line="7934">rectangle to fill with logical extents</doc>
13417+ <type name="Rectangle" c:type="PangoRectangle*"/>
13418+ </parameter>
13419+ </parameters>
13420+ </method>
13421+ <method name="get_line" c:identifier="pango_layout_iter_get_line">
13422+ <doc xml:space="preserve"
13423+ filename="../pango/pango-layout.c"
13424+ line="7274">Gets the current line.
13425+
13426+Use the faster [method@Pango.LayoutIter.get_line_readonly] if
13427+you do not plan to modify the contents of the line (glyphs,
13428+glyph widths, etc.).</doc>
13429+ <source-position filename="../pango/pango-layout.h" line="499"/>
13430+ <return-value transfer-ownership="none">
13431+ <doc xml:space="preserve"
13432+ filename="../pango/pango-layout.c"
13433+ line="7284">the current line</doc>
13434+ <type name="LayoutLine" c:type="PangoLayoutLine*"/>
13435+ </return-value>
13436+ <parameters>
13437+ <instance-parameter name="iter" transfer-ownership="none">
13438+ <doc xml:space="preserve"
13439+ filename="../pango/pango-layout.c"
13440+ line="7276">a `PangoLayoutIter`</doc>
13441+ <type name="LayoutIter" c:type="PangoLayoutIter*"/>
13442+ </instance-parameter>
13443+ </parameters>
13444+ </method>
13445+ <method name="get_line_extents"
13446+ c:identifier="pango_layout_iter_get_line_extents">
13447+ <doc xml:space="preserve"
13448+ filename="../pango/pango-layout.c"
13449+ line="7788">Obtains the extents of the current line.
13450+
13451+Extents are in layout coordinates (origin is the top-left corner
13452+of the entire `PangoLayout`). Thus the extents returned by this
13453+function will be the same width/height but not at the same x/y
13454+as the extents returned from [method@Pango.LayoutLine.get_extents].</doc>
13455+ <source-position filename="../pango/pango-layout.h" line="528"/>
13456+ <return-value transfer-ownership="none">
13457+ <type name="none" c:type="void"/>
13458+ </return-value>
13459+ <parameters>
13460+ <instance-parameter name="iter" transfer-ownership="none">
13461+ <doc xml:space="preserve"
13462+ filename="../pango/pango-layout.c"
13463+ line="7790">a `PangoLayoutIter`</doc>
13464+ <type name="LayoutIter" c:type="PangoLayoutIter*"/>
13465+ </instance-parameter>
13466+ <parameter name="ink_rect"
13467+ direction="out"
13468+ caller-allocates="1"
13469+ transfer-ownership="none"
13470+ optional="1"
13471+ allow-none="1">
13472+ <doc xml:space="preserve"
13473+ filename="../pango/pango-layout.c"
13474+ line="7791">rectangle to fill with ink extents</doc>
13475+ <type name="Rectangle" c:type="PangoRectangle*"/>
13476+ </parameter>
13477+ <parameter name="logical_rect"
13478+ direction="out"
13479+ caller-allocates="1"
13480+ transfer-ownership="none"
13481+ optional="1"
13482+ allow-none="1">
13483+ <doc xml:space="preserve"
13484+ filename="../pango/pango-layout.c"
13485+ line="7792">rectangle to fill with logical extents</doc>
13486+ <type name="Rectangle" c:type="PangoRectangle*"/>
13487+ </parameter>
13488+ </parameters>
13489+ </method>
13490+ <method name="get_line_readonly"
13491+ c:identifier="pango_layout_iter_get_line_readonly"
13492+ version="1.16">
13493+ <doc xml:space="preserve"
13494+ filename="../pango/pango-layout.c"
13495+ line="7297">Gets the current line for read-only access.
13496+
13497+This is a faster alternative to [method@Pango.LayoutIter.get_line],
13498+but the user is not expected to modify the contents of the line
13499+(glyphs, glyph widths, etc.).</doc>
13500+ <source-position filename="../pango/pango-layout.h" line="501"/>
13501+ <return-value transfer-ownership="none">
13502+ <doc xml:space="preserve"
13503+ filename="../pango/pango-layout.c"
13504+ line="7307">the current line, that should not be
13505+ modified</doc>
13506+ <type name="LayoutLine" c:type="PangoLayoutLine*"/>
13507+ </return-value>
13508+ <parameters>
13509+ <instance-parameter name="iter" transfer-ownership="none">
13510+ <doc xml:space="preserve"
13511+ filename="../pango/pango-layout.c"
13512+ line="7299">a `PangoLayoutIter`</doc>
13513+ <type name="LayoutIter" c:type="PangoLayoutIter*"/>
13514+ </instance-parameter>
13515+ </parameters>
13516+ </method>
13517+ <method name="get_line_yrange"
13518+ c:identifier="pango_layout_iter_get_line_yrange">
13519+ <doc xml:space="preserve"
13520+ filename="../pango/pango-layout.c"
13521+ line="7827">Divides the vertical space in the `PangoLayout` being iterated over
13522+between the lines in the layout, and returns the space belonging to
13523+the current line.
13524+
13525+A line's range includes the line's logical extents. plus half of the
13526+spacing above and below the line, if [method@Pango.Layout.set_spacing]
13527+has been called to set layout spacing. The Y positions are in layout
13528+coordinates (origin at top left of the entire layout).
13529+
13530+Note: Since 1.44, Pango uses line heights for placing lines, and there
13531+may be gaps between the ranges returned by this function.</doc>
13532+ <source-position filename="../pango/pango-layout.h" line="535"/>
13533+ <return-value transfer-ownership="none">
13534+ <type name="none" c:type="void"/>
13535+ </return-value>
13536+ <parameters>
13537+ <instance-parameter name="iter" transfer-ownership="none">
13538+ <doc xml:space="preserve"
13539+ filename="../pango/pango-layout.c"
13540+ line="7829">a `PangoLayoutIter`</doc>
13541+ <type name="LayoutIter" c:type="PangoLayoutIter*"/>
13542+ </instance-parameter>
13543+ <parameter name="y0_"
13544+ direction="out"
13545+ caller-allocates="0"
13546+ transfer-ownership="full"
13547+ optional="1"
13548+ allow-none="1">
13549+ <doc xml:space="preserve"
13550+ filename="../pango/pango-layout.c"
13551+ line="7830">start of line</doc>
13552+ <type name="gint" c:type="int*"/>
13553+ </parameter>
13554+ <parameter name="y1_"
13555+ direction="out"
13556+ caller-allocates="0"
13557+ transfer-ownership="full"
13558+ optional="1"
13559+ allow-none="1">
13560+ <doc xml:space="preserve"
13561+ filename="../pango/pango-layout.c"
13562+ line="7831">end of line</doc>
13563+ <type name="gint" c:type="int*"/>
13564+ </parameter>
13565+ </parameters>
13566+ </method>
13567+ <method name="get_run" c:identifier="pango_layout_iter_get_run">
13568+ <doc xml:space="preserve"
13569+ filename="../pango/pango-layout.c"
13570+ line="7203">Gets the current run.
13571+
13572+When iterating by run, at the end of each line, there's a position
13573+with a %NULL run, so this function can return %NULL. The %NULL run
13574+at the end of each line ensures that all lines have at least one run,
13575+even lines consisting of only a newline.
13576+
13577+Use the faster [method@Pango.LayoutIter.get_run_readonly] if you do not
13578+plan to modify the contents of the run (glyphs, glyph widths, etc.).</doc>
13579+ <source-position filename="../pango/pango-layout.h" line="495"/>
13580+ <return-value transfer-ownership="none" nullable="1">
13581+ <doc xml:space="preserve"
13582+ filename="../pango/pango-layout.c"
13583+ line="7217">the current run</doc>
13584+ <type name="LayoutRun" c:type="PangoLayoutRun*"/>
13585+ </return-value>
13586+ <parameters>
13587+ <instance-parameter name="iter" transfer-ownership="none">
13588+ <doc xml:space="preserve"
13589+ filename="../pango/pango-layout.c"
13590+ line="7205">a `PangoLayoutIter`</doc>
13591+ <type name="LayoutIter" c:type="PangoLayoutIter*"/>
13592+ </instance-parameter>
13593+ </parameters>
13594+ </method>
13595+ <method name="get_run_baseline"
13596+ c:identifier="pango_layout_iter_get_run_baseline"
13597+ version="1.50">
13598+ <doc xml:space="preserve"
13599+ filename="../pango/pango-layout.c"
13600+ line="7904">Gets the Y position of the current run's baseline, in layout
13601+coordinates.
13602+
13603+Layout coordinates have the origin at the top left of the entire layout.
13604+
13605+The run baseline can be different from the line baseline, for
13606+example due to superscript or subscript positioning.</doc>
13607+ <source-position filename="../pango/pango-layout.h" line="545"/>
13608+ <return-value transfer-ownership="none">
13609+ <type name="gint" c:type="int"/>
13610+ </return-value>
13611+ <parameters>
13612+ <instance-parameter name="iter" transfer-ownership="none">
13613+ <doc xml:space="preserve"
13614+ filename="../pango/pango-layout.c"
13615+ line="7906">a `PangoLayoutIter`</doc>
13616+ <type name="LayoutIter" c:type="PangoLayoutIter*"/>
13617+ </instance-parameter>
13618+ </parameters>
13619+ </method>
13620+ <method name="get_run_extents"
13621+ c:identifier="pango_layout_iter_get_run_extents">
13622+ <doc xml:space="preserve"
13623+ filename="../pango/pango-layout.c"
13624+ line="7714">Gets the extents of the current run in layout coordinates.
13625+
13626+Layout coordinates have the origin at the top left of the entire layout.</doc>
13627+ <source-position filename="../pango/pango-layout.h" line="524"/>
13628+ <return-value transfer-ownership="none">
13629+ <type name="none" c:type="void"/>
13630+ </return-value>
13631+ <parameters>
13632+ <instance-parameter name="iter" transfer-ownership="none">
13633+ <doc xml:space="preserve"
13634+ filename="../pango/pango-layout.c"
13635+ line="7716">a `PangoLayoutIter`</doc>
13636+ <type name="LayoutIter" c:type="PangoLayoutIter*"/>
13637+ </instance-parameter>
13638+ <parameter name="ink_rect"
13639+ direction="out"
13640+ caller-allocates="1"
13641+ transfer-ownership="none"
13642+ optional="1"
13643+ allow-none="1">
13644+ <doc xml:space="preserve"
13645+ filename="../pango/pango-layout.c"
13646+ line="7717">rectangle to fill with ink extents</doc>
13647+ <type name="Rectangle" c:type="PangoRectangle*"/>
13648+ </parameter>
13649+ <parameter name="logical_rect"
13650+ direction="out"
13651+ caller-allocates="1"
13652+ transfer-ownership="none"
13653+ optional="1"
13654+ allow-none="1">
13655+ <doc xml:space="preserve"
13656+ filename="../pango/pango-layout.c"
13657+ line="7718">rectangle to fill with logical extents</doc>
13658+ <type name="Rectangle" c:type="PangoRectangle*"/>
13659+ </parameter>
13660+ </parameters>
13661+ </method>
13662+ <method name="get_run_readonly"
13663+ c:identifier="pango_layout_iter_get_run_readonly"
13664+ version="1.16">
13665+ <doc xml:space="preserve"
13666+ filename="../pango/pango-layout.c"
13667+ line="7230">Gets the current run for read-only access.
13668+
13669+When iterating by run, at the end of each line, there's a position
13670+with a %NULL run, so this function can return %NULL. The %NULL run
13671+at the end of each line ensures that all lines have at least one run,
13672+even lines consisting of only a newline.
13673+
13674+This is a faster alternative to [method@Pango.LayoutIter.get_run],
13675+but the user is not expected to modify the contents of the run (glyphs,
13676+glyph widths, etc.).</doc>
13677+ <source-position filename="../pango/pango-layout.h" line="497"/>
13678+ <return-value transfer-ownership="none" nullable="1">
13679+ <doc xml:space="preserve"
13680+ filename="../pango/pango-layout.c"
13681+ line="7245">the current run, that
13682+ should not be modified</doc>
13683+ <type name="LayoutRun" c:type="PangoLayoutRun*"/>
13684+ </return-value>
13685+ <parameters>
13686+ <instance-parameter name="iter" transfer-ownership="none">
13687+ <doc xml:space="preserve"
13688+ filename="../pango/pango-layout.c"
13689+ line="7232">a `PangoLayoutIter`</doc>
13690+ <type name="LayoutIter" c:type="PangoLayoutIter*"/>
13691+ </instance-parameter>
13692+ </parameters>
13693+ </method>
13694+ <method name="next_char" c:identifier="pango_layout_iter_next_char">
13695+ <doc xml:space="preserve"
13696+ filename="../pango/pango-layout.c"
13697+ line="7460">Moves @iter forward to the next character in visual order.
13698+
13699+If @iter was already at the end of the layout, returns %FALSE.</doc>
13700+ <source-position filename="../pango/pango-layout.h" line="508"/>
13701+ <return-value transfer-ownership="none">
13702+ <doc xml:space="preserve"
13703+ filename="../pango/pango-layout.c"
13704+ line="7468">whether motion was possible</doc>
13705+ <type name="gboolean" c:type="gboolean"/>
13706+ </return-value>
13707+ <parameters>
13708+ <instance-parameter name="iter" transfer-ownership="none">
13709+ <doc xml:space="preserve"
13710+ filename="../pango/pango-layout.c"
13711+ line="7462">a `PangoLayoutIter`</doc>
13712+ <type name="LayoutIter" c:type="PangoLayoutIter*"/>
13713+ </instance-parameter>
13714+ </parameters>
13715+ </method>
13716+ <method name="next_cluster"
13717+ c:identifier="pango_layout_iter_next_cluster">
13718+ <doc xml:space="preserve"
13719+ filename="../pango/pango-layout.c"
13720+ line="7505">Moves @iter forward to the next cluster in visual order.
13721+
13722+If @iter was already at the end of the layout, returns %FALSE.</doc>
13723+ <source-position filename="../pango/pango-layout.h" line="510"/>
13724+ <return-value transfer-ownership="none">
13725+ <doc xml:space="preserve"
13726+ filename="../pango/pango-layout.c"
13727+ line="7513">whether motion was possible</doc>
13728+ <type name="gboolean" c:type="gboolean"/>
13729+ </return-value>
13730+ <parameters>
13731+ <instance-parameter name="iter" transfer-ownership="none">
13732+ <doc xml:space="preserve"
13733+ filename="../pango/pango-layout.c"
13734+ line="7507">a `PangoLayoutIter`</doc>
13735+ <type name="LayoutIter" c:type="PangoLayoutIter*"/>
13736+ </instance-parameter>
13737+ </parameters>
13738+ </method>
13739+ <method name="next_line" c:identifier="pango_layout_iter_next_line">
13740+ <doc xml:space="preserve"
13741+ filename="../pango/pango-layout.c"
13742+ line="7566">Moves @iter forward to the start of the next line.
13743+
13744+If @iter is already on the last line, returns %FALSE.</doc>
13745+ <source-position filename="../pango/pango-layout.h" line="514"/>
13746+ <return-value transfer-ownership="none">
13747+ <doc xml:space="preserve"
13748+ filename="../pango/pango-layout.c"
13749+ line="7574">whether motion was possible</doc>
13750+ <type name="gboolean" c:type="gboolean"/>
13751+ </return-value>
13752+ <parameters>
13753+ <instance-parameter name="iter" transfer-ownership="none">
13754+ <doc xml:space="preserve"
13755+ filename="../pango/pango-layout.c"
13756+ line="7568">a `PangoLayoutIter`</doc>
13757+ <type name="LayoutIter" c:type="PangoLayoutIter*"/>
13758+ </instance-parameter>
13759+ </parameters>
13760+ </method>
13761+ <method name="next_run" c:identifier="pango_layout_iter_next_run">
13762+ <doc xml:space="preserve"
13763+ filename="../pango/pango-layout.c"
13764+ line="7521">Moves @iter forward to the next run in visual order.
13765+
13766+If @iter was already at the end of the layout, returns %FALSE.</doc>
13767+ <source-position filename="../pango/pango-layout.h" line="512"/>
13768+ <return-value transfer-ownership="none">
13769+ <doc xml:space="preserve"
13770+ filename="../pango/pango-layout.c"
13771+ line="7529">whether motion was possible</doc>
13772+ <type name="gboolean" c:type="gboolean"/>
13773+ </return-value>
13774+ <parameters>
13775+ <instance-parameter name="iter" transfer-ownership="none">
13776+ <doc xml:space="preserve"
13777+ filename="../pango/pango-layout.c"
13778+ line="7523">a `PangoLayoutIter`</doc>
13779+ <type name="LayoutIter" c:type="PangoLayoutIter*"/>
13780+ </instance-parameter>
13781+ </parameters>
13782+ </method>
13783+ </record>
13784+ <record name="LayoutLine"
13785+ c:type="PangoLayoutLine"
13786+ glib:type-name="PangoLayoutLine"
13787+ glib:get-type="pango_layout_line_get_type"
13788+ c:symbol-prefix="layout_line">
13789+ <doc xml:space="preserve"
13790+ filename="../pango/pango-layout.h"
13791+ line="109">A `PangoLayoutLine` represents one of the lines resulting from laying
13792+out a paragraph via `PangoLayout`.
13793+
13794+`PangoLayoutLine` structures are obtained by calling
13795+[method@Pango.Layout.get_line] and are only valid until the text,
13796+attributes, or settings of the parent `PangoLayout` are modified.</doc>
13797+ <source-position filename="../pango/pango-layout.h" line="134"/>
13798+ <field name="layout" writable="1">
13799+ <doc xml:space="preserve"
13800+ filename="../pango/pango-layout.h"
13801+ line="111">the layout this line belongs to, might be %NULL</doc>
13802+ <type name="Layout" c:type="PangoLayout*"/>
13803+ </field>
13804+ <field name="start_index" writable="1">
13805+ <doc xml:space="preserve"
13806+ filename="../pango/pango-layout.h"
13807+ line="112">start of line as byte index into layout-&gt;text</doc>
13808+ <type name="gint" c:type="gint"/>
13809+ </field>
13810+ <field name="length" writable="1">
13811+ <doc xml:space="preserve"
13812+ filename="../pango/pango-layout.h"
13813+ line="113">length of line in bytes</doc>
13814+ <type name="gint" c:type="gint"/>
13815+ </field>
13816+ <field name="runs" writable="1">
13817+ <doc xml:space="preserve"
13818+ filename="../pango/pango-layout.h"
13819+ line="114">list of runs in the
13820+ line, from left to right</doc>
13821+ <type name="GLib.SList" c:type="GSList*">
13822+ <type name="LayoutRun"/>
13823+ </type>
13824+ </field>
13825+ <field name="is_paragraph_start" writable="1" bits="1">
13826+ <doc xml:space="preserve"
13827+ filename="../pango/pango-layout.h"
13828+ line="116">#TRUE if this is the first line of the paragraph</doc>
13829+ <type name="guint" c:type="guint"/>
13830+ </field>
13831+ <field name="resolved_dir" writable="1" bits="3">
13832+ <doc xml:space="preserve"
13833+ filename="../pango/pango-layout.h"
13834+ line="117">#Resolved PangoDirection of line</doc>
13835+ <type name="guint" c:type="guint"/>
13836+ </field>
13837+ <method name="get_extents" c:identifier="pango_layout_line_get_extents">
13838+ <doc xml:space="preserve"
13839+ filename="../pango/pango-layout.c"
13840+ line="5886">Computes the logical and ink extents of a layout line.
13841+
13842+See [method@Pango.Font.get_glyph_extents] for details
13843+about the interpretation of the rectangles.</doc>
13844+ <source-position filename="../pango/pango-layout.h" line="466"/>
13845+ <return-value transfer-ownership="none">
13846+ <type name="none" c:type="void"/>
13847+ </return-value>
13848+ <parameters>
13849+ <instance-parameter name="line" transfer-ownership="none">
13850+ <doc xml:space="preserve"
13851+ filename="../pango/pango-layout.c"
13852+ line="5888">a `PangoLayoutLine`</doc>
13853+ <type name="LayoutLine" c:type="PangoLayoutLine*"/>
13854+ </instance-parameter>
13855+ <parameter name="ink_rect"
13856+ direction="out"
13857+ caller-allocates="1"
13858+ transfer-ownership="none"
13859+ optional="1"
13860+ allow-none="1">
13861+ <doc xml:space="preserve"
13862+ filename="../pango/pango-layout.c"
13863+ line="5889">rectangle used to store the extents of
13864+ the glyph string as drawn</doc>
13865+ <type name="Rectangle" c:type="PangoRectangle*"/>
13866+ </parameter>
13867+ <parameter name="logical_rect"
13868+ direction="out"
13869+ caller-allocates="1"
13870+ transfer-ownership="none"
13871+ optional="1"
13872+ allow-none="1">
13873+ <doc xml:space="preserve"
13874+ filename="../pango/pango-layout.c"
13875+ line="5891">rectangle used to store the logical
13876+ extents of the glyph string</doc>
13877+ <type name="Rectangle" c:type="PangoRectangle*"/>
13878+ </parameter>
13879+ </parameters>
13880+ </method>
13881+ <method name="get_height"
13882+ c:identifier="pango_layout_line_get_height"
13883+ version="1.44">
13884+ <doc xml:space="preserve"
13885+ filename="../pango/pango-layout.c"
13886+ line="5907">Computes the height of the line, as the maximum of the heights
13887+of fonts used in this line.
13888+
13889+Note that the actual baseline-to-baseline distance between lines
13890+of text is influenced by other factors, such as
13891+[method@Pango.Layout.set_spacing] and
13892+[method@Pango.Layout.set_line_spacing].</doc>
13893+ <source-position filename="../pango/pango-layout.h" line="470"/>
13894+ <return-value transfer-ownership="none">
13895+ <type name="none" c:type="void"/>
13896+ </return-value>
13897+ <parameters>
13898+ <instance-parameter name="line" transfer-ownership="none">
13899+ <doc xml:space="preserve"
13900+ filename="../pango/pango-layout.c"
13901+ line="5909">a `PangoLayoutLine`</doc>
13902+ <type name="LayoutLine" c:type="PangoLayoutLine*"/>
13903+ </instance-parameter>
13904+ <parameter name="height"
13905+ direction="out"
13906+ caller-allocates="0"
13907+ transfer-ownership="full"
13908+ optional="1"
13909+ allow-none="1">
13910+ <doc xml:space="preserve"
13911+ filename="../pango/pango-layout.c"
13912+ line="5910">return location for the line height</doc>
13913+ <type name="gint" c:type="int*"/>
13914+ </parameter>
13915+ </parameters>
13916+ </method>
13917+ <method name="get_length"
13918+ c:identifier="pango_layout_line_get_length"
13919+ version="1.50">
13920+ <doc xml:space="preserve"
13921+ filename="../pango/pango-layout.c"
13922+ line="5048">Returns the length of the line, in bytes.</doc>
13923+ <source-position filename="../pango/pango-layout.h" line="443"/>
13924+ <return-value transfer-ownership="none">
13925+ <doc xml:space="preserve"
13926+ filename="../pango/pango-layout.c"
13927+ line="5054">the length of the line</doc>
13928+ <type name="gint" c:type="int"/>
13929+ </return-value>
13930+ <parameters>
13931+ <instance-parameter name="line" transfer-ownership="none">
13932+ <doc xml:space="preserve"
13933+ filename="../pango/pango-layout.c"
13934+ line="5050">a `PangoLayoutLine`</doc>
13935+ <type name="LayoutLine" c:type="PangoLayoutLine*"/>
13936+ </instance-parameter>
13937+ </parameters>
13938+ </method>
13939+ <method name="get_pixel_extents"
13940+ c:identifier="pango_layout_line_get_pixel_extents">
13941+ <doc xml:space="preserve"
13942+ filename="../pango/pango-layout.c"
13943+ line="5946">Computes the logical and ink extents of @layout_line in device units.
13944+
13945+This function just calls [method@Pango.LayoutLine.get_extents] followed by
13946+two [func@extents_to_pixels] calls, rounding @ink_rect and @logical_rect
13947+such that the rounded rectangles fully contain the unrounded one (that is,
13948+passes them as first argument to [func@extents_to_pixels]).</doc>
13949+ <source-position filename="../pango/pango-layout.h" line="474"/>
13950+ <return-value transfer-ownership="none">
13951+ <type name="none" c:type="void"/>
13952+ </return-value>
13953+ <parameters>
13954+ <instance-parameter name="layout_line" transfer-ownership="none">
13955+ <doc xml:space="preserve"
13956+ filename="../pango/pango-layout.c"
13957+ line="5948">a `PangoLayoutLine`</doc>
13958+ <type name="LayoutLine" c:type="PangoLayoutLine*"/>
13959+ </instance-parameter>
13960+ <parameter name="ink_rect"
13961+ direction="out"
13962+ caller-allocates="1"
13963+ transfer-ownership="none"
13964+ optional="1"
13965+ allow-none="1">
13966+ <doc xml:space="preserve"
13967+ filename="../pango/pango-layout.c"
13968+ line="5949">rectangle used to store the extents of
13969+ the glyph string as drawn</doc>
13970+ <type name="Rectangle" c:type="PangoRectangle*"/>
13971+ </parameter>
13972+ <parameter name="logical_rect"
13973+ direction="out"
13974+ caller-allocates="1"
13975+ transfer-ownership="none"
13976+ optional="1"
13977+ allow-none="1">
13978+ <doc xml:space="preserve"
13979+ filename="../pango/pango-layout.c"
13980+ line="5951">rectangle used to store the logical
13981+ extents of the glyph string</doc>
13982+ <type name="Rectangle" c:type="PangoRectangle*"/>
13983+ </parameter>
13984+ </parameters>
13985+ </method>
13986+ <method name="get_resolved_direction"
13987+ c:identifier="pango_layout_line_get_resolved_direction"
13988+ version="1.50">
13989+ <doc xml:space="preserve"
13990+ filename="../pango/pango-layout.c"
13991+ line="5080">Returns the resolved direction of the line.</doc>
13992+ <source-position filename="../pango/pango-layout.h" line="447"/>
13993+ <return-value transfer-ownership="none">
13994+ <doc xml:space="preserve"
13995+ filename="../pango/pango-layout.c"
13996+ line="5086">the resolved direction of the line</doc>
13997+ <type name="Direction" c:type="PangoDirection"/>
13998+ </return-value>
13999+ <parameters>
14000+ <instance-parameter name="line" transfer-ownership="none">
14001+ <doc xml:space="preserve"
14002+ filename="../pango/pango-layout.c"
14003+ line="5082">a `PangoLayoutLine`</doc>
14004+ <type name="LayoutLine" c:type="PangoLayoutLine*"/>
14005+ </instance-parameter>
14006+ </parameters>
14007+ </method>
14008+ <method name="get_start_index"
14009+ c:identifier="pango_layout_line_get_start_index"
14010+ version="1.50">
14011+ <doc xml:space="preserve"
14012+ filename="../pango/pango-layout.c"
14013+ line="5031">Returns the start index of the line, as byte index
14014+into the text of the layout.</doc>
14015+ <source-position filename="../pango/pango-layout.h" line="441"/>
14016+ <return-value transfer-ownership="none">
14017+ <doc xml:space="preserve"
14018+ filename="../pango/pango-layout.c"
14019+ line="5038">the start index of the line</doc>
14020+ <type name="gint" c:type="int"/>
14021+ </return-value>
14022+ <parameters>
14023+ <instance-parameter name="line" transfer-ownership="none">
14024+ <doc xml:space="preserve"
14025+ filename="../pango/pango-layout.c"
14026+ line="5033">a `PangoLayoutLine`</doc>
14027+ <type name="LayoutLine" c:type="PangoLayoutLine*"/>
14028+ </instance-parameter>
14029+ </parameters>
14030+ </method>
14031+ <method name="get_x_ranges"
14032+ c:identifier="pango_layout_line_get_x_ranges">
14033+ <doc xml:space="preserve"
14034+ filename="../pango/pango-layout.c"
14035+ line="5315">Gets a list of visual ranges corresponding to a given logical range.
14036+
14037+This list is not necessarily minimal - there may be consecutive
14038+ranges which are adjacent. The ranges will be sorted from left to
14039+right. The ranges are with respect to the left edge of the entire
14040+layout, not with respect to the line.</doc>
14041+ <source-position filename="../pango/pango-layout.h" line="460"/>
14042+ <return-value transfer-ownership="none">
14043+ <type name="none" c:type="void"/>
14044+ </return-value>
14045+ <parameters>
14046+ <instance-parameter name="line" transfer-ownership="none">
14047+ <doc xml:space="preserve"
14048+ filename="../pango/pango-layout.c"
14049+ line="5317">a `PangoLayoutLine`</doc>
14050+ <type name="LayoutLine" c:type="PangoLayoutLine*"/>
14051+ </instance-parameter>
14052+ <parameter name="start_index" transfer-ownership="none">
14053+ <doc xml:space="preserve"
14054+ filename="../pango/pango-layout.c"
14055+ line="5318">Start byte index of the logical range. If this value
14056+ is less than the start index for the line, then the first range
14057+ will extend all the way to the leading edge of the layout. Otherwise,
14058+ it will start at the leading edge of the first character.</doc>
14059+ <type name="gint" c:type="int"/>
14060+ </parameter>
14061+ <parameter name="end_index" transfer-ownership="none">
14062+ <doc xml:space="preserve"
14063+ filename="../pango/pango-layout.c"
14064+ line="5322">Ending byte index of the logical range. If this value is
14065+ greater than the end index for the line, then the last range will
14066+ extend all the way to the trailing edge of the layout. Otherwise,
14067+ it will end at the trailing edge of the last character.</doc>
14068+ <type name="gint" c:type="int"/>
14069+ </parameter>
14070+ <parameter name="ranges"
14071+ direction="out"
14072+ caller-allocates="0"
14073+ transfer-ownership="full">
14074+ <doc xml:space="preserve"
14075+ filename="../pango/pango-layout.c"
14076+ line="5326">location to
14077+ store a pointer to an array of ranges. The array will be of length
14078+ `2*n_ranges`, with each range starting at `(*ranges)[2*n]` and of
14079+ width `(*ranges)[2*n + 1] - (*ranges)[2*n]`. This array must be freed
14080+ with g_free(). The coordinates are relative to the layout and are in
14081+ Pango units.</doc>
14082+ <array length="3" zero-terminated="0" c:type="int**">
14083+ <type name="gint" c:type="int*"/>
14084+ </array>
14085+ </parameter>
14086+ <parameter name="n_ranges"
14087+ direction="out"
14088+ caller-allocates="0"
14089+ transfer-ownership="full">
14090+ <doc xml:space="preserve"
14091+ filename="../pango/pango-layout.c"
14092+ line="5332">The number of ranges stored in @ranges</doc>
14093+ <type name="gint" c:type="int*"/>
14094+ </parameter>
14095+ </parameters>
14096+ </method>
14097+ <method name="index_to_x" c:identifier="pango_layout_line_index_to_x">
14098+ <doc xml:space="preserve"
14099+ filename="../pango/pango-layout.c"
14100+ line="1771">Converts an index within a line to a X position.</doc>
14101+ <source-position filename="../pango/pango-layout.h" line="455"/>
14102+ <return-value transfer-ownership="none">
14103+ <type name="none" c:type="void"/>
14104+ </return-value>
14105+ <parameters>
14106+ <instance-parameter name="line" transfer-ownership="none">
14107+ <doc xml:space="preserve"
14108+ filename="../pango/pango-layout.c"
14109+ line="1773">a `PangoLayoutLine`</doc>
14110+ <type name="LayoutLine" c:type="PangoLayoutLine*"/>
14111+ </instance-parameter>
14112+ <parameter name="index_" transfer-ownership="none">
14113+ <doc xml:space="preserve"
14114+ filename="../pango/pango-layout.c"
14115+ line="1774">byte offset of a grapheme within the layout</doc>
14116+ <type name="gint" c:type="int"/>
14117+ </parameter>
14118+ <parameter name="trailing" transfer-ownership="none">
14119+ <doc xml:space="preserve"
14120+ filename="../pango/pango-layout.c"
14121+ line="1775">an integer indicating the edge of the grapheme to retrieve
14122+ the position of. If &gt; 0, the trailing edge of the grapheme,
14123+ if 0, the leading of the grapheme</doc>
14124+ <type name="gboolean" c:type="gboolean"/>
14125+ </parameter>
14126+ <parameter name="x_pos"
14127+ direction="out"
14128+ caller-allocates="0"
14129+ transfer-ownership="full">
14130+ <doc xml:space="preserve"
14131+ filename="../pango/pango-layout.c"
14132+ line="1778">location to store the x_offset (in Pango units)</doc>
14133+ <type name="gint" c:type="int*"/>
14134+ </parameter>
14135+ </parameters>
14136+ </method>
14137+ <method name="is_paragraph_start"
14138+ c:identifier="pango_layout_line_is_paragraph_start"
14139+ version="1.50">
14140+ <doc xml:space="preserve"
14141+ filename="../pango/pango-layout.c"
14142+ line="5064">Returns whether this is the first line of the paragraph.</doc>
14143+ <source-position filename="../pango/pango-layout.h" line="445"/>
14144+ <return-value transfer-ownership="none">
14145+ <doc xml:space="preserve"
14146+ filename="../pango/pango-layout.c"
14147+ line="5070">%TRUE if this is the first line</doc>
14148+ <type name="gboolean" c:type="gboolean"/>
14149+ </return-value>
14150+ <parameters>
14151+ <instance-parameter name="line" transfer-ownership="none">
14152+ <doc xml:space="preserve"
14153+ filename="../pango/pango-layout.c"
14154+ line="5066">a `PangoLayoutLine`</doc>
14155+ <type name="LayoutLine" c:type="PangoLayoutLine*"/>
14156+ </instance-parameter>
14157+ </parameters>
14158+ </method>
14159+ <method name="ref" c:identifier="pango_layout_line_ref" version="1.10">
14160+ <doc xml:space="preserve"
14161+ filename="../pango/pango-layout.c"
14162+ line="4977">Increase the reference count of a `PangoLayoutLine` by one.</doc>
14163+ <source-position filename="../pango/pango-layout.h" line="436"/>
14164+ <return-value transfer-ownership="full">
14165+ <doc xml:space="preserve"
14166+ filename="../pango/pango-layout.c"
14167+ line="4983">the line passed in.</doc>
14168+ <type name="LayoutLine" c:type="PangoLayoutLine*"/>
14169+ </return-value>
14170+ <parameters>
14171+ <instance-parameter name="line"
14172+ transfer-ownership="none"
14173+ nullable="1"
14174+ allow-none="1">
14175+ <doc xml:space="preserve"
14176+ filename="../pango/pango-layout.c"
14177+ line="4979">a `PangoLayoutLine`</doc>
14178+ <type name="LayoutLine" c:type="PangoLayoutLine*"/>
14179+ </instance-parameter>
14180+ </parameters>
14181+ </method>
14182+ <method name="unref" c:identifier="pango_layout_line_unref">
14183+ <doc xml:space="preserve"
14184+ filename="../pango/pango-layout.c"
14185+ line="5000">Decrease the reference count of a `PangoLayoutLine` by one.
14186+
14187+If the result is zero, the line and all associated memory
14188+will be freed.</doc>
14189+ <source-position filename="../pango/pango-layout.h" line="438"/>
14190+ <return-value transfer-ownership="none">
14191+ <type name="none" c:type="void"/>
14192+ </return-value>
14193+ <parameters>
14194+ <instance-parameter name="line" transfer-ownership="none">
14195+ <doc xml:space="preserve"
14196+ filename="../pango/pango-layout.c"
14197+ line="5002">a `PangoLayoutLine`</doc>
14198+ <type name="LayoutLine" c:type="PangoLayoutLine*"/>
14199+ </instance-parameter>
14200+ </parameters>
14201+ </method>
14202+ <method name="x_to_index" c:identifier="pango_layout_line_x_to_index">
14203+ <doc xml:space="preserve"
14204+ filename="../pango/pango-layout.c"
14205+ line="5096">Converts from x offset to the byte index of the corresponding character
14206+within the text of the layout.
14207+
14208+If @x_pos is outside the line, @index_ and @trailing will point to the very
14209+first or very last position in the line. This determination is based on the
14210+resolved direction of the paragraph; for example, if the resolved direction
14211+is right-to-left, then an X position to the right of the line (after it)
14212+results in 0 being stored in @index_ and @trailing. An X position to the
14213+left of the line results in @index_ pointing to the (logical) last grapheme
14214+in the line and @trailing being set to the number of characters in that
14215+grapheme. The reverse is true for a left-to-right line.</doc>
14216+ <source-position filename="../pango/pango-layout.h" line="450"/>
14217+ <return-value transfer-ownership="none">
14218+ <doc xml:space="preserve"
14219+ filename="../pango/pango-layout.c"
14220+ line="5118">%FALSE if @x_pos was outside the line, %TRUE if inside</doc>
14221+ <type name="gboolean" c:type="gboolean"/>
14222+ </return-value>
14223+ <parameters>
14224+ <instance-parameter name="line" transfer-ownership="none">
14225+ <doc xml:space="preserve"
14226+ filename="../pango/pango-layout.c"
14227+ line="5098">a `PangoLayoutLine`</doc>
14228+ <type name="LayoutLine" c:type="PangoLayoutLine*"/>
14229+ </instance-parameter>
14230+ <parameter name="x_pos" transfer-ownership="none">
14231+ <doc xml:space="preserve"
14232+ filename="../pango/pango-layout.c"
14233+ line="5099">the X offset (in Pango units) from the left edge of the line.</doc>
14234+ <type name="gint" c:type="int"/>
14235+ </parameter>
14236+ <parameter name="index_"
14237+ direction="out"
14238+ caller-allocates="0"
14239+ transfer-ownership="full">
14240+ <doc xml:space="preserve"
14241+ filename="../pango/pango-layout.c"
14242+ line="5100">location to store calculated byte index for the grapheme
14243+ in which the user clicked</doc>
14244+ <type name="gint" c:type="int*"/>
14245+ </parameter>
14246+ <parameter name="trailing"
14247+ direction="out"
14248+ caller-allocates="0"
14249+ transfer-ownership="full">
14250+ <doc xml:space="preserve"
14251+ filename="../pango/pango-layout.c"
14252+ line="5102">location to store an integer indicating where in the
14253+ grapheme the user clicked. It will either be zero, or the number of
14254+ characters in the grapheme. 0 represents the leading edge of the grapheme.</doc>
14255+ <type name="gint" c:type="int*"/>
14256+ </parameter>
14257+ </parameters>
14258+ </method>
14259+ </record>
14260+ <bitfield name="LayoutSerializeFlags"
14261+ version="1.50"
14262+ glib:type-name="PangoLayoutSerializeFlags"
14263+ glib:get-type="pango_layout_serialize_flags_get_type"
14264+ c:type="PangoLayoutSerializeFlags">
14265+ <doc xml:space="preserve"
14266+ filename="../pango/pango-layout.h"
14267+ line="354">Flags that influence the behavior of [method@Pango.Layout.serialize].
14268+
14269+New members may be added to this enumeration over time.</doc>
14270+ <member name="default"
14271+ value="0"
14272+ c:identifier="PANGO_LAYOUT_SERIALIZE_DEFAULT"
14273+ glib:nick="default"
14274+ glib:name="PANGO_LAYOUT_SERIALIZE_DEFAULT">
14275+ <doc xml:space="preserve"
14276+ filename="../pango/pango-layout.h"
14277+ line="356">Default behavior</doc>
14278+ </member>
14279+ <member name="context"
14280+ value="1"
14281+ c:identifier="PANGO_LAYOUT_SERIALIZE_CONTEXT"
14282+ glib:nick="context"
14283+ glib:name="PANGO_LAYOUT_SERIALIZE_CONTEXT">
14284+ <doc xml:space="preserve"
14285+ filename="../pango/pango-layout.h"
14286+ line="357">Include context information</doc>
14287+ </member>
14288+ <member name="output"
14289+ value="2"
14290+ c:identifier="PANGO_LAYOUT_SERIALIZE_OUTPUT"
14291+ glib:nick="output"
14292+ glib:name="PANGO_LAYOUT_SERIALIZE_OUTPUT">
14293+ <doc xml:space="preserve"
14294+ filename="../pango/pango-layout.h"
14295+ line="358">Include information about the formatted output</doc>
14296+ </member>
14297+ </bitfield>
14298+ <record name="LogAttr" c:type="PangoLogAttr">
14299+ <doc xml:space="preserve"
14300+ filename="../pango/pango-break.h"
14301+ line="33">The `PangoLogAttr` structure stores information about the attributes of a
14302+single character.</doc>
14303+ <source-position filename="../pango/pango-break.h" line="102"/>
14304+ <field name="is_line_break" writable="1" bits="1">
14305+ <doc xml:space="preserve"
14306+ filename="../pango/pango-break.h"
14307+ line="35">if set, can break line in front of character</doc>
14308+ <type name="guint" c:type="guint"/>
14309+ </field>
14310+ <field name="is_mandatory_break" writable="1" bits="1">
14311+ <doc xml:space="preserve"
14312+ filename="../pango/pango-break.h"
14313+ line="36">if set, must break line in front of character</doc>
14314+ <type name="guint" c:type="guint"/>
14315+ </field>
14316+ <field name="is_char_break" writable="1" bits="1">
14317+ <doc xml:space="preserve"
14318+ filename="../pango/pango-break.h"
14319+ line="37">if set, can break here when doing character wrapping</doc>
14320+ <type name="guint" c:type="guint"/>
14321+ </field>
14322+ <field name="is_white" writable="1" bits="1">
14323+ <doc xml:space="preserve"
14324+ filename="../pango/pango-break.h"
14325+ line="38">is whitespace character</doc>
14326+ <type name="guint" c:type="guint"/>
14327+ </field>
14328+ <field name="is_cursor_position" writable="1" bits="1">
14329+ <doc xml:space="preserve"
14330+ filename="../pango/pango-break.h"
14331+ line="39">if set, cursor can appear in front of character.
14332+ i.e. this is a grapheme boundary, or the first character in the text.
14333+ This flag implements Unicode's
14334+ [Grapheme Cluster Boundaries](http://www.unicode.org/reports/tr29/)
14335+ semantics.</doc>
14336+ <type name="guint" c:type="guint"/>
14337+ </field>
14338+ <field name="is_word_start" writable="1" bits="1">
14339+ <doc xml:space="preserve"
14340+ filename="../pango/pango-break.h"
14341+ line="44">is first character in a word</doc>
14342+ <type name="guint" c:type="guint"/>
14343+ </field>
14344+ <field name="is_word_end" writable="1" bits="1">
14345+ <doc xml:space="preserve"
14346+ filename="../pango/pango-break.h"
14347+ line="45">is first non-word char after a word
14348+ Note that in degenerate cases, you could have both @is_word_start
14349+ and @is_word_end set for some character.</doc>
14350+ <type name="guint" c:type="guint"/>
14351+ </field>
14352+ <field name="is_sentence_boundary" writable="1" bits="1">
14353+ <doc xml:space="preserve"
14354+ filename="../pango/pango-break.h"
14355+ line="48">is a sentence boundary.
14356+ There are two ways to divide sentences. The first assigns all
14357+ inter-sentence whitespace/control/format chars to some sentence,
14358+ so all chars are in some sentence; @is_sentence_boundary denotes
14359+ the boundaries there. The second way doesn't assign
14360+ between-sentence spaces, etc. to any sentence, so
14361+ @is_sentence_start/@is_sentence_end mark the boundaries of those sentences.</doc>
14362+ <type name="guint" c:type="guint"/>
14363+ </field>
14364+ <field name="is_sentence_start" writable="1" bits="1">
14365+ <doc xml:space="preserve"
14366+ filename="../pango/pango-break.h"
14367+ line="55">is first character in a sentence</doc>
14368+ <type name="guint" c:type="guint"/>
14369+ </field>
14370+ <field name="is_sentence_end" writable="1" bits="1">
14371+ <doc xml:space="preserve"
14372+ filename="../pango/pango-break.h"
14373+ line="56">is first char after a sentence.
14374+ Note that in degenerate cases, you could have both @is_sentence_start
14375+ and @is_sentence_end set for some character. (e.g. no space after a
14376+ period, so the next sentence starts right away)</doc>
14377+ <type name="guint" c:type="guint"/>
14378+ </field>
14379+ <field name="backspace_deletes_character" writable="1" bits="1">
14380+ <doc xml:space="preserve"
14381+ filename="../pango/pango-break.h"
14382+ line="60">if set, backspace deletes one character
14383+ rather than the entire grapheme cluster. This field is only meaningful
14384+ on grapheme boundaries (where @is_cursor_position is set). In some languages,
14385+ the full grapheme (e.g. letter + diacritics) is considered a unit, while in
14386+ others, each decomposed character in the grapheme is a unit. In the default
14387+ implementation of [func@break], this bit is set on all grapheme boundaries
14388+ except those following Latin, Cyrillic or Greek base characters.</doc>
14389+ <type name="guint" c:type="guint"/>
14390+ </field>
14391+ <field name="is_expandable_space" writable="1" bits="1">
14392+ <doc xml:space="preserve"
14393+ filename="../pango/pango-break.h"
14394+ line="67">is a whitespace character that can possibly be
14395+ expanded for justification purposes. (Since: 1.18)</doc>
14396+ <type name="guint" c:type="guint"/>
14397+ </field>
14398+ <field name="is_word_boundary" writable="1" bits="1">
14399+ <doc xml:space="preserve"
14400+ filename="../pango/pango-break.h"
14401+ line="69">is a word boundary, as defined by UAX#29.
14402+ More specifically, means that this is not a position in the middle of a word.
14403+ For example, both sides of a punctuation mark are considered word boundaries.
14404+ This flag is particularly useful when selecting text word-by-word. This flag
14405+ implements Unicode's [Word Boundaries](http://www.unicode.org/reports/tr29/)
14406+ semantics. (Since: 1.22)</doc>
14407+ <type name="guint" c:type="guint"/>
14408+ </field>
14409+ <field name="break_inserts_hyphen" writable="1" bits="1">
14410+ <doc xml:space="preserve"
14411+ filename="../pango/pango-break.h"
14412+ line="75">when breaking lines before this char, insert a hyphen.
14413+ Since: 1.50</doc>
14414+ <type name="guint" c:type="guint"/>
14415+ </field>
14416+ <field name="break_removes_preceding" writable="1" bits="1">
14417+ <doc xml:space="preserve"
14418+ filename="../pango/pango-break.h"
14419+ line="77">when breaking lines before this char, remove the
14420+ preceding char. Since 1.50</doc>
14421+ <type name="guint" c:type="guint"/>
14422+ </field>
14423+ <field name="reserved" writable="1" bits="17">
14424+ <type name="guint" c:type="guint"/>
14425+ </field>
14426+ </record>
14427+ <record name="Matrix"
14428+ c:type="PangoMatrix"
14429+ version="1.6"
14430+ glib:type-name="PangoMatrix"
14431+ glib:get-type="pango_matrix_get_type"
14432+ c:symbol-prefix="matrix">
14433+ <doc xml:space="preserve"
14434+ filename="../pango/pango-matrix.h"
14435+ line="32">A `PangoMatrix` specifies a transformation between user-space
14436+and device coordinates.
14437+
14438+The transformation is given by
14439+
14440+```
14441+x_device = x_user * matrix-&gt;xx + y_user * matrix-&gt;xy + matrix-&gt;x0;
14442+y_device = x_user * matrix-&gt;yx + y_user * matrix-&gt;yy + matrix-&gt;y0;
14443+```</doc>
14444+ <source-position filename="../pango/pango-matrix.h" line="61"/>
14445+ <field name="xx" writable="1">
14446+ <doc xml:space="preserve"
14447+ filename="../pango/pango-matrix.h"
14448+ line="34">1st component of the transformation matrix</doc>
14449+ <type name="gdouble" c:type="double"/>
14450+ </field>
14451+ <field name="xy" writable="1">
14452+ <doc xml:space="preserve"
14453+ filename="../pango/pango-matrix.h"
14454+ line="35">2nd component of the transformation matrix</doc>
14455+ <type name="gdouble" c:type="double"/>
14456+ </field>
14457+ <field name="yx" writable="1">
14458+ <doc xml:space="preserve"
14459+ filename="../pango/pango-matrix.h"
14460+ line="36">3rd component of the transformation matrix</doc>
14461+ <type name="gdouble" c:type="double"/>
14462+ </field>
14463+ <field name="yy" writable="1">
14464+ <doc xml:space="preserve"
14465+ filename="../pango/pango-matrix.h"
14466+ line="37">4th component of the transformation matrix</doc>
14467+ <type name="gdouble" c:type="double"/>
14468+ </field>
14469+ <field name="x0" writable="1">
14470+ <doc xml:space="preserve"
14471+ filename="../pango/pango-matrix.h"
14472+ line="38">x translation</doc>
14473+ <type name="gdouble" c:type="double"/>
14474+ </field>
14475+ <field name="y0" writable="1">
14476+ <doc xml:space="preserve"
14477+ filename="../pango/pango-matrix.h"
14478+ line="39">y translation</doc>
14479+ <type name="gdouble" c:type="double"/>
14480+ </field>
14481+ <method name="concat" c:identifier="pango_matrix_concat" version="1.6">
14482+ <doc xml:space="preserve"
14483+ filename="../pango/pango-matrix.c"
14484+ line="158">Changes the transformation represented by @matrix to be the
14485+transformation given by first applying transformation
14486+given by @new_matrix then applying the original transformation.</doc>
14487+ <source-position filename="../pango/pango-matrix.h" line="103"/>
14488+ <return-value transfer-ownership="none">
14489+ <type name="none" c:type="void"/>
14490+ </return-value>
14491+ <parameters>
14492+ <instance-parameter name="matrix" transfer-ownership="none">
14493+ <doc xml:space="preserve"
14494+ filename="../pango/pango-matrix.c"
14495+ line="160">a `PangoMatrix`</doc>
14496+ <type name="Matrix" c:type="PangoMatrix*"/>
14497+ </instance-parameter>
14498+ <parameter name="new_matrix" transfer-ownership="none">
14499+ <doc xml:space="preserve"
14500+ filename="../pango/pango-matrix.c"
14501+ line="161">a `PangoMatrix`</doc>
14502+ <type name="Matrix" c:type="const PangoMatrix*"/>
14503+ </parameter>
14504+ </parameters>
14505+ </method>
14506+ <method name="copy" c:identifier="pango_matrix_copy" version="1.6">
14507+ <doc xml:space="preserve"
14508+ filename="../pango/pango-matrix.c"
14509+ line="33">Copies a `PangoMatrix`.</doc>
14510+ <source-position filename="../pango/pango-matrix.h" line="87"/>
14511+ <return-value transfer-ownership="full" nullable="1">
14512+ <doc xml:space="preserve"
14513+ filename="../pango/pango-matrix.c"
14514+ line="39">the newly allocated `PangoMatrix`</doc>
14515+ <type name="Matrix" c:type="PangoMatrix*"/>
14516+ </return-value>
14517+ <parameters>
14518+ <instance-parameter name="matrix"
14519+ transfer-ownership="none"
14520+ nullable="1"
14521+ allow-none="1">
14522+ <doc xml:space="preserve"
14523+ filename="../pango/pango-matrix.c"
14524+ line="35">a `PangoMatrix`</doc>
14525+ <type name="Matrix" c:type="const PangoMatrix*"/>
14526+ </instance-parameter>
14527+ </parameters>
14528+ </method>
14529+ <method name="free" c:identifier="pango_matrix_free" version="1.6">
14530+ <doc xml:space="preserve"
14531+ filename="../pango/pango-matrix.c"
14532+ line="58">Free a `PangoMatrix`.</doc>
14533+ <source-position filename="../pango/pango-matrix.h" line="89"/>
14534+ <return-value transfer-ownership="none">
14535+ <type name="none" c:type="void"/>
14536+ </return-value>
14537+ <parameters>
14538+ <instance-parameter name="matrix"
14539+ transfer-ownership="none"
14540+ nullable="1"
14541+ allow-none="1">
14542+ <doc xml:space="preserve"
14543+ filename="../pango/pango-matrix.c"
14544+ line="60">a `PangoMatrix`, may be %NULL</doc>
14545+ <type name="Matrix" c:type="PangoMatrix*"/>
14546+ </instance-parameter>
14547+ </parameters>
14548+ </method>
14549+ <method name="get_font_scale_factor"
14550+ c:identifier="pango_matrix_get_font_scale_factor"
14551+ version="1.12">
14552+ <doc xml:space="preserve"
14553+ filename="../pango/pango-matrix.c"
14554+ line="187">Returns the scale factor of a matrix on the height of the font.
14555+
14556+That is, the scale factor in the direction perpendicular to the
14557+vector that the X coordinate is mapped to. If the scale in the X
14558+coordinate is needed as well, use [method@Pango.Matrix.get_font_scale_factors].</doc>
14559+ <source-position filename="../pango/pango-matrix.h" line="120"/>
14560+ <return-value transfer-ownership="none">
14561+ <doc xml:space="preserve"
14562+ filename="../pango/pango-matrix.c"
14563+ line="197">the scale factor of @matrix on the height of the font,
14564+ or 1.0 if @matrix is %NULL.</doc>
14565+ <type name="gdouble" c:type="double"/>
14566+ </return-value>
14567+ <parameters>
14568+ <instance-parameter name="matrix"
14569+ transfer-ownership="none"
14570+ nullable="1"
14571+ allow-none="1">
14572+ <doc xml:space="preserve"
14573+ filename="../pango/pango-matrix.c"
14574+ line="189">a `PangoMatrix`, may be %NULL</doc>
14575+ <type name="Matrix" c:type="const PangoMatrix*"/>
14576+ </instance-parameter>
14577+ </parameters>
14578+ </method>
14579+ <method name="get_font_scale_factors"
14580+ c:identifier="pango_matrix_get_font_scale_factors"
14581+ version="1.38">
14582+ <doc xml:space="preserve"
14583+ filename="../pango/pango-matrix.c"
14584+ line="210">Calculates the scale factor of a matrix on the width and height of the font.
14585+
14586+That is, @xscale is the scale factor in the direction of the X coordinate,
14587+and @yscale is the scale factor in the direction perpendicular to the
14588+vector that the X coordinate is mapped to.
14589+
14590+Note that output numbers will always be non-negative.</doc>
14591+ <source-position filename="../pango/pango-matrix.h" line="122"/>
14592+ <return-value transfer-ownership="none">
14593+ <type name="none" c:type="void"/>
14594+ </return-value>
14595+ <parameters>
14596+ <instance-parameter name="matrix"
14597+ transfer-ownership="none"
14598+ nullable="1"
14599+ allow-none="1">
14600+ <doc xml:space="preserve"
14601+ filename="../pango/pango-matrix.c"
14602+ line="212">a `PangoMatrix`</doc>
14603+ <type name="Matrix" c:type="const PangoMatrix*"/>
14604+ </instance-parameter>
14605+ <parameter name="xscale"
14606+ direction="out"
14607+ caller-allocates="0"
14608+ transfer-ownership="full"
14609+ optional="1"
14610+ allow-none="1">
14611+ <doc xml:space="preserve"
14612+ filename="../pango/pango-matrix.c"
14613+ line="213">output scale factor in the x direction</doc>
14614+ <type name="gdouble" c:type="double*"/>
14615+ </parameter>
14616+ <parameter name="yscale"
14617+ direction="out"
14618+ caller-allocates="0"
14619+ transfer-ownership="full"
14620+ optional="1"
14621+ allow-none="1">
14622+ <doc xml:space="preserve"
14623+ filename="../pango/pango-matrix.c"
14624+ line="214">output scale factor perpendicular to the x direction</doc>
14625+ <type name="gdouble" c:type="double*"/>
14626+ </parameter>
14627+ </parameters>
14628+ </method>
14629+ <method name="rotate" c:identifier="pango_matrix_rotate" version="1.6">
14630+ <doc xml:space="preserve"
14631+ filename="../pango/pango-matrix.c"
14632+ line="124">Changes the transformation represented by @matrix to be the
14633+transformation given by first rotating by @degrees degrees
14634+counter-clockwise then applying the original transformation.</doc>
14635+ <source-position filename="../pango/pango-matrix.h" line="100"/>
14636+ <return-value transfer-ownership="none">
14637+ <type name="none" c:type="void"/>
14638+ </return-value>
14639+ <parameters>
14640+ <instance-parameter name="matrix" transfer-ownership="none">
14641+ <doc xml:space="preserve"
14642+ filename="../pango/pango-matrix.c"
14643+ line="126">a `PangoMatrix`</doc>
14644+ <type name="Matrix" c:type="PangoMatrix*"/>
14645+ </instance-parameter>
14646+ <parameter name="degrees" transfer-ownership="none">
14647+ <doc xml:space="preserve"
14648+ filename="../pango/pango-matrix.c"
14649+ line="127">degrees to rotate counter-clockwise</doc>
14650+ <type name="gdouble" c:type="double"/>
14651+ </parameter>
14652+ </parameters>
14653+ </method>
14654+ <method name="scale" c:identifier="pango_matrix_scale" version="1.6">
14655+ <doc xml:space="preserve"
14656+ filename="../pango/pango-matrix.c"
14657+ line="98">Changes the transformation represented by @matrix to be the
14658+transformation given by first scaling by @sx in the X direction
14659+and @sy in the Y direction then applying the original
14660+transformation.</doc>
14661+ <source-position filename="../pango/pango-matrix.h" line="96"/>
14662+ <return-value transfer-ownership="none">
14663+ <type name="none" c:type="void"/>
14664+ </return-value>
14665+ <parameters>
14666+ <instance-parameter name="matrix" transfer-ownership="none">
14667+ <doc xml:space="preserve"
14668+ filename="../pango/pango-matrix.c"
14669+ line="100">a `PangoMatrix`</doc>
14670+ <type name="Matrix" c:type="PangoMatrix*"/>
14671+ </instance-parameter>
14672+ <parameter name="scale_x" transfer-ownership="none">
14673+ <doc xml:space="preserve"
14674+ filename="../pango/pango-matrix.c"
14675+ line="101">amount to scale by in X direction</doc>
14676+ <type name="gdouble" c:type="double"/>
14677+ </parameter>
14678+ <parameter name="scale_y" transfer-ownership="none">
14679+ <doc xml:space="preserve"
14680+ filename="../pango/pango-matrix.c"
14681+ line="102">amount to scale by in Y direction</doc>
14682+ <type name="gdouble" c:type="double"/>
14683+ </parameter>
14684+ </parameters>
14685+ </method>
14686+ <method name="transform_distance"
14687+ c:identifier="pango_matrix_transform_distance"
14688+ version="1.16">
14689+ <doc xml:space="preserve"
14690+ filename="../pango/pango-matrix.c"
14691+ line="265">Transforms the distance vector (@dx,@dy) by @matrix.
14692+
14693+This is similar to [method@Pango.Matrix.transform_point],
14694+except that the translation components of the transformation
14695+are ignored. The calculation of the returned vector is as follows:
14696+
14697+```
14698+dx2 = dx1 * xx + dy1 * xy;
14699+dy2 = dx1 * yx + dy1 * yy;
14700+```
14701+
14702+Affine transformations are position invariant, so the same vector
14703+always transforms to the same vector. If (@x1,@y1) transforms
14704+to (@x2,@y2) then (@x1+@dx1,@y1+@dy1) will transform to
14705+(@x1+@dx2,@y1+@dy2) for all values of @x1 and @x2.</doc>
14706+ <source-position filename="../pango/pango-matrix.h" line="110"/>
14707+ <return-value transfer-ownership="none">
14708+ <type name="none" c:type="void"/>
14709+ </return-value>
14710+ <parameters>
14711+ <instance-parameter name="matrix"
14712+ transfer-ownership="none"
14713+ nullable="1"
14714+ allow-none="1">
14715+ <doc xml:space="preserve"
14716+ filename="../pango/pango-matrix.c"
14717+ line="267">a `PangoMatrix`</doc>
14718+ <type name="Matrix" c:type="const PangoMatrix*"/>
14719+ </instance-parameter>
14720+ <parameter name="dx"
14721+ direction="inout"
14722+ caller-allocates="0"
14723+ transfer-ownership="full">
14724+ <doc xml:space="preserve"
14725+ filename="../pango/pango-matrix.c"
14726+ line="268">in/out X component of a distance vector</doc>
14727+ <type name="gdouble" c:type="double*"/>
14728+ </parameter>
14729+ <parameter name="dy"
14730+ direction="inout"
14731+ caller-allocates="0"
14732+ transfer-ownership="full">
14733+ <doc xml:space="preserve"
14734+ filename="../pango/pango-matrix.c"
14735+ line="269">in/out Y component of a distance vector</doc>
14736+ <type name="gdouble" c:type="double*"/>
14737+ </parameter>
14738+ </parameters>
14739+ </method>
14740+ <method name="transform_pixel_rectangle"
14741+ c:identifier="pango_matrix_transform_pixel_rectangle"
14742+ version="1.16">
14743+ <doc xml:space="preserve"
14744+ filename="../pango/pango-matrix.c"
14745+ line="410">First transforms the @rect using @matrix, then calculates the bounding box
14746+of the transformed rectangle.
14747+
14748+This function is useful for example when you want to draw a rotated
14749+@PangoLayout to an image buffer, and want to know how large the image
14750+should be and how much you should shift the layout when rendering.
14751+
14752+For better accuracy, you should use [method@Pango.Matrix.transform_rectangle]
14753+on original rectangle in Pango units and convert to pixels afterward
14754+using [func@extents_to_pixels]'s first argument.</doc>
14755+ <source-position filename="../pango/pango-matrix.h" line="117"/>
14756+ <return-value transfer-ownership="none">
14757+ <type name="none" c:type="void"/>
14758+ </return-value>
14759+ <parameters>
14760+ <instance-parameter name="matrix"
14761+ transfer-ownership="none"
14762+ nullable="1"
14763+ allow-none="1">
14764+ <doc xml:space="preserve"
14765+ filename="../pango/pango-matrix.c"
14766+ line="412">a `PangoMatrix`</doc>
14767+ <type name="Matrix" c:type="const PangoMatrix*"/>
14768+ </instance-parameter>
14769+ <parameter name="rect"
14770+ direction="inout"
14771+ caller-allocates="0"
14772+ transfer-ownership="full"
14773+ optional="1">
14774+ <doc xml:space="preserve"
14775+ filename="../pango/pango-matrix.c"
14776+ line="413">in/out bounding box in device units</doc>
14777+ <type name="Rectangle" c:type="PangoRectangle*"/>
14778+ </parameter>
14779+ </parameters>
14780+ </method>
14781+ <method name="transform_point"
14782+ c:identifier="pango_matrix_transform_point"
14783+ version="1.16">
14784+ <doc xml:space="preserve"
14785+ filename="../pango/pango-matrix.c"
14786+ line="306">Transforms the point (@x, @y) by @matrix.</doc>
14787+ <source-position filename="../pango/pango-matrix.h" line="106"/>
14788+ <return-value transfer-ownership="none">
14789+ <type name="none" c:type="void"/>
14790+ </return-value>
14791+ <parameters>
14792+ <instance-parameter name="matrix"
14793+ transfer-ownership="none"
14794+ nullable="1"
14795+ allow-none="1">
14796+ <doc xml:space="preserve"
14797+ filename="../pango/pango-matrix.c"
14798+ line="308">a `PangoMatrix`</doc>
14799+ <type name="Matrix" c:type="const PangoMatrix*"/>
14800+ </instance-parameter>
14801+ <parameter name="x"
14802+ direction="inout"
14803+ caller-allocates="0"
14804+ transfer-ownership="full">
14805+ <doc xml:space="preserve"
14806+ filename="../pango/pango-matrix.c"
14807+ line="309">in/out X position</doc>
14808+ <type name="gdouble" c:type="double*"/>
14809+ </parameter>
14810+ <parameter name="y"
14811+ direction="inout"
14812+ caller-allocates="0"
14813+ transfer-ownership="full">
14814+ <doc xml:space="preserve"
14815+ filename="../pango/pango-matrix.c"
14816+ line="310">in/out Y position</doc>
14817+ <type name="gdouble" c:type="double*"/>
14818+ </parameter>
14819+ </parameters>
14820+ </method>
14821+ <method name="transform_rectangle"
14822+ c:identifier="pango_matrix_transform_rectangle"
14823+ version="1.16">
14824+ <doc xml:space="preserve"
14825+ filename="../pango/pango-matrix.c"
14826+ line="330">First transforms @rect using @matrix, then calculates the bounding box
14827+of the transformed rectangle.
14828+
14829+This function is useful for example when you want to draw a rotated
14830+@PangoLayout to an image buffer, and want to know how large the image
14831+should be and how much you should shift the layout when rendering.
14832+
14833+If you have a rectangle in device units (pixels), use
14834+[method@Pango.Matrix.transform_pixel_rectangle].
14835+
14836+If you have the rectangle in Pango units and want to convert to
14837+transformed pixel bounding box, it is more accurate to transform it first
14838+(using this function) and pass the result to pango_extents_to_pixels(),
14839+first argument, for an inclusive rounded rectangle.
14840+However, there are valid reasons that you may want to convert
14841+to pixels first and then transform, for example when the transformed
14842+coordinates may overflow in Pango units (large matrix translation for
14843+example).</doc>
14844+ <source-position filename="../pango/pango-matrix.h" line="114"/>
14845+ <return-value transfer-ownership="none">
14846+ <type name="none" c:type="void"/>
14847+ </return-value>
14848+ <parameters>
14849+ <instance-parameter name="matrix"
14850+ transfer-ownership="none"
14851+ nullable="1"
14852+ allow-none="1">
14853+ <doc xml:space="preserve"
14854+ filename="../pango/pango-matrix.c"
14855+ line="332">a `PangoMatrix`</doc>
14856+ <type name="Matrix" c:type="const PangoMatrix*"/>
14857+ </instance-parameter>
14858+ <parameter name="rect"
14859+ direction="inout"
14860+ caller-allocates="0"
14861+ transfer-ownership="full"
14862+ optional="1">
14863+ <doc xml:space="preserve"
14864+ filename="../pango/pango-matrix.c"
14865+ line="333">in/out bounding box in Pango units</doc>
14866+ <type name="Rectangle" c:type="PangoRectangle*"/>
14867+ </parameter>
14868+ </parameters>
14869+ </method>
14870+ <method name="translate"
14871+ c:identifier="pango_matrix_translate"
14872+ version="1.6">
14873+ <doc xml:space="preserve"
14874+ filename="../pango/pango-matrix.c"
14875+ line="75">Changes the transformation represented by @matrix to be the
14876+transformation given by first translating by (@tx, @ty)
14877+then applying the original transformation.</doc>
14878+ <source-position filename="../pango/pango-matrix.h" line="92"/>
14879+ <return-value transfer-ownership="none">
14880+ <type name="none" c:type="void"/>
14881+ </return-value>
14882+ <parameters>
14883+ <instance-parameter name="matrix" transfer-ownership="none">
14884+ <doc xml:space="preserve"
14885+ filename="../pango/pango-matrix.c"
14886+ line="77">a `PangoMatrix`</doc>
14887+ <type name="Matrix" c:type="PangoMatrix*"/>
14888+ </instance-parameter>
14889+ <parameter name="tx" transfer-ownership="none">
14890+ <doc xml:space="preserve"
14891+ filename="../pango/pango-matrix.c"
14892+ line="78">amount to translate in the X direction</doc>
14893+ <type name="gdouble" c:type="double"/>
14894+ </parameter>
14895+ <parameter name="ty" transfer-ownership="none">
14896+ <doc xml:space="preserve"
14897+ filename="../pango/pango-matrix.c"
14898+ line="79">amount to translate in the Y direction</doc>
14899+ <type name="gdouble" c:type="double"/>
14900+ </parameter>
14901+ </parameters>
14902+ </method>
14903+ </record>
14904+ <enumeration name="Overline"
14905+ version="1.46"
14906+ glib:type-name="PangoOverline"
14907+ glib:get-type="pango_overline_get_type"
14908+ c:type="PangoOverline">
14909+ <doc xml:space="preserve"
14910+ filename="../pango/pango-attributes.h"
14911+ line="178">The `PangoOverline` enumeration is used to specify whether text
14912+should be overlined, and if so, the type of line.</doc>
14913+ <member name="none"
14914+ value="0"
14915+ c:identifier="PANGO_OVERLINE_NONE"
14916+ glib:nick="none"
14917+ glib:name="PANGO_OVERLINE_NONE">
14918+ <doc xml:space="preserve"
14919+ filename="../pango/pango-attributes.h"
14920+ line="180">no overline should be drawn</doc>
14921+ </member>
14922+ <member name="single"
14923+ value="1"
14924+ c:identifier="PANGO_OVERLINE_SINGLE"
14925+ glib:nick="single"
14926+ glib:name="PANGO_OVERLINE_SINGLE">
14927+ <doc xml:space="preserve"
14928+ filename="../pango/pango-attributes.h"
14929+ line="181">Draw a single line above the ink
14930+ extents of the text being underlined.</doc>
14931+ </member>
14932+ </enumeration>
14933+ <function-macro name="PIXELS"
14934+ c:identifier="PANGO_PIXELS"
14935+ introspectable="0">
14936+ <doc xml:space="preserve"
14937+ filename="../pango/pango-types.h"
14938+ line="70">Converts a dimension to device units by rounding.</doc>
14939+ <source-position filename="../pango/pango-types.h" line="97"/>
14940+ <parameters>
14941+ <parameter name="d">
14942+ <doc xml:space="preserve"
14943+ filename="../pango/pango-types.h"
14944+ line="72">a dimension in Pango units.</doc>
14945+ </parameter>
14946+ </parameters>
14947+ </function-macro>
14948+ <function-macro name="PIXELS_CEIL"
14949+ c:identifier="PANGO_PIXELS_CEIL"
14950+ version="1.14"
14951+ introspectable="0">
14952+ <doc xml:space="preserve"
14953+ filename="../pango/pango-types.h"
14954+ line="87">Converts a dimension to device units by ceiling.</doc>
14955+ <source-position filename="../pango/pango-types.h" line="99"/>
14956+ <parameters>
14957+ <parameter name="d">
14958+ <doc xml:space="preserve"
14959+ filename="../pango/pango-types.h"
14960+ line="89">a dimension in Pango units.</doc>
14961+ </parameter>
14962+ </parameters>
14963+ </function-macro>
14964+ <function-macro name="PIXELS_FLOOR"
14965+ c:identifier="PANGO_PIXELS_FLOOR"
14966+ version="1.14"
14967+ introspectable="0">
14968+ <doc xml:space="preserve"
14969+ filename="../pango/pango-types.h"
14970+ line="78">Converts a dimension to device units by flooring.</doc>
14971+ <source-position filename="../pango/pango-types.h" line="98"/>
14972+ <parameters>
14973+ <parameter name="d">
14974+ <doc xml:space="preserve"
14975+ filename="../pango/pango-types.h"
14976+ line="80">a dimension in Pango units.</doc>
14977+ </parameter>
14978+ </parameters>
14979+ </function-macro>
14980+ <function-macro name="RBEARING"
14981+ c:identifier="PANGO_RBEARING"
14982+ introspectable="0">
14983+ <doc xml:space="preserve"
14984+ filename="../pango/pango-types.h"
14985+ line="213">Extracts the *right bearing* from a `PangoRectangle`
14986+representing glyph extents.
14987+
14988+The right bearing is the distance from the horizontal
14989+origin to the farthest right point of the character.
14990+This is positive except for characters drawn completely
14991+to the left of the horizontal origin.</doc>
14992+ <source-position filename="../pango/pango-types.h" line="228"/>
14993+ <parameters>
14994+ <parameter name="rect">
14995+ <doc xml:space="preserve"
14996+ filename="../pango/pango-types.h"
14997+ line="215">a `PangoRectangle`</doc>
14998+ </parameter>
14999+ </parameters>
15000+ </function-macro>
15001+ <function-macro name="RENDERER"
15002+ c:identifier="PANGO_RENDERER"
15003+ introspectable="0">
15004+ <source-position filename="../pango/pango-renderer.h" line="29"/>
15005+ <parameters>
15006+ <parameter name="object">
15007+ </parameter>
15008+ </parameters>
15009+ </function-macro>
15010+ <function-macro name="RENDERER_CLASS"
15011+ c:identifier="PANGO_RENDERER_CLASS"
15012+ introspectable="0">
15013+ <source-position filename="../pango/pango-renderer.h" line="31"/>
15014+ <parameters>
15015+ <parameter name="klass">
15016+ </parameter>
15017+ </parameters>
15018+ </function-macro>
15019+ <function-macro name="RENDERER_GET_CLASS"
15020+ c:identifier="PANGO_RENDERER_GET_CLASS"
15021+ introspectable="0">
15022+ <source-position filename="../pango/pango-renderer.h" line="33"/>
15023+ <parameters>
15024+ <parameter name="obj">
15025+ </parameter>
15026+ </parameters>
15027+ </function-macro>
15028+ <record name="Rectangle" c:type="PangoRectangle">
15029+ <doc xml:space="preserve"
15030+ filename="../pango/pango-types.h"
15031+ line="156">The `PangoRectangle` structure represents a rectangle.
15032+
15033+`PangoRectangle` is frequently used to represent the logical or ink
15034+extents of a single glyph or section of text. (See, for instance,
15035+[method@Pango.Font.get_glyph_extents].)</doc>
15036+ <source-position filename="../pango/pango-types.h" line="175"/>
15037+ <field name="x" writable="1">
15038+ <doc xml:space="preserve"
15039+ filename="../pango/pango-types.h"
15040+ line="158">X coordinate of the left side of the rectangle.</doc>
15041+ <type name="gint" c:type="int"/>
15042+ </field>
15043+ <field name="y" writable="1">
15044+ <doc xml:space="preserve"
15045+ filename="../pango/pango-types.h"
15046+ line="159">Y coordinate of the the top side of the rectangle.</doc>
15047+ <type name="gint" c:type="int"/>
15048+ </field>
15049+ <field name="width" writable="1">
15050+ <doc xml:space="preserve"
15051+ filename="../pango/pango-types.h"
15052+ line="160">width of the rectangle.</doc>
15053+ <type name="gint" c:type="int"/>
15054+ </field>
15055+ <field name="height" writable="1">
15056+ <doc xml:space="preserve"
15057+ filename="../pango/pango-types.h"
15058+ line="161">height of the rectangle.</doc>
15059+ <type name="gint" c:type="int"/>
15060+ </field>
15061+ </record>
15062+ <enumeration name="RenderPart"
15063+ version="1.8"
15064+ glib:type-name="PangoRenderPart"
15065+ glib:get-type="pango_render_part_get_type"
15066+ c:type="PangoRenderPart">
15067+ <doc xml:space="preserve"
15068+ filename="../pango/pango-renderer.h"
15069+ line="39">`PangoRenderPart` defines different items to render for such
15070+purposes as setting colors.</doc>
15071+ <member name="foreground"
15072+ value="0"
15073+ c:identifier="PANGO_RENDER_PART_FOREGROUND"
15074+ glib:nick="foreground"
15075+ glib:name="PANGO_RENDER_PART_FOREGROUND">
15076+ <doc xml:space="preserve"
15077+ filename="../pango/pango-renderer.h"
15078+ line="41">the text itself</doc>
15079+ </member>
15080+ <member name="background"
15081+ value="1"
15082+ c:identifier="PANGO_RENDER_PART_BACKGROUND"
15083+ glib:nick="background"
15084+ glib:name="PANGO_RENDER_PART_BACKGROUND">
15085+ <doc xml:space="preserve"
15086+ filename="../pango/pango-renderer.h"
15087+ line="42">the area behind the text</doc>
15088+ </member>
15089+ <member name="underline"
15090+ value="2"
15091+ c:identifier="PANGO_RENDER_PART_UNDERLINE"
15092+ glib:nick="underline"
15093+ glib:name="PANGO_RENDER_PART_UNDERLINE">
15094+ <doc xml:space="preserve"
15095+ filename="../pango/pango-renderer.h"
15096+ line="43">underlines</doc>
15097+ </member>
15098+ <member name="strikethrough"
15099+ value="3"
15100+ c:identifier="PANGO_RENDER_PART_STRIKETHROUGH"
15101+ glib:nick="strikethrough"
15102+ glib:name="PANGO_RENDER_PART_STRIKETHROUGH">
15103+ <doc xml:space="preserve"
15104+ filename="../pango/pango-renderer.h"
15105+ line="44">strikethrough lines</doc>
15106+ </member>
15107+ <member name="overline"
15108+ value="4"
15109+ c:identifier="PANGO_RENDER_PART_OVERLINE"
15110+ glib:nick="overline"
15111+ glib:name="PANGO_RENDER_PART_OVERLINE">
15112+ <doc xml:space="preserve"
15113+ filename="../pango/pango-renderer.h"
15114+ line="45">overlines</doc>
15115+ </member>
15116+ </enumeration>
15117+ <class name="Renderer"
15118+ c:symbol-prefix="renderer"
15119+ c:type="PangoRenderer"
15120+ version="1.8"
15121+ parent="GObject.Object"
15122+ abstract="1"
15123+ glib:type-name="PangoRenderer"
15124+ glib:get-type="pango_renderer_get_type"
15125+ glib:type-struct="RendererClass">
15126+ <doc xml:space="preserve"
15127+ filename="../pango/pango-renderer.h"
15128+ line="62">`PangoRenderer` is a base class for objects that can render text
15129+provided as `PangoGlyphString` or `PangoLayout`.
15130+
15131+By subclassing `PangoRenderer` and overriding operations such as
15132+@draw_glyphs and @draw_rectangle, renderers for particular font
15133+backends and destinations can be created.</doc>
15134+ <source-position filename="../pango/pango-renderer.h" line="195"/>
15135+ <virtual-method name="begin">
15136+ <source-position filename="../pango/pango-renderer.h" line="177"/>
15137+ <return-value transfer-ownership="none">
15138+ <type name="none" c:type="void"/>
15139+ </return-value>
15140+ <parameters>
15141+ <instance-parameter name="renderer" transfer-ownership="none">
15142+ <type name="Renderer" c:type="PangoRenderer*"/>
15143+ </instance-parameter>
15144+ </parameters>
15145+ </virtual-method>
15146+ <virtual-method name="draw_error_underline"
15147+ invoker="draw_error_underline"
15148+ version="1.8">
15149+ <doc xml:space="preserve"
15150+ filename="../pango/pango-renderer.c"
15151+ line="1015">Draw a squiggly line that approximately covers the given rectangle
15152+in the style of an underline used to indicate a spelling error.
15153+
15154+The width of the underline is rounded to an integer number
15155+of up/down segments and the resulting rectangle is centered
15156+in the original rectangle.
15157+
15158+This should be called while @renderer is already active.
15159+Use [method@Pango.Renderer.activate] to activate a renderer.</doc>
15160+ <source-position filename="../pango/pango-renderer.h" line="150"/>
15161+ <return-value transfer-ownership="none">
15162+ <type name="none" c:type="void"/>
15163+ </return-value>
15164+ <parameters>
15165+ <instance-parameter name="renderer" transfer-ownership="none">
15166+ <doc xml:space="preserve"
15167+ filename="../pango/pango-renderer.c"
15168+ line="1017">a `PangoRenderer`</doc>
15169+ <type name="Renderer" c:type="PangoRenderer*"/>
15170+ </instance-parameter>
15171+ <parameter name="x" transfer-ownership="none">
15172+ <doc xml:space="preserve"
15173+ filename="../pango/pango-renderer.c"
15174+ line="1018">X coordinate of underline, in Pango units in user coordinate system</doc>
15175+ <type name="gint" c:type="int"/>
15176+ </parameter>
15177+ <parameter name="y" transfer-ownership="none">
15178+ <doc xml:space="preserve"
15179+ filename="../pango/pango-renderer.c"
15180+ line="1019">Y coordinate of underline, in Pango units in user coordinate system</doc>
15181+ <type name="gint" c:type="int"/>
15182+ </parameter>
15183+ <parameter name="width" transfer-ownership="none">
15184+ <doc xml:space="preserve"
15185+ filename="../pango/pango-renderer.c"
15186+ line="1020">width of underline, in Pango units in user coordinate system</doc>
15187+ <type name="gint" c:type="int"/>
15188+ </parameter>
15189+ <parameter name="height" transfer-ownership="none">
15190+ <doc xml:space="preserve"
15191+ filename="../pango/pango-renderer.c"
15192+ line="1021">height of underline, in Pango units in user coordinate system</doc>
15193+ <type name="gint" c:type="int"/>
15194+ </parameter>
15195+ </parameters>
15196+ </virtual-method>
15197+ <virtual-method name="draw_glyph" invoker="draw_glyph" version="1.8">
15198+ <doc xml:space="preserve"
15199+ filename="../pango/pango-renderer.c"
15200+ line="1210">Draws a single glyph with coordinates in device space.</doc>
15201+ <source-position filename="../pango/pango-renderer.h" line="168"/>
15202+ <return-value transfer-ownership="none">
15203+ <type name="none" c:type="void"/>
15204+ </return-value>
15205+ <parameters>
15206+ <instance-parameter name="renderer" transfer-ownership="none">
15207+ <doc xml:space="preserve"
15208+ filename="../pango/pango-renderer.c"
15209+ line="1212">a `PangoRenderer`</doc>
15210+ <type name="Renderer" c:type="PangoRenderer*"/>
15211+ </instance-parameter>
15212+ <parameter name="font" transfer-ownership="none">
15213+ <doc xml:space="preserve"
15214+ filename="../pango/pango-renderer.c"
15215+ line="1213">a `PangoFont`</doc>
15216+ <type name="Font" c:type="PangoFont*"/>
15217+ </parameter>
15218+ <parameter name="glyph" transfer-ownership="none">
15219+ <doc xml:space="preserve"
15220+ filename="../pango/pango-renderer.c"
15221+ line="1214">the glyph index of a single glyph</doc>
15222+ <type name="Glyph" c:type="PangoGlyph"/>
15223+ </parameter>
15224+ <parameter name="x" transfer-ownership="none">
15225+ <doc xml:space="preserve"
15226+ filename="../pango/pango-renderer.c"
15227+ line="1215">X coordinate of left edge of baseline of glyph</doc>
15228+ <type name="gdouble" c:type="double"/>
15229+ </parameter>
15230+ <parameter name="y" transfer-ownership="none">
15231+ <doc xml:space="preserve"
15232+ filename="../pango/pango-renderer.c"
15233+ line="1216">Y coordinate of left edge of baseline of glyph</doc>
15234+ <type name="gdouble" c:type="double"/>
15235+ </parameter>
15236+ </parameters>
15237+ </virtual-method>
15238+ <virtual-method name="draw_glyph_item"
15239+ invoker="draw_glyph_item"
15240+ version="1.22">
15241+ <doc xml:space="preserve"
15242+ filename="../pango/pango-renderer.c"
15243+ line="805">Draws the glyphs in @glyph_item with the specified `PangoRenderer`,
15244+embedding the text associated with the glyphs in the output if the
15245+output format supports it.
15246+
15247+This is useful for rendering text in PDF.
15248+
15249+Note that this method does not handle attributes in @glyph_item.
15250+If you want colors, shapes and lines handled automatically according
15251+to those attributes, you need to use pango_renderer_draw_layout_line()
15252+or pango_renderer_draw_layout().
15253+
15254+Note that @text is the start of the text for layout, which is then
15255+indexed by `glyph_item-&gt;item-&gt;offset`.
15256+
15257+If @text is %NULL, this simply calls [method@Pango.Renderer.draw_glyphs].
15258+
15259+The default implementation of this method simply falls back to
15260+[method@Pango.Renderer.draw_glyphs].</doc>
15261+ <source-position filename="../pango/pango-renderer.h" line="183"/>
15262+ <return-value transfer-ownership="none">
15263+ <type name="none" c:type="void"/>
15264+ </return-value>
15265+ <parameters>
15266+ <instance-parameter name="renderer" transfer-ownership="none">
15267+ <doc xml:space="preserve"
15268+ filename="../pango/pango-renderer.c"
15269+ line="807">a `PangoRenderer`</doc>
15270+ <type name="Renderer" c:type="PangoRenderer*"/>
15271+ </instance-parameter>
15272+ <parameter name="text"
15273+ transfer-ownership="none"
15274+ nullable="1"
15275+ allow-none="1">
15276+ <doc xml:space="preserve"
15277+ filename="../pango/pango-renderer.c"
15278+ line="808">the UTF-8 text that @glyph_item refers to</doc>
15279+ <type name="utf8" c:type="const char*"/>
15280+ </parameter>
15281+ <parameter name="glyph_item" transfer-ownership="none">
15282+ <doc xml:space="preserve"
15283+ filename="../pango/pango-renderer.c"
15284+ line="809">a `PangoGlyphItem`</doc>
15285+ <type name="GlyphItem" c:type="PangoGlyphItem*"/>
15286+ </parameter>
15287+ <parameter name="x" transfer-ownership="none">
15288+ <doc xml:space="preserve"
15289+ filename="../pango/pango-renderer.c"
15290+ line="810">X position of left edge of baseline, in user space coordinates
15291+ in Pango units</doc>
15292+ <type name="gint" c:type="int"/>
15293+ </parameter>
15294+ <parameter name="y" transfer-ownership="none">
15295+ <doc xml:space="preserve"
15296+ filename="../pango/pango-renderer.c"
15297+ line="812">Y position of left edge of baseline, in user space coordinates
15298+ in Pango units</doc>
15299+ <type name="gint" c:type="int"/>
15300+ </parameter>
15301+ </parameters>
15302+ </virtual-method>
15303+ <virtual-method name="draw_glyphs" invoker="draw_glyphs" version="1.8">
15304+ <doc xml:space="preserve"
15305+ filename="../pango/pango-renderer.c"
15306+ line="749">Draws the glyphs in @glyphs with the specified `PangoRenderer`.</doc>
15307+ <source-position filename="../pango/pango-renderer.h" line="139"/>
15308+ <return-value transfer-ownership="none">
15309+ <type name="none" c:type="void"/>
15310+ </return-value>
15311+ <parameters>
15312+ <instance-parameter name="renderer" transfer-ownership="none">
15313+ <doc xml:space="preserve"
15314+ filename="../pango/pango-renderer.c"
15315+ line="751">a `PangoRenderer`</doc>
15316+ <type name="Renderer" c:type="PangoRenderer*"/>
15317+ </instance-parameter>
15318+ <parameter name="font" transfer-ownership="none">
15319+ <doc xml:space="preserve"
15320+ filename="../pango/pango-renderer.c"
15321+ line="752">a `PangoFont`</doc>
15322+ <type name="Font" c:type="PangoFont*"/>
15323+ </parameter>
15324+ <parameter name="glyphs" transfer-ownership="none">
15325+ <doc xml:space="preserve"
15326+ filename="../pango/pango-renderer.c"
15327+ line="753">a `PangoGlyphString`</doc>
15328+ <type name="GlyphString" c:type="PangoGlyphString*"/>
15329+ </parameter>
15330+ <parameter name="x" transfer-ownership="none">
15331+ <doc xml:space="preserve"
15332+ filename="../pango/pango-renderer.c"
15333+ line="754">X position of left edge of baseline, in user space coordinates
15334+ in Pango units.</doc>
15335+ <type name="gint" c:type="int"/>
15336+ </parameter>
15337+ <parameter name="y" transfer-ownership="none">
15338+ <doc xml:space="preserve"
15339+ filename="../pango/pango-renderer.c"
15340+ line="756">Y position of left edge of baseline, in user space coordinates
15341+ in Pango units.</doc>
15342+ <type name="gint" c:type="int"/>
15343+ </parameter>
15344+ </parameters>
15345+ </virtual-method>
15346+ <virtual-method name="draw_rectangle"
15347+ invoker="draw_rectangle"
15348+ version="1.8">
15349+ <doc xml:space="preserve"
15350+ filename="../pango/pango-renderer.c"
15351+ line="874">Draws an axis-aligned rectangle in user space coordinates with the
15352+specified `PangoRenderer`.
15353+
15354+This should be called while @renderer is already active.
15355+Use [method@Pango.Renderer.activate] to activate a renderer.</doc>
15356+ <source-position filename="../pango/pango-renderer.h" line="144"/>
15357+ <return-value transfer-ownership="none">
15358+ <type name="none" c:type="void"/>
15359+ </return-value>
15360+ <parameters>
15361+ <instance-parameter name="renderer" transfer-ownership="none">
15362+ <doc xml:space="preserve"
15363+ filename="../pango/pango-renderer.c"
15364+ line="876">a `PangoRenderer`</doc>
15365+ <type name="Renderer" c:type="PangoRenderer*"/>
15366+ </instance-parameter>
15367+ <parameter name="part" transfer-ownership="none">
15368+ <doc xml:space="preserve"
15369+ filename="../pango/pango-renderer.c"
15370+ line="877">type of object this rectangle is part of</doc>
15371+ <type name="RenderPart" c:type="PangoRenderPart"/>
15372+ </parameter>
15373+ <parameter name="x" transfer-ownership="none">
15374+ <doc xml:space="preserve"
15375+ filename="../pango/pango-renderer.c"
15376+ line="878">X position at which to draw rectangle, in user space coordinates
15377+ in Pango units</doc>
15378+ <type name="gint" c:type="int"/>
15379+ </parameter>
15380+ <parameter name="y" transfer-ownership="none">
15381+ <doc xml:space="preserve"
15382+ filename="../pango/pango-renderer.c"
15383+ line="880">Y position at which to draw rectangle, in user space coordinates
15384+ in Pango units</doc>
15385+ <type name="gint" c:type="int"/>
15386+ </parameter>
15387+ <parameter name="width" transfer-ownership="none">
15388+ <doc xml:space="preserve"
15389+ filename="../pango/pango-renderer.c"
15390+ line="882">width of rectangle in Pango units</doc>
15391+ <type name="gint" c:type="int"/>
15392+ </parameter>
15393+ <parameter name="height" transfer-ownership="none">
15394+ <doc xml:space="preserve"
15395+ filename="../pango/pango-renderer.c"
15396+ line="883">height of rectangle in Pango units</doc>
15397+ <type name="gint" c:type="int"/>
15398+ </parameter>
15399+ </parameters>
15400+ </virtual-method>
15401+ <virtual-method name="draw_shape">
15402+ <source-position filename="../pango/pango-renderer.h" line="155"/>
15403+ <return-value transfer-ownership="none">
15404+ <type name="none" c:type="void"/>
15405+ </return-value>
15406+ <parameters>
15407+ <instance-parameter name="renderer" transfer-ownership="none">
15408+ <type name="Renderer" c:type="PangoRenderer*"/>
15409+ </instance-parameter>
15410+ <parameter name="attr" transfer-ownership="none">
15411+ <type name="AttrShape" c:type="PangoAttrShape*"/>
15412+ </parameter>
15413+ <parameter name="x" transfer-ownership="none">
15414+ <type name="gint" c:type="int"/>
15415+ </parameter>
15416+ <parameter name="y" transfer-ownership="none">
15417+ <type name="gint" c:type="int"/>
15418+ </parameter>
15419+ </parameters>
15420+ </virtual-method>
15421+ <virtual-method name="draw_trapezoid"
15422+ invoker="draw_trapezoid"
15423+ version="1.8">
15424+ <doc xml:space="preserve"
15425+ filename="../pango/pango-renderer.c"
15426+ line="1175">Draws a trapezoid with the parallel sides aligned with the X axis
15427+using the given `PangoRenderer`; coordinates are in device space.</doc>
15428+ <source-position filename="../pango/pango-renderer.h" line="160"/>
15429+ <return-value transfer-ownership="none">
15430+ <type name="none" c:type="void"/>
15431+ </return-value>
15432+ <parameters>
15433+ <instance-parameter name="renderer" transfer-ownership="none">
15434+ <doc xml:space="preserve"
15435+ filename="../pango/pango-renderer.c"
15436+ line="1177">a `PangoRenderer`</doc>
15437+ <type name="Renderer" c:type="PangoRenderer*"/>
15438+ </instance-parameter>
15439+ <parameter name="part" transfer-ownership="none">
15440+ <doc xml:space="preserve"
15441+ filename="../pango/pango-renderer.c"
15442+ line="1178">type of object this trapezoid is part of</doc>
15443+ <type name="RenderPart" c:type="PangoRenderPart"/>
15444+ </parameter>
15445+ <parameter name="y1_" transfer-ownership="none">
15446+ <doc xml:space="preserve"
15447+ filename="../pango/pango-renderer.c"
15448+ line="1179">Y coordinate of top of trapezoid</doc>
15449+ <type name="gdouble" c:type="double"/>
15450+ </parameter>
15451+ <parameter name="x11" transfer-ownership="none">
15452+ <doc xml:space="preserve"
15453+ filename="../pango/pango-renderer.c"
15454+ line="1180">X coordinate of left end of top of trapezoid</doc>
15455+ <type name="gdouble" c:type="double"/>
15456+ </parameter>
15457+ <parameter name="x21" transfer-ownership="none">
15458+ <doc xml:space="preserve"
15459+ filename="../pango/pango-renderer.c"
15460+ line="1181">X coordinate of right end of top of trapezoid</doc>
15461+ <type name="gdouble" c:type="double"/>
15462+ </parameter>
15463+ <parameter name="y2" transfer-ownership="none">
15464+ <doc xml:space="preserve"
15465+ filename="../pango/pango-renderer.c"
15466+ line="1182">Y coordinate of bottom of trapezoid</doc>
15467+ <type name="gdouble" c:type="double"/>
15468+ </parameter>
15469+ <parameter name="x12" transfer-ownership="none">
15470+ <doc xml:space="preserve"
15471+ filename="../pango/pango-renderer.c"
15472+ line="1183">X coordinate of left end of bottom of trapezoid</doc>
15473+ <type name="gdouble" c:type="double"/>
15474+ </parameter>
15475+ <parameter name="x22" transfer-ownership="none">
15476+ <doc xml:space="preserve"
15477+ filename="../pango/pango-renderer.c"
15478+ line="1184">X coordinate of right end of bottom of trapezoid</doc>
15479+ <type name="gdouble" c:type="double"/>
15480+ </parameter>
15481+ </parameters>
15482+ </virtual-method>
15483+ <virtual-method name="end">
15484+ <source-position filename="../pango/pango-renderer.h" line="178"/>
15485+ <return-value transfer-ownership="none">
15486+ <type name="none" c:type="void"/>
15487+ </return-value>
15488+ <parameters>
15489+ <instance-parameter name="renderer" transfer-ownership="none">
15490+ <type name="Renderer" c:type="PangoRenderer*"/>
15491+ </instance-parameter>
15492+ </parameters>
15493+ </virtual-method>
15494+ <virtual-method name="part_changed" invoker="part_changed" version="1.8">
15495+ <doc xml:space="preserve"
15496+ filename="../pango/pango-renderer.c"
15497+ line="1412">Informs Pango that the way that the rendering is done
15498+for @part has changed.
15499+
15500+This should be called if the rendering changes in a way that would
15501+prevent multiple pieces being joined together into one drawing call.
15502+For instance, if a subclass of `PangoRenderer` was to add a stipple
15503+option for drawing underlines, it needs to call
15504+
15505+```
15506+pango_renderer_part_changed (render, PANGO_RENDER_PART_UNDERLINE);
15507+```
15508+
15509+When the stipple changes or underlines with different stipples
15510+might be joined together. Pango automatically calls this for
15511+changes to colors. (See [method@Pango.Renderer.set_color])</doc>
15512+ <source-position filename="../pango/pango-renderer.h" line="174"/>
15513+ <return-value transfer-ownership="none">
15514+ <type name="none" c:type="void"/>
15515+ </return-value>
15516+ <parameters>
15517+ <instance-parameter name="renderer" transfer-ownership="none">
15518+ <doc xml:space="preserve"
15519+ filename="../pango/pango-renderer.c"
15520+ line="1414">a `PangoRenderer`</doc>
15521+ <type name="Renderer" c:type="PangoRenderer*"/>
15522+ </instance-parameter>
15523+ <parameter name="part" transfer-ownership="none">
15524+ <doc xml:space="preserve"
15525+ filename="../pango/pango-renderer.c"
15526+ line="1415">the part for which rendering has changed.</doc>
15527+ <type name="RenderPart" c:type="PangoRenderPart"/>
15528+ </parameter>
15529+ </parameters>
15530+ </virtual-method>
15531+ <virtual-method name="prepare_run">
15532+ <source-position filename="../pango/pango-renderer.h" line="180"/>
15533+ <return-value transfer-ownership="none">
15534+ <type name="none" c:type="void"/>
15535+ </return-value>
15536+ <parameters>
15537+ <instance-parameter name="renderer" transfer-ownership="none">
15538+ <type name="Renderer" c:type="PangoRenderer*"/>
15539+ </instance-parameter>
15540+ <parameter name="run" transfer-ownership="none">
15541+ <type name="LayoutRun" c:type="PangoLayoutRun*"/>
15542+ </parameter>
15543+ </parameters>
15544+ </virtual-method>
15545+ <method name="activate"
15546+ c:identifier="pango_renderer_activate"
15547+ version="1.8">
15548+ <doc xml:space="preserve"
15549+ filename="../pango/pango-renderer.c"
15550+ line="1239">Does initial setup before rendering operations on @renderer.
15551+
15552+[method@Pango.Renderer.deactivate] should be called when done drawing.
15553+Calls such as [method@Pango.Renderer.draw_layout] automatically
15554+activate the layout before drawing on it.
15555+
15556+Calls to [method@Pango.Renderer.activate] and
15557+[method@Pango.Renderer.deactivate] can be nested and the
15558+renderer will only be initialized and deinitialized once.</doc>
15559+ <source-position filename="../pango/pango-renderer.h" line="252"/>
15560+ <return-value transfer-ownership="none">
15561+ <type name="none" c:type="void"/>
15562+ </return-value>
15563+ <parameters>
15564+ <instance-parameter name="renderer" transfer-ownership="none">
15565+ <doc xml:space="preserve"
15566+ filename="../pango/pango-renderer.c"
15567+ line="1241">a `PangoRenderer`</doc>
15568+ <type name="Renderer" c:type="PangoRenderer*"/>
15569+ </instance-parameter>
15570+ </parameters>
15571+ </method>
15572+ <method name="deactivate"
15573+ c:identifier="pango_renderer_deactivate"
15574+ version="1.8">
15575+ <doc xml:space="preserve"
15576+ filename="../pango/pango-renderer.c"
15577+ line="1268">Cleans up after rendering operations on @renderer.
15578+
15579+See docs for [method@Pango.Renderer.activate].</doc>
15580+ <source-position filename="../pango/pango-renderer.h" line="254"/>
15581+ <return-value transfer-ownership="none">
15582+ <type name="none" c:type="void"/>
15583+ </return-value>
15584+ <parameters>
15585+ <instance-parameter name="renderer" transfer-ownership="none">
15586+ <doc xml:space="preserve"
15587+ filename="../pango/pango-renderer.c"
15588+ line="1270">a `PangoRenderer`</doc>
15589+ <type name="Renderer" c:type="PangoRenderer*"/>
15590+ </instance-parameter>
15591+ </parameters>
15592+ </method>
15593+ <method name="draw_error_underline"
15594+ c:identifier="pango_renderer_draw_error_underline"
15595+ version="1.8">
15596+ <doc xml:space="preserve"
15597+ filename="../pango/pango-renderer.c"
15598+ line="1015">Draw a squiggly line that approximately covers the given rectangle
15599+in the style of an underline used to indicate a spelling error.
15600+
15601+The width of the underline is rounded to an integer number
15602+of up/down segments and the resulting rectangle is centered
15603+in the original rectangle.
15604+
15605+This should be called while @renderer is already active.
15606+Use [method@Pango.Renderer.activate] to activate a renderer.</doc>
15607+ <source-position filename="../pango/pango-renderer.h" line="230"/>
15608+ <return-value transfer-ownership="none">
15609+ <type name="none" c:type="void"/>
15610+ </return-value>
15611+ <parameters>
15612+ <instance-parameter name="renderer" transfer-ownership="none">
15613+ <doc xml:space="preserve"
15614+ filename="../pango/pango-renderer.c"
15615+ line="1017">a `PangoRenderer`</doc>
15616+ <type name="Renderer" c:type="PangoRenderer*"/>
15617+ </instance-parameter>
15618+ <parameter name="x" transfer-ownership="none">
15619+ <doc xml:space="preserve"
15620+ filename="../pango/pango-renderer.c"
15621+ line="1018">X coordinate of underline, in Pango units in user coordinate system</doc>
15622+ <type name="gint" c:type="int"/>
15623+ </parameter>
15624+ <parameter name="y" transfer-ownership="none">
15625+ <doc xml:space="preserve"
15626+ filename="../pango/pango-renderer.c"
15627+ line="1019">Y coordinate of underline, in Pango units in user coordinate system</doc>
15628+ <type name="gint" c:type="int"/>
15629+ </parameter>
15630+ <parameter name="width" transfer-ownership="none">
15631+ <doc xml:space="preserve"
15632+ filename="../pango/pango-renderer.c"
15633+ line="1020">width of underline, in Pango units in user coordinate system</doc>
15634+ <type name="gint" c:type="int"/>
15635+ </parameter>
15636+ <parameter name="height" transfer-ownership="none">
15637+ <doc xml:space="preserve"
15638+ filename="../pango/pango-renderer.c"
15639+ line="1021">height of underline, in Pango units in user coordinate system</doc>
15640+ <type name="gint" c:type="int"/>
15641+ </parameter>
15642+ </parameters>
15643+ </method>
15644+ <method name="draw_glyph"
15645+ c:identifier="pango_renderer_draw_glyph"
15646+ version="1.8">
15647+ <doc xml:space="preserve"
15648+ filename="../pango/pango-renderer.c"
15649+ line="1210">Draws a single glyph with coordinates in device space.</doc>
15650+ <source-position filename="../pango/pango-renderer.h" line="245"/>
15651+ <return-value transfer-ownership="none">
15652+ <type name="none" c:type="void"/>
15653+ </return-value>
15654+ <parameters>
15655+ <instance-parameter name="renderer" transfer-ownership="none">
15656+ <doc xml:space="preserve"
15657+ filename="../pango/pango-renderer.c"
15658+ line="1212">a `PangoRenderer`</doc>
15659+ <type name="Renderer" c:type="PangoRenderer*"/>
15660+ </instance-parameter>
15661+ <parameter name="font" transfer-ownership="none">
15662+ <doc xml:space="preserve"
15663+ filename="../pango/pango-renderer.c"
15664+ line="1213">a `PangoFont`</doc>
15665+ <type name="Font" c:type="PangoFont*"/>
15666+ </parameter>
15667+ <parameter name="glyph" transfer-ownership="none">
15668+ <doc xml:space="preserve"
15669+ filename="../pango/pango-renderer.c"
15670+ line="1214">the glyph index of a single glyph</doc>
15671+ <type name="Glyph" c:type="PangoGlyph"/>
15672+ </parameter>
15673+ <parameter name="x" transfer-ownership="none">
15674+ <doc xml:space="preserve"
15675+ filename="../pango/pango-renderer.c"
15676+ line="1215">X coordinate of left edge of baseline of glyph</doc>
15677+ <type name="gdouble" c:type="double"/>
15678+ </parameter>
15679+ <parameter name="y" transfer-ownership="none">
15680+ <doc xml:space="preserve"
15681+ filename="../pango/pango-renderer.c"
15682+ line="1216">Y coordinate of left edge of baseline of glyph</doc>
15683+ <type name="gdouble" c:type="double"/>
15684+ </parameter>
15685+ </parameters>
15686+ </method>
15687+ <method name="draw_glyph_item"
15688+ c:identifier="pango_renderer_draw_glyph_item"
15689+ version="1.22">
15690+ <doc xml:space="preserve"
15691+ filename="../pango/pango-renderer.c"
15692+ line="805">Draws the glyphs in @glyph_item with the specified `PangoRenderer`,
15693+embedding the text associated with the glyphs in the output if the
15694+output format supports it.
15695+
15696+This is useful for rendering text in PDF.
15697+
15698+Note that this method does not handle attributes in @glyph_item.
15699+If you want colors, shapes and lines handled automatically according
15700+to those attributes, you need to use pango_renderer_draw_layout_line()
15701+or pango_renderer_draw_layout().
15702+
15703+Note that @text is the start of the text for layout, which is then
15704+indexed by `glyph_item-&gt;item-&gt;offset`.
15705+
15706+If @text is %NULL, this simply calls [method@Pango.Renderer.draw_glyphs].
15707+
15708+The default implementation of this method simply falls back to
15709+[method@Pango.Renderer.draw_glyphs].</doc>
15710+ <source-position filename="../pango/pango-renderer.h" line="217"/>
15711+ <return-value transfer-ownership="none">
15712+ <type name="none" c:type="void"/>
15713+ </return-value>
15714+ <parameters>
15715+ <instance-parameter name="renderer" transfer-ownership="none">
15716+ <doc xml:space="preserve"
15717+ filename="../pango/pango-renderer.c"
15718+ line="807">a `PangoRenderer`</doc>
15719+ <type name="Renderer" c:type="PangoRenderer*"/>
15720+ </instance-parameter>
15721+ <parameter name="text"
15722+ transfer-ownership="none"
15723+ nullable="1"
15724+ allow-none="1">
15725+ <doc xml:space="preserve"
15726+ filename="../pango/pango-renderer.c"
15727+ line="808">the UTF-8 text that @glyph_item refers to</doc>
15728+ <type name="utf8" c:type="const char*"/>
15729+ </parameter>
15730+ <parameter name="glyph_item" transfer-ownership="none">
15731+ <doc xml:space="preserve"
15732+ filename="../pango/pango-renderer.c"
15733+ line="809">a `PangoGlyphItem`</doc>
15734+ <type name="GlyphItem" c:type="PangoGlyphItem*"/>
15735+ </parameter>
15736+ <parameter name="x" transfer-ownership="none">
15737+ <doc xml:space="preserve"
15738+ filename="../pango/pango-renderer.c"
15739+ line="810">X position of left edge of baseline, in user space coordinates
15740+ in Pango units</doc>
15741+ <type name="gint" c:type="int"/>
15742+ </parameter>
15743+ <parameter name="y" transfer-ownership="none">
15744+ <doc xml:space="preserve"
15745+ filename="../pango/pango-renderer.c"
15746+ line="812">Y position of left edge of baseline, in user space coordinates
15747+ in Pango units</doc>
15748+ <type name="gint" c:type="int"/>
15749+ </parameter>
15750+ </parameters>
15751+ </method>
15752+ <method name="draw_glyphs"
15753+ c:identifier="pango_renderer_draw_glyphs"
15754+ version="1.8">
15755+ <doc xml:space="preserve"
15756+ filename="../pango/pango-renderer.c"
15757+ line="749">Draws the glyphs in @glyphs with the specified `PangoRenderer`.</doc>
15758+ <source-position filename="../pango/pango-renderer.h" line="211"/>
15759+ <return-value transfer-ownership="none">
15760+ <type name="none" c:type="void"/>
15761+ </return-value>
15762+ <parameters>
15763+ <instance-parameter name="renderer" transfer-ownership="none">
15764+ <doc xml:space="preserve"
15765+ filename="../pango/pango-renderer.c"
15766+ line="751">a `PangoRenderer`</doc>
15767+ <type name="Renderer" c:type="PangoRenderer*"/>
15768+ </instance-parameter>
15769+ <parameter name="font" transfer-ownership="none">
15770+ <doc xml:space="preserve"
15771+ filename="../pango/pango-renderer.c"
15772+ line="752">a `PangoFont`</doc>
15773+ <type name="Font" c:type="PangoFont*"/>
15774+ </parameter>
15775+ <parameter name="glyphs" transfer-ownership="none">
15776+ <doc xml:space="preserve"
15777+ filename="../pango/pango-renderer.c"
15778+ line="753">a `PangoGlyphString`</doc>
15779+ <type name="GlyphString" c:type="PangoGlyphString*"/>
15780+ </parameter>
15781+ <parameter name="x" transfer-ownership="none">
15782+ <doc xml:space="preserve"
15783+ filename="../pango/pango-renderer.c"
15784+ line="754">X position of left edge of baseline, in user space coordinates
15785+ in Pango units.</doc>
15786+ <type name="gint" c:type="int"/>
15787+ </parameter>
15788+ <parameter name="y" transfer-ownership="none">
15789+ <doc xml:space="preserve"
15790+ filename="../pango/pango-renderer.c"
15791+ line="756">Y position of left edge of baseline, in user space coordinates
15792+ in Pango units.</doc>
15793+ <type name="gint" c:type="int"/>
15794+ </parameter>
15795+ </parameters>
15796+ </method>
15797+ <method name="draw_layout"
15798+ c:identifier="pango_renderer_draw_layout"
15799+ version="1.8">
15800+ <doc xml:space="preserve"
15801+ filename="../pango/pango-renderer.c"
15802+ line="149">Draws @layout with the specified `PangoRenderer`.
15803+
15804+This is equivalent to drawing the lines of the layout, at their
15805+respective positions relative to @x, @y.</doc>
15806+ <source-position filename="../pango/pango-renderer.h" line="201"/>
15807+ <return-value transfer-ownership="none">
15808+ <type name="none" c:type="void"/>
15809+ </return-value>
15810+ <parameters>
15811+ <instance-parameter name="renderer" transfer-ownership="none">
15812+ <doc xml:space="preserve"
15813+ filename="../pango/pango-renderer.c"
15814+ line="151">a `PangoRenderer`</doc>
15815+ <type name="Renderer" c:type="PangoRenderer*"/>
15816+ </instance-parameter>
15817+ <parameter name="layout" transfer-ownership="none">
15818+ <doc xml:space="preserve"
15819+ filename="../pango/pango-renderer.c"
15820+ line="152">a `PangoLayout`</doc>
15821+ <type name="Layout" c:type="PangoLayout*"/>
15822+ </parameter>
15823+ <parameter name="x" transfer-ownership="none">
15824+ <doc xml:space="preserve"
15825+ filename="../pango/pango-renderer.c"
15826+ line="153">X position of left edge of baseline, in user space coordinates
15827+ in Pango units.</doc>
15828+ <type name="gint" c:type="int"/>
15829+ </parameter>
15830+ <parameter name="y" transfer-ownership="none">
15831+ <doc xml:space="preserve"
15832+ filename="../pango/pango-renderer.c"
15833+ line="155">Y position of left edge of baseline, in user space coordinates
15834+ in Pango units.</doc>
15835+ <type name="gint" c:type="int"/>
15836+ </parameter>
15837+ </parameters>
15838+ </method>
15839+ <method name="draw_layout_line"
15840+ c:identifier="pango_renderer_draw_layout_line"
15841+ version="1.8">
15842+ <doc xml:space="preserve"
15843+ filename="../pango/pango-renderer.c"
15844+ line="553">Draws @line with the specified `PangoRenderer`.
15845+
15846+This draws the glyph items that make up the line, as well as
15847+shapes, backgrounds and lines that are specified by the attributes
15848+of those items.</doc>
15849+ <source-position filename="../pango/pango-renderer.h" line="206"/>
15850+ <return-value transfer-ownership="none">
15851+ <type name="none" c:type="void"/>
15852+ </return-value>
15853+ <parameters>
15854+ <instance-parameter name="renderer" transfer-ownership="none">
15855+ <doc xml:space="preserve"
15856+ filename="../pango/pango-renderer.c"
15857+ line="555">a `PangoRenderer`</doc>
15858+ <type name="Renderer" c:type="PangoRenderer*"/>
15859+ </instance-parameter>
15860+ <parameter name="line" transfer-ownership="none">
15861+ <doc xml:space="preserve"
15862+ filename="../pango/pango-renderer.c"
15863+ line="556">a `PangoLayoutLine`</doc>
15864+ <type name="LayoutLine" c:type="PangoLayoutLine*"/>
15865+ </parameter>
15866+ <parameter name="x" transfer-ownership="none">
15867+ <doc xml:space="preserve"
15868+ filename="../pango/pango-renderer.c"
15869+ line="557">X position of left edge of baseline, in user space coordinates
15870+ in Pango units.</doc>
15871+ <type name="gint" c:type="int"/>
15872+ </parameter>
15873+ <parameter name="y" transfer-ownership="none">
15874+ <doc xml:space="preserve"
15875+ filename="../pango/pango-renderer.c"
15876+ line="559">Y position of left edge of baseline, in user space coordinates
15877+ in Pango units.</doc>
15878+ <type name="gint" c:type="int"/>
15879+ </parameter>
15880+ </parameters>
15881+ </method>
15882+ <method name="draw_rectangle"
15883+ c:identifier="pango_renderer_draw_rectangle"
15884+ version="1.8">
15885+ <doc xml:space="preserve"
15886+ filename="../pango/pango-renderer.c"
15887+ line="874">Draws an axis-aligned rectangle in user space coordinates with the
15888+specified `PangoRenderer`.
15889+
15890+This should be called while @renderer is already active.
15891+Use [method@Pango.Renderer.activate] to activate a renderer.</doc>
15892+ <source-position filename="../pango/pango-renderer.h" line="223"/>
15893+ <return-value transfer-ownership="none">
15894+ <type name="none" c:type="void"/>
15895+ </return-value>
15896+ <parameters>
15897+ <instance-parameter name="renderer" transfer-ownership="none">
15898+ <doc xml:space="preserve"
15899+ filename="../pango/pango-renderer.c"
15900+ line="876">a `PangoRenderer`</doc>
15901+ <type name="Renderer" c:type="PangoRenderer*"/>
15902+ </instance-parameter>
15903+ <parameter name="part" transfer-ownership="none">
15904+ <doc xml:space="preserve"
15905+ filename="../pango/pango-renderer.c"
15906+ line="877">type of object this rectangle is part of</doc>
15907+ <type name="RenderPart" c:type="PangoRenderPart"/>
15908+ </parameter>
15909+ <parameter name="x" transfer-ownership="none">
15910+ <doc xml:space="preserve"
15911+ filename="../pango/pango-renderer.c"
15912+ line="878">X position at which to draw rectangle, in user space coordinates
15913+ in Pango units</doc>
15914+ <type name="gint" c:type="int"/>
15915+ </parameter>
15916+ <parameter name="y" transfer-ownership="none">
15917+ <doc xml:space="preserve"
15918+ filename="../pango/pango-renderer.c"
15919+ line="880">Y position at which to draw rectangle, in user space coordinates
15920+ in Pango units</doc>
15921+ <type name="gint" c:type="int"/>
15922+ </parameter>
15923+ <parameter name="width" transfer-ownership="none">
15924+ <doc xml:space="preserve"
15925+ filename="../pango/pango-renderer.c"
15926+ line="882">width of rectangle in Pango units</doc>
15927+ <type name="gint" c:type="int"/>
15928+ </parameter>
15929+ <parameter name="height" transfer-ownership="none">
15930+ <doc xml:space="preserve"
15931+ filename="../pango/pango-renderer.c"
15932+ line="883">height of rectangle in Pango units</doc>
15933+ <type name="gint" c:type="int"/>
15934+ </parameter>
15935+ </parameters>
15936+ </method>
15937+ <method name="draw_trapezoid"
15938+ c:identifier="pango_renderer_draw_trapezoid"
15939+ version="1.8">
15940+ <doc xml:space="preserve"
15941+ filename="../pango/pango-renderer.c"
15942+ line="1175">Draws a trapezoid with the parallel sides aligned with the X axis
15943+using the given `PangoRenderer`; coordinates are in device space.</doc>
15944+ <source-position filename="../pango/pango-renderer.h" line="236"/>
15945+ <return-value transfer-ownership="none">
15946+ <type name="none" c:type="void"/>
15947+ </return-value>
15948+ <parameters>
15949+ <instance-parameter name="renderer" transfer-ownership="none">
15950+ <doc xml:space="preserve"
15951+ filename="../pango/pango-renderer.c"
15952+ line="1177">a `PangoRenderer`</doc>
15953+ <type name="Renderer" c:type="PangoRenderer*"/>
15954+ </instance-parameter>
15955+ <parameter name="part" transfer-ownership="none">
15956+ <doc xml:space="preserve"
15957+ filename="../pango/pango-renderer.c"
15958+ line="1178">type of object this trapezoid is part of</doc>
15959+ <type name="RenderPart" c:type="PangoRenderPart"/>
15960+ </parameter>
15961+ <parameter name="y1_" transfer-ownership="none">
15962+ <doc xml:space="preserve"
15963+ filename="../pango/pango-renderer.c"
15964+ line="1179">Y coordinate of top of trapezoid</doc>
15965+ <type name="gdouble" c:type="double"/>
15966+ </parameter>
15967+ <parameter name="x11" transfer-ownership="none">
15968+ <doc xml:space="preserve"
15969+ filename="../pango/pango-renderer.c"
15970+ line="1180">X coordinate of left end of top of trapezoid</doc>
15971+ <type name="gdouble" c:type="double"/>
15972+ </parameter>
15973+ <parameter name="x21" transfer-ownership="none">
15974+ <doc xml:space="preserve"
15975+ filename="../pango/pango-renderer.c"
15976+ line="1181">X coordinate of right end of top of trapezoid</doc>
15977+ <type name="gdouble" c:type="double"/>
15978+ </parameter>
15979+ <parameter name="y2" transfer-ownership="none">
15980+ <doc xml:space="preserve"
15981+ filename="../pango/pango-renderer.c"
15982+ line="1182">Y coordinate of bottom of trapezoid</doc>
15983+ <type name="gdouble" c:type="double"/>
15984+ </parameter>
15985+ <parameter name="x12" transfer-ownership="none">
15986+ <doc xml:space="preserve"
15987+ filename="../pango/pango-renderer.c"
15988+ line="1183">X coordinate of left end of bottom of trapezoid</doc>
15989+ <type name="gdouble" c:type="double"/>
15990+ </parameter>
15991+ <parameter name="x22" transfer-ownership="none">
15992+ <doc xml:space="preserve"
15993+ filename="../pango/pango-renderer.c"
15994+ line="1184">X coordinate of right end of bottom of trapezoid</doc>
15995+ <type name="gdouble" c:type="double"/>
15996+ </parameter>
15997+ </parameters>
15998+ </method>
15999+ <method name="get_alpha"
16000+ c:identifier="pango_renderer_get_alpha"
16001+ version="1.38">
16002+ <doc xml:space="preserve"
16003+ filename="../pango/pango-renderer.c"
16004+ line="1389">Gets the current alpha for the specified part.</doc>
16005+ <source-position filename="../pango/pango-renderer.h" line="273"/>
16006+ <return-value transfer-ownership="none">
16007+ <doc xml:space="preserve"
16008+ filename="../pango/pango-renderer.c"
16009+ line="1396">the alpha for the specified part,
16010+ or 0 if it hasn't been set and should be
16011+ inherited from the environment.</doc>
16012+ <type name="guint16" c:type="guint16"/>
16013+ </return-value>
16014+ <parameters>
16015+ <instance-parameter name="renderer" transfer-ownership="none">
16016+ <doc xml:space="preserve"
16017+ filename="../pango/pango-renderer.c"
16018+ line="1391">a `PangoRenderer`</doc>
16019+ <type name="Renderer" c:type="PangoRenderer*"/>
16020+ </instance-parameter>
16021+ <parameter name="part" transfer-ownership="none">
16022+ <doc xml:space="preserve"
16023+ filename="../pango/pango-renderer.c"
16024+ line="1392">the part to get the alpha for</doc>
16025+ <type name="RenderPart" c:type="PangoRenderPart"/>
16026+ </parameter>
16027+ </parameters>
16028+ </method>
16029+ <method name="get_color"
16030+ c:identifier="pango_renderer_get_color"
16031+ version="1.8">
16032+ <doc xml:space="preserve"
16033+ filename="../pango/pango-renderer.c"
16034+ line="1332">Gets the current rendering color for the specified part.</doc>
16035+ <source-position filename="../pango/pango-renderer.h" line="265"/>
16036+ <return-value transfer-ownership="none" nullable="1">
16037+ <doc xml:space="preserve"
16038+ filename="../pango/pango-renderer.c"
16039+ line="1339">the color for the
16040+ specified part, or %NULL if it hasn't been set and should be
16041+ inherited from the environment.</doc>
16042+ <type name="Color" c:type="PangoColor*"/>
16043+ </return-value>
16044+ <parameters>
16045+ <instance-parameter name="renderer" transfer-ownership="none">
16046+ <doc xml:space="preserve"
16047+ filename="../pango/pango-renderer.c"
16048+ line="1334">a `PangoRenderer`</doc>
16049+ <type name="Renderer" c:type="PangoRenderer*"/>
16050+ </instance-parameter>
16051+ <parameter name="part" transfer-ownership="none">
16052+ <doc xml:space="preserve"
16053+ filename="../pango/pango-renderer.c"
16054+ line="1335">the part to get the color for</doc>
16055+ <type name="RenderPart" c:type="PangoRenderPart"/>
16056+ </parameter>
16057+ </parameters>
16058+ </method>
16059+ <method name="get_layout"
16060+ c:identifier="pango_renderer_get_layout"
16061+ version="1.20">
16062+ <doc xml:space="preserve"
16063+ filename="../pango/pango-renderer.c"
16064+ line="1600">Gets the layout currently being rendered using @renderer.
16065+
16066+Calling this function only makes sense from inside a subclass's
16067+methods, like in its draw_shape vfunc, for example.
16068+
16069+The returned layout should not be modified while still being
16070+rendered.</doc>
16071+ <source-position filename="../pango/pango-renderer.h" line="283"/>
16072+ <return-value transfer-ownership="none" nullable="1">
16073+ <doc xml:space="preserve"
16074+ filename="../pango/pango-renderer.c"
16075+ line="1612">the layout, or %NULL if
16076+ no layout is being rendered using @renderer at this time.</doc>
16077+ <type name="Layout" c:type="PangoLayout*"/>
16078+ </return-value>
16079+ <parameters>
16080+ <instance-parameter name="renderer" transfer-ownership="none">
16081+ <doc xml:space="preserve"
16082+ filename="../pango/pango-renderer.c"
16083+ line="1602">a `PangoRenderer`</doc>
16084+ <type name="Renderer" c:type="PangoRenderer*"/>
16085+ </instance-parameter>
16086+ </parameters>
16087+ </method>
16088+ <method name="get_layout_line"
16089+ c:identifier="pango_renderer_get_layout_line"
16090+ version="1.20">
16091+ <doc xml:space="preserve"
16092+ filename="../pango/pango-renderer.c"
16093+ line="1626">Gets the layout line currently being rendered using @renderer.
16094+
16095+Calling this function only makes sense from inside a subclass's
16096+methods, like in its draw_shape vfunc, for example.
16097+
16098+The returned layout line should not be modified while still being
16099+rendered.</doc>
16100+ <source-position filename="../pango/pango-renderer.h" line="285"/>
16101+ <return-value transfer-ownership="none" nullable="1">
16102+ <doc xml:space="preserve"
16103+ filename="../pango/pango-renderer.c"
16104+ line="1638">the layout line, or %NULL
16105+ if no layout line is being rendered using @renderer at this time.</doc>
16106+ <type name="LayoutLine" c:type="PangoLayoutLine*"/>
16107+ </return-value>
16108+ <parameters>
16109+ <instance-parameter name="renderer" transfer-ownership="none">
16110+ <doc xml:space="preserve"
16111+ filename="../pango/pango-renderer.c"
16112+ line="1628">a `PangoRenderer`</doc>
16113+ <type name="Renderer" c:type="PangoRenderer*"/>
16114+ </instance-parameter>
16115+ </parameters>
16116+ </method>
16117+ <method name="get_matrix"
16118+ c:identifier="pango_renderer_get_matrix"
16119+ version="1.8">
16120+ <doc xml:space="preserve"
16121+ filename="../pango/pango-renderer.c"
16122+ line="1577">Gets the transformation matrix that will be applied when
16123+rendering.
16124+
16125+See [method@Pango.Renderer.set_matrix].</doc>
16126+ <source-position filename="../pango/pango-renderer.h" line="280"/>
16127+ <return-value transfer-ownership="none" nullable="1">
16128+ <doc xml:space="preserve"
16129+ filename="../pango/pango-renderer.c"
16130+ line="1586">the matrix, or %NULL if no matrix has
16131+ been set (which is the same as the identity matrix). The returned
16132+ matrix is owned by Pango and must not be modified or freed.</doc>
16133+ <type name="Matrix" c:type="const PangoMatrix*"/>
16134+ </return-value>
16135+ <parameters>
16136+ <instance-parameter name="renderer" transfer-ownership="none">
16137+ <doc xml:space="preserve"
16138+ filename="../pango/pango-renderer.c"
16139+ line="1579">a `PangoRenderer`</doc>
16140+ <type name="Renderer" c:type="PangoRenderer*"/>
16141+ </instance-parameter>
16142+ </parameters>
16143+ </method>
16144+ <method name="part_changed"
16145+ c:identifier="pango_renderer_part_changed"
16146+ version="1.8">
16147+ <doc xml:space="preserve"
16148+ filename="../pango/pango-renderer.c"
16149+ line="1412">Informs Pango that the way that the rendering is done
16150+for @part has changed.
16151+
16152+This should be called if the rendering changes in a way that would
16153+prevent multiple pieces being joined together into one drawing call.
16154+For instance, if a subclass of `PangoRenderer` was to add a stipple
16155+option for drawing underlines, it needs to call
16156+
16157+```
16158+pango_renderer_part_changed (render, PANGO_RENDER_PART_UNDERLINE);
16159+```
16160+
16161+When the stipple changes or underlines with different stipples
16162+might be joined together. Pango automatically calls this for
16163+changes to colors. (See [method@Pango.Renderer.set_color])</doc>
16164+ <source-position filename="../pango/pango-renderer.h" line="257"/>
16165+ <return-value transfer-ownership="none">
16166+ <type name="none" c:type="void"/>
16167+ </return-value>
16168+ <parameters>
16169+ <instance-parameter name="renderer" transfer-ownership="none">
16170+ <doc xml:space="preserve"
16171+ filename="../pango/pango-renderer.c"
16172+ line="1414">a `PangoRenderer`</doc>
16173+ <type name="Renderer" c:type="PangoRenderer*"/>
16174+ </instance-parameter>
16175+ <parameter name="part" transfer-ownership="none">
16176+ <doc xml:space="preserve"
16177+ filename="../pango/pango-renderer.c"
16178+ line="1415">the part for which rendering has changed.</doc>
16179+ <type name="RenderPart" c:type="PangoRenderPart"/>
16180+ </parameter>
16181+ </parameters>
16182+ </method>
16183+ <method name="set_alpha"
16184+ c:identifier="pango_renderer_set_alpha"
16185+ version="1.38">
16186+ <doc xml:space="preserve"
16187+ filename="../pango/pango-renderer.c"
16188+ line="1358">Sets the alpha for part of the rendering.
16189+
16190+Note that the alpha may only be used if a color is
16191+specified for @part as well.</doc>
16192+ <source-position filename="../pango/pango-renderer.h" line="269"/>
16193+ <return-value transfer-ownership="none">
16194+ <type name="none" c:type="void"/>
16195+ </return-value>
16196+ <parameters>
16197+ <instance-parameter name="renderer" transfer-ownership="none">
16198+ <doc xml:space="preserve"
16199+ filename="../pango/pango-renderer.c"
16200+ line="1360">a `PangoRenderer`</doc>
16201+ <type name="Renderer" c:type="PangoRenderer*"/>
16202+ </instance-parameter>
16203+ <parameter name="part" transfer-ownership="none">
16204+ <doc xml:space="preserve"
16205+ filename="../pango/pango-renderer.c"
16206+ line="1361">the part to set the alpha for</doc>
16207+ <type name="RenderPart" c:type="PangoRenderPart"/>
16208+ </parameter>
16209+ <parameter name="alpha" transfer-ownership="none">
16210+ <doc xml:space="preserve"
16211+ filename="../pango/pango-renderer.c"
16212+ line="1362">an alpha value between 1 and 65536, or 0 to unset the alpha</doc>
16213+ <type name="guint16" c:type="guint16"/>
16214+ </parameter>
16215+ </parameters>
16216+ </method>
16217+ <method name="set_color"
16218+ c:identifier="pango_renderer_set_color"
16219+ version="1.8">
16220+ <doc xml:space="preserve"
16221+ filename="../pango/pango-renderer.c"
16222+ line="1292">Sets the color for part of the rendering.
16223+
16224+Also see [method@Pango.Renderer.set_alpha].</doc>
16225+ <source-position filename="../pango/pango-renderer.h" line="261"/>
16226+ <return-value transfer-ownership="none">
16227+ <type name="none" c:type="void"/>
16228+ </return-value>
16229+ <parameters>
16230+ <instance-parameter name="renderer" transfer-ownership="none">
16231+ <doc xml:space="preserve"
16232+ filename="../pango/pango-renderer.c"
16233+ line="1294">a `PangoRenderer`</doc>
16234+ <type name="Renderer" c:type="PangoRenderer*"/>
16235+ </instance-parameter>
16236+ <parameter name="part" transfer-ownership="none">
16237+ <doc xml:space="preserve"
16238+ filename="../pango/pango-renderer.c"
16239+ line="1295">the part to change the color of</doc>
16240+ <type name="RenderPart" c:type="PangoRenderPart"/>
16241+ </parameter>
16242+ <parameter name="color"
16243+ transfer-ownership="none"
16244+ nullable="1"
16245+ allow-none="1">
16246+ <doc xml:space="preserve"
16247+ filename="../pango/pango-renderer.c"
16248+ line="1296">the new color or %NULL to unset the current color</doc>
16249+ <type name="Color" c:type="const PangoColor*"/>
16250+ </parameter>
16251+ </parameters>
16252+ </method>
16253+ <method name="set_matrix"
16254+ c:identifier="pango_renderer_set_matrix"
16255+ version="1.8">
16256+ <doc xml:space="preserve"
16257+ filename="../pango/pango-renderer.c"
16258+ line="1557">Sets the transformation matrix that will be applied when rendering.</doc>
16259+ <source-position filename="../pango/pango-renderer.h" line="277"/>
16260+ <return-value transfer-ownership="none">
16261+ <type name="none" c:type="void"/>
16262+ </return-value>
16263+ <parameters>
16264+ <instance-parameter name="renderer" transfer-ownership="none">
16265+ <doc xml:space="preserve"
16266+ filename="../pango/pango-renderer.c"
16267+ line="1559">a `PangoRenderer`</doc>
16268+ <type name="Renderer" c:type="PangoRenderer*"/>
16269+ </instance-parameter>
16270+ <parameter name="matrix"
16271+ transfer-ownership="none"
16272+ nullable="1"
16273+ allow-none="1">
16274+ <doc xml:space="preserve"
16275+ filename="../pango/pango-renderer.c"
16276+ line="1560">a `PangoMatrix`, or %NULL to unset any existing matrix
16277+ (No matrix set is the same as setting the identity matrix.)</doc>
16278+ <type name="Matrix" c:type="const PangoMatrix*"/>
16279+ </parameter>
16280+ </parameters>
16281+ </method>
16282+ <field name="parent_instance" readable="0" private="1">
16283+ <type name="GObject.Object" c:type="GObject"/>
16284+ </field>
16285+ <field name="underline" readable="0" private="1">
16286+ <type name="Underline" c:type="PangoUnderline"/>
16287+ </field>
16288+ <field name="strikethrough" readable="0" private="1">
16289+ <type name="gboolean" c:type="gboolean"/>
16290+ </field>
16291+ <field name="active_count" readable="0" private="1">
16292+ <type name="gint" c:type="int"/>
16293+ </field>
16294+ <field name="matrix">
16295+ <doc xml:space="preserve"
16296+ filename="../pango/pango-renderer.h"
16297+ line="64">the current transformation matrix for
16298+ the Renderer; may be %NULL, which should be treated the
16299+ same as the identity matrix.</doc>
16300+ <type name="Matrix" c:type="PangoMatrix*"/>
16301+ </field>
16302+ <field name="priv" readable="0" private="1">
16303+ <type name="RendererPrivate" c:type="PangoRendererPrivate*"/>
16304+ </field>
16305+ </class>
16306+ <record name="RendererClass"
16307+ c:type="PangoRendererClass"
16308+ glib:is-gtype-struct-for="Renderer"
16309+ version="1.8">
16310+ <doc xml:space="preserve"
16311+ filename="../pango/pango-renderer.h"
16312+ line="93">Class structure for `PangoRenderer`.
16313+
16314+The following vfuncs take user space coordinates in Pango units
16315+and have default implementations:
16316+- draw_glyphs
16317+- draw_rectangle
16318+- draw_error_underline
16319+- draw_shape
16320+- draw_glyph_item
16321+
16322+The default draw_shape implementation draws nothing.
16323+
16324+The following vfuncs take device space coordinates as doubles
16325+and must be implemented:
16326+- draw_trapezoid
16327+- draw_glyph</doc>
16328+ <source-position filename="../pango/pango-renderer.h" line="195"/>
16329+ <field name="parent_class" readable="0" private="1">
16330+ <type name="GObject.ObjectClass" c:type="GObjectClass"/>
16331+ </field>
16332+ <field name="draw_glyphs">
16333+ <callback name="draw_glyphs">
16334+ <source-position filename="../pango/pango-renderer.h" line="139"/>
16335+ <return-value transfer-ownership="none">
16336+ <type name="none" c:type="void"/>
16337+ </return-value>
16338+ <parameters>
16339+ <parameter name="renderer" transfer-ownership="none">
16340+ <doc xml:space="preserve"
16341+ filename="../pango/pango-renderer.c"
16342+ line="751">a `PangoRenderer`</doc>
16343+ <type name="Renderer" c:type="PangoRenderer*"/>
16344+ </parameter>
16345+ <parameter name="font" transfer-ownership="none">
16346+ <doc xml:space="preserve"
16347+ filename="../pango/pango-renderer.c"
16348+ line="752">a `PangoFont`</doc>
16349+ <type name="Font" c:type="PangoFont*"/>
16350+ </parameter>
16351+ <parameter name="glyphs" transfer-ownership="none">
16352+ <doc xml:space="preserve"
16353+ filename="../pango/pango-renderer.c"
16354+ line="753">a `PangoGlyphString`</doc>
16355+ <type name="GlyphString" c:type="PangoGlyphString*"/>
16356+ </parameter>
16357+ <parameter name="x" transfer-ownership="none">
16358+ <doc xml:space="preserve"
16359+ filename="../pango/pango-renderer.c"
16360+ line="754">X position of left edge of baseline, in user space coordinates
16361+ in Pango units.</doc>
16362+ <type name="gint" c:type="int"/>
16363+ </parameter>
16364+ <parameter name="y" transfer-ownership="none">
16365+ <doc xml:space="preserve"
16366+ filename="../pango/pango-renderer.c"
16367+ line="756">Y position of left edge of baseline, in user space coordinates
16368+ in Pango units.</doc>
16369+ <type name="gint" c:type="int"/>
16370+ </parameter>
16371+ </parameters>
16372+ </callback>
16373+ </field>
16374+ <field name="draw_rectangle">
16375+ <callback name="draw_rectangle">
16376+ <source-position filename="../pango/pango-renderer.h" line="144"/>
16377+ <return-value transfer-ownership="none">
16378+ <type name="none" c:type="void"/>
16379+ </return-value>
16380+ <parameters>
16381+ <parameter name="renderer" transfer-ownership="none">
16382+ <doc xml:space="preserve"
16383+ filename="../pango/pango-renderer.c"
16384+ line="876">a `PangoRenderer`</doc>
16385+ <type name="Renderer" c:type="PangoRenderer*"/>
16386+ </parameter>
16387+ <parameter name="part" transfer-ownership="none">
16388+ <doc xml:space="preserve"
16389+ filename="../pango/pango-renderer.c"
16390+ line="877">type of object this rectangle is part of</doc>
16391+ <type name="RenderPart" c:type="PangoRenderPart"/>
16392+ </parameter>
16393+ <parameter name="x" transfer-ownership="none">
16394+ <doc xml:space="preserve"
16395+ filename="../pango/pango-renderer.c"
16396+ line="878">X position at which to draw rectangle, in user space coordinates
16397+ in Pango units</doc>
16398+ <type name="gint" c:type="int"/>
16399+ </parameter>
16400+ <parameter name="y" transfer-ownership="none">
16401+ <doc xml:space="preserve"
16402+ filename="../pango/pango-renderer.c"
16403+ line="880">Y position at which to draw rectangle, in user space coordinates
16404+ in Pango units</doc>
16405+ <type name="gint" c:type="int"/>
16406+ </parameter>
16407+ <parameter name="width" transfer-ownership="none">
16408+ <doc xml:space="preserve"
16409+ filename="../pango/pango-renderer.c"
16410+ line="882">width of rectangle in Pango units</doc>
16411+ <type name="gint" c:type="int"/>
16412+ </parameter>
16413+ <parameter name="height" transfer-ownership="none">
16414+ <doc xml:space="preserve"
16415+ filename="../pango/pango-renderer.c"
16416+ line="883">height of rectangle in Pango units</doc>
16417+ <type name="gint" c:type="int"/>
16418+ </parameter>
16419+ </parameters>
16420+ </callback>
16421+ </field>
16422+ <field name="draw_error_underline">
16423+ <callback name="draw_error_underline">
16424+ <source-position filename="../pango/pango-renderer.h" line="150"/>
16425+ <return-value transfer-ownership="none">
16426+ <type name="none" c:type="void"/>
16427+ </return-value>
16428+ <parameters>
16429+ <parameter name="renderer" transfer-ownership="none">
16430+ <doc xml:space="preserve"
16431+ filename="../pango/pango-renderer.c"
16432+ line="1017">a `PangoRenderer`</doc>
16433+ <type name="Renderer" c:type="PangoRenderer*"/>
16434+ </parameter>
16435+ <parameter name="x" transfer-ownership="none">
16436+ <doc xml:space="preserve"
16437+ filename="../pango/pango-renderer.c"
16438+ line="1018">X coordinate of underline, in Pango units in user coordinate system</doc>
16439+ <type name="gint" c:type="int"/>
16440+ </parameter>
16441+ <parameter name="y" transfer-ownership="none">
16442+ <doc xml:space="preserve"
16443+ filename="../pango/pango-renderer.c"
16444+ line="1019">Y coordinate of underline, in Pango units in user coordinate system</doc>
16445+ <type name="gint" c:type="int"/>
16446+ </parameter>
16447+ <parameter name="width" transfer-ownership="none">
16448+ <doc xml:space="preserve"
16449+ filename="../pango/pango-renderer.c"
16450+ line="1020">width of underline, in Pango units in user coordinate system</doc>
16451+ <type name="gint" c:type="int"/>
16452+ </parameter>
16453+ <parameter name="height" transfer-ownership="none">
16454+ <doc xml:space="preserve"
16455+ filename="../pango/pango-renderer.c"
16456+ line="1021">height of underline, in Pango units in user coordinate system</doc>
16457+ <type name="gint" c:type="int"/>
16458+ </parameter>
16459+ </parameters>
16460+ </callback>
16461+ </field>
16462+ <field name="draw_shape">
16463+ <callback name="draw_shape">
16464+ <source-position filename="../pango/pango-renderer.h" line="155"/>
16465+ <return-value transfer-ownership="none">
16466+ <type name="none" c:type="void"/>
16467+ </return-value>
16468+ <parameters>
16469+ <parameter name="renderer" transfer-ownership="none">
16470+ <type name="Renderer" c:type="PangoRenderer*"/>
16471+ </parameter>
16472+ <parameter name="attr" transfer-ownership="none">
16473+ <type name="AttrShape" c:type="PangoAttrShape*"/>
16474+ </parameter>
16475+ <parameter name="x" transfer-ownership="none">
16476+ <type name="gint" c:type="int"/>
16477+ </parameter>
16478+ <parameter name="y" transfer-ownership="none">
16479+ <type name="gint" c:type="int"/>
16480+ </parameter>
16481+ </parameters>
16482+ </callback>
16483+ </field>
16484+ <field name="draw_trapezoid">
16485+ <callback name="draw_trapezoid">
16486+ <source-position filename="../pango/pango-renderer.h" line="160"/>
16487+ <return-value transfer-ownership="none">
16488+ <type name="none" c:type="void"/>
16489+ </return-value>
16490+ <parameters>
16491+ <parameter name="renderer" transfer-ownership="none">
16492+ <doc xml:space="preserve"
16493+ filename="../pango/pango-renderer.c"
16494+ line="1177">a `PangoRenderer`</doc>
16495+ <type name="Renderer" c:type="PangoRenderer*"/>
16496+ </parameter>
16497+ <parameter name="part" transfer-ownership="none">
16498+ <doc xml:space="preserve"
16499+ filename="../pango/pango-renderer.c"
16500+ line="1178">type of object this trapezoid is part of</doc>
16501+ <type name="RenderPart" c:type="PangoRenderPart"/>
16502+ </parameter>
16503+ <parameter name="y1_" transfer-ownership="none">
16504+ <doc xml:space="preserve"
16505+ filename="../pango/pango-renderer.c"
16506+ line="1179">Y coordinate of top of trapezoid</doc>
16507+ <type name="gdouble" c:type="double"/>
16508+ </parameter>
16509+ <parameter name="x11" transfer-ownership="none">
16510+ <doc xml:space="preserve"
16511+ filename="../pango/pango-renderer.c"
16512+ line="1180">X coordinate of left end of top of trapezoid</doc>
16513+ <type name="gdouble" c:type="double"/>
16514+ </parameter>
16515+ <parameter name="x21" transfer-ownership="none">
16516+ <doc xml:space="preserve"
16517+ filename="../pango/pango-renderer.c"
16518+ line="1181">X coordinate of right end of top of trapezoid</doc>
16519+ <type name="gdouble" c:type="double"/>
16520+ </parameter>
16521+ <parameter name="y2" transfer-ownership="none">
16522+ <doc xml:space="preserve"
16523+ filename="../pango/pango-renderer.c"
16524+ line="1182">Y coordinate of bottom of trapezoid</doc>
16525+ <type name="gdouble" c:type="double"/>
16526+ </parameter>
16527+ <parameter name="x12" transfer-ownership="none">
16528+ <doc xml:space="preserve"
16529+ filename="../pango/pango-renderer.c"
16530+ line="1183">X coordinate of left end of bottom of trapezoid</doc>
16531+ <type name="gdouble" c:type="double"/>
16532+ </parameter>
16533+ <parameter name="x22" transfer-ownership="none">
16534+ <doc xml:space="preserve"
16535+ filename="../pango/pango-renderer.c"
16536+ line="1184">X coordinate of right end of bottom of trapezoid</doc>
16537+ <type name="gdouble" c:type="double"/>
16538+ </parameter>
16539+ </parameters>
16540+ </callback>
16541+ </field>
16542+ <field name="draw_glyph">
16543+ <callback name="draw_glyph">
16544+ <source-position filename="../pango/pango-renderer.h" line="168"/>
16545+ <return-value transfer-ownership="none">
16546+ <type name="none" c:type="void"/>
16547+ </return-value>
16548+ <parameters>
16549+ <parameter name="renderer" transfer-ownership="none">
16550+ <doc xml:space="preserve"
16551+ filename="../pango/pango-renderer.c"
16552+ line="1212">a `PangoRenderer`</doc>
16553+ <type name="Renderer" c:type="PangoRenderer*"/>
16554+ </parameter>
16555+ <parameter name="font" transfer-ownership="none">
16556+ <doc xml:space="preserve"
16557+ filename="../pango/pango-renderer.c"
16558+ line="1213">a `PangoFont`</doc>
16559+ <type name="Font" c:type="PangoFont*"/>
16560+ </parameter>
16561+ <parameter name="glyph" transfer-ownership="none">
16562+ <doc xml:space="preserve"
16563+ filename="../pango/pango-renderer.c"
16564+ line="1214">the glyph index of a single glyph</doc>
16565+ <type name="Glyph" c:type="PangoGlyph"/>
16566+ </parameter>
16567+ <parameter name="x" transfer-ownership="none">
16568+ <doc xml:space="preserve"
16569+ filename="../pango/pango-renderer.c"
16570+ line="1215">X coordinate of left edge of baseline of glyph</doc>
16571+ <type name="gdouble" c:type="double"/>
16572+ </parameter>
16573+ <parameter name="y" transfer-ownership="none">
16574+ <doc xml:space="preserve"
16575+ filename="../pango/pango-renderer.c"
16576+ line="1216">Y coordinate of left edge of baseline of glyph</doc>
16577+ <type name="gdouble" c:type="double"/>
16578+ </parameter>
16579+ </parameters>
16580+ </callback>
16581+ </field>
16582+ <field name="part_changed">
16583+ <callback name="part_changed">
16584+ <source-position filename="../pango/pango-renderer.h" line="174"/>
16585+ <return-value transfer-ownership="none">
16586+ <type name="none" c:type="void"/>
16587+ </return-value>
16588+ <parameters>
16589+ <parameter name="renderer" transfer-ownership="none">
16590+ <doc xml:space="preserve"
16591+ filename="../pango/pango-renderer.c"
16592+ line="1414">a `PangoRenderer`</doc>
16593+ <type name="Renderer" c:type="PangoRenderer*"/>
16594+ </parameter>
16595+ <parameter name="part" transfer-ownership="none">
16596+ <doc xml:space="preserve"
16597+ filename="../pango/pango-renderer.c"
16598+ line="1415">the part for which rendering has changed.</doc>
16599+ <type name="RenderPart" c:type="PangoRenderPart"/>
16600+ </parameter>
16601+ </parameters>
16602+ </callback>
16603+ </field>
16604+ <field name="begin">
16605+ <callback name="begin">
16606+ <source-position filename="../pango/pango-renderer.h" line="177"/>
16607+ <return-value transfer-ownership="none">
16608+ <type name="none" c:type="void"/>
16609+ </return-value>
16610+ <parameters>
16611+ <parameter name="renderer" transfer-ownership="none">
16612+ <type name="Renderer" c:type="PangoRenderer*"/>
16613+ </parameter>
16614+ </parameters>
16615+ </callback>
16616+ </field>
16617+ <field name="end">
16618+ <callback name="end">
16619+ <source-position filename="../pango/pango-renderer.h" line="178"/>
16620+ <return-value transfer-ownership="none">
16621+ <type name="none" c:type="void"/>
16622+ </return-value>
16623+ <parameters>
16624+ <parameter name="renderer" transfer-ownership="none">
16625+ <type name="Renderer" c:type="PangoRenderer*"/>
16626+ </parameter>
16627+ </parameters>
16628+ </callback>
16629+ </field>
16630+ <field name="prepare_run">
16631+ <callback name="prepare_run">
16632+ <source-position filename="../pango/pango-renderer.h" line="180"/>
16633+ <return-value transfer-ownership="none">
16634+ <type name="none" c:type="void"/>
16635+ </return-value>
16636+ <parameters>
16637+ <parameter name="renderer" transfer-ownership="none">
16638+ <type name="Renderer" c:type="PangoRenderer*"/>
16639+ </parameter>
16640+ <parameter name="run" transfer-ownership="none">
16641+ <type name="LayoutRun" c:type="PangoLayoutRun*"/>
16642+ </parameter>
16643+ </parameters>
16644+ </callback>
16645+ </field>
16646+ <field name="draw_glyph_item">
16647+ <callback name="draw_glyph_item">
16648+ <source-position filename="../pango/pango-renderer.h" line="183"/>
16649+ <return-value transfer-ownership="none">
16650+ <type name="none" c:type="void"/>
16651+ </return-value>
16652+ <parameters>
16653+ <parameter name="renderer" transfer-ownership="none">
16654+ <doc xml:space="preserve"
16655+ filename="../pango/pango-renderer.c"
16656+ line="807">a `PangoRenderer`</doc>
16657+ <type name="Renderer" c:type="PangoRenderer*"/>
16658+ </parameter>
16659+ <parameter name="text"
16660+ transfer-ownership="none"
16661+ nullable="1"
16662+ allow-none="1">
16663+ <doc xml:space="preserve"
16664+ filename="../pango/pango-renderer.c"
16665+ line="808">the UTF-8 text that @glyph_item refers to</doc>
16666+ <type name="utf8" c:type="const char*"/>
16667+ </parameter>
16668+ <parameter name="glyph_item" transfer-ownership="none">
16669+ <doc xml:space="preserve"
16670+ filename="../pango/pango-renderer.c"
16671+ line="809">a `PangoGlyphItem`</doc>
16672+ <type name="GlyphItem" c:type="PangoGlyphItem*"/>
16673+ </parameter>
16674+ <parameter name="x" transfer-ownership="none">
16675+ <doc xml:space="preserve"
16676+ filename="../pango/pango-renderer.c"
16677+ line="810">X position of left edge of baseline, in user space coordinates
16678+ in Pango units</doc>
16679+ <type name="gint" c:type="int"/>
16680+ </parameter>
16681+ <parameter name="y" transfer-ownership="none">
16682+ <doc xml:space="preserve"
16683+ filename="../pango/pango-renderer.c"
16684+ line="812">Y position of left edge of baseline, in user space coordinates
16685+ in Pango units</doc>
16686+ <type name="gint" c:type="int"/>
16687+ </parameter>
16688+ </parameters>
16689+ </callback>
16690+ </field>
16691+ <field name="_pango_reserved2" introspectable="0">
16692+ <callback name="_pango_reserved2">
16693+ <source-position filename="../pango/pango-renderer.h" line="192"/>
16694+ <return-value transfer-ownership="none">
16695+ <type name="none" c:type="void"/>
16696+ </return-value>
16697+ </callback>
16698+ </field>
16699+ <field name="_pango_reserved3" introspectable="0">
16700+ <callback name="_pango_reserved3">
16701+ <source-position filename="../pango/pango-renderer.h" line="193"/>
16702+ <return-value transfer-ownership="none">
16703+ <type name="none" c:type="void"/>
16704+ </return-value>
16705+ </callback>
16706+ </field>
16707+ <field name="_pango_reserved4" introspectable="0">
16708+ <callback name="_pango_reserved4">
16709+ <source-position filename="../pango/pango-renderer.h" line="194"/>
16710+ <return-value transfer-ownership="none">
16711+ <type name="none" c:type="void"/>
16712+ </return-value>
16713+ </callback>
16714+ </field>
16715+ </record>
16716+ <record name="RendererPrivate" c:type="PangoRendererPrivate" disguised="1">
16717+ <source-position filename="../pango/pango-renderer.h" line="37"/>
16718+ </record>
16719+ <constant name="SCALE" value="1024" c:type="PANGO_SCALE">
16720+ <doc xml:space="preserve"
16721+ filename="../pango/pango-types.h"
16722+ line="58">The scale between dimensions used for Pango distances and device units.
16723+
16724+The definition of device units is dependent on the output device; it will
16725+typically be pixels for a screen, and points for a printer. %PANGO_SCALE is
16726+currently 1024, but this may be changed in the future.
16727+
16728+When setting font sizes, device units are always considered to be
16729+points (as in "12 point font"), rather than pixels.</doc>
16730+ <source-position filename="../pango/pango-types.h" line="96"/>
16731+ <type name="gint" c:type="gint"/>
16732+ </constant>
16733+ <enumeration name="Script"
16734+ glib:type-name="PangoScript"
16735+ glib:get-type="pango_script_get_type"
16736+ c:type="PangoScript">
16737+ <doc xml:space="preserve"
16738+ filename="../pango/pango-script.h"
16739+ line="37">The `PangoScript` enumeration identifies different writing
16740+systems.
16741+
16742+The values correspond to the names as defined in the Unicode standard. See
16743+[Unicode Standard Annex 24: Script names](http://www.unicode.org/reports/tr24/)
16744+
16745+Note that this enumeration is deprecated and will not be updated to include values
16746+in newer versions of the Unicode standard. Applications should use the
16747+[enum@GLib.UnicodeScript] enumeration instead,
16748+whose values are interchangeable with `PangoScript`.</doc>
16749+ <member name="invalid_code"
16750+ value="-1"
16751+ c:identifier="PANGO_SCRIPT_INVALID_CODE"
16752+ glib:nick="invalid-code"
16753+ glib:name="PANGO_SCRIPT_INVALID_CODE">
16754+ <doc xml:space="preserve"
16755+ filename="../pango/pango-script.h"
16756+ line="39">a value never returned from pango_script_for_unichar()</doc>
16757+ </member>
16758+ <member name="common"
16759+ value="0"
16760+ c:identifier="PANGO_SCRIPT_COMMON"
16761+ glib:nick="common"
16762+ glib:name="PANGO_SCRIPT_COMMON">
16763+ <doc xml:space="preserve"
16764+ filename="../pango/pango-script.h"
16765+ line="40">a character used by multiple different scripts</doc>
16766+ </member>
16767+ <member name="inherited"
16768+ value="1"
16769+ c:identifier="PANGO_SCRIPT_INHERITED"
16770+ glib:nick="inherited"
16771+ glib:name="PANGO_SCRIPT_INHERITED">
16772+ <doc xml:space="preserve"
16773+ filename="../pango/pango-script.h"
16774+ line="41">a mark glyph that takes its script from the
16775+base glyph to which it is attached</doc>
16776+ </member>
16777+ <member name="arabic"
16778+ value="2"
16779+ c:identifier="PANGO_SCRIPT_ARABIC"
16780+ glib:nick="arabic"
16781+ glib:name="PANGO_SCRIPT_ARABIC">
16782+ <doc xml:space="preserve"
16783+ filename="../pango/pango-script.h"
16784+ line="43">Arabic</doc>
16785+ </member>
16786+ <member name="armenian"
16787+ value="3"
16788+ c:identifier="PANGO_SCRIPT_ARMENIAN"
16789+ glib:nick="armenian"
16790+ glib:name="PANGO_SCRIPT_ARMENIAN">
16791+ <doc xml:space="preserve"
16792+ filename="../pango/pango-script.h"
16793+ line="44">Armenian</doc>
16794+ </member>
16795+ <member name="bengali"
16796+ value="4"
16797+ c:identifier="PANGO_SCRIPT_BENGALI"
16798+ glib:nick="bengali"
16799+ glib:name="PANGO_SCRIPT_BENGALI">
16800+ <doc xml:space="preserve"
16801+ filename="../pango/pango-script.h"
16802+ line="45">Bengali</doc>
16803+ </member>
16804+ <member name="bopomofo"
16805+ value="5"
16806+ c:identifier="PANGO_SCRIPT_BOPOMOFO"
16807+ glib:nick="bopomofo"
16808+ glib:name="PANGO_SCRIPT_BOPOMOFO">
16809+ <doc xml:space="preserve"
16810+ filename="../pango/pango-script.h"
16811+ line="46">Bopomofo</doc>
16812+ </member>
16813+ <member name="cherokee"
16814+ value="6"
16815+ c:identifier="PANGO_SCRIPT_CHEROKEE"
16816+ glib:nick="cherokee"
16817+ glib:name="PANGO_SCRIPT_CHEROKEE">
16818+ <doc xml:space="preserve"
16819+ filename="../pango/pango-script.h"
16820+ line="47">Cherokee</doc>
16821+ </member>
16822+ <member name="coptic"
16823+ value="7"
16824+ c:identifier="PANGO_SCRIPT_COPTIC"
16825+ glib:nick="coptic"
16826+ glib:name="PANGO_SCRIPT_COPTIC">
16827+ <doc xml:space="preserve"
16828+ filename="../pango/pango-script.h"
16829+ line="48">Coptic</doc>
16830+ </member>
16831+ <member name="cyrillic"
16832+ value="8"
16833+ c:identifier="PANGO_SCRIPT_CYRILLIC"
16834+ glib:nick="cyrillic"
16835+ glib:name="PANGO_SCRIPT_CYRILLIC">
16836+ <doc xml:space="preserve"
16837+ filename="../pango/pango-script.h"
16838+ line="49">Cyrillic</doc>
16839+ </member>
16840+ <member name="deseret"
16841+ value="9"
16842+ c:identifier="PANGO_SCRIPT_DESERET"
16843+ glib:nick="deseret"
16844+ glib:name="PANGO_SCRIPT_DESERET">
16845+ <doc xml:space="preserve"
16846+ filename="../pango/pango-script.h"
16847+ line="50">Deseret</doc>
16848+ </member>
16849+ <member name="devanagari"
16850+ value="10"
16851+ c:identifier="PANGO_SCRIPT_DEVANAGARI"
16852+ glib:nick="devanagari"
16853+ glib:name="PANGO_SCRIPT_DEVANAGARI">
16854+ <doc xml:space="preserve"
16855+ filename="../pango/pango-script.h"
16856+ line="51">Devanagari</doc>
16857+ </member>
16858+ <member name="ethiopic"
16859+ value="11"
16860+ c:identifier="PANGO_SCRIPT_ETHIOPIC"
16861+ glib:nick="ethiopic"
16862+ glib:name="PANGO_SCRIPT_ETHIOPIC">
16863+ <doc xml:space="preserve"
16864+ filename="../pango/pango-script.h"
16865+ line="52">Ethiopic</doc>
16866+ </member>
16867+ <member name="georgian"
16868+ value="12"
16869+ c:identifier="PANGO_SCRIPT_GEORGIAN"
16870+ glib:nick="georgian"
16871+ glib:name="PANGO_SCRIPT_GEORGIAN">
16872+ <doc xml:space="preserve"
16873+ filename="../pango/pango-script.h"
16874+ line="53">Georgian</doc>
16875+ </member>
16876+ <member name="gothic"
16877+ value="13"
16878+ c:identifier="PANGO_SCRIPT_GOTHIC"
16879+ glib:nick="gothic"
16880+ glib:name="PANGO_SCRIPT_GOTHIC">
16881+ <doc xml:space="preserve"
16882+ filename="../pango/pango-script.h"
16883+ line="54">Gothic</doc>
16884+ </member>
16885+ <member name="greek"
16886+ value="14"
16887+ c:identifier="PANGO_SCRIPT_GREEK"
16888+ glib:nick="greek"
16889+ glib:name="PANGO_SCRIPT_GREEK">
16890+ <doc xml:space="preserve"
16891+ filename="../pango/pango-script.h"
16892+ line="55">Greek</doc>
16893+ </member>
16894+ <member name="gujarati"
16895+ value="15"
16896+ c:identifier="PANGO_SCRIPT_GUJARATI"
16897+ glib:nick="gujarati"
16898+ glib:name="PANGO_SCRIPT_GUJARATI">
16899+ <doc xml:space="preserve"
16900+ filename="../pango/pango-script.h"
16901+ line="56">Gujarati</doc>
16902+ </member>
16903+ <member name="gurmukhi"
16904+ value="16"
16905+ c:identifier="PANGO_SCRIPT_GURMUKHI"
16906+ glib:nick="gurmukhi"
16907+ glib:name="PANGO_SCRIPT_GURMUKHI">
16908+ <doc xml:space="preserve"
16909+ filename="../pango/pango-script.h"
16910+ line="57">Gurmukhi</doc>
16911+ </member>
16912+ <member name="han"
16913+ value="17"
16914+ c:identifier="PANGO_SCRIPT_HAN"
16915+ glib:nick="han"
16916+ glib:name="PANGO_SCRIPT_HAN">
16917+ <doc xml:space="preserve"
16918+ filename="../pango/pango-script.h"
16919+ line="58">Han</doc>
16920+ </member>
16921+ <member name="hangul"
16922+ value="18"
16923+ c:identifier="PANGO_SCRIPT_HANGUL"
16924+ glib:nick="hangul"
16925+ glib:name="PANGO_SCRIPT_HANGUL">
16926+ <doc xml:space="preserve"
16927+ filename="../pango/pango-script.h"
16928+ line="59">Hangul</doc>
16929+ </member>
16930+ <member name="hebrew"
16931+ value="19"
16932+ c:identifier="PANGO_SCRIPT_HEBREW"
16933+ glib:nick="hebrew"
16934+ glib:name="PANGO_SCRIPT_HEBREW">
16935+ <doc xml:space="preserve"
16936+ filename="../pango/pango-script.h"
16937+ line="60">Hebrew</doc>
16938+ </member>
16939+ <member name="hiragana"
16940+ value="20"
16941+ c:identifier="PANGO_SCRIPT_HIRAGANA"
16942+ glib:nick="hiragana"
16943+ glib:name="PANGO_SCRIPT_HIRAGANA">
16944+ <doc xml:space="preserve"
16945+ filename="../pango/pango-script.h"
16946+ line="61">Hiragana</doc>
16947+ </member>
16948+ <member name="kannada"
16949+ value="21"
16950+ c:identifier="PANGO_SCRIPT_KANNADA"
16951+ glib:nick="kannada"
16952+ glib:name="PANGO_SCRIPT_KANNADA">
16953+ <doc xml:space="preserve"
16954+ filename="../pango/pango-script.h"
16955+ line="62">Kannada</doc>
16956+ </member>
16957+ <member name="katakana"
16958+ value="22"
16959+ c:identifier="PANGO_SCRIPT_KATAKANA"
16960+ glib:nick="katakana"
16961+ glib:name="PANGO_SCRIPT_KATAKANA">
16962+ <doc xml:space="preserve"
16963+ filename="../pango/pango-script.h"
16964+ line="63">Katakana</doc>
16965+ </member>
16966+ <member name="khmer"
16967+ value="23"
16968+ c:identifier="PANGO_SCRIPT_KHMER"
16969+ glib:nick="khmer"
16970+ glib:name="PANGO_SCRIPT_KHMER">
16971+ <doc xml:space="preserve"
16972+ filename="../pango/pango-script.h"
16973+ line="64">Khmer</doc>
16974+ </member>
16975+ <member name="lao"
16976+ value="24"
16977+ c:identifier="PANGO_SCRIPT_LAO"
16978+ glib:nick="lao"
16979+ glib:name="PANGO_SCRIPT_LAO">
16980+ <doc xml:space="preserve"
16981+ filename="../pango/pango-script.h"
16982+ line="65">Lao</doc>
16983+ </member>
16984+ <member name="latin"
16985+ value="25"
16986+ c:identifier="PANGO_SCRIPT_LATIN"
16987+ glib:nick="latin"
16988+ glib:name="PANGO_SCRIPT_LATIN">
16989+ <doc xml:space="preserve"
16990+ filename="../pango/pango-script.h"
16991+ line="66">Latin</doc>
16992+ </member>
16993+ <member name="malayalam"
16994+ value="26"
16995+ c:identifier="PANGO_SCRIPT_MALAYALAM"
16996+ glib:nick="malayalam"
16997+ glib:name="PANGO_SCRIPT_MALAYALAM">
16998+ <doc xml:space="preserve"
16999+ filename="../pango/pango-script.h"
17000+ line="67">Malayalam</doc>
17001+ </member>
17002+ <member name="mongolian"
17003+ value="27"
17004+ c:identifier="PANGO_SCRIPT_MONGOLIAN"
17005+ glib:nick="mongolian"
17006+ glib:name="PANGO_SCRIPT_MONGOLIAN">
17007+ <doc xml:space="preserve"
17008+ filename="../pango/pango-script.h"
17009+ line="68">Mongolian</doc>
17010+ </member>
17011+ <member name="myanmar"
17012+ value="28"
17013+ c:identifier="PANGO_SCRIPT_MYANMAR"
17014+ glib:nick="myanmar"
17015+ glib:name="PANGO_SCRIPT_MYANMAR">
17016+ <doc xml:space="preserve"
17017+ filename="../pango/pango-script.h"
17018+ line="69">Myanmar</doc>
17019+ </member>
17020+ <member name="ogham"
17021+ value="29"
17022+ c:identifier="PANGO_SCRIPT_OGHAM"
17023+ glib:nick="ogham"
17024+ glib:name="PANGO_SCRIPT_OGHAM">
17025+ <doc xml:space="preserve"
17026+ filename="../pango/pango-script.h"
17027+ line="70">Ogham</doc>
17028+ </member>
17029+ <member name="old_italic"
17030+ value="30"
17031+ c:identifier="PANGO_SCRIPT_OLD_ITALIC"
17032+ glib:nick="old-italic"
17033+ glib:name="PANGO_SCRIPT_OLD_ITALIC">
17034+ <doc xml:space="preserve"
17035+ filename="../pango/pango-script.h"
17036+ line="71">Old Italic</doc>
17037+ </member>
17038+ <member name="oriya"
17039+ value="31"
17040+ c:identifier="PANGO_SCRIPT_ORIYA"
17041+ glib:nick="oriya"
17042+ glib:name="PANGO_SCRIPT_ORIYA">
17043+ <doc xml:space="preserve"
17044+ filename="../pango/pango-script.h"
17045+ line="72">Oriya</doc>
17046+ </member>
17047+ <member name="runic"
17048+ value="32"
17049+ c:identifier="PANGO_SCRIPT_RUNIC"
17050+ glib:nick="runic"
17051+ glib:name="PANGO_SCRIPT_RUNIC">
17052+ <doc xml:space="preserve"
17053+ filename="../pango/pango-script.h"
17054+ line="73">Runic</doc>
17055+ </member>
17056+ <member name="sinhala"
17057+ value="33"
17058+ c:identifier="PANGO_SCRIPT_SINHALA"
17059+ glib:nick="sinhala"
17060+ glib:name="PANGO_SCRIPT_SINHALA">
17061+ <doc xml:space="preserve"
17062+ filename="../pango/pango-script.h"
17063+ line="74">Sinhala</doc>
17064+ </member>
17065+ <member name="syriac"
17066+ value="34"
17067+ c:identifier="PANGO_SCRIPT_SYRIAC"
17068+ glib:nick="syriac"
17069+ glib:name="PANGO_SCRIPT_SYRIAC">
17070+ <doc xml:space="preserve"
17071+ filename="../pango/pango-script.h"
17072+ line="75">Syriac</doc>
17073+ </member>
17074+ <member name="tamil"
17075+ value="35"
17076+ c:identifier="PANGO_SCRIPT_TAMIL"
17077+ glib:nick="tamil"
17078+ glib:name="PANGO_SCRIPT_TAMIL">
17079+ <doc xml:space="preserve"
17080+ filename="../pango/pango-script.h"
17081+ line="76">Tamil</doc>
17082+ </member>
17083+ <member name="telugu"
17084+ value="36"
17085+ c:identifier="PANGO_SCRIPT_TELUGU"
17086+ glib:nick="telugu"
17087+ glib:name="PANGO_SCRIPT_TELUGU">
17088+ <doc xml:space="preserve"
17089+ filename="../pango/pango-script.h"
17090+ line="77">Telugu</doc>
17091+ </member>
17092+ <member name="thaana"
17093+ value="37"
17094+ c:identifier="PANGO_SCRIPT_THAANA"
17095+ glib:nick="thaana"
17096+ glib:name="PANGO_SCRIPT_THAANA">
17097+ <doc xml:space="preserve"
17098+ filename="../pango/pango-script.h"
17099+ line="78">Thaana</doc>
17100+ </member>
17101+ <member name="thai"
17102+ value="38"
17103+ c:identifier="PANGO_SCRIPT_THAI"
17104+ glib:nick="thai"
17105+ glib:name="PANGO_SCRIPT_THAI">
17106+ <doc xml:space="preserve"
17107+ filename="../pango/pango-script.h"
17108+ line="79">Thai</doc>
17109+ </member>
17110+ <member name="tibetan"
17111+ value="39"
17112+ c:identifier="PANGO_SCRIPT_TIBETAN"
17113+ glib:nick="tibetan"
17114+ glib:name="PANGO_SCRIPT_TIBETAN">
17115+ <doc xml:space="preserve"
17116+ filename="../pango/pango-script.h"
17117+ line="80">Tibetan</doc>
17118+ </member>
17119+ <member name="canadian_aboriginal"
17120+ value="40"
17121+ c:identifier="PANGO_SCRIPT_CANADIAN_ABORIGINAL"
17122+ glib:nick="canadian-aboriginal"
17123+ glib:name="PANGO_SCRIPT_CANADIAN_ABORIGINAL">
17124+ <doc xml:space="preserve"
17125+ filename="../pango/pango-script.h"
17126+ line="81">Canadian Aboriginal</doc>
17127+ </member>
17128+ <member name="yi"
17129+ value="41"
17130+ c:identifier="PANGO_SCRIPT_YI"
17131+ glib:nick="yi"
17132+ glib:name="PANGO_SCRIPT_YI">
17133+ <doc xml:space="preserve"
17134+ filename="../pango/pango-script.h"
17135+ line="82">Yi</doc>
17136+ </member>
17137+ <member name="tagalog"
17138+ value="42"
17139+ c:identifier="PANGO_SCRIPT_TAGALOG"
17140+ glib:nick="tagalog"
17141+ glib:name="PANGO_SCRIPT_TAGALOG">
17142+ <doc xml:space="preserve"
17143+ filename="../pango/pango-script.h"
17144+ line="83">Tagalog</doc>
17145+ </member>
17146+ <member name="hanunoo"
17147+ value="43"
17148+ c:identifier="PANGO_SCRIPT_HANUNOO"
17149+ glib:nick="hanunoo"
17150+ glib:name="PANGO_SCRIPT_HANUNOO">
17151+ <doc xml:space="preserve"
17152+ filename="../pango/pango-script.h"
17153+ line="84">Hanunoo</doc>
17154+ </member>
17155+ <member name="buhid"
17156+ value="44"
17157+ c:identifier="PANGO_SCRIPT_BUHID"
17158+ glib:nick="buhid"
17159+ glib:name="PANGO_SCRIPT_BUHID">
17160+ <doc xml:space="preserve"
17161+ filename="../pango/pango-script.h"
17162+ line="85">Buhid</doc>
17163+ </member>
17164+ <member name="tagbanwa"
17165+ value="45"
17166+ c:identifier="PANGO_SCRIPT_TAGBANWA"
17167+ glib:nick="tagbanwa"
17168+ glib:name="PANGO_SCRIPT_TAGBANWA">
17169+ <doc xml:space="preserve"
17170+ filename="../pango/pango-script.h"
17171+ line="86">Tagbanwa</doc>
17172+ </member>
17173+ <member name="braille"
17174+ value="46"
17175+ c:identifier="PANGO_SCRIPT_BRAILLE"
17176+ glib:nick="braille"
17177+ glib:name="PANGO_SCRIPT_BRAILLE">
17178+ <doc xml:space="preserve"
17179+ filename="../pango/pango-script.h"
17180+ line="87">Braille</doc>
17181+ </member>
17182+ <member name="cypriot"
17183+ value="47"
17184+ c:identifier="PANGO_SCRIPT_CYPRIOT"
17185+ glib:nick="cypriot"
17186+ glib:name="PANGO_SCRIPT_CYPRIOT">
17187+ <doc xml:space="preserve"
17188+ filename="../pango/pango-script.h"
17189+ line="88">Cypriot</doc>
17190+ </member>
17191+ <member name="limbu"
17192+ value="48"
17193+ c:identifier="PANGO_SCRIPT_LIMBU"
17194+ glib:nick="limbu"
17195+ glib:name="PANGO_SCRIPT_LIMBU">
17196+ <doc xml:space="preserve"
17197+ filename="../pango/pango-script.h"
17198+ line="89">Limbu</doc>
17199+ </member>
17200+ <member name="osmanya"
17201+ value="49"
17202+ c:identifier="PANGO_SCRIPT_OSMANYA"
17203+ glib:nick="osmanya"
17204+ glib:name="PANGO_SCRIPT_OSMANYA">
17205+ <doc xml:space="preserve"
17206+ filename="../pango/pango-script.h"
17207+ line="90">Osmanya</doc>
17208+ </member>
17209+ <member name="shavian"
17210+ value="50"
17211+ c:identifier="PANGO_SCRIPT_SHAVIAN"
17212+ glib:nick="shavian"
17213+ glib:name="PANGO_SCRIPT_SHAVIAN">
17214+ <doc xml:space="preserve"
17215+ filename="../pango/pango-script.h"
17216+ line="91">Shavian</doc>
17217+ </member>
17218+ <member name="linear_b"
17219+ value="51"
17220+ c:identifier="PANGO_SCRIPT_LINEAR_B"
17221+ glib:nick="linear-b"
17222+ glib:name="PANGO_SCRIPT_LINEAR_B">
17223+ <doc xml:space="preserve"
17224+ filename="../pango/pango-script.h"
17225+ line="92">Linear B</doc>
17226+ </member>
17227+ <member name="tai_le"
17228+ value="52"
17229+ c:identifier="PANGO_SCRIPT_TAI_LE"
17230+ glib:nick="tai-le"
17231+ glib:name="PANGO_SCRIPT_TAI_LE">
17232+ <doc xml:space="preserve"
17233+ filename="../pango/pango-script.h"
17234+ line="93">Tai Le</doc>
17235+ </member>
17236+ <member name="ugaritic"
17237+ value="53"
17238+ c:identifier="PANGO_SCRIPT_UGARITIC"
17239+ glib:nick="ugaritic"
17240+ glib:name="PANGO_SCRIPT_UGARITIC">
17241+ <doc xml:space="preserve"
17242+ filename="../pango/pango-script.h"
17243+ line="94">Ugaritic</doc>
17244+ </member>
17245+ <member name="new_tai_lue"
17246+ value="54"
17247+ c:identifier="PANGO_SCRIPT_NEW_TAI_LUE"
17248+ glib:nick="new-tai-lue"
17249+ glib:name="PANGO_SCRIPT_NEW_TAI_LUE">
17250+ <doc xml:space="preserve"
17251+ filename="../pango/pango-script.h"
17252+ line="95">New Tai Lue. Since 1.10</doc>
17253+ </member>
17254+ <member name="buginese"
17255+ value="55"
17256+ c:identifier="PANGO_SCRIPT_BUGINESE"
17257+ glib:nick="buginese"
17258+ glib:name="PANGO_SCRIPT_BUGINESE">
17259+ <doc xml:space="preserve"
17260+ filename="../pango/pango-script.h"
17261+ line="96">Buginese. Since 1.10</doc>
17262+ </member>
17263+ <member name="glagolitic"
17264+ value="56"
17265+ c:identifier="PANGO_SCRIPT_GLAGOLITIC"
17266+ glib:nick="glagolitic"
17267+ glib:name="PANGO_SCRIPT_GLAGOLITIC">
17268+ <doc xml:space="preserve"
17269+ filename="../pango/pango-script.h"
17270+ line="97">Glagolitic. Since 1.10</doc>
17271+ </member>
17272+ <member name="tifinagh"
17273+ value="57"
17274+ c:identifier="PANGO_SCRIPT_TIFINAGH"
17275+ glib:nick="tifinagh"
17276+ glib:name="PANGO_SCRIPT_TIFINAGH">
17277+ <doc xml:space="preserve"
17278+ filename="../pango/pango-script.h"
17279+ line="98">Tifinagh. Since 1.10</doc>
17280+ </member>
17281+ <member name="syloti_nagri"
17282+ value="58"
17283+ c:identifier="PANGO_SCRIPT_SYLOTI_NAGRI"
17284+ glib:nick="syloti-nagri"
17285+ glib:name="PANGO_SCRIPT_SYLOTI_NAGRI">
17286+ <doc xml:space="preserve"
17287+ filename="../pango/pango-script.h"
17288+ line="99">Syloti Nagri. Since 1.10</doc>
17289+ </member>
17290+ <member name="old_persian"
17291+ value="59"
17292+ c:identifier="PANGO_SCRIPT_OLD_PERSIAN"
17293+ glib:nick="old-persian"
17294+ glib:name="PANGO_SCRIPT_OLD_PERSIAN">
17295+ <doc xml:space="preserve"
17296+ filename="../pango/pango-script.h"
17297+ line="100">Old Persian. Since 1.10</doc>
17298+ </member>
17299+ <member name="kharoshthi"
17300+ value="60"
17301+ c:identifier="PANGO_SCRIPT_KHAROSHTHI"
17302+ glib:nick="kharoshthi"
17303+ glib:name="PANGO_SCRIPT_KHAROSHTHI">
17304+ <doc xml:space="preserve"
17305+ filename="../pango/pango-script.h"
17306+ line="101">Kharoshthi. Since 1.10</doc>
17307+ </member>
17308+ <member name="unknown"
17309+ value="61"
17310+ c:identifier="PANGO_SCRIPT_UNKNOWN"
17311+ glib:nick="unknown"
17312+ glib:name="PANGO_SCRIPT_UNKNOWN">
17313+ <doc xml:space="preserve"
17314+ filename="../pango/pango-script.h"
17315+ line="102">an unassigned code point. Since 1.14</doc>
17316+ </member>
17317+ <member name="balinese"
17318+ value="62"
17319+ c:identifier="PANGO_SCRIPT_BALINESE"
17320+ glib:nick="balinese"
17321+ glib:name="PANGO_SCRIPT_BALINESE">
17322+ <doc xml:space="preserve"
17323+ filename="../pango/pango-script.h"
17324+ line="103">Balinese. Since 1.14</doc>
17325+ </member>
17326+ <member name="cuneiform"
17327+ value="63"
17328+ c:identifier="PANGO_SCRIPT_CUNEIFORM"
17329+ glib:nick="cuneiform"
17330+ glib:name="PANGO_SCRIPT_CUNEIFORM">
17331+ <doc xml:space="preserve"
17332+ filename="../pango/pango-script.h"
17333+ line="104">Cuneiform. Since 1.14</doc>
17334+ </member>
17335+ <member name="phoenician"
17336+ value="64"
17337+ c:identifier="PANGO_SCRIPT_PHOENICIAN"
17338+ glib:nick="phoenician"
17339+ glib:name="PANGO_SCRIPT_PHOENICIAN">
17340+ <doc xml:space="preserve"
17341+ filename="../pango/pango-script.h"
17342+ line="105">Phoenician. Since 1.14</doc>
17343+ </member>
17344+ <member name="phags_pa"
17345+ value="65"
17346+ c:identifier="PANGO_SCRIPT_PHAGS_PA"
17347+ glib:nick="phags-pa"
17348+ glib:name="PANGO_SCRIPT_PHAGS_PA">
17349+ <doc xml:space="preserve"
17350+ filename="../pango/pango-script.h"
17351+ line="106">Phags-pa. Since 1.14</doc>
17352+ </member>
17353+ <member name="nko"
17354+ value="66"
17355+ c:identifier="PANGO_SCRIPT_NKO"
17356+ glib:nick="nko"
17357+ glib:name="PANGO_SCRIPT_NKO">
17358+ <doc xml:space="preserve"
17359+ filename="../pango/pango-script.h"
17360+ line="107">N'Ko. Since 1.14</doc>
17361+ </member>
17362+ <member name="kayah_li"
17363+ value="67"
17364+ c:identifier="PANGO_SCRIPT_KAYAH_LI"
17365+ glib:nick="kayah-li"
17366+ glib:name="PANGO_SCRIPT_KAYAH_LI">
17367+ <doc xml:space="preserve"
17368+ filename="../pango/pango-script.h"
17369+ line="108">Kayah Li. Since 1.20.1</doc>
17370+ </member>
17371+ <member name="lepcha"
17372+ value="68"
17373+ c:identifier="PANGO_SCRIPT_LEPCHA"
17374+ glib:nick="lepcha"
17375+ glib:name="PANGO_SCRIPT_LEPCHA">
17376+ <doc xml:space="preserve"
17377+ filename="../pango/pango-script.h"
17378+ line="109">Lepcha. Since 1.20.1</doc>
17379+ </member>
17380+ <member name="rejang"
17381+ value="69"
17382+ c:identifier="PANGO_SCRIPT_REJANG"
17383+ glib:nick="rejang"
17384+ glib:name="PANGO_SCRIPT_REJANG">
17385+ <doc xml:space="preserve"
17386+ filename="../pango/pango-script.h"
17387+ line="110">Rejang. Since 1.20.1</doc>
17388+ </member>
17389+ <member name="sundanese"
17390+ value="70"
17391+ c:identifier="PANGO_SCRIPT_SUNDANESE"
17392+ glib:nick="sundanese"
17393+ glib:name="PANGO_SCRIPT_SUNDANESE">
17394+ <doc xml:space="preserve"
17395+ filename="../pango/pango-script.h"
17396+ line="111">Sundanese. Since 1.20.1</doc>
17397+ </member>
17398+ <member name="saurashtra"
17399+ value="71"
17400+ c:identifier="PANGO_SCRIPT_SAURASHTRA"
17401+ glib:nick="saurashtra"
17402+ glib:name="PANGO_SCRIPT_SAURASHTRA">
17403+ <doc xml:space="preserve"
17404+ filename="../pango/pango-script.h"
17405+ line="112">Saurashtra. Since 1.20.1</doc>
17406+ </member>
17407+ <member name="cham"
17408+ value="72"
17409+ c:identifier="PANGO_SCRIPT_CHAM"
17410+ glib:nick="cham"
17411+ glib:name="PANGO_SCRIPT_CHAM">
17412+ <doc xml:space="preserve"
17413+ filename="../pango/pango-script.h"
17414+ line="113">Cham. Since 1.20.1</doc>
17415+ </member>
17416+ <member name="ol_chiki"
17417+ value="73"
17418+ c:identifier="PANGO_SCRIPT_OL_CHIKI"
17419+ glib:nick="ol-chiki"
17420+ glib:name="PANGO_SCRIPT_OL_CHIKI">
17421+ <doc xml:space="preserve"
17422+ filename="../pango/pango-script.h"
17423+ line="114">Ol Chiki. Since 1.20.1</doc>
17424+ </member>
17425+ <member name="vai"
17426+ value="74"
17427+ c:identifier="PANGO_SCRIPT_VAI"
17428+ glib:nick="vai"
17429+ glib:name="PANGO_SCRIPT_VAI">
17430+ <doc xml:space="preserve"
17431+ filename="../pango/pango-script.h"
17432+ line="115">Vai. Since 1.20.1</doc>
17433+ </member>
17434+ <member name="carian"
17435+ value="75"
17436+ c:identifier="PANGO_SCRIPT_CARIAN"
17437+ glib:nick="carian"
17438+ glib:name="PANGO_SCRIPT_CARIAN">
17439+ <doc xml:space="preserve"
17440+ filename="../pango/pango-script.h"
17441+ line="116">Carian. Since 1.20.1</doc>
17442+ </member>
17443+ <member name="lycian"
17444+ value="76"
17445+ c:identifier="PANGO_SCRIPT_LYCIAN"
17446+ glib:nick="lycian"
17447+ glib:name="PANGO_SCRIPT_LYCIAN">
17448+ <doc xml:space="preserve"
17449+ filename="../pango/pango-script.h"
17450+ line="117">Lycian. Since 1.20.1</doc>
17451+ </member>
17452+ <member name="lydian"
17453+ value="77"
17454+ c:identifier="PANGO_SCRIPT_LYDIAN"
17455+ glib:nick="lydian"
17456+ glib:name="PANGO_SCRIPT_LYDIAN">
17457+ <doc xml:space="preserve"
17458+ filename="../pango/pango-script.h"
17459+ line="118">Lydian. Since 1.20.1</doc>
17460+ </member>
17461+ <member name="batak"
17462+ value="78"
17463+ c:identifier="PANGO_SCRIPT_BATAK"
17464+ glib:nick="batak"
17465+ glib:name="PANGO_SCRIPT_BATAK">
17466+ <doc xml:space="preserve"
17467+ filename="../pango/pango-script.h"
17468+ line="119">Batak. Since 1.32</doc>
17469+ </member>
17470+ <member name="brahmi"
17471+ value="79"
17472+ c:identifier="PANGO_SCRIPT_BRAHMI"
17473+ glib:nick="brahmi"
17474+ glib:name="PANGO_SCRIPT_BRAHMI">
17475+ <doc xml:space="preserve"
17476+ filename="../pango/pango-script.h"
17477+ line="120">Brahmi. Since 1.32</doc>
17478+ </member>
17479+ <member name="mandaic"
17480+ value="80"
17481+ c:identifier="PANGO_SCRIPT_MANDAIC"
17482+ glib:nick="mandaic"
17483+ glib:name="PANGO_SCRIPT_MANDAIC">
17484+ <doc xml:space="preserve"
17485+ filename="../pango/pango-script.h"
17486+ line="121">Mandaic. Since 1.32</doc>
17487+ </member>
17488+ <member name="chakma"
17489+ value="81"
17490+ c:identifier="PANGO_SCRIPT_CHAKMA"
17491+ glib:nick="chakma"
17492+ glib:name="PANGO_SCRIPT_CHAKMA">
17493+ <doc xml:space="preserve"
17494+ filename="../pango/pango-script.h"
17495+ line="122">Chakma. Since: 1.32</doc>
17496+ </member>
17497+ <member name="meroitic_cursive"
17498+ value="82"
17499+ c:identifier="PANGO_SCRIPT_MEROITIC_CURSIVE"
17500+ glib:nick="meroitic-cursive"
17501+ glib:name="PANGO_SCRIPT_MEROITIC_CURSIVE">
17502+ <doc xml:space="preserve"
17503+ filename="../pango/pango-script.h"
17504+ line="123">Meroitic Cursive. Since: 1.32</doc>
17505+ </member>
17506+ <member name="meroitic_hieroglyphs"
17507+ value="83"
17508+ c:identifier="PANGO_SCRIPT_MEROITIC_HIEROGLYPHS"
17509+ glib:nick="meroitic-hieroglyphs"
17510+ glib:name="PANGO_SCRIPT_MEROITIC_HIEROGLYPHS">
17511+ <doc xml:space="preserve"
17512+ filename="../pango/pango-script.h"
17513+ line="124">Meroitic Hieroglyphs. Since: 1.32</doc>
17514+ </member>
17515+ <member name="miao"
17516+ value="84"
17517+ c:identifier="PANGO_SCRIPT_MIAO"
17518+ glib:nick="miao"
17519+ glib:name="PANGO_SCRIPT_MIAO">
17520+ <doc xml:space="preserve"
17521+ filename="../pango/pango-script.h"
17522+ line="125">Miao. Since: 1.32</doc>
17523+ </member>
17524+ <member name="sharada"
17525+ value="85"
17526+ c:identifier="PANGO_SCRIPT_SHARADA"
17527+ glib:nick="sharada"
17528+ glib:name="PANGO_SCRIPT_SHARADA">
17529+ <doc xml:space="preserve"
17530+ filename="../pango/pango-script.h"
17531+ line="126">Sharada. Since: 1.32</doc>
17532+ </member>
17533+ <member name="sora_sompeng"
17534+ value="86"
17535+ c:identifier="PANGO_SCRIPT_SORA_SOMPENG"
17536+ glib:nick="sora-sompeng"
17537+ glib:name="PANGO_SCRIPT_SORA_SOMPENG">
17538+ <doc xml:space="preserve"
17539+ filename="../pango/pango-script.h"
17540+ line="127">Sora Sompeng. Since: 1.32</doc>
17541+ </member>
17542+ <member name="takri"
17543+ value="87"
17544+ c:identifier="PANGO_SCRIPT_TAKRI"
17545+ glib:nick="takri"
17546+ glib:name="PANGO_SCRIPT_TAKRI">
17547+ <doc xml:space="preserve"
17548+ filename="../pango/pango-script.h"
17549+ line="128">Takri. Since: 1.32</doc>
17550+ </member>
17551+ <member name="bassa_vah"
17552+ value="88"
17553+ c:identifier="PANGO_SCRIPT_BASSA_VAH"
17554+ glib:nick="bassa-vah"
17555+ glib:name="PANGO_SCRIPT_BASSA_VAH">
17556+ <doc xml:space="preserve"
17557+ filename="../pango/pango-script.h"
17558+ line="129">Bassa. Since: 1.40</doc>
17559+ </member>
17560+ <member name="caucasian_albanian"
17561+ value="89"
17562+ c:identifier="PANGO_SCRIPT_CAUCASIAN_ALBANIAN"
17563+ glib:nick="caucasian-albanian"
17564+ glib:name="PANGO_SCRIPT_CAUCASIAN_ALBANIAN">
17565+ <doc xml:space="preserve"
17566+ filename="../pango/pango-script.h"
17567+ line="130">Caucasian Albanian. Since: 1.40</doc>
17568+ </member>
17569+ <member name="duployan"
17570+ value="90"
17571+ c:identifier="PANGO_SCRIPT_DUPLOYAN"
17572+ glib:nick="duployan"
17573+ glib:name="PANGO_SCRIPT_DUPLOYAN">
17574+ <doc xml:space="preserve"
17575+ filename="../pango/pango-script.h"
17576+ line="131">Duployan. Since: 1.40</doc>
17577+ </member>
17578+ <member name="elbasan"
17579+ value="91"
17580+ c:identifier="PANGO_SCRIPT_ELBASAN"
17581+ glib:nick="elbasan"
17582+ glib:name="PANGO_SCRIPT_ELBASAN">
17583+ <doc xml:space="preserve"
17584+ filename="../pango/pango-script.h"
17585+ line="132">Elbasan. Since: 1.40</doc>
17586+ </member>
17587+ <member name="grantha"
17588+ value="92"
17589+ c:identifier="PANGO_SCRIPT_GRANTHA"
17590+ glib:nick="grantha"
17591+ glib:name="PANGO_SCRIPT_GRANTHA">
17592+ <doc xml:space="preserve"
17593+ filename="../pango/pango-script.h"
17594+ line="133">Grantha. Since: 1.40</doc>
17595+ </member>
17596+ <member name="khojki"
17597+ value="93"
17598+ c:identifier="PANGO_SCRIPT_KHOJKI"
17599+ glib:nick="khojki"
17600+ glib:name="PANGO_SCRIPT_KHOJKI">
17601+ <doc xml:space="preserve"
17602+ filename="../pango/pango-script.h"
17603+ line="134">Kjohki. Since: 1.40</doc>
17604+ </member>
17605+ <member name="khudawadi"
17606+ value="94"
17607+ c:identifier="PANGO_SCRIPT_KHUDAWADI"
17608+ glib:nick="khudawadi"
17609+ glib:name="PANGO_SCRIPT_KHUDAWADI">
17610+ <doc xml:space="preserve"
17611+ filename="../pango/pango-script.h"
17612+ line="135">Khudawadi, Sindhi. Since: 1.40</doc>
17613+ </member>
17614+ <member name="linear_a"
17615+ value="95"
17616+ c:identifier="PANGO_SCRIPT_LINEAR_A"
17617+ glib:nick="linear-a"
17618+ glib:name="PANGO_SCRIPT_LINEAR_A">
17619+ <doc xml:space="preserve"
17620+ filename="../pango/pango-script.h"
17621+ line="136">Linear A. Since: 1.40</doc>
17622+ </member>
17623+ <member name="mahajani"
17624+ value="96"
17625+ c:identifier="PANGO_SCRIPT_MAHAJANI"
17626+ glib:nick="mahajani"
17627+ glib:name="PANGO_SCRIPT_MAHAJANI">
17628+ <doc xml:space="preserve"
17629+ filename="../pango/pango-script.h"
17630+ line="137">Mahajani. Since: 1.40</doc>
17631+ </member>
17632+ <member name="manichaean"
17633+ value="97"
17634+ c:identifier="PANGO_SCRIPT_MANICHAEAN"
17635+ glib:nick="manichaean"
17636+ glib:name="PANGO_SCRIPT_MANICHAEAN">
17637+ <doc xml:space="preserve"
17638+ filename="../pango/pango-script.h"
17639+ line="138">Manichaean. Since: 1.40</doc>
17640+ </member>
17641+ <member name="mende_kikakui"
17642+ value="98"
17643+ c:identifier="PANGO_SCRIPT_MENDE_KIKAKUI"
17644+ glib:nick="mende-kikakui"
17645+ glib:name="PANGO_SCRIPT_MENDE_KIKAKUI">
17646+ <doc xml:space="preserve"
17647+ filename="../pango/pango-script.h"
17648+ line="139">Mende Kikakui. Since: 1.40</doc>
17649+ </member>
17650+ <member name="modi"
17651+ value="99"
17652+ c:identifier="PANGO_SCRIPT_MODI"
17653+ glib:nick="modi"
17654+ glib:name="PANGO_SCRIPT_MODI">
17655+ <doc xml:space="preserve"
17656+ filename="../pango/pango-script.h"
17657+ line="140">Modi. Since: 1.40</doc>
17658+ </member>
17659+ <member name="mro"
17660+ value="100"
17661+ c:identifier="PANGO_SCRIPT_MRO"
17662+ glib:nick="mro"
17663+ glib:name="PANGO_SCRIPT_MRO">
17664+ <doc xml:space="preserve"
17665+ filename="../pango/pango-script.h"
17666+ line="141">Mro. Since: 1.40</doc>
17667+ </member>
17668+ <member name="nabataean"
17669+ value="101"
17670+ c:identifier="PANGO_SCRIPT_NABATAEAN"
17671+ glib:nick="nabataean"
17672+ glib:name="PANGO_SCRIPT_NABATAEAN">
17673+ <doc xml:space="preserve"
17674+ filename="../pango/pango-script.h"
17675+ line="142">Nabataean. Since: 1.40</doc>
17676+ </member>
17677+ <member name="old_north_arabian"
17678+ value="102"
17679+ c:identifier="PANGO_SCRIPT_OLD_NORTH_ARABIAN"
17680+ glib:nick="old-north-arabian"
17681+ glib:name="PANGO_SCRIPT_OLD_NORTH_ARABIAN">
17682+ <doc xml:space="preserve"
17683+ filename="../pango/pango-script.h"
17684+ line="143">Old North Arabian. Since: 1.40</doc>
17685+ </member>
17686+ <member name="old_permic"
17687+ value="103"
17688+ c:identifier="PANGO_SCRIPT_OLD_PERMIC"
17689+ glib:nick="old-permic"
17690+ glib:name="PANGO_SCRIPT_OLD_PERMIC">
17691+ <doc xml:space="preserve"
17692+ filename="../pango/pango-script.h"
17693+ line="144">Old Permic. Since: 1.40</doc>
17694+ </member>
17695+ <member name="pahawh_hmong"
17696+ value="104"
17697+ c:identifier="PANGO_SCRIPT_PAHAWH_HMONG"
17698+ glib:nick="pahawh-hmong"
17699+ glib:name="PANGO_SCRIPT_PAHAWH_HMONG">
17700+ <doc xml:space="preserve"
17701+ filename="../pango/pango-script.h"
17702+ line="145">Pahawh Hmong. Since: 1.40</doc>
17703+ </member>
17704+ <member name="palmyrene"
17705+ value="105"
17706+ c:identifier="PANGO_SCRIPT_PALMYRENE"
17707+ glib:nick="palmyrene"
17708+ glib:name="PANGO_SCRIPT_PALMYRENE">
17709+ <doc xml:space="preserve"
17710+ filename="../pango/pango-script.h"
17711+ line="146">Palmyrene. Since: 1.40</doc>
17712+ </member>
17713+ <member name="pau_cin_hau"
17714+ value="106"
17715+ c:identifier="PANGO_SCRIPT_PAU_CIN_HAU"
17716+ glib:nick="pau-cin-hau"
17717+ glib:name="PANGO_SCRIPT_PAU_CIN_HAU">
17718+ <doc xml:space="preserve"
17719+ filename="../pango/pango-script.h"
17720+ line="147">Pau Cin Hau. Since: 1.40</doc>
17721+ </member>
17722+ <member name="psalter_pahlavi"
17723+ value="107"
17724+ c:identifier="PANGO_SCRIPT_PSALTER_PAHLAVI"
17725+ glib:nick="psalter-pahlavi"
17726+ glib:name="PANGO_SCRIPT_PSALTER_PAHLAVI">
17727+ <doc xml:space="preserve"
17728+ filename="../pango/pango-script.h"
17729+ line="148">Psalter Pahlavi. Since: 1.40</doc>
17730+ </member>
17731+ <member name="siddham"
17732+ value="108"
17733+ c:identifier="PANGO_SCRIPT_SIDDHAM"
17734+ glib:nick="siddham"
17735+ glib:name="PANGO_SCRIPT_SIDDHAM">
17736+ <doc xml:space="preserve"
17737+ filename="../pango/pango-script.h"
17738+ line="149">Siddham. Since: 1.40</doc>
17739+ </member>
17740+ <member name="tirhuta"
17741+ value="109"
17742+ c:identifier="PANGO_SCRIPT_TIRHUTA"
17743+ glib:nick="tirhuta"
17744+ glib:name="PANGO_SCRIPT_TIRHUTA">
17745+ <doc xml:space="preserve"
17746+ filename="../pango/pango-script.h"
17747+ line="150">Tirhuta. Since: 1.40</doc>
17748+ </member>
17749+ <member name="warang_citi"
17750+ value="110"
17751+ c:identifier="PANGO_SCRIPT_WARANG_CITI"
17752+ glib:nick="warang-citi"
17753+ glib:name="PANGO_SCRIPT_WARANG_CITI">
17754+ <doc xml:space="preserve"
17755+ filename="../pango/pango-script.h"
17756+ line="151">Warang Citi. Since: 1.40</doc>
17757+ </member>
17758+ <member name="ahom"
17759+ value="111"
17760+ c:identifier="PANGO_SCRIPT_AHOM"
17761+ glib:nick="ahom"
17762+ glib:name="PANGO_SCRIPT_AHOM">
17763+ <doc xml:space="preserve"
17764+ filename="../pango/pango-script.h"
17765+ line="152">Ahom. Since: 1.40</doc>
17766+ </member>
17767+ <member name="anatolian_hieroglyphs"
17768+ value="112"
17769+ c:identifier="PANGO_SCRIPT_ANATOLIAN_HIEROGLYPHS"
17770+ glib:nick="anatolian-hieroglyphs"
17771+ glib:name="PANGO_SCRIPT_ANATOLIAN_HIEROGLYPHS">
17772+ <doc xml:space="preserve"
17773+ filename="../pango/pango-script.h"
17774+ line="153">Anatolian Hieroglyphs. Since: 1.40</doc>
17775+ </member>
17776+ <member name="hatran"
17777+ value="113"
17778+ c:identifier="PANGO_SCRIPT_HATRAN"
17779+ glib:nick="hatran"
17780+ glib:name="PANGO_SCRIPT_HATRAN">
17781+ <doc xml:space="preserve"
17782+ filename="../pango/pango-script.h"
17783+ line="154">Hatran. Since: 1.40</doc>
17784+ </member>
17785+ <member name="multani"
17786+ value="114"
17787+ c:identifier="PANGO_SCRIPT_MULTANI"
17788+ glib:nick="multani"
17789+ glib:name="PANGO_SCRIPT_MULTANI">
17790+ <doc xml:space="preserve"
17791+ filename="../pango/pango-script.h"
17792+ line="155">Multani. Since: 1.40</doc>
17793+ </member>
17794+ <member name="old_hungarian"
17795+ value="115"
17796+ c:identifier="PANGO_SCRIPT_OLD_HUNGARIAN"
17797+ glib:nick="old-hungarian"
17798+ glib:name="PANGO_SCRIPT_OLD_HUNGARIAN">
17799+ <doc xml:space="preserve"
17800+ filename="../pango/pango-script.h"
17801+ line="156">Old Hungarian. Since: 1.40</doc>
17802+ </member>
17803+ <member name="signwriting"
17804+ value="116"
17805+ c:identifier="PANGO_SCRIPT_SIGNWRITING"
17806+ glib:nick="signwriting"
17807+ glib:name="PANGO_SCRIPT_SIGNWRITING">
17808+ <doc xml:space="preserve"
17809+ filename="../pango/pango-script.h"
17810+ line="157">Signwriting. Since: 1.40</doc>
17811+ </member>
17812+ <function name="for_unichar"
17813+ c:identifier="pango_script_for_unichar"
17814+ version="1.4"
17815+ deprecated="1"
17816+ deprecated-version="1.44.">
17817+ <doc xml:space="preserve"
17818+ filename="../pango/pango-script.c"
17819+ line="63">Looks up the script for a particular character.
17820+
17821+The script of a character is defined by
17822+[Unicode Standard Annex 24: Script names](http://www.unicode.org/reports/tr24/).
17823+
17824+No check is made for @ch being a valid Unicode character; if you pass
17825+in invalid character, the result is undefined.
17826+
17827+Note that while the return type of this function is declared
17828+as `PangoScript`, as of Pango 1.18, this function simply returns
17829+the return value of [func@GLib.unichar_get_script]. Callers must be
17830+prepared to handle unknown values.</doc>
17831+ <doc-deprecated xml:space="preserve">Use g_unichar_get_script()</doc-deprecated>
17832+ <source-position filename="../pango/pango-script.h" line="310"/>
17833+ <return-value transfer-ownership="none">
17834+ <doc xml:space="preserve"
17835+ filename="../pango/pango-script.c"
17836+ line="80">the `PangoScript` for the character.</doc>
17837+ <type name="Script" c:type="PangoScript"/>
17838+ </return-value>
17839+ <parameters>
17840+ <parameter name="ch" transfer-ownership="none">
17841+ <doc xml:space="preserve"
17842+ filename="../pango/pango-script.c"
17843+ line="65">a Unicode character</doc>
17844+ <type name="gunichar" c:type="gunichar"/>
17845+ </parameter>
17846+ </parameters>
17847+ </function>
17848+ <function name="get_sample_language"
17849+ c:identifier="pango_script_get_sample_language"
17850+ version="1.4">
17851+ <doc xml:space="preserve"
17852+ filename="../pango/pango-language.c"
17853+ line="870">Finds a language tag that is reasonably representative of @script.
17854+
17855+The language will usually be the most widely spoken or used language
17856+written in that script: for instance, the sample language for
17857+%PANGO_SCRIPT_CYRILLIC is ru (Russian), the sample language for
17858+%PANGO_SCRIPT_ARABIC is ar.
17859+
17860+For some scripts, no sample language will be returned because
17861+there is no language that is sufficiently representative. The
17862+best example of this is %PANGO_SCRIPT_HAN, where various different
17863+variants of written Chinese, Japanese, and Korean all use
17864+significantly different sets of Han characters and forms
17865+of shared characters. No sample language can be provided
17866+for many historical scripts as well.
17867+
17868+As of 1.18, this function checks the environment variables
17869+`PANGO_LANGUAGE` and `LANGUAGE` (checked in that order) first.
17870+If one of them is set, it is parsed as a list of language tags
17871+separated by colons or other separators. This function
17872+will return the first language in the parsed list that Pango
17873+believes may use @script for writing. This last predicate
17874+is tested using [method@Pango.Language.includes_script]. This can
17875+be used to control Pango's font selection for non-primary
17876+languages. For example, a `PANGO_LANGUAGE` enviroment variable
17877+set to "en:fa" makes Pango choose fonts suitable for Persian (fa)
17878+instead of Arabic (ar) when a segment of Arabic text is found
17879+in an otherwise non-Arabic text. The same trick can be used to
17880+choose a default language for %PANGO_SCRIPT_HAN when setting
17881+context language is not feasible.</doc>
17882+ <source-position filename="../pango/pango-script.h" line="331"/>
17883+ <return-value transfer-ownership="full" nullable="1">
17884+ <doc xml:space="preserve"
17885+ filename="../pango/pango-language.c"
17886+ line="904">a `PangoLanguage` that is representative
17887+ of the script</doc>
17888+ <type name="Language" c:type="PangoLanguage*"/>
17889+ </return-value>
17890+ <parameters>
17891+ <parameter name="script" transfer-ownership="none">
17892+ <doc xml:space="preserve"
17893+ filename="../pango/pango-language.c"
17894+ line="872">a `PangoScript`</doc>
17895+ <type name="Script" c:type="PangoScript"/>
17896+ </parameter>
17897+ </parameters>
17898+ </function>
17899+ </enumeration>
17900+ <record name="ScriptIter"
17901+ c:type="PangoScriptIter"
17902+ glib:type-name="PangoScriptIter"
17903+ glib:get-type="pango_script_iter_get_type"
17904+ c:symbol-prefix="script_iter">
17905+ <doc xml:space="preserve"
17906+ filename="../pango/pango-script.h"
17907+ line="29">A `PangoScriptIter` is used to iterate through a string
17908+and identify ranges in different scripts.</doc>
17909+ <source-position filename="../pango/pango-script.h" line="35"/>
17910+ <constructor name="new"
17911+ c:identifier="pango_script_iter_new"
17912+ version="1.4">
17913+ <doc xml:space="preserve"
17914+ filename="../pango/pango-script.c"
17915+ line="122">Create a new `PangoScriptIter`, used to break a string of
17916+Unicode text into runs by Unicode script.
17917+
17918+No copy is made of @text, so the caller needs to make
17919+sure it remains valid until the iterator is freed with
17920+[method@Pango.ScriptIter.free].</doc>
17921+ <source-position filename="../pango/pango-script.h" line="316"/>
17922+ <return-value transfer-ownership="full">
17923+ <doc xml:space="preserve"
17924+ filename="../pango/pango-script.c"
17925+ line="134">the new script iterator, initialized
17926+ to point at the first range in the text, which should be
17927+ freed with [method@Pango.ScriptIter.free]. If the string is
17928+ empty, it will point at an empty range.</doc>
17929+ <type name="ScriptIter" c:type="PangoScriptIter*"/>
17930+ </return-value>
17931+ <parameters>
17932+ <parameter name="text" transfer-ownership="none">
17933+ <doc xml:space="preserve"
17934+ filename="../pango/pango-script.c"
17935+ line="124">a UTF-8 string</doc>
17936+ <type name="utf8" c:type="const char*"/>
17937+ </parameter>
17938+ <parameter name="length" transfer-ownership="none">
17939+ <doc xml:space="preserve"
17940+ filename="../pango/pango-script.c"
17941+ line="125">length of @text, or -1 if @text is nul-terminated</doc>
17942+ <type name="gint" c:type="int"/>
17943+ </parameter>
17944+ </parameters>
17945+ </constructor>
17946+ <method name="free" c:identifier="pango_script_iter_free" version="1.4">
17947+ <doc xml:space="preserve"
17948+ filename="../pango/pango-script.c"
17949+ line="159">Frees a `PangoScriptIter`.</doc>
17950+ <source-position filename="../pango/pango-script.h" line="326"/>
17951+ <return-value transfer-ownership="none">
17952+ <type name="none" c:type="void"/>
17953+ </return-value>
17954+ <parameters>
17955+ <instance-parameter name="iter" transfer-ownership="none">
17956+ <doc xml:space="preserve"
17957+ filename="../pango/pango-script.c"
17958+ line="161">a `PangoScriptIter`</doc>
17959+ <type name="ScriptIter" c:type="PangoScriptIter*"/>
17960+ </instance-parameter>
17961+ </parameters>
17962+ </method>
17963+ <method name="get_range"
17964+ c:identifier="pango_script_iter_get_range"
17965+ version="1.4">
17966+ <doc xml:space="preserve"
17967+ filename="../pango/pango-script.c"
17968+ line="174">Gets information about the range to which @iter currently points.
17969+
17970+The range is the set of locations p where *start &lt;= p &lt; *end.
17971+(That is, it doesn't include the character stored at *end)
17972+
17973+Note that while the type of the @script argument is declared
17974+as `PangoScript`, as of Pango 1.18, this function simply returns
17975+`GUnicodeScript` values. Callers must be prepared to handle unknown
17976+values.</doc>
17977+ <source-position filename="../pango/pango-script.h" line="319"/>
17978+ <return-value transfer-ownership="none">
17979+ <type name="none" c:type="void"/>
17980+ </return-value>
17981+ <parameters>
17982+ <instance-parameter name="iter" transfer-ownership="none">
17983+ <doc xml:space="preserve"
17984+ filename="../pango/pango-script.c"
17985+ line="176">a `PangoScriptIter`</doc>
17986+ <type name="ScriptIter" c:type="PangoScriptIter*"/>
17987+ </instance-parameter>
17988+ <parameter name="start"
17989+ direction="out"
17990+ caller-allocates="0"
17991+ transfer-ownership="full"
17992+ optional="1"
17993+ allow-none="1">
17994+ <doc xml:space="preserve"
17995+ filename="../pango/pango-script.c"
17996+ line="177">location to store start position of the range</doc>
17997+ <type name="utf8" c:type="const char**"/>
17998+ </parameter>
17999+ <parameter name="end"
18000+ direction="out"
18001+ caller-allocates="0"
18002+ transfer-ownership="full"
18003+ optional="1"
18004+ allow-none="1">
18005+ <doc xml:space="preserve"
18006+ filename="../pango/pango-script.c"
18007+ line="178">location to store end position of the range</doc>
18008+ <type name="utf8" c:type="const char**"/>
18009+ </parameter>
18010+ <parameter name="script"
18011+ direction="out"
18012+ caller-allocates="0"
18013+ transfer-ownership="full"
18014+ optional="1"
18015+ allow-none="1">
18016+ <doc xml:space="preserve"
18017+ filename="../pango/pango-script.c"
18018+ line="179">location to store script for range</doc>
18019+ <type name="Script" c:type="PangoScript*"/>
18020+ </parameter>
18021+ </parameters>
18022+ </method>
18023+ <method name="next" c:identifier="pango_script_iter_next" version="1.4">
18024+ <doc xml:space="preserve"
18025+ filename="../pango/pango-script.c"
18026+ line="298">Advances a `PangoScriptIter` to the next range.
18027+
18028+If @iter is already at the end, it is left unchanged
18029+and %FALSE is returned.</doc>
18030+ <source-position filename="../pango/pango-script.h" line="324"/>
18031+ <return-value transfer-ownership="none">
18032+ <doc xml:space="preserve"
18033+ filename="../pango/pango-script.c"
18034+ line="307">%TRUE if @iter was successfully advanced</doc>
18035+ <type name="gboolean" c:type="gboolean"/>
18036+ </return-value>
18037+ <parameters>
18038+ <instance-parameter name="iter" transfer-ownership="none">
18039+ <doc xml:space="preserve"
18040+ filename="../pango/pango-script.c"
18041+ line="300">a `PangoScriptIter`</doc>
18042+ <type name="ScriptIter" c:type="PangoScriptIter*"/>
18043+ </instance-parameter>
18044+ </parameters>
18045+ </method>
18046+ </record>
18047+ <bitfield name="ShapeFlags"
18048+ version="1.44"
18049+ glib:type-name="PangoShapeFlags"
18050+ glib:get-type="pango_shape_flags_get_type"
18051+ c:type="PangoShapeFlags">
18052+ <doc xml:space="preserve"
18053+ filename="../pango/pango-glyph.h"
18054+ line="218">Flags influencing the shaping process.
18055+
18056+`PangoShapeFlags` can be passed to [func@Pango.shape_with_flags].</doc>
18057+ <member name="none"
18058+ value="0"
18059+ c:identifier="PANGO_SHAPE_NONE"
18060+ glib:nick="none"
18061+ glib:name="PANGO_SHAPE_NONE">
18062+ <doc xml:space="preserve"
18063+ filename="../pango/pango-glyph.h"
18064+ line="220">Default value</doc>
18065+ </member>
18066+ <member name="round_positions"
18067+ value="1"
18068+ c:identifier="PANGO_SHAPE_ROUND_POSITIONS"
18069+ glib:nick="round-positions"
18070+ glib:name="PANGO_SHAPE_ROUND_POSITIONS">
18071+ <doc xml:space="preserve"
18072+ filename="../pango/pango-glyph.h"
18073+ line="221">Round glyph positions and widths to whole device units
18074+ This option should be set if the target renderer can't do subpixel positioning of glyphs</doc>
18075+ </member>
18076+ </bitfield>
18077+ <bitfield name="ShowFlags"
18078+ version="1.44"
18079+ glib:type-name="PangoShowFlags"
18080+ glib:get-type="pango_show_flags_get_type"
18081+ c:type="PangoShowFlags">
18082+ <doc xml:space="preserve"
18083+ filename="../pango/pango-attributes.h"
18084+ line="194">These flags affect how Pango treats characters that are normally
18085+not visible in the output.</doc>
18086+ <member name="none"
18087+ value="0"
18088+ c:identifier="PANGO_SHOW_NONE"
18089+ glib:nick="none"
18090+ glib:name="PANGO_SHOW_NONE">
18091+ <doc xml:space="preserve"
18092+ filename="../pango/pango-attributes.h"
18093+ line="196">No special treatment for invisible characters</doc>
18094+ </member>
18095+ <member name="spaces"
18096+ value="1"
18097+ c:identifier="PANGO_SHOW_SPACES"
18098+ glib:nick="spaces"
18099+ glib:name="PANGO_SHOW_SPACES">
18100+ <doc xml:space="preserve"
18101+ filename="../pango/pango-attributes.h"
18102+ line="197">Render spaces, tabs and newlines visibly</doc>
18103+ </member>
18104+ <member name="line_breaks"
18105+ value="2"
18106+ c:identifier="PANGO_SHOW_LINE_BREAKS"
18107+ glib:nick="line-breaks"
18108+ glib:name="PANGO_SHOW_LINE_BREAKS">
18109+ <doc xml:space="preserve"
18110+ filename="../pango/pango-attributes.h"
18111+ line="198">Render line breaks visibly</doc>
18112+ </member>
18113+ <member name="ignorables"
18114+ value="4"
18115+ c:identifier="PANGO_SHOW_IGNORABLES"
18116+ glib:nick="ignorables"
18117+ glib:name="PANGO_SHOW_IGNORABLES">
18118+ <doc xml:space="preserve"
18119+ filename="../pango/pango-attributes.h"
18120+ line="199">Render default-ignorable Unicode
18121+ characters visibly</doc>
18122+ </member>
18123+ </bitfield>
18124+ <enumeration name="Stretch"
18125+ glib:type-name="PangoStretch"
18126+ glib:get-type="pango_stretch_get_type"
18127+ c:type="PangoStretch">
18128+ <doc xml:space="preserve"
18129+ filename="../pango/pango-font.h"
18130+ line="148">An enumeration specifying the width of the font relative to other designs
18131+within a family.</doc>
18132+ <member name="ultra_condensed"
18133+ value="0"
18134+ c:identifier="PANGO_STRETCH_ULTRA_CONDENSED"
18135+ glib:nick="ultra-condensed"
18136+ glib:name="PANGO_STRETCH_ULTRA_CONDENSED">
18137+ <doc xml:space="preserve"
18138+ filename="../pango/pango-font.h"
18139+ line="150">ultra condensed width</doc>
18140+ </member>
18141+ <member name="extra_condensed"
18142+ value="1"
18143+ c:identifier="PANGO_STRETCH_EXTRA_CONDENSED"
18144+ glib:nick="extra-condensed"
18145+ glib:name="PANGO_STRETCH_EXTRA_CONDENSED">
18146+ <doc xml:space="preserve"
18147+ filename="../pango/pango-font.h"
18148+ line="151">extra condensed width</doc>
18149+ </member>
18150+ <member name="condensed"
18151+ value="2"
18152+ c:identifier="PANGO_STRETCH_CONDENSED"
18153+ glib:nick="condensed"
18154+ glib:name="PANGO_STRETCH_CONDENSED">
18155+ <doc xml:space="preserve"
18156+ filename="../pango/pango-font.h"
18157+ line="152">condensed width</doc>
18158+ </member>
18159+ <member name="semi_condensed"
18160+ value="3"
18161+ c:identifier="PANGO_STRETCH_SEMI_CONDENSED"
18162+ glib:nick="semi-condensed"
18163+ glib:name="PANGO_STRETCH_SEMI_CONDENSED">
18164+ <doc xml:space="preserve"
18165+ filename="../pango/pango-font.h"
18166+ line="153">semi condensed width</doc>
18167+ </member>
18168+ <member name="normal"
18169+ value="4"
18170+ c:identifier="PANGO_STRETCH_NORMAL"
18171+ glib:nick="normal"
18172+ glib:name="PANGO_STRETCH_NORMAL">
18173+ <doc xml:space="preserve"
18174+ filename="../pango/pango-font.h"
18175+ line="154">the normal width</doc>
18176+ </member>
18177+ <member name="semi_expanded"
18178+ value="5"
18179+ c:identifier="PANGO_STRETCH_SEMI_EXPANDED"
18180+ glib:nick="semi-expanded"
18181+ glib:name="PANGO_STRETCH_SEMI_EXPANDED">
18182+ <doc xml:space="preserve"
18183+ filename="../pango/pango-font.h"
18184+ line="155">semi expanded width</doc>
18185+ </member>
18186+ <member name="expanded"
18187+ value="6"
18188+ c:identifier="PANGO_STRETCH_EXPANDED"
18189+ glib:nick="expanded"
18190+ glib:name="PANGO_STRETCH_EXPANDED">
18191+ <doc xml:space="preserve"
18192+ filename="../pango/pango-font.h"
18193+ line="156">expanded width</doc>
18194+ </member>
18195+ <member name="extra_expanded"
18196+ value="7"
18197+ c:identifier="PANGO_STRETCH_EXTRA_EXPANDED"
18198+ glib:nick="extra-expanded"
18199+ glib:name="PANGO_STRETCH_EXTRA_EXPANDED">
18200+ <doc xml:space="preserve"
18201+ filename="../pango/pango-font.h"
18202+ line="157">extra expanded width</doc>
18203+ </member>
18204+ <member name="ultra_expanded"
18205+ value="8"
18206+ c:identifier="PANGO_STRETCH_ULTRA_EXPANDED"
18207+ glib:nick="ultra-expanded"
18208+ glib:name="PANGO_STRETCH_ULTRA_EXPANDED">
18209+ <doc xml:space="preserve"
18210+ filename="../pango/pango-font.h"
18211+ line="158">ultra expanded width</doc>
18212+ </member>
18213+ </enumeration>
18214+ <enumeration name="Style"
18215+ glib:type-name="PangoStyle"
18216+ glib:get-type="pango_style_get_type"
18217+ c:type="PangoStyle">
18218+ <doc xml:space="preserve"
18219+ filename="../pango/pango-font.h"
18220+ line="66">An enumeration specifying the various slant styles possible for a font.</doc>
18221+ <member name="normal"
18222+ value="0"
18223+ c:identifier="PANGO_STYLE_NORMAL"
18224+ glib:nick="normal"
18225+ glib:name="PANGO_STYLE_NORMAL">
18226+ <doc xml:space="preserve"
18227+ filename="../pango/pango-font.h"
18228+ line="68">the font is upright.</doc>
18229+ </member>
18230+ <member name="oblique"
18231+ value="1"
18232+ c:identifier="PANGO_STYLE_OBLIQUE"
18233+ glib:nick="oblique"
18234+ glib:name="PANGO_STYLE_OBLIQUE">
18235+ <doc xml:space="preserve"
18236+ filename="../pango/pango-font.h"
18237+ line="69">the font is slanted, but in a roman style.</doc>
18238+ </member>
18239+ <member name="italic"
18240+ value="2"
18241+ c:identifier="PANGO_STYLE_ITALIC"
18242+ glib:nick="italic"
18243+ glib:name="PANGO_STYLE_ITALIC">
18244+ <doc xml:space="preserve"
18245+ filename="../pango/pango-font.h"
18246+ line="70">the font is slanted in an italic style.</doc>
18247+ </member>
18248+ </enumeration>
18249+ <enumeration name="TabAlign"
18250+ glib:type-name="PangoTabAlign"
18251+ glib:get-type="pango_tab_align_get_type"
18252+ c:type="PangoTabAlign">
18253+ <doc xml:space="preserve"
18254+ filename="../pango/pango-tabs.h"
18255+ line="31">`PangoTabAlign` specifies where the text appears relative to the tab stop
18256+position.
18257+
18258+Support for tab alignments other than %PANGO_TAB_LEFT was added
18259+in Pango 1.50.</doc>
18260+ <member name="left"
18261+ value="0"
18262+ c:identifier="PANGO_TAB_LEFT"
18263+ glib:nick="left"
18264+ glib:name="PANGO_TAB_LEFT">
18265+ <doc xml:space="preserve"
18266+ filename="../pango/pango-tabs.h"
18267+ line="33">the text appears to the right of the tab stop position</doc>
18268+ </member>
18269+ <member name="right"
18270+ value="1"
18271+ c:identifier="PANGO_TAB_RIGHT"
18272+ glib:nick="right"
18273+ glib:name="PANGO_TAB_RIGHT">
18274+ <doc xml:space="preserve"
18275+ filename="../pango/pango-tabs.h"
18276+ line="34">the text appears to the left of the tab stop position
18277+ until the available space is filled</doc>
18278+ </member>
18279+ <member name="center"
18280+ value="2"
18281+ c:identifier="PANGO_TAB_CENTER"
18282+ glib:nick="center"
18283+ glib:name="PANGO_TAB_CENTER">
18284+ <doc xml:space="preserve"
18285+ filename="../pango/pango-tabs.h"
18286+ line="36">the text is centered at the tab stop position
18287+ until the available space is filled</doc>
18288+ </member>
18289+ <member name="decimal"
18290+ value="3"
18291+ c:identifier="PANGO_TAB_DECIMAL"
18292+ glib:nick="decimal"
18293+ glib:name="PANGO_TAB_DECIMAL">
18294+ <doc xml:space="preserve"
18295+ filename="../pango/pango-tabs.h"
18296+ line="38">text before the first occurrence of the decimal point
18297+ character appears to the left of the tab stop position (until the available
18298+ space is filled), the rest to the right</doc>
18299+ </member>
18300+ </enumeration>
18301+ <record name="TabArray"
18302+ c:type="PangoTabArray"
18303+ glib:type-name="PangoTabArray"
18304+ glib:get-type="pango_tab_array_get_type"
18305+ c:symbol-prefix="tab_array">
18306+ <doc xml:space="preserve"
18307+ filename="../pango/pango-tabs.c"
18308+ line="37">A `PangoTabArray` contains an array of tab stops.
18309+
18310+`PangoTabArray` can be used to set tab stops in a `PangoLayout`.
18311+Each tab stop has an alignment, a position, and optionally
18312+a character to use as decimal point.</doc>
18313+ <source-position filename="../pango/pango-tabs.h" line="29"/>
18314+ <constructor name="new" c:identifier="pango_tab_array_new">
18315+ <doc xml:space="preserve"
18316+ filename="../pango/pango-tabs.c"
18317+ line="66">Creates an array of @initial_size tab stops.
18318+
18319+Tab stops are specified in pixel units if @positions_in_pixels is %TRUE,
18320+otherwise in Pango units. All stops are initially at position 0.</doc>
18321+ <source-position filename="../pango/pango-tabs.h" line="59"/>
18322+ <return-value transfer-ownership="full">
18323+ <doc xml:space="preserve"
18324+ filename="../pango/pango-tabs.c"
18325+ line="76">the newly allocated `PangoTabArray`, which should
18326+ be freed with [method@Pango.TabArray.free].</doc>
18327+ <type name="TabArray" c:type="PangoTabArray*"/>
18328+ </return-value>
18329+ <parameters>
18330+ <parameter name="initial_size" transfer-ownership="none">
18331+ <doc xml:space="preserve"
18332+ filename="../pango/pango-tabs.c"
18333+ line="68">Initial number of tab stops to allocate, can be 0</doc>
18334+ <type name="gint" c:type="gint"/>
18335+ </parameter>
18336+ <parameter name="positions_in_pixels" transfer-ownership="none">
18337+ <doc xml:space="preserve"
18338+ filename="../pango/pango-tabs.c"
18339+ line="69">whether positions are in pixel units</doc>
18340+ <type name="gboolean" c:type="gboolean"/>
18341+ </parameter>
18342+ </parameters>
18343+ </constructor>
18344+ <constructor name="new_with_positions"
18345+ c:identifier="pango_tab_array_new_with_positions"
18346+ introspectable="0">
18347+ <doc xml:space="preserve"
18348+ filename="../pango/pango-tabs.c"
18349+ line="108">Creates a `PangoTabArray` and allows you to specify the alignment
18350+and position of each tab stop.
18351+
18352+You **must** provide an alignment and position for @size tab stops.</doc>
18353+ <source-position filename="../pango/pango-tabs.h" line="62"/>
18354+ <return-value transfer-ownership="full">
18355+ <doc xml:space="preserve"
18356+ filename="../pango/pango-tabs.c"
18357+ line="121">the newly allocated `PangoTabArray`, which should
18358+ be freed with [method@Pango.TabArray.free].</doc>
18359+ <type name="TabArray" c:type="PangoTabArray*"/>
18360+ </return-value>
18361+ <parameters>
18362+ <parameter name="size" transfer-ownership="none">
18363+ <doc xml:space="preserve"
18364+ filename="../pango/pango-tabs.c"
18365+ line="110">number of tab stops in the array</doc>
18366+ <type name="gint" c:type="gint"/>
18367+ </parameter>
18368+ <parameter name="positions_in_pixels" transfer-ownership="none">
18369+ <doc xml:space="preserve"
18370+ filename="../pango/pango-tabs.c"
18371+ line="111">whether positions are in pixel units</doc>
18372+ <type name="gboolean" c:type="gboolean"/>
18373+ </parameter>
18374+ <parameter name="first_alignment" transfer-ownership="none">
18375+ <doc xml:space="preserve"
18376+ filename="../pango/pango-tabs.c"
18377+ line="112">alignment of first tab stop</doc>
18378+ <type name="TabAlign" c:type="PangoTabAlign"/>
18379+ </parameter>
18380+ <parameter name="first_position" transfer-ownership="none">
18381+ <doc xml:space="preserve"
18382+ filename="../pango/pango-tabs.c"
18383+ line="113">position of first tab stop</doc>
18384+ <type name="gint" c:type="gint"/>
18385+ </parameter>
18386+ <parameter name="..." transfer-ownership="none">
18387+ <doc xml:space="preserve"
18388+ filename="../pango/pango-tabs.c"
18389+ line="114">additional alignment/position pairs</doc>
18390+ <varargs/>
18391+ </parameter>
18392+ </parameters>
18393+ </constructor>
18394+ <method name="copy" c:identifier="pango_tab_array_copy">
18395+ <doc xml:space="preserve"
18396+ filename="../pango/pango-tabs.c"
18397+ line="173">Copies a `PangoTabArray`.</doc>
18398+ <source-position filename="../pango/pango-tabs.h" line="70"/>
18399+ <return-value transfer-ownership="full">
18400+ <doc xml:space="preserve"
18401+ filename="../pango/pango-tabs.c"
18402+ line="179">the newly allocated `PangoTabArray`, which should
18403+ be freed with [method@Pango.TabArray.free].</doc>
18404+ <type name="TabArray" c:type="PangoTabArray*"/>
18405+ </return-value>
18406+ <parameters>
18407+ <instance-parameter name="src" transfer-ownership="none">
18408+ <doc xml:space="preserve"
18409+ filename="../pango/pango-tabs.c"
18410+ line="175">`PangoTabArray` to copy</doc>
18411+ <type name="TabArray" c:type="PangoTabArray*"/>
18412+ </instance-parameter>
18413+ </parameters>
18414+ </method>
18415+ <method name="free" c:identifier="pango_tab_array_free">
18416+ <doc xml:space="preserve"
18417+ filename="../pango/pango-tabs.c"
18418+ line="197">Frees a tab array and associated resources.</doc>
18419+ <source-position filename="../pango/pango-tabs.h" line="72"/>
18420+ <return-value transfer-ownership="none">
18421+ <type name="none" c:type="void"/>
18422+ </return-value>
18423+ <parameters>
18424+ <instance-parameter name="tab_array" transfer-ownership="none">
18425+ <doc xml:space="preserve"
18426+ filename="../pango/pango-tabs.c"
18427+ line="199">a `PangoTabArray`</doc>
18428+ <type name="TabArray" c:type="PangoTabArray*"/>
18429+ </instance-parameter>
18430+ </parameters>
18431+ </method>
18432+ <method name="get_decimal_point"
18433+ c:identifier="pango_tab_array_get_decimal_point"
18434+ version="1.50">
18435+ <doc xml:space="preserve"
18436+ filename="../pango/pango-tabs.c"
18437+ line="577">Gets the Unicode character to use as decimal point.
18438+
18439+This is only relevant for tabs with %PANGO_TAB_DECIMAL alignment,
18440+which align content at the first occurrence of the decimal point
18441+character.
18442+
18443+The default value of 0 means that Pango will use the
18444+decimal point according to the current locale.</doc>
18445+ <source-position filename="../pango/pango-tabs.h" line="110"/>
18446+ <return-value transfer-ownership="none">
18447+ <type name="gunichar" c:type="gunichar"/>
18448+ </return-value>
18449+ <parameters>
18450+ <instance-parameter name="tab_array" transfer-ownership="none">
18451+ <doc xml:space="preserve"
18452+ filename="../pango/pango-tabs.c"
18453+ line="579">a `PangoTabArray`</doc>
18454+ <type name="TabArray" c:type="PangoTabArray*"/>
18455+ </instance-parameter>
18456+ <parameter name="tab_index" transfer-ownership="none">
18457+ <doc xml:space="preserve"
18458+ filename="../pango/pango-tabs.c"
18459+ line="580">the index of a tab stop</doc>
18460+ <type name="gint" c:type="int"/>
18461+ </parameter>
18462+ </parameters>
18463+ </method>
18464+ <method name="get_positions_in_pixels"
18465+ c:identifier="pango_tab_array_get_positions_in_pixels">
18466+ <doc xml:space="preserve"
18467+ filename="../pango/pango-tabs.c"
18468+ line="356">Returns %TRUE if the tab positions are in pixels,
18469+%FALSE if they are in Pango units.</doc>
18470+ <source-position filename="../pango/pango-tabs.h" line="94"/>
18471+ <return-value transfer-ownership="none">
18472+ <doc xml:space="preserve"
18473+ filename="../pango/pango-tabs.c"
18474+ line="363">whether positions are in pixels.</doc>
18475+ <type name="gboolean" c:type="gboolean"/>
18476+ </return-value>
18477+ <parameters>
18478+ <instance-parameter name="tab_array" transfer-ownership="none">
18479+ <doc xml:space="preserve"
18480+ filename="../pango/pango-tabs.c"
18481+ line="358">a `PangoTabArray`</doc>
18482+ <type name="TabArray" c:type="PangoTabArray*"/>
18483+ </instance-parameter>
18484+ </parameters>
18485+ </method>
18486+ <method name="get_size" c:identifier="pango_tab_array_get_size">
18487+ <doc xml:space="preserve"
18488+ filename="../pango/pango-tabs.c"
18489+ line="213">Gets the number of tab stops in @tab_array.</doc>
18490+ <source-position filename="../pango/pango-tabs.h" line="74"/>
18491+ <return-value transfer-ownership="none">
18492+ <doc xml:space="preserve"
18493+ filename="../pango/pango-tabs.c"
18494+ line="219">the number of tab stops in the array.</doc>
18495+ <type name="gint" c:type="gint"/>
18496+ </return-value>
18497+ <parameters>
18498+ <instance-parameter name="tab_array" transfer-ownership="none">
18499+ <doc xml:space="preserve"
18500+ filename="../pango/pango-tabs.c"
18501+ line="215">a `PangoTabArray`</doc>
18502+ <type name="TabArray" c:type="PangoTabArray*"/>
18503+ </instance-parameter>
18504+ </parameters>
18505+ </method>
18506+ <method name="get_tab" c:identifier="pango_tab_array_get_tab">
18507+ <doc xml:space="preserve"
18508+ filename="../pango/pango-tabs.c"
18509+ line="289">Gets the alignment and position of a tab stop.</doc>
18510+ <source-position filename="../pango/pango-tabs.h" line="84"/>
18511+ <return-value transfer-ownership="none">
18512+ <type name="none" c:type="void"/>
18513+ </return-value>
18514+ <parameters>
18515+ <instance-parameter name="tab_array" transfer-ownership="none">
18516+ <doc xml:space="preserve"
18517+ filename="../pango/pango-tabs.c"
18518+ line="291">a `PangoTabArray`</doc>
18519+ <type name="TabArray" c:type="PangoTabArray*"/>
18520+ </instance-parameter>
18521+ <parameter name="tab_index" transfer-ownership="none">
18522+ <doc xml:space="preserve"
18523+ filename="../pango/pango-tabs.c"
18524+ line="292">tab stop index</doc>
18525+ <type name="gint" c:type="gint"/>
18526+ </parameter>
18527+ <parameter name="alignment"
18528+ direction="out"
18529+ caller-allocates="0"
18530+ transfer-ownership="full"
18531+ optional="1"
18532+ allow-none="1">
18533+ <doc xml:space="preserve"
18534+ filename="../pango/pango-tabs.c"
18535+ line="293">location to store alignment</doc>
18536+ <type name="TabAlign" c:type="PangoTabAlign*"/>
18537+ </parameter>
18538+ <parameter name="location"
18539+ direction="out"
18540+ caller-allocates="0"
18541+ transfer-ownership="full"
18542+ optional="1"
18543+ allow-none="1">
18544+ <doc xml:space="preserve"
18545+ filename="../pango/pango-tabs.c"
18546+ line="294">location to store tab position</doc>
18547+ <type name="gint" c:type="gint*"/>
18548+ </parameter>
18549+ </parameters>
18550+ </method>
18551+ <method name="get_tabs" c:identifier="pango_tab_array_get_tabs">
18552+ <doc xml:space="preserve"
18553+ filename="../pango/pango-tabs.c"
18554+ line="315">If non-%NULL, @alignments and @locations are filled with allocated
18555+arrays.
18556+
18557+The arrays are of length [method@Pango.TabArray.get_size].
18558+You must free the returned array.</doc>
18559+ <source-position filename="../pango/pango-tabs.h" line="89"/>
18560+ <return-value transfer-ownership="none">
18561+ <type name="none" c:type="void"/>
18562+ </return-value>
18563+ <parameters>
18564+ <instance-parameter name="tab_array" transfer-ownership="none">
18565+ <doc xml:space="preserve"
18566+ filename="../pango/pango-tabs.c"
18567+ line="317">a `PangoTabArray`</doc>
18568+ <type name="TabArray" c:type="PangoTabArray*"/>
18569+ </instance-parameter>
18570+ <parameter name="alignments"
18571+ direction="out"
18572+ caller-allocates="0"
18573+ transfer-ownership="full"
18574+ optional="1"
18575+ allow-none="1">
18576+ <doc xml:space="preserve"
18577+ filename="../pango/pango-tabs.c"
18578+ line="318">location to store an array of tab
18579+ stop alignments</doc>
18580+ <type name="TabAlign" c:type="PangoTabAlign**"/>
18581+ </parameter>
18582+ <parameter name="locations"
18583+ direction="out"
18584+ caller-allocates="0"
18585+ transfer-ownership="full"
18586+ optional="1"
18587+ allow-none="1">
18588+ <doc xml:space="preserve"
18589+ filename="../pango/pango-tabs.c"
18590+ line="320">location to store an array
18591+ of tab positions</doc>
18592+ <array zero-terminated="0" c:type="gint**">
18593+ <type name="gint" c:type="gint*"/>
18594+ </array>
18595+ </parameter>
18596+ </parameters>
18597+ </method>
18598+ <method name="resize" c:identifier="pango_tab_array_resize">
18599+ <doc xml:space="preserve"
18600+ filename="../pango/pango-tabs.c"
18601+ line="229">Resizes a tab array.
18602+
18603+You must subsequently initialize any tabs
18604+that were added as a result of growing the array.</doc>
18605+ <source-position filename="../pango/pango-tabs.h" line="76"/>
18606+ <return-value transfer-ownership="none">
18607+ <type name="none" c:type="void"/>
18608+ </return-value>
18609+ <parameters>
18610+ <instance-parameter name="tab_array" transfer-ownership="none">
18611+ <doc xml:space="preserve"
18612+ filename="../pango/pango-tabs.c"
18613+ line="231">a `PangoTabArray`</doc>
18614+ <type name="TabArray" c:type="PangoTabArray*"/>
18615+ </instance-parameter>
18616+ <parameter name="new_size" transfer-ownership="none">
18617+ <doc xml:space="preserve"
18618+ filename="../pango/pango-tabs.c"
18619+ line="232">new size of the array</doc>
18620+ <type name="gint" c:type="gint"/>
18621+ </parameter>
18622+ </parameters>
18623+ </method>
18624+ <method name="set_decimal_point"
18625+ c:identifier="pango_tab_array_set_decimal_point"
18626+ version="1.50">
18627+ <doc xml:space="preserve"
18628+ filename="../pango/pango-tabs.c"
18629+ line="546">Sets the Unicode character to use as decimal point.
18630+
18631+This is only relevant for tabs with %PANGO_TAB_DECIMAL alignment,
18632+which align content at the first occurrence of the decimal point
18633+character.
18634+
18635+By default, Pango uses the decimal point according
18636+to the current locale.</doc>
18637+ <source-position filename="../pango/pango-tabs.h" line="106"/>
18638+ <return-value transfer-ownership="none">
18639+ <type name="none" c:type="void"/>
18640+ </return-value>
18641+ <parameters>
18642+ <instance-parameter name="tab_array" transfer-ownership="none">
18643+ <doc xml:space="preserve"
18644+ filename="../pango/pango-tabs.c"
18645+ line="548">a `PangoTabArray`</doc>
18646+ <type name="TabArray" c:type="PangoTabArray*"/>
18647+ </instance-parameter>
18648+ <parameter name="tab_index" transfer-ownership="none">
18649+ <doc xml:space="preserve"
18650+ filename="../pango/pango-tabs.c"
18651+ line="549">the index of a tab stop</doc>
18652+ <type name="gint" c:type="int"/>
18653+ </parameter>
18654+ <parameter name="decimal_point" transfer-ownership="none">
18655+ <doc xml:space="preserve"
18656+ filename="../pango/pango-tabs.c"
18657+ line="550">the decimal point to use</doc>
18658+ <type name="gunichar" c:type="gunichar"/>
18659+ </parameter>
18660+ </parameters>
18661+ </method>
18662+ <method name="set_positions_in_pixels"
18663+ c:identifier="pango_tab_array_set_positions_in_pixels"
18664+ version="1.50">
18665+ <doc xml:space="preserve"
18666+ filename="../pango/pango-tabs.c"
18667+ line="373">Sets whether positions in this array are specified in
18668+pixels.</doc>
18669+ <source-position filename="../pango/pango-tabs.h" line="97"/>
18670+ <return-value transfer-ownership="none">
18671+ <type name="none" c:type="void"/>
18672+ </return-value>
18673+ <parameters>
18674+ <instance-parameter name="tab_array" transfer-ownership="none">
18675+ <doc xml:space="preserve"
18676+ filename="../pango/pango-tabs.c"
18677+ line="375">a `PangoTabArray`</doc>
18678+ <type name="TabArray" c:type="PangoTabArray*"/>
18679+ </instance-parameter>
18680+ <parameter name="positions_in_pixels" transfer-ownership="none">
18681+ <doc xml:space="preserve"
18682+ filename="../pango/pango-tabs.c"
18683+ line="376">whether positions are in pixels</doc>
18684+ <type name="gboolean" c:type="gboolean"/>
18685+ </parameter>
18686+ </parameters>
18687+ </method>
18688+ <method name="set_tab" c:identifier="pango_tab_array_set_tab">
18689+ <doc xml:space="preserve"
18690+ filename="../pango/pango-tabs.c"
18691+ line="263">Sets the alignment and location of a tab stop.</doc>
18692+ <source-position filename="../pango/pango-tabs.h" line="79"/>
18693+ <return-value transfer-ownership="none">
18694+ <type name="none" c:type="void"/>
18695+ </return-value>
18696+ <parameters>
18697+ <instance-parameter name="tab_array" transfer-ownership="none">
18698+ <doc xml:space="preserve"
18699+ filename="../pango/pango-tabs.c"
18700+ line="265">a `PangoTabArray`</doc>
18701+ <type name="TabArray" c:type="PangoTabArray*"/>
18702+ </instance-parameter>
18703+ <parameter name="tab_index" transfer-ownership="none">
18704+ <doc xml:space="preserve"
18705+ filename="../pango/pango-tabs.c"
18706+ line="266">the index of a tab stop</doc>
18707+ <type name="gint" c:type="gint"/>
18708+ </parameter>
18709+ <parameter name="alignment" transfer-ownership="none">
18710+ <doc xml:space="preserve"
18711+ filename="../pango/pango-tabs.c"
18712+ line="267">tab alignment</doc>
18713+ <type name="TabAlign" c:type="PangoTabAlign"/>
18714+ </parameter>
18715+ <parameter name="location" transfer-ownership="none">
18716+ <doc xml:space="preserve"
18717+ filename="../pango/pango-tabs.c"
18718+ line="268">tab location in Pango units</doc>
18719+ <type name="gint" c:type="gint"/>
18720+ </parameter>
18721+ </parameters>
18722+ </method>
18723+ <method name="sort" c:identifier="pango_tab_array_sort" version="1.50">
18724+ <doc xml:space="preserve"
18725+ filename="../pango/pango-tabs.c"
18726+ line="613">Utility function to ensure that the tab stops are in increasing order.</doc>
18727+ <source-position filename="../pango/pango-tabs.h" line="114"/>
18728+ <return-value transfer-ownership="none">
18729+ <type name="none" c:type="void"/>
18730+ </return-value>
18731+ <parameters>
18732+ <instance-parameter name="tab_array" transfer-ownership="none">
18733+ <doc xml:space="preserve"
18734+ filename="../pango/pango-tabs.c"
18735+ line="615">a `PangoTabArray`</doc>
18736+ <type name="TabArray" c:type="PangoTabArray*"/>
18737+ </instance-parameter>
18738+ </parameters>
18739+ </method>
18740+ <method name="to_string"
18741+ c:identifier="pango_tab_array_to_string"
18742+ version="1.50">
18743+ <doc xml:space="preserve"
18744+ filename="../pango/pango-tabs.c"
18745+ line="392">Serializes a `PangoTabArray` to a string.
18746+
18747+No guarantees are made about the format of the string,
18748+it may change between Pango versions.
18749+
18750+The intended use of this function is testing and
18751+debugging. The format is not meant as a permanent
18752+storage format.</doc>
18753+ <source-position filename="../pango/pango-tabs.h" line="101"/>
18754+ <return-value transfer-ownership="full">
18755+ <doc xml:space="preserve"
18756+ filename="../pango/pango-tabs.c"
18757+ line="405">a newly allocated string</doc>
18758+ <type name="utf8" c:type="char*"/>
18759+ </return-value>
18760+ <parameters>
18761+ <instance-parameter name="tab_array" transfer-ownership="none">
18762+ <doc xml:space="preserve"
18763+ filename="../pango/pango-tabs.c"
18764+ line="394">a `PangoTabArray`</doc>
18765+ <type name="TabArray" c:type="PangoTabArray*"/>
18766+ </instance-parameter>
18767+ </parameters>
18768+ </method>
18769+ <function name="from_string"
18770+ c:identifier="pango_tab_array_from_string"
18771+ version="1.50">
18772+ <doc xml:space="preserve"
18773+ filename="../pango/pango-tabs.c"
18774+ line="446">Deserializes a `PangoTabArray` from a string.
18775+
18776+This is the counterpart to [method@Pango.TabArray.to_string].
18777+See that functions for details about the format.</doc>
18778+ <source-position filename="../pango/pango-tabs.h" line="103"/>
18779+ <return-value transfer-ownership="full" nullable="1">
18780+ <doc xml:space="preserve"
18781+ filename="../pango/pango-tabs.c"
18782+ line="455">a new `PangoTabArray`</doc>
18783+ <type name="TabArray" c:type="PangoTabArray*"/>
18784+ </return-value>
18785+ <parameters>
18786+ <parameter name="text" transfer-ownership="none">
18787+ <doc xml:space="preserve"
18788+ filename="../pango/pango-tabs.c"
18789+ line="448">a string</doc>
18790+ <type name="utf8" c:type="const char*"/>
18791+ </parameter>
18792+ </parameters>
18793+ </function>
18794+ </record>
18795+ <enumeration name="TextTransform"
18796+ version="1.50"
18797+ glib:type-name="PangoTextTransform"
18798+ glib:get-type="pango_text_transform_get_type"
18799+ c:type="PangoTextTransform">
18800+ <doc xml:space="preserve"
18801+ filename="../pango/pango-attributes.h"
18802+ line="214">An enumeration that affects how Pango treats characters during shaping.</doc>
18803+ <member name="none"
18804+ value="0"
18805+ c:identifier="PANGO_TEXT_TRANSFORM_NONE"
18806+ glib:nick="none"
18807+ glib:name="PANGO_TEXT_TRANSFORM_NONE">
18808+ <doc xml:space="preserve"
18809+ filename="../pango/pango-attributes.h"
18810+ line="216">Leave text unchanged</doc>
18811+ </member>
18812+ <member name="lowercase"
18813+ value="1"
18814+ c:identifier="PANGO_TEXT_TRANSFORM_LOWERCASE"
18815+ glib:nick="lowercase"
18816+ glib:name="PANGO_TEXT_TRANSFORM_LOWERCASE">
18817+ <doc xml:space="preserve"
18818+ filename="../pango/pango-attributes.h"
18819+ line="217">Display letters and numbers as lowercase</doc>
18820+ </member>
18821+ <member name="uppercase"
18822+ value="2"
18823+ c:identifier="PANGO_TEXT_TRANSFORM_UPPERCASE"
18824+ glib:nick="uppercase"
18825+ glib:name="PANGO_TEXT_TRANSFORM_UPPERCASE">
18826+ <doc xml:space="preserve"
18827+ filename="../pango/pango-attributes.h"
18828+ line="218">Display letters and numbers as uppercase</doc>
18829+ </member>
18830+ <member name="capitalize"
18831+ value="3"
18832+ c:identifier="PANGO_TEXT_TRANSFORM_CAPITALIZE"
18833+ glib:nick="capitalize"
18834+ glib:name="PANGO_TEXT_TRANSFORM_CAPITALIZE">
18835+ <doc xml:space="preserve"
18836+ filename="../pango/pango-attributes.h"
18837+ line="219">Display the first character of a word
18838+ in titlecase</doc>
18839+ </member>
18840+ </enumeration>
18841+ <function-macro name="UNITS_CEIL"
18842+ c:identifier="PANGO_UNITS_CEIL"
18843+ version="1.50"
18844+ introspectable="0">
18845+ <doc xml:space="preserve"
18846+ filename="../pango/pango-types.h"
18847+ line="122">Rounds a dimension up to whole device units, but does not
18848+convert it to device units.</doc>
18849+ <source-position filename="../pango/pango-types.h" line="132"/>
18850+ <parameters>
18851+ <parameter name="d">
18852+ <doc xml:space="preserve"
18853+ filename="../pango/pango-types.h"
18854+ line="124">a dimension in Pango units.</doc>
18855+ </parameter>
18856+ </parameters>
18857+ </function-macro>
18858+ <function-macro name="UNITS_FLOOR"
18859+ c:identifier="PANGO_UNITS_FLOOR"
18860+ version="1.50"
18861+ introspectable="0">
18862+ <doc xml:space="preserve"
18863+ filename="../pango/pango-types.h"
18864+ line="109">Rounds a dimension down to whole device units, but does not
18865+convert it to device units.</doc>
18866+ <source-position filename="../pango/pango-types.h" line="119"/>
18867+ <parameters>
18868+ <parameter name="d">
18869+ <doc xml:space="preserve"
18870+ filename="../pango/pango-types.h"
18871+ line="111">a dimension in Pango units.</doc>
18872+ </parameter>
18873+ </parameters>
18874+ </function-macro>
18875+ <function-macro name="UNITS_ROUND"
18876+ c:identifier="PANGO_UNITS_ROUND"
18877+ version="1.18"
18878+ introspectable="0">
18879+ <doc xml:space="preserve"
18880+ filename="../pango/pango-types.h"
18881+ line="135">Rounds a dimension to whole device units, but does not
18882+convert it to device units.</doc>
18883+ <source-position filename="../pango/pango-types.h" line="145"/>
18884+ <parameters>
18885+ <parameter name="d">
18886+ <doc xml:space="preserve"
18887+ filename="../pango/pango-types.h"
18888+ line="137">a dimension in Pango units.</doc>
18889+ </parameter>
18890+ </parameters>
18891+ </function-macro>
18892+ <enumeration name="Underline"
18893+ glib:type-name="PangoUnderline"
18894+ glib:get-type="pango_underline_get_type"
18895+ c:type="PangoUnderline">
18896+ <doc xml:space="preserve"
18897+ filename="../pango/pango-attributes.h"
18898+ line="134">The `PangoUnderline` enumeration is used to specify whether text
18899+should be underlined, and if so, the type of underlining.</doc>
18900+ <member name="none"
18901+ value="0"
18902+ c:identifier="PANGO_UNDERLINE_NONE"
18903+ glib:nick="none"
18904+ glib:name="PANGO_UNDERLINE_NONE">
18905+ <doc xml:space="preserve"
18906+ filename="../pango/pango-attributes.h"
18907+ line="136">no underline should be drawn</doc>
18908+ </member>
18909+ <member name="single"
18910+ value="1"
18911+ c:identifier="PANGO_UNDERLINE_SINGLE"
18912+ glib:nick="single"
18913+ glib:name="PANGO_UNDERLINE_SINGLE">
18914+ <doc xml:space="preserve"
18915+ filename="../pango/pango-attributes.h"
18916+ line="137">a single underline should be drawn</doc>
18917+ </member>
18918+ <member name="double"
18919+ value="2"
18920+ c:identifier="PANGO_UNDERLINE_DOUBLE"
18921+ glib:nick="double"
18922+ glib:name="PANGO_UNDERLINE_DOUBLE">
18923+ <doc xml:space="preserve"
18924+ filename="../pango/pango-attributes.h"
18925+ line="138">a double underline should be drawn</doc>
18926+ </member>
18927+ <member name="low"
18928+ value="3"
18929+ c:identifier="PANGO_UNDERLINE_LOW"
18930+ glib:nick="low"
18931+ glib:name="PANGO_UNDERLINE_LOW">
18932+ <doc xml:space="preserve"
18933+ filename="../pango/pango-attributes.h"
18934+ line="139">a single underline should be drawn at a
18935+ position beneath the ink extents of the text being
18936+ underlined. This should be used only for underlining
18937+ single characters, such as for keyboard accelerators.
18938+ %PANGO_UNDERLINE_SINGLE should be used for extended
18939+ portions of text.</doc>
18940+ </member>
18941+ <member name="error"
18942+ value="4"
18943+ c:identifier="PANGO_UNDERLINE_ERROR"
18944+ glib:nick="error"
18945+ glib:name="PANGO_UNDERLINE_ERROR">
18946+ <doc xml:space="preserve"
18947+ filename="../pango/pango-attributes.h"
18948+ line="145">an underline indicating an error should
18949+ be drawn below. The exact style of rendering is up to the
18950+ `PangoRenderer` in use, but typical styles include wavy
18951+ or dotted lines.
18952+ This underline is typically used to indicate an error such
18953+ as a possible mispelling; in some cases a contrasting color
18954+ may automatically be used. This type of underlining is
18955+ available since Pango 1.4.</doc>
18956+ </member>
18957+ <member name="single_line"
18958+ value="5"
18959+ c:identifier="PANGO_UNDERLINE_SINGLE_LINE"
18960+ glib:nick="single-line"
18961+ glib:name="PANGO_UNDERLINE_SINGLE_LINE">
18962+ <doc xml:space="preserve"
18963+ filename="../pango/pango-attributes.h"
18964+ line="153">Like @PANGO_UNDERLINE_SINGLE, but
18965+ drawn continuously across multiple runs. This type
18966+ of underlining is available since Pango 1.46.</doc>
18967+ </member>
18968+ <member name="double_line"
18969+ value="6"
18970+ c:identifier="PANGO_UNDERLINE_DOUBLE_LINE"
18971+ glib:nick="double-line"
18972+ glib:name="PANGO_UNDERLINE_DOUBLE_LINE">
18973+ <doc xml:space="preserve"
18974+ filename="../pango/pango-attributes.h"
18975+ line="156">Like @PANGO_UNDERLINE_DOUBLE, but
18976+ drawn continuously across multiple runs. This type
18977+ of underlining is available since Pango 1.46.</doc>
18978+ </member>
18979+ <member name="error_line"
18980+ value="7"
18981+ c:identifier="PANGO_UNDERLINE_ERROR_LINE"
18982+ glib:nick="error-line"
18983+ glib:name="PANGO_UNDERLINE_ERROR_LINE">
18984+ <doc xml:space="preserve"
18985+ filename="../pango/pango-attributes.h"
18986+ line="159">Like @PANGO_UNDERLINE_ERROR, but
18987+ drawn continuously across multiple runs. This type
18988+ of underlining is available since Pango 1.46.</doc>
18989+ </member>
18990+ </enumeration>
18991+ <function-macro name="VERSION_CHECK"
18992+ c:identifier="PANGO_VERSION_CHECK"
18993+ introspectable="0">
18994+ <doc xml:space="preserve"
18995+ filename="../pango/pango-utils.h"
18996+ line="158">Checks that the version of Pango available at compile-time is not older than
18997+the provided version number.</doc>
18998+ <source-position filename="../pango/pango-utils.h" line="164"/>
18999+ <parameters>
19000+ <parameter name="major">
19001+ <doc xml:space="preserve"
19002+ filename="../pango/pango-utils.h"
19003+ line="160">the major component of the version number</doc>
19004+ </parameter>
19005+ <parameter name="minor">
19006+ <doc xml:space="preserve"
19007+ filename="../pango/pango-utils.h"
19008+ line="161">the minor component of the version number</doc>
19009+ </parameter>
19010+ <parameter name="micro">
19011+ <doc xml:space="preserve"
19012+ filename="../pango/pango-utils.h"
19013+ line="162">the micro component of the version number</doc>
19014+ </parameter>
19015+ </parameters>
19016+ </function-macro>
19017+ <function-macro name="VERSION_ENCODE"
19018+ c:identifier="PANGO_VERSION_ENCODE"
19019+ introspectable="0">
19020+ <doc xml:space="preserve"
19021+ filename="../pango/pango-utils.h"
19022+ line="111">This macro encodes the given Pango version into an integer. The numbers
19023+returned by %PANGO_VERSION and pango_version() are encoded using this macro.
19024+Two encoded version numbers can be compared as integers.</doc>
19025+ <source-position filename="../pango/pango-utils.h" line="121"/>
19026+ <parameters>
19027+ <parameter name="major">
19028+ <doc xml:space="preserve"
19029+ filename="../pango/pango-utils.h"
19030+ line="113">the major component of the version number</doc>
19031+ </parameter>
19032+ <parameter name="minor">
19033+ <doc xml:space="preserve"
19034+ filename="../pango/pango-utils.h"
19035+ line="114">the minor component of the version number</doc>
19036+ </parameter>
19037+ <parameter name="micro">
19038+ <doc xml:space="preserve"
19039+ filename="../pango/pango-utils.h"
19040+ line="115">the micro component of the version number</doc>
19041+ </parameter>
19042+ </parameters>
19043+ </function-macro>
19044+ <constant name="VERSION_MAJOR" value="1" c:type="PANGO_VERSION_MAJOR">
19045+ <doc xml:space="preserve"
19046+ filename="../pango/pango-utils.h"
19047+ line="137">The major component of the version of Pango available at compile-time.</doc>
19048+ <source-position filename="../pango/pango-features.h" line="4"/>
19049+ <type name="gint" c:type="gint"/>
19050+ </constant>
19051+ <constant name="VERSION_MICRO" value="3" c:type="PANGO_VERSION_MICRO">
19052+ <doc xml:space="preserve"
19053+ filename="../pango/pango-utils.h"
19054+ line="147">The micro component of the version of Pango available at compile-time.</doc>
19055+ <source-position filename="../pango/pango-features.h" line="6"/>
19056+ <type name="gint" c:type="gint"/>
19057+ </constant>
19058+ <constant name="VERSION_MINOR" value="50" c:type="PANGO_VERSION_MINOR">
19059+ <doc xml:space="preserve"
19060+ filename="../pango/pango-utils.h"
19061+ line="142">The minor component of the version of Pango available at compile-time.</doc>
19062+ <source-position filename="../pango/pango-features.h" line="5"/>
19063+ <type name="gint" c:type="gint"/>
19064+ </constant>
19065+ <constant name="VERSION_STRING"
19066+ value="1.50.3"
19067+ c:type="PANGO_VERSION_STRING">
19068+ <doc xml:space="preserve"
19069+ filename="../pango/pango-utils.h"
19070+ line="132">A string literal containing the version of Pango available at compile-time.</doc>
19071+ <source-position filename="../pango/pango-features.h" line="8"/>
19072+ <type name="utf8" c:type="gchar*"/>
19073+ </constant>
19074+ <enumeration name="Variant"
19075+ glib:type-name="PangoVariant"
19076+ glib:get-type="pango_variant_get_type"
19077+ c:type="PangoVariant">
19078+ <doc xml:space="preserve"
19079+ filename="../pango/pango-font.h"
19080+ line="80">An enumeration specifying capitalization variant of the font.
19081+
19082+Values other than `PANGO_VARIANT_NORMAL` and `PANGO_VARIANT_SMALL_CAPS` are
19083+available since 1.50.</doc>
19084+ <member name="normal"
19085+ value="0"
19086+ c:identifier="PANGO_VARIANT_NORMAL"
19087+ glib:nick="normal"
19088+ glib:name="PANGO_VARIANT_NORMAL">
19089+ <doc xml:space="preserve"
19090+ filename="../pango/pango-font.h"
19091+ line="82">A normal font.</doc>
19092+ </member>
19093+ <member name="small_caps"
19094+ value="1"
19095+ c:identifier="PANGO_VARIANT_SMALL_CAPS"
19096+ glib:nick="small-caps"
19097+ glib:name="PANGO_VARIANT_SMALL_CAPS">
19098+ <doc xml:space="preserve"
19099+ filename="../pango/pango-font.h"
19100+ line="83">A font with the lower case characters
19101+ replaced by smaller variants of the capital characters.</doc>
19102+ </member>
19103+ <member name="all_small_caps"
19104+ value="2"
19105+ c:identifier="PANGO_VARIANT_ALL_SMALL_CAPS"
19106+ glib:nick="all-small-caps"
19107+ glib:name="PANGO_VARIANT_ALL_SMALL_CAPS">
19108+ <doc xml:space="preserve"
19109+ filename="../pango/pango-font.h"
19110+ line="85">A font with all characters
19111+ replaced by smaller variants of the capital characters.</doc>
19112+ </member>
19113+ <member name="petite_caps"
19114+ value="3"
19115+ c:identifier="PANGO_VARIANT_PETITE_CAPS"
19116+ glib:nick="petite-caps"
19117+ glib:name="PANGO_VARIANT_PETITE_CAPS">
19118+ <doc xml:space="preserve"
19119+ filename="../pango/pango-font.h"
19120+ line="87">A font with the lower case characters
19121+ replaced by smaller variants of the capital characters.
19122+ Petite Caps can be even smaller than Small Caps.</doc>
19123+ </member>
19124+ <member name="all_petite_caps"
19125+ value="4"
19126+ c:identifier="PANGO_VARIANT_ALL_PETITE_CAPS"
19127+ glib:nick="all-petite-caps"
19128+ glib:name="PANGO_VARIANT_ALL_PETITE_CAPS">
19129+ <doc xml:space="preserve"
19130+ filename="../pango/pango-font.h"
19131+ line="90">A font with all characters
19132+ replaced by smaller variants of the capital characters.
19133+ Petite Caps can be even smaller than Small Caps.</doc>
19134+ </member>
19135+ <member name="unicase"
19136+ value="5"
19137+ c:identifier="PANGO_VARIANT_UNICASE"
19138+ glib:nick="unicase"
19139+ glib:name="PANGO_VARIANT_UNICASE">
19140+ <doc xml:space="preserve"
19141+ filename="../pango/pango-font.h"
19142+ line="93">A font with the upper case characters
19143+ replaced by smaller variants of the capital letters.</doc>
19144+ </member>
19145+ <member name="title_caps"
19146+ value="6"
19147+ c:identifier="PANGO_VARIANT_TITLE_CAPS"
19148+ glib:nick="title-caps"
19149+ glib:name="PANGO_VARIANT_TITLE_CAPS">
19150+ <doc xml:space="preserve"
19151+ filename="../pango/pango-font.h"
19152+ line="95">A font with capital letters that
19153+ are more suitable for all-uppercase titles.</doc>
19154+ </member>
19155+ </enumeration>
19156+ <enumeration name="Weight"
19157+ glib:type-name="PangoWeight"
19158+ glib:get-type="pango_weight_get_type"
19159+ c:type="PangoWeight">
19160+ <doc xml:space="preserve"
19161+ filename="../pango/pango-font.h"
19162+ line="113">An enumeration specifying the weight (boldness) of a font.
19163+
19164+Weight is specified as a numeric value ranging from 100 to 1000.
19165+This enumeration simply provides some common, predefined values.</doc>
19166+ <member name="thin"
19167+ value="100"
19168+ c:identifier="PANGO_WEIGHT_THIN"
19169+ glib:nick="thin"
19170+ glib:name="PANGO_WEIGHT_THIN">
19171+ <doc xml:space="preserve"
19172+ filename="../pango/pango-font.h"
19173+ line="115">the thin weight (= 100) Since: 1.24</doc>
19174+ </member>
19175+ <member name="ultralight"
19176+ value="200"
19177+ c:identifier="PANGO_WEIGHT_ULTRALIGHT"
19178+ glib:nick="ultralight"
19179+ glib:name="PANGO_WEIGHT_ULTRALIGHT">
19180+ <doc xml:space="preserve"
19181+ filename="../pango/pango-font.h"
19182+ line="116">the ultralight weight (= 200)</doc>
19183+ </member>
19184+ <member name="light"
19185+ value="300"
19186+ c:identifier="PANGO_WEIGHT_LIGHT"
19187+ glib:nick="light"
19188+ glib:name="PANGO_WEIGHT_LIGHT">
19189+ <doc xml:space="preserve"
19190+ filename="../pango/pango-font.h"
19191+ line="117">the light weight (= 300)</doc>
19192+ </member>
19193+ <member name="semilight"
19194+ value="350"
19195+ c:identifier="PANGO_WEIGHT_SEMILIGHT"
19196+ glib:nick="semilight"
19197+ glib:name="PANGO_WEIGHT_SEMILIGHT">
19198+ <doc xml:space="preserve"
19199+ filename="../pango/pango-font.h"
19200+ line="118">the semilight weight (= 350) Since: 1.36.7</doc>
19201+ </member>
19202+ <member name="book"
19203+ value="380"
19204+ c:identifier="PANGO_WEIGHT_BOOK"
19205+ glib:nick="book"
19206+ glib:name="PANGO_WEIGHT_BOOK">
19207+ <doc xml:space="preserve"
19208+ filename="../pango/pango-font.h"
19209+ line="119">the book weight (= 380) Since: 1.24)</doc>
19210+ </member>
19211+ <member name="normal"
19212+ value="400"
19213+ c:identifier="PANGO_WEIGHT_NORMAL"
19214+ glib:nick="normal"
19215+ glib:name="PANGO_WEIGHT_NORMAL">
19216+ <doc xml:space="preserve"
19217+ filename="../pango/pango-font.h"
19218+ line="120">the default weight (= 400)</doc>
19219+ </member>
19220+ <member name="medium"
19221+ value="500"
19222+ c:identifier="PANGO_WEIGHT_MEDIUM"
19223+ glib:nick="medium"
19224+ glib:name="PANGO_WEIGHT_MEDIUM">
19225+ <doc xml:space="preserve"
19226+ filename="../pango/pango-font.h"
19227+ line="121">the normal weight (= 500) Since: 1.24</doc>
19228+ </member>
19229+ <member name="semibold"
19230+ value="600"
19231+ c:identifier="PANGO_WEIGHT_SEMIBOLD"
19232+ glib:nick="semibold"
19233+ glib:name="PANGO_WEIGHT_SEMIBOLD">
19234+ <doc xml:space="preserve"
19235+ filename="../pango/pango-font.h"
19236+ line="122">the semibold weight (= 600)</doc>
19237+ </member>
19238+ <member name="bold"
19239+ value="700"
19240+ c:identifier="PANGO_WEIGHT_BOLD"
19241+ glib:nick="bold"
19242+ glib:name="PANGO_WEIGHT_BOLD">
19243+ <doc xml:space="preserve"
19244+ filename="../pango/pango-font.h"
19245+ line="123">the bold weight (= 700)</doc>
19246+ </member>
19247+ <member name="ultrabold"
19248+ value="800"
19249+ c:identifier="PANGO_WEIGHT_ULTRABOLD"
19250+ glib:nick="ultrabold"
19251+ glib:name="PANGO_WEIGHT_ULTRABOLD">
19252+ <doc xml:space="preserve"
19253+ filename="../pango/pango-font.h"
19254+ line="124">the ultrabold weight (= 800)</doc>
19255+ </member>
19256+ <member name="heavy"
19257+ value="900"
19258+ c:identifier="PANGO_WEIGHT_HEAVY"
19259+ glib:nick="heavy"
19260+ glib:name="PANGO_WEIGHT_HEAVY">
19261+ <doc xml:space="preserve"
19262+ filename="../pango/pango-font.h"
19263+ line="125">the heavy weight (= 900)</doc>
19264+ </member>
19265+ <member name="ultraheavy"
19266+ value="1000"
19267+ c:identifier="PANGO_WEIGHT_ULTRAHEAVY"
19268+ glib:nick="ultraheavy"
19269+ glib:name="PANGO_WEIGHT_ULTRAHEAVY">
19270+ <doc xml:space="preserve"
19271+ filename="../pango/pango-font.h"
19272+ line="126">the ultraheavy weight (= 1000) Since: 1.24</doc>
19273+ </member>
19274+ </enumeration>
19275+ <enumeration name="WrapMode"
19276+ glib:type-name="PangoWrapMode"
19277+ glib:get-type="pango_wrap_mode_get_type"
19278+ c:type="PangoWrapMode">
19279+ <doc xml:space="preserve"
19280+ filename="../pango/pango-layout.h"
19281+ line="67">`PangoWrapMode` describes how to wrap the lines of a `PangoLayout`
19282+to the desired width.
19283+
19284+For @PANGO_WRAP_WORD, Pango uses break opportunities that are determined
19285+by the Unicode line breaking algorithm. For @PANGO_WRAP_CHAR, Pango allows
19286+breaking at grapheme boundaries that are determined by the Unicode text
19287+segmentation algorithm.</doc>
19288+ <member name="word"
19289+ value="0"
19290+ c:identifier="PANGO_WRAP_WORD"
19291+ glib:nick="word"
19292+ glib:name="PANGO_WRAP_WORD">
19293+ <doc xml:space="preserve"
19294+ filename="../pango/pango-layout.h"
19295+ line="69">wrap lines at word boundaries.</doc>
19296+ </member>
19297+ <member name="char"
19298+ value="1"
19299+ c:identifier="PANGO_WRAP_CHAR"
19300+ glib:nick="char"
19301+ glib:name="PANGO_WRAP_CHAR">
19302+ <doc xml:space="preserve"
19303+ filename="../pango/pango-layout.h"
19304+ line="70">wrap lines at character boundaries.</doc>
19305+ </member>
19306+ <member name="word_char"
19307+ value="2"
19308+ c:identifier="PANGO_WRAP_WORD_CHAR"
19309+ glib:nick="word-char"
19310+ glib:name="PANGO_WRAP_WORD_CHAR">
19311+ <doc xml:space="preserve"
19312+ filename="../pango/pango-layout.h"
19313+ line="71">wrap lines at word boundaries, but fall back to
19314+ character boundaries if there is not enough space for a full word.</doc>
19315+ </member>
19316+ </enumeration>
19317+ <function name="attr_allow_breaks_new"
19318+ c:identifier="pango_attr_allow_breaks_new"
19319+ version="1.44">
19320+ <doc xml:space="preserve"
19321+ filename="../pango/pango-attributes.c"
19322+ line="1287">Create a new allow-breaks attribute.
19323+
19324+If breaks are disabled, the range will be kept in a
19325+single run, as far as possible.</doc>
19326+ <source-position filename="../pango/pango-attributes.h" line="589"/>
19327+ <return-value transfer-ownership="full">
19328+ <doc xml:space="preserve"
19329+ filename="../pango/pango-attributes.c"
19330+ line="1296">the newly allocated
19331+ `PangoAttribute`, which should be freed with
19332+ [method@Pango.Attribute.destroy]</doc>
19333+ <type name="Attribute" c:type="PangoAttribute*"/>
19334+ </return-value>
19335+ <parameters>
19336+ <parameter name="allow_breaks" transfer-ownership="none">
19337+ <doc xml:space="preserve"
19338+ filename="../pango/pango-attributes.c"
19339+ line="1289">%TRUE if we line breaks are allowed</doc>
19340+ <type name="gboolean" c:type="gboolean"/>
19341+ </parameter>
19342+ </parameters>
19343+ </function>
19344+ <function name="attr_background_alpha_new"
19345+ c:identifier="pango_attr_background_alpha_new"
19346+ version="1.38">
19347+ <doc xml:space="preserve"
19348+ filename="../pango/pango-attributes.c"
19349+ line="1262">Create a new background alpha attribute.</doc>
19350+ <source-position filename="../pango/pango-attributes.h" line="587"/>
19351+ <return-value transfer-ownership="full">
19352+ <doc xml:space="preserve"
19353+ filename="../pango/pango-attributes.c"
19354+ line="1268">the newly allocated
19355+ `PangoAttribute`, which should be freed with
19356+ [method@Pango.Attribute.destroy]</doc>
19357+ <type name="Attribute" c:type="PangoAttribute*"/>
19358+ </return-value>
19359+ <parameters>
19360+ <parameter name="alpha" transfer-ownership="none">
19361+ <doc xml:space="preserve"
19362+ filename="../pango/pango-attributes.c"
19363+ line="1264">the alpha value, between 1 and 65536</doc>
19364+ <type name="guint16" c:type="guint16"/>
19365+ </parameter>
19366+ </parameters>
19367+ </function>
19368+ <function name="attr_background_new"
19369+ c:identifier="pango_attr_background_new">
19370+ <doc xml:space="preserve"
19371+ filename="../pango/pango-attributes.c"
19372+ line="610">Create a new background color attribute.</doc>
19373+ <source-position filename="../pango/pango-attributes.h" line="527"/>
19374+ <return-value transfer-ownership="full">
19375+ <doc xml:space="preserve"
19376+ filename="../pango/pango-attributes.c"
19377+ line="618">the newly allocated
19378+ `PangoAttribute`, which should be freed with
19379+ [method@Pango.Attribute.destroy]</doc>
19380+ <type name="Attribute" c:type="PangoAttribute*"/>
19381+ </return-value>
19382+ <parameters>
19383+ <parameter name="red" transfer-ownership="none">
19384+ <doc xml:space="preserve"
19385+ filename="../pango/pango-attributes.c"
19386+ line="612">the red value (ranging from 0 to 65535)</doc>
19387+ <type name="guint16" c:type="guint16"/>
19388+ </parameter>
19389+ <parameter name="green" transfer-ownership="none">
19390+ <doc xml:space="preserve"
19391+ filename="../pango/pango-attributes.c"
19392+ line="613">the green value</doc>
19393+ <type name="guint16" c:type="guint16"/>
19394+ </parameter>
19395+ <parameter name="blue" transfer-ownership="none">
19396+ <doc xml:space="preserve"
19397+ filename="../pango/pango-attributes.c"
19398+ line="614">the blue value</doc>
19399+ <type name="guint16" c:type="guint16"/>
19400+ </parameter>
19401+ </parameters>
19402+ </function>
19403+ <function name="attr_baseline_shift_new"
19404+ c:identifier="pango_attr_baseline_shift_new"
19405+ version="1.50">
19406+ <doc xml:space="preserve"
19407+ filename="../pango/pango-attributes.c"
19408+ line="926">Create a new baseline displacement attribute.
19409+
19410+The effect of this attribute is to shift the baseline of a run,
19411+relative to the run of preceding run.
19412+
19413+&lt;picture&gt;
19414+ &lt;source srcset="baseline-shift-dark.png" media="(prefers-color-scheme: dark)"&gt;
19415+ &lt;img alt="Baseline Shift" src="baseline-shift-light.png"&gt;
19416+&lt;/picture&gt;</doc>
19417+ <source-position filename="../pango/pango-attributes.h" line="560"/>
19418+ <return-value transfer-ownership="full">
19419+ <doc xml:space="preserve"
19420+ filename="../pango/pango-attributes.c"
19421+ line="942">the newly allocated
19422+ `PangoAttribute`, which should be freed with
19423+ [method@Pango.Attribute.destroy]</doc>
19424+ <type name="Attribute" c:type="PangoAttribute*"/>
19425+ </return-value>
19426+ <parameters>
19427+ <parameter name="shift" transfer-ownership="none">
19428+ <doc xml:space="preserve"
19429+ filename="../pango/pango-attributes.c"
19430+ line="928">either a `PangoBaselineShift` enumeration value or an absolute value (&gt; 1024)
19431+ in Pango units, relative to the baseline of the previous run.
19432+ Positive values displace the text upwards.</doc>
19433+ <type name="gint" c:type="int"/>
19434+ </parameter>
19435+ </parameters>
19436+ </function>
19437+ <function name="attr_break" c:identifier="pango_attr_break" version="1.50">
19438+ <doc xml:space="preserve"
19439+ filename="../pango/break.c"
19440+ line="2273">Apply customization from attributes to the breaks in @attrs.
19441+
19442+The line breaks are assumed to have been produced
19443+by [func@Pango.default_break] and [func@Pango.tailor_break].</doc>
19444+ <source-position filename="../pango/pango-break.h" line="135"/>
19445+ <return-value transfer-ownership="none">
19446+ <type name="none" c:type="void"/>
19447+ </return-value>
19448+ <parameters>
19449+ <parameter name="text" transfer-ownership="none">
19450+ <doc xml:space="preserve"
19451+ filename="../pango/break.c"
19452+ line="2275">text to break. Must be valid UTF-8</doc>
19453+ <type name="utf8" c:type="const char*"/>
19454+ </parameter>
19455+ <parameter name="length" transfer-ownership="none">
19456+ <doc xml:space="preserve"
19457+ filename="../pango/break.c"
19458+ line="2276">length of text in bytes (may be -1 if @text is nul-terminated)</doc>
19459+ <type name="gint" c:type="int"/>
19460+ </parameter>
19461+ <parameter name="attr_list" transfer-ownership="none">
19462+ <doc xml:space="preserve"
19463+ filename="../pango/break.c"
19464+ line="2277">`PangoAttrList` to apply</doc>
19465+ <type name="AttrList" c:type="PangoAttrList*"/>
19466+ </parameter>
19467+ <parameter name="offset" transfer-ownership="none">
19468+ <doc xml:space="preserve"
19469+ filename="../pango/break.c"
19470+ line="2278">Byte offset of @text from the beginning of the paragraph</doc>
19471+ <type name="gint" c:type="int"/>
19472+ </parameter>
19473+ <parameter name="attrs" transfer-ownership="none">
19474+ <doc xml:space="preserve"
19475+ filename="../pango/break.c"
19476+ line="2279">array with one `PangoLogAttr`
19477+ per character in @text, plus one extra, to be filled in</doc>
19478+ <array length="5" zero-terminated="0" c:type="PangoLogAttr*">
19479+ <type name="LogAttr" c:type="PangoLogAttr"/>
19480+ </array>
19481+ </parameter>
19482+ <parameter name="attrs_len" transfer-ownership="none">
19483+ <doc xml:space="preserve"
19484+ filename="../pango/break.c"
19485+ line="2281">length of @attrs array</doc>
19486+ <type name="gint" c:type="int"/>
19487+ </parameter>
19488+ </parameters>
19489+ </function>
19490+ <function name="attr_fallback_new"
19491+ c:identifier="pango_attr_fallback_new"
19492+ version="1.4">
19493+ <doc xml:space="preserve"
19494+ filename="../pango/pango-attributes.c"
19495+ line="1017">Create a new font fallback attribute.
19496+
19497+If fallback is disabled, characters will only be
19498+used from the closest matching font on the system.
19499+No fallback will be done to other fonts on the system
19500+that might contain the characters in the text.</doc>
19501+ <source-position filename="../pango/pango-attributes.h" line="566"/>
19502+ <return-value transfer-ownership="full">
19503+ <doc xml:space="preserve"
19504+ filename="../pango/pango-attributes.c"
19505+ line="1029">the newly allocated
19506+ `PangoAttribute`, which should be freed with
19507+ [method@Pango.Attribute.destroy]</doc>
19508+ <type name="Attribute" c:type="PangoAttribute*"/>
19509+ </return-value>
19510+ <parameters>
19511+ <parameter name="enable_fallback" transfer-ownership="none">
19512+ <doc xml:space="preserve"
19513+ filename="../pango/pango-attributes.c"
19514+ line="1019">%TRUE if we should fall back on other fonts
19515+ for characters the active font is missing</doc>
19516+ <type name="gboolean" c:type="gboolean"/>
19517+ </parameter>
19518+ </parameters>
19519+ </function>
19520+ <function name="attr_family_new" c:identifier="pango_attr_family_new">
19521+ <doc xml:space="preserve"
19522+ filename="../pango/pango-attributes.c"
19523+ line="529">Create a new font family attribute.</doc>
19524+ <source-position filename="../pango/pango-attributes.h" line="521"/>
19525+ <return-value transfer-ownership="full">
19526+ <doc xml:space="preserve"
19527+ filename="../pango/pango-attributes.c"
19528+ line="535">the newly allocated
19529+ `PangoAttribute`, which should be freed with
19530+ [method@Pango.Attribute.destroy]</doc>
19531+ <type name="Attribute" c:type="PangoAttribute*"/>
19532+ </return-value>
19533+ <parameters>
19534+ <parameter name="family" transfer-ownership="none">
19535+ <doc xml:space="preserve"
19536+ filename="../pango/pango-attributes.c"
19537+ line="531">the family or comma-separated list of families</doc>
19538+ <type name="utf8" c:type="const char*"/>
19539+ </parameter>
19540+ </parameters>
19541+ </function>
19542+ <function name="attr_font_desc_new"
19543+ c:identifier="pango_attr_font_desc_new"
19544+ moved-to="AttrFontDesc.new">
19545+ <doc xml:space="preserve"
19546+ filename="../pango/pango-attributes.c"
19547+ line="762">Create a new font description attribute.
19548+
19549+This attribute allows setting family, style, weight, variant,
19550+stretch, and size simultaneously.</doc>
19551+ <source-position filename="../pango/pango-attributes.h" line="543"/>
19552+ <return-value transfer-ownership="full">
19553+ <doc xml:space="preserve"
19554+ filename="../pango/pango-attributes.c"
19555+ line="771">the newly allocated
19556+ `PangoAttribute`, which should be freed with
19557+ [method@Pango.Attribute.destroy]</doc>
19558+ <type name="Attribute" c:type="PangoAttribute*"/>
19559+ </return-value>
19560+ <parameters>
19561+ <parameter name="desc" transfer-ownership="none">
19562+ <doc xml:space="preserve"
19563+ filename="../pango/pango-attributes.c"
19564+ line="764">the font description</doc>
19565+ <type name="FontDescription" c:type="const PangoFontDescription*"/>
19566+ </parameter>
19567+ </parameters>
19568+ </function>
19569+ <function name="attr_font_features_new"
19570+ c:identifier="pango_attr_font_features_new"
19571+ moved-to="AttrFontFeatures.new"
19572+ version="1.38">
19573+ <doc xml:space="preserve"
19574+ filename="../pango/pango-attributes.c"
19575+ line="1206">Create a new font features tag attribute.
19576+
19577+You can use this attribute to select OpenType font features like small-caps,
19578+alternative glyphs, ligatures, etc. for fonts that support them.</doc>
19579+ <source-position filename="../pango/pango-attributes.h" line="583"/>
19580+ <return-value transfer-ownership="full">
19581+ <doc xml:space="preserve"
19582+ filename="../pango/pango-attributes.c"
19583+ line="1216">the newly allocated
19584+ `PangoAttribute`, which should be freed with
19585+ [method@Pango.Attribute.destroy]</doc>
19586+ <type name="Attribute" c:type="PangoAttribute*"/>
19587+ </return-value>
19588+ <parameters>
19589+ <parameter name="features" transfer-ownership="none">
19590+ <doc xml:space="preserve"
19591+ filename="../pango/pango-attributes.c"
19592+ line="1208">a string with OpenType font features, with the syntax of the [CSS
19593+font-feature-settings property](https://www.w3.org/TR/css-fonts-4/#font-rend-desc)</doc>
19594+ <type name="utf8" c:type="const char*"/>
19595+ </parameter>
19596+ </parameters>
19597+ </function>
19598+ <function name="attr_font_scale_new"
19599+ c:identifier="pango_attr_font_scale_new"
19600+ version="1.50">
19601+ <doc xml:space="preserve"
19602+ filename="../pango/pango-attributes.c"
19603+ line="961">Create a new font scale attribute.
19604+
19605+The effect of this attribute is to change the font size of a run,
19606+relative to the size of preceding run.</doc>
19607+ <source-position filename="../pango/pango-attributes.h" line="562"/>
19608+ <return-value transfer-ownership="full">
19609+ <doc xml:space="preserve"
19610+ filename="../pango/pango-attributes.c"
19611+ line="972">the newly allocated
19612+ `PangoAttribute`, which should be freed with
19613+ [method@Pango.Attribute.destroy]</doc>
19614+ <type name="Attribute" c:type="PangoAttribute*"/>
19615+ </return-value>
19616+ <parameters>
19617+ <parameter name="scale" transfer-ownership="none">
19618+ <doc xml:space="preserve"
19619+ filename="../pango/pango-attributes.c"
19620+ line="963">a `PangoFontScale` value, which indicates font size change relative
19621+ to the size of the previous run.</doc>
19622+ <type name="FontScale" c:type="PangoFontScale"/>
19623+ </parameter>
19624+ </parameters>
19625+ </function>
19626+ <function name="attr_foreground_alpha_new"
19627+ c:identifier="pango_attr_foreground_alpha_new"
19628+ version="1.38">
19629+ <doc xml:space="preserve"
19630+ filename="../pango/pango-attributes.c"
19631+ line="1237">Create a new foreground alpha attribute.</doc>
19632+ <source-position filename="../pango/pango-attributes.h" line="585"/>
19633+ <return-value transfer-ownership="full">
19634+ <doc xml:space="preserve"
19635+ filename="../pango/pango-attributes.c"
19636+ line="1243">the newly allocated
19637+ `PangoAttribute`, which should be freed with
19638+ [method@Pango.Attribute.destroy]</doc>
19639+ <type name="Attribute" c:type="PangoAttribute*"/>
19640+ </return-value>
19641+ <parameters>
19642+ <parameter name="alpha" transfer-ownership="none">
19643+ <doc xml:space="preserve"
19644+ filename="../pango/pango-attributes.c"
19645+ line="1239">the alpha value, between 1 and 65536</doc>
19646+ <type name="guint16" c:type="guint16"/>
19647+ </parameter>
19648+ </parameters>
19649+ </function>
19650+ <function name="attr_foreground_new"
19651+ c:identifier="pango_attr_foreground_new">
19652+ <doc xml:space="preserve"
19653+ filename="../pango/pango-attributes.c"
19654+ line="583">Create a new foreground color attribute.</doc>
19655+ <source-position filename="../pango/pango-attributes.h" line="523"/>
19656+ <return-value transfer-ownership="full">
19657+ <doc xml:space="preserve"
19658+ filename="../pango/pango-attributes.c"
19659+ line="591">the newly allocated
19660+ `PangoAttribute`, which should be freed with
19661+ [method@Pango.Attribute.destroy]</doc>
19662+ <type name="Attribute" c:type="PangoAttribute*"/>
19663+ </return-value>
19664+ <parameters>
19665+ <parameter name="red" transfer-ownership="none">
19666+ <doc xml:space="preserve"
19667+ filename="../pango/pango-attributes.c"
19668+ line="585">the red value (ranging from 0 to 65535)</doc>
19669+ <type name="guint16" c:type="guint16"/>
19670+ </parameter>
19671+ <parameter name="green" transfer-ownership="none">
19672+ <doc xml:space="preserve"
19673+ filename="../pango/pango-attributes.c"
19674+ line="586">the green value</doc>
19675+ <type name="guint16" c:type="guint16"/>
19676+ </parameter>
19677+ <parameter name="blue" transfer-ownership="none">
19678+ <doc xml:space="preserve"
19679+ filename="../pango/pango-attributes.c"
19680+ line="587">the blue value</doc>
19681+ <type name="guint16" c:type="guint16"/>
19682+ </parameter>
19683+ </parameters>
19684+ </function>
19685+ <function name="attr_gravity_hint_new"
19686+ c:identifier="pango_attr_gravity_hint_new"
19687+ version="1.16">
19688+ <doc xml:space="preserve"
19689+ filename="../pango/pango-attributes.c"
19690+ line="1181">Create a new gravity hint attribute.</doc>
19691+ <source-position filename="../pango/pango-attributes.h" line="581"/>
19692+ <return-value transfer-ownership="full">
19693+ <doc xml:space="preserve"
19694+ filename="../pango/pango-attributes.c"
19695+ line="1187">the newly allocated
19696+ `PangoAttribute`, which should be freed with
19697+ [method@Pango.Attribute.destroy]</doc>
19698+ <type name="Attribute" c:type="PangoAttribute*"/>
19699+ </return-value>
19700+ <parameters>
19701+ <parameter name="hint" transfer-ownership="none">
19702+ <doc xml:space="preserve"
19703+ filename="../pango/pango-attributes.c"
19704+ line="1183">the gravity hint value</doc>
19705+ <type name="GravityHint" c:type="PangoGravityHint"/>
19706+ </parameter>
19707+ </parameters>
19708+ </function>
19709+ <function name="attr_gravity_new"
19710+ c:identifier="pango_attr_gravity_new"
19711+ version="1.16">
19712+ <doc xml:space="preserve"
19713+ filename="../pango/pango-attributes.c"
19714+ line="1154">Create a new gravity attribute.</doc>
19715+ <source-position filename="../pango/pango-attributes.h" line="579"/>
19716+ <return-value transfer-ownership="full">
19717+ <doc xml:space="preserve"
19718+ filename="../pango/pango-attributes.c"
19719+ line="1160">the newly allocated
19720+ `PangoAttribute`, which should be freed with
19721+ [method@Pango.Attribute.destroy]</doc>
19722+ <type name="Attribute" c:type="PangoAttribute*"/>
19723+ </return-value>
19724+ <parameters>
19725+ <parameter name="gravity" transfer-ownership="none">
19726+ <doc xml:space="preserve"
19727+ filename="../pango/pango-attributes.c"
19728+ line="1156">the gravity value; should not be %PANGO_GRAVITY_AUTO</doc>
19729+ <type name="Gravity" c:type="PangoGravity"/>
19730+ </parameter>
19731+ </parameters>
19732+ </function>
19733+ <function name="attr_insert_hyphens_new"
19734+ c:identifier="pango_attr_insert_hyphens_new"
19735+ version="1.44">
19736+ <doc xml:space="preserve"
19737+ filename="../pango/pango-attributes.c"
19738+ line="1315">Create a new insert-hyphens attribute.
19739+
19740+Pango will insert hyphens when breaking lines in
19741+the middle of a word. This attribute can be used
19742+to suppress the hyphen.</doc>
19743+ <source-position filename="../pango/pango-attributes.h" line="597"/>
19744+ <return-value transfer-ownership="full">
19745+ <doc xml:space="preserve"
19746+ filename="../pango/pango-attributes.c"
19747+ line="1325">the newly allocated
19748+ `PangoAttribute`, which should be freed with
19749+ [method@Pango.Attribute.destroy]</doc>
19750+ <type name="Attribute" c:type="PangoAttribute*"/>
19751+ </return-value>
19752+ <parameters>
19753+ <parameter name="insert_hyphens" transfer-ownership="none">
19754+ <doc xml:space="preserve"
19755+ filename="../pango/pango-attributes.c"
19756+ line="1317">%TRUE if hyphens should be inserted</doc>
19757+ <type name="gboolean" c:type="gboolean"/>
19758+ </parameter>
19759+ </parameters>
19760+ </function>
19761+ <function name="attr_language_new"
19762+ c:identifier="pango_attr_language_new"
19763+ moved-to="AttrLanguage.new">
19764+ <doc xml:space="preserve"
19765+ filename="../pango/pango-attributes.c"
19766+ line="554">Create a new language tag attribute.</doc>
19767+ <source-position filename="../pango/pango-attributes.h" line="519"/>
19768+ <return-value transfer-ownership="full">
19769+ <doc xml:space="preserve"
19770+ filename="../pango/pango-attributes.c"
19771+ line="560">the newly allocated
19772+ `PangoAttribute`, which should be freed with
19773+ [method@Pango.Attribute.destroy]</doc>
19774+ <type name="Attribute" c:type="PangoAttribute*"/>
19775+ </return-value>
19776+ <parameters>
19777+ <parameter name="language" transfer-ownership="none">
19778+ <doc xml:space="preserve"
19779+ filename="../pango/pango-attributes.c"
19780+ line="556">language tag</doc>
19781+ <type name="Language" c:type="PangoLanguage*"/>
19782+ </parameter>
19783+ </parameters>
19784+ </function>
19785+ <function name="attr_letter_spacing_new"
19786+ c:identifier="pango_attr_letter_spacing_new"
19787+ version="1.6">
19788+ <doc xml:space="preserve"
19789+ filename="../pango/pango-attributes.c"
19790+ line="1048">Create a new letter-spacing attribute.</doc>
19791+ <source-position filename="../pango/pango-attributes.h" line="568"/>
19792+ <return-value transfer-ownership="full">
19793+ <doc xml:space="preserve"
19794+ filename="../pango/pango-attributes.c"
19795+ line="1055">the newly allocated
19796+ `PangoAttribute`, which should be freed with
19797+ [method@Pango.Attribute.destroy]</doc>
19798+ <type name="Attribute" c:type="PangoAttribute*"/>
19799+ </return-value>
19800+ <parameters>
19801+ <parameter name="letter_spacing" transfer-ownership="none">
19802+ <doc xml:space="preserve"
19803+ filename="../pango/pango-attributes.c"
19804+ line="1050">amount of extra space to add between
19805+ graphemes of the text, in Pango units</doc>
19806+ <type name="gint" c:type="int"/>
19807+ </parameter>
19808+ </parameters>
19809+ </function>
19810+ <function name="attr_line_height_new"
19811+ c:identifier="pango_attr_line_height_new"
19812+ version="1.50">
19813+ <doc xml:space="preserve"
19814+ filename="../pango/pango-attributes.c"
19815+ line="1481">Modify the height of logical line extents by a factor.
19816+
19817+This affects the values returned by
19818+[method@Pango.LayoutLine.get_extents],
19819+[method@Pango.LayoutLine.get_pixel_extents] and
19820+[method@Pango.LayoutIter.get_line_extents].</doc>
19821+ <source-position filename="../pango/pango-attributes.h" line="607"/>
19822+ <return-value transfer-ownership="full">
19823+ <type name="Attribute" c:type="PangoAttribute*"/>
19824+ </return-value>
19825+ <parameters>
19826+ <parameter name="factor" transfer-ownership="none">
19827+ <doc xml:space="preserve"
19828+ filename="../pango/pango-attributes.c"
19829+ line="1483">the scaling factor to apply to the logical height</doc>
19830+ <type name="gdouble" c:type="double"/>
19831+ </parameter>
19832+ </parameters>
19833+ </function>
19834+ <function name="attr_line_height_new_absolute"
19835+ c:identifier="pango_attr_line_height_new_absolute"
19836+ version="1.50">
19837+ <doc xml:space="preserve"
19838+ filename="../pango/pango-attributes.c"
19839+ line="1508">Override the height of logical line extents to be @height.
19840+
19841+This affects the values returned by
19842+[method@Pango.LayoutLine.get_extents],
19843+[method@Pango.LayoutLine.get_pixel_extents] and
19844+[method@Pango.LayoutIter.get_line_extents].</doc>
19845+ <source-position filename="../pango/pango-attributes.h" line="609"/>
19846+ <return-value transfer-ownership="full">
19847+ <type name="Attribute" c:type="PangoAttribute*"/>
19848+ </return-value>
19849+ <parameters>
19850+ <parameter name="height" transfer-ownership="none">
19851+ <doc xml:space="preserve"
19852+ filename="../pango/pango-attributes.c"
19853+ line="1510">the line height, in %PANGO_SCALE-ths of a point</doc>
19854+ <type name="gint" c:type="int"/>
19855+ </parameter>
19856+ </parameters>
19857+ </function>
19858+ <function name="attr_list_from_string"
19859+ c:identifier="pango_attr_list_from_string"
19860+ moved-to="AttrList.from_string"
19861+ version="1.50">
19862+ <doc xml:space="preserve"
19863+ filename="../pango/pango-attributes.c"
19864+ line="2749">Deserializes a `PangoAttrList` from a string.
19865+
19866+This is the counterpart to [method@Pango.AttrList.to_string].
19867+See that functions for details about the format.</doc>
19868+ <source-position filename="../pango/pango-attributes.h" line="713"/>
19869+ <return-value transfer-ownership="full" nullable="1">
19870+ <doc xml:space="preserve"
19871+ filename="../pango/pango-attributes.c"
19872+ line="2758">a new `PangoAttrList`</doc>
19873+ <type name="AttrList" c:type="PangoAttrList*"/>
19874+ </return-value>
19875+ <parameters>
19876+ <parameter name="text" transfer-ownership="none">
19877+ <doc xml:space="preserve"
19878+ filename="../pango/pango-attributes.c"
19879+ line="2751">a string</doc>
19880+ <type name="utf8" c:type="const char*"/>
19881+ </parameter>
19882+ </parameters>
19883+ </function>
19884+ <function name="attr_overline_color_new"
19885+ c:identifier="pango_attr_overline_color_new"
19886+ version="1.46">
19887+ <doc xml:space="preserve"
19888+ filename="../pango/pango-attributes.c"
19889+ line="1449">Create a new overline color attribute.
19890+
19891+This attribute modifies the color of overlines.
19892+If not set, overlines will use the foreground color.</doc>
19893+ <source-position filename="../pango/pango-attributes.h" line="601"/>
19894+ <return-value transfer-ownership="full">
19895+ <doc xml:space="preserve"
19896+ filename="../pango/pango-attributes.c"
19897+ line="1460">the newly allocated
19898+ `PangoAttribute`, which should be freed with
19899+ [method@Pango.Attribute.destroy]</doc>
19900+ <type name="Attribute" c:type="PangoAttribute*"/>
19901+ </return-value>
19902+ <parameters>
19903+ <parameter name="red" transfer-ownership="none">
19904+ <doc xml:space="preserve"
19905+ filename="../pango/pango-attributes.c"
19906+ line="1451">the red value (ranging from 0 to 65535)</doc>
19907+ <type name="guint16" c:type="guint16"/>
19908+ </parameter>
19909+ <parameter name="green" transfer-ownership="none">
19910+ <doc xml:space="preserve"
19911+ filename="../pango/pango-attributes.c"
19912+ line="1452">the green value</doc>
19913+ <type name="guint16" c:type="guint16"/>
19914+ </parameter>
19915+ <parameter name="blue" transfer-ownership="none">
19916+ <doc xml:space="preserve"
19917+ filename="../pango/pango-attributes.c"
19918+ line="1453">the blue value</doc>
19919+ <type name="guint16" c:type="guint16"/>
19920+ </parameter>
19921+ </parameters>
19922+ </function>
19923+ <function name="attr_overline_new"
19924+ c:identifier="pango_attr_overline_new"
19925+ version="1.46">
19926+ <doc xml:space="preserve"
19927+ filename="../pango/pango-attributes.c"
19928+ line="1424">Create a new overline-style attribute.</doc>
19929+ <source-position filename="../pango/pango-attributes.h" line="599"/>
19930+ <return-value transfer-ownership="full">
19931+ <doc xml:space="preserve"
19932+ filename="../pango/pango-attributes.c"
19933+ line="1430">the newly allocated
19934+ `PangoAttribute`, which should be freed with
19935+ [method@Pango.Attribute.destroy]</doc>
19936+ <type name="Attribute" c:type="PangoAttribute*"/>
19937+ </return-value>
19938+ <parameters>
19939+ <parameter name="overline" transfer-ownership="none">
19940+ <doc xml:space="preserve"
19941+ filename="../pango/pango-attributes.c"
19942+ line="1426">the overline style</doc>
19943+ <type name="Overline" c:type="PangoOverline"/>
19944+ </parameter>
19945+ </parameters>
19946+ </function>
19947+ <function name="attr_rise_new" c:identifier="pango_attr_rise_new">
19948+ <doc xml:space="preserve"
19949+ filename="../pango/pango-attributes.c"
19950+ line="902">Create a new baseline displacement attribute.</doc>
19951+ <source-position filename="../pango/pango-attributes.h" line="558"/>
19952+ <return-value transfer-ownership="full">
19953+ <doc xml:space="preserve"
19954+ filename="../pango/pango-attributes.c"
19955+ line="909">the newly allocated
19956+ `PangoAttribute`, which should be freed with
19957+ [method@Pango.Attribute.destroy]</doc>
19958+ <type name="Attribute" c:type="PangoAttribute*"/>
19959+ </return-value>
19960+ <parameters>
19961+ <parameter name="rise" transfer-ownership="none">
19962+ <doc xml:space="preserve"
19963+ filename="../pango/pango-attributes.c"
19964+ line="904">the amount that the text should be displaced vertically,
19965+ in Pango units. Positive values displace the text upwards.</doc>
19966+ <type name="gint" c:type="int"/>
19967+ </parameter>
19968+ </parameters>
19969+ </function>
19970+ <function name="attr_scale_new" c:identifier="pango_attr_scale_new">
19971+ <doc xml:space="preserve"
19972+ filename="../pango/pango-attributes.c"
19973+ line="991">Create a new font size scale attribute.
19974+
19975+The base font for the affected text will have
19976+its size multiplied by @scale_factor.</doc>
19977+ <source-position filename="../pango/pango-attributes.h" line="564"/>
19978+ <return-value transfer-ownership="full">
19979+ <doc xml:space="preserve"
19980+ filename="../pango/pango-attributes.c"
19981+ line="1000">the newly allocated
19982+ `PangoAttribute`, which should be freed with
19983+ [method@Pango.Attribute.destroy]</doc>
19984+ <type name="Attribute" c:type="PangoAttribute*"/>
19985+ </return-value>
19986+ <parameters>
19987+ <parameter name="scale_factor" transfer-ownership="none">
19988+ <doc xml:space="preserve"
19989+ filename="../pango/pango-attributes.c"
19990+ line="993">factor to scale the font</doc>
19991+ <type name="gdouble" c:type="double"/>
19992+ </parameter>
19993+ </parameters>
19994+ </function>
19995+ <function name="attr_sentence_new"
19996+ c:identifier="pango_attr_sentence_new"
19997+ version="1.50">
19998+ <doc xml:space="preserve"
19999+ filename="../pango/pango-attributes.c"
20000+ line="1397">Marks the range of the attribute as a single sentence.
20001+
20002+Note that this may require adjustments to word and
20003+sentence classification around the range.</doc>
20004+ <source-position filename="../pango/pango-attributes.h" line="594"/>
20005+ <return-value transfer-ownership="full">
20006+ <doc xml:space="preserve"
20007+ filename="../pango/pango-attributes.c"
20008+ line="1405">the newly allocated
20009+ `PangoAttribute`, which should be freed with
20010+ [method@Pango.Attribute.destroy]</doc>
20011+ <type name="Attribute" c:type="PangoAttribute*"/>
20012+ </return-value>
20013+ </function>
20014+ <function name="attr_shape_new"
20015+ c:identifier="pango_attr_shape_new"
20016+ moved-to="AttrShape.new">
20017+ <doc xml:space="preserve"
20018+ filename="../pango/pango-attributes.c"
20019+ line="1127">Create a new shape attribute.
20020+
20021+A shape is used to impose a particular ink and logical
20022+rectangle on the result of shaping a particular glyph.
20023+This might be used, for instance, for embedding a picture
20024+or a widget inside a `PangoLayout`.</doc>
20025+ <source-position filename="../pango/pango-attributes.h" line="570"/>
20026+ <return-value transfer-ownership="full">
20027+ <doc xml:space="preserve"
20028+ filename="../pango/pango-attributes.c"
20029+ line="1139">the newly allocated
20030+ `PangoAttribute`, which should be freed with
20031+ [method@Pango.Attribute.destroy]</doc>
20032+ <type name="Attribute" c:type="PangoAttribute*"/>
20033+ </return-value>
20034+ <parameters>
20035+ <parameter name="ink_rect" transfer-ownership="none">
20036+ <doc xml:space="preserve"
20037+ filename="../pango/pango-attributes.c"
20038+ line="1129">ink rectangle to assign to each character</doc>
20039+ <type name="Rectangle" c:type="const PangoRectangle*"/>
20040+ </parameter>
20041+ <parameter name="logical_rect" transfer-ownership="none">
20042+ <doc xml:space="preserve"
20043+ filename="../pango/pango-attributes.c"
20044+ line="1130">logical rectangle to assign to each character</doc>
20045+ <type name="Rectangle" c:type="const PangoRectangle*"/>
20046+ </parameter>
20047+ </parameters>
20048+ </function>
20049+ <function name="attr_shape_new_with_data"
20050+ c:identifier="pango_attr_shape_new_with_data"
20051+ moved-to="AttrShape.new_with_data"
20052+ version="1.8">
20053+ <doc xml:space="preserve"
20054+ filename="../pango/pango-attributes.c"
20055+ line="1074">Creates a new shape attribute.
20056+
20057+Like [func@Pango.AttrShape.new], but a user data pointer
20058+is also provided; this pointer can be accessed when later
20059+rendering the glyph.</doc>
20060+ <source-position filename="../pango/pango-attributes.h" line="573"/>
20061+ <return-value transfer-ownership="full">
20062+ <doc xml:space="preserve"
20063+ filename="../pango/pango-attributes.c"
20064+ line="1091">the newly allocated
20065+ `PangoAttribute`, which should be freed with
20066+ [method@Pango.Attribute.destroy]</doc>
20067+ <type name="Attribute" c:type="PangoAttribute*"/>
20068+ </return-value>
20069+ <parameters>
20070+ <parameter name="ink_rect" transfer-ownership="none">
20071+ <doc xml:space="preserve"
20072+ filename="../pango/pango-attributes.c"
20073+ line="1076">ink rectangle to assign to each character</doc>
20074+ <type name="Rectangle" c:type="const PangoRectangle*"/>
20075+ </parameter>
20076+ <parameter name="logical_rect" transfer-ownership="none">
20077+ <doc xml:space="preserve"
20078+ filename="../pango/pango-attributes.c"
20079+ line="1077">logical rectangle to assign to each character</doc>
20080+ <type name="Rectangle" c:type="const PangoRectangle*"/>
20081+ </parameter>
20082+ <parameter name="data"
20083+ transfer-ownership="none"
20084+ nullable="1"
20085+ allow-none="1">
20086+ <doc xml:space="preserve"
20087+ filename="../pango/pango-attributes.c"
20088+ line="1078">user data pointer</doc>
20089+ <type name="gpointer" c:type="gpointer"/>
20090+ </parameter>
20091+ <parameter name="copy_func"
20092+ transfer-ownership="none"
20093+ nullable="1"
20094+ allow-none="1"
20095+ scope="notified"
20096+ destroy="4">
20097+ <doc xml:space="preserve"
20098+ filename="../pango/pango-attributes.c"
20099+ line="1079">function to copy @data when the
20100+ attribute is copied. If %NULL, @data is simply copied
20101+ as a pointer</doc>
20102+ <type name="AttrDataCopyFunc" c:type="PangoAttrDataCopyFunc"/>
20103+ </parameter>
20104+ <parameter name="destroy_func"
20105+ transfer-ownership="none"
20106+ nullable="1"
20107+ allow-none="1"
20108+ scope="async">
20109+ <doc xml:space="preserve"
20110+ filename="../pango/pango-attributes.c"
20111+ line="1082">function to free @data when the
20112+ attribute is freed</doc>
20113+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
20114+ </parameter>
20115+ </parameters>
20116+ </function>
20117+ <function name="attr_show_new"
20118+ c:identifier="pango_attr_show_new"
20119+ version="1.44">
20120+ <doc xml:space="preserve"
20121+ filename="../pango/pango-attributes.c"
20122+ line="1344">Create a new attribute that influences how invisible
20123+characters are rendered.</doc>
20124+ <source-position filename="../pango/pango-attributes.h" line="605"/>
20125+ <return-value transfer-ownership="full">
20126+ <doc xml:space="preserve"
20127+ filename="../pango/pango-attributes.c"
20128+ line="1351">the newly allocated
20129+ `PangoAttribute`, which should be freed with
20130+ [method@Pango.Attribute.destroy]</doc>
20131+ <type name="Attribute" c:type="PangoAttribute*"/>
20132+ </return-value>
20133+ <parameters>
20134+ <parameter name="flags" transfer-ownership="none">
20135+ <doc xml:space="preserve"
20136+ filename="../pango/pango-attributes.c"
20137+ line="1346">`PangoShowFlags` to apply</doc>
20138+ <type name="ShowFlags" c:type="PangoShowFlags"/>
20139+ </parameter>
20140+ </parameters>
20141+ </function>
20142+ <function name="attr_size_new"
20143+ c:identifier="pango_attr_size_new"
20144+ moved-to="AttrSize.new">
20145+ <doc xml:space="preserve"
20146+ filename="../pango/pango-attributes.c"
20147+ line="637">Create a new font-size attribute in fractional points.</doc>
20148+ <source-position filename="../pango/pango-attributes.h" line="531"/>
20149+ <return-value transfer-ownership="full">
20150+ <doc xml:space="preserve"
20151+ filename="../pango/pango-attributes.c"
20152+ line="643">the newly allocated
20153+ `PangoAttribute`, which should be freed with
20154+ [method@Pango.Attribute.destroy]</doc>
20155+ <type name="Attribute" c:type="PangoAttribute*"/>
20156+ </return-value>
20157+ <parameters>
20158+ <parameter name="size" transfer-ownership="none">
20159+ <doc xml:space="preserve"
20160+ filename="../pango/pango-attributes.c"
20161+ line="639">the font size, in %PANGO_SCALE-ths of a point</doc>
20162+ <type name="gint" c:type="int"/>
20163+ </parameter>
20164+ </parameters>
20165+ </function>
20166+ <function name="attr_size_new_absolute"
20167+ c:identifier="pango_attr_size_new_absolute"
20168+ moved-to="AttrSize.new_absolute"
20169+ version="1.8">
20170+ <doc xml:space="preserve"
20171+ filename="../pango/pango-attributes.c"
20172+ line="653">Create a new font-size attribute in device units.</doc>
20173+ <source-position filename="../pango/pango-attributes.h" line="533"/>
20174+ <return-value transfer-ownership="full">
20175+ <doc xml:space="preserve"
20176+ filename="../pango/pango-attributes.c"
20177+ line="659">the newly allocated
20178+ `PangoAttribute`, which should be freed with
20179+ [method@Pango.Attribute.destroy]</doc>
20180+ <type name="Attribute" c:type="PangoAttribute*"/>
20181+ </return-value>
20182+ <parameters>
20183+ <parameter name="size" transfer-ownership="none">
20184+ <doc xml:space="preserve"
20185+ filename="../pango/pango-attributes.c"
20186+ line="655">the font size, in %PANGO_SCALE-ths of a device unit</doc>
20187+ <type name="gint" c:type="int"/>
20188+ </parameter>
20189+ </parameters>
20190+ </function>
20191+ <function name="attr_stretch_new" c:identifier="pango_attr_stretch_new">
20192+ <doc xml:space="preserve"
20193+ filename="../pango/pango-attributes.c"
20194+ line="739">Create a new font stretch attribute.</doc>
20195+ <source-position filename="../pango/pango-attributes.h" line="541"/>
20196+ <return-value transfer-ownership="full">
20197+ <doc xml:space="preserve"
20198+ filename="../pango/pango-attributes.c"
20199+ line="745">the newly allocated
20200+ `PangoAttribute`, which should be freed with
20201+ [method@Pango.Attribute.destroy]</doc>
20202+ <type name="Attribute" c:type="PangoAttribute*"/>
20203+ </return-value>
20204+ <parameters>
20205+ <parameter name="stretch" transfer-ownership="none">
20206+ <doc xml:space="preserve"
20207+ filename="../pango/pango-attributes.c"
20208+ line="741">the stretch</doc>
20209+ <type name="Stretch" c:type="PangoStretch"/>
20210+ </parameter>
20211+ </parameters>
20212+ </function>
20213+ <function name="attr_strikethrough_color_new"
20214+ c:identifier="pango_attr_strikethrough_color_new"
20215+ version="1.8">
20216+ <doc xml:space="preserve"
20217+ filename="../pango/pango-attributes.c"
20218+ line="870">Create a new strikethrough color attribute.
20219+
20220+This attribute modifies the color of strikethrough lines.
20221+If not set, strikethrough lines will use the foreground color.</doc>
20222+ <source-position filename="../pango/pango-attributes.h" line="554"/>
20223+ <return-value transfer-ownership="full">
20224+ <doc xml:space="preserve"
20225+ filename="../pango/pango-attributes.c"
20226+ line="881">the newly allocated
20227+ `PangoAttribute`, which should be freed with
20228+ [method@Pango.Attribute.destroy]</doc>
20229+ <type name="Attribute" c:type="PangoAttribute*"/>
20230+ </return-value>
20231+ <parameters>
20232+ <parameter name="red" transfer-ownership="none">
20233+ <doc xml:space="preserve"
20234+ filename="../pango/pango-attributes.c"
20235+ line="872">the red value (ranging from 0 to 65535)</doc>
20236+ <type name="guint16" c:type="guint16"/>
20237+ </parameter>
20238+ <parameter name="green" transfer-ownership="none">
20239+ <doc xml:space="preserve"
20240+ filename="../pango/pango-attributes.c"
20241+ line="873">the green value</doc>
20242+ <type name="guint16" c:type="guint16"/>
20243+ </parameter>
20244+ <parameter name="blue" transfer-ownership="none">
20245+ <doc xml:space="preserve"
20246+ filename="../pango/pango-attributes.c"
20247+ line="874">the blue value</doc>
20248+ <type name="guint16" c:type="guint16"/>
20249+ </parameter>
20250+ </parameters>
20251+ </function>
20252+ <function name="attr_strikethrough_new"
20253+ c:identifier="pango_attr_strikethrough_new">
20254+ <doc xml:space="preserve"
20255+ filename="../pango/pango-attributes.c"
20256+ line="847">Create a new strike-through attribute.</doc>
20257+ <source-position filename="../pango/pango-attributes.h" line="552"/>
20258+ <return-value transfer-ownership="full">
20259+ <doc xml:space="preserve"
20260+ filename="../pango/pango-attributes.c"
20261+ line="853">the newly allocated
20262+ `PangoAttribute`, which should be freed with
20263+ [method@Pango.Attribute.destroy]</doc>
20264+ <type name="Attribute" c:type="PangoAttribute*"/>
20265+ </return-value>
20266+ <parameters>
20267+ <parameter name="strikethrough" transfer-ownership="none">
20268+ <doc xml:space="preserve"
20269+ filename="../pango/pango-attributes.c"
20270+ line="849">%TRUE if the text should be struck-through</doc>
20271+ <type name="gboolean" c:type="gboolean"/>
20272+ </parameter>
20273+ </parameters>
20274+ </function>
20275+ <function name="attr_style_new" c:identifier="pango_attr_style_new">
20276+ <doc xml:space="preserve"
20277+ filename="../pango/pango-attributes.c"
20278+ line="671">Create a new font slant style attribute.</doc>
20279+ <source-position filename="../pango/pango-attributes.h" line="535"/>
20280+ <return-value transfer-ownership="full">
20281+ <doc xml:space="preserve"
20282+ filename="../pango/pango-attributes.c"
20283+ line="677">the newly allocated
20284+ `PangoAttribute`, which should be freed with
20285+ [method@Pango.Attribute.destroy]</doc>
20286+ <type name="Attribute" c:type="PangoAttribute*"/>
20287+ </return-value>
20288+ <parameters>
20289+ <parameter name="style" transfer-ownership="none">
20290+ <doc xml:space="preserve"
20291+ filename="../pango/pango-attributes.c"
20292+ line="673">the slant style</doc>
20293+ <type name="Style" c:type="PangoStyle"/>
20294+ </parameter>
20295+ </parameters>
20296+ </function>
20297+ <function name="attr_text_transform_new"
20298+ c:identifier="pango_attr_text_transform_new"
20299+ version="1.50">
20300+ <doc xml:space="preserve"
20301+ filename="../pango/pango-attributes.c"
20302+ line="1534">Create a new attribute that influences how characters
20303+are transformed during shaping.</doc>
20304+ <source-position filename="../pango/pango-attributes.h" line="611"/>
20305+ <return-value transfer-ownership="full">
20306+ <doc xml:space="preserve"
20307+ filename="../pango/pango-attributes.c"
20308+ line="1541">the newly allocated
20309+ `PangoAttribute`, which should be freed with
20310+ [method@Pango.Attribute.destroy]</doc>
20311+ <type name="Attribute" c:type="PangoAttribute*"/>
20312+ </return-value>
20313+ <parameters>
20314+ <parameter name="transform" transfer-ownership="none">
20315+ <doc xml:space="preserve"
20316+ filename="../pango/pango-attributes.c"
20317+ line="1536">`PangoTextTransform` to apply</doc>
20318+ <type name="TextTransform" c:type="PangoTextTransform"/>
20319+ </parameter>
20320+ </parameters>
20321+ </function>
20322+ <function name="attr_type_get_name"
20323+ c:identifier="pango_attr_type_get_name"
20324+ moved-to="AttrType.get_name"
20325+ version="1.22">
20326+ <doc xml:space="preserve"
20327+ filename="../pango/pango-attributes.c"
20328+ line="69">Fetches the attribute type name.
20329+
20330+The attribute type name is the string passed in
20331+when registering the type using
20332+[func@Pango.AttrType.register].
20333+
20334+The returned value is an interned string (see
20335+g_intern_string() for what that means) that should
20336+not be modified or freed.</doc>
20337+ <source-position filename="../pango/pango-attributes.h" line="506"/>
20338+ <return-value transfer-ownership="none" nullable="1">
20339+ <doc xml:space="preserve"
20340+ filename="../pango/pango-attributes.c"
20341+ line="83">the type ID name (which
20342+ may be %NULL), or %NULL if @type is a built-in Pango
20343+ attribute type or invalid.</doc>
20344+ <type name="utf8" c:type="const char*"/>
20345+ </return-value>
20346+ <parameters>
20347+ <parameter name="type" transfer-ownership="none">
20348+ <doc xml:space="preserve"
20349+ filename="../pango/pango-attributes.c"
20350+ line="71">an attribute type ID to fetch the name for</doc>
20351+ <type name="AttrType" c:type="PangoAttrType"/>
20352+ </parameter>
20353+ </parameters>
20354+ </function>
20355+ <function name="attr_type_register"
20356+ c:identifier="pango_attr_type_register"
20357+ moved-to="AttrType.register">
20358+ <doc xml:space="preserve"
20359+ filename="../pango/pango-attributes.c"
20360+ line="35">Allocate a new attribute type ID.
20361+
20362+The attribute type name can be accessed later
20363+by using [func@Pango.AttrType.get_name].</doc>
20364+ <source-position filename="../pango/pango-attributes.h" line="504"/>
20365+ <return-value transfer-ownership="none">
20366+ <doc xml:space="preserve"
20367+ filename="../pango/pango-attributes.c"
20368+ line="44">the new type ID.</doc>
20369+ <type name="AttrType" c:type="PangoAttrType"/>
20370+ </return-value>
20371+ <parameters>
20372+ <parameter name="name" transfer-ownership="none">
20373+ <doc xml:space="preserve"
20374+ filename="../pango/pango-attributes.c"
20375+ line="37">an identifier for the type</doc>
20376+ <type name="utf8" c:type="const char*"/>
20377+ </parameter>
20378+ </parameters>
20379+ </function>
20380+ <function name="attr_underline_color_new"
20381+ c:identifier="pango_attr_underline_color_new"
20382+ version="1.8">
20383+ <doc xml:space="preserve"
20384+ filename="../pango/pango-attributes.c"
20385+ line="815">Create a new underline color attribute.
20386+
20387+This attribute modifies the color of underlines.
20388+If not set, underlines will use the foreground color.</doc>
20389+ <source-position filename="../pango/pango-attributes.h" line="548"/>
20390+ <return-value transfer-ownership="full">
20391+ <doc xml:space="preserve"
20392+ filename="../pango/pango-attributes.c"
20393+ line="826">the newly allocated
20394+ `PangoAttribute`, which should be freed with
20395+ [method@Pango.Attribute.destroy]</doc>
20396+ <type name="Attribute" c:type="PangoAttribute*"/>
20397+ </return-value>
20398+ <parameters>
20399+ <parameter name="red" transfer-ownership="none">
20400+ <doc xml:space="preserve"
20401+ filename="../pango/pango-attributes.c"
20402+ line="817">the red value (ranging from 0 to 65535)</doc>
20403+ <type name="guint16" c:type="guint16"/>
20404+ </parameter>
20405+ <parameter name="green" transfer-ownership="none">
20406+ <doc xml:space="preserve"
20407+ filename="../pango/pango-attributes.c"
20408+ line="818">the green value</doc>
20409+ <type name="guint16" c:type="guint16"/>
20410+ </parameter>
20411+ <parameter name="blue" transfer-ownership="none">
20412+ <doc xml:space="preserve"
20413+ filename="../pango/pango-attributes.c"
20414+ line="819">the blue value</doc>
20415+ <type name="guint16" c:type="guint16"/>
20416+ </parameter>
20417+ </parameters>
20418+ </function>
20419+ <function name="attr_underline_new"
20420+ c:identifier="pango_attr_underline_new">
20421+ <doc xml:space="preserve"
20422+ filename="../pango/pango-attributes.c"
20423+ line="792">Create a new underline-style attribute.</doc>
20424+ <source-position filename="../pango/pango-attributes.h" line="546"/>
20425+ <return-value transfer-ownership="full">
20426+ <doc xml:space="preserve"
20427+ filename="../pango/pango-attributes.c"
20428+ line="798">the newly allocated
20429+ `PangoAttribute`, which should be freed with
20430+ [method@Pango.Attribute.destroy]</doc>
20431+ <type name="Attribute" c:type="PangoAttribute*"/>
20432+ </return-value>
20433+ <parameters>
20434+ <parameter name="underline" transfer-ownership="none">
20435+ <doc xml:space="preserve"
20436+ filename="../pango/pango-attributes.c"
20437+ line="794">the underline style</doc>
20438+ <type name="Underline" c:type="PangoUnderline"/>
20439+ </parameter>
20440+ </parameters>
20441+ </function>
20442+ <function name="attr_variant_new" c:identifier="pango_attr_variant_new">
20443+ <doc xml:space="preserve"
20444+ filename="../pango/pango-attributes.c"
20445+ line="717">Create a new font variant attribute (normal or small caps).</doc>
20446+ <source-position filename="../pango/pango-attributes.h" line="539"/>
20447+ <return-value transfer-ownership="full">
20448+ <doc xml:space="preserve"
20449+ filename="../pango/pango-attributes.c"
20450+ line="723">the newly allocated `PangoAttribute`,
20451+ which should be freed with [method@Pango.Attribute.destroy].</doc>
20452+ <type name="Attribute" c:type="PangoAttribute*"/>
20453+ </return-value>
20454+ <parameters>
20455+ <parameter name="variant" transfer-ownership="none">
20456+ <doc xml:space="preserve"
20457+ filename="../pango/pango-attributes.c"
20458+ line="719">the variant</doc>
20459+ <type name="Variant" c:type="PangoVariant"/>
20460+ </parameter>
20461+ </parameters>
20462+ </function>
20463+ <function name="attr_weight_new" c:identifier="pango_attr_weight_new">
20464+ <doc xml:space="preserve"
20465+ filename="../pango/pango-attributes.c"
20466+ line="694">Create a new font weight attribute.</doc>
20467+ <source-position filename="../pango/pango-attributes.h" line="537"/>
20468+ <return-value transfer-ownership="full">
20469+ <doc xml:space="preserve"
20470+ filename="../pango/pango-attributes.c"
20471+ line="700">the newly allocated
20472+ `PangoAttribute`, which should be freed with
20473+ [method@Pango.Attribute.destroy]</doc>
20474+ <type name="Attribute" c:type="PangoAttribute*"/>
20475+ </return-value>
20476+ <parameters>
20477+ <parameter name="weight" transfer-ownership="none">
20478+ <doc xml:space="preserve"
20479+ filename="../pango/pango-attributes.c"
20480+ line="696">the weight</doc>
20481+ <type name="Weight" c:type="PangoWeight"/>
20482+ </parameter>
20483+ </parameters>
20484+ </function>
20485+ <function name="attr_word_new"
20486+ c:identifier="pango_attr_word_new"
20487+ version="1.50">
20488+ <doc xml:space="preserve"
20489+ filename="../pango/pango-attributes.c"
20490+ line="1370">Marks the range of the attribute as a single word.
20491+
20492+Note that this may require adjustments to word and
20493+sentence classification around the range.</doc>
20494+ <source-position filename="../pango/pango-attributes.h" line="592"/>
20495+ <return-value transfer-ownership="full">
20496+ <doc xml:space="preserve"
20497+ filename="../pango/pango-attributes.c"
20498+ line="1378">the newly allocated
20499+ `PangoAttribute`, which should be freed with
20500+ [method@Pango.Attribute.destroy]</doc>
20501+ <type name="Attribute" c:type="PangoAttribute*"/>
20502+ </return-value>
20503+ </function>
20504+ <function name="bidi_type_for_unichar"
20505+ c:identifier="pango_bidi_type_for_unichar"
20506+ moved-to="BidiType.for_unichar"
20507+ version="1.22">
20508+ <doc xml:space="preserve"
20509+ filename="../pango/pango-bidi-type.c"
20510+ line="33">Determines the bidirectional type of a character.
20511+
20512+The bidirectional type is specified in the Unicode Character Database.
20513+
20514+A simplified version of this function is available as [func@unichar_direction].</doc>
20515+ <source-position filename="../pango/pango-bidi-type.h" line="102"/>
20516+ <return-value transfer-ownership="none">
20517+ <doc xml:space="preserve"
20518+ filename="../pango/pango-bidi-type.c"
20519+ line="43">the bidirectional character type, as used in the
20520+Unicode bidirectional algorithm.</doc>
20521+ <type name="BidiType" c:type="PangoBidiType"/>
20522+ </return-value>
20523+ <parameters>
20524+ <parameter name="ch" transfer-ownership="none">
20525+ <doc xml:space="preserve"
20526+ filename="../pango/pango-bidi-type.c"
20527+ line="35">a Unicode character</doc>
20528+ <type name="gunichar" c:type="gunichar"/>
20529+ </parameter>
20530+ </parameters>
20531+ </function>
20532+ <function name="break"
20533+ c:identifier="pango_break"
20534+ deprecated="1"
20535+ deprecated-version="1.44">
20536+ <doc xml:space="preserve"
20537+ filename="../pango/break.c"
20538+ line="2195">Determines possible line, word, and character breaks
20539+for a string of Unicode text with a single analysis.
20540+
20541+For most purposes you may want to use [func@Pango.get_log_attrs].</doc>
20542+ <doc-deprecated xml:space="preserve">Use [func@Pango.default_break],
20543+ [func@Pango.tailor_break] and [func@Pango.attr_break].</doc-deprecated>
20544+ <source-position filename="../pango/pango-break.h" line="105"/>
20545+ <return-value transfer-ownership="none">
20546+ <type name="none" c:type="void"/>
20547+ </return-value>
20548+ <parameters>
20549+ <parameter name="text" transfer-ownership="none">
20550+ <doc xml:space="preserve"
20551+ filename="../pango/break.c"
20552+ line="2197">the text to process. Must be valid UTF-8</doc>
20553+ <type name="utf8" c:type="const char*"/>
20554+ </parameter>
20555+ <parameter name="length" transfer-ownership="none">
20556+ <doc xml:space="preserve"
20557+ filename="../pango/break.c"
20558+ line="2198">length of @text in bytes (may be -1 if @text is nul-terminated)</doc>
20559+ <type name="gint" c:type="int"/>
20560+ </parameter>
20561+ <parameter name="analysis" transfer-ownership="none">
20562+ <doc xml:space="preserve"
20563+ filename="../pango/break.c"
20564+ line="2199">`PangoAnalysis` structure for @text</doc>
20565+ <type name="Analysis" c:type="PangoAnalysis*"/>
20566+ </parameter>
20567+ <parameter name="attrs" transfer-ownership="none">
20568+ <doc xml:space="preserve"
20569+ filename="../pango/break.c"
20570+ line="2200">an array to store character information in</doc>
20571+ <array length="4" zero-terminated="0" c:type="PangoLogAttr*">
20572+ <type name="LogAttr" c:type="PangoLogAttr"/>
20573+ </array>
20574+ </parameter>
20575+ <parameter name="attrs_len" transfer-ownership="none">
20576+ <doc xml:space="preserve"
20577+ filename="../pango/break.c"
20578+ line="2201">size of the array passed as @attrs</doc>
20579+ <type name="gint" c:type="int"/>
20580+ </parameter>
20581+ </parameters>
20582+ </function>
20583+ <function name="default_break" c:identifier="pango_default_break">
20584+ <doc xml:space="preserve"
20585+ filename="../pango/break.c"
20586+ line="2161">This is the default break algorithm.
20587+
20588+It applies rules from the [Unicode Line Breaking Algorithm](http://www.unicode.org/unicode/reports/tr14/)
20589+without language-specific tailoring, therefore the @analyis argument is unused
20590+and can be %NULL.
20591+
20592+See [func@Pango.tailor_break] for language-specific breaks.
20593+
20594+See [func@Pango.attr_break] for attribute-based customization.</doc>
20595+ <source-position filename="../pango/pango-break.h" line="120"/>
20596+ <return-value transfer-ownership="none">
20597+ <type name="none" c:type="void"/>
20598+ </return-value>
20599+ <parameters>
20600+ <parameter name="text" transfer-ownership="none">
20601+ <doc xml:space="preserve"
20602+ filename="../pango/break.c"
20603+ line="2163">text to break. Must be valid UTF-8</doc>
20604+ <type name="utf8" c:type="const char*"/>
20605+ </parameter>
20606+ <parameter name="length" transfer-ownership="none">
20607+ <doc xml:space="preserve"
20608+ filename="../pango/break.c"
20609+ line="2164">length of text in bytes (may be -1 if @text is nul-terminated)</doc>
20610+ <type name="gint" c:type="int"/>
20611+ </parameter>
20612+ <parameter name="analysis"
20613+ transfer-ownership="none"
20614+ nullable="1"
20615+ allow-none="1">
20616+ <doc xml:space="preserve"
20617+ filename="../pango/break.c"
20618+ line="2165">a `PangoAnalysis` structure for the @text</doc>
20619+ <type name="Analysis" c:type="PangoAnalysis*"/>
20620+ </parameter>
20621+ <parameter name="attrs" transfer-ownership="none">
20622+ <doc xml:space="preserve"
20623+ filename="../pango/break.c"
20624+ line="2166">logical attributes to fill in</doc>
20625+ <type name="LogAttr" c:type="PangoLogAttr*"/>
20626+ </parameter>
20627+ <parameter name="attrs_len" transfer-ownership="none">
20628+ <doc xml:space="preserve"
20629+ filename="../pango/break.c"
20630+ line="2167">size of the array passed as @attrs</doc>
20631+ <type name="gint" c:type="int"/>
20632+ </parameter>
20633+ </parameters>
20634+ </function>
20635+ <function name="extents_to_pixels"
20636+ c:identifier="pango_extents_to_pixels"
20637+ version="1.16">
20638+ <doc xml:space="preserve"
20639+ filename="../pango/pango-utils.c"
20640+ line="1028">Converts extents from Pango units to device units.
20641+
20642+The conversion is done by dividing by the %PANGO_SCALE factor and
20643+performing rounding.
20644+
20645+The @inclusive rectangle is converted by flooring the x/y coordinates
20646+and extending width/height, such that the final rectangle completely
20647+includes the original rectangle.
20648+
20649+The @nearest rectangle is converted by rounding the coordinates
20650+of the rectangle to the nearest device unit (pixel).
20651+
20652+The rule to which argument to use is: if you want the resulting device-space
20653+rectangle to completely contain the original rectangle, pass it in as
20654+@inclusive. If you want two touching-but-not-overlapping rectangles stay
20655+touching-but-not-overlapping after rounding to device units, pass them in
20656+as @nearest.</doc>
20657+ <source-position filename="../pango/pango-types.h" line="231"/>
20658+ <return-value transfer-ownership="none">
20659+ <type name="none" c:type="void"/>
20660+ </return-value>
20661+ <parameters>
20662+ <parameter name="inclusive"
20663+ transfer-ownership="none"
20664+ nullable="1"
20665+ allow-none="1">
20666+ <doc xml:space="preserve"
20667+ filename="../pango/pango-utils.c"
20668+ line="1030">rectangle to round to pixels inclusively</doc>
20669+ <type name="Rectangle" c:type="PangoRectangle*"/>
20670+ </parameter>
20671+ <parameter name="nearest"
20672+ transfer-ownership="none"
20673+ nullable="1"
20674+ allow-none="1">
20675+ <doc xml:space="preserve"
20676+ filename="../pango/pango-utils.c"
20677+ line="1031">rectangle to round to nearest pixels</doc>
20678+ <type name="Rectangle" c:type="PangoRectangle*"/>
20679+ </parameter>
20680+ </parameters>
20681+ </function>
20682+ <function name="find_base_dir"
20683+ c:identifier="pango_find_base_dir"
20684+ version="1.4">
20685+ <doc xml:space="preserve"
20686+ filename="../pango/pango-utils.c"
20687+ line="853">Searches a string the first character that has a strong
20688+direction, according to the Unicode bidirectional algorithm.</doc>
20689+ <source-position filename="../pango/pango-bidi-type.h" line="107"/>
20690+ <return-value transfer-ownership="none">
20691+ <doc xml:space="preserve"
20692+ filename="../pango/pango-utils.c"
20693+ line="861">The direction corresponding to the first strong character.
20694+ If no such character is found, then %PANGO_DIRECTION_NEUTRAL is returned.</doc>
20695+ <type name="Direction" c:type="PangoDirection"/>
20696+ </return-value>
20697+ <parameters>
20698+ <parameter name="text" transfer-ownership="none">
20699+ <doc xml:space="preserve"
20700+ filename="../pango/pango-utils.c"
20701+ line="855">the text to process. Must be valid UTF-8</doc>
20702+ <type name="utf8" c:type="const gchar*"/>
20703+ </parameter>
20704+ <parameter name="length" transfer-ownership="none">
20705+ <doc xml:space="preserve"
20706+ filename="../pango/pango-utils.c"
20707+ line="856">length of @text in bytes (may be -1 if @text is nul-terminated)</doc>
20708+ <type name="gint" c:type="gint"/>
20709+ </parameter>
20710+ </parameters>
20711+ </function>
20712+ <function name="find_paragraph_boundary"
20713+ c:identifier="pango_find_paragraph_boundary">
20714+ <doc xml:space="preserve"
20715+ filename="../pango/pango-utils.c"
20716+ line="1158">Locates a paragraph boundary in @text.
20717+
20718+A boundary is caused by delimiter characters, such as
20719+a newline, carriage return, carriage return-newline pair,
20720+or Unicode paragraph separator character.
20721+
20722+The index of the run of delimiters is returned in
20723+@paragraph_delimiter_index. The index of the start
20724+of the paragrap (index after all delimiters) is stored
20725+in @next_paragraph_start.
20726+
20727+If no delimiters are found, both @paragraph_delimiter_index
20728+and @next_paragraph_start are filled with the length of @text
20729+(an index one off the end).</doc>
20730+ <source-position filename="../pango/pango-utils.h" line="103"/>
20731+ <return-value transfer-ownership="none">
20732+ <type name="none" c:type="void"/>
20733+ </return-value>
20734+ <parameters>
20735+ <parameter name="text" transfer-ownership="none">
20736+ <doc xml:space="preserve"
20737+ filename="../pango/pango-utils.c"
20738+ line="1160">UTF-8 text</doc>
20739+ <type name="utf8" c:type="const char*"/>
20740+ </parameter>
20741+ <parameter name="length" transfer-ownership="none">
20742+ <doc xml:space="preserve"
20743+ filename="../pango/pango-utils.c"
20744+ line="1161">length of @text in bytes, or -1 if nul-terminated</doc>
20745+ <type name="gint" c:type="int"/>
20746+ </parameter>
20747+ <parameter name="paragraph_delimiter_index"
20748+ direction="out"
20749+ caller-allocates="0"
20750+ transfer-ownership="full">
20751+ <doc xml:space="preserve"
20752+ filename="../pango/pango-utils.c"
20753+ line="1162">return location for index of
20754+ delimiter</doc>
20755+ <type name="gint" c:type="int*"/>
20756+ </parameter>
20757+ <parameter name="next_paragraph_start"
20758+ direction="out"
20759+ caller-allocates="0"
20760+ transfer-ownership="full">
20761+ <doc xml:space="preserve"
20762+ filename="../pango/pango-utils.c"
20763+ line="1164">return location for start of next
20764+ paragraph</doc>
20765+ <type name="gint" c:type="int*"/>
20766+ </parameter>
20767+ </parameters>
20768+ </function>
20769+ <function name="font_description_from_string"
20770+ c:identifier="pango_font_description_from_string"
20771+ moved-to="FontDescription.from_string">
20772+ <doc xml:space="preserve"
20773+ filename="../pango/fonts.c"
20774+ line="1252">Creates a new font description from a string representation.
20775+
20776+The string must have the form
20777+
20778+ "\[FAMILY-LIST] \[STYLE-OPTIONS] \[SIZE] \[VARIATIONS]",
20779+
20780+where FAMILY-LIST is a comma-separated list of families optionally
20781+terminated by a comma, STYLE_OPTIONS is a whitespace-separated list
20782+of words where each word describes one of style, variant, weight,
20783+stretch, or gravity, and SIZE is a decimal number (size in points)
20784+or optionally followed by the unit modifier "px" for absolute size.
20785+VARIATIONS is a comma-separated list of font variation
20786+specifications of the form "\@axis=value" (the = sign is optional).
20787+
20788+The following words are understood as styles:
20789+"Normal", "Roman", "Oblique", "Italic".
20790+
20791+The following words are understood as variants:
20792+"Small-Caps", "All-Small-Caps", "Petite-Caps", "All-Petite-Caps",
20793+"Unicase", "Title-Caps".
20794+
20795+The following words are understood as weights:
20796+"Thin", "Ultra-Light", "Extra-Light", "Light", "Semi-Light",
20797+"Demi-Light", "Book", "Regular", "Medium", "Semi-Bold", "Demi-Bold",
20798+"Bold", "Ultra-Bold", "Extra-Bold", "Heavy", "Black", "Ultra-Black",
20799+"Extra-Black".
20800+
20801+The following words are understood as stretch values:
20802+"Ultra-Condensed", "Extra-Condensed", "Condensed", "Semi-Condensed",
20803+"Semi-Expanded", "Expanded", "Extra-Expanded", "Ultra-Expanded".
20804+
20805+The following words are understood as gravity values:
20806+"Not-Rotated", "South", "Upside-Down", "North", "Rotated-Left",
20807+"East", "Rotated-Right", "West".
20808+
20809+Any one of the options may be absent. If FAMILY-LIST is absent, then
20810+the family_name field of the resulting font description will be
20811+initialized to %NULL. If STYLE-OPTIONS is missing, then all style
20812+options will be set to the default values. If SIZE is missing, the
20813+size in the resulting font description will be set to 0.
20814+
20815+A typical example:
20816+
20817+ "Cantarell Italic Light 15 \@wght=200"</doc>
20818+ <source-position filename="../pango/pango-font.h" line="343"/>
20819+ <return-value transfer-ownership="full">
20820+ <doc xml:space="preserve"
20821+ filename="../pango/fonts.c"
20822+ line="1301">a new `PangoFontDescription`.</doc>
20823+ <type name="FontDescription" c:type="PangoFontDescription*"/>
20824+ </return-value>
20825+ <parameters>
20826+ <parameter name="str" transfer-ownership="none">
20827+ <doc xml:space="preserve"
20828+ filename="../pango/fonts.c"
20829+ line="1254">string representation of a font description.</doc>
20830+ <type name="utf8" c:type="const char*"/>
20831+ </parameter>
20832+ </parameters>
20833+ </function>
20834+ <function name="get_log_attrs" c:identifier="pango_get_log_attrs">
20835+ <doc xml:space="preserve"
20836+ filename="../pango/break.c"
20837+ line="2319">Computes a `PangoLogAttr` for each character in @text.
20838+
20839+The @attrs array must have one `PangoLogAttr` for
20840+each position in @text; if @text contains N characters,
20841+it has N+1 positions, including the last position at the
20842+end of the text. @text should be an entire paragraph;
20843+logical attributes can't be computed without context
20844+(for example you need to see spaces on either side of
20845+a word to know the word is a word).</doc>
20846+ <source-position filename="../pango/pango-break.h" line="112"/>
20847+ <return-value transfer-ownership="none">
20848+ <type name="none" c:type="void"/>
20849+ </return-value>
20850+ <parameters>
20851+ <parameter name="text" transfer-ownership="none">
20852+ <doc xml:space="preserve"
20853+ filename="../pango/break.c"
20854+ line="2321">text to process. Must be valid UTF-8</doc>
20855+ <type name="utf8" c:type="const char*"/>
20856+ </parameter>
20857+ <parameter name="length" transfer-ownership="none">
20858+ <doc xml:space="preserve"
20859+ filename="../pango/break.c"
20860+ line="2322">length in bytes of @text</doc>
20861+ <type name="gint" c:type="int"/>
20862+ </parameter>
20863+ <parameter name="level" transfer-ownership="none">
20864+ <doc xml:space="preserve"
20865+ filename="../pango/break.c"
20866+ line="2323">embedding level, or -1 if unknown</doc>
20867+ <type name="gint" c:type="int"/>
20868+ </parameter>
20869+ <parameter name="language" transfer-ownership="none">
20870+ <doc xml:space="preserve"
20871+ filename="../pango/break.c"
20872+ line="2324">language tag</doc>
20873+ <type name="Language" c:type="PangoLanguage*"/>
20874+ </parameter>
20875+ <parameter name="attrs" transfer-ownership="none">
20876+ <doc xml:space="preserve"
20877+ filename="../pango/break.c"
20878+ line="2325">array with one `PangoLogAttr`
20879+ per character in @text, plus one extra, to be filled in</doc>
20880+ <array length="5" zero-terminated="0" c:type="PangoLogAttr*">
20881+ <type name="LogAttr" c:type="PangoLogAttr"/>
20882+ </array>
20883+ </parameter>
20884+ <parameter name="attrs_len" transfer-ownership="none">
20885+ <doc xml:space="preserve"
20886+ filename="../pango/break.c"
20887+ line="2327">length of @attrs array</doc>
20888+ <type name="gint" c:type="int"/>
20889+ </parameter>
20890+ </parameters>
20891+ </function>
20892+ <function name="get_mirror_char"
20893+ c:identifier="pango_get_mirror_char"
20894+ deprecated="1"
20895+ deprecated-version="1.30">
20896+ <doc xml:space="preserve"
20897+ filename="../pango/pango-bidi-type.c"
20898+ line="277">Returns the mirrored character of a Unicode character.
20899+
20900+Mirror characters are determined by the Unicode mirrored property.</doc>
20901+ <doc-deprecated xml:space="preserve">Use [func@GLib.unichar_get_mirror_char] instead;
20902+ the docs for that function provide full details.</doc-deprecated>
20903+ <source-position filename="../pango/pango-bidi-type.h" line="111"/>
20904+ <return-value transfer-ownership="none">
20905+ <doc xml:space="preserve"
20906+ filename="../pango/pango-bidi-type.c"
20907+ line="286">%TRUE if @ch has a mirrored character and @mirrored_ch is
20908+filled in, %FALSE otherwise</doc>
20909+ <type name="gboolean" c:type="gboolean"/>
20910+ </return-value>
20911+ <parameters>
20912+ <parameter name="ch" transfer-ownership="none">
20913+ <doc xml:space="preserve"
20914+ filename="../pango/pango-bidi-type.c"
20915+ line="279">a Unicode character</doc>
20916+ <type name="gunichar" c:type="gunichar"/>
20917+ </parameter>
20918+ <parameter name="mirrored_ch" transfer-ownership="none">
20919+ <doc xml:space="preserve"
20920+ filename="../pango/pango-bidi-type.c"
20921+ line="280">location to store the mirrored character</doc>
20922+ <type name="gunichar" c:type="gunichar*"/>
20923+ </parameter>
20924+ </parameters>
20925+ </function>
20926+ <function name="gravity_get_for_matrix"
20927+ c:identifier="pango_gravity_get_for_matrix"
20928+ moved-to="Gravity.get_for_matrix"
20929+ version="1.16">
20930+ <doc xml:space="preserve"
20931+ filename="../pango/pango-gravity.c"
20932+ line="62">Finds the gravity that best matches the rotation component
20933+in a `PangoMatrix`.</doc>
20934+ <source-position filename="../pango/pango-gravity.h" line="122"/>
20935+ <return-value transfer-ownership="none">
20936+ <doc xml:space="preserve"
20937+ filename="../pango/pango-gravity.c"
20938+ line="69">the gravity of @matrix, which will never be
20939+%PANGO_GRAVITY_AUTO, or %PANGO_GRAVITY_SOUTH if @matrix is %NULL</doc>
20940+ <type name="Gravity" c:type="PangoGravity"/>
20941+ </return-value>
20942+ <parameters>
20943+ <parameter name="matrix"
20944+ transfer-ownership="none"
20945+ nullable="1"
20946+ allow-none="1">
20947+ <doc xml:space="preserve"
20948+ filename="../pango/pango-gravity.c"
20949+ line="64">a `PangoMatrix`</doc>
20950+ <type name="Matrix" c:type="const PangoMatrix*"/>
20951+ </parameter>
20952+ </parameters>
20953+ </function>
20954+ <function name="gravity_get_for_script"
20955+ c:identifier="pango_gravity_get_for_script"
20956+ moved-to="Gravity.get_for_script"
20957+ version="1.16">
20958+ <doc xml:space="preserve"
20959+ filename="../pango/pango-gravity.c"
20960+ line="351">Returns the gravity to use in laying out a `PangoItem`.
20961+
20962+The gravity is determined based on the script, base gravity, and hint.
20963+
20964+If @base_gravity is %PANGO_GRAVITY_AUTO, it is first replaced with the
20965+preferred gravity of @script. To get the preferred gravity of a script,
20966+pass %PANGO_GRAVITY_AUTO and %PANGO_GRAVITY_HINT_STRONG in.</doc>
20967+ <source-position filename="../pango/pango-gravity.h" line="124"/>
20968+ <return-value transfer-ownership="none">
20969+ <doc xml:space="preserve"
20970+ filename="../pango/pango-gravity.c"
20971+ line="365">resolved gravity suitable to use for a run of text
20972+with @script</doc>
20973+ <type name="Gravity" c:type="PangoGravity"/>
20974+ </return-value>
20975+ <parameters>
20976+ <parameter name="script" transfer-ownership="none">
20977+ <doc xml:space="preserve"
20978+ filename="../pango/pango-gravity.c"
20979+ line="353">`PangoScript` to query</doc>
20980+ <type name="Script" c:type="PangoScript"/>
20981+ </parameter>
20982+ <parameter name="base_gravity" transfer-ownership="none">
20983+ <doc xml:space="preserve"
20984+ filename="../pango/pango-gravity.c"
20985+ line="354">base gravity of the paragraph</doc>
20986+ <type name="Gravity" c:type="PangoGravity"/>
20987+ </parameter>
20988+ <parameter name="hint" transfer-ownership="none">
20989+ <doc xml:space="preserve"
20990+ filename="../pango/pango-gravity.c"
20991+ line="355">orientation hint</doc>
20992+ <type name="GravityHint" c:type="PangoGravityHint"/>
20993+ </parameter>
20994+ </parameters>
20995+ </function>
20996+ <function name="gravity_get_for_script_and_width"
20997+ c:identifier="pango_gravity_get_for_script_and_width"
20998+ moved-to="Gravity.get_for_script_and_width"
20999+ version="1.26">
21000+ <doc xml:space="preserve"
21001+ filename="../pango/pango-gravity.c"
21002+ line="381">Returns the gravity to use in laying out a single character
21003+or `PangoItem`.
21004+
21005+The gravity is determined based on the script, East Asian width,
21006+base gravity, and hint,
21007+
21008+This function is similar to [func@Pango.Gravity.get_for_script] except
21009+that this function makes a distinction between narrow/half-width and
21010+wide/full-width characters also. Wide/full-width characters always
21011+stand *upright*, that is, they always take the base gravity,
21012+whereas narrow/full-width characters are always rotated in vertical
21013+context.
21014+
21015+If @base_gravity is %PANGO_GRAVITY_AUTO, it is first replaced with the
21016+preferred gravity of @script.</doc>
21017+ <source-position filename="../pango/pango-gravity.h" line="128"/>
21018+ <return-value transfer-ownership="none">
21019+ <doc xml:space="preserve"
21020+ filename="../pango/pango-gravity.c"
21021+ line="404">resolved gravity suitable to use for a run of text
21022+with @script and @wide.</doc>
21023+ <type name="Gravity" c:type="PangoGravity"/>
21024+ </return-value>
21025+ <parameters>
21026+ <parameter name="script" transfer-ownership="none">
21027+ <doc xml:space="preserve"
21028+ filename="../pango/pango-gravity.c"
21029+ line="383">`PangoScript` to query</doc>
21030+ <type name="Script" c:type="PangoScript"/>
21031+ </parameter>
21032+ <parameter name="wide" transfer-ownership="none">
21033+ <doc xml:space="preserve"
21034+ filename="../pango/pango-gravity.c"
21035+ line="384">%TRUE for wide characters as returned by g_unichar_iswide()</doc>
21036+ <type name="gboolean" c:type="gboolean"/>
21037+ </parameter>
21038+ <parameter name="base_gravity" transfer-ownership="none">
21039+ <doc xml:space="preserve"
21040+ filename="../pango/pango-gravity.c"
21041+ line="385">base gravity of the paragraph</doc>
21042+ <type name="Gravity" c:type="PangoGravity"/>
21043+ </parameter>
21044+ <parameter name="hint" transfer-ownership="none">
21045+ <doc xml:space="preserve"
21046+ filename="../pango/pango-gravity.c"
21047+ line="386">orientation hint</doc>
21048+ <type name="GravityHint" c:type="PangoGravityHint"/>
21049+ </parameter>
21050+ </parameters>
21051+ </function>
21052+ <function name="gravity_to_rotation"
21053+ c:identifier="pango_gravity_to_rotation"
21054+ moved-to="Gravity.to_rotation"
21055+ version="1.16">
21056+ <doc xml:space="preserve"
21057+ filename="../pango/pango-gravity.c"
21058+ line="28">Converts a `PangoGravity` value to its natural rotation in radians.
21059+
21060+Note that [method@Pango.Matrix.rotate] takes angle in degrees, not radians.
21061+So, to call [method@Pango.Matrix,rotate] with the output of this function
21062+you should multiply it by (180. / G_PI).</doc>
21063+ <source-position filename="../pango/pango-gravity.h" line="120"/>
21064+ <return-value transfer-ownership="none">
21065+ <doc xml:space="preserve"
21066+ filename="../pango/pango-gravity.c"
21067+ line="38">the rotation value corresponding to @gravity.</doc>
21068+ <type name="gdouble" c:type="double"/>
21069+ </return-value>
21070+ <parameters>
21071+ <parameter name="gravity" transfer-ownership="none">
21072+ <doc xml:space="preserve"
21073+ filename="../pango/pango-gravity.c"
21074+ line="30">gravity to query, should not be %PANGO_GRAVITY_AUTO</doc>
21075+ <type name="Gravity" c:type="PangoGravity"/>
21076+ </parameter>
21077+ </parameters>
21078+ </function>
21079+ <function name="is_zero_width"
21080+ c:identifier="pango_is_zero_width"
21081+ version="1.10">
21082+ <doc xml:space="preserve"
21083+ filename="../pango/pango-utils.c"
21084+ line="893">Checks if a character that should not be normally rendered.
21085+
21086+This includes all Unicode characters with "ZERO WIDTH" in their name,
21087+as well as *bidi* formatting characters, and a few other ones.
21088+
21089+This is totally different from [func@GLib.unichar_iszerowidth] and is at best misnamed.</doc>
21090+ <source-position filename="../pango/pango-utils.h" line="100"/>
21091+ <return-value transfer-ownership="none">
21092+ <doc xml:space="preserve"
21093+ filename="../pango/pango-utils.c"
21094+ line="904">%TRUE if @ch is a zero-width character, %FALSE otherwise</doc>
21095+ <type name="gboolean" c:type="gboolean"/>
21096+ </return-value>
21097+ <parameters>
21098+ <parameter name="ch" transfer-ownership="none">
21099+ <doc xml:space="preserve"
21100+ filename="../pango/pango-utils.c"
21101+ line="895">a Unicode character</doc>
21102+ <type name="gunichar" c:type="gunichar"/>
21103+ </parameter>
21104+ </parameters>
21105+ </function>
21106+ <function name="itemize" c:identifier="pango_itemize">
21107+ <doc xml:space="preserve"
21108+ filename="../pango/itemize.c"
21109+ line="1624">Breaks a piece of text into segments with consistent directional
21110+level and font.
21111+
21112+Each byte of @text will be contained in exactly one of the items in the
21113+returned list; the generated list of items will be in logical order (the
21114+start offsets of the items are ascending).
21115+
21116+@cached_iter should be an iterator over @attrs currently positioned
21117+at a range before or containing @start_index; @cached_iter will be
21118+advanced to the range covering the position just after
21119+@start_index + @length. (i.e. if itemizing in a loop, just keep passing
21120+in the same @cached_iter).</doc>
21121+ <source-position filename="../pango/pango-item.h" line="146"/>
21122+ <return-value transfer-ownership="full">
21123+ <doc xml:space="preserve"
21124+ filename="../pango/itemize.c"
21125+ line="1648">a `GList` of
21126+ [struct@Pango.Item] structures. The items should be freed using
21127+ [method@Pango.Item.free] in combination with [func@GLib.List.free_full].</doc>
21128+ <type name="GLib.List" c:type="GList*">
21129+ <type name="Item"/>
21130+ </type>
21131+ </return-value>
21132+ <parameters>
21133+ <parameter name="context" transfer-ownership="none">
21134+ <doc xml:space="preserve"
21135+ filename="../pango/itemize.c"
21136+ line="1626">a structure holding information that affects
21137+ the itemization process.</doc>
21138+ <type name="Context" c:type="PangoContext*"/>
21139+ </parameter>
21140+ <parameter name="text" transfer-ownership="none">
21141+ <doc xml:space="preserve"
21142+ filename="../pango/itemize.c"
21143+ line="1628">the text to itemize. Must be valid UTF-8</doc>
21144+ <type name="utf8" c:type="const char*"/>
21145+ </parameter>
21146+ <parameter name="start_index" transfer-ownership="none">
21147+ <doc xml:space="preserve"
21148+ filename="../pango/itemize.c"
21149+ line="1629">first byte in @text to process</doc>
21150+ <type name="gint" c:type="int"/>
21151+ </parameter>
21152+ <parameter name="length" transfer-ownership="none">
21153+ <doc xml:space="preserve"
21154+ filename="../pango/itemize.c"
21155+ line="1630">the number of bytes (not characters) to process
21156+ after @start_index. This must be &gt;= 0.</doc>
21157+ <type name="gint" c:type="int"/>
21158+ </parameter>
21159+ <parameter name="attrs" transfer-ownership="none">
21160+ <doc xml:space="preserve"
21161+ filename="../pango/itemize.c"
21162+ line="1632">the set of attributes that apply to @text.</doc>
21163+ <type name="AttrList" c:type="PangoAttrList*"/>
21164+ </parameter>
21165+ <parameter name="cached_iter"
21166+ transfer-ownership="none"
21167+ nullable="1"
21168+ allow-none="1">
21169+ <doc xml:space="preserve"
21170+ filename="../pango/itemize.c"
21171+ line="1633">Cached attribute iterator</doc>
21172+ <type name="AttrIterator" c:type="PangoAttrIterator*"/>
21173+ </parameter>
21174+ </parameters>
21175+ </function>
21176+ <function name="itemize_with_base_dir"
21177+ c:identifier="pango_itemize_with_base_dir"
21178+ version="1.4">
21179+ <doc xml:space="preserve"
21180+ filename="../pango/itemize.c"
21181+ line="1576">Like `pango_itemize()`, but with an explicitly specified base direction.
21182+
21183+The base direction is used when computing bidirectional levels.
21184+[func@itemize] gets the base direction from the `PangoContext`
21185+(see [method@Pango.Context.set_base_dir]).</doc>
21186+ <source-position filename="../pango/pango-item.h" line="154"/>
21187+ <return-value transfer-ownership="full">
21188+ <doc xml:space="preserve"
21189+ filename="../pango/itemize.c"
21190+ line="1594">a `GList` of
21191+ [struct@Pango.Item] structures. The items should be freed using
21192+ [method@Pango.Item.free] probably in combination with [func@GLib.List.free_full].</doc>
21193+ <type name="GLib.List" c:type="GList*">
21194+ <type name="Item"/>
21195+ </type>
21196+ </return-value>
21197+ <parameters>
21198+ <parameter name="context" transfer-ownership="none">
21199+ <doc xml:space="preserve"
21200+ filename="../pango/itemize.c"
21201+ line="1578">a structure holding information that affects
21202+ the itemization process.</doc>
21203+ <type name="Context" c:type="PangoContext*"/>
21204+ </parameter>
21205+ <parameter name="base_dir" transfer-ownership="none">
21206+ <doc xml:space="preserve"
21207+ filename="../pango/itemize.c"
21208+ line="1580">base direction to use for bidirectional processing</doc>
21209+ <type name="Direction" c:type="PangoDirection"/>
21210+ </parameter>
21211+ <parameter name="text" transfer-ownership="none">
21212+ <doc xml:space="preserve"
21213+ filename="../pango/itemize.c"
21214+ line="1581">the text to itemize.</doc>
21215+ <type name="utf8" c:type="const char*"/>
21216+ </parameter>
21217+ <parameter name="start_index" transfer-ownership="none">
21218+ <doc xml:space="preserve"
21219+ filename="../pango/itemize.c"
21220+ line="1582">first byte in @text to process</doc>
21221+ <type name="gint" c:type="int"/>
21222+ </parameter>
21223+ <parameter name="length" transfer-ownership="none">
21224+ <doc xml:space="preserve"
21225+ filename="../pango/itemize.c"
21226+ line="1583">the number of bytes (not characters) to process
21227+ after @start_index. This must be &gt;= 0.</doc>
21228+ <type name="gint" c:type="int"/>
21229+ </parameter>
21230+ <parameter name="attrs" transfer-ownership="none">
21231+ <doc xml:space="preserve"
21232+ filename="../pango/itemize.c"
21233+ line="1585">the set of attributes that apply to @text.</doc>
21234+ <type name="AttrList" c:type="PangoAttrList*"/>
21235+ </parameter>
21236+ <parameter name="cached_iter"
21237+ transfer-ownership="none"
21238+ nullable="1"
21239+ allow-none="1">
21240+ <doc xml:space="preserve"
21241+ filename="../pango/itemize.c"
21242+ line="1586">Cached attribute iterator</doc>
21243+ <type name="AttrIterator" c:type="PangoAttrIterator*"/>
21244+ </parameter>
21245+ </parameters>
21246+ </function>
21247+ <function name="language_from_string"
21248+ c:identifier="pango_language_from_string"
21249+ moved-to="Language.from_string">
21250+ <doc xml:space="preserve"
21251+ filename="../pango/pango-language.c"
21252+ line="310">Convert a language tag to a `PangoLanguage`.
21253+
21254+The language tag must be in a RFC-3066 format. `PangoLanguage` pointers
21255+can be efficiently copied (copy the pointer) and compared with other
21256+language tags (compare the pointer.)
21257+
21258+This function first canonicalizes the string by converting it to
21259+lowercase, mapping '_' to '-', and stripping all characters other
21260+than letters and '-'.
21261+
21262+Use [func@Pango.Language.get_default] if you want to get the
21263+`PangoLanguage` for the current locale of the process.</doc>
21264+ <source-position filename="../pango/pango-language.h" line="46"/>
21265+ <return-value transfer-ownership="none" nullable="1">
21266+ <doc xml:space="preserve"
21267+ filename="../pango/pango-language.c"
21268+ line="327">a `PangoLanguage`</doc>
21269+ <type name="Language" c:type="PangoLanguage*"/>
21270+ </return-value>
21271+ <parameters>
21272+ <parameter name="language"
21273+ transfer-ownership="none"
21274+ nullable="1"
21275+ allow-none="1">
21276+ <doc xml:space="preserve"
21277+ filename="../pango/pango-language.c"
21278+ line="312">a string representing a language tag</doc>
21279+ <type name="utf8" c:type="const char*"/>
21280+ </parameter>
21281+ </parameters>
21282+ </function>
21283+ <function name="language_get_default"
21284+ c:identifier="pango_language_get_default"
21285+ moved-to="Language.get_default"
21286+ version="1.16">
21287+ <doc xml:space="preserve"
21288+ filename="../pango/pango-language.c"
21289+ line="251">Returns the `PangoLanguage` for the current locale of the process.
21290+
21291+On Unix systems, this is the return value is derived from
21292+`setlocale (LC_CTYPE, NULL)`, and the user can
21293+affect this through the environment variables LC_ALL, LC_CTYPE or
21294+LANG (checked in that order). The locale string typically is in
21295+the form lang_COUNTRY, where lang is an ISO-639 language code, and
21296+COUNTRY is an ISO-3166 country code. For instance, sv_FI for
21297+Swedish as written in Finland or pt_BR for Portuguese as written in
21298+Brazil.
21299+
21300+On Windows, the C library does not use any such environment
21301+variables, and setting them won't affect the behavior of functions
21302+like ctime(). The user sets the locale through the Regional Options
21303+in the Control Panel. The C library (in the setlocale() function)
21304+does not use country and language codes, but country and language
21305+names spelled out in English.
21306+However, this function does check the above environment
21307+variables, and does return a Unix-style locale string based on
21308+either said environment variables or the thread's current locale.
21309+
21310+Your application should call `setlocale(LC_ALL, "")` for the user
21311+settings to take effect. GTK does this in its initialization
21312+functions automatically (by calling gtk_set_locale()).
21313+See the setlocale() manpage for more details.
21314+
21315+Note that the default language can change over the life of an application.
21316+
21317+Also note that this function will not do the right thing if you
21318+use per-thread locales with uselocale(). In that case, you should
21319+just call pango_language_from_string() yourself.</doc>
21320+ <source-position filename="../pango/pango-language.h" line="40"/>
21321+ <return-value transfer-ownership="none">
21322+ <doc xml:space="preserve"
21323+ filename="../pango/pango-language.c"
21324+ line="286">the default language as a `PangoLanguage`</doc>
21325+ <type name="Language" c:type="PangoLanguage*"/>
21326+ </return-value>
21327+ </function>
21328+ <function name="language_get_preferred"
21329+ c:identifier="pango_language_get_preferred"
21330+ moved-to="Language.get_preferred"
21331+ version="1.48">
21332+ <doc xml:space="preserve"
21333+ filename="../pango/pango-language.c"
21334+ line="841">Returns the list of languages that the user prefers.
21335+
21336+The list is specified by the `PANGO_LANGUAGE` or `LANGUAGE`
21337+environment variables, in order of preference. Note that this
21338+list does not necessarily include the language returned by
21339+[func@Pango.Language.get_default].
21340+
21341+When choosing language-specific resources, such as the sample
21342+text returned by [method@Pango.Language.get_sample_string],
21343+you should first try the default language, followed by the
21344+languages returned by this function.</doc>
21345+ <source-position filename="../pango/pango-language.h" line="43"/>
21346+ <return-value transfer-ownership="none" nullable="1">
21347+ <doc xml:space="preserve"
21348+ filename="../pango/pango-language.c"
21349+ line="856">a %NULL-terminated array
21350+ of `PangoLanguage`*</doc>
21351+ <type name="Language" c:type="PangoLanguage**"/>
21352+ </return-value>
21353+ </function>
21354+ <function name="layout_deserialize_error_quark"
21355+ c:identifier="pango_layout_deserialize_error_quark"
21356+ moved-to="LayoutDeserializeError.quark">
21357+ <return-value transfer-ownership="none">
21358+ <type name="GLib.Quark" c:type="GQuark"/>
21359+ </return-value>
21360+ </function>
21361+ <function name="log2vis_get_embedding_levels"
21362+ c:identifier="pango_log2vis_get_embedding_levels"
21363+ version="1.4">
21364+ <doc xml:space="preserve"
21365+ filename="../pango/pango-bidi-type.c"
21366+ line="90">Return the bidirectional embedding levels of the input paragraph.
21367+
21368+The bidirectional embedding levels are defined by the [Unicode Bidirectional
21369+Algorithm](http://www.unicode.org/reports/tr9/).
21370+
21371+If the input base direction is a weak direction, the direction of the
21372+characters in the text will determine the final resolved direction.</doc>
21373+ <source-position filename="../pango/pango-utils.h" line="92"/>
21374+ <return-value transfer-ownership="none">
21375+ <doc xml:space="preserve"
21376+ filename="../pango/pango-bidi-type.c"
21377+ line="105">a newly allocated array of embedding levels, one item per
21378+ character (not byte), that should be freed using [func@GLib.free].</doc>
21379+ <type name="guint8" c:type="guint8*"/>
21380+ </return-value>
21381+ <parameters>
21382+ <parameter name="text" transfer-ownership="none">
21383+ <doc xml:space="preserve"
21384+ filename="../pango/pango-bidi-type.c"
21385+ line="92">the text to itemize.</doc>
21386+ <type name="utf8" c:type="const gchar*"/>
21387+ </parameter>
21388+ <parameter name="length" transfer-ownership="none">
21389+ <doc xml:space="preserve"
21390+ filename="../pango/pango-bidi-type.c"
21391+ line="93">the number of bytes (not characters) to process, or -1
21392+ if @text is nul-terminated and the length should be calculated.</doc>
21393+ <type name="gint" c:type="int"/>
21394+ </parameter>
21395+ <parameter name="pbase_dir" transfer-ownership="none">
21396+ <doc xml:space="preserve"
21397+ filename="../pango/pango-bidi-type.c"
21398+ line="95">input base direction, and output resolved direction.</doc>
21399+ <type name="Direction" c:type="PangoDirection*"/>
21400+ </parameter>
21401+ </parameters>
21402+ </function>
21403+ <function name="markup_parser_finish"
21404+ c:identifier="pango_markup_parser_finish"
21405+ version="1.31.0"
21406+ throws="1">
21407+ <doc xml:space="preserve"
21408+ filename="../pango/pango-markup.c"
21409+ line="719">Finishes parsing markup.
21410+
21411+After feeding a Pango markup parser some data with [method@GLib.MarkupParseContext.parse],
21412+use this function to get the list of attributes and text out of the
21413+markup. This function will not free @context, use [method@GLib.MarkupParseContext.free]
21414+to do so.</doc>
21415+ <source-position filename="../pango/pango-markup.h" line="34"/>
21416+ <return-value transfer-ownership="none">
21417+ <doc xml:space="preserve"
21418+ filename="../pango/pango-markup.c"
21419+ line="734">%FALSE if @error is set, otherwise %TRUE</doc>
21420+ <type name="gboolean" c:type="gboolean"/>
21421+ </return-value>
21422+ <parameters>
21423+ <parameter name="context" transfer-ownership="none">
21424+ <doc xml:space="preserve"
21425+ filename="../pango/pango-markup.c"
21426+ line="721">A valid parse context that was returned from [func@markup_parser_new]</doc>
21427+ <type name="GLib.MarkupParseContext" c:type="GMarkupParseContext*"/>
21428+ </parameter>
21429+ <parameter name="attr_list"
21430+ direction="out"
21431+ caller-allocates="0"
21432+ transfer-ownership="full"
21433+ optional="1"
21434+ allow-none="1">
21435+ <doc xml:space="preserve"
21436+ filename="../pango/pango-markup.c"
21437+ line="722">address of return location for a `PangoAttrList`</doc>
21438+ <type name="AttrList" c:type="PangoAttrList**"/>
21439+ </parameter>
21440+ <parameter name="text"
21441+ direction="out"
21442+ caller-allocates="0"
21443+ transfer-ownership="full"
21444+ optional="1"
21445+ allow-none="1">
21446+ <doc xml:space="preserve"
21447+ filename="../pango/pango-markup.c"
21448+ line="723">address of return location for text with tags stripped</doc>
21449+ <type name="utf8" c:type="char**"/>
21450+ </parameter>
21451+ <parameter name="accel_char"
21452+ direction="out"
21453+ caller-allocates="0"
21454+ transfer-ownership="full"
21455+ optional="1"
21456+ allow-none="1">
21457+ <doc xml:space="preserve"
21458+ filename="../pango/pango-markup.c"
21459+ line="724">address of return location for accelerator char</doc>
21460+ <type name="gunichar" c:type="gunichar*"/>
21461+ </parameter>
21462+ </parameters>
21463+ </function>
21464+ <function name="markup_parser_new"
21465+ c:identifier="pango_markup_parser_new"
21466+ version="1.31.0">
21467+ <doc xml:space="preserve"
21468+ filename="../pango/pango-markup.c"
21469+ line="681">Incrementally parses marked-up text to create a plain-text string
21470+and an attribute list.
21471+
21472+See the [Pango Markup](pango_markup.html) docs for details about the
21473+supported markup.
21474+
21475+If @accel_marker is nonzero, the given character will mark the
21476+character following it as an accelerator. For example, @accel_marker
21477+might be an ampersand or underscore. All characters marked
21478+as an accelerator will receive a %PANGO_UNDERLINE_LOW attribute,
21479+and the first character so marked will be returned in @accel_char,
21480+when calling [func@markup_parser_finish]. Two @accel_marker characters
21481+following each other produce a single literal @accel_marker character.
21482+
21483+To feed markup to the parser, use [method@GLib.MarkupParseContext.parse]
21484+on the returned [struct@GLib.MarkupParseContext]. When done with feeding markup
21485+to the parser, use [func@markup_parser_finish] to get the data out
21486+of it, and then use [method@GLib.MarkupParseContext.free] to free it.
21487+
21488+This function is designed for applications that read Pango markup
21489+from streams. To simply parse a string containing Pango markup,
21490+the [func@Pango.parse_markup] API is recommended instead.</doc>
21491+ <source-position filename="../pango/pango-markup.h" line="31"/>
21492+ <return-value transfer-ownership="none">
21493+ <doc xml:space="preserve"
21494+ filename="../pango/pango-markup.c"
21495+ line="708">a `GMarkupParseContext` that should be
21496+destroyed with [method@GLib.MarkupParseContext.free].</doc>
21497+ <type name="GLib.MarkupParseContext" c:type="GMarkupParseContext*"/>
21498+ </return-value>
21499+ <parameters>
21500+ <parameter name="accel_marker" transfer-ownership="none">
21501+ <doc xml:space="preserve"
21502+ filename="../pango/pango-markup.c"
21503+ line="683">character that precedes an accelerator, or 0 for none</doc>
21504+ <type name="gunichar" c:type="gunichar"/>
21505+ </parameter>
21506+ </parameters>
21507+ </function>
21508+ <function name="parse_enum"
21509+ c:identifier="pango_parse_enum"
21510+ version="1.16"
21511+ deprecated="1"
21512+ deprecated-version="1.38">
21513+ <doc xml:space="preserve"
21514+ filename="../pango/pango-utils.c"
21515+ line="675">Parses an enum type and stores the result in @value.
21516+
21517+If @str does not match the nick name of any of the possible values
21518+for the enum and is not an integer, %FALSE is returned, a warning
21519+is issued if @warn is %TRUE, and a string representing the list of
21520+possible values is stored in @possible_values. The list is
21521+slash-separated, eg. "none/start/middle/end".
21522+
21523+If failed and @possible_values is not %NULL, returned string should
21524+be freed using g_free().</doc>
21525+ <source-position filename="../pango/pango-utils.h" line="52"/>
21526+ <return-value transfer-ownership="none">
21527+ <doc xml:space="preserve"
21528+ filename="../pango/pango-utils.c"
21529+ line="695">%TRUE if @str was successfully parsed</doc>
21530+ <type name="gboolean" c:type="gboolean"/>
21531+ </return-value>
21532+ <parameters>
21533+ <parameter name="type" transfer-ownership="none">
21534+ <doc xml:space="preserve"
21535+ filename="../pango/pango-utils.c"
21536+ line="677">enum type to parse, eg. %PANGO_TYPE_ELLIPSIZE_MODE</doc>
21537+ <type name="GType" c:type="GType"/>
21538+ </parameter>
21539+ <parameter name="str"
21540+ transfer-ownership="none"
21541+ nullable="1"
21542+ allow-none="1">
21543+ <doc xml:space="preserve"
21544+ filename="../pango/pango-utils.c"
21545+ line="678">string to parse</doc>
21546+ <type name="utf8" c:type="const char*"/>
21547+ </parameter>
21548+ <parameter name="value"
21549+ direction="out"
21550+ caller-allocates="0"
21551+ transfer-ownership="full"
21552+ optional="1"
21553+ allow-none="1">
21554+ <doc xml:space="preserve"
21555+ filename="../pango/pango-utils.c"
21556+ line="679">integer to store the result in</doc>
21557+ <type name="gint" c:type="int*"/>
21558+ </parameter>
21559+ <parameter name="warn" transfer-ownership="none">
21560+ <doc xml:space="preserve"
21561+ filename="../pango/pango-utils.c"
21562+ line="680">if %TRUE, issue a g_warning() on bad input</doc>
21563+ <type name="gboolean" c:type="gboolean"/>
21564+ </parameter>
21565+ <parameter name="possible_values"
21566+ direction="out"
21567+ caller-allocates="0"
21568+ transfer-ownership="full"
21569+ optional="1"
21570+ allow-none="1">
21571+ <doc xml:space="preserve"
21572+ filename="../pango/pango-utils.c"
21573+ line="681">place to store list of possible
21574+ values on failure</doc>
21575+ <type name="utf8" c:type="char**"/>
21576+ </parameter>
21577+ </parameters>
21578+ </function>
21579+ <function name="parse_markup" c:identifier="pango_parse_markup" throws="1">
21580+ <doc xml:space="preserve"
21581+ filename="../pango/pango-markup.c"
21582+ line="602">Parses marked-up text to create a plain-text string and an attribute list.
21583+
21584+See the [Pango Markup](pango_markup.html) docs for details about the
21585+supported markup.
21586+
21587+If @accel_marker is nonzero, the given character will mark the
21588+character following it as an accelerator. For example, @accel_marker
21589+might be an ampersand or underscore. All characters marked
21590+as an accelerator will receive a %PANGO_UNDERLINE_LOW attribute,
21591+and the first character so marked will be returned in @accel_char.
21592+Two @accel_marker characters following each other produce a single
21593+literal @accel_marker character.
21594+
21595+To parse a stream of pango markup incrementally, use [func@markup_parser_new].
21596+
21597+If any error happens, none of the output arguments are touched except
21598+for @error.</doc>
21599+ <source-position filename="../pango/pango-markup.h" line="41"/>
21600+ <return-value transfer-ownership="none">
21601+ <doc xml:space="preserve"
21602+ filename="../pango/pango-markup.c"
21603+ line="630">%FALSE if @error is set, otherwise %TRUE</doc>
21604+ <type name="gboolean" c:type="gboolean"/>
21605+ </return-value>
21606+ <parameters>
21607+ <parameter name="markup_text" transfer-ownership="none">
21608+ <doc xml:space="preserve"
21609+ filename="../pango/pango-markup.c"
21610+ line="604">markup to parse (see the [Pango Markup](pango_markup.html) docs)</doc>
21611+ <type name="utf8" c:type="const char*"/>
21612+ </parameter>
21613+ <parameter name="length" transfer-ownership="none">
21614+ <doc xml:space="preserve"
21615+ filename="../pango/pango-markup.c"
21616+ line="605">length of @markup_text, or -1 if nul-terminated</doc>
21617+ <type name="gint" c:type="int"/>
21618+ </parameter>
21619+ <parameter name="accel_marker" transfer-ownership="none">
21620+ <doc xml:space="preserve"
21621+ filename="../pango/pango-markup.c"
21622+ line="606">character that precedes an accelerator, or 0 for none</doc>
21623+ <type name="gunichar" c:type="gunichar"/>
21624+ </parameter>
21625+ <parameter name="attr_list"
21626+ direction="out"
21627+ caller-allocates="0"
21628+ transfer-ownership="full"
21629+ optional="1"
21630+ allow-none="1">
21631+ <doc xml:space="preserve"
21632+ filename="../pango/pango-markup.c"
21633+ line="607">address of return location for a `PangoAttrList`</doc>
21634+ <type name="AttrList" c:type="PangoAttrList**"/>
21635+ </parameter>
21636+ <parameter name="text"
21637+ direction="out"
21638+ caller-allocates="0"
21639+ transfer-ownership="full"
21640+ optional="1"
21641+ allow-none="1">
21642+ <doc xml:space="preserve"
21643+ filename="../pango/pango-markup.c"
21644+ line="608">address of return location for text with tags stripped</doc>
21645+ <type name="utf8" c:type="char**"/>
21646+ </parameter>
21647+ <parameter name="accel_char"
21648+ direction="out"
21649+ caller-allocates="0"
21650+ transfer-ownership="full"
21651+ optional="1"
21652+ allow-none="1">
21653+ <doc xml:space="preserve"
21654+ filename="../pango/pango-markup.c"
21655+ line="609">address of return location for accelerator char</doc>
21656+ <type name="gunichar" c:type="gunichar*"/>
21657+ </parameter>
21658+ </parameters>
21659+ </function>
21660+ <function name="parse_stretch" c:identifier="pango_parse_stretch">
21661+ <doc xml:space="preserve"
21662+ filename="../pango/fonts.c"
21663+ line="1667">Parses a font stretch.
21664+
21665+The allowed values are
21666+"ultra_condensed", "extra_condensed", "condensed",
21667+"semi_condensed", "normal", "semi_expanded", "expanded",
21668+"extra_expanded" and "ultra_expanded". Case variations are
21669+ignored and the '_' characters may be omitted.</doc>
21670+ <source-position filename="../pango/pango-utils.h" line="78"/>
21671+ <return-value transfer-ownership="none">
21672+ <doc xml:space="preserve"
21673+ filename="../pango/fonts.c"
21674+ line="1681">%TRUE if @str was successfully parsed.</doc>
21675+ <type name="gboolean" c:type="gboolean"/>
21676+ </return-value>
21677+ <parameters>
21678+ <parameter name="str" transfer-ownership="none">
21679+ <doc xml:space="preserve"
21680+ filename="../pango/fonts.c"
21681+ line="1669">a string to parse.</doc>
21682+ <type name="utf8" c:type="const char*"/>
21683+ </parameter>
21684+ <parameter name="stretch"
21685+ direction="out"
21686+ caller-allocates="0"
21687+ transfer-ownership="full">
21688+ <doc xml:space="preserve"
21689+ filename="../pango/fonts.c"
21690+ line="1670">a `PangoStretch` to store the result in.</doc>
21691+ <type name="Stretch" c:type="PangoStretch*"/>
21692+ </parameter>
21693+ <parameter name="warn" transfer-ownership="none">
21694+ <doc xml:space="preserve"
21695+ filename="../pango/fonts.c"
21696+ line="1671">if %TRUE, issue a g_warning() on bad input.</doc>
21697+ <type name="gboolean" c:type="gboolean"/>
21698+ </parameter>
21699+ </parameters>
21700+ </function>
21701+ <function name="parse_style" c:identifier="pango_parse_style">
21702+ <doc xml:space="preserve"
21703+ filename="../pango/fonts.c"
21704+ line="1601">Parses a font style.
21705+
21706+The allowed values are "normal", "italic" and "oblique", case
21707+variations being
21708+ignored.</doc>
21709+ <source-position filename="../pango/pango-utils.h" line="66"/>
21710+ <return-value transfer-ownership="none">
21711+ <doc xml:space="preserve"
21712+ filename="../pango/fonts.c"
21713+ line="1613">%TRUE if @str was successfully parsed.</doc>
21714+ <type name="gboolean" c:type="gboolean"/>
21715+ </return-value>
21716+ <parameters>
21717+ <parameter name="str" transfer-ownership="none">
21718+ <doc xml:space="preserve"
21719+ filename="../pango/fonts.c"
21720+ line="1603">a string to parse.</doc>
21721+ <type name="utf8" c:type="const char*"/>
21722+ </parameter>
21723+ <parameter name="style"
21724+ direction="out"
21725+ caller-allocates="0"
21726+ transfer-ownership="full">
21727+ <doc xml:space="preserve"
21728+ filename="../pango/fonts.c"
21729+ line="1604">a `PangoStyle` to store the result in.</doc>
21730+ <type name="Style" c:type="PangoStyle*"/>
21731+ </parameter>
21732+ <parameter name="warn" transfer-ownership="none">
21733+ <doc xml:space="preserve"
21734+ filename="../pango/fonts.c"
21735+ line="1605">if %TRUE, issue a g_warning() on bad input.</doc>
21736+ <type name="gboolean" c:type="gboolean"/>
21737+ </parameter>
21738+ </parameters>
21739+ </function>
21740+ <function name="parse_variant" c:identifier="pango_parse_variant">
21741+ <doc xml:space="preserve"
21742+ filename="../pango/fonts.c"
21743+ line="1623">Parses a font variant.
21744+
21745+The allowed values are "normal", "small-caps", "all-small-caps",
21746+"petite-caps", "all-petite-caps", "unicase" and "title-caps",
21747+case variations being ignored.</doc>
21748+ <source-position filename="../pango/pango-utils.h" line="70"/>
21749+ <return-value transfer-ownership="none">
21750+ <doc xml:space="preserve"
21751+ filename="../pango/fonts.c"
21752+ line="1635">%TRUE if @str was successfully parsed.</doc>
21753+ <type name="gboolean" c:type="gboolean"/>
21754+ </return-value>
21755+ <parameters>
21756+ <parameter name="str" transfer-ownership="none">
21757+ <doc xml:space="preserve"
21758+ filename="../pango/fonts.c"
21759+ line="1625">a string to parse.</doc>
21760+ <type name="utf8" c:type="const char*"/>
21761+ </parameter>
21762+ <parameter name="variant"
21763+ direction="out"
21764+ caller-allocates="0"
21765+ transfer-ownership="full">
21766+ <doc xml:space="preserve"
21767+ filename="../pango/fonts.c"
21768+ line="1626">a `PangoVariant` to store the result in.</doc>
21769+ <type name="Variant" c:type="PangoVariant*"/>
21770+ </parameter>
21771+ <parameter name="warn" transfer-ownership="none">
21772+ <doc xml:space="preserve"
21773+ filename="../pango/fonts.c"
21774+ line="1627">if %TRUE, issue a g_warning() on bad input.</doc>
21775+ <type name="gboolean" c:type="gboolean"/>
21776+ </parameter>
21777+ </parameters>
21778+ </function>
21779+ <function name="parse_weight" c:identifier="pango_parse_weight">
21780+ <doc xml:space="preserve"
21781+ filename="../pango/fonts.c"
21782+ line="1645">Parses a font weight.
21783+
21784+The allowed values are "heavy",
21785+"ultrabold", "bold", "normal", "light", "ultraleight"
21786+and integers. Case variations are ignored.</doc>
21787+ <source-position filename="../pango/pango-utils.h" line="74"/>
21788+ <return-value transfer-ownership="none">
21789+ <doc xml:space="preserve"
21790+ filename="../pango/fonts.c"
21791+ line="1657">%TRUE if @str was successfully parsed.</doc>
21792+ <type name="gboolean" c:type="gboolean"/>
21793+ </return-value>
21794+ <parameters>
21795+ <parameter name="str" transfer-ownership="none">
21796+ <doc xml:space="preserve"
21797+ filename="../pango/fonts.c"
21798+ line="1647">a string to parse.</doc>
21799+ <type name="utf8" c:type="const char*"/>
21800+ </parameter>
21801+ <parameter name="weight"
21802+ direction="out"
21803+ caller-allocates="0"
21804+ transfer-ownership="full">
21805+ <doc xml:space="preserve"
21806+ filename="../pango/fonts.c"
21807+ line="1648">a `PangoWeight` to store the result in.</doc>
21808+ <type name="Weight" c:type="PangoWeight*"/>
21809+ </parameter>
21810+ <parameter name="warn" transfer-ownership="none">
21811+ <doc xml:space="preserve"
21812+ filename="../pango/fonts.c"
21813+ line="1649">if %TRUE, issue a g_warning() on bad input.</doc>
21814+ <type name="gboolean" c:type="gboolean"/>
21815+ </parameter>
21816+ </parameters>
21817+ </function>
21818+ <function name="quantize_line_geometry"
21819+ c:identifier="pango_quantize_line_geometry"
21820+ version="1.12">
21821+ <doc xml:space="preserve"
21822+ filename="../pango/pango-utils.c"
21823+ line="953">Quantizes the thickness and position of a line to whole device pixels.
21824+
21825+This is typically used for underline or strikethrough. The purpose of
21826+this function is to avoid such lines looking blurry.
21827+
21828+Care is taken to make sure @thickness is at least one pixel when this
21829+function returns, but returned @position may become zero as a result
21830+of rounding.</doc>
21831+ <source-position filename="../pango/pango-utils.h" line="86"/>
21832+ <return-value transfer-ownership="none">
21833+ <type name="none" c:type="void"/>
21834+ </return-value>
21835+ <parameters>
21836+ <parameter name="thickness"
21837+ direction="inout"
21838+ caller-allocates="0"
21839+ transfer-ownership="full">
21840+ <doc xml:space="preserve"
21841+ filename="../pango/pango-utils.c"
21842+ line="955">pointer to the thickness of a line, in Pango units</doc>
21843+ <type name="gint" c:type="int*"/>
21844+ </parameter>
21845+ <parameter name="position"
21846+ direction="inout"
21847+ caller-allocates="0"
21848+ transfer-ownership="full">
21849+ <doc xml:space="preserve"
21850+ filename="../pango/pango-utils.c"
21851+ line="956">corresponding position</doc>
21852+ <type name="gint" c:type="int*"/>
21853+ </parameter>
21854+ </parameters>
21855+ </function>
21856+ <function name="read_line"
21857+ c:identifier="pango_read_line"
21858+ deprecated="1"
21859+ deprecated-version="1.38">
21860+ <doc xml:space="preserve"
21861+ filename="../pango/pango-utils.c"
21862+ line="240">Reads an entire line from a file into a buffer.
21863+
21864+Lines may be delimited with '\n', '\r', '\n\r', or '\r\n'. The delimiter
21865+is not written into the buffer. Text after a '#' character is treated as
21866+a comment and skipped. '\' can be used to escape a # character.
21867+'\' proceeding a line delimiter combines adjacent lines. A '\' proceeding
21868+any other character is ignored and written into the output buffer
21869+unmodified.</doc>
21870+ <source-position filename="../pango/pango-utils.h" line="37"/>
21871+ <return-value transfer-ownership="none">
21872+ <doc xml:space="preserve"
21873+ filename="../pango/pango-utils.c"
21874+ line="254">0 if the stream was already at an %EOF character,
21875+ otherwise the number of lines read (this is useful for maintaining
21876+ a line number counter which doesn't combine lines with '\')</doc>
21877+ <type name="gint" c:type="gint"/>
21878+ </return-value>
21879+ <parameters>
21880+ <parameter name="stream"
21881+ transfer-ownership="none"
21882+ nullable="1"
21883+ allow-none="1">
21884+ <doc xml:space="preserve"
21885+ filename="../pango/pango-utils.c"
21886+ line="242">a stdio stream</doc>
21887+ <type name="gpointer" c:type="FILE*"/>
21888+ </parameter>
21889+ <parameter name="str" transfer-ownership="none">
21890+ <doc xml:space="preserve"
21891+ filename="../pango/pango-utils.c"
21892+ line="243">`GString` buffer into which to write the result</doc>
21893+ <type name="GLib.String" c:type="GString*"/>
21894+ </parameter>
21895+ </parameters>
21896+ </function>
21897+ <function name="reorder_items" c:identifier="pango_reorder_items">
21898+ <doc xml:space="preserve"
21899+ filename="../pango/reorder-items.c"
21900+ line="32">Reorder items from logical order to visual order.
21901+
21902+The visual order is determined from the associated directional
21903+levels of the items. The original list is unmodified.
21904+
21905+(Please open a bug if you use this function.
21906+ It is not a particularly convenient interface, and the code
21907+ is duplicated elsewhere in Pango for that reason.)</doc>
21908+ <source-position filename="../pango/pango-item.h" line="141"/>
21909+ <return-value transfer-ownership="full">
21910+ <doc xml:space="preserve"
21911+ filename="../pango/reorder-items.c"
21912+ line="46">a `GList`
21913+ of `PangoItem` structures in visual order.</doc>
21914+ <type name="GLib.List" c:type="GList*">
21915+ <type name="Item"/>
21916+ </type>
21917+ </return-value>
21918+ <parameters>
21919+ <parameter name="items" transfer-ownership="none">
21920+ <doc xml:space="preserve"
21921+ filename="../pango/reorder-items.c"
21922+ line="34">a `GList` of `PangoItem`
21923+ in logical order.</doc>
21924+ <type name="GLib.List" c:type="GList*">
21925+ <type name="Item"/>
21926+ </type>
21927+ </parameter>
21928+ </parameters>
21929+ </function>
21930+ <function name="scan_int"
21931+ c:identifier="pango_scan_int"
21932+ deprecated="1"
21933+ deprecated-version="1.38">
21934+ <doc xml:space="preserve"
21935+ filename="../pango/pango-utils.c"
21936+ line="515">Scans an integer.
21937+
21938+Leading white space is skipped.</doc>
21939+ <source-position filename="../pango/pango-utils.h" line="48"/>
21940+ <return-value transfer-ownership="none">
21941+ <doc xml:space="preserve"
21942+ filename="../pango/pango-utils.c"
21943+ line="524">%FALSE if a parse error occurred</doc>
21944+ <type name="gboolean" c:type="gboolean"/>
21945+ </return-value>
21946+ <parameters>
21947+ <parameter name="pos"
21948+ direction="inout"
21949+ caller-allocates="0"
21950+ transfer-ownership="full">
21951+ <doc xml:space="preserve"
21952+ filename="../pango/pango-utils.c"
21953+ line="517">in/out string position</doc>
21954+ <type name="utf8" c:type="const char**"/>
21955+ </parameter>
21956+ <parameter name="out"
21957+ direction="out"
21958+ caller-allocates="0"
21959+ transfer-ownership="full">
21960+ <doc xml:space="preserve"
21961+ filename="../pango/pango-utils.c"
21962+ line="518">an int into which to write the result</doc>
21963+ <type name="gint" c:type="int*"/>
21964+ </parameter>
21965+ </parameters>
21966+ </function>
21967+ <function name="scan_string"
21968+ c:identifier="pango_scan_string"
21969+ deprecated="1"
21970+ deprecated-version="1.38">
21971+ <doc xml:space="preserve"
21972+ filename="../pango/pango-utils.c"
21973+ line="422">Scans a string into a `GString` buffer.
21974+
21975+The string may either be a sequence of non-white-space characters,
21976+or a quoted string with '"'. Instead a quoted string, '\"' represents
21977+a literal quote. Leading white space outside of quotes is skipped.</doc>
21978+ <source-position filename="../pango/pango-utils.h" line="45"/>
21979+ <return-value transfer-ownership="none">
21980+ <doc xml:space="preserve"
21981+ filename="../pango/pango-utils.c"
21982+ line="433">%FALSE if a parse error occurred</doc>
21983+ <type name="gboolean" c:type="gboolean"/>
21984+ </return-value>
21985+ <parameters>
21986+ <parameter name="pos"
21987+ direction="inout"
21988+ caller-allocates="0"
21989+ transfer-ownership="full">
21990+ <doc xml:space="preserve"
21991+ filename="../pango/pango-utils.c"
21992+ line="424">in/out string position</doc>
21993+ <type name="utf8" c:type="const char**"/>
21994+ </parameter>
21995+ <parameter name="out" transfer-ownership="none">
21996+ <doc xml:space="preserve"
21997+ filename="../pango/pango-utils.c"
21998+ line="425">a `GString` into which to write the result</doc>
21999+ <type name="GLib.String" c:type="GString*"/>
22000+ </parameter>
22001+ </parameters>
22002+ </function>
22003+ <function name="scan_word"
22004+ c:identifier="pango_scan_word"
22005+ deprecated="1"
22006+ deprecated-version="1.38">
22007+ <doc xml:space="preserve"
22008+ filename="../pango/pango-utils.c"
22009+ line="377">Scans a word into a `GString` buffer.
22010+
22011+A word consists of [A-Za-z_] followed by zero or more
22012+[A-Za-z_0-9]. Leading white space is skipped.</doc>
22013+ <source-position filename="../pango/pango-utils.h" line="42"/>
22014+ <return-value transfer-ownership="none">
22015+ <doc xml:space="preserve"
22016+ filename="../pango/pango-utils.c"
22017+ line="387">%FALSE if a parse error occurred</doc>
22018+ <type name="gboolean" c:type="gboolean"/>
22019+ </return-value>
22020+ <parameters>
22021+ <parameter name="pos"
22022+ direction="inout"
22023+ caller-allocates="0"
22024+ transfer-ownership="full">
22025+ <doc xml:space="preserve"
22026+ filename="../pango/pango-utils.c"
22027+ line="379">in/out string position</doc>
22028+ <type name="utf8" c:type="const char**"/>
22029+ </parameter>
22030+ <parameter name="out" transfer-ownership="none">
22031+ <doc xml:space="preserve"
22032+ filename="../pango/pango-utils.c"
22033+ line="380">a `GString` into which to write the result</doc>
22034+ <type name="GLib.String" c:type="GString*"/>
22035+ </parameter>
22036+ </parameters>
22037+ </function>
22038+ <function name="script_for_unichar"
22039+ c:identifier="pango_script_for_unichar"
22040+ moved-to="Script.for_unichar"
22041+ version="1.4"
22042+ deprecated="1"
22043+ deprecated-version="1.44.">
22044+ <doc xml:space="preserve"
22045+ filename="../pango/pango-script.c"
22046+ line="63">Looks up the script for a particular character.
22047+
22048+The script of a character is defined by
22049+[Unicode Standard Annex 24: Script names](http://www.unicode.org/reports/tr24/).
22050+
22051+No check is made for @ch being a valid Unicode character; if you pass
22052+in invalid character, the result is undefined.
22053+
22054+Note that while the return type of this function is declared
22055+as `PangoScript`, as of Pango 1.18, this function simply returns
22056+the return value of [func@GLib.unichar_get_script]. Callers must be
22057+prepared to handle unknown values.</doc>
22058+ <doc-deprecated xml:space="preserve">Use g_unichar_get_script()</doc-deprecated>
22059+ <source-position filename="../pango/pango-script.h" line="310"/>
22060+ <return-value transfer-ownership="none">
22061+ <doc xml:space="preserve"
22062+ filename="../pango/pango-script.c"
22063+ line="80">the `PangoScript` for the character.</doc>
22064+ <type name="Script" c:type="PangoScript"/>
22065+ </return-value>
22066+ <parameters>
22067+ <parameter name="ch" transfer-ownership="none">
22068+ <doc xml:space="preserve"
22069+ filename="../pango/pango-script.c"
22070+ line="65">a Unicode character</doc>
22071+ <type name="gunichar" c:type="gunichar"/>
22072+ </parameter>
22073+ </parameters>
22074+ </function>
22075+ <function name="script_get_sample_language"
22076+ c:identifier="pango_script_get_sample_language"
22077+ moved-to="Script.get_sample_language"
22078+ version="1.4">
22079+ <doc xml:space="preserve"
22080+ filename="../pango/pango-language.c"
22081+ line="870">Finds a language tag that is reasonably representative of @script.
22082+
22083+The language will usually be the most widely spoken or used language
22084+written in that script: for instance, the sample language for
22085+%PANGO_SCRIPT_CYRILLIC is ru (Russian), the sample language for
22086+%PANGO_SCRIPT_ARABIC is ar.
22087+
22088+For some scripts, no sample language will be returned because
22089+there is no language that is sufficiently representative. The
22090+best example of this is %PANGO_SCRIPT_HAN, where various different
22091+variants of written Chinese, Japanese, and Korean all use
22092+significantly different sets of Han characters and forms
22093+of shared characters. No sample language can be provided
22094+for many historical scripts as well.
22095+
22096+As of 1.18, this function checks the environment variables
22097+`PANGO_LANGUAGE` and `LANGUAGE` (checked in that order) first.
22098+If one of them is set, it is parsed as a list of language tags
22099+separated by colons or other separators. This function
22100+will return the first language in the parsed list that Pango
22101+believes may use @script for writing. This last predicate
22102+is tested using [method@Pango.Language.includes_script]. This can
22103+be used to control Pango's font selection for non-primary
22104+languages. For example, a `PANGO_LANGUAGE` enviroment variable
22105+set to "en:fa" makes Pango choose fonts suitable for Persian (fa)
22106+instead of Arabic (ar) when a segment of Arabic text is found
22107+in an otherwise non-Arabic text. The same trick can be used to
22108+choose a default language for %PANGO_SCRIPT_HAN when setting
22109+context language is not feasible.</doc>
22110+ <source-position filename="../pango/pango-script.h" line="331"/>
22111+ <return-value transfer-ownership="full" nullable="1">
22112+ <doc xml:space="preserve"
22113+ filename="../pango/pango-language.c"
22114+ line="904">a `PangoLanguage` that is representative
22115+ of the script</doc>
22116+ <type name="Language" c:type="PangoLanguage*"/>
22117+ </return-value>
22118+ <parameters>
22119+ <parameter name="script" transfer-ownership="none">
22120+ <doc xml:space="preserve"
22121+ filename="../pango/pango-language.c"
22122+ line="872">a `PangoScript`</doc>
22123+ <type name="Script" c:type="PangoScript"/>
22124+ </parameter>
22125+ </parameters>
22126+ </function>
22127+ <function name="shape" c:identifier="pango_shape">
22128+ <doc xml:space="preserve"
22129+ filename="../pango/shape.c"
22130+ line="770">Convert the characters in @text into glyphs.
22131+
22132+Given a segment of text and the corresponding `PangoAnalysis` structure
22133+returned from [func@Pango.itemize], convert the characters into glyphs. You
22134+may also pass in only a substring of the item from [func@Pango.itemize].
22135+
22136+It is recommended that you use [func@Pango.shape_full] instead, since
22137+that API allows for shaping interaction happening across text item
22138+boundaries.
22139+
22140+Note that the extra attributes in the @analyis that is returned from
22141+[func@Pango.itemize] have indices that are relative to the entire paragraph,
22142+so you need to subtract the item offset from their indices before
22143+calling [func@Pango.shape].</doc>
22144+ <source-position filename="../pango/pango-glyph.h" line="236"/>
22145+ <return-value transfer-ownership="none">
22146+ <type name="none" c:type="void"/>
22147+ </return-value>
22148+ <parameters>
22149+ <parameter name="text" transfer-ownership="none">
22150+ <doc xml:space="preserve"
22151+ filename="../pango/shape.c"
22152+ line="772">the text to process</doc>
22153+ <type name="utf8" c:type="const char*"/>
22154+ </parameter>
22155+ <parameter name="length" transfer-ownership="none">
22156+ <doc xml:space="preserve"
22157+ filename="../pango/shape.c"
22158+ line="773">the length (in bytes) of @text</doc>
22159+ <type name="gint" c:type="int"/>
22160+ </parameter>
22161+ <parameter name="analysis" transfer-ownership="none">
22162+ <doc xml:space="preserve"
22163+ filename="../pango/shape.c"
22164+ line="774">`PangoAnalysis` structure from [func@Pango.itemize]</doc>
22165+ <type name="Analysis" c:type="const PangoAnalysis*"/>
22166+ </parameter>
22167+ <parameter name="glyphs" transfer-ownership="none">
22168+ <doc xml:space="preserve"
22169+ filename="../pango/shape.c"
22170+ line="775">glyph string in which to store results</doc>
22171+ <type name="GlyphString" c:type="PangoGlyphString*"/>
22172+ </parameter>
22173+ </parameters>
22174+ </function>
22175+ <function name="shape_full" c:identifier="pango_shape_full" version="1.32">
22176+ <doc xml:space="preserve"
22177+ filename="../pango/shape.c"
22178+ line="801">Convert the characters in @text into glyphs.
22179+
22180+Given a segment of text and the corresponding `PangoAnalysis` structure
22181+returned from [func@Pango.itemize], convert the characters into glyphs.
22182+You may also pass in only a substring of the item from [func@Pango.itemize].
22183+
22184+This is similar to [func@Pango.shape], except it also can optionally take
22185+the full paragraph text as input, which will then be used to perform
22186+certain cross-item shaping interactions. If you have access to the broader
22187+text of which @item_text is part of, provide the broader text as
22188+@paragraph_text. If @paragraph_text is %NULL, item text is used instead.
22189+
22190+Note that the extra attributes in the @analyis that is returned from
22191+[func@Pango.itemize] have indices that are relative to the entire paragraph,
22192+so you do not pass the full paragraph text as @paragraph_text, you need
22193+to subtract the item offset from their indices before calling
22194+[func@Pango.shape_full].</doc>
22195+ <source-position filename="../pango/pango-glyph.h" line="242"/>
22196+ <return-value transfer-ownership="none">
22197+ <type name="none" c:type="void"/>
22198+ </return-value>
22199+ <parameters>
22200+ <parameter name="item_text" transfer-ownership="none">
22201+ <doc xml:space="preserve"
22202+ filename="../pango/shape.c"
22203+ line="803">valid UTF-8 text to shape.</doc>
22204+ <type name="utf8" c:type="const char*"/>
22205+ </parameter>
22206+ <parameter name="item_length" transfer-ownership="none">
22207+ <doc xml:space="preserve"
22208+ filename="../pango/shape.c"
22209+ line="804">the length (in bytes) of @item_text. -1 means nul-terminated text.</doc>
22210+ <type name="gint" c:type="int"/>
22211+ </parameter>
22212+ <parameter name="paragraph_text"
22213+ transfer-ownership="none"
22214+ nullable="1"
22215+ allow-none="1">
22216+ <doc xml:space="preserve"
22217+ filename="../pango/shape.c"
22218+ line="805">text of the paragraph (see details).</doc>
22219+ <type name="utf8" c:type="const char*"/>
22220+ </parameter>
22221+ <parameter name="paragraph_length" transfer-ownership="none">
22222+ <doc xml:space="preserve"
22223+ filename="../pango/shape.c"
22224+ line="806">the length (in bytes) of @paragraph_text. -1 means nul-terminated text.</doc>
22225+ <type name="gint" c:type="int"/>
22226+ </parameter>
22227+ <parameter name="analysis" transfer-ownership="none">
22228+ <doc xml:space="preserve"
22229+ filename="../pango/shape.c"
22230+ line="807">`PangoAnalysis` structure from [func@Pango.itemize].</doc>
22231+ <type name="Analysis" c:type="const PangoAnalysis*"/>
22232+ </parameter>
22233+ <parameter name="glyphs" transfer-ownership="none">
22234+ <doc xml:space="preserve"
22235+ filename="../pango/shape.c"
22236+ line="808">glyph string in which to store results.</doc>
22237+ <type name="GlyphString" c:type="PangoGlyphString*"/>
22238+ </parameter>
22239+ </parameters>
22240+ </function>
22241+ <function name="shape_item" c:identifier="pango_shape_item" version="1.50">
22242+ <doc xml:space="preserve"
22243+ filename="../pango/shape.c"
22244+ line="889">Convert the characters in @item into glyphs.
22245+
22246+This is similar to [func@Pango.shape_with_flags], except it takes a
22247+`PangoItem` instead of separate @item_text and @analysis arguments.
22248+It also takes @log_attrs, which may be used in implementing text
22249+transforms.
22250+
22251+Note that the extra attributes in the @analyis that is returned from
22252+[func@Pango.itemize] have indices that are relative to the entire paragraph,
22253+so you do not pass the full paragraph text as @paragraph_text, you need
22254+to subtract the item offset from their indices before calling
22255+[func@Pango.shape_with_flags].</doc>
22256+ <source-position filename="../pango/pango-glyph.h" line="260"/>
22257+ <return-value transfer-ownership="none">
22258+ <type name="none" c:type="void"/>
22259+ </return-value>
22260+ <parameters>
22261+ <parameter name="item" transfer-ownership="none">
22262+ <doc xml:space="preserve"
22263+ filename="../pango/shape.c"
22264+ line="891">`PangoItem` to shape</doc>
22265+ <type name="Item" c:type="PangoItem*"/>
22266+ </parameter>
22267+ <parameter name="paragraph_text"
22268+ transfer-ownership="none"
22269+ nullable="1"
22270+ allow-none="1">
22271+ <doc xml:space="preserve"
22272+ filename="../pango/shape.c"
22273+ line="892">text of the paragraph (see details).</doc>
22274+ <type name="utf8" c:type="const char*"/>
22275+ </parameter>
22276+ <parameter name="paragraph_length" transfer-ownership="none">
22277+ <doc xml:space="preserve"
22278+ filename="../pango/shape.c"
22279+ line="893">the length (in bytes) of @paragraph_text.
22280+ -1 means nul-terminated text.</doc>
22281+ <type name="gint" c:type="int"/>
22282+ </parameter>
22283+ <parameter name="log_attrs"
22284+ transfer-ownership="none"
22285+ nullable="1"
22286+ allow-none="1">
22287+ <doc xml:space="preserve"
22288+ filename="../pango/shape.c"
22289+ line="895">array of `PangoLogAttr` for @item</doc>
22290+ <type name="LogAttr" c:type="PangoLogAttr*"/>
22291+ </parameter>
22292+ <parameter name="glyphs" transfer-ownership="none">
22293+ <doc xml:space="preserve"
22294+ filename="../pango/shape.c"
22295+ line="896">glyph string in which to store results</doc>
22296+ <type name="GlyphString" c:type="PangoGlyphString*"/>
22297+ </parameter>
22298+ <parameter name="flags" transfer-ownership="none">
22299+ <doc xml:space="preserve"
22300+ filename="../pango/shape.c"
22301+ line="897">flags influencing the shaping process</doc>
22302+ <type name="ShapeFlags" c:type="PangoShapeFlags"/>
22303+ </parameter>
22304+ </parameters>
22305+ </function>
22306+ <function name="shape_with_flags"
22307+ c:identifier="pango_shape_with_flags"
22308+ version="1.44">
22309+ <doc xml:space="preserve"
22310+ filename="../pango/shape.c"
22311+ line="845">Convert the characters in @text into glyphs.
22312+
22313+Given a segment of text and the corresponding `PangoAnalysis` structure
22314+returned from [func@Pango.itemize], convert the characters into glyphs.
22315+You may also pass in only a substring of the item from [func@Pango.itemize].
22316+
22317+This is similar to [func@Pango.shape_full], except it also takes flags
22318+that can influence the shaping process.
22319+
22320+Note that the extra attributes in the @analyis that is returned from
22321+[func@Pango.itemize] have indices that are relative to the entire paragraph,
22322+so you do not pass the full paragraph text as @paragraph_text, you need
22323+to subtract the item offset from their indices before calling
22324+[func@Pango.shape_with_flags].</doc>
22325+ <source-position filename="../pango/pango-glyph.h" line="250"/>
22326+ <return-value transfer-ownership="none">
22327+ <type name="none" c:type="void"/>
22328+ </return-value>
22329+ <parameters>
22330+ <parameter name="item_text" transfer-ownership="none">
22331+ <doc xml:space="preserve"
22332+ filename="../pango/shape.c"
22333+ line="847">valid UTF-8 text to shape</doc>
22334+ <type name="utf8" c:type="const char*"/>
22335+ </parameter>
22336+ <parameter name="item_length" transfer-ownership="none">
22337+ <doc xml:space="preserve"
22338+ filename="../pango/shape.c"
22339+ line="848">the length (in bytes) of @item_text.
22340+ -1 means nul-terminated text.</doc>
22341+ <type name="gint" c:type="int"/>
22342+ </parameter>
22343+ <parameter name="paragraph_text"
22344+ transfer-ownership="none"
22345+ nullable="1"
22346+ allow-none="1">
22347+ <doc xml:space="preserve"
22348+ filename="../pango/shape.c"
22349+ line="850">text of the paragraph (see details).</doc>
22350+ <type name="utf8" c:type="const char*"/>
22351+ </parameter>
22352+ <parameter name="paragraph_length" transfer-ownership="none">
22353+ <doc xml:space="preserve"
22354+ filename="../pango/shape.c"
22355+ line="851">the length (in bytes) of @paragraph_text.
22356+ -1 means nul-terminated text.</doc>
22357+ <type name="gint" c:type="int"/>
22358+ </parameter>
22359+ <parameter name="analysis" transfer-ownership="none">
22360+ <doc xml:space="preserve"
22361+ filename="../pango/shape.c"
22362+ line="853">`PangoAnalysis` structure from [func@Pango.itemize]</doc>
22363+ <type name="Analysis" c:type="const PangoAnalysis*"/>
22364+ </parameter>
22365+ <parameter name="glyphs" transfer-ownership="none">
22366+ <doc xml:space="preserve"
22367+ filename="../pango/shape.c"
22368+ line="854">glyph string in which to store results</doc>
22369+ <type name="GlyphString" c:type="PangoGlyphString*"/>
22370+ </parameter>
22371+ <parameter name="flags" transfer-ownership="none">
22372+ <doc xml:space="preserve"
22373+ filename="../pango/shape.c"
22374+ line="855">flags influencing the shaping process</doc>
22375+ <type name="ShapeFlags" c:type="PangoShapeFlags"/>
22376+ </parameter>
22377+ </parameters>
22378+ </function>
22379+ <function name="skip_space"
22380+ c:identifier="pango_skip_space"
22381+ deprecated="1"
22382+ deprecated-version="1.38">
22383+ <doc xml:space="preserve"
22384+ filename="../pango/pango-utils.c"
22385+ line="353">Skips 0 or more characters of white space.</doc>
22386+ <source-position filename="../pango/pango-utils.h" line="40"/>
22387+ <return-value transfer-ownership="none">
22388+ <doc xml:space="preserve"
22389+ filename="../pango/pango-utils.c"
22390+ line="359">%FALSE if skipping the white space leaves
22391+ the position at a '\0' character.</doc>
22392+ <type name="gboolean" c:type="gboolean"/>
22393+ </return-value>
22394+ <parameters>
22395+ <parameter name="pos"
22396+ direction="inout"
22397+ caller-allocates="0"
22398+ transfer-ownership="full">
22399+ <doc xml:space="preserve"
22400+ filename="../pango/pango-utils.c"
22401+ line="355">in/out string position</doc>
22402+ <type name="utf8" c:type="const char**"/>
22403+ </parameter>
22404+ </parameters>
22405+ </function>
22406+ <function name="split_file_list"
22407+ c:identifier="pango_split_file_list"
22408+ deprecated="1"
22409+ deprecated-version="1.38">
22410+ <doc xml:space="preserve"
22411+ filename="../pango/pango-utils.c"
22412+ line="174">Splits a %G_SEARCHPATH_SEPARATOR-separated list of files, stripping
22413+white space and substituting ~/ with $HOME/.</doc>
22414+ <source-position filename="../pango/pango-utils.h" line="32"/>
22415+ <return-value transfer-ownership="full">
22416+ <doc xml:space="preserve"
22417+ filename="../pango/pango-utils.c"
22418+ line="181">a list of
22419+ strings to be freed with g_strfreev()</doc>
22420+ <array c:type="char**">
22421+ <type name="utf8"/>
22422+ </array>
22423+ </return-value>
22424+ <parameters>
22425+ <parameter name="str" transfer-ownership="none">
22426+ <doc xml:space="preserve"
22427+ filename="../pango/pango-utils.c"
22428+ line="176">a %G_SEARCHPATH_SEPARATOR separated list of filenames</doc>
22429+ <type name="utf8" c:type="const char*"/>
22430+ </parameter>
22431+ </parameters>
22432+ </function>
22433+ <function name="tab_array_from_string"
22434+ c:identifier="pango_tab_array_from_string"
22435+ moved-to="TabArray.from_string"
22436+ version="1.50">
22437+ <doc xml:space="preserve"
22438+ filename="../pango/pango-tabs.c"
22439+ line="446">Deserializes a `PangoTabArray` from a string.
22440+
22441+This is the counterpart to [method@Pango.TabArray.to_string].
22442+See that functions for details about the format.</doc>
22443+ <source-position filename="../pango/pango-tabs.h" line="103"/>
22444+ <return-value transfer-ownership="full" nullable="1">
22445+ <doc xml:space="preserve"
22446+ filename="../pango/pango-tabs.c"
22447+ line="455">a new `PangoTabArray`</doc>
22448+ <type name="TabArray" c:type="PangoTabArray*"/>
22449+ </return-value>
22450+ <parameters>
22451+ <parameter name="text" transfer-ownership="none">
22452+ <doc xml:space="preserve"
22453+ filename="../pango/pango-tabs.c"
22454+ line="448">a string</doc>
22455+ <type name="utf8" c:type="const char*"/>
22456+ </parameter>
22457+ </parameters>
22458+ </function>
22459+ <function name="tailor_break"
22460+ c:identifier="pango_tailor_break"
22461+ version="1.44">
22462+ <doc xml:space="preserve"
22463+ filename="../pango/break.c"
22464+ line="2225">Apply language-specific tailoring to the breaks in @attrs.
22465+
22466+The line breaks are assumed to have been produced by [func@Pango.default_break].
22467+
22468+If @offset is not -1, it is used to apply attributes from @analysis that are
22469+relevant to line breaking.
22470+
22471+Note that it is better to pass -1 for @offset and use [func@Pango.attr_break]
22472+to apply attributes to the whole paragraph.</doc>
22473+ <source-position filename="../pango/pango-break.h" line="127"/>
22474+ <return-value transfer-ownership="none">
22475+ <type name="none" c:type="void"/>
22476+ </return-value>
22477+ <parameters>
22478+ <parameter name="text" transfer-ownership="none">
22479+ <doc xml:space="preserve"
22480+ filename="../pango/break.c"
22481+ line="2227">text to process. Must be valid UTF-8</doc>
22482+ <type name="utf8" c:type="const char*"/>
22483+ </parameter>
22484+ <parameter name="length" transfer-ownership="none">
22485+ <doc xml:space="preserve"
22486+ filename="../pango/break.c"
22487+ line="2228">length in bytes of @text</doc>
22488+ <type name="gint" c:type="int"/>
22489+ </parameter>
22490+ <parameter name="analysis" transfer-ownership="none">
22491+ <doc xml:space="preserve"
22492+ filename="../pango/break.c"
22493+ line="2229">`PangoAnalysis` for @text</doc>
22494+ <type name="Analysis" c:type="PangoAnalysis*"/>
22495+ </parameter>
22496+ <parameter name="offset" transfer-ownership="none">
22497+ <doc xml:space="preserve"
22498+ filename="../pango/break.c"
22499+ line="2230">Byte offset of @text from the beginning of the
22500+ paragraph, or -1 to ignore attributes from @analysis</doc>
22501+ <type name="gint" c:type="int"/>
22502+ </parameter>
22503+ <parameter name="attrs" transfer-ownership="none">
22504+ <doc xml:space="preserve"
22505+ filename="../pango/break.c"
22506+ line="2232">array with one `PangoLogAttr`
22507+ per character in @text, plus one extra, to be filled in</doc>
22508+ <array length="5" zero-terminated="0" c:type="PangoLogAttr*">
22509+ <type name="LogAttr" c:type="PangoLogAttr"/>
22510+ </array>
22511+ </parameter>
22512+ <parameter name="attrs_len" transfer-ownership="none">
22513+ <doc xml:space="preserve"
22514+ filename="../pango/break.c"
22515+ line="2234">length of @attrs array</doc>
22516+ <type name="gint" c:type="int"/>
22517+ </parameter>
22518+ </parameters>
22519+ </function>
22520+ <function name="trim_string"
22521+ c:identifier="pango_trim_string"
22522+ deprecated="1"
22523+ deprecated-version="1.38">
22524+ <doc xml:space="preserve"
22525+ filename="../pango/pango-utils.c"
22526+ line="141">Trims leading and trailing whitespace from a string.</doc>
22527+ <source-position filename="../pango/pango-utils.h" line="35"/>
22528+ <return-value transfer-ownership="full">
22529+ <doc xml:space="preserve"
22530+ filename="../pango/pango-utils.c"
22531+ line="147">A newly-allocated string that must be freed with g_free()</doc>
22532+ <type name="utf8" c:type="char*"/>
22533+ </return-value>
22534+ <parameters>
22535+ <parameter name="str" transfer-ownership="none">
22536+ <doc xml:space="preserve"
22537+ filename="../pango/pango-utils.c"
22538+ line="143">a string</doc>
22539+ <type name="utf8" c:type="const char*"/>
22540+ </parameter>
22541+ </parameters>
22542+ </function>
22543+ <function name="unichar_direction" c:identifier="pango_unichar_direction">
22544+ <doc xml:space="preserve"
22545+ filename="../pango/pango-bidi-type.c"
22546+ line="243">Determines the inherent direction of a character.
22547+
22548+The inherent direction is either `PANGO_DIRECTION_LTR`, `PANGO_DIRECTION_RTL`,
22549+or `PANGO_DIRECTION_NEUTRAL`.
22550+
22551+This function is useful to categorize characters into left-to-right
22552+letters, right-to-left letters, and everything else. If full Unicode
22553+bidirectional type of a character is needed, [func@Pango.BidiType.for_unichar]
22554+can be used instead.</doc>
22555+ <source-position filename="../pango/pango-bidi-type.h" line="105"/>
22556+ <return-value transfer-ownership="none">
22557+ <doc xml:space="preserve"
22558+ filename="../pango/pango-bidi-type.c"
22559+ line="257">the direction of the character.</doc>
22560+ <type name="Direction" c:type="PangoDirection"/>
22561+ </return-value>
22562+ <parameters>
22563+ <parameter name="ch" transfer-ownership="none">
22564+ <doc xml:space="preserve"
22565+ filename="../pango/pango-bidi-type.c"
22566+ line="245">a Unicode character</doc>
22567+ <type name="gunichar" c:type="gunichar"/>
22568+ </parameter>
22569+ </parameters>
22570+ </function>
22571+ <function name="units_from_double"
22572+ c:identifier="pango_units_from_double"
22573+ version="1.16">
22574+ <doc xml:space="preserve"
22575+ filename="../pango/pango-utils.c"
22576+ line="991">Converts a floating-point number to Pango units.
22577+
22578+The conversion is done by multiplying @d by %PANGO_SCALE and
22579+rounding the result to nearest integer.</doc>
22580+ <source-position filename="../pango/pango-types.h" line="150"/>
22581+ <return-value transfer-ownership="none">
22582+ <doc xml:space="preserve"
22583+ filename="../pango/pango-utils.c"
22584+ line="1000">the value in Pango units.</doc>
22585+ <type name="gint" c:type="int"/>
22586+ </return-value>
22587+ <parameters>
22588+ <parameter name="d" transfer-ownership="none">
22589+ <doc xml:space="preserve"
22590+ filename="../pango/pango-utils.c"
22591+ line="993">double floating-point value</doc>
22592+ <type name="gdouble" c:type="double"/>
22593+ </parameter>
22594+ </parameters>
22595+ </function>
22596+ <function name="units_to_double"
22597+ c:identifier="pango_units_to_double"
22598+ version="1.16">
22599+ <doc xml:space="preserve"
22600+ filename="../pango/pango-utils.c"
22601+ line="1010">Converts a number in Pango units to floating-point.
22602+
22603+The conversion is done by dividing @i by %PANGO_SCALE.</doc>
22604+ <source-position filename="../pango/pango-types.h" line="152"/>
22605+ <return-value transfer-ownership="none">
22606+ <doc xml:space="preserve"
22607+ filename="../pango/pango-utils.c"
22608+ line="1018">the double value.</doc>
22609+ <type name="gdouble" c:type="double"/>
22610+ </return-value>
22611+ <parameters>
22612+ <parameter name="i" transfer-ownership="none">
22613+ <doc xml:space="preserve"
22614+ filename="../pango/pango-utils.c"
22615+ line="1012">value in Pango units</doc>
22616+ <type name="gint" c:type="int"/>
22617+ </parameter>
22618+ </parameters>
22619+ </function>
22620+ <function name="version" c:identifier="pango_version" version="1.16">
22621+ <doc xml:space="preserve"
22622+ filename="../pango/pango-utils.c"
22623+ line="52">Returns the encoded version of Pango available at run-time.
22624+
22625+This is similar to the macro %PANGO_VERSION except that the macro
22626+returns the encoded version available at compile-time. A version
22627+number can be encoded into an integer using PANGO_VERSION_ENCODE().</doc>
22628+ <source-position filename="../pango/pango-utils.h" line="173"/>
22629+ <return-value transfer-ownership="none">
22630+ <doc xml:space="preserve"
22631+ filename="../pango/pango-utils.c"
22632+ line="61">The encoded version of Pango library available at run time.</doc>
22633+ <type name="gint" c:type="int"/>
22634+ </return-value>
22635+ </function>
22636+ <function name="version_check"
22637+ c:identifier="pango_version_check"
22638+ version="1.16">
22639+ <doc xml:space="preserve"
22640+ filename="../pango/pango-utils.c"
22641+ line="91">Checks that the Pango library in use is compatible with the
22642+given version.
22643+
22644+Generally you would pass in the constants %PANGO_VERSION_MAJOR,
22645+%PANGO_VERSION_MINOR, %PANGO_VERSION_MICRO as the three arguments
22646+to this function; that produces a check that the library in use at
22647+run-time is compatible with the version of Pango the application or
22648+module was compiled against.
22649+
22650+Compatibility is defined by two things: first the version
22651+of the running library is newer than the version
22652+@required_major.required_minor.@required_micro. Second
22653+the running library must be binary compatible with the
22654+version @required_major.required_minor.@required_micro
22655+(same major version.)
22656+
22657+For compile-time version checking use PANGO_VERSION_CHECK().</doc>
22658+ <source-position filename="../pango/pango-utils.h" line="181"/>
22659+ <return-value transfer-ownership="none" nullable="1">
22660+ <doc xml:space="preserve"
22661+ filename="../pango/pango-utils.c"
22662+ line="115">%NULL if the Pango library is compatible
22663+ with the given version, or a string describing the version
22664+ mismatch. The returned string is owned by Pango and should not
22665+ be modified or freed.</doc>
22666+ <type name="utf8" c:type="const char*"/>
22667+ </return-value>
22668+ <parameters>
22669+ <parameter name="required_major" transfer-ownership="none">
22670+ <doc xml:space="preserve"
22671+ filename="../pango/pango-utils.c"
22672+ line="93">the required major version</doc>
22673+ <type name="gint" c:type="int"/>
22674+ </parameter>
22675+ <parameter name="required_minor" transfer-ownership="none">
22676+ <doc xml:space="preserve"
22677+ filename="../pango/pango-utils.c"
22678+ line="94">the required minor version</doc>
22679+ <type name="gint" c:type="int"/>
22680+ </parameter>
22681+ <parameter name="required_micro" transfer-ownership="none">
22682+ <doc xml:space="preserve"
22683+ filename="../pango/pango-utils.c"
22684+ line="95">the required major version</doc>
22685+ <type name="gint" c:type="int"/>
22686+ </parameter>
22687+ </parameters>
22688+ </function>
22689+ <function name="version_string"
22690+ c:identifier="pango_version_string"
22691+ version="1.16">
22692+ <doc xml:space="preserve"
22693+ filename="../pango/pango-utils.c"
22694+ line="71">Returns the version of Pango available at run-time.
22695+
22696+This is similar to the macro %PANGO_VERSION_STRING except that the
22697+macro returns the version available at compile-time.</doc>
22698+ <source-position filename="../pango/pango-utils.h" line="177"/>
22699+ <return-value transfer-ownership="none">
22700+ <doc xml:space="preserve"
22701+ filename="../pango/pango-utils.c"
22702+ line="79">A string containing the version of Pango library available
22703+ at run time. The returned string is owned by Pango and should not
22704+ be modified or freed.</doc>
22705+ <type name="utf8" c:type="const char*"/>
22706+ </return-value>
22707+ </function>
22708+ </namespace>
22709+</repository>
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