detached ba4ad52

chore(repo): bootstrap module and pinned xcb-proto sources

commit
ba4ad521151d3500de111a037937f8e1dd3922d2
author
brice · · 2026-10-22 06:12 UTC
parent
none (root commit)
signature
GPG VerifiedCD88F9E564E0102646FB6077A1A07C7C7C3E349D · arch-gpg Verified for the committer email
checks
2/2
21 files · +8123 -0
A .github/workflows/ci.yml +29 -0
@@ -0,0 +1,29 @@
1+name: ci
2+on:
3+ push:
4+ branches: [main]
5+ pull_request:
6+permissions:
7+ contents: read
8+jobs:
9+ check:
10+ runs-on: ubuntu-latest
11+ steps:
12+ - uses: actions/checkout@v4
13+ - uses: actions/setup-go@v5
14+ with:
15+ go-version-file: go.mod
16+ - name: Install X server test tools
17+ run: sudo apt-get update && sudo apt-get install -y xvfb xtrace
18+ - name: Check
19+ run: make check STATICCHECK='go run honnef.co/go/tools/cmd/staticcheck@2026.2.2'
20+ - name: X server tests
21+ run: make xserver
22+ gen-check:
23+ runs-on: ubuntu-latest
24+ steps:
25+ - uses: actions/checkout@v4
26+ - uses: actions/setup-go@v5
27+ with:
28+ go-version-file: go.mod
29+ - run: make gen-check
@@ -0,0 +1,29 @@
1+name: ci
2+on:
3+ push:
4+ branches: [main]
5+ pull_request:
6+permissions:
7+ contents: read
8+jobs:
9+ check:
10+ runs-on: ubuntu-latest
11+ steps:
12+ - uses: actions/checkout@v4
13+ - uses: actions/setup-go@v5
14+ with:
15+ go-version-file: go.mod
16+ - name: Install X server test tools
17+ run: sudo apt-get update && sudo apt-get install -y xvfb xtrace
18+ - name: Check
19+ run: make check STATICCHECK='go run honnef.co/go/tools/cmd/staticcheck@2026.2.2'
20+ - name: X server tests
21+ run: make xserver
22+ gen-check:
23+ runs-on: ubuntu-latest
24+ steps:
25+ - uses: actions/checkout@v4
26+ - uses: actions/setup-go@v5
27+ with:
28+ go-version-file: go.mod
29+ - run: make gen-check
A .gitignore +1 -0
@@ -0,0 +1,1 @@
1+.worktrees/
@@ -0,0 +1,1 @@
1+.worktrees/
A AGENTS.md +17 -0
@@ -0,0 +1,17 @@
1+# Repository rules
2+
3+- Go 1.27; builds use CGO_ENABLED=0. Race tests alone use CGO_ENABLED=1.
4+- Dependencies: standard library and golang.org/x/sys only.
5+- Steady-state request/reply/event/error hot paths must allocate zero times;
6+ enforce with testing.AllocsPerRun tests and benchmarks. Setup and amortized
7+ buffer growth may allocate. Caller-owned buffers and borrowed views are preferred.
8+- Root never imports generated packages. Generated packages import root and,
9+ for extensions, xproto. Wire format is little-endian.
10+- Requests return Seq (0 invalid); sticky Buf errors stop encoding. Reply views
11+ live only through the callback. Event Raw is copied; Tail is borrowed.
12+- Generate bindings from the pinned manifest; do not hand-edit generated code.
13+- Run make check before committing. Use signed conventional commits:
14+ type(scope): description. Feature work belongs in .worktrees/; do not merge
15+ without review. Forge is ermite only; never add or push a GitHub remote.
16+- The binding spec is private; the above summarizes its key public contracts.
17+ Stop and ask before making an unspecified public-contract decision.
@@ -0,0 +1,17 @@
1+# Repository rules
2+
3+- Go 1.27; builds use CGO_ENABLED=0. Race tests alone use CGO_ENABLED=1.
4+- Dependencies: standard library and golang.org/x/sys only.
5+- Steady-state request/reply/event/error hot paths must allocate zero times;
6+ enforce with testing.AllocsPerRun tests and benchmarks. Setup and amortized
7+ buffer growth may allocate. Caller-owned buffers and borrowed views are preferred.
8+- Root never imports generated packages. Generated packages import root and,
9+ for extensions, xproto. Wire format is little-endian.
10+- Requests return Seq (0 invalid); sticky Buf errors stop encoding. Reply views
11+ live only through the callback. Event Raw is copied; Tail is borrowed.
12+- Generate bindings from the pinned manifest; do not hand-edit generated code.
13+- Run make check before committing. Use signed conventional commits:
14+ type(scope): description. Feature work belongs in .worktrees/; do not merge
15+ without review. Forge is ermite only; never add or push a GitHub remote.
16+- The binding spec is private; the above summarizes its key public contracts.
17+ Stop and ask before making an unspecified public-contract decision.
A LICENSE +21 -0
@@ -0,0 +1,21 @@
1+MIT License
2+
3+Copyright (c) 2026 bnema
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.⏎̸
@@ -0,0 +1,21 @@
1+MIT License
2+
3+Copyright (c) 2026 bnema
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 LICENSES/xcb-proto-COPYING +30 -0
@@ -0,0 +1,30 @@
1+Copyright (C) 2001-2006 Bart Massey, Jamey Sharp, and Josh Triplett.
2+All Rights Reserved.
3+
4+Permission is hereby granted, free of charge, to any person
5+obtaining a copy of this software and associated
6+documentation files (the "Software"), to deal in the
7+Software without restriction, including without limitation
8+the rights to use, copy, modify, merge, publish, distribute,
9+sublicense, and/or sell copies of the Software, and to
10+permit persons to whom the Software is furnished to do so,
11+subject to the following conditions:
12+
13+The above copyright notice and this permission notice shall
14+be included in all copies or substantial portions of the
15+Software.
16+
17+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
18+KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
19+WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
20+PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
21+BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
22+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
24+OTHER DEALINGS IN THE SOFTWARE.
25+
26+Except as contained in this notice, the names of the authors
27+or their institutions shall not be used in advertising or
28+otherwise to promote the sale, use or other dealings in this
29+Software without prior written authorization from the
30+authors.
@@ -0,0 +1,30 @@
1+Copyright (C) 2001-2006 Bart Massey, Jamey Sharp, and Josh Triplett.
2+All Rights Reserved.
3+
4+Permission is hereby granted, free of charge, to any person
5+obtaining a copy of this software and associated
6+documentation files (the "Software"), to deal in the
7+Software without restriction, including without limitation
8+the rights to use, copy, modify, merge, publish, distribute,
9+sublicense, and/or sell copies of the Software, and to
10+permit persons to whom the Software is furnished to do so,
11+subject to the following conditions:
12+
13+The above copyright notice and this permission notice shall
14+be included in all copies or substantial portions of the
15+Software.
16+
17+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
18+KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
19+WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
20+PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
21+BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
22+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
24+OTHER DEALINGS IN THE SOFTWARE.
25+
26+Except as contained in this notice, the names of the authors
27+or their institutions shall not be used in advertising or
28+otherwise to promote the sale, use or other dealings in this
29+Software without prior written authorization from the
30+authors.
A Makefile +27 -0
@@ -0,0 +1,27 @@
1+export CGO_ENABLED := 0
2+STATICCHECK ?= staticcheck
3+
4+.PHONY: gen gen-check test race alloc poison bench xserver staticcheck vet check
5+
6+gen:
7+ go generate ./...
8+gen-check: gen
9+ git diff --exit-code
10+
11+test:
12+ go test ./...
13+race:
14+ CGO_ENABLED=1 go test -race ./...
15+alloc:
16+ go test -run 'Alloc' ./...
17+poison:
18+ go test -tags xturbo_poison ./...
19+bench:
20+ go test -bench . -benchmem ./...
21+xserver:
22+ PATH="$$PATH:/usr/sbin" go test -tags xserver ./...
23+staticcheck:
24+ $(STATICCHECK) ./...
25+vet:
26+ go vet ./...
27+check: vet staticcheck test race alloc poison gen-check
@@ -0,0 +1,27 @@
1+export CGO_ENABLED := 0
2+STATICCHECK ?= staticcheck
3+
4+.PHONY: gen gen-check test race alloc poison bench xserver staticcheck vet check
5+
6+gen:
7+ go generate ./...
8+gen-check: gen
9+ git diff --exit-code
10+
11+test:
12+ go test ./...
13+race:
14+ CGO_ENABLED=1 go test -race ./...
15+alloc:
16+ go test -run 'Alloc' ./...
17+poison:
18+ go test -tags xturbo_poison ./...
19+bench:
20+ go test -bench . -benchmem ./...
21+xserver:
22+ PATH="$$PATH:/usr/sbin" go test -tags xserver ./...
23+staticcheck:
24+ $(STATICCHECK) ./...
25+vet:
26+ go vet ./...
27+check: vet staticcheck test race alloc poison gen-check
A cmd/xtgen/main.go +4 -0
@@ -0,0 +1,4 @@
1+// Command xtgen generates bindings from the pinned xcb-proto XML.
2+package main
3+
4+func main() {}
@@ -0,0 +1,4 @@
1+// Command xtgen generates bindings from the pinned xcb-proto XML.
2+package main
3+
4+func main() {}
A cmd/xtsync/main.go +126 -0
@@ -0,0 +1,126 @@
1+// Command xtsync vendors the pinned xcb-proto sources. An explicit -source
2+// directory supports offline refreshes; its provenance is retained in manifest.
3+package main
4+
5+import (
6+ "archive/tar"
7+ "bytes"
8+ "compress/gzip"
9+ "crypto/sha256"
10+ "encoding/hex"
11+ "encoding/json"
12+ "flag"
13+ "fmt"
14+ "io"
15+ "net/http"
16+ "os"
17+ "path/filepath"
18+ "time"
19+)
20+
21+const upstream = "https://gitlab.freedesktop.org/xorg/proto/xcbproto"
22+const tag = "xcb-proto-1.17.0"
23+
24+var files = []string{"xproto.xml", "bigreq.xml", "ge.xml", "xc_misc.xml", "composite.xml", "xfixes.xml", "res.xml", "render.xml", "shape.xml", "xcb.xsd", "COPYING"}
25+
26+type entry struct {
27+ Path string `json:"path"`
28+ SHA256 string `json:"sha256"`
29+}
30+type manifest struct {
31+ Upstream string `json:"upstream"`
32+ Tag string `json:"tag"`
33+ Source string `json:"source"`
34+ Files []entry `json:"files"`
35+}
36+
37+func main() {
38+ source := flag.String("source", "", "local source directory (COPYING must be included)")
39+ flag.Parse()
40+ if err := syncFiles(*source); err != nil {
41+ fmt.Fprintln(os.Stderr, err)
42+ os.Exit(1)
43+ }
44+}
45+func syncFiles(source string) error {
46+ data := make(map[string][]byte)
47+ provenance := source
48+ if source != "" {
49+ for _, name := range files {
50+ b, err := os.ReadFile(filepath.Join(source, name))
51+ if err != nil {
52+ return err
53+ }
54+ data[name] = b
55+ }
56+ } else {
57+ provenance = upstream + "/-/archive/" + tag + "/xcbproto-" + tag + ".tar.gz"
58+ client := http.Client{Timeout: 30 * time.Second}
59+ resp, err := client.Get(provenance)
60+ if err != nil {
61+ return err
62+ }
63+ defer resp.Body.Close()
64+ if resp.StatusCode != http.StatusOK {
65+ return fmt.Errorf("download: %s", resp.Status)
66+ }
67+ gz, err := gzip.NewReader(io.LimitReader(resp.Body, 16<<20))
68+ if err != nil {
69+ return err
70+ }
71+ defer gz.Close()
72+ tr := tar.NewReader(gz)
73+ for {
74+ h, err := tr.Next()
75+ if err == io.EOF {
76+ break
77+ }
78+ if err != nil {
79+ return err
80+ }
81+ for _, name := range files {
82+ if h.Name == "xcbproto-"+tag+"/src/"+name || name == "COPYING" && h.Name == "xcbproto-"+tag+"/COPYING" {
83+ b, err := io.ReadAll(io.LimitReader(tr, 4<<20))
84+ if err != nil {
85+ return err
86+ }
87+ data[name] = b
88+ }
89+ }
90+ }
91+ }
92+ m := manifest{Upstream: upstream, Tag: tag, Source: provenance}
93+ for _, name := range files {
94+ if len(data[name]) == 0 {
95+ return fmt.Errorf("missing source %s", name)
96+ }
97+ }
98+ for _, name := range files {
99+ dest := filepath.Join("spec", "xml", name)
100+ if name == "xcb.xsd" {
101+ dest = "spec/xcb.xsd"
102+ }
103+ if name == "COPYING" {
104+ dest = "LICENSES/xcb-proto-COPYING"
105+ }
106+ if err := os.MkdirAll(filepath.Dir(dest), 0755); err != nil {
107+ return err
108+ }
109+ if err := os.WriteFile(dest, data[name], 0644); err != nil {
110+ return err
111+ }
112+ sum := sha256.Sum256(data[name])
113+ m.Files = append(m.Files, entry{filepath.ToSlash(dest), hex.EncodeToString(sum[:])})
114+ }
115+ b, err := json.MarshalIndent(m, "", " ")
116+ if err != nil {
117+ return err
118+ }
119+ b = append(b, '\n')
120+ // Keep refresh deterministic, including when invoked repeatedly from CI.
121+ old, _ := os.ReadFile("spec/manifest.json")
122+ if bytes.Equal(old, b) {
123+ return nil
124+ }
125+ return os.WriteFile("spec/manifest.json", b, 0644)
126+}
@@ -0,0 +1,126 @@
1+// Command xtsync vendors the pinned xcb-proto sources. An explicit -source
2+// directory supports offline refreshes; its provenance is retained in manifest.
3+package main
4+
5+import (
6+ "archive/tar"
7+ "bytes"
8+ "compress/gzip"
9+ "crypto/sha256"
10+ "encoding/hex"
11+ "encoding/json"
12+ "flag"
13+ "fmt"
14+ "io"
15+ "net/http"
16+ "os"
17+ "path/filepath"
18+ "time"
19+)
20+
21+const upstream = "https://gitlab.freedesktop.org/xorg/proto/xcbproto"
22+const tag = "xcb-proto-1.17.0"
23+
24+var files = []string{"xproto.xml", "bigreq.xml", "ge.xml", "xc_misc.xml", "composite.xml", "xfixes.xml", "res.xml", "render.xml", "shape.xml", "xcb.xsd", "COPYING"}
25+
26+type entry struct {
27+ Path string `json:"path"`
28+ SHA256 string `json:"sha256"`
29+}
30+type manifest struct {
31+ Upstream string `json:"upstream"`
32+ Tag string `json:"tag"`
33+ Source string `json:"source"`
34+ Files []entry `json:"files"`
35+}
36+
37+func main() {
38+ source := flag.String("source", "", "local source directory (COPYING must be included)")
39+ flag.Parse()
40+ if err := syncFiles(*source); err != nil {
41+ fmt.Fprintln(os.Stderr, err)
42+ os.Exit(1)
43+ }
44+}
45+func syncFiles(source string) error {
46+ data := make(map[string][]byte)
47+ provenance := source
48+ if source != "" {
49+ for _, name := range files {
50+ b, err := os.ReadFile(filepath.Join(source, name))
51+ if err != nil {
52+ return err
53+ }
54+ data[name] = b
55+ }
56+ } else {
57+ provenance = upstream + "/-/archive/" + tag + "/xcbproto-" + tag + ".tar.gz"
58+ client := http.Client{Timeout: 30 * time.Second}
59+ resp, err := client.Get(provenance)
60+ if err != nil {
61+ return err
62+ }
63+ defer resp.Body.Close()
64+ if resp.StatusCode != http.StatusOK {
65+ return fmt.Errorf("download: %s", resp.Status)
66+ }
67+ gz, err := gzip.NewReader(io.LimitReader(resp.Body, 16<<20))
68+ if err != nil {
69+ return err
70+ }
71+ defer gz.Close()
72+ tr := tar.NewReader(gz)
73+ for {
74+ h, err := tr.Next()
75+ if err == io.EOF {
76+ break
77+ }
78+ if err != nil {
79+ return err
80+ }
81+ for _, name := range files {
82+ if h.Name == "xcbproto-"+tag+"/src/"+name || name == "COPYING" && h.Name == "xcbproto-"+tag+"/COPYING" {
83+ b, err := io.ReadAll(io.LimitReader(tr, 4<<20))
84+ if err != nil {
85+ return err
86+ }
87+ data[name] = b
88+ }
89+ }
90+ }
91+ }
92+ m := manifest{Upstream: upstream, Tag: tag, Source: provenance}
93+ for _, name := range files {
94+ if len(data[name]) == 0 {
95+ return fmt.Errorf("missing source %s", name)
96+ }
97+ }
98+ for _, name := range files {
99+ dest := filepath.Join("spec", "xml", name)
100+ if name == "xcb.xsd" {
101+ dest = "spec/xcb.xsd"
102+ }
103+ if name == "COPYING" {
104+ dest = "LICENSES/xcb-proto-COPYING"
105+ }
106+ if err := os.MkdirAll(filepath.Dir(dest), 0755); err != nil {
107+ return err
108+ }
109+ if err := os.WriteFile(dest, data[name], 0644); err != nil {
110+ return err
111+ }
112+ sum := sha256.Sum256(data[name])
113+ m.Files = append(m.Files, entry{filepath.ToSlash(dest), hex.EncodeToString(sum[:])})
114+ }
115+ b, err := json.MarshalIndent(m, "", " ")
116+ if err != nil {
117+ return err
118+ }
119+ b = append(b, '\n')
120+ // Keep refresh deterministic, including when invoked repeatedly from CI.
121+ old, _ := os.ReadFile("spec/manifest.json")
122+ if bytes.Equal(old, b) {
123+ return nil
124+ }
125+ return os.WriteFile("spec/manifest.json", b, 0644)
126+}
A go.mod +5 -0
@@ -0,0 +1,5 @@
1+module bnema.dev/xturbo
2+
3+go 1.27
4+
5+require golang.org/x/sys v0.49.0
@@ -0,0 +1,5 @@
1+module bnema.dev/xturbo
2+
3+go 1.27
4+
5+require golang.org/x/sys v0.49.0
A go.sum +2 -0 generated file: collapsed
A spec/manifest.json +51 -0
@@ -0,0 +1,51 @@
1+{
2+ "upstream": "https://gitlab.freedesktop.org/xorg/proto/xcbproto",
3+ "tag": "xcb-proto-1.17.0",
4+ "source": "https://gitlab.freedesktop.org/xorg/proto/xcbproto/-/archive/xcb-proto-1.17.0/xcbproto-xcb-proto-1.17.0.tar.gz",
5+ "files": [
6+ {
7+ "path": "spec/xml/xproto.xml",
8+ "sha256": "bb8c060a8ea009a5d08a57c0c6daa1d3dd7e9d743d46d055109505c344a1f4c9"
9+ },
10+ {
11+ "path": "spec/xml/bigreq.xml",
12+ "sha256": "1e7d984a443455a995a1c4eb3850bf03fb5e349183f6d1e183cb026ab53d5f94"
13+ },
14+ {
15+ "path": "spec/xml/ge.xml",
16+ "sha256": "ae0fe359d4213d3734143fec51b6956a1b0921b598f92d00be786c35e732a0a4"
17+ },
18+ {
19+ "path": "spec/xml/xc_misc.xml",
20+ "sha256": "44d3b2350637746985b0165e13fd1a010dc98df4e9fa64264d2d6dea697ce628"
21+ },
22+ {
23+ "path": "spec/xml/composite.xml",
24+ "sha256": "6938a33bf1fc255f711b5bee0f3980fcaa010d81a271eb5bb3ba7680ac10de18"
25+ },
26+ {
27+ "path": "spec/xml/xfixes.xml",
28+ "sha256": "8c375ffe83ef73b38cb7fed1f859c262374917202c2ef8046d828405f7d71835"
29+ },
30+ {
31+ "path": "spec/xml/res.xml",
32+ "sha256": "9c0f9432143a79e851fc1f43b562d9f29e5e78a750d74c2b0356f17bc43e7710"
33+ },
34+ {
35+ "path": "spec/xml/render.xml",
36+ "sha256": "4a4c261d1f4746430c6296378d59474d6fbfb2c9cd45e9f0d60faf459d265218"
37+ },
38+ {
39+ "path": "spec/xml/shape.xml",
40+ "sha256": "bb079d0051aed81c785b42d12377709b945ad79e33df8c6b537ed99a0e7a6191"
41+ },
42+ {
43+ "path": "spec/xcb.xsd",
44+ "sha256": "8332e309d0259213f924825a606b36c7ef86acd6260a6ba0319b1a902ce04275"
45+ },
46+ {
47+ "path": "LICENSES/xcb-proto-COPYING",
48+ "sha256": "c5ffbfeaa501071ceeb97b7de2c0d703fdaa35de01c0fb6cbac1c28453a3e9fd"
49+ }
50+ ]
51+}
@@ -0,0 +1,51 @@
1+{
2+ "upstream": "https://gitlab.freedesktop.org/xorg/proto/xcbproto",
3+ "tag": "xcb-proto-1.17.0",
4+ "source": "https://gitlab.freedesktop.org/xorg/proto/xcbproto/-/archive/xcb-proto-1.17.0/xcbproto-xcb-proto-1.17.0.tar.gz",
5+ "files": [
6+ {
7+ "path": "spec/xml/xproto.xml",
8+ "sha256": "bb8c060a8ea009a5d08a57c0c6daa1d3dd7e9d743d46d055109505c344a1f4c9"
9+ },
10+ {
11+ "path": "spec/xml/bigreq.xml",
12+ "sha256": "1e7d984a443455a995a1c4eb3850bf03fb5e349183f6d1e183cb026ab53d5f94"
13+ },
14+ {
15+ "path": "spec/xml/ge.xml",
16+ "sha256": "ae0fe359d4213d3734143fec51b6956a1b0921b598f92d00be786c35e732a0a4"
17+ },
18+ {
19+ "path": "spec/xml/xc_misc.xml",
20+ "sha256": "44d3b2350637746985b0165e13fd1a010dc98df4e9fa64264d2d6dea697ce628"
21+ },
22+ {
23+ "path": "spec/xml/composite.xml",
24+ "sha256": "6938a33bf1fc255f711b5bee0f3980fcaa010d81a271eb5bb3ba7680ac10de18"
25+ },
26+ {
27+ "path": "spec/xml/xfixes.xml",
28+ "sha256": "8c375ffe83ef73b38cb7fed1f859c262374917202c2ef8046d828405f7d71835"
29+ },
30+ {
31+ "path": "spec/xml/res.xml",
32+ "sha256": "9c0f9432143a79e851fc1f43b562d9f29e5e78a750d74c2b0356f17bc43e7710"
33+ },
34+ {
35+ "path": "spec/xml/render.xml",
36+ "sha256": "4a4c261d1f4746430c6296378d59474d6fbfb2c9cd45e9f0d60faf459d265218"
37+ },
38+ {
39+ "path": "spec/xml/shape.xml",
40+ "sha256": "bb079d0051aed81c785b42d12377709b945ad79e33df8c6b537ed99a0e7a6191"
41+ },
42+ {
43+ "path": "spec/xcb.xsd",
44+ "sha256": "8332e309d0259213f924825a606b36c7ef86acd6260a6ba0319b1a902ce04275"
45+ },
46+ {
47+ "path": "LICENSES/xcb-proto-COPYING",
48+ "sha256": "c5ffbfeaa501071ceeb97b7de2c0d703fdaa35de01c0fb6cbac1c28453a3e9fd"
49+ }
50+ ]
51+}
A spec/xcb.xsd +424 -0
@@ -0,0 +1,424 @@
1+<?xml version="1.0" encoding="utf-8"?>
2+<!--
3+Copyright (C) 2004 Josh Triplett. All Rights Reserved.
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 BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
19+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21+
22+Except as contained in this notice, the names of the authors or their
23+institutions shall not be used in advertising or otherwise to promote the
24+sale, use or other dealings in this Software without prior written
25+authorization from the authors.
26+-->
27+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
28+
29+ <!-- The root element -->
30+ <xsd:element name="xcb">
31+ <xsd:complexType>
32+ <xsd:group ref="macro" minOccurs="0" maxOccurs="unbounded" />
33+ <xsd:attribute name="header" type="xsd:string" use="required" />
34+ <xsd:attribute name="extension-xname" type="xsd:string" use="optional" />
35+ <xsd:attribute name="extension-name" type="xsd:string" use="optional" />
36+ <xsd:attribute name="extension-multiword" type="xsd:boolean" use="optional" default="false" />
37+ <xsd:attribute name="major-version" type="xsd:integer" use="optional" />
38+ <xsd:attribute name="minor-version" type="xsd:integer" use="optional" />
39+ </xsd:complexType>
40+ </xsd:element>
41+
42+ <!-- Padding -->
43+ <xsd:element name="pad">
44+ <xsd:complexType>
45+ <xsd:attribute name="bytes" type="xsd:integer" use="optional" />
46+ <xsd:attribute name="align" type="xsd:integer" use="optional" />
47+ <xsd:attribute name="serialize" type="xsd:boolean" use="optional" />
48+ </xsd:complexType>
49+ </xsd:element>
50+
51+ <!-- Alignment -->
52+ <xsd:element name="required_start_align" >
53+ <xsd:complexType>
54+ <xsd:attribute name="align" type="xsd:integer" use="required" />
55+ <xsd:attribute name="offset" type="xsd:integer" use="optional" />
56+ </xsd:complexType>
57+ </xsd:element>
58+
59+ <!-- Type for fields or parameters with attributes "name" and "type" -->
60+ <xsd:complexType name="var">
61+ <xsd:attribute name="name" type="xsd:string" use="required" />
62+ <xsd:attribute name="type" type="xsd:string" use="required" />
63+ <xsd:attribute name="enum" type="xsd:string" use="optional" />
64+ <xsd:attribute name="altenum" type="xsd:string" use="optional" />
65+ <xsd:attribute name="mask" type="xsd:string" use="optional" />
66+ <xsd:attribute name="altmask" type="xsd:string" use="optional" />
67+ </xsd:complexType>
68+
69+ <!-- case expression -->
70+ <xsd:complexType name="caseexpr">
71+ <xsd:sequence>
72+ <!-- case expression: -->
73+ <xsd:group ref="expression" minOccurs="1" maxOccurs="unbounded" />
74+ <!-- match -->
75+ <xsd:group ref="fields" minOccurs="1" maxOccurs="unbounded" />
76+ <xsd:choice>
77+ <xsd:element ref="switch" minOccurs="0" maxOccurs="unbounded" />
78+ </xsd:choice>
79+ </xsd:sequence>
80+ <xsd:attribute name="name" type="xsd:string" use="optional" />
81+ </xsd:complexType>
82+
83+ <!-- switch expression -->
84+ <xsd:complexType name="switchexpr">
85+ <xsd:sequence>
86+ <!-- switch(expression) -->
87+ <xsd:group ref="expression" minOccurs="1" maxOccurs="1" />
88+ <xsd:element ref="required_start_align" minOccurs="0" maxOccurs="1" />
89+ <xsd:choice>
90+ <!-- bitcase expression - bit test -->
91+ <xsd:element name="bitcase" type="caseexpr" minOccurs="0" maxOccurs="unbounded" />
92+ <!-- case expression - value test -->
93+ <xsd:element name="case" type="caseexpr" minOccurs="0" maxOccurs="unbounded" />
94+ </xsd:choice>
95+ </xsd:sequence>
96+ <xsd:attribute name="name" type="xsd:string" use="required" />
97+ </xsd:complexType>
98+
99+ <xsd:element name="switch" type="switchexpr" />
100+
101+ <!-- field replaces FIELD, PARAM, and REPLY. -->
102+ <xsd:element name="field" type="var" />
103+
104+ <!-- Length of data structures -->
105+ <xsd:element name="length">
106+ <xsd:complexType>
107+ <xsd:group ref="expression" />
108+ </xsd:complexType>
109+ </xsd:element>
110+
111+ <!-- fd passing parameter -->
112+ <xsd:element name="fd">
113+ <xsd:complexType>
114+ <xsd:attribute name="name" type="xsd:string" use="required" />
115+ </xsd:complexType>
116+ </xsd:element>
117+
118+ <!-- list replaces ARRAYFIELD, LISTPARAM, and ARRAYREPLY. The name and type
119+ are specified as attributes. The content is an expression giving the
120+ length. -->
121+ <xsd:element name="list">
122+ <xsd:complexType>
123+ <xsd:complexContent>
124+ <xsd:extension base="var">
125+ <xsd:group ref="expression" minOccurs="0" maxOccurs="1" />
126+ </xsd:extension>
127+ </xsd:complexContent>
128+ </xsd:complexType>
129+ </xsd:element>
130+
131+ <!-- Expressions -->
132+ <xsd:group name="expression">
133+ <xsd:choice>
134+ <xsd:element name="op">
135+ <xsd:complexType>
136+ <xsd:sequence>
137+ <xsd:group ref="expression" />
138+ <xsd:group ref="expression" />
139+ </xsd:sequence>
140+ <xsd:attribute name="op" use="required">
141+ <xsd:simpleType>
142+ <xsd:restriction base="xsd:string">
143+ <xsd:pattern value="\+|-|\*|/|&amp;|&lt;&lt;" />
144+ </xsd:restriction>
145+ </xsd:simpleType>
146+ </xsd:attribute>
147+ </xsd:complexType>
148+ </xsd:element>
149+ <xsd:element name="unop">
150+ <xsd:complexType>
151+ <xsd:sequence>
152+ <xsd:group ref="expression" />
153+ </xsd:sequence>
154+ <xsd:attribute name="op" use="required">
155+ <xsd:simpleType>
156+ <xsd:restriction base="xsd:string">
157+ <xsd:pattern value="~" />
158+ </xsd:restriction>
159+ </xsd:simpleType>
160+ </xsd:attribute>
161+ </xsd:complexType>
162+ </xsd:element>
163+ <xsd:element name="fieldref" type="xsd:string" />
164+ <xsd:element name="paramref">
165+ <xsd:complexType>
166+ <xsd:simpleContent>
167+ <xsd:extension base="xsd:string">
168+ <xsd:attribute name="type" use="required" type="xsd:string" />
169+ </xsd:extension>
170+ </xsd:simpleContent>
171+ </xsd:complexType>
172+ </xsd:element>
173+ <xsd:element name="enumref">
174+ <xsd:complexType>
175+ <xsd:simpleContent>
176+ <xsd:extension base="xsd:string">
177+ <xsd:attribute name="ref" use="required" type="xsd:string" />
178+ </xsd:extension>
179+ </xsd:simpleContent>
180+ </xsd:complexType>
181+ </xsd:element>
182+ <xsd:element name="popcount">
183+ <xsd:complexType>
184+ <xsd:group ref="expression" />
185+ </xsd:complexType>
186+ </xsd:element>
187+ <xsd:element name="sumof">
188+ <xsd:complexType>
189+ <xsd:sequence>
190+ <xsd:group ref="expression" minOccurs="0" maxOccurs="1"/>
191+ </xsd:sequence>
192+ <xsd:attribute name="ref" use="required" type="xsd:string" />
193+ </xsd:complexType>
194+ </xsd:element>
195+ <xsd:element name="listelement-ref" />
196+ <xsd:element name="value" type="xsd:integer" />
197+ <xsd:element name="bit" type="bitType" />
198+ </xsd:choice>
199+ </xsd:group>
200+
201+ <!-- Fields in requests that are calculated from other information, not
202+ supplied by the caller. -->
203+ <xsd:element name="exprfield" >
204+ <xsd:complexType>
205+ <xsd:complexContent>
206+ <xsd:extension base="var">
207+ <xsd:group ref="expression" />
208+ </xsd:extension>
209+ </xsd:complexContent>
210+ </xsd:complexType>
211+ </xsd:element>
212+
213+ <xsd:group name="fields">
214+ <xsd:choice>
215+ <xsd:element ref="pad" />
216+ <xsd:element ref="field" />
217+ <xsd:element ref="list" />
218+ <xsd:element ref="fd" />
219+ <xsd:element ref="required_start_align" />
220+ <xsd:element ref="length" />
221+ </xsd:choice>
222+ </xsd:group>
223+
224+ <!-- Type for a structure -->
225+ <xsd:complexType name="struct">
226+ <xsd:sequence>
227+ <xsd:group ref="fields" minOccurs="1" maxOccurs="unbounded" />
228+ <xsd:choice minOccurs="0" maxOccurs="1">
229+ <xsd:element ref="switch" />
230+ </xsd:choice>
231+ </xsd:sequence>
232+ <xsd:attribute name="name" type="xsd:string" use="required" />
233+ </xsd:complexType>
234+
235+ <!-- Type for a packet structure -->
236+ <xsd:complexType name="packet-struct">
237+ <xsd:sequence>
238+ <xsd:group ref="fields" minOccurs="0" maxOccurs="unbounded" />
239+ </xsd:sequence>
240+ <xsd:attribute name="name" type="xsd:string" use="required" />
241+ <xsd:attribute name="number" type="xsd:integer" use="required" />
242+ </xsd:complexType>
243+
244+ <!-- Type for a packet structure copy -->
245+ <xsd:complexType name="packet-struct-copy">
246+ <xsd:attribute name="name" type="xsd:string" use="required" />
247+ <xsd:attribute name="number" type="xsd:integer" use="required" />
248+ <xsd:attribute name="ref" type="xsd:string" use="required" />
249+ </xsd:complexType>
250+
251+ <!-- Type for a structure that is an event
252+ which can be of an event type from a set of event types -->
253+ <xsd:complexType name="eventstruct">
254+ <xsd:sequence>
255+ <xsd:element name="allowed">
256+ <xsd:complexType>
257+ <xsd:attribute name="extension" type="xsd:string" use="required" />
258+ <xsd:attribute name="xge" type="xsd:boolean" use="required" />
259+ <xsd:attribute name="opcode-min" type="xsd:integer" use="required" />
260+ <xsd:attribute name="opcode-max" type="xsd:integer" use="required" />
261+ </xsd:complexType>
262+ </xsd:element>
263+ </xsd:sequence>
264+ <xsd:attribute name="name" type="xsd:string" use="required" />
265+ </xsd:complexType>
266+
267+ <!-- Type for bit values -->
268+ <xsd:simpleType name="bitType">
269+ <xsd:restriction base="xsd:integer">
270+ <xsd:minInclusive value="0" />
271+ <xsd:maxExclusive value="32" />
272+ </xsd:restriction>
273+ </xsd:simpleType>
274+
275+ <!-- Type for documentation -->
276+ <xsd:group name="doc-fields">
277+ <xsd:sequence>
278+ <xsd:element name="field">
279+ <xsd:complexType>
280+ <xsd:simpleContent>
281+ <xsd:extension base="xsd:string">
282+ <xsd:attribute name="name" type="xsd:string" />
283+ </xsd:extension>
284+ </xsd:simpleContent>
285+ </xsd:complexType>
286+ </xsd:element>
287+ </xsd:sequence>
288+ </xsd:group>
289+
290+ <xsd:group name="error-fields">
291+ <xsd:sequence>
292+ <xsd:element name="error">
293+ <xsd:complexType>
294+ <xsd:simpleContent>
295+ <xsd:extension base="xsd:string">
296+ <xsd:attribute name="type" type="xsd:string" />
297+ </xsd:extension>
298+ </xsd:simpleContent>
299+ </xsd:complexType>
300+ </xsd:element>
301+ </xsd:sequence>
302+ </xsd:group>
303+
304+ <xsd:group name="see-fields">
305+ <xsd:sequence>
306+ <xsd:element name="see">
307+ <xsd:complexType>
308+ <xsd:attribute name="name" type="xsd:string" />
309+ <xsd:attribute name="type" type="xsd:string" />
310+ </xsd:complexType>
311+ </xsd:element>
312+ </xsd:sequence>
313+ </xsd:group>
314+
315+ <xsd:element name="doc">
316+ <xsd:complexType mixed="true">
317+ <xsd:sequence>
318+ <xsd:element name="brief" type="xsd:string" minOccurs="0" maxOccurs="1" />
319+ <xsd:element name="description" type="xsd:string" minOccurs="0" maxOccurs="1" />
320+ <xsd:element name="example" type="xsd:string" minOccurs="0" maxOccurs="1" />
321+ <xsd:group ref="doc-fields" minOccurs="0" maxOccurs="unbounded" />
322+ <xsd:group ref="error-fields" minOccurs="0" maxOccurs="unbounded" />
323+ <xsd:group ref="see-fields" minOccurs="0" maxOccurs="unbounded" />
324+ </xsd:sequence>
325+ </xsd:complexType>
326+ </xsd:element>
327+
328+ <xsd:group name="macro">
329+ <xsd:choice>
330+ <xsd:element name="request">
331+ <xsd:complexType>
332+ <xsd:sequence>
333+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
334+ <xsd:group ref="fields" />
335+ <xsd:element ref="exprfield" />
336+ </xsd:choice>
337+ <xsd:choice minOccurs="0" maxOccurs="1">
338+ <xsd:element ref="switch" />
339+ </xsd:choice>
340+ <xsd:element name="reply" minOccurs="0" maxOccurs="1">
341+ <xsd:complexType>
342+ <xsd:sequence>
343+ <xsd:choice minOccurs="1" maxOccurs="unbounded">
344+ <xsd:group ref="fields" />
345+ </xsd:choice>
346+ <xsd:choice minOccurs="0" maxOccurs="1">
347+ <xsd:element ref="switch" />
348+ </xsd:choice>
349+ <xsd:element ref="doc" minOccurs="0" maxOccurs="1" />
350+ </xsd:sequence>
351+ </xsd:complexType>
352+ </xsd:element>
353+ <xsd:element ref="doc" minOccurs="0" maxOccurs="1" />
354+ </xsd:sequence>
355+ <xsd:attribute name="name" type="xsd:string" use="required" />
356+ <xsd:attribute name="opcode" type="xsd:integer" use="required" />
357+ <xsd:attribute name="combine-adjacent" type="xsd:boolean"
358+ use="optional" default="false" />
359+ </xsd:complexType>
360+ </xsd:element>
361+ <xsd:element name="event">
362+ <xsd:complexType>
363+ <xsd:complexContent>
364+ <xsd:extension base="packet-struct">
365+ <xsd:sequence>
366+ <xsd:element ref="doc" minOccurs="0" maxOccurs="1" />
367+ </xsd:sequence>
368+ <xsd:attribute name="no-sequence-number" type="xsd:boolean"
369+ use="optional" default="false" />
370+ <xsd:attribute name="xge" type="xsd:boolean"
371+ use="optional" default="false" />
372+ </xsd:extension>
373+ </xsd:complexContent>
374+ </xsd:complexType>
375+ </xsd:element>
376+ <xsd:element name="eventcopy" type="packet-struct-copy" />
377+ <xsd:element name="error" type="packet-struct" />
378+ <xsd:element name="errorcopy" type="packet-struct-copy" />
379+ <xsd:element name="struct" type="struct" />
380+ <xsd:element name="union" type="struct" />
381+ <xsd:element name="eventstruct" type="eventstruct" />
382+ <xsd:element name="xidtype">
383+ <xsd:complexType>
384+ <xsd:attribute name="name" type="xsd:string" use="required" />
385+ </xsd:complexType>
386+ </xsd:element>
387+ <xsd:element name="xidunion">
388+ <xsd:complexType>
389+ <xsd:sequence>
390+ <xsd:element name="type" type="xsd:string"
391+ minOccurs="1" maxOccurs="unbounded" />
392+ </xsd:sequence>
393+ <xsd:attribute name="name" type="xsd:string" use="required" />
394+ </xsd:complexType>
395+ </xsd:element>
396+ <xsd:element name="enum">
397+ <xsd:complexType>
398+ <xsd:sequence minOccurs="1" maxOccurs="unbounded">
399+ <xsd:element name="item">
400+ <xsd:complexType>
401+ <xsd:choice minOccurs="1" maxOccurs="1">
402+ <xsd:element name="value" type="xsd:unsignedInt" />
403+ <xsd:element name="bit" type="bitType" />
404+ </xsd:choice>
405+ <xsd:attribute name="name" type="xsd:string" use="required" />
406+ </xsd:complexType>
407+ </xsd:element>
408+ <xsd:element ref="doc" minOccurs="0" maxOccurs="1" />
409+ </xsd:sequence>
410+ <xsd:attribute name="name" type="xsd:string" use="required" />
411+ </xsd:complexType>
412+ </xsd:element>
413+ <xsd:element name="typedef">
414+ <xsd:complexType>
415+ <xsd:attribute name="oldname" type="xsd:string" use="required" />
416+ <xsd:attribute name="newname" type="xsd:string" use="required" />
417+ </xsd:complexType>
418+ </xsd:element>
419+ <!-- The import element allows a protocol description to reference the
420+ declarations of another protocol description. -->
421+ <xsd:element name="import" type="xsd:string" />
422+ </xsd:choice>
423+ </xsd:group>
424+</xsd:schema>
@@ -0,0 +1,424 @@
1+<?xml version="1.0" encoding="utf-8"?>
2+<!--
3+Copyright (C) 2004 Josh Triplett. All Rights Reserved.
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 BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
19+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21+
22+Except as contained in this notice, the names of the authors or their
23+institutions shall not be used in advertising or otherwise to promote the
24+sale, use or other dealings in this Software without prior written
25+authorization from the authors.
26+-->
27+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
28+
29+ <!-- The root element -->
30+ <xsd:element name="xcb">
31+ <xsd:complexType>
32+ <xsd:group ref="macro" minOccurs="0" maxOccurs="unbounded" />
33+ <xsd:attribute name="header" type="xsd:string" use="required" />
34+ <xsd:attribute name="extension-xname" type="xsd:string" use="optional" />
35+ <xsd:attribute name="extension-name" type="xsd:string" use="optional" />
36+ <xsd:attribute name="extension-multiword" type="xsd:boolean" use="optional" default="false" />
37+ <xsd:attribute name="major-version" type="xsd:integer" use="optional" />
38+ <xsd:attribute name="minor-version" type="xsd:integer" use="optional" />
39+ </xsd:complexType>
40+ </xsd:element>
41+
42+ <!-- Padding -->
43+ <xsd:element name="pad">
44+ <xsd:complexType>
45+ <xsd:attribute name="bytes" type="xsd:integer" use="optional" />
46+ <xsd:attribute name="align" type="xsd:integer" use="optional" />
47+ <xsd:attribute name="serialize" type="xsd:boolean" use="optional" />
48+ </xsd:complexType>
49+ </xsd:element>
50+
51+ <!-- Alignment -->
52+ <xsd:element name="required_start_align" >
53+ <xsd:complexType>
54+ <xsd:attribute name="align" type="xsd:integer" use="required" />
55+ <xsd:attribute name="offset" type="xsd:integer" use="optional" />
56+ </xsd:complexType>
57+ </xsd:element>
58+
59+ <!-- Type for fields or parameters with attributes "name" and "type" -->
60+ <xsd:complexType name="var">
61+ <xsd:attribute name="name" type="xsd:string" use="required" />
62+ <xsd:attribute name="type" type="xsd:string" use="required" />
63+ <xsd:attribute name="enum" type="xsd:string" use="optional" />
64+ <xsd:attribute name="altenum" type="xsd:string" use="optional" />
65+ <xsd:attribute name="mask" type="xsd:string" use="optional" />
66+ <xsd:attribute name="altmask" type="xsd:string" use="optional" />
67+ </xsd:complexType>
68+
69+ <!-- case expression -->
70+ <xsd:complexType name="caseexpr">
71+ <xsd:sequence>
72+ <!-- case expression: -->
73+ <xsd:group ref="expression" minOccurs="1" maxOccurs="unbounded" />
74+ <!-- match -->
75+ <xsd:group ref="fields" minOccurs="1" maxOccurs="unbounded" />
76+ <xsd:choice>
77+ <xsd:element ref="switch" minOccurs="0" maxOccurs="unbounded" />
78+ </xsd:choice>
79+ </xsd:sequence>
80+ <xsd:attribute name="name" type="xsd:string" use="optional" />
81+ </xsd:complexType>
82+
83+ <!-- switch expression -->
84+ <xsd:complexType name="switchexpr">
85+ <xsd:sequence>
86+ <!-- switch(expression) -->
87+ <xsd:group ref="expression" minOccurs="1" maxOccurs="1" />
88+ <xsd:element ref="required_start_align" minOccurs="0" maxOccurs="1" />
89+ <xsd:choice>
90+ <!-- bitcase expression - bit test -->
91+ <xsd:element name="bitcase" type="caseexpr" minOccurs="0" maxOccurs="unbounded" />
92+ <!-- case expression - value test -->
93+ <xsd:element name="case" type="caseexpr" minOccurs="0" maxOccurs="unbounded" />
94+ </xsd:choice>
95+ </xsd:sequence>
96+ <xsd:attribute name="name" type="xsd:string" use="required" />
97+ </xsd:complexType>
98+
99+ <xsd:element name="switch" type="switchexpr" />
100+
101+ <!-- field replaces FIELD, PARAM, and REPLY. -->
102+ <xsd:element name="field" type="var" />
103+
104+ <!-- Length of data structures -->
105+ <xsd:element name="length">
106+ <xsd:complexType>
107+ <xsd:group ref="expression" />
108+ </xsd:complexType>
109+ </xsd:element>
110+
111+ <!-- fd passing parameter -->
112+ <xsd:element name="fd">
113+ <xsd:complexType>
114+ <xsd:attribute name="name" type="xsd:string" use="required" />
115+ </xsd:complexType>
116+ </xsd:element>
117+
118+ <!-- list replaces ARRAYFIELD, LISTPARAM, and ARRAYREPLY. The name and type
119+ are specified as attributes. The content is an expression giving the
120+ length. -->
121+ <xsd:element name="list">
122+ <xsd:complexType>
123+ <xsd:complexContent>
124+ <xsd:extension base="var">
125+ <xsd:group ref="expression" minOccurs="0" maxOccurs="1" />
126+ </xsd:extension>
127+ </xsd:complexContent>
128+ </xsd:complexType>
129+ </xsd:element>
130+
131+ <!-- Expressions -->
132+ <xsd:group name="expression">
133+ <xsd:choice>
134+ <xsd:element name="op">
135+ <xsd:complexType>
136+ <xsd:sequence>
137+ <xsd:group ref="expression" />
138+ <xsd:group ref="expression" />
139+ </xsd:sequence>
140+ <xsd:attribute name="op" use="required">
141+ <xsd:simpleType>
142+ <xsd:restriction base="xsd:string">
143+ <xsd:pattern value="\+|-|\*|/|&amp;|&lt;&lt;" />
144+ </xsd:restriction>
145+ </xsd:simpleType>
146+ </xsd:attribute>
147+ </xsd:complexType>
148+ </xsd:element>
149+ <xsd:element name="unop">
150+ <xsd:complexType>
151+ <xsd:sequence>
152+ <xsd:group ref="expression" />
153+ </xsd:sequence>
154+ <xsd:attribute name="op" use="required">
155+ <xsd:simpleType>
156+ <xsd:restriction base="xsd:string">
157+ <xsd:pattern value="~" />
158+ </xsd:restriction>
159+ </xsd:simpleType>
160+ </xsd:attribute>
161+ </xsd:complexType>
162+ </xsd:element>
163+ <xsd:element name="fieldref" type="xsd:string" />
164+ <xsd:element name="paramref">
165+ <xsd:complexType>
166+ <xsd:simpleContent>
167+ <xsd:extension base="xsd:string">
168+ <xsd:attribute name="type" use="required" type="xsd:string" />
169+ </xsd:extension>
170+ </xsd:simpleContent>
171+ </xsd:complexType>
172+ </xsd:element>
173+ <xsd:element name="enumref">
174+ <xsd:complexType>
175+ <xsd:simpleContent>
176+ <xsd:extension base="xsd:string">
177+ <xsd:attribute name="ref" use="required" type="xsd:string" />
178+ </xsd:extension>
179+ </xsd:simpleContent>
180+ </xsd:complexType>
181+ </xsd:element>
182+ <xsd:element name="popcount">
183+ <xsd:complexType>
184+ <xsd:group ref="expression" />
185+ </xsd:complexType>
186+ </xsd:element>
187+ <xsd:element name="sumof">
188+ <xsd:complexType>
189+ <xsd:sequence>
190+ <xsd:group ref="expression" minOccurs="0" maxOccurs="1"/>
191+ </xsd:sequence>
192+ <xsd:attribute name="ref" use="required" type="xsd:string" />
193+ </xsd:complexType>
194+ </xsd:element>
195+ <xsd:element name="listelement-ref" />
196+ <xsd:element name="value" type="xsd:integer" />
197+ <xsd:element name="bit" type="bitType" />
198+ </xsd:choice>
199+ </xsd:group>
200+
201+ <!-- Fields in requests that are calculated from other information, not
202+ supplied by the caller. -->
203+ <xsd:element name="exprfield" >
204+ <xsd:complexType>
205+ <xsd:complexContent>
206+ <xsd:extension base="var">
207+ <xsd:group ref="expression" />
208+ </xsd:extension>
209+ </xsd:complexContent>
210+ </xsd:complexType>
211+ </xsd:element>
212+
213+ <xsd:group name="fields">
214+ <xsd:choice>
215+ <xsd:element ref="pad" />
216+ <xsd:element ref="field" />
217+ <xsd:element ref="list" />
218+ <xsd:element ref="fd" />
219+ <xsd:element ref="required_start_align" />
220+ <xsd:element ref="length" />
221+ </xsd:choice>
222+ </xsd:group>
223+
224+ <!-- Type for a structure -->
225+ <xsd:complexType name="struct">
226+ <xsd:sequence>
227+ <xsd:group ref="fields" minOccurs="1" maxOccurs="unbounded" />
228+ <xsd:choice minOccurs="0" maxOccurs="1">
229+ <xsd:element ref="switch" />
230+ </xsd:choice>
231+ </xsd:sequence>
232+ <xsd:attribute name="name" type="xsd:string" use="required" />
233+ </xsd:complexType>
234+
235+ <!-- Type for a packet structure -->
236+ <xsd:complexType name="packet-struct">
237+ <xsd:sequence>
238+ <xsd:group ref="fields" minOccurs="0" maxOccurs="unbounded" />
239+ </xsd:sequence>
240+ <xsd:attribute name="name" type="xsd:string" use="required" />
241+ <xsd:attribute name="number" type="xsd:integer" use="required" />
242+ </xsd:complexType>
243+
244+ <!-- Type for a packet structure copy -->
245+ <xsd:complexType name="packet-struct-copy">
246+ <xsd:attribute name="name" type="xsd:string" use="required" />
247+ <xsd:attribute name="number" type="xsd:integer" use="required" />
248+ <xsd:attribute name="ref" type="xsd:string" use="required" />
249+ </xsd:complexType>
250+
251+ <!-- Type for a structure that is an event
252+ which can be of an event type from a set of event types -->
253+ <xsd:complexType name="eventstruct">
254+ <xsd:sequence>
255+ <xsd:element name="allowed">
256+ <xsd:complexType>
257+ <xsd:attribute name="extension" type="xsd:string" use="required" />
258+ <xsd:attribute name="xge" type="xsd:boolean" use="required" />
259+ <xsd:attribute name="opcode-min" type="xsd:integer" use="required" />
260+ <xsd:attribute name="opcode-max" type="xsd:integer" use="required" />
261+ </xsd:complexType>
262+ </xsd:element>
263+ </xsd:sequence>
264+ <xsd:attribute name="name" type="xsd:string" use="required" />
265+ </xsd:complexType>
266+
267+ <!-- Type for bit values -->
268+ <xsd:simpleType name="bitType">
269+ <xsd:restriction base="xsd:integer">
270+ <xsd:minInclusive value="0" />
271+ <xsd:maxExclusive value="32" />
272+ </xsd:restriction>
273+ </xsd:simpleType>
274+
275+ <!-- Type for documentation -->
276+ <xsd:group name="doc-fields">
277+ <xsd:sequence>
278+ <xsd:element name="field">
279+ <xsd:complexType>
280+ <xsd:simpleContent>
281+ <xsd:extension base="xsd:string">
282+ <xsd:attribute name="name" type="xsd:string" />
283+ </xsd:extension>
284+ </xsd:simpleContent>
285+ </xsd:complexType>
286+ </xsd:element>
287+ </xsd:sequence>
288+ </xsd:group>
289+
290+ <xsd:group name="error-fields">
291+ <xsd:sequence>
292+ <xsd:element name="error">
293+ <xsd:complexType>
294+ <xsd:simpleContent>
295+ <xsd:extension base="xsd:string">
296+ <xsd:attribute name="type" type="xsd:string" />
297+ </xsd:extension>
298+ </xsd:simpleContent>
299+ </xsd:complexType>
300+ </xsd:element>
301+ </xsd:sequence>
302+ </xsd:group>
303+
304+ <xsd:group name="see-fields">
305+ <xsd:sequence>
306+ <xsd:element name="see">
307+ <xsd:complexType>
308+ <xsd:attribute name="name" type="xsd:string" />
309+ <xsd:attribute name="type" type="xsd:string" />
310+ </xsd:complexType>
311+ </xsd:element>
312+ </xsd:sequence>
313+ </xsd:group>
314+
315+ <xsd:element name="doc">
316+ <xsd:complexType mixed="true">
317+ <xsd:sequence>
318+ <xsd:element name="brief" type="xsd:string" minOccurs="0" maxOccurs="1" />
319+ <xsd:element name="description" type="xsd:string" minOccurs="0" maxOccurs="1" />
320+ <xsd:element name="example" type="xsd:string" minOccurs="0" maxOccurs="1" />
321+ <xsd:group ref="doc-fields" minOccurs="0" maxOccurs="unbounded" />
322+ <xsd:group ref="error-fields" minOccurs="0" maxOccurs="unbounded" />
323+ <xsd:group ref="see-fields" minOccurs="0" maxOccurs="unbounded" />
324+ </xsd:sequence>
325+ </xsd:complexType>
326+ </xsd:element>
327+
328+ <xsd:group name="macro">
329+ <xsd:choice>
330+ <xsd:element name="request">
331+ <xsd:complexType>
332+ <xsd:sequence>
333+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
334+ <xsd:group ref="fields" />
335+ <xsd:element ref="exprfield" />
336+ </xsd:choice>
337+ <xsd:choice minOccurs="0" maxOccurs="1">
338+ <xsd:element ref="switch" />
339+ </xsd:choice>
340+ <xsd:element name="reply" minOccurs="0" maxOccurs="1">
341+ <xsd:complexType>
342+ <xsd:sequence>
343+ <xsd:choice minOccurs="1" maxOccurs="unbounded">
344+ <xsd:group ref="fields" />
345+ </xsd:choice>
346+ <xsd:choice minOccurs="0" maxOccurs="1">
347+ <xsd:element ref="switch" />
348+ </xsd:choice>
349+ <xsd:element ref="doc" minOccurs="0" maxOccurs="1" />
350+ </xsd:sequence>
351+ </xsd:complexType>
352+ </xsd:element>
353+ <xsd:element ref="doc" minOccurs="0" maxOccurs="1" />
354+ </xsd:sequence>
355+ <xsd:attribute name="name" type="xsd:string" use="required" />
356+ <xsd:attribute name="opcode" type="xsd:integer" use="required" />
357+ <xsd:attribute name="combine-adjacent" type="xsd:boolean"
358+ use="optional" default="false" />
359+ </xsd:complexType>
360+ </xsd:element>
361+ <xsd:element name="event">
362+ <xsd:complexType>
363+ <xsd:complexContent>
364+ <xsd:extension base="packet-struct">
365+ <xsd:sequence>
366+ <xsd:element ref="doc" minOccurs="0" maxOccurs="1" />
367+ </xsd:sequence>
368+ <xsd:attribute name="no-sequence-number" type="xsd:boolean"
369+ use="optional" default="false" />
370+ <xsd:attribute name="xge" type="xsd:boolean"
371+ use="optional" default="false" />
372+ </xsd:extension>
373+ </xsd:complexContent>
374+ </xsd:complexType>
375+ </xsd:element>
376+ <xsd:element name="eventcopy" type="packet-struct-copy" />
377+ <xsd:element name="error" type="packet-struct" />
378+ <xsd:element name="errorcopy" type="packet-struct-copy" />
379+ <xsd:element name="struct" type="struct" />
380+ <xsd:element name="union" type="struct" />
381+ <xsd:element name="eventstruct" type="eventstruct" />
382+ <xsd:element name="xidtype">
383+ <xsd:complexType>
384+ <xsd:attribute name="name" type="xsd:string" use="required" />
385+ </xsd:complexType>
386+ </xsd:element>
387+ <xsd:element name="xidunion">
388+ <xsd:complexType>
389+ <xsd:sequence>
390+ <xsd:element name="type" type="xsd:string"
391+ minOccurs="1" maxOccurs="unbounded" />
392+ </xsd:sequence>
393+ <xsd:attribute name="name" type="xsd:string" use="required" />
394+ </xsd:complexType>
395+ </xsd:element>
396+ <xsd:element name="enum">
397+ <xsd:complexType>
398+ <xsd:sequence minOccurs="1" maxOccurs="unbounded">
399+ <xsd:element name="item">
400+ <xsd:complexType>
401+ <xsd:choice minOccurs="1" maxOccurs="1">
402+ <xsd:element name="value" type="xsd:unsignedInt" />
403+ <xsd:element name="bit" type="bitType" />
404+ </xsd:choice>
405+ <xsd:attribute name="name" type="xsd:string" use="required" />
406+ </xsd:complexType>
407+ </xsd:element>
408+ <xsd:element ref="doc" minOccurs="0" maxOccurs="1" />
409+ </xsd:sequence>
410+ <xsd:attribute name="name" type="xsd:string" use="required" />
411+ </xsd:complexType>
412+ </xsd:element>
413+ <xsd:element name="typedef">
414+ <xsd:complexType>
415+ <xsd:attribute name="oldname" type="xsd:string" use="required" />
416+ <xsd:attribute name="newname" type="xsd:string" use="required" />
417+ </xsd:complexType>
418+ </xsd:element>
419+ <!-- The import element allows a protocol description to reference the
420+ declarations of another protocol description. -->
421+ <xsd:element name="import" type="xsd:string" />
422+ </xsd:choice>
423+ </xsd:group>
424+</xsd:schema>
A spec/xml/bigreq.xml +52 -0
@@ -0,0 +1,52 @@
1+<?xml version="1.0" encoding="utf-8"?>
2+<!--
3+Copyright (C) 2001-2004 Bart Massey, Jamey Sharp, and Josh Triplett.
4+All Rights Reserved.
5+
6+Permission is hereby granted, free of charge, to any person obtaining a copy
7+of this software and associated documentation files (the "Software"), to deal
8+in the Software without restriction, including without limitation the rights
9+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10+copies of the Software, and to permit persons to whom the Software is
11+furnished to do so, subject to the following conditions:
12+
13+The above copyright notice and this permission notice shall be included in all
14+copies or substantial portions of the Software.
15+
16+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22+
23+Except as contained in this notice, the names of the authors or their
24+institutions shall not be used in advertising or otherwise to promote the
25+sale, use or other dealings in this Software without prior written
26+authorization from the authors.
27+-->
28+<xcb header="bigreq" extension-xname="BIG-REQUESTS"
29+ extension-name="BigRequests" extension-multiword="true"
30+ major-version="0" minor-version="0">
31+
32+ <request name="Enable" opcode="0">
33+ <reply>
34+ <pad bytes="1" />
35+ <field type="CARD32" name="maximum_request_length" />
36+ <doc>
37+ <field name="maximum_request_length">
38+The maximum length of requests supported by the server, in 4-byte units.
39+ </field>
40+ </doc>
41+ </reply>
42+ <doc>
43+ <brief>Enable the BIG-REQUESTS extension</brief>
44+ <description>
45+This enables the BIG-REQUESTS extension, which allows for requests larger than
46+262140 bytes in length. When enabled, if the 16-bit length field is zero, it
47+is immediately followed by a 32-bit length field specifying the length of the
48+request in 4-byte units.
49+ </description>
50+ </doc>
51+ </request>
52+</xcb>
@@ -0,0 +1,52 @@
1+<?xml version="1.0" encoding="utf-8"?>
2+<!--
3+Copyright (C) 2001-2004 Bart Massey, Jamey Sharp, and Josh Triplett.
4+All Rights Reserved.
5+
6+Permission is hereby granted, free of charge, to any person obtaining a copy
7+of this software and associated documentation files (the "Software"), to deal
8+in the Software without restriction, including without limitation the rights
9+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10+copies of the Software, and to permit persons to whom the Software is
11+furnished to do so, subject to the following conditions:
12+
13+The above copyright notice and this permission notice shall be included in all
14+copies or substantial portions of the Software.
15+
16+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22+
23+Except as contained in this notice, the names of the authors or their
24+institutions shall not be used in advertising or otherwise to promote the
25+sale, use or other dealings in this Software without prior written
26+authorization from the authors.
27+-->
28+<xcb header="bigreq" extension-xname="BIG-REQUESTS"
29+ extension-name="BigRequests" extension-multiword="true"
30+ major-version="0" minor-version="0">
31+
32+ <request name="Enable" opcode="0">
33+ <reply>
34+ <pad bytes="1" />
35+ <field type="CARD32" name="maximum_request_length" />
36+ <doc>
37+ <field name="maximum_request_length">
38+The maximum length of requests supported by the server, in 4-byte units.
39+ </field>
40+ </doc>
41+ </reply>
42+ <doc>
43+ <brief>Enable the BIG-REQUESTS extension</brief>
44+ <description>
45+This enables the BIG-REQUESTS extension, which allows for requests larger than
46+262140 bytes in length. When enabled, if the 16-bit length field is zero, it
47+is immediately followed by a 32-bit length field specifying the length of the
48+request in 4-byte units.
49+ </description>
50+ </doc>
51+ </request>
52+</xcb>
A spec/xml/composite.xml +220 -0
@@ -0,0 +1,220 @@
1+<?xml version="1.0" encoding="utf-8"?>
2+<!--
3+Copyright (C) 2004 Josh Triplett. All Rights Reserved.
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 BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
19+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21+
22+Except as contained in this notice, the names of the authors or their
23+institutions shall not be used in advertising or otherwise to promote the
24+sale, use or other dealings in this Software without prior written
25+authorization from the authors.
26+
27+Copyright (c) 2006, Oracle and/or its affiliates.
28+
29+Permission is hereby granted, free of charge, to any person obtaining a
30+copy of this software and associated documentation files (the "Software"),
31+to deal in the Software without restriction, including without limitation
32+the rights to use, copy, modify, merge, publish, distribute, sublicense,
33+and/or sell copies of the Software, and to permit persons to whom the
34+Software is furnished to do so, subject to the following conditions:
35+
36+The above copyright notice and this permission notice (including the next
37+paragraph) shall be included in all copies or substantial portions of the
38+Software.
39+
40+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
41+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
42+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
43+THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
44+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
45+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
46+DEALINGS IN THE SOFTWARE.
47+
48+Copyright © 2003 Keith Packard
49+
50+Permission to use, copy, modify, distribute, and sell this software and its
51+documentation for any purpose is hereby granted without fee, provided that
52+the above copyright notice appear in all copies and that both that
53+copyright notice and this permission notice appear in supporting
54+documentation, and that the name of Keith Packard not be used in
55+advertising or publicity pertaining to distribution of the software without
56+specific, written prior permission. Keith Packard makes no
57+representations about the suitability of this software for any purpose. It
58+is provided "as is" without express or implied warranty.
59+
60+KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
61+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
62+EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
63+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
64+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
65+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
66+PERFORMANCE OF THIS SOFTWARE.
67+
68+-->
69+<!-- This file describes version 0.3 of COMPOSITE. -->
70+<xcb header="composite" extension-xname="Composite" extension-name="Composite"
71+ major-version="0" minor-version="4">
72+
73+ <import>xproto</import>
74+ <import>xfixes</import>
75+
76+ <enum name="Redirect">
77+ <item name="Automatic"> <value>0</value> </item>
78+ <item name="Manual"> <value>1</value> </item>
79+ </enum>
80+
81+ <request name="QueryVersion" opcode="0">
82+ <field type="CARD32" name="client_major_version" />
83+ <field type="CARD32" name="client_minor_version" />
84+ <reply>
85+ <pad bytes="1" />
86+ <field type="CARD32" name="major_version" />
87+ <field type="CARD32" name="minor_version" />
88+ <pad bytes="16" />
89+ <doc>
90+ <brief>The negotiated version of Composite</brief>
91+ <description>
92+This indicates the version of Composite chosen by the server. It will always be
93+less than or equal to the version offered by the client.
94+ </description>
95+ <field name="major_version">The major version chosen by the server.</field>
96+ <field name="minor_version">The minor version chosen by the server.</field>
97+ </doc>
98+ </reply>
99+ <doc>
100+ <brief>Negotiate the version of Composite</brief>
101+ <description>
102+This negotiates the version of the Composite extension. It must be precede all
103+other requests using Composite. Failure to do so will cause a BadRequest error.
104+ </description>
105+ <field name="client_major_version">The major version supported by the client.</field>
106+ <field name="client_minor_version">The minor version supported by the client.</field>
107+ </doc>
108+ </request>
109+
110+ <request name="RedirectWindow" opcode="1">
111+ <field type="WINDOW" name="window" />
112+ <field type="CARD8" name="update" enum="Redirect" />
113+ <pad bytes="3" />
114+ <doc>
115+ <brief>Redirect the hierarchy starting at "window" to off-screen storage.</brief>
116+ <description>
117+ The hierarchy starting at 'window' is directed to off-screen
118+ storage. When all clients enabling redirection terminate,
119+ the redirection will automatically be disabled.
120+
121+ The root window may not be redirected. Doing so results in a Match
122+ error.
123+ </description>
124+ <field name="window">The root of the hierarchy to redirect to off-screen storage.</field>
125+ <field name="update">
126+ Whether contents are automatically mirrored to the parent window. If one client
127+ already specifies an update type of Manual, any attempt by another to specify a
128+ mode of Manual so will result in an Access error.
129+ </field>
130+ </doc>
131+ </request>
132+
133+ <request name="RedirectSubwindows" opcode="2">
134+ <field type="WINDOW" name="window" />
135+ <field type="CARD8" name="update" enum="Redirect" />
136+ <pad bytes="3" />
137+ <doc>
138+ <brief>Redirect all current and future children of ‘window’</brief>
139+ <description>
140+ Hierarchies starting at all current and future children of window
141+ will be redirected as in RedirectWindow. If update is Manual,
142+ then painting of the window background during window manipulation
143+ and ClearArea requests is inhibited.
144+ </description>
145+ <field name="window">The root of the hierarchy to redirect to off-screen storage.</field>
146+ <field name="update">
147+ Whether contents are automatically mirrored to the parent window. If one client
148+ already specifies an update type of Manual, any attempt by another to specify a
149+ mode of Manual so will result in an Access error.
150+ </field>
151+ </doc>
152+ </request>
153+
154+ <request name="UnredirectWindow" opcode="3">
155+ <field type="WINDOW" name="window" />
156+ <field type="CARD8" name="update" enum="Redirect" />
157+ <pad bytes="3" />
158+ <doc>
159+ <brief>Terminate redirection of the specified window.</brief>
160+ <description>
161+ Redirection of the specified window will be terminated. This cannot be
162+ used if the window was redirected with RedirectSubwindows.
163+ </description>
164+ <field name="window">
165+ The window to terminate redirection of. Must be redirected by the
166+ current client, or a Value error results.
167+ </field>
168+ <field name="update">
169+ The update type passed to RedirectWindows. If this does not match the
170+ previously requested update type, a Value error results.
171+ </field>
172+ </doc>
173+ </request>
174+
175+ <request name="UnredirectSubwindows" opcode="4">
176+ <field type="WINDOW" name="window" />
177+ <field type="CARD8" name="update" enum="Redirect" />
178+ <pad bytes="3" />
179+ <doc>
180+ <brief>Terminate redirection of the specified window’s children</brief>
181+ <description>
182+ Redirection of all children of window will be terminated.
183+ </description>
184+ <field name="window">
185+ The window to terminate redirection of. Must have previously been
186+ selected for sub-redirection by the current client, or a Value error
187+ results.
188+ </field>
189+ <field name="update">
190+ The update type passed to RedirectSubWindows. If this does not match
191+ the previously requested update type, a Value error results.
192+ </field>
193+ </doc>
194+ </request>
195+
196+ <request name="CreateRegionFromBorderClip" opcode="5">
197+ <field type="REGION" name="region" />
198+ <field type="WINDOW" name="window" />
199+ </request>
200+
201+ <request name="NameWindowPixmap" opcode="6">
202+ <field type="WINDOW" name="window" />
203+ <field type="PIXMAP" name="pixmap" />
204+ </request>
205+
206+ <!-- new in version 0.3 -->
207+
208+ <request name="GetOverlayWindow" opcode="7">
209+ <field type="WINDOW" name="window" />
210+ <reply>
211+ <pad bytes="1" />
212+ <field type="WINDOW" name="overlay_win" />
213+ <pad bytes="20" />
214+ </reply>
215+ </request>
216+
217+ <request name="ReleaseOverlayWindow" opcode="8">
218+ <field type="WINDOW" name="window" />
219+ </request>
220+</xcb>
@@ -0,0 +1,220 @@
1+<?xml version="1.0" encoding="utf-8"?>
2+<!--
3+Copyright (C) 2004 Josh Triplett. All Rights Reserved.
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 BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
19+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21+
22+Except as contained in this notice, the names of the authors or their
23+institutions shall not be used in advertising or otherwise to promote the
24+sale, use or other dealings in this Software without prior written
25+authorization from the authors.
26+
27+Copyright (c) 2006, Oracle and/or its affiliates.
28+
29+Permission is hereby granted, free of charge, to any person obtaining a
30+copy of this software and associated documentation files (the "Software"),
31+to deal in the Software without restriction, including without limitation
32+the rights to use, copy, modify, merge, publish, distribute, sublicense,
33+and/or sell copies of the Software, and to permit persons to whom the
34+Software is furnished to do so, subject to the following conditions:
35+
36+The above copyright notice and this permission notice (including the next
37+paragraph) shall be included in all copies or substantial portions of the
38+Software.
39+
40+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
41+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
42+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
43+THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
44+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
45+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
46+DEALINGS IN THE SOFTWARE.
47+
48+Copyright © 2003 Keith Packard
49+
50+Permission to use, copy, modify, distribute, and sell this software and its
51+documentation for any purpose is hereby granted without fee, provided that
52+the above copyright notice appear in all copies and that both that
53+copyright notice and this permission notice appear in supporting
54+documentation, and that the name of Keith Packard not be used in
55+advertising or publicity pertaining to distribution of the software without
56+specific, written prior permission. Keith Packard makes no
57+representations about the suitability of this software for any purpose. It
58+is provided "as is" without express or implied warranty.
59+
60+KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
61+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
62+EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
63+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
64+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
65+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
66+PERFORMANCE OF THIS SOFTWARE.
67+
68+-->
69+<!-- This file describes version 0.3 of COMPOSITE. -->
70+<xcb header="composite" extension-xname="Composite" extension-name="Composite"
71+ major-version="0" minor-version="4">
72+
73+ <import>xproto</import>
74+ <import>xfixes</import>
75+
76+ <enum name="Redirect">
77+ <item name="Automatic"> <value>0</value> </item>
78+ <item name="Manual"> <value>1</value> </item>
79+ </enum>
80+
81+ <request name="QueryVersion" opcode="0">
82+ <field type="CARD32" name="client_major_version" />
83+ <field type="CARD32" name="client_minor_version" />
84+ <reply>
85+ <pad bytes="1" />
86+ <field type="CARD32" name="major_version" />
87+ <field type="CARD32" name="minor_version" />
88+ <pad bytes="16" />
89+ <doc>
90+ <brief>The negotiated version of Composite</brief>
91+ <description>
92+This indicates the version of Composite chosen by the server. It will always be
93+less than or equal to the version offered by the client.
94+ </description>
95+ <field name="major_version">The major version chosen by the server.</field>
96+ <field name="minor_version">The minor version chosen by the server.</field>
97+ </doc>
98+ </reply>
99+ <doc>
100+ <brief>Negotiate the version of Composite</brief>
101+ <description>
102+This negotiates the version of the Composite extension. It must be precede all
103+other requests using Composite. Failure to do so will cause a BadRequest error.
104+ </description>
105+ <field name="client_major_version">The major version supported by the client.</field>
106+ <field name="client_minor_version">The minor version supported by the client.</field>
107+ </doc>
108+ </request>
109+
110+ <request name="RedirectWindow" opcode="1">
111+ <field type="WINDOW" name="window" />
112+ <field type="CARD8" name="update" enum="Redirect" />
113+ <pad bytes="3" />
114+ <doc>
115+ <brief>Redirect the hierarchy starting at "window" to off-screen storage.</brief>
116+ <description>
117+ The hierarchy starting at 'window' is directed to off-screen
118+ storage. When all clients enabling redirection terminate,
119+ the redirection will automatically be disabled.
120+
121+ The root window may not be redirected. Doing so results in a Match
122+ error.
123+ </description>
124+ <field name="window">The root of the hierarchy to redirect to off-screen storage.</field>
125+ <field name="update">
126+ Whether contents are automatically mirrored to the parent window. If one client
127+ already specifies an update type of Manual, any attempt by another to specify a
128+ mode of Manual so will result in an Access error.
129+ </field>
130+ </doc>
131+ </request>
132+
133+ <request name="RedirectSubwindows" opcode="2">
134+ <field type="WINDOW" name="window" />
135+ <field type="CARD8" name="update" enum="Redirect" />
136+ <pad bytes="3" />
137+ <doc>
138+ <brief>Redirect all current and future children of ‘window’</brief>
139+ <description>
140+ Hierarchies starting at all current and future children of window
141+ will be redirected as in RedirectWindow. If update is Manual,
142+ then painting of the window background during window manipulation
143+ and ClearArea requests is inhibited.
144+ </description>
145+ <field name="window">The root of the hierarchy to redirect to off-screen storage.</field>
146+ <field name="update">
147+ Whether contents are automatically mirrored to the parent window. If one client
148+ already specifies an update type of Manual, any attempt by another to specify a
149+ mode of Manual so will result in an Access error.
150+ </field>
151+ </doc>
152+ </request>
153+
154+ <request name="UnredirectWindow" opcode="3">
155+ <field type="WINDOW" name="window" />
156+ <field type="CARD8" name="update" enum="Redirect" />
157+ <pad bytes="3" />
158+ <doc>
159+ <brief>Terminate redirection of the specified window.</brief>
160+ <description>
161+ Redirection of the specified window will be terminated. This cannot be
162+ used if the window was redirected with RedirectSubwindows.
163+ </description>
164+ <field name="window">
165+ The window to terminate redirection of. Must be redirected by the
166+ current client, or a Value error results.
167+ </field>
168+ <field name="update">
169+ The update type passed to RedirectWindows. If this does not match the
170+ previously requested update type, a Value error results.
171+ </field>
172+ </doc>
173+ </request>
174+
175+ <request name="UnredirectSubwindows" opcode="4">
176+ <field type="WINDOW" name="window" />
177+ <field type="CARD8" name="update" enum="Redirect" />
178+ <pad bytes="3" />
179+ <doc>
180+ <brief>Terminate redirection of the specified window’s children</brief>
181+ <description>
182+ Redirection of all children of window will be terminated.
183+ </description>
184+ <field name="window">
185+ The window to terminate redirection of. Must have previously been
186+ selected for sub-redirection by the current client, or a Value error
187+ results.
188+ </field>
189+ <field name="update">
190+ The update type passed to RedirectSubWindows. If this does not match
191+ the previously requested update type, a Value error results.
192+ </field>
193+ </doc>
194+ </request>
195+
196+ <request name="CreateRegionFromBorderClip" opcode="5">
197+ <field type="REGION" name="region" />
198+ <field type="WINDOW" name="window" />
199+ </request>
200+
201+ <request name="NameWindowPixmap" opcode="6">
202+ <field type="WINDOW" name="window" />
203+ <field type="PIXMAP" name="pixmap" />
204+ </request>
205+
206+ <!-- new in version 0.3 -->
207+
208+ <request name="GetOverlayWindow" opcode="7">
209+ <field type="WINDOW" name="window" />
210+ <reply>
211+ <pad bytes="1" />
212+ <field type="WINDOW" name="overlay_win" />
213+ <pad bytes="20" />
214+ </reply>
215+ </request>
216+
217+ <request name="ReleaseOverlayWindow" opcode="8">
218+ <field type="WINDOW" name="window" />
219+ </request>
220+</xcb>
A spec/xml/ge.xml +42 -0
@@ -0,0 +1,42 @@
1+<?xml version="1.0" encoding="utf-8"?>
2+<!--
3+Copyright (C) 2009 Open Text Corporation. All Rights Reserved.
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 BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
19+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21+
22+Except as contained in this notice, the names of the authors or their
23+institutions shall not be used in advertising or otherwise to promote the
24+sale, use or other dealings in this Software without prior written
25+authorization from the authors.
26+-->
27+<xcb header="ge" extension-xname="Generic Event Extension" extension-name="GenericEvent"
28+ major-version="1" minor-version="0">
29+
30+ <!-- Version 1 -->
31+ <request name="QueryVersion" opcode="0">
32+ <field type="CARD16" name="client_major_version" />
33+ <field type="CARD16" name="client_minor_version" />
34+ <reply>
35+ <pad bytes="1" />
36+ <field type="CARD16" name="major_version" />
37+ <field type="CARD16" name="minor_version" />
38+ <pad bytes="20" />
39+ </reply>
40+ </request>
41+
42+</xcb>
@@ -0,0 +1,42 @@
1+<?xml version="1.0" encoding="utf-8"?>
2+<!--
3+Copyright (C) 2009 Open Text Corporation. All Rights Reserved.
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 BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
19+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21+
22+Except as contained in this notice, the names of the authors or their
23+institutions shall not be used in advertising or otherwise to promote the
24+sale, use or other dealings in this Software without prior written
25+authorization from the authors.
26+-->
27+<xcb header="ge" extension-xname="Generic Event Extension" extension-name="GenericEvent"
28+ major-version="1" minor-version="0">
29+
30+ <!-- Version 1 -->
31+ <request name="QueryVersion" opcode="0">
32+ <field type="CARD16" name="client_major_version" />
33+ <field type="CARD16" name="client_minor_version" />
34+ <reply>
35+ <pad bytes="1" />
36+ <field type="CARD16" name="major_version" />
37+ <field type="CARD16" name="minor_version" />
38+ <pad bytes="20" />
39+ </reply>
40+ </request>
41+
42+</xcb>
A spec/xml/render.xml +693 -0
@@ -0,0 +1,693 @@
1+<?xml version="1.0" encoding="utf-8"?>
2+<!--
3+Copyright (C) 2002-2004 Carl D. Worth, Jamey Sharp, Bart Massey, Josh Triplett
4+All Rights Reserved. See the file COPYING in this directory
5+for licensing information.
6+-->
7+<xcb header="render" extension-xname="RENDER" extension-name="Render"
8+ major-version="0" minor-version="11">
9+ <!-- supports version 0.11 -->
10+
11+ <import>xproto</import>
12+
13+ <enum name="PictType">
14+ <item name="Indexed"> <value>0</value> </item>
15+ <item name="Direct"> <value>1</value> </item>
16+ </enum>
17+
18+ <enum name="Picture">
19+ <item name="None"> <value>0</value> </item>
20+ </enum>
21+
22+ <!-- Disjoint* and Conjoint* are new in version 0.2 -->
23+ <!-- PDF blend modes are new in version 0.11 -->
24+ <enum name="PictOp">
25+ <item name="Clear"> <value>0</value> </item>
26+ <item name="Src"> <value>1</value> </item>
27+ <item name="Dst"> <value>2</value> </item>
28+ <item name="Over"> <value>3</value> </item>
29+ <item name="OverReverse"> <value>4</value> </item>
30+ <item name="In"> <value>5</value> </item>
31+ <item name="InReverse"> <value>6</value> </item>
32+ <item name="Out"> <value>7</value> </item>
33+ <item name="OutReverse"> <value>8</value> </item>
34+ <item name="Atop"> <value>9</value> </item>
35+ <item name="AtopReverse"> <value>10</value> </item>
36+ <item name="Xor"> <value>11</value> </item>
37+ <item name="Add"> <value>12</value> </item>
38+ <item name="Saturate"> <value>13</value> </item>
39+
40+ <item name="DisjointClear"> <value>16</value></item>
41+ <item name="DisjointSrc"> <value>17</value> </item>
42+ <item name="DisjointDst"> <value>18</value> </item>
43+ <item name="DisjointOver"> <value>19</value> </item>
44+ <item name="DisjointOverReverse"> <value>20</value> </item>
45+ <item name="DisjointIn"> <value>21</value> </item>
46+ <item name="DisjointInReverse"> <value>22</value> </item>
47+ <item name="DisjointOut"> <value>23</value> </item>
48+ <item name="DisjointOutReverse"> <value>24</value> </item>
49+ <item name="DisjointAtop"> <value>25</value> </item>
50+ <item name="DisjointAtopReverse"> <value>26</value> </item>
51+ <item name="DisjointXor"> <value>27</value> </item>
52+
53+ <item name="ConjointClear"> <value>32</value></item>
54+ <item name="ConjointSrc"> <value>33</value> </item>
55+ <item name="ConjointDst"> <value>34</value> </item>
56+ <item name="ConjointOver"> <value>35</value> </item>
57+ <item name="ConjointOverReverse"> <value>36</value> </item>
58+ <item name="ConjointIn"> <value>37</value> </item>
59+ <item name="ConjointInReverse"> <value>38</value> </item>
60+ <item name="ConjointOut"> <value>39</value> </item>
61+ <item name="ConjointOutReverse"> <value>40</value> </item>
62+ <item name="ConjointAtop"> <value>41</value> </item>
63+ <item name="ConjointAtopReverse"> <value>42</value> </item>
64+ <item name="ConjointXor"> <value>43</value> </item>
65+
66+ <!-- PDF blend modes are new in version 0.11 -->
67+ <item name="Multiply"> <value>48</value></item>
68+ <item name="Screen"> <value>49</value> </item>
69+ <item name="Overlay"> <value>50</value> </item>
70+ <item name="Darken"> <value>51</value> </item>
71+ <item name="Lighten"> <value>52</value> </item>
72+ <item name="ColorDodge"> <value>53</value> </item>
73+ <item name="ColorBurn"> <value>54</value> </item>
74+ <item name="HardLight"> <value>55</value> </item>
75+ <item name="SoftLight"> <value>56</value> </item>
76+ <item name="Difference"> <value>57</value> </item>
77+ <item name="Exclusion"> <value>58</value> </item>
78+ <item name="HSLHue"> <value>59</value> </item>
79+ <item name="HSLSaturation"> <value>60</value> </item>
80+ <item name="HSLColor"> <value>61</value> </item>
81+ <item name="HSLLuminosity"> <value>62</value> </item>
82+ </enum>
83+
84+ <enum name="PolyEdge">
85+ <item name="Sharp"> <value>0</value> </item>
86+ <item name="Smooth"> <value>1</value> </item>
87+ </enum>
88+
89+ <enum name="PolyMode">
90+ <item name="Precise"> <value>0</value> </item>
91+ <item name="Imprecise"> <value>1</value> </item>
92+ </enum>
93+
94+ <enum name="CP">
95+ <item name="Repeat"> <bit>0</bit></item>
96+ <item name="AlphaMap"> <bit>1</bit></item>
97+ <item name="AlphaXOrigin"> <bit>2</bit></item>
98+ <item name="AlphaYOrigin"> <bit>3</bit></item>
99+ <item name="ClipXOrigin"> <bit>4</bit></item>
100+ <item name="ClipYOrigin"> <bit>5</bit></item>
101+ <item name="ClipMask"> <bit>6</bit></item>
102+ <item name="GraphicsExposure"><bit>7</bit></item>
103+ <item name="SubwindowMode"> <bit>8</bit></item>
104+ <item name="PolyEdge"> <bit>9</bit></item>
105+ <item name="PolyMode"> <bit>10</bit></item>
106+ <item name="Dither"> <bit>11</bit></item>
107+ <item name="ComponentAlpha"> <bit>12</bit></item>
108+ </enum>
109+
110+ <enum name="SubPixel">
111+ <item name="Unknown"> <value>0</value> </item>
112+ <item name="HorizontalRGB"> <value>1</value> </item>
113+ <item name="HorizontalBGR"> <value>2</value> </item>
114+ <item name="VerticalRGB"> <value>3</value> </item>
115+ <item name="VerticalBGR"> <value>4</value> </item>
116+ <item name="None"> <value>5</value> </item>
117+ </enum>
118+
119+ <!-- Extended repeat attributes introduced in 0.10 -->
120+ <enum name="Repeat">
121+ <item name="None"> <value>0</value> </item>
122+ <item name="Normal"> <value>1</value> </item>
123+ <item name="Pad"> <value>2</value> </item>
124+ <item name="Reflect"> <value>3</value> </item>
125+ </enum>
126+
127+ <typedef oldname="CARD32" newname="GLYPH" />
128+ <xidtype name="GLYPHSET" />
129+
130+ <xidtype name="PICTURE" />
131+ <xidtype name="PICTFORMAT" />
132+
133+ <typedef oldname="INT32" newname="FIXED" />
134+
135+ <error name="PictFormat" number="0" />
136+ <error name="Picture" number="1" />
137+ <error name="PictOp" number="2" />
138+ <error name="GlyphSet" number="3" />
139+ <error name="Glyph" number="4" />
140+
141+ <struct name="DIRECTFORMAT">
142+ <field type="CARD16" name="red_shift" />
143+ <field type="CARD16" name="red_mask" />
144+ <field type="CARD16" name="green_shift" />
145+ <field type="CARD16" name="green_mask" />
146+ <field type="CARD16" name="blue_shift" />
147+ <field type="CARD16" name="blue_mask" />
148+ <field type="CARD16" name="alpha_shift" />
149+ <field type="CARD16" name="alpha_mask" />
150+ </struct>
151+
152+ <struct name="PICTFORMINFO">
153+ <field type="PICTFORMAT" name="id" />
154+ <field type="CARD8" name="type" enum="PictType" />
155+ <field type="CARD8" name="depth" />
156+ <pad bytes="2" />
157+ <field type="DIRECTFORMAT" name="direct" />
158+ <field type="COLORMAP" name="colormap" />
159+ </struct>
160+
161+ <struct name="PICTVISUAL">
162+ <field type="VISUALID" name="visual" />
163+ <field type="PICTFORMAT" name="format" />
164+ </struct>
165+
166+ <struct name="PICTDEPTH">
167+ <field type="CARD8" name="depth" />
168+ <pad bytes="1" />
169+ <field type="CARD16" name="num_visuals" />
170+ <pad bytes="4" />
171+ <list type="PICTVISUAL" name="visuals">
172+ <fieldref>num_visuals</fieldref>
173+ </list>
174+ </struct>
175+
176+ <struct name="PICTSCREEN">
177+ <field type="CARD32" name="num_depths" />
178+ <field type="PICTFORMAT" name="fallback" />
179+ <list type="PICTDEPTH" name="depths">
180+ <fieldref>num_depths</fieldref>
181+ </list>
182+ </struct>
183+
184+ <struct name="INDEXVALUE">
185+ <field type="CARD32" name="pixel" />
186+ <field type="CARD16" name="red" />
187+ <field type="CARD16" name="green" />
188+ <field type="CARD16" name="blue" />
189+ <field type="CARD16" name="alpha" />
190+ </struct>
191+
192+ <struct name="COLOR">
193+ <field type="CARD16" name="red" />
194+ <field type="CARD16" name="green" />
195+ <field type="CARD16" name="blue" />
196+ <field type="CARD16" name="alpha" />
197+ </struct>
198+
199+ <struct name="POINTFIX">
200+ <field type="FIXED" name="x" />
201+ <field type="FIXED" name="y" />
202+ </struct>
203+
204+ <struct name="LINEFIX">
205+ <field type="POINTFIX" name="p1" />
206+ <field type="POINTFIX" name="p2" />
207+ </struct>
208+
209+ <struct name="TRIANGLE">
210+ <field type="POINTFIX" name="p1" />
211+ <field type="POINTFIX" name="p2" />
212+ <field type="POINTFIX" name="p3" />
213+ </struct>
214+
215+ <struct name="TRAPEZOID">
216+ <field type="FIXED" name="top" />
217+ <field type="FIXED" name="bottom" />
218+ <field type="LINEFIX" name="left" />
219+ <field type="LINEFIX" name="right" />
220+ </struct>
221+
222+ <struct name="GLYPHINFO">
223+ <field type="CARD16" name="width" />
224+ <field type="CARD16" name="height" />
225+ <field type="INT16" name="x" />
226+ <field type="INT16" name="y" />
227+ <field type="INT16" name="x_off" />
228+ <field type="INT16" name="y_off" />
229+ </struct>
230+
231+
232+ <request name="QueryVersion" opcode="0">
233+ <field type="CARD32" name="client_major_version" />
234+ <field type="CARD32" name="client_minor_version" />
235+ <reply>
236+ <pad bytes="1" />
237+ <field type="CARD32" name="major_version" />
238+ <field type="CARD32" name="minor_version" />
239+ <pad bytes="16" />
240+ </reply>
241+ </request>
242+
243+ <request name="QueryPictFormats" opcode="1">
244+ <reply>
245+ <pad bytes="1" />
246+ <field type="CARD32" name="num_formats" />
247+ <field type="CARD32" name="num_screens" />
248+ <field type="CARD32" name="num_depths" />
249+ <field type="CARD32" name="num_visuals" />
250+ <field type="CARD32" name="num_subpixel" /> <!-- new in version 0.6 -->
251+ <pad bytes="4" />
252+ <list type="PICTFORMINFO" name="formats">
253+ <fieldref>num_formats</fieldref>
254+ </list>
255+ <list type="PICTSCREEN" name="screens">
256+ <fieldref>num_screens</fieldref>
257+ </list>
258+ <list type="CARD32" name="subpixels" enum="SubPixel" >
259+ <fieldref>num_subpixel</fieldref>
260+ </list>
261+ </reply>
262+ </request>
263+
264+ <!-- from version 0.7 -->
265+ <request name="QueryPictIndexValues" opcode="2">
266+ <field type="PICTFORMAT" name="format" />
267+ <reply>
268+ <pad bytes="1" />
269+ <field type="CARD32" name="num_values" />
270+ <pad bytes="20" />
271+ <list type="INDEXVALUE" name="values">
272+ <fieldref>num_values</fieldref>
273+ </list>
274+ </reply>
275+ </request>
276+
277+ <!-- opcode 3 reserved for QueryDithers -->
278+
279+ <request name="CreatePicture" opcode="4">
280+ <field type="PICTURE" name="pid" />
281+ <field type="DRAWABLE" name="drawable" />
282+ <field type="PICTFORMAT" name="format" />
283+ <field type="CARD32" name="value_mask" mask="CP"/>
284+ <switch name="value_list">
285+ <fieldref>value_mask</fieldref>
286+ <bitcase>
287+ <enumref ref="CP">Repeat</enumref>
288+ <field type="CARD32" name="repeat" enum="Repeat"/>
289+ </bitcase>
290+ <bitcase>
291+ <enumref ref="CP">AlphaMap</enumref>
292+ <field type="PICTURE" name="alphamap" />
293+ </bitcase>
294+ <bitcase>
295+ <enumref ref="CP">AlphaXOrigin</enumref>
296+ <field type="INT32" name="alphaxorigin" />
297+ </bitcase>
298+ <bitcase>
299+ <enumref ref="CP">AlphaYOrigin</enumref>
300+ <field type="INT32" name="alphayorigin" />
301+ </bitcase>
302+ <bitcase>
303+ <enumref ref="CP">ClipXOrigin</enumref>
304+ <field type="INT32" name="clipxorigin" />
305+ </bitcase>
306+ <bitcase>
307+ <enumref ref="CP">ClipYOrigin</enumref>
308+ <field type="INT32" name="clipyorigin" />
309+ </bitcase>
310+ <bitcase>
311+ <enumref ref="CP">ClipMask</enumref>
312+ <field type="PIXMAP" name="clipmask" />
313+ </bitcase>
314+ <bitcase>
315+ <enumref ref="CP">GraphicsExposure</enumref>
316+ <field type="CARD32" name="graphicsexposure" />
317+ </bitcase>
318+ <bitcase>
319+ <enumref ref="CP">SubwindowMode</enumref>
320+ <field type="CARD32" name="subwindowmode" enum="SubwindowMode"/>
321+ </bitcase>
322+ <bitcase>
323+ <enumref ref="CP">PolyEdge</enumref>
324+ <field type="CARD32" name="polyedge" enum="PolyEdge"/>
325+ </bitcase>
326+ <bitcase>
327+ <enumref ref="CP">PolyMode</enumref>
328+ <field type="CARD32" name="polymode" enum="PolyMode"/>
329+ </bitcase>
330+ <bitcase>
331+ <enumref ref="CP">Dither</enumref>
332+ <field type="ATOM" name="dither" />
333+ </bitcase>
334+ <bitcase>
335+ <enumref ref="CP">ComponentAlpha</enumref>
336+ <field type="CARD32" name="componentalpha" />
337+ </bitcase>
338+ </switch>
339+ </request>
340+
341+ <request name="ChangePicture" opcode="5">
342+ <field type="PICTURE" name="picture" />
343+ <field type="CARD32" name="value_mask" mask="CP"/>
344+ <switch name="value_list">
345+ <fieldref>value_mask</fieldref>
346+ <bitcase>
347+ <enumref ref="CP">Repeat</enumref>
348+ <field type="CARD32" name="repeat" enum="Repeat"/>
349+ </bitcase>
350+ <bitcase>
351+ <enumref ref="CP">AlphaMap</enumref>
352+ <field type="PICTURE" name="alphamap" />
353+ </bitcase>
354+ <bitcase>
355+ <enumref ref="CP">AlphaXOrigin</enumref>
356+ <field type="INT32" name="alphaxorigin" />
357+ </bitcase>
358+ <bitcase>
359+ <enumref ref="CP">AlphaYOrigin</enumref>
360+ <field type="INT32" name="alphayorigin" />
361+ </bitcase>
362+ <bitcase>
363+ <enumref ref="CP">ClipXOrigin</enumref>
364+ <field type="INT32" name="clipxorigin" />
365+ </bitcase>
366+ <bitcase>
367+ <enumref ref="CP">ClipYOrigin</enumref>
368+ <field type="INT32" name="clipyorigin" />
369+ </bitcase>
370+ <bitcase>
371+ <enumref ref="CP">ClipMask</enumref>
372+ <field type="PIXMAP" name="clipmask" />
373+ </bitcase>
374+ <bitcase>
375+ <enumref ref="CP">GraphicsExposure</enumref>
376+ <field type="CARD32" name="graphicsexposure" />
377+ </bitcase>
378+ <bitcase>
379+ <enumref ref="CP">SubwindowMode</enumref>
380+ <field type="CARD32" name="subwindowmode" enum="SubwindowMode"/>
381+ </bitcase>
382+ <bitcase>
383+ <enumref ref="CP">PolyEdge</enumref>
384+ <field type="CARD32" name="polyedge" enum="PolyEdge"/>
385+ </bitcase>
386+ <bitcase>
387+ <enumref ref="CP">PolyMode</enumref>
388+ <field type="CARD32" name="polymode" enum="PolyMode"/>
389+ </bitcase>
390+ <bitcase>
391+ <enumref ref="CP">Dither</enumref>
392+ <field type="ATOM" name="dither" />
393+ </bitcase>
394+ <bitcase>
395+ <enumref ref="CP">ComponentAlpha</enumref>
396+ <field type="CARD32" name="componentalpha" />
397+ </bitcase>
398+ </switch>
399+ </request>
400+
401+ <request name="SetPictureClipRectangles" opcode="6">
402+ <field type="PICTURE" name="picture" />
403+ <field type="INT16" name="clip_x_origin" />
404+ <field type="INT16" name="clip_y_origin" />
405+ <list type="RECTANGLE" name="rectangles" />
406+ </request>
407+
408+ <request name="FreePicture" opcode="7">
409+ <field type="PICTURE" name="picture" />
410+ </request>
411+
412+ <request name="Composite" opcode="8">
413+ <field type="CARD8" name="op" enum="PictOp" />
414+ <pad bytes="3" />
415+ <field type="PICTURE" name="src" />
416+ <field type="PICTURE" name="mask" altenum="Picture" />
417+ <field type="PICTURE" name="dst" />
418+ <field type="INT16" name="src_x" />
419+ <field type="INT16" name="src_y" />
420+ <field type="INT16" name="mask_x" />
421+ <field type="INT16" name="mask_y" />
422+ <field type="INT16" name="dst_x" />
423+ <field type="INT16" name="dst_y" />
424+ <field type="CARD16" name="width" />
425+ <field type="CARD16" name="height" />
426+ </request>
427+
428+ <!-- opcode 9 reserved for Scale -->
429+
430+ <request name="Trapezoids" opcode="10">
431+ <field type="CARD8" name="op" enum="PictOp" />
432+ <pad bytes="3" />
433+ <field type="PICTURE" name="src" />
434+ <field type="PICTURE" name="dst" />
435+ <field type="PICTFORMAT" name="mask_format" />
436+ <field type="INT16" name="src_x" />
437+ <field type="INT16" name="src_y" />
438+ <list type="TRAPEZOID" name="traps" />
439+ </request>
440+
441+ <request name="Triangles" opcode="11">
442+ <field type="CARD8" name="op" enum="PictOp" />
443+ <pad bytes="3" />
444+ <field type="PICTURE" name="src" />
445+ <field type="PICTURE" name="dst" />
446+ <field type="PICTFORMAT" name="mask_format" />
447+ <field type="INT16" name="src_x" />
448+ <field type="INT16" name="src_y" />
449+ <list type="TRIANGLE" name="triangles" />
450+ </request>
451+
452+ <request name="TriStrip" opcode="12">
453+ <field type="CARD8" name="op" enum="PictOp" />
454+ <pad bytes="3" />
455+ <field type="PICTURE" name="src" />
456+ <field type="PICTURE" name="dst" />
457+ <field type="PICTFORMAT" name="mask_format" />
458+ <field type="INT16" name="src_x" />
459+ <field type="INT16" name="src_y" />
460+ <list type="POINTFIX" name="points" />
461+ </request>
462+
463+ <request name="TriFan" opcode="13">
464+ <field type="CARD8" name="op" enum="PictOp" />
465+ <pad bytes="3" />
466+ <field type="PICTURE" name="src" />
467+ <field type="PICTURE" name="dst" />
468+ <field type="PICTFORMAT" name="mask_format" />
469+ <field type="INT16" name="src_x" />
470+ <field type="INT16" name="src_y" />
471+ <list type="POINTFIX" name="points" />
472+ </request>
473+
474+ <!-- opcode 14 reserved for ColorTrapezoids -->
475+
476+ <!-- opcode 15 reserved for ColorTriangles -->
477+
478+ <!-- opcode 16 reserved for Transform -->
479+
480+ <request name="CreateGlyphSet" opcode="17">
481+ <field type="GLYPHSET" name="gsid" />
482+ <field type="PICTFORMAT" name="format" />
483+ </request>
484+
485+ <request name="ReferenceGlyphSet" opcode="18">
486+ <field type="GLYPHSET" name="gsid" />
487+ <field type="GLYPHSET" name="existing" />
488+ </request>
489+
490+ <request name="FreeGlyphSet" opcode="19">
491+ <field type="GLYPHSET" name="glyphset" />
492+ </request>
493+
494+ <request name="AddGlyphs" opcode="20">
495+ <field type="GLYPHSET" name="glyphset" />
496+ <field type="CARD32" name="glyphs_len" />
497+ <list type="CARD32" name="glyphids">
498+ <fieldref>glyphs_len</fieldref>
499+ </list>
500+ <list type="GLYPHINFO" name="glyphs">
501+ <fieldref>glyphs_len</fieldref>
502+ </list>
503+ <list type="BYTE" name="data" />
504+ </request>
505+
506+ <!-- opcode 21 reserved for AddGlyphsFromPicture -->
507+
508+ <request name="FreeGlyphs" opcode="22">
509+ <field type="GLYPHSET" name="glyphset" />
510+ <list type="GLYPH" name="glyphs" />
511+ </request>
512+
513+ <request name="CompositeGlyphs8" opcode="23">
514+ <field type="CARD8" name="op" enum="PictOp" />
515+ <pad bytes="3" />
516+ <field type="PICTURE" name="src" />
517+ <field type="PICTURE" name="dst" />
518+ <field type="PICTFORMAT" name="mask_format" />
519+ <field type="GLYPHSET" name="glyphset" />
520+ <field type="INT16" name="src_x" />
521+ <field type="INT16" name="src_y" />
522+ <list type="BYTE" name="glyphcmds" />
523+ </request>
524+
525+ <request name="CompositeGlyphs16" opcode="24">
526+ <field type="CARD8" name="op" enum="PictOp" />
527+ <pad bytes="3" />
528+ <field type="PICTURE" name="src" />
529+ <field type="PICTURE" name="dst" />
530+ <field type="PICTFORMAT" name="mask_format" />
531+ <field type="GLYPHSET" name="glyphset" />
532+ <field type="INT16" name="src_x" />
533+ <field type="INT16" name="src_y" />
534+ <list type="BYTE" name="glyphcmds" />
535+ </request>
536+
537+ <request name="CompositeGlyphs32" opcode="25">
538+ <field type="CARD8" name="op" enum="PictOp" />
539+ <pad bytes="3" />
540+ <field type="PICTURE" name="src" />
541+ <field type="PICTURE" name="dst" />
542+ <field type="PICTFORMAT" name="mask_format" />
543+ <field type="GLYPHSET" name="glyphset" />
544+ <field type="INT16" name="src_x" />
545+ <field type="INT16" name="src_y" />
546+ <list type="BYTE" name="glyphcmds" />
547+ </request>
548+
549+ <!-- new in version 0.1 -->
550+
551+ <request name="FillRectangles" opcode="26">
552+ <field type="CARD8" name="op" enum="PictOp" />
553+ <pad bytes="3" />
554+ <field type="PICTURE" name="dst" />
555+ <field type="COLOR" name="color" />
556+ <list type="RECTANGLE" name="rects" />
557+ </request>
558+
559+ <!-- new in version 0.5 -->
560+
561+ <request name="CreateCursor" opcode="27">
562+ <field type="CURSOR" name="cid" />
563+ <field type="PICTURE" name="source" />
564+ <field type="CARD16" name="x" />
565+ <field type="CARD16" name="y" />
566+ </request>
567+
568+ <!-- new in version 0.6 -->
569+
570+ <struct name="TRANSFORM">
571+ <field type="FIXED" name="matrix11" />
572+ <field type="FIXED" name="matrix12" />
573+ <field type="FIXED" name="matrix13" />
574+ <field type="FIXED" name="matrix21" />
575+ <field type="FIXED" name="matrix22" />
576+ <field type="FIXED" name="matrix23" />
577+ <field type="FIXED" name="matrix31" />
578+ <field type="FIXED" name="matrix32" />
579+ <field type="FIXED" name="matrix33" />
580+ </struct>
581+
582+ <request name="SetPictureTransform" opcode="28">
583+ <field type="PICTURE" name="picture" />
584+ <field type="TRANSFORM" name="transform" />
585+ </request>
586+
587+ <request name="QueryFilters" opcode="29">
588+ <field type="DRAWABLE" name="drawable" />
589+ <reply>
590+ <pad bytes="1" />
591+ <field type="CARD32" name="num_aliases" />
592+ <field type="CARD32" name="num_filters" />
593+ <pad bytes="16" />
594+ <list type="CARD16" name="aliases">
595+ <fieldref>num_aliases</fieldref>
596+ </list>
597+ <list type="STR" name="filters">
598+ <fieldref>num_filters</fieldref>
599+ </list>
600+ </reply>
601+ </request>
602+
603+ <request name="SetPictureFilter" opcode="30">
604+ <field type="PICTURE" name="picture" />
605+ <field type="CARD16" name="filter_len" />
606+ <pad bytes="2" />
607+ <list type="char" name="filter">
608+ <fieldref>filter_len</fieldref>
609+ </list>
610+ <pad align="4" />
611+ <list type="FIXED" name="values" />
612+ </request>
613+
614+ <!-- new in version 0.8 -->
615+
616+ <struct name="ANIMCURSORELT">
617+ <field type="CURSOR" name="cursor" />
618+ <field type="CARD32" name="delay" />
619+ </struct>
620+
621+ <request name="CreateAnimCursor" opcode="31">
622+ <field type="CURSOR" name="cid" />
623+ <list type="ANIMCURSORELT" name="cursors" />
624+ </request>
625+
626+ <!-- new in version 0.9 -->
627+
628+ <struct name="SPANFIX">
629+ <field type="FIXED" name="l" />
630+ <field type="FIXED" name="r" />
631+ <field type="FIXED" name="y" />
632+ </struct>
633+
634+ <struct name="TRAP">
635+ <field type="SPANFIX" name="top" />
636+ <field type="SPANFIX" name="bot" />
637+ </struct>
638+
639+ <request name="AddTraps" opcode="32">
640+ <field type="PICTURE" name="picture" />
641+ <field type="INT16" name="x_off" />
642+ <field type="INT16" name="y_off" />
643+ <list type="TRAP" name="traps" />
644+ </request>
645+
646+ <!-- new in version 0.10 -->
647+
648+ <request name="CreateSolidFill" opcode="33">
649+ <field type="PICTURE" name="picture" />
650+ <field type="COLOR" name="color" />
651+ </request>
652+
653+ <request name="CreateLinearGradient" opcode="34">
654+ <field type="PICTURE" name="picture" />
655+ <field type="POINTFIX" name="p1" />
656+ <field type="POINTFIX" name="p2" />
657+ <field type="CARD32" name="num_stops" />
658+ <list type="FIXED" name="stops">
659+ <fieldref>num_stops</fieldref>
660+ </list>
661+ <list type="COLOR" name="colors">
662+ <fieldref>num_stops</fieldref>
663+ </list>
664+ </request>
665+
666+ <request name="CreateRadialGradient" opcode="35">
667+ <field type="PICTURE" name="picture" />
668+ <field type="POINTFIX" name="inner" />
669+ <field type="POINTFIX" name="outer" />
670+ <field type="FIXED" name="inner_radius" />
671+ <field type="FIXED" name="outer_radius" />
672+ <field type="CARD32" name="num_stops" />
673+ <list type="FIXED" name="stops">
674+ <fieldref>num_stops</fieldref>
675+ </list>
676+ <list type="COLOR" name="colors">
677+ <fieldref>num_stops</fieldref>
678+ </list>
679+ </request>
680+
681+ <request name="CreateConicalGradient" opcode="36">
682+ <field type="PICTURE" name="picture" />
683+ <field type="POINTFIX" name="center" />
684+ <field type="FIXED" name="angle" /> <!-- degrees -->
685+ <field type="CARD32" name="num_stops" />
686+ <list type="FIXED" name="stops">
687+ <fieldref>num_stops</fieldref>
688+ </list>
689+ <list type="COLOR" name="colors">
690+ <fieldref>num_stops</fieldref>
691+ </list>
692+ </request>
693+</xcb>
@@ -0,0 +1,693 @@
1+<?xml version="1.0" encoding="utf-8"?>
2+<!--
3+Copyright (C) 2002-2004 Carl D. Worth, Jamey Sharp, Bart Massey, Josh Triplett
4+All Rights Reserved. See the file COPYING in this directory
5+for licensing information.
6+-->
7+<xcb header="render" extension-xname="RENDER" extension-name="Render"
8+ major-version="0" minor-version="11">
9+ <!-- supports version 0.11 -->
10+
11+ <import>xproto</import>
12+
13+ <enum name="PictType">
14+ <item name="Indexed"> <value>0</value> </item>
15+ <item name="Direct"> <value>1</value> </item>
16+ </enum>
17+
18+ <enum name="Picture">
19+ <item name="None"> <value>0</value> </item>
20+ </enum>
21+
22+ <!-- Disjoint* and Conjoint* are new in version 0.2 -->
23+ <!-- PDF blend modes are new in version 0.11 -->
24+ <enum name="PictOp">
25+ <item name="Clear"> <value>0</value> </item>
26+ <item name="Src"> <value>1</value> </item>
27+ <item name="Dst"> <value>2</value> </item>
28+ <item name="Over"> <value>3</value> </item>
29+ <item name="OverReverse"> <value>4</value> </item>
30+ <item name="In"> <value>5</value> </item>
31+ <item name="InReverse"> <value>6</value> </item>
32+ <item name="Out"> <value>7</value> </item>
33+ <item name="OutReverse"> <value>8</value> </item>
34+ <item name="Atop"> <value>9</value> </item>
35+ <item name="AtopReverse"> <value>10</value> </item>
36+ <item name="Xor"> <value>11</value> </item>
37+ <item name="Add"> <value>12</value> </item>
38+ <item name="Saturate"> <value>13</value> </item>
39+
40+ <item name="DisjointClear"> <value>16</value></item>
41+ <item name="DisjointSrc"> <value>17</value> </item>
42+ <item name="DisjointDst"> <value>18</value> </item>
43+ <item name="DisjointOver"> <value>19</value> </item>
44+ <item name="DisjointOverReverse"> <value>20</value> </item>
45+ <item name="DisjointIn"> <value>21</value> </item>
46+ <item name="DisjointInReverse"> <value>22</value> </item>
47+ <item name="DisjointOut"> <value>23</value> </item>
48+ <item name="DisjointOutReverse"> <value>24</value> </item>
49+ <item name="DisjointAtop"> <value>25</value> </item>
50+ <item name="DisjointAtopReverse"> <value>26</value> </item>
51+ <item name="DisjointXor"> <value>27</value> </item>
52+
53+ <item name="ConjointClear"> <value>32</value></item>
54+ <item name="ConjointSrc"> <value>33</value> </item>
55+ <item name="ConjointDst"> <value>34</value> </item>
56+ <item name="ConjointOver"> <value>35</value> </item>
57+ <item name="ConjointOverReverse"> <value>36</value> </item>
58+ <item name="ConjointIn"> <value>37</value> </item>
59+ <item name="ConjointInReverse"> <value>38</value> </item>
60+ <item name="ConjointOut"> <value>39</value> </item>
61+ <item name="ConjointOutReverse"> <value>40</value> </item>
62+ <item name="ConjointAtop"> <value>41</value> </item>
63+ <item name="ConjointAtopReverse"> <value>42</value> </item>
64+ <item name="ConjointXor"> <value>43</value> </item>
65+
66+ <!-- PDF blend modes are new in version 0.11 -->
67+ <item name="Multiply"> <value>48</value></item>
68+ <item name="Screen"> <value>49</value> </item>
69+ <item name="Overlay"> <value>50</value> </item>
70+ <item name="Darken"> <value>51</value> </item>
71+ <item name="Lighten"> <value>52</value> </item>
72+ <item name="ColorDodge"> <value>53</value> </item>
73+ <item name="ColorBurn"> <value>54</value> </item>
74+ <item name="HardLight"> <value>55</value> </item>
75+ <item name="SoftLight"> <value>56</value> </item>
76+ <item name="Difference"> <value>57</value> </item>
77+ <item name="Exclusion"> <value>58</value> </item>
78+ <item name="HSLHue"> <value>59</value> </item>
79+ <item name="HSLSaturation"> <value>60</value> </item>
80+ <item name="HSLColor"> <value>61</value> </item>
81+ <item name="HSLLuminosity"> <value>62</value> </item>
82+ </enum>
83+
84+ <enum name="PolyEdge">
85+ <item name="Sharp"> <value>0</value> </item>
86+ <item name="Smooth"> <value>1</value> </item>
87+ </enum>
88+
89+ <enum name="PolyMode">
90+ <item name="Precise"> <value>0</value> </item>
91+ <item name="Imprecise"> <value>1</value> </item>
92+ </enum>
93+
94+ <enum name="CP">
95+ <item name="Repeat"> <bit>0</bit></item>
96+ <item name="AlphaMap"> <bit>1</bit></item>
97+ <item name="AlphaXOrigin"> <bit>2</bit></item>
98+ <item name="AlphaYOrigin"> <bit>3</bit></item>
99+ <item name="ClipXOrigin"> <bit>4</bit></item>
100+ <item name="ClipYOrigin"> <bit>5</bit></item>
101+ <item name="ClipMask"> <bit>6</bit></item>
102+ <item name="GraphicsExposure"><bit>7</bit></item>
103+ <item name="SubwindowMode"> <bit>8</bit></item>
104+ <item name="PolyEdge"> <bit>9</bit></item>
105+ <item name="PolyMode"> <bit>10</bit></item>
106+ <item name="Dither"> <bit>11</bit></item>
107+ <item name="ComponentAlpha"> <bit>12</bit></item>
108+ </enum>
109+
110+ <enum name="SubPixel">
111+ <item name="Unknown"> <value>0</value> </item>
112+ <item name="HorizontalRGB"> <value>1</value> </item>
113+ <item name="HorizontalBGR"> <value>2</value> </item>
114+ <item name="VerticalRGB"> <value>3</value> </item>
115+ <item name="VerticalBGR"> <value>4</value> </item>
116+ <item name="None"> <value>5</value> </item>
117+ </enum>
118+
119+ <!-- Extended repeat attributes introduced in 0.10 -->
120+ <enum name="Repeat">
121+ <item name="None"> <value>0</value> </item>
122+ <item name="Normal"> <value>1</value> </item>
123+ <item name="Pad"> <value>2</value> </item>
124+ <item name="Reflect"> <value>3</value> </item>
125+ </enum>
126+
127+ <typedef oldname="CARD32" newname="GLYPH" />
128+ <xidtype name="GLYPHSET" />
129+
130+ <xidtype name="PICTURE" />
131+ <xidtype name="PICTFORMAT" />
132+
133+ <typedef oldname="INT32" newname="FIXED" />
134+
135+ <error name="PictFormat" number="0" />
136+ <error name="Picture" number="1" />
137+ <error name="PictOp" number="2" />
138+ <error name="GlyphSet" number="3" />
139+ <error name="Glyph" number="4" />
140+
141+ <struct name="DIRECTFORMAT">
142+ <field type="CARD16" name="red_shift" />
143+ <field type="CARD16" name="red_mask" />
144+ <field type="CARD16" name="green_shift" />
145+ <field type="CARD16" name="green_mask" />
146+ <field type="CARD16" name="blue_shift" />
147+ <field type="CARD16" name="blue_mask" />
148+ <field type="CARD16" name="alpha_shift" />
149+ <field type="CARD16" name="alpha_mask" />
150+ </struct>
151+
152+ <struct name="PICTFORMINFO">
153+ <field type="PICTFORMAT" name="id" />
154+ <field type="CARD8" name="type" enum="PictType" />
155+ <field type="CARD8" name="depth" />
156+ <pad bytes="2" />
157+ <field type="DIRECTFORMAT" name="direct" />
158+ <field type="COLORMAP" name="colormap" />
159+ </struct>
160+
161+ <struct name="PICTVISUAL">
162+ <field type="VISUALID" name="visual" />
163+ <field type="PICTFORMAT" name="format" />
164+ </struct>
165+
166+ <struct name="PICTDEPTH">
167+ <field type="CARD8" name="depth" />
168+ <pad bytes="1" />
169+ <field type="CARD16" name="num_visuals" />
170+ <pad bytes="4" />
171+ <list type="PICTVISUAL" name="visuals">
172+ <fieldref>num_visuals</fieldref>
173+ </list>
174+ </struct>
175+
176+ <struct name="PICTSCREEN">
177+ <field type="CARD32" name="num_depths" />
178+ <field type="PICTFORMAT" name="fallback" />
179+ <list type="PICTDEPTH" name="depths">
180+ <fieldref>num_depths</fieldref>
181+ </list>
182+ </struct>
183+
184+ <struct name="INDEXVALUE">
185+ <field type="CARD32" name="pixel" />
186+ <field type="CARD16" name="red" />
187+ <field type="CARD16" name="green" />
188+ <field type="CARD16" name="blue" />
189+ <field type="CARD16" name="alpha" />
190+ </struct>
191+
192+ <struct name="COLOR">
193+ <field type="CARD16" name="red" />
194+ <field type="CARD16" name="green" />
195+ <field type="CARD16" name="blue" />
196+ <field type="CARD16" name="alpha" />
197+ </struct>
198+
199+ <struct name="POINTFIX">
200+ <field type="FIXED" name="x" />
201+ <field type="FIXED" name="y" />
202+ </struct>
203+
204+ <struct name="LINEFIX">
205+ <field type="POINTFIX" name="p1" />
206+ <field type="POINTFIX" name="p2" />
207+ </struct>
208+
209+ <struct name="TRIANGLE">
210+ <field type="POINTFIX" name="p1" />
211+ <field type="POINTFIX" name="p2" />
212+ <field type="POINTFIX" name="p3" />
213+ </struct>
214+
215+ <struct name="TRAPEZOID">
216+ <field type="FIXED" name="top" />
217+ <field type="FIXED" name="bottom" />
218+ <field type="LINEFIX" name="left" />
219+ <field type="LINEFIX" name="right" />
220+ </struct>
221+
222+ <struct name="GLYPHINFO">
223+ <field type="CARD16" name="width" />
224+ <field type="CARD16" name="height" />
225+ <field type="INT16" name="x" />
226+ <field type="INT16" name="y" />
227+ <field type="INT16" name="x_off" />
228+ <field type="INT16" name="y_off" />
229+ </struct>
230+
231+
232+ <request name="QueryVersion" opcode="0">
233+ <field type="CARD32" name="client_major_version" />
234+ <field type="CARD32" name="client_minor_version" />
235+ <reply>
236+ <pad bytes="1" />
237+ <field type="CARD32" name="major_version" />
238+ <field type="CARD32" name="minor_version" />
239+ <pad bytes="16" />
240+ </reply>
241+ </request>
242+
243+ <request name="QueryPictFormats" opcode="1">
244+ <reply>
245+ <pad bytes="1" />
246+ <field type="CARD32" name="num_formats" />
247+ <field type="CARD32" name="num_screens" />
248+ <field type="CARD32" name="num_depths" />
249+ <field type="CARD32" name="num_visuals" />
250+ <field type="CARD32" name="num_subpixel" /> <!-- new in version 0.6 -->
251+ <pad bytes="4" />
252+ <list type="PICTFORMINFO" name="formats">
253+ <fieldref>num_formats</fieldref>
254+ </list>
255+ <list type="PICTSCREEN" name="screens">
256+ <fieldref>num_screens</fieldref>
257+ </list>
258+ <list type="CARD32" name="subpixels" enum="SubPixel" >
259+ <fieldref>num_subpixel</fieldref>
260+ </list>
261+ </reply>
262+ </request>
263+
264+ <!-- from version 0.7 -->
265+ <request name="QueryPictIndexValues" opcode="2">
266+ <field type="PICTFORMAT" name="format" />
267+ <reply>
268+ <pad bytes="1" />
269+ <field type="CARD32" name="num_values" />
270+ <pad bytes="20" />
271+ <list type="INDEXVALUE" name="values">
272+ <fieldref>num_values</fieldref>
273+ </list>
274+ </reply>
275+ </request>
276+
277+ <!-- opcode 3 reserved for QueryDithers -->
278+
279+ <request name="CreatePicture" opcode="4">
280+ <field type="PICTURE" name="pid" />
281+ <field type="DRAWABLE" name="drawable" />
282+ <field type="PICTFORMAT" name="format" />
283+ <field type="CARD32" name="value_mask" mask="CP"/>
284+ <switch name="value_list">
285+ <fieldref>value_mask</fieldref>
286+ <bitcase>
287+ <enumref ref="CP">Repeat</enumref>
288+ <field type="CARD32" name="repeat" enum="Repeat"/>
289+ </bitcase>
290+ <bitcase>
291+ <enumref ref="CP">AlphaMap</enumref>
292+ <field type="PICTURE" name="alphamap" />
293+ </bitcase>
294+ <bitcase>
295+ <enumref ref="CP">AlphaXOrigin</enumref>
296+ <field type="INT32" name="alphaxorigin" />
297+ </bitcase>
298+ <bitcase>
299+ <enumref ref="CP">AlphaYOrigin</enumref>
300+ <field type="INT32" name="alphayorigin" />
301+ </bitcase>
302+ <bitcase>
303+ <enumref ref="CP">ClipXOrigin</enumref>
304+ <field type="INT32" name="clipxorigin" />
305+ </bitcase>
306+ <bitcase>
307+ <enumref ref="CP">ClipYOrigin</enumref>
308+ <field type="INT32" name="clipyorigin" />
309+ </bitcase>
310+ <bitcase>
311+ <enumref ref="CP">ClipMask</enumref>
312+ <field type="PIXMAP" name="clipmask" />
313+ </bitcase>
314+ <bitcase>
315+ <enumref ref="CP">GraphicsExposure</enumref>
316+ <field type="CARD32" name="graphicsexposure" />
317+ </bitcase>
318+ <bitcase>
319+ <enumref ref="CP">SubwindowMode</enumref>
320+ <field type="CARD32" name="subwindowmode" enum="SubwindowMode"/>
321+ </bitcase>
322+ <bitcase>
323+ <enumref ref="CP">PolyEdge</enumref>
324+ <field type="CARD32" name="polyedge" enum="PolyEdge"/>
325+ </bitcase>
326+ <bitcase>
327+ <enumref ref="CP">PolyMode</enumref>
328+ <field type="CARD32" name="polymode" enum="PolyMode"/>
329+ </bitcase>
330+ <bitcase>
331+ <enumref ref="CP">Dither</enumref>
332+ <field type="ATOM" name="dither" />
333+ </bitcase>
334+ <bitcase>
335+ <enumref ref="CP">ComponentAlpha</enumref>
336+ <field type="CARD32" name="componentalpha" />
337+ </bitcase>
338+ </switch>
339+ </request>
340+
341+ <request name="ChangePicture" opcode="5">
342+ <field type="PICTURE" name="picture" />
343+ <field type="CARD32" name="value_mask" mask="CP"/>
344+ <switch name="value_list">
345+ <fieldref>value_mask</fieldref>
346+ <bitcase>
347+ <enumref ref="CP">Repeat</enumref>
348+ <field type="CARD32" name="repeat" enum="Repeat"/>
349+ </bitcase>
350+ <bitcase>
351+ <enumref ref="CP">AlphaMap</enumref>
352+ <field type="PICTURE" name="alphamap" />
353+ </bitcase>
354+ <bitcase>
355+ <enumref ref="CP">AlphaXOrigin</enumref>
356+ <field type="INT32" name="alphaxorigin" />
357+ </bitcase>
358+ <bitcase>
359+ <enumref ref="CP">AlphaYOrigin</enumref>
360+ <field type="INT32" name="alphayorigin" />
361+ </bitcase>
362+ <bitcase>
363+ <enumref ref="CP">ClipXOrigin</enumref>
364+ <field type="INT32" name="clipxorigin" />
365+ </bitcase>
366+ <bitcase>
367+ <enumref ref="CP">ClipYOrigin</enumref>
368+ <field type="INT32" name="clipyorigin" />
369+ </bitcase>
370+ <bitcase>
371+ <enumref ref="CP">ClipMask</enumref>
372+ <field type="PIXMAP" name="clipmask" />
373+ </bitcase>
374+ <bitcase>
375+ <enumref ref="CP">GraphicsExposure</enumref>
376+ <field type="CARD32" name="graphicsexposure" />
377+ </bitcase>
378+ <bitcase>
379+ <enumref ref="CP">SubwindowMode</enumref>
380+ <field type="CARD32" name="subwindowmode" enum="SubwindowMode"/>
381+ </bitcase>
382+ <bitcase>
383+ <enumref ref="CP">PolyEdge</enumref>
384+ <field type="CARD32" name="polyedge" enum="PolyEdge"/>
385+ </bitcase>
386+ <bitcase>
387+ <enumref ref="CP">PolyMode</enumref>
388+ <field type="CARD32" name="polymode" enum="PolyMode"/>
389+ </bitcase>
390+ <bitcase>
391+ <enumref ref="CP">Dither</enumref>
392+ <field type="ATOM" name="dither" />
393+ </bitcase>
394+ <bitcase>
395+ <enumref ref="CP">ComponentAlpha</enumref>
396+ <field type="CARD32" name="componentalpha" />
397+ </bitcase>
398+ </switch>
399+ </request>
400+
401+ <request name="SetPictureClipRectangles" opcode="6">
402+ <field type="PICTURE" name="picture" />
403+ <field type="INT16" name="clip_x_origin" />
404+ <field type="INT16" name="clip_y_origin" />
405+ <list type="RECTANGLE" name="rectangles" />
406+ </request>
407+
408+ <request name="FreePicture" opcode="7">
409+ <field type="PICTURE" name="picture" />
410+ </request>
411+
412+ <request name="Composite" opcode="8">
413+ <field type="CARD8" name="op" enum="PictOp" />
414+ <pad bytes="3" />
415+ <field type="PICTURE" name="src" />
416+ <field type="PICTURE" name="mask" altenum="Picture" />
417+ <field type="PICTURE" name="dst" />
418+ <field type="INT16" name="src_x" />
419+ <field type="INT16" name="src_y" />
420+ <field type="INT16" name="mask_x" />
421+ <field type="INT16" name="mask_y" />
422+ <field type="INT16" name="dst_x" />
423+ <field type="INT16" name="dst_y" />
424+ <field type="CARD16" name="width" />
425+ <field type="CARD16" name="height" />
426+ </request>
427+
428+ <!-- opcode 9 reserved for Scale -->
429+
430+ <request name="Trapezoids" opcode="10">
431+ <field type="CARD8" name="op" enum="PictOp" />
432+ <pad bytes="3" />
433+ <field type="PICTURE" name="src" />
434+ <field type="PICTURE" name="dst" />
435+ <field type="PICTFORMAT" name="mask_format" />
436+ <field type="INT16" name="src_x" />
437+ <field type="INT16" name="src_y" />
438+ <list type="TRAPEZOID" name="traps" />
439+ </request>
440+
441+ <request name="Triangles" opcode="11">
442+ <field type="CARD8" name="op" enum="PictOp" />
443+ <pad bytes="3" />
444+ <field type="PICTURE" name="src" />
445+ <field type="PICTURE" name="dst" />
446+ <field type="PICTFORMAT" name="mask_format" />
447+ <field type="INT16" name="src_x" />
448+ <field type="INT16" name="src_y" />
449+ <list type="TRIANGLE" name="triangles" />
450+ </request>
451+
452+ <request name="TriStrip" opcode="12">
453+ <field type="CARD8" name="op" enum="PictOp" />
454+ <pad bytes="3" />
455+ <field type="PICTURE" name="src" />
456+ <field type="PICTURE" name="dst" />
457+ <field type="PICTFORMAT" name="mask_format" />
458+ <field type="INT16" name="src_x" />
459+ <field type="INT16" name="src_y" />
460+ <list type="POINTFIX" name="points" />
461+ </request>
462+
463+ <request name="TriFan" opcode="13">
464+ <field type="CARD8" name="op" enum="PictOp" />
465+ <pad bytes="3" />
466+ <field type="PICTURE" name="src" />
467+ <field type="PICTURE" name="dst" />
468+ <field type="PICTFORMAT" name="mask_format" />
469+ <field type="INT16" name="src_x" />
470+ <field type="INT16" name="src_y" />
471+ <list type="POINTFIX" name="points" />
472+ </request>
473+
474+ <!-- opcode 14 reserved for ColorTrapezoids -->
475+
476+ <!-- opcode 15 reserved for ColorTriangles -->
477+
478+ <!-- opcode 16 reserved for Transform -->
479+
480+ <request name="CreateGlyphSet" opcode="17">
481+ <field type="GLYPHSET" name="gsid" />
482+ <field type="PICTFORMAT" name="format" />
483+ </request>
484+
485+ <request name="ReferenceGlyphSet" opcode="18">
486+ <field type="GLYPHSET" name="gsid" />
487+ <field type="GLYPHSET" name="existing" />
488+ </request>
489+
490+ <request name="FreeGlyphSet" opcode="19">
491+ <field type="GLYPHSET" name="glyphset" />
492+ </request>
493+
494+ <request name="AddGlyphs" opcode="20">
495+ <field type="GLYPHSET" name="glyphset" />
496+ <field type="CARD32" name="glyphs_len" />
497+ <list type="CARD32" name="glyphids">
498+ <fieldref>glyphs_len</fieldref>
499+ </list>
500+ <list type="GLYPHINFO" name="glyphs">
501+ <fieldref>glyphs_len</fieldref>
502+ </list>
503+ <list type="BYTE" name="data" />
504+ </request>
505+
506+ <!-- opcode 21 reserved for AddGlyphsFromPicture -->
507+
508+ <request name="FreeGlyphs" opcode="22">
509+ <field type="GLYPHSET" name="glyphset" />
510+ <list type="GLYPH" name="glyphs" />
511+ </request>
512+
513+ <request name="CompositeGlyphs8" opcode="23">
514+ <field type="CARD8" name="op" enum="PictOp" />
515+ <pad bytes="3" />
516+ <field type="PICTURE" name="src" />
517+ <field type="PICTURE" name="dst" />
518+ <field type="PICTFORMAT" name="mask_format" />
519+ <field type="GLYPHSET" name="glyphset" />
520+ <field type="INT16" name="src_x" />
521+ <field type="INT16" name="src_y" />
522+ <list type="BYTE" name="glyphcmds" />
523+ </request>
524+
525+ <request name="CompositeGlyphs16" opcode="24">
526+ <field type="CARD8" name="op" enum="PictOp" />
527+ <pad bytes="3" />
528+ <field type="PICTURE" name="src" />
529+ <field type="PICTURE" name="dst" />
530+ <field type="PICTFORMAT" name="mask_format" />
531+ <field type="GLYPHSET" name="glyphset" />
532+ <field type="INT16" name="src_x" />
533+ <field type="INT16" name="src_y" />
534+ <list type="BYTE" name="glyphcmds" />
535+ </request>
536+
537+ <request name="CompositeGlyphs32" opcode="25">
538+ <field type="CARD8" name="op" enum="PictOp" />
539+ <pad bytes="3" />
540+ <field type="PICTURE" name="src" />
541+ <field type="PICTURE" name="dst" />
542+ <field type="PICTFORMAT" name="mask_format" />
543+ <field type="GLYPHSET" name="glyphset" />
544+ <field type="INT16" name="src_x" />
545+ <field type="INT16" name="src_y" />
546+ <list type="BYTE" name="glyphcmds" />
547+ </request>
548+
549+ <!-- new in version 0.1 -->
550+
551+ <request name="FillRectangles" opcode="26">
552+ <field type="CARD8" name="op" enum="PictOp" />
553+ <pad bytes="3" />
554+ <field type="PICTURE" name="dst" />
555+ <field type="COLOR" name="color" />
556+ <list type="RECTANGLE" name="rects" />
557+ </request>
558+
559+ <!-- new in version 0.5 -->
560+
561+ <request name="CreateCursor" opcode="27">
562+ <field type="CURSOR" name="cid" />
563+ <field type="PICTURE" name="source" />
564+ <field type="CARD16" name="x" />
565+ <field type="CARD16" name="y" />
566+ </request>
567+
568+ <!-- new in version 0.6 -->
569+
570+ <struct name="TRANSFORM">
571+ <field type="FIXED" name="matrix11" />
572+ <field type="FIXED" name="matrix12" />
573+ <field type="FIXED" name="matrix13" />
574+ <field type="FIXED" name="matrix21" />
575+ <field type="FIXED" name="matrix22" />
576+ <field type="FIXED" name="matrix23" />
577+ <field type="FIXED" name="matrix31" />
578+ <field type="FIXED" name="matrix32" />
579+ <field type="FIXED" name="matrix33" />
580+ </struct>
581+
582+ <request name="SetPictureTransform" opcode="28">
583+ <field type="PICTURE" name="picture" />
584+ <field type="TRANSFORM" name="transform" />
585+ </request>
586+
587+ <request name="QueryFilters" opcode="29">
588+ <field type="DRAWABLE" name="drawable" />
589+ <reply>
590+ <pad bytes="1" />
591+ <field type="CARD32" name="num_aliases" />
592+ <field type="CARD32" name="num_filters" />
593+ <pad bytes="16" />
594+ <list type="CARD16" name="aliases">
595+ <fieldref>num_aliases</fieldref>
596+ </list>
597+ <list type="STR" name="filters">
598+ <fieldref>num_filters</fieldref>
599+ </list>
600+ </reply>
601+ </request>
602+
603+ <request name="SetPictureFilter" opcode="30">
604+ <field type="PICTURE" name="picture" />
605+ <field type="CARD16" name="filter_len" />
606+ <pad bytes="2" />
607+ <list type="char" name="filter">
608+ <fieldref>filter_len</fieldref>
609+ </list>
610+ <pad align="4" />
611+ <list type="FIXED" name="values" />
612+ </request>
613+
614+ <!-- new in version 0.8 -->
615+
616+ <struct name="ANIMCURSORELT">
617+ <field type="CURSOR" name="cursor" />
618+ <field type="CARD32" name="delay" />
619+ </struct>
620+
621+ <request name="CreateAnimCursor" opcode="31">
622+ <field type="CURSOR" name="cid" />
623+ <list type="ANIMCURSORELT" name="cursors" />
624+ </request>
625+
626+ <!-- new in version 0.9 -->
627+
628+ <struct name="SPANFIX">
629+ <field type="FIXED" name="l" />
630+ <field type="FIXED" name="r" />
631+ <field type="FIXED" name="y" />
632+ </struct>
633+
634+ <struct name="TRAP">
635+ <field type="SPANFIX" name="top" />
636+ <field type="SPANFIX" name="bot" />
637+ </struct>
638+
639+ <request name="AddTraps" opcode="32">
640+ <field type="PICTURE" name="picture" />
641+ <field type="INT16" name="x_off" />
642+ <field type="INT16" name="y_off" />
643+ <list type="TRAP" name="traps" />
644+ </request>
645+
646+ <!-- new in version 0.10 -->
647+
648+ <request name="CreateSolidFill" opcode="33">
649+ <field type="PICTURE" name="picture" />
650+ <field type="COLOR" name="color" />
651+ </request>
652+
653+ <request name="CreateLinearGradient" opcode="34">
654+ <field type="PICTURE" name="picture" />
655+ <field type="POINTFIX" name="p1" />
656+ <field type="POINTFIX" name="p2" />
657+ <field type="CARD32" name="num_stops" />
658+ <list type="FIXED" name="stops">
659+ <fieldref>num_stops</fieldref>
660+ </list>
661+ <list type="COLOR" name="colors">
662+ <fieldref>num_stops</fieldref>
663+ </list>
664+ </request>
665+
666+ <request name="CreateRadialGradient" opcode="35">
667+ <field type="PICTURE" name="picture" />
668+ <field type="POINTFIX" name="inner" />
669+ <field type="POINTFIX" name="outer" />
670+ <field type="FIXED" name="inner_radius" />
671+ <field type="FIXED" name="outer_radius" />
672+ <field type="CARD32" name="num_stops" />
673+ <list type="FIXED" name="stops">
674+ <fieldref>num_stops</fieldref>
675+ </list>
676+ <list type="COLOR" name="colors">
677+ <fieldref>num_stops</fieldref>
678+ </list>
679+ </request>
680+
681+ <request name="CreateConicalGradient" opcode="36">
682+ <field type="PICTURE" name="picture" />
683+ <field type="POINTFIX" name="center" />
684+ <field type="FIXED" name="angle" /> <!-- degrees -->
685+ <field type="CARD32" name="num_stops" />
686+ <list type="FIXED" name="stops">
687+ <fieldref>num_stops</fieldref>
688+ </list>
689+ <list type="COLOR" name="colors">
690+ <fieldref>num_stops</fieldref>
691+ </list>
692+ </request>
693+</xcb>
A spec/xml/res.xml +164 -0
@@ -0,0 +1,164 @@
1+<?xml version="1.0" encoding="utf-8"?>
2+<!--
3+Copyright (C) 2006 Jeremy Kolb
4+All Rights Reserved.
5+
6+Permission is hereby granted, free of charge, to any person obtaining a copy
7+of this software and associated documentation files (the "Software"), to deal
8+in the Software without restriction, including without limitation the rights
9+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10+copies of the Software, and to permit persons to whom the Software is
11+furnished to do so, subject to the following conditions:
12+
13+The above copyright notice and this permission notice shall be included in all
14+copies or substantial portions of the Software.
15+
16+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22+
23+Except as contained in this notice, the names of the authors or their
24+institutions shall not be used in advertising or otherwise to promote the
25+sale, use or other dealings in this Software without prior written
26+authorization from the authors.
27+-->
28+<xcb header="res" extension-xname="X-Resource" extension-name="Res"
29+ major-version="1" minor-version="2">
30+ <import>xproto</import>
31+
32+ <!-- v1.0 -->
33+ <struct name="Client">
34+ <field type="CARD32" name="resource_base" />
35+ <field type="CARD32" name="resource_mask" />
36+ </struct>
37+
38+ <struct name="Type">
39+ <field type="ATOM" name="resource_type" />
40+ <field type="CARD32" name="count" />
41+ </struct>
42+
43+ <!-- v1.2 -->
44+ <enum name="ClientIdMask">
45+ <item name="ClientXID"> <bit>0</bit> </item>
46+ <item name="LocalClientPID"> <bit>1</bit> </item>
47+ </enum>
48+
49+ <struct name="ClientIdSpec">
50+ <field type="CARD32" name="client" />
51+ <field type="CARD32" name="mask" mask="ClientIdMask" />
52+ </struct>
53+
54+ <struct name="ClientIdValue">
55+ <field type="ClientIdSpec" name="spec" />
56+ <field type="CARD32" name="length" />
57+ <list type="CARD32" name="value">
58+ <!-- The specification says that the length is in units of CARD32,
59+ but the specification also says that the length is 4 when a
60+ single LocalClientPid is present (ie. the length is in bytes).
61+ The current server implementation sets the length to 4 when a
62+ single CARD32 is present on the wire (length is in bytes). -->
63+ <op op="/">
64+ <fieldref>length</fieldref>
65+ <value>4</value>
66+ </op>
67+ </list>
68+ </struct>
69+
70+ <struct name="ResourceIdSpec">
71+ <field type="CARD32" name="resource" />
72+ <field type="CARD32" name="type" />
73+ </struct>
74+
75+ <struct name="ResourceSizeSpec">
76+ <field type="ResourceIdSpec" name="spec" />
77+ <field type="CARD32" name="bytes" />
78+ <field type="CARD32" name="ref_count" />
79+ <field type="CARD32" name="use_count" />
80+ </struct>
81+
82+ <struct name="ResourceSizeValue">
83+ <field type="ResourceSizeSpec" name="size" />
84+ <field type="CARD32" name="num_cross_references" />
85+ <list type="ResourceSizeSpec" name="cross_references">
86+ <fieldref>num_cross_references</fieldref>
87+ </list>
88+ </struct>
89+
90+ <!-- v1.0 -->
91+ <request name="QueryVersion" opcode="0">
92+ <field type="CARD8" name="client_major" />
93+ <field type="CARD8" name="client_minor" />
94+ <reply>
95+ <pad bytes="1" />
96+ <field type="CARD16" name="server_major" />
97+ <field type="CARD16" name="server_minor" />
98+ </reply>
99+ </request>
100+
101+ <request name="QueryClients" opcode="1">
102+ <reply>
103+ <pad bytes="1" />
104+ <field type="CARD32" name="num_clients" />
105+ <pad bytes="20" />
106+ <list type="Client" name="clients">
107+ <fieldref>num_clients</fieldref>
108+ </list>
109+ </reply>
110+ </request>
111+
112+ <request name="QueryClientResources" opcode="2">
113+ <field type="CARD32" name="xid" />
114+ <reply>
115+ <pad bytes="1" />
116+ <field type="CARD32" name="num_types" />
117+ <pad bytes="20" />
118+ <list type="Type" name="types">
119+ <fieldref>num_types</fieldref>
120+ </list>
121+ </reply>
122+ </request>
123+
124+ <request name="QueryClientPixmapBytes" opcode="3">
125+ <field type="CARD32" name="xid" />
126+ <reply>
127+ <pad bytes="1" />
128+ <field type="CARD32" name="bytes" />
129+ <field type="CARD32" name="bytes_overflow" />
130+ </reply>
131+ </request>
132+
133+ <!-- v1.2 -->
134+ <request name="QueryClientIds" opcode="4">
135+ <field type="CARD32" name="num_specs" />
136+ <list type="ClientIdSpec" name="specs">
137+ <fieldref>num_specs</fieldref>
138+ </list>
139+ <reply>
140+ <pad bytes="1" />
141+ <field type="CARD32" name="num_ids" />
142+ <pad bytes="20" />
143+ <list type="ClientIdValue" name="ids">
144+ <fieldref>num_ids</fieldref>
145+ </list>
146+ </reply>
147+ </request>
148+
149+ <request name="QueryResourceBytes" opcode="5">
150+ <field type="CARD32" name="client" />
151+ <field type="CARD32" name="num_specs" />
152+ <list type="ResourceIdSpec" name="specs">
153+ <fieldref>num_specs</fieldref>
154+ </list>
155+ <reply>
156+ <pad bytes="1" />
157+ <field type="CARD32" name="num_sizes" />
158+ <pad bytes="20" />
159+ <list type="ResourceSizeValue" name="sizes">
160+ <fieldref>num_sizes</fieldref>
161+ </list>
162+ </reply>
163+ </request>
164+</xcb>
@@ -0,0 +1,164 @@
1+<?xml version="1.0" encoding="utf-8"?>
2+<!--
3+Copyright (C) 2006 Jeremy Kolb
4+All Rights Reserved.
5+
6+Permission is hereby granted, free of charge, to any person obtaining a copy
7+of this software and associated documentation files (the "Software"), to deal
8+in the Software without restriction, including without limitation the rights
9+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10+copies of the Software, and to permit persons to whom the Software is
11+furnished to do so, subject to the following conditions:
12+
13+The above copyright notice and this permission notice shall be included in all
14+copies or substantial portions of the Software.
15+
16+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22+
23+Except as contained in this notice, the names of the authors or their
24+institutions shall not be used in advertising or otherwise to promote the
25+sale, use or other dealings in this Software without prior written
26+authorization from the authors.
27+-->
28+<xcb header="res" extension-xname="X-Resource" extension-name="Res"
29+ major-version="1" minor-version="2">
30+ <import>xproto</import>
31+
32+ <!-- v1.0 -->
33+ <struct name="Client">
34+ <field type="CARD32" name="resource_base" />
35+ <field type="CARD32" name="resource_mask" />
36+ </struct>
37+
38+ <struct name="Type">
39+ <field type="ATOM" name="resource_type" />
40+ <field type="CARD32" name="count" />
41+ </struct>
42+
43+ <!-- v1.2 -->
44+ <enum name="ClientIdMask">
45+ <item name="ClientXID"> <bit>0</bit> </item>
46+ <item name="LocalClientPID"> <bit>1</bit> </item>
47+ </enum>
48+
49+ <struct name="ClientIdSpec">
50+ <field type="CARD32" name="client" />
51+ <field type="CARD32" name="mask" mask="ClientIdMask" />
52+ </struct>
53+
54+ <struct name="ClientIdValue">
55+ <field type="ClientIdSpec" name="spec" />
56+ <field type="CARD32" name="length" />
57+ <list type="CARD32" name="value">
58+ <!-- The specification says that the length is in units of CARD32,
59+ but the specification also says that the length is 4 when a
60+ single LocalClientPid is present (ie. the length is in bytes).
61+ The current server implementation sets the length to 4 when a
62+ single CARD32 is present on the wire (length is in bytes). -->
63+ <op op="/">
64+ <fieldref>length</fieldref>
65+ <value>4</value>
66+ </op>
67+ </list>
68+ </struct>
69+
70+ <struct name="ResourceIdSpec">
71+ <field type="CARD32" name="resource" />
72+ <field type="CARD32" name="type" />
73+ </struct>
74+
75+ <struct name="ResourceSizeSpec">
76+ <field type="ResourceIdSpec" name="spec" />
77+ <field type="CARD32" name="bytes" />
78+ <field type="CARD32" name="ref_count" />
79+ <field type="CARD32" name="use_count" />
80+ </struct>
81+
82+ <struct name="ResourceSizeValue">
83+ <field type="ResourceSizeSpec" name="size" />
84+ <field type="CARD32" name="num_cross_references" />
85+ <list type="ResourceSizeSpec" name="cross_references">
86+ <fieldref>num_cross_references</fieldref>
87+ </list>
88+ </struct>
89+
90+ <!-- v1.0 -->
91+ <request name="QueryVersion" opcode="0">
92+ <field type="CARD8" name="client_major" />
93+ <field type="CARD8" name="client_minor" />
94+ <reply>
95+ <pad bytes="1" />
96+ <field type="CARD16" name="server_major" />
97+ <field type="CARD16" name="server_minor" />
98+ </reply>
99+ </request>
100+
101+ <request name="QueryClients" opcode="1">
102+ <reply>
103+ <pad bytes="1" />
104+ <field type="CARD32" name="num_clients" />
105+ <pad bytes="20" />
106+ <list type="Client" name="clients">
107+ <fieldref>num_clients</fieldref>
108+ </list>
109+ </reply>
110+ </request>
111+
112+ <request name="QueryClientResources" opcode="2">
113+ <field type="CARD32" name="xid" />
114+ <reply>
115+ <pad bytes="1" />
116+ <field type="CARD32" name="num_types" />
117+ <pad bytes="20" />
118+ <list type="Type" name="types">
119+ <fieldref>num_types</fieldref>
120+ </list>
121+ </reply>
122+ </request>
123+
124+ <request name="QueryClientPixmapBytes" opcode="3">
125+ <field type="CARD32" name="xid" />
126+ <reply>
127+ <pad bytes="1" />
128+ <field type="CARD32" name="bytes" />
129+ <field type="CARD32" name="bytes_overflow" />
130+ </reply>
131+ </request>
132+
133+ <!-- v1.2 -->
134+ <request name="QueryClientIds" opcode="4">
135+ <field type="CARD32" name="num_specs" />
136+ <list type="ClientIdSpec" name="specs">
137+ <fieldref>num_specs</fieldref>
138+ </list>
139+ <reply>
140+ <pad bytes="1" />
141+ <field type="CARD32" name="num_ids" />
142+ <pad bytes="20" />
143+ <list type="ClientIdValue" name="ids">
144+ <fieldref>num_ids</fieldref>
145+ </list>
146+ </reply>
147+ </request>
148+
149+ <request name="QueryResourceBytes" opcode="5">
150+ <field type="CARD32" name="client" />
151+ <field type="CARD32" name="num_specs" />
152+ <list type="ResourceIdSpec" name="specs">
153+ <fieldref>num_specs</fieldref>
154+ </list>
155+ <reply>
156+ <pad bytes="1" />
157+ <field type="CARD32" name="num_sizes" />
158+ <pad bytes="20" />
159+ <list type="ResourceSizeValue" name="sizes">
160+ <fieldref>num_sizes</fieldref>
161+ </list>
162+ </reply>
163+ </request>
164+</xcb>
A spec/xml/shape.xml +155 -0
@@ -0,0 +1,155 @@
1+<?xml version="1.0" encoding="utf-8"?>
2+<!--
3+Copyright (C) 2001-2004 Bart Massey, Jamey Sharp, and Josh Triplett.
4+All Rights Reserved.
5+
6+Permission is hereby granted, free of charge, to any person obtaining a copy
7+of this software and associated documentation files (the "Software"), to deal
8+in the Software without restriction, including without limitation the rights
9+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10+copies of the Software, and to permit persons to whom the Software is
11+furnished to do so, subject to the following conditions:
12+
13+The above copyright notice and this permission notice shall be included in all
14+copies or substantial portions of the Software.
15+
16+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22+
23+Except as contained in this notice, the names of the authors or their
24+institutions shall not be used in advertising or otherwise to promote the
25+sale, use or other dealings in this Software without prior written
26+authorization from the authors.
27+-->
28+<!-- This file describes version 1.1 of the Shape extension. -->
29+<xcb header="shape" extension-xname="SHAPE" extension-name="Shape" major-version="1" minor-version="1">
30+ <import>xproto</import>
31+
32+ <typedef oldname="CARD8" newname="OP" />
33+ <typedef oldname="CARD8" newname="KIND" />
34+
35+ <!-- Shape attributes of type OP. -->
36+ <enum name="SO">
37+ <item name="Set"> <value>0</value> </item>
38+ <item name="Union"> <value>1</value> </item>
39+ <item name="Intersect"> <value>2</value> </item>
40+ <item name="Subtract"> <value>3</value> </item>
41+ <item name="Invert"> <value>4</value> </item>
42+ </enum>
43+
44+ <!-- Shape attributes of type KIND. -->
45+ <enum name="SK">
46+ <item name="Bounding"> <value>0</value> </item>
47+ <item name="Clip"> <value>1</value> </item>
48+ <item name="Input"> <value>2</value> </item> <!-- added in version 1.1 -->
49+ </enum>
50+
51+ <event name="Notify" number="0">
52+ <field type="KIND" name="shape_kind" enum="SK" />
53+ <field type="WINDOW" name="affected_window" />
54+ <field type="INT16" name="extents_x" />
55+ <field type="INT16" name="extents_y" />
56+ <field type="CARD16" name="extents_width" />
57+ <field type="CARD16" name="extents_height" />
58+ <field type="TIMESTAMP" name="server_time" />
59+ <field type="BOOL" name="shaped" />
60+ <pad bytes="11" />
61+ </event>
62+
63+ <request name="QueryVersion" opcode="0">
64+ <reply>
65+ <pad bytes="1" />
66+ <field type="CARD16" name="major_version" />
67+ <field type="CARD16" name="minor_version" />
68+ </reply>
69+ </request>
70+
71+ <request name="Rectangles" opcode="1">
72+ <field type="OP" name="operation" enum="SO" />
73+ <field type="KIND" name="destination_kind" enum="SK" />
74+ <field type="BYTE" name="ordering" enum="ClipOrdering" />
75+ <pad bytes="1" />
76+ <field type="WINDOW" name="destination_window" />
77+ <field type="INT16" name="x_offset" />
78+ <field type="INT16" name="y_offset" />
79+ <list type="RECTANGLE" name="rectangles" />
80+ </request>
81+
82+ <request name="Mask" opcode="2">
83+ <field type="OP" name="operation" enum="SO" />
84+ <field type="KIND" name="destination_kind" enum="SK" />
85+ <pad bytes="2" />
86+ <field type="WINDOW" name="destination_window" />
87+ <field type="INT16" name="x_offset" />
88+ <field type="INT16" name="y_offset" />
89+ <field type="PIXMAP" name="source_bitmap" altenum="Pixmap" />
90+ </request>
91+
92+ <request name="Combine" opcode="3">
93+ <field type="OP" name="operation" enum="SO" />
94+ <field type="KIND" name="destination_kind" enum="SK" />
95+ <field type="KIND" name="source_kind" enum="SK" />
96+ <pad bytes="1" />
97+ <field type="WINDOW" name="destination_window" />
98+ <field type="INT16" name="x_offset" />
99+ <field type="INT16" name="y_offset" />
100+ <field type="WINDOW" name="source_window" />
101+ </request>
102+
103+ <request name="Offset" opcode="4">
104+ <field type="KIND" name="destination_kind" enum="SK" />
105+ <pad bytes="3" />
106+ <field type="WINDOW" name="destination_window" />
107+ <field type="INT16" name="x_offset" />
108+ <field type="INT16" name="y_offset" />
109+ </request>
110+
111+ <request name="QueryExtents" opcode="5">
112+ <field type="WINDOW" name="destination_window" />
113+ <reply>
114+ <pad bytes="1" />
115+ <field type="BOOL" name="bounding_shaped" />
116+ <field type="BOOL" name="clip_shaped" />
117+ <pad bytes="2" />
118+ <field type="INT16" name="bounding_shape_extents_x" />
119+ <field type="INT16" name="bounding_shape_extents_y" />
120+ <field type="CARD16" name="bounding_shape_extents_width" />
121+ <field type="CARD16" name="bounding_shape_extents_height" />
122+ <field type="INT16" name="clip_shape_extents_x" />
123+ <field type="INT16" name="clip_shape_extents_y" />
124+ <field type="CARD16" name="clip_shape_extents_width" />
125+ <field type="CARD16" name="clip_shape_extents_height" />
126+ </reply>
127+ </request>
128+
129+ <request name="SelectInput" opcode="6">
130+ <field type="WINDOW" name="destination_window" />
131+ <field type="BOOL" name="enable" />
132+ <pad bytes="3" />
133+ </request>
134+
135+ <request name="InputSelected" opcode="7">
136+ <field type="WINDOW" name="destination_window" />
137+ <reply>
138+ <field type="BOOL" name="enabled" />
139+ </reply>
140+ </request>
141+
142+ <request name="GetRectangles" opcode="8">
143+ <field type="WINDOW" name="window" />
144+ <field type="KIND" name="source_kind" enum="SK" />
145+ <pad bytes="3" />
146+ <reply>
147+ <field type="BYTE" name="ordering" enum="ClipOrdering" />
148+ <field type="CARD32" name="rectangles_len" />
149+ <pad bytes="20" />
150+ <list type="RECTANGLE" name="rectangles">
151+ <fieldref>rectangles_len</fieldref>
152+ </list>
153+ </reply>
154+ </request>
155+</xcb>
@@ -0,0 +1,155 @@
1+<?xml version="1.0" encoding="utf-8"?>
2+<!--
3+Copyright (C) 2001-2004 Bart Massey, Jamey Sharp, and Josh Triplett.
4+All Rights Reserved.
5+
6+Permission is hereby granted, free of charge, to any person obtaining a copy
7+of this software and associated documentation files (the "Software"), to deal
8+in the Software without restriction, including without limitation the rights
9+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10+copies of the Software, and to permit persons to whom the Software is
11+furnished to do so, subject to the following conditions:
12+
13+The above copyright notice and this permission notice shall be included in all
14+copies or substantial portions of the Software.
15+
16+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22+
23+Except as contained in this notice, the names of the authors or their
24+institutions shall not be used in advertising or otherwise to promote the
25+sale, use or other dealings in this Software without prior written
26+authorization from the authors.
27+-->
28+<!-- This file describes version 1.1 of the Shape extension. -->
29+<xcb header="shape" extension-xname="SHAPE" extension-name="Shape" major-version="1" minor-version="1">
30+ <import>xproto</import>
31+
32+ <typedef oldname="CARD8" newname="OP" />
33+ <typedef oldname="CARD8" newname="KIND" />
34+
35+ <!-- Shape attributes of type OP. -->
36+ <enum name="SO">
37+ <item name="Set"> <value>0</value> </item>
38+ <item name="Union"> <value>1</value> </item>
39+ <item name="Intersect"> <value>2</value> </item>
40+ <item name="Subtract"> <value>3</value> </item>
41+ <item name="Invert"> <value>4</value> </item>
42+ </enum>
43+
44+ <!-- Shape attributes of type KIND. -->
45+ <enum name="SK">
46+ <item name="Bounding"> <value>0</value> </item>
47+ <item name="Clip"> <value>1</value> </item>
48+ <item name="Input"> <value>2</value> </item> <!-- added in version 1.1 -->
49+ </enum>
50+
51+ <event name="Notify" number="0">
52+ <field type="KIND" name="shape_kind" enum="SK" />
53+ <field type="WINDOW" name="affected_window" />
54+ <field type="INT16" name="extents_x" />
55+ <field type="INT16" name="extents_y" />
56+ <field type="CARD16" name="extents_width" />
57+ <field type="CARD16" name="extents_height" />
58+ <field type="TIMESTAMP" name="server_time" />
59+ <field type="BOOL" name="shaped" />
60+ <pad bytes="11" />
61+ </event>
62+
63+ <request name="QueryVersion" opcode="0">
64+ <reply>
65+ <pad bytes="1" />
66+ <field type="CARD16" name="major_version" />
67+ <field type="CARD16" name="minor_version" />
68+ </reply>
69+ </request>
70+
71+ <request name="Rectangles" opcode="1">
72+ <field type="OP" name="operation" enum="SO" />
73+ <field type="KIND" name="destination_kind" enum="SK" />
74+ <field type="BYTE" name="ordering" enum="ClipOrdering" />
75+ <pad bytes="1" />
76+ <field type="WINDOW" name="destination_window" />
77+ <field type="INT16" name="x_offset" />
78+ <field type="INT16" name="y_offset" />
79+ <list type="RECTANGLE" name="rectangles" />
80+ </request>
81+
82+ <request name="Mask" opcode="2">
83+ <field type="OP" name="operation" enum="SO" />
84+ <field type="KIND" name="destination_kind" enum="SK" />
85+ <pad bytes="2" />
86+ <field type="WINDOW" name="destination_window" />
87+ <field type="INT16" name="x_offset" />
88+ <field type="INT16" name="y_offset" />
89+ <field type="PIXMAP" name="source_bitmap" altenum="Pixmap" />
90+ </request>
91+
92+ <request name="Combine" opcode="3">
93+ <field type="OP" name="operation" enum="SO" />
94+ <field type="KIND" name="destination_kind" enum="SK" />
95+ <field type="KIND" name="source_kind" enum="SK" />
96+ <pad bytes="1" />
97+ <field type="WINDOW" name="destination_window" />
98+ <field type="INT16" name="x_offset" />
99+ <field type="INT16" name="y_offset" />
100+ <field type="WINDOW" name="source_window" />
101+ </request>
102+
103+ <request name="Offset" opcode="4">
104+ <field type="KIND" name="destination_kind" enum="SK" />
105+ <pad bytes="3" />
106+ <field type="WINDOW" name="destination_window" />
107+ <field type="INT16" name="x_offset" />
108+ <field type="INT16" name="y_offset" />
109+ </request>
110+
111+ <request name="QueryExtents" opcode="5">
112+ <field type="WINDOW" name="destination_window" />
113+ <reply>
114+ <pad bytes="1" />
115+ <field type="BOOL" name="bounding_shaped" />
116+ <field type="BOOL" name="clip_shaped" />
117+ <pad bytes="2" />
118+ <field type="INT16" name="bounding_shape_extents_x" />
119+ <field type="INT16" name="bounding_shape_extents_y" />
120+ <field type="CARD16" name="bounding_shape_extents_width" />
121+ <field type="CARD16" name="bounding_shape_extents_height" />
122+ <field type="INT16" name="clip_shape_extents_x" />
123+ <field type="INT16" name="clip_shape_extents_y" />
124+ <field type="CARD16" name="clip_shape_extents_width" />
125+ <field type="CARD16" name="clip_shape_extents_height" />
126+ </reply>
127+ </request>
128+
129+ <request name="SelectInput" opcode="6">
130+ <field type="WINDOW" name="destination_window" />
131+ <field type="BOOL" name="enable" />
132+ <pad bytes="3" />
133+ </request>
134+
135+ <request name="InputSelected" opcode="7">
136+ <field type="WINDOW" name="destination_window" />
137+ <reply>
138+ <field type="BOOL" name="enabled" />
139+ </reply>
140+ </request>
141+
142+ <request name="GetRectangles" opcode="8">
143+ <field type="WINDOW" name="window" />
144+ <field type="KIND" name="source_kind" enum="SK" />
145+ <pad bytes="3" />
146+ <reply>
147+ <field type="BYTE" name="ordering" enum="ClipOrdering" />
148+ <field type="CARD32" name="rectangles_len" />
149+ <pad bytes="20" />
150+ <list type="RECTANGLE" name="rectangles">
151+ <fieldref>rectangles_len</fieldref>
152+ </list>
153+ </reply>
154+ </request>
155+</xcb>
A spec/xml/xc_misc.xml +38 -0
@@ -0,0 +1,38 @@
1+<?xml version="1.0" encoding="utf-8"?>
2+<!--
3+Copyright (C) 2004 Mikko Torni and Josh Triplett.
4+All Rights Reserved. See the file COPYING in this directory
5+for licensing information.
6+-->
7+<xcb header="xc_misc" extension-xname="XC-MISC" extension-name="XCMisc"
8+ extension-multiword="true" major-version="1" minor-version="1">
9+ <request name="GetVersion" opcode="0">
10+ <field type="CARD16" name="client_major_version" />
11+ <field type="CARD16" name="client_minor_version" />
12+ <reply>
13+ <pad bytes="1" />
14+ <field type="CARD16" name="server_major_version" />
15+ <field type="CARD16" name="server_minor_version" />
16+ </reply>
17+ </request>
18+
19+ <request name="GetXIDRange" opcode="1">
20+ <reply>
21+ <pad bytes="1" />
22+ <field type="CARD32" name="start_id" />
23+ <field type="CARD32" name="count" />
24+ </reply>
25+ </request>
26+
27+ <request name="GetXIDList" opcode="2">
28+ <field type="CARD32" name="count" />
29+ <reply>
30+ <pad bytes="1" />
31+ <field type="CARD32" name="ids_len" />
32+ <pad bytes="20" />
33+ <list type="CARD32" name="ids">
34+ <fieldref>ids_len</fieldref>
35+ </list>
36+ </reply>
37+ </request>
38+</xcb>
@@ -0,0 +1,38 @@
1+<?xml version="1.0" encoding="utf-8"?>
2+<!--
3+Copyright (C) 2004 Mikko Torni and Josh Triplett.
4+All Rights Reserved. See the file COPYING in this directory
5+for licensing information.
6+-->
7+<xcb header="xc_misc" extension-xname="XC-MISC" extension-name="XCMisc"
8+ extension-multiword="true" major-version="1" minor-version="1">
9+ <request name="GetVersion" opcode="0">
10+ <field type="CARD16" name="client_major_version" />
11+ <field type="CARD16" name="client_minor_version" />
12+ <reply>
13+ <pad bytes="1" />
14+ <field type="CARD16" name="server_major_version" />
15+ <field type="CARD16" name="server_minor_version" />
16+ </reply>
17+ </request>
18+
19+ <request name="GetXIDRange" opcode="1">
20+ <reply>
21+ <pad bytes="1" />
22+ <field type="CARD32" name="start_id" />
23+ <field type="CARD32" name="count" />
24+ </reply>
25+ </request>
26+
27+ <request name="GetXIDList" opcode="2">
28+ <field type="CARD32" name="count" />
29+ <reply>
30+ <pad bytes="1" />
31+ <field type="CARD32" name="ids_len" />
32+ <pad bytes="20" />
33+ <list type="CARD32" name="ids">
34+ <fieldref>ids_len</fieldref>
35+ </list>
36+ </reply>
37+ </request>
38+</xcb>
A spec/xml/xfixes.xml +405 -0
@@ -0,0 +1,405 @@
1+<?xml version="1.0" encoding="utf-8"?>
2+<!--
3+Copyright (C) 2004 Josh Triplett. All Rights Reserved.
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 BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
19+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21+
22+Except as contained in this notice, the names of the authors or their
23+institutions shall not be used in advertising or otherwise to promote the
24+sale, use or other dealings in this Software without prior written
25+authorization from the authors.
26+-->
27+<!-- This file describes version 4 of XFixes. -->
28+<xcb header="xfixes" extension-xname="XFIXES" extension-name="XFixes"
29+ major-version="6" minor-version="0">
30+ <import>xproto</import>
31+ <import>render</import>
32+ <import>shape</import>
33+
34+ <!-- Version 1 -->
35+ <request name="QueryVersion" opcode="0">
36+ <field type="CARD32" name="client_major_version" />
37+ <field type="CARD32" name="client_minor_version" />
38+ <reply>
39+ <pad bytes="1" />
40+ <field type="CARD32" name="major_version" />
41+ <field type="CARD32" name="minor_version" />
42+ <pad bytes="16" />
43+ </reply>
44+ </request>
45+
46+ <enum name="SaveSetMode">
47+ <item name="Insert"> <value>0</value> </item>
48+ <item name="Delete"> <value>1</value> </item>
49+ </enum>
50+
51+ <enum name="SaveSetTarget">
52+ <item name="Nearest"> <value>0</value> </item>
53+ <item name="Root"> <value>1</value> </item>
54+ </enum>
55+
56+ <enum name="SaveSetMapping">
57+ <item name="Map"> <value>0</value> </item>
58+ <item name="Unmap"> <value>1</value> </item>
59+ </enum>
60+
61+ <request name="ChangeSaveSet" opcode="1">
62+ <field type="BYTE" name="mode" enum="SaveSetMode" />
63+ <field type="BYTE" name="target" enum="SaveSetTarget" />
64+ <field type="BYTE" name="map" enum="SaveSetMapping" />
65+ <pad bytes="1" />
66+ <field type="WINDOW" name="window" />
67+ </request>
68+
69+ <enum name="SelectionEvent">
70+ <item name="SetSelectionOwner"> <value>0</value> </item>
71+ <item name="SelectionWindowDestroy"> <value>1</value> </item>
72+ <item name="SelectionClientClose"> <value>2</value> </item>
73+ </enum>
74+
75+ <enum name="SelectionEventMask">
76+ <item name="SetSelectionOwner"> <bit>0</bit></item>
77+ <item name="SelectionWindowDestroy"><bit>1</bit></item>
78+ <item name="SelectionClientClose"> <bit>2</bit></item>
79+ </enum>
80+
81+ <event name="SelectionNotify" number="0">
82+ <field type="CARD8" name="subtype" enum="SelectionEvent" />
83+ <field type="WINDOW" name="window" />
84+ <field type="WINDOW" name="owner" />
85+ <field type="ATOM" name="selection" />
86+ <field type="TIMESTAMP" name="timestamp" />
87+ <field type="TIMESTAMP" name="selection_timestamp" />
88+ <pad bytes="8" />
89+ </event>
90+
91+ <request name="SelectSelectionInput" opcode="2">
92+ <field type="WINDOW" name="window" />
93+ <field type="ATOM" name="selection" />
94+ <field type="CARD32" name="event_mask" mask="SelectionEventMask" />
95+ </request>
96+
97+ <enum name="CursorNotify">
98+ <item name="DisplayCursor"> <value>0</value> </item>
99+ </enum>
100+
101+ <enum name="CursorNotifyMask">
102+ <item name="DisplayCursor"><bit>0</bit></item>
103+ </enum>
104+
105+ <event name="CursorNotify" number="1">
106+ <field type="CARD8" name="subtype" enum="CursorNotify" />
107+ <field type="WINDOW" name="window" />
108+ <field type="CARD32" name="cursor_serial" />
109+ <field type="TIMESTAMP" name="timestamp" />
110+ <field type="ATOM" name="name" altenum="Atom" /> <!-- Added in version 2 -->
111+ <pad bytes="12" />
112+ </event>
113+
114+ <request name="SelectCursorInput" opcode="3">
115+ <field type="WINDOW" name="window" />
116+ <field type="CARD32" name="event_mask" mask="CursorNotifyMask" />
117+ </request>
118+
119+ <request name="GetCursorImage" opcode="4">
120+ <reply>
121+ <pad bytes="1" />
122+ <field type="INT16" name="x" />
123+ <field type="INT16" name="y" />
124+ <field type="CARD16" name="width" />
125+ <field type="CARD16" name="height" />
126+ <field type="CARD16" name="xhot" />
127+ <field type="CARD16" name="yhot" />
128+ <field type="CARD32" name="cursor_serial" />
129+ <pad bytes="8" />
130+ <list type="CARD32" name="cursor_image">
131+ <op op="*">
132+ <fieldref>width</fieldref>
133+ <fieldref>height</fieldref>
134+ </op>
135+ </list>
136+ </reply>
137+ </request>
138+
139+ <!-- Version 2 -->
140+
141+ <xidtype name="REGION" />
142+
143+ <error name="BadRegion" number="0" />
144+
145+ <enum name="Region">
146+ <item name="None"> <value>0</value> </item>
147+ </enum>
148+
149+ <request name="CreateRegion" opcode="5">
150+ <field type="REGION" name="region" />
151+ <list type="RECTANGLE" name="rectangles" />
152+ </request>
153+
154+ <request name="CreateRegionFromBitmap" opcode="6">
155+ <field type="REGION" name="region" />
156+ <field type="PIXMAP" name="bitmap" />
157+ </request>
158+
159+ <request name="CreateRegionFromWindow" opcode="7">
160+ <field type="REGION" name="region" />
161+ <field type="WINDOW" name="window" />
162+ <field type="shape:KIND" name="kind" enum="SK" />
163+ <pad bytes="3" />
164+ </request>
165+
166+ <request name="CreateRegionFromGC" opcode="8">
167+ <field type="REGION" name="region" />
168+ <field type="GCONTEXT" name="gc" />
169+ </request>
170+
171+ <request name="CreateRegionFromPicture" opcode="9">
172+ <field type="REGION" name="region" />
173+ <field type="PICTURE" name="picture" />
174+ </request>
175+
176+ <request name="DestroyRegion" opcode="10">
177+ <field type="REGION" name="region" />
178+ </request>
179+
180+ <request name="SetRegion" opcode="11">
181+ <field type="REGION" name="region" />
182+ <list type="RECTANGLE" name="rectangles" />
183+ </request>
184+
185+ <request name="CopyRegion" opcode="12">
186+ <field type="REGION" name="source" />
187+ <field type="REGION" name="destination" />
188+ </request>
189+
190+ <request name="UnionRegion" opcode="13">
191+ <field type="REGION" name="source1" />
192+ <field type="REGION" name="source2" />
193+ <field type="REGION" name="destination" />
194+ </request>
195+
196+ <request name="IntersectRegion" opcode="14">
197+ <field type="REGION" name="source1" />
198+ <field type="REGION" name="source2" />
199+ <field type="REGION" name="destination" />
200+ </request>
201+
202+ <request name="SubtractRegion" opcode="15">
203+ <field type="REGION" name="source1" />
204+ <field type="REGION" name="source2" />
205+ <field type="REGION" name="destination" />
206+ </request>
207+
208+ <request name="InvertRegion" opcode="16">
209+ <field type="REGION" name="source" />
210+ <field type="RECTANGLE" name="bounds" />
211+ <field type="REGION" name="destination" />
212+ </request>
213+
214+ <request name="TranslateRegion" opcode="17">
215+ <field type="REGION" name="region" />
216+ <field type="INT16" name="dx" />
217+ <field type="INT16" name="dy" />
218+ </request>
219+
220+ <request name="RegionExtents" opcode="18">
221+ <field type="REGION" name="source" />
222+ <field type="REGION" name="destination" />
223+ </request>
224+
225+ <request name="FetchRegion" opcode="19">
226+ <field type="REGION" name="region" />
227+ <reply>
228+ <pad bytes="1" />
229+ <field type="RECTANGLE" name="extents" />
230+ <pad bytes="16" />
231+ <list type="RECTANGLE" name="rectangles">
232+ <op op='/'>
233+ <fieldref>length</fieldref>
234+ <value>2</value>
235+ </op>
236+ </list>
237+ </reply>
238+ </request>
239+
240+ <request name="SetGCClipRegion" opcode="20">
241+ <field type="GCONTEXT" name="gc" />
242+ <field type="REGION" name="region" altenum="Region" />
243+ <field type="INT16" name="x_origin" />
244+ <field type="INT16" name="y_origin" />
245+ </request>
246+
247+ <request name="SetWindowShapeRegion" opcode="21">
248+ <field type="WINDOW" name="dest" />
249+ <field type="shape:KIND" name="dest_kind" enum="SK" />
250+ <pad bytes="3" />
251+ <field type="INT16" name="x_offset" />
252+ <field type="INT16" name="y_offset" />
253+ <field type="REGION" name="region" altenum="Region" />
254+ </request>
255+
256+ <request name="SetPictureClipRegion" opcode="22">
257+ <field type="PICTURE" name="picture" />
258+ <field type="REGION" name="region" altenum="Region" />
259+ <field type="INT16" name="x_origin" />
260+ <field type="INT16" name="y_origin" />
261+ </request>
262+
263+ <request name="SetCursorName" opcode="23">
264+ <field type="CURSOR" name="cursor" />
265+ <field type="CARD16" name="nbytes" />
266+ <pad bytes="2" />
267+ <list type="char" name="name"><fieldref>nbytes</fieldref></list>
268+ </request>
269+
270+ <request name="GetCursorName" opcode="24">
271+ <field type="CURSOR" name="cursor" />
272+ <reply>
273+ <pad bytes="1" />
274+ <field type="ATOM" name="atom" altenum="Atom" />
275+ <field type="CARD16" name="nbytes" />
276+ <pad bytes="18" />
277+ <list type="char" name="name"><fieldref>nbytes</fieldref></list>
278+ </reply>
279+ </request>
280+
281+ <request name="GetCursorImageAndName" opcode="25">
282+ <reply>
283+ <pad bytes="1" />
284+ <field type="INT16" name="x" />
285+ <field type="INT16" name="y" />
286+ <field type="CARD16" name="width" />
287+ <field type="CARD16" name="height" />
288+ <field type="CARD16" name="xhot" />
289+ <field type="CARD16" name="yhot" />
290+ <field type="CARD32" name="cursor_serial" />
291+ <field type="ATOM" name="cursor_atom" altenum="Atom" />
292+ <field type="CARD16" name="nbytes" />
293+ <pad bytes="2" />
294+ <list type="CARD32" name="cursor_image">
295+ <op op="*">
296+ <fieldref>width</fieldref>
297+ <fieldref>height</fieldref>
298+ </op>
299+ </list>
300+ <list type="char" name="name"><fieldref>nbytes</fieldref></list>
301+ </reply>
302+ </request>
303+
304+ <request name="ChangeCursor" opcode="26">
305+ <field type="CURSOR" name="source" />
306+ <field type="CURSOR" name="destination" />
307+ </request>
308+
309+ <request name="ChangeCursorByName" opcode="27">
310+ <field type="CURSOR" name="src" />
311+ <field type="CARD16" name="nbytes" />
312+ <pad bytes="2" />
313+ <list type="char" name="name"><fieldref>nbytes</fieldref></list>
314+ </request>
315+
316+ <!-- Version 3 -->
317+ <request name="ExpandRegion" opcode="28">
318+ <field type="REGION" name="source" />
319+ <field type="REGION" name="destination" />
320+ <field type="CARD16" name="left" />
321+ <field type="CARD16" name="right" />
322+ <field type="CARD16" name="top" />
323+ <field type="CARD16" name="bottom" />
324+ </request>
325+
326+ <!-- Version 4 -->
327+ <request name="HideCursor" opcode="29">
328+ <field type="WINDOW" name="window" />
329+ </request>
330+
331+ <request name="ShowCursor" opcode="30">
332+ <field type="WINDOW" name="window" />
333+ </request>
334+
335+ <!-- Version 5 -->
336+
337+ <xidtype name="BARRIER" />
338+
339+ <enum name="BarrierDirections">
340+ <item name="PositiveX"><bit>0</bit></item>
341+ <item name="PositiveY"><bit>1</bit></item>
342+ <item name="NegativeX"><bit>2</bit></item>
343+ <item name="NegativeY"><bit>3</bit></item>
344+ </enum>
345+
346+ <request name="CreatePointerBarrier" opcode="31">
347+ <field type="BARRIER" name="barrier" />
348+ <field type="WINDOW" name="window" />
349+ <field type="CARD16" name="x1" />
350+ <field type="CARD16" name="y1" />
351+ <field type="CARD16" name="x2" />
352+ <field type="CARD16" name="y2" />
353+ <field type="CARD32" name="directions" mask="BarrierDirections" />
354+ <pad bytes="2" />
355+ <field type="CARD16" name="num_devices" />
356+ <list type="CARD16" name="devices"><fieldref>num_devices</fieldref></list>
357+ </request>
358+
359+ <request name="DeletePointerBarrier" opcode="32">
360+ <field type="BARRIER" name="barrier" />
361+ </request>
362+
363+ <!-- Version 6 -->
364+
365+ <enum name="ClientDisconnectFlags">
366+ <item name="Default"><value>0</value></item>
367+ <item name="Terminate"><bit>0</bit></item>
368+ <doc>
369+ <field name="Default"><![CDATA[
370+The default behavior for regular clients: the X11 server won't terminate as long
371+as such clients are still connected, and should this client disconnect, the
372+server will continue running so long as other clients (that have not set
373+XFixesClientDisconnectFlagTerminate) are connected.
374+ ]]></field>
375+ <field name="Terminate"><![CDATA[
376+Indicates to the X11 server that it can ignore the client and terminate itself
377+even though the client is still connected to the X11 server.
378+ ]]></field>
379+ </doc>
380+ </enum>
381+
382+ <request name="SetClientDisconnectMode" opcode="33">
383+ <field type="CARD32" name="disconnect_mode" mask="ClientDisconnectFlags" />
384+ <doc>
385+ <brief>Sets the disconnect mode for the client.</brief>
386+ <field name="disconnect_mode"><![CDATA[
387+The new disconnect mode.
388+ ]]></field>
389+ </doc>
390+ </request>
391+
392+ <request name="GetClientDisconnectMode" opcode="34">
393+ <reply>
394+ <pad bytes="1" />
395+ <field type="CARD32" name="disconnect_mode" mask="ClientDisconnectFlags" />
396+ <pad bytes="20" />
397+ <doc>
398+ <brief>Gets the disconnect mode for the client.</brief>
399+ <field name="disconnect_mode"><![CDATA[
400+The current disconnect mode.
401+ ]]></field>
402+ </doc>
403+ </reply>
404+ </request>
405+</xcb>
@@ -0,0 +1,405 @@
1+<?xml version="1.0" encoding="utf-8"?>
2+<!--
3+Copyright (C) 2004 Josh Triplett. All Rights Reserved.
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 BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
19+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21+
22+Except as contained in this notice, the names of the authors or their
23+institutions shall not be used in advertising or otherwise to promote the
24+sale, use or other dealings in this Software without prior written
25+authorization from the authors.
26+-->
27+<!-- This file describes version 4 of XFixes. -->
28+<xcb header="xfixes" extension-xname="XFIXES" extension-name="XFixes"
29+ major-version="6" minor-version="0">
30+ <import>xproto</import>
31+ <import>render</import>
32+ <import>shape</import>
33+
34+ <!-- Version 1 -->
35+ <request name="QueryVersion" opcode="0">
36+ <field type="CARD32" name="client_major_version" />
37+ <field type="CARD32" name="client_minor_version" />
38+ <reply>
39+ <pad bytes="1" />
40+ <field type="CARD32" name="major_version" />
41+ <field type="CARD32" name="minor_version" />
42+ <pad bytes="16" />
43+ </reply>
44+ </request>
45+
46+ <enum name="SaveSetMode">
47+ <item name="Insert"> <value>0</value> </item>
48+ <item name="Delete"> <value>1</value> </item>
49+ </enum>
50+
51+ <enum name="SaveSetTarget">
52+ <item name="Nearest"> <value>0</value> </item>
53+ <item name="Root"> <value>1</value> </item>
54+ </enum>
55+
56+ <enum name="SaveSetMapping">
57+ <item name="Map"> <value>0</value> </item>
58+ <item name="Unmap"> <value>1</value> </item>
59+ </enum>
60+
61+ <request name="ChangeSaveSet" opcode="1">
62+ <field type="BYTE" name="mode" enum="SaveSetMode" />
63+ <field type="BYTE" name="target" enum="SaveSetTarget" />
64+ <field type="BYTE" name="map" enum="SaveSetMapping" />
65+ <pad bytes="1" />
66+ <field type="WINDOW" name="window" />
67+ </request>
68+
69+ <enum name="SelectionEvent">
70+ <item name="SetSelectionOwner"> <value>0</value> </item>
71+ <item name="SelectionWindowDestroy"> <value>1</value> </item>
72+ <item name="SelectionClientClose"> <value>2</value> </item>
73+ </enum>
74+
75+ <enum name="SelectionEventMask">
76+ <item name="SetSelectionOwner"> <bit>0</bit></item>
77+ <item name="SelectionWindowDestroy"><bit>1</bit></item>
78+ <item name="SelectionClientClose"> <bit>2</bit></item>
79+ </enum>
80+
81+ <event name="SelectionNotify" number="0">
82+ <field type="CARD8" name="subtype" enum="SelectionEvent" />
83+ <field type="WINDOW" name="window" />
84+ <field type="WINDOW" name="owner" />
85+ <field type="ATOM" name="selection" />
86+ <field type="TIMESTAMP" name="timestamp" />
87+ <field type="TIMESTAMP" name="selection_timestamp" />
88+ <pad bytes="8" />
89+ </event>
90+
91+ <request name="SelectSelectionInput" opcode="2">
92+ <field type="WINDOW" name="window" />
93+ <field type="ATOM" name="selection" />
94+ <field type="CARD32" name="event_mask" mask="SelectionEventMask" />
95+ </request>
96+
97+ <enum name="CursorNotify">
98+ <item name="DisplayCursor"> <value>0</value> </item>
99+ </enum>
100+
101+ <enum name="CursorNotifyMask">
102+ <item name="DisplayCursor"><bit>0</bit></item>
103+ </enum>
104+
105+ <event name="CursorNotify" number="1">
106+ <field type="CARD8" name="subtype" enum="CursorNotify" />
107+ <field type="WINDOW" name="window" />
108+ <field type="CARD32" name="cursor_serial" />
109+ <field type="TIMESTAMP" name="timestamp" />
110+ <field type="ATOM" name="name" altenum="Atom" /> <!-- Added in version 2 -->
111+ <pad bytes="12" />
112+ </event>
113+
114+ <request name="SelectCursorInput" opcode="3">
115+ <field type="WINDOW" name="window" />
116+ <field type="CARD32" name="event_mask" mask="CursorNotifyMask" />
117+ </request>
118+
119+ <request name="GetCursorImage" opcode="4">
120+ <reply>
121+ <pad bytes="1" />
122+ <field type="INT16" name="x" />
123+ <field type="INT16" name="y" />
124+ <field type="CARD16" name="width" />
125+ <field type="CARD16" name="height" />
126+ <field type="CARD16" name="xhot" />
127+ <field type="CARD16" name="yhot" />
128+ <field type="CARD32" name="cursor_serial" />
129+ <pad bytes="8" />
130+ <list type="CARD32" name="cursor_image">
131+ <op op="*">
132+ <fieldref>width</fieldref>
133+ <fieldref>height</fieldref>
134+ </op>
135+ </list>
136+ </reply>
137+ </request>
138+
139+ <!-- Version 2 -->
140+
141+ <xidtype name="REGION" />
142+
143+ <error name="BadRegion" number="0" />
144+
145+ <enum name="Region">
146+ <item name="None"> <value>0</value> </item>
147+ </enum>
148+
149+ <request name="CreateRegion" opcode="5">
150+ <field type="REGION" name="region" />
151+ <list type="RECTANGLE" name="rectangles" />
152+ </request>
153+
154+ <request name="CreateRegionFromBitmap" opcode="6">
155+ <field type="REGION" name="region" />
156+ <field type="PIXMAP" name="bitmap" />
157+ </request>
158+
159+ <request name="CreateRegionFromWindow" opcode="7">
160+ <field type="REGION" name="region" />
161+ <field type="WINDOW" name="window" />
162+ <field type="shape:KIND" name="kind" enum="SK" />
163+ <pad bytes="3" />
164+ </request>
165+
166+ <request name="CreateRegionFromGC" opcode="8">
167+ <field type="REGION" name="region" />
168+ <field type="GCONTEXT" name="gc" />
169+ </request>
170+
171+ <request name="CreateRegionFromPicture" opcode="9">
172+ <field type="REGION" name="region" />
173+ <field type="PICTURE" name="picture" />
174+ </request>
175+
176+ <request name="DestroyRegion" opcode="10">
177+ <field type="REGION" name="region" />
178+ </request>
179+
180+ <request name="SetRegion" opcode="11">
181+ <field type="REGION" name="region" />
182+ <list type="RECTANGLE" name="rectangles" />
183+ </request>
184+
185+ <request name="CopyRegion" opcode="12">
186+ <field type="REGION" name="source" />
187+ <field type="REGION" name="destination" />
188+ </request>
189+
190+ <request name="UnionRegion" opcode="13">
191+ <field type="REGION" name="source1" />
192+ <field type="REGION" name="source2" />
193+ <field type="REGION" name="destination" />
194+ </request>
195+
196+ <request name="IntersectRegion" opcode="14">
197+ <field type="REGION" name="source1" />
198+ <field type="REGION" name="source2" />
199+ <field type="REGION" name="destination" />
200+ </request>
201+
202+ <request name="SubtractRegion" opcode="15">
203+ <field type="REGION" name="source1" />
204+ <field type="REGION" name="source2" />
205+ <field type="REGION" name="destination" />
206+ </request>
207+
208+ <request name="InvertRegion" opcode="16">
209+ <field type="REGION" name="source" />
210+ <field type="RECTANGLE" name="bounds" />
211+ <field type="REGION" name="destination" />
212+ </request>
213+
214+ <request name="TranslateRegion" opcode="17">
215+ <field type="REGION" name="region" />
216+ <field type="INT16" name="dx" />
217+ <field type="INT16" name="dy" />
218+ </request>
219+
220+ <request name="RegionExtents" opcode="18">
221+ <field type="REGION" name="source" />
222+ <field type="REGION" name="destination" />
223+ </request>
224+
225+ <request name="FetchRegion" opcode="19">
226+ <field type="REGION" name="region" />
227+ <reply>
228+ <pad bytes="1" />
229+ <field type="RECTANGLE" name="extents" />
230+ <pad bytes="16" />
231+ <list type="RECTANGLE" name="rectangles">
232+ <op op='/'>
233+ <fieldref>length</fieldref>
234+ <value>2</value>
235+ </op>
236+ </list>
237+ </reply>
238+ </request>
239+
240+ <request name="SetGCClipRegion" opcode="20">
241+ <field type="GCONTEXT" name="gc" />
242+ <field type="REGION" name="region" altenum="Region" />
243+ <field type="INT16" name="x_origin" />
244+ <field type="INT16" name="y_origin" />
245+ </request>
246+
247+ <request name="SetWindowShapeRegion" opcode="21">
248+ <field type="WINDOW" name="dest" />
249+ <field type="shape:KIND" name="dest_kind" enum="SK" />
250+ <pad bytes="3" />
251+ <field type="INT16" name="x_offset" />
252+ <field type="INT16" name="y_offset" />
253+ <field type="REGION" name="region" altenum="Region" />
254+ </request>
255+
256+ <request name="SetPictureClipRegion" opcode="22">
257+ <field type="PICTURE" name="picture" />
258+ <field type="REGION" name="region" altenum="Region" />
259+ <field type="INT16" name="x_origin" />
260+ <field type="INT16" name="y_origin" />
261+ </request>
262+
263+ <request name="SetCursorName" opcode="23">
264+ <field type="CURSOR" name="cursor" />
265+ <field type="CARD16" name="nbytes" />
266+ <pad bytes="2" />
267+ <list type="char" name="name"><fieldref>nbytes</fieldref></list>
268+ </request>
269+
270+ <request name="GetCursorName" opcode="24">
271+ <field type="CURSOR" name="cursor" />
272+ <reply>
273+ <pad bytes="1" />
274+ <field type="ATOM" name="atom" altenum="Atom" />
275+ <field type="CARD16" name="nbytes" />
276+ <pad bytes="18" />
277+ <list type="char" name="name"><fieldref>nbytes</fieldref></list>
278+ </reply>
279+ </request>
280+
281+ <request name="GetCursorImageAndName" opcode="25">
282+ <reply>
283+ <pad bytes="1" />
284+ <field type="INT16" name="x" />
285+ <field type="INT16" name="y" />
286+ <field type="CARD16" name="width" />
287+ <field type="CARD16" name="height" />
288+ <field type="CARD16" name="xhot" />
289+ <field type="CARD16" name="yhot" />
290+ <field type="CARD32" name="cursor_serial" />
291+ <field type="ATOM" name="cursor_atom" altenum="Atom" />
292+ <field type="CARD16" name="nbytes" />
293+ <pad bytes="2" />
294+ <list type="CARD32" name="cursor_image">
295+ <op op="*">
296+ <fieldref>width</fieldref>
297+ <fieldref>height</fieldref>
298+ </op>
299+ </list>
300+ <list type="char" name="name"><fieldref>nbytes</fieldref></list>
301+ </reply>
302+ </request>
303+
304+ <request name="ChangeCursor" opcode="26">
305+ <field type="CURSOR" name="source" />
306+ <field type="CURSOR" name="destination" />
307+ </request>
308+
309+ <request name="ChangeCursorByName" opcode="27">
310+ <field type="CURSOR" name="src" />
311+ <field type="CARD16" name="nbytes" />
312+ <pad bytes="2" />
313+ <list type="char" name="name"><fieldref>nbytes</fieldref></list>
314+ </request>
315+
316+ <!-- Version 3 -->
317+ <request name="ExpandRegion" opcode="28">
318+ <field type="REGION" name="source" />
319+ <field type="REGION" name="destination" />
320+ <field type="CARD16" name="left" />
321+ <field type="CARD16" name="right" />
322+ <field type="CARD16" name="top" />
323+ <field type="CARD16" name="bottom" />
324+ </request>
325+
326+ <!-- Version 4 -->
327+ <request name="HideCursor" opcode="29">
328+ <field type="WINDOW" name="window" />
329+ </request>
330+
331+ <request name="ShowCursor" opcode="30">
332+ <field type="WINDOW" name="window" />
333+ </request>
334+
335+ <!-- Version 5 -->
336+
337+ <xidtype name="BARRIER" />
338+
339+ <enum name="BarrierDirections">
340+ <item name="PositiveX"><bit>0</bit></item>
341+ <item name="PositiveY"><bit>1</bit></item>
342+ <item name="NegativeX"><bit>2</bit></item>
343+ <item name="NegativeY"><bit>3</bit></item>
344+ </enum>
345+
346+ <request name="CreatePointerBarrier" opcode="31">
347+ <field type="BARRIER" name="barrier" />
348+ <field type="WINDOW" name="window" />
349+ <field type="CARD16" name="x1" />
350+ <field type="CARD16" name="y1" />
351+ <field type="CARD16" name="x2" />
352+ <field type="CARD16" name="y2" />
353+ <field type="CARD32" name="directions" mask="BarrierDirections" />
354+ <pad bytes="2" />
355+ <field type="CARD16" name="num_devices" />
356+ <list type="CARD16" name="devices"><fieldref>num_devices</fieldref></list>
357+ </request>
358+
359+ <request name="DeletePointerBarrier" opcode="32">
360+ <field type="BARRIER" name="barrier" />
361+ </request>
362+
363+ <!-- Version 6 -->
364+
365+ <enum name="ClientDisconnectFlags">
366+ <item name="Default"><value>0</value></item>
367+ <item name="Terminate"><bit>0</bit></item>
368+ <doc>
369+ <field name="Default"><![CDATA[
370+The default behavior for regular clients: the X11 server won't terminate as long
371+as such clients are still connected, and should this client disconnect, the
372+server will continue running so long as other clients (that have not set
373+XFixesClientDisconnectFlagTerminate) are connected.
374+ ]]></field>
375+ <field name="Terminate"><![CDATA[
376+Indicates to the X11 server that it can ignore the client and terminate itself
377+even though the client is still connected to the X11 server.
378+ ]]></field>
379+ </doc>
380+ </enum>
381+
382+ <request name="SetClientDisconnectMode" opcode="33">
383+ <field type="CARD32" name="disconnect_mode" mask="ClientDisconnectFlags" />
384+ <doc>
385+ <brief>Sets the disconnect mode for the client.</brief>
386+ <field name="disconnect_mode"><![CDATA[
387+The new disconnect mode.
388+ ]]></field>
389+ </doc>
390+ </request>
391+
392+ <request name="GetClientDisconnectMode" opcode="34">
393+ <reply>
394+ <pad bytes="1" />
395+ <field type="CARD32" name="disconnect_mode" mask="ClientDisconnectFlags" />
396+ <pad bytes="20" />
397+ <doc>
398+ <brief>Gets the disconnect mode for the client.</brief>
399+ <field name="disconnect_mode"><![CDATA[
400+The current disconnect mode.
401+ ]]></field>
402+ </doc>
403+ </reply>
404+ </request>
405+</xcb>
A spec/xml/xproto.xml +5617 -0 large diff (5617 lines changed): collapsed

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 1

↑↓ moveenter openesc close