summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/pkg/Makefile2
-rw-r--r--src/pkg/xgb/Makefile21
-rw-r--r--src/pkg/xgb/auth.go110
-rw-r--r--src/pkg/xgb/example.go67
-rw-r--r--src/pkg/xgb/go_client.py704
-rw-r--r--src/pkg/xgb/xgb.go464
-rw-r--r--src/pkg/xgb/xproto.go4153
7 files changed, 0 insertions, 5521 deletions
diff --git a/src/pkg/Makefile b/src/pkg/Makefile
index f40894b47..d6d33315f 100644
--- a/src/pkg/Makefile
+++ b/src/pkg/Makefile
@@ -123,7 +123,6 @@ DIRS=\
utf16\
utf8\
websocket\
- xgb\
xml\
NOTEST=\
@@ -140,7 +139,6 @@ NOTEST=\
runtime/pprof\
syscall\
testing/iotest\
- xgb\
NOBENCH=\
container/vector\
diff --git a/src/pkg/xgb/Makefile b/src/pkg/xgb/Makefile
deleted file mode 100644
index cd83c5e70..000000000
--- a/src/pkg/xgb/Makefile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2009 The Go Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style
-# license that can be found in the LICENSE file.
-
-include ../../Make.$(GOARCH)
-
-TARG=xgb
-GOFILES=\
- auth.go\
- xgb.go\
- xproto.go\
-
-include ../../Make.pkg
-
-xproto: proto/src/xproto.xml
- python go_client.py -p proto/ proto/src/xproto.xml
- gofmt -w xproto.go
-
-proto/src/xproto.xml:
- git clone git://anongit.freedesktop.org/git/xcb/proto
-
diff --git a/src/pkg/xgb/auth.go b/src/pkg/xgb/auth.go
deleted file mode 100644
index 4d920c231..000000000
--- a/src/pkg/xgb/auth.go
+++ /dev/null
@@ -1,110 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package xgb
-
-import (
- "bufio"
- "io"
- "os"
-)
-
-func getU16BE(r io.Reader, b []byte) (uint16, os.Error) {
- _, err := io.ReadFull(r, b[0:2])
- if err != nil {
- return 0, err
- }
- return uint16(b[0])<<8 + uint16(b[1]), nil
-}
-
-func getBytes(r io.Reader, b []byte) ([]byte, os.Error) {
- n, err := getU16BE(r, b)
- if err != nil {
- return nil, err
- }
- if int(n) > len(b) {
- return nil, os.NewError("bytes too long for buffer")
- }
- _, err = io.ReadFull(r, b[0:n])
- if err != nil {
- return nil, err
- }
- return b[0:n], nil
-}
-
-func getString(r io.Reader, b []byte) (string, os.Error) {
- b, err := getBytes(r, b)
- if err != nil {
- return "", err
- }
- return string(b), nil
-}
-
-// readAuthority reads the X authority file for the DISPLAY.
-// If hostname == "" or hostname == "localhost",
-// readAuthority uses the system's hostname (as returned by os.Hostname) instead.
-func readAuthority(hostname, display string) (name string, data []byte, err os.Error) {
- // b is a scratch buffer to use and should be at least 256 bytes long
- // (i.e. it should be able to hold a hostname).
- var b [256]byte
-
- // As per /usr/include/X11/Xauth.h.
- const familyLocal = 256
-
- if len(hostname) == 0 || hostname == "localhost" {
- hostname, err = os.Hostname()
- if err != nil {
- return "", nil, err
- }
- }
-
- fname := os.Getenv("XAUTHORITY")
- if len(fname) == 0 {
- home := os.Getenv("HOME")
- if len(home) == 0 {
- err = os.NewError("Xauthority not found: $XAUTHORITY, $HOME not set")
- return "", nil, err
- }
- fname = home + "/.Xauthority"
- }
-
- r, err := os.Open(fname, os.O_RDONLY, 0444)
- if err != nil {
- return "", nil, err
- }
- defer r.Close()
-
- br := bufio.NewReader(r)
- for {
- family, err := getU16BE(br, b[0:2])
- if err != nil {
- return "", nil, err
- }
-
- addr, err := getString(br, b[0:])
- if err != nil {
- return "", nil, err
- }
-
- disp, err := getString(br, b[0:])
- if err != nil {
- return "", nil, err
- }
-
- name0, err := getString(br, b[0:])
- if err != nil {
- return "", nil, err
- }
-
- data0, err := getBytes(br, b[0:])
- if err != nil {
- return "", nil, err
- }
-
- if family == familyLocal && addr == hostname && disp == display {
- return name0, data0, nil
- }
- }
- panic("unreachable")
-}
diff --git a/src/pkg/xgb/example.go b/src/pkg/xgb/example.go
deleted file mode 100644
index c603ea4e2..000000000
--- a/src/pkg/xgb/example.go
+++ /dev/null
@@ -1,67 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package main
-
-import (
- "fmt"
- "os"
- "xgb"
-)
-
-func main() {
- c, err := xgb.Dial(os.Getenv("DISPLAY"))
- if err != nil {
- fmt.Printf("cannot connect: %v\n", err)
- os.Exit(1)
- }
-
- fmt.Printf("vendor = '%s'\n", string(c.Setup.Vendor))
-
- win := c.NewId()
- gc := c.NewId()
-
- c.CreateWindow(0, win, c.DefaultScreen().Root, 150, 150, 200, 200, 0, 0, 0, 0, nil)
- c.ChangeWindowAttributes(win, xgb.CWEventMask,
- []uint32{xgb.EventMaskExposure | xgb.EventMaskKeyRelease})
- c.CreateGC(gc, win, 0, nil)
- c.MapWindow(win)
-
- atom, _ := c.InternAtom(0, "HELLO")
- fmt.Printf("atom = %d\n", atom.Atom)
-
- points := make([]xgb.Point, 2)
- points[0] = xgb.Point{5, 5}
- points[1] = xgb.Point{100, 120}
-
- hosts, _ := c.ListHosts()
- fmt.Printf("hosts = %+v\n", hosts)
-
- ecookie := c.ListExtensionsRequest()
- exts, _ := c.ListExtensionsReply(ecookie)
- for _, name := range exts.Names {
- fmt.Printf("exts = '%s'\n", name.Name)
- }
-
- for {
- reply, err := c.WaitForEvent()
- if err != nil {
- fmt.Printf("error: %v\n", err)
- os.Exit(1)
- }
- fmt.Printf("event %T\n", reply)
- switch event := reply.(type) {
- case xgb.ExposeEvent:
- c.PolyLine(xgb.CoordModeOrigin, win, gc, points)
- case xgb.KeyReleaseEvent:
- fmt.Printf("key release!\n")
- points[0].X = event.EventX
- points[0].Y = event.EventY
- c.PolyLine(xgb.CoordModeOrigin, win, gc, points)
- c.Bell(75)
- }
- }
-
- c.Close()
-}
diff --git a/src/pkg/xgb/go_client.py b/src/pkg/xgb/go_client.py
deleted file mode 100644
index f26548000..000000000
--- a/src/pkg/xgb/go_client.py
+++ /dev/null
@@ -1,704 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2009 The Go Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style
-# license that can be found in the LICENSE file.
-
-from xml.etree.cElementTree import *
-from os.path import basename, exists
-import getopt
-import sys
-import re
-import math
-
-_ns = None
-
-outfile = None
-golines = []
-def go(fmt, *args):
- golines.append(fmt % args)
-
-namere = re.compile('([A-Z0-9][a-z]+|[A-Z0-9]+(?![a-z])|[a-z]+)')
-allcaps = re.compile('^[A-Z0-9]+$')
-
-sizeoftab = {
- "byte": 1,
- "int8": 1,
- "uint8": 1,
- "int16": 2,
- "uint16": 2,
- "int32": 4,
- "uint32": 4,
- "float32": 4,
- "float64": 8,
- "Id": 4,
- "Keysym": 4,
- "Timestamp": 4,
-}
-
-def sizeof(t):
- if t in sizeoftab:
- return sizeoftab[t]
- return 4
-
-symbols = []
-
-def readsymbols(filename):
- symbols.append("XXX Dummy XXX")
- if exists(filename):
- for line in open(filename, 'r').readlines():
- symbols.append(line.strip())
-
-#
-# Name munging crap for names, enums and types.
-#
-
-mangletab = {
- "int8_t": "int8",
- "uint8_t": "byte",
- "uint16_t": "uint16",
- "uint32_t": "uint32",
- "int16_t": "int16",
- "int32_t": "int32",
- "float": "float32",
- "double": "float64",
- "char": "byte",
- "void": "byte",
- 'VISUALTYPE': 'VisualInfo',
- 'DEPTH': 'DepthInfo',
- 'SCREEN': 'ScreenInfo',
- 'Setup': 'SetupInfo',
- 'WINDOW': 'Id',
-}
-
-def mangle(str):
- if str in mangletab:
- return mangletab[str]
- return str
-
-def camel(str):
- return str[0].upper() + str[1:]
-def uncamel(str):
- return str[0].lower() + str[1:]
-
-def nitem(str):
- split = namere.finditer(str)
- return ''.join([camel(match.group(0)) for match in split])
-
-def titem(str):
- str = mangle(str)
- if str in sizeoftab:
- return str
- if allcaps.match(str):
- return str.capitalize()
- return nitem(str)
-
-def n(list):
- "Mangle name (JoinedCamelCase) and chop off 'xcb' prefix."
- if len(list) == 1:
- parts = [nitem(list[0])]
- else:
- parts = [nitem(x) for x in list[1:]]
- return ''.join(parts)
-
-def t(list):
- "Mangle name (JoinedCamelCase) and chop off 'xcb' prefix. Preserve primitive type names."
- if len(list) == 1:
- return titem(list[0])
- else:
- parts = [titem(x) for x in list[1:]]
- return ''.join(parts)
-
-#
-# Various helper functions
-#
-
-def go_type_setup(self, name, postfix):
- '''
- Sets up all the Go-related state by adding additional data fields to
- all Field and Type objects. Here is where we figure out most of our
- variable and function names.
-
- Recurses into child fields and list member types.
- '''
- # Do all the various names in advance
- self.c_type = t(name + postfix)
- self.c_request_name = n(name)
- self.c_reply_name = n(name + ('Reply',))
- self.c_reply_type = t(name + ('Reply',))
-
- if not self.is_container:
- return
-
- offset = 0
- for field in self.fields:
- go_type_setup(field.type, field.field_type, ())
- if field.type.is_list:
- go_type_setup(field.type.member, field.field_type, ())
- field.c_field_type = t(field.field_type)
- field.c_field_name = n((field.field_name,))
- field.c_subscript = '[%d]' % field.type.nmemb if (field.type.nmemb > 1) else ''
- field.c_pointer = ' ' if field.type.nmemb == 1 else '[]'
- field.c_offset = offset
- if field.type.fixed_size():
- offset += field.type.size * field.type.nmemb
-
-def go_accessor_length(expr, prefix, iswriting):
- '''
- Figures out what C code is needed to get a length field.
- For fields that follow a variable-length field, use the accessor.
- Otherwise, just reference the structure field directly.
- '''
- prefarrow = '' if prefix == '' else prefix + '.'
- if expr.lenfield_name != None:
- lenstr = prefarrow + n((expr.lenfield_name,))
- if iswriting and lenstr.endswith("Len"):
- # chop off ...Len and refer to len(array) instead
- return "len(" + lenstr[:-3] + ")"
- return "int(" + lenstr + ")"
- else:
- return str(expr.nmemb)
-
-def go_accessor_expr(expr, prefix, iswriting):
- '''
- Figures out what C code is needed to get the length of a list field.
- Recurses for math operations.
- Returns bitcount for value-mask fields.
- Otherwise, uses the value of the length field.
- '''
- lenexp = go_accessor_length(expr, prefix, iswriting)
- if expr.op != None:
- return '(' + go_accessor_expr(expr.lhs, prefix, iswriting) + ' ' + expr.op + ' ' + go_accessor_expr(expr.rhs, prefix, iswriting) + ')'
- elif expr.bitfield:
- return 'popCount(' + lenexp + ')'
- else:
- return lenexp
-
-def go_complex(self, fieldlist=None):
- '''
- Helper function for handling all structure types.
- Called for all structs, requests, replies, events, errors.
- '''
- if self.is_union:
- go('type %s struct /*union */ {', self.c_type)
- else:
- go('type %s struct {', self.c_type)
- if not fieldlist:
- fieldlist = self.fields
- for field in fieldlist:
- if field.type.is_pad:
- continue
- if field.wire and field.type.fixed_size():
- go(' %s %s%s', field.c_field_name, field.c_subscript, field.c_field_type)
- if field.wire and not field.type.fixed_size():
- go(' %s []%s', field.c_field_name, field.c_field_type)
- go('}')
- go('')
-
-def go_get(dst, ofs, typename, typesize):
- dst = "v." + dst
- if typesize == 1:
- if typename == 'byte':
- go('%s = b[%s]', dst, ofs)
- else:
- go('%s = %s(b[%s])', dst, typename, ofs)
- elif typesize == 2:
- if typename == 'uint16':
- go('%s = get16(b[%s:])', dst, ofs)
- else:
- go('%s = %s(get16(b[%s:]))', dst, typename, ofs)
- elif typesize == 4:
- if typename == 'uint32':
- go('%s = get32(b[%s:])', dst, ofs)
- else:
- go('%s = %s(get32(b[%s:]))', dst, typename, ofs)
- else:
- go('get%s(b[%s:], &%s)', typename, ofs, dst)
-
-def go_get_list(dst, ofs, typename, typesize, count):
- if typesize == 1 and typename == 'byte':
- go('copy(v.%s[0:%s], b[%s:])', dst, count, ofs)
- else:
- go('for i := 0; i < %s; i++ {', count)
- go_get(dst + "[i]", ofs + "+i*" + str(typesize), typename, typesize)
- go('}')
-
-
-def go_complex_reader_help(self, fieldlist):
- firstvar = 1
- total = 0
- for field in fieldlist:
- fieldname = field.c_field_name
- fieldtype = field.c_field_type
- if field.wire and field.type.fixed_size():
- total = field.c_offset + field.type.size * field.type.nmemb
- if field.type.is_pad:
- continue
- if field.type.nmemb == 1:
- go_get(fieldname, field.c_offset, fieldtype, field.type.size)
- else:
- go_get_list(fieldname, field.c_offset, fieldtype, field.type.size, field.type.nmemb)
- if field.wire and not field.type.fixed_size():
- lenstr = go_accessor_expr(field.type.expr, 'v', False)
- if firstvar:
- firstvar = 0
- go('offset := %d', field.c_offset)
- else:
- go('offset = pad(offset)')
- go('v.%s = make([]%s, %s)', fieldname, fieldtype, lenstr)
- if fieldtype in sizeoftab:
- go_get_list(fieldname, "offset", fieldtype, sizeoftab[fieldtype], "len(v."+fieldname+")")
- go('offset += len(v.%s) * %d', fieldname, sizeoftab[fieldtype])
- else:
- go('for i := 0; i < %s; i++ {', lenstr)
- go(' offset += get%s(b[offset:], &v.%s[i])', fieldtype, fieldname)
- go('}')
- if not firstvar:
- return 'offset'
- return str(total)
-
-def go_complex_reader(self):
- go('func get%s(b []byte, v *%s) int {', self.c_type, self.c_type)
- go(' return %s', go_complex_reader_help(self, self.fields))
- go('}')
- go('')
-
-def structsize(fieldlist):
- fixedtotal = 0
- for field in fieldlist:
- if field.wire and field.type.fixed_size():
- fixedtotal += field.type.size * field.type.nmemb
- return fixedtotal
-
-def go_put(src, ofs, typename, typesize):
- if typesize == 1:
- if typename == 'byte':
- go('b[%s] = %s', ofs, src)
- else:
- go('b[%s] = byte(%s)', ofs, src)
- elif typesize == 2:
- if typename == 'uint16':
- go('put16(b[%s:], %s)', ofs, src)
- else:
- go('put16(b[%s:], uint16(%s))', ofs, src)
- elif typesize == 4:
- if typename == 'uint32':
- go('put32(b[%s:], %s)', ofs, src)
- else:
- go('put32(b[%s:], uint32(%s))', ofs, src)
- else:
- go('put%s(b[%s:], %s)', typename, ofs, src)
-
-
-def go_complex_writer_help(fieldlist, prefix=''):
- prefarrow = '' if prefix == '' else prefix + '.'
- for field in fieldlist:
- fieldname = prefarrow + field.c_field_name
- fieldtype = field.c_field_type
- if fieldname.endswith("Len"):
- fieldname = "len(%s)" % fieldname[:-3]
- fieldtype = "(exp)"
- if not field.type.fixed_size():
- continue
- if field.type.is_expr:
- expstr = go_accessor_expr(field.type.expr, prefix, True)
- go_put(expstr, field.c_offset, "(exp)", field.type.size)
- elif not field.type.is_pad:
- if field.type.nmemb == 1:
- go_put(fieldname, field.c_offset, fieldtype, field.type.size)
- else:
- go(' copy(b[%d:%d], %s)', field.c_offset, field.c_offset + field.type.nmemb, fieldname)
-
-def go_complex_writer_arguments(param_fields, endstr):
- out = []
- for field in param_fields:
- namestr = field.c_field_name
- typestr = field.c_pointer + t(field.field_type)
- if typestr == '[]byte' and namestr == 'Name':
- typestr = 'string'
- out.append(namestr + ' ' + typestr)
- go(' ' + ', '.join(out) + ')' + endstr)
-
-def go_complex_writer_arguments_names(param_fields):
- out = []
- for field in param_fields:
- out.append(field.c_field_name)
- return ', '.join(out)
-
-def go_complex_writer(self, name, void):
- func_name = self.c_request_name
-
- param_fields = []
- wire_fields = []
- for field in self.fields:
- if field.visible:
- # _len is taken from the list directly
- if not field.field_name.endswith("_len"):
- # The field should appear as a call parameter
- param_fields.append(field)
- if field.wire and not field.auto:
- # We need to set the field up in the structure
- wire_fields.append(field)
-
- if void:
- go('func (c *Conn) %s(', func_name)
- go_complex_writer_arguments(param_fields, "{")
- else:
- go('func (c *Conn) %sRequest(', func_name)
- go_complex_writer_arguments(param_fields, "Cookie {")
-
- fixedlength = math.ceil(float(structsize(self.fields)) / float(4))
- fixedsize = fixedlength * 4
-
- if fixedsize <= 32:
- go(' b := c.scratch[0:%d]', fixedsize)
- else:
- go(' b := make([]byte, %d)', fixedsize)
- firstvar = 0
- for field in wire_fields:
- if not field.type.fixed_size():
- if not firstvar:
- firstvar = 1
- go(' n := %d', fixedsize)
- go(' n += pad(%s * %d)', go_accessor_expr(field.type.expr, '', True), field.type.size)
- if not firstvar:
- go(' put16(b[2:], %d)', fixedlength)
- else:
- go(' put16(b[2:], uint16(n / 4))')
- go(' b[0] = %s', self.opcode)
- go_complex_writer_help(wire_fields)
- if not void:
- if firstvar:
- go(' cookie := c.sendRequest(b)')
- else:
- go(' return c.sendRequest(b)')
- else:
- go(' c.sendRequest(b)')
-
- # send extra data
- for field in param_fields:
- if not field.type.fixed_size():
- if field.type.is_list:
- fieldname = field.c_field_name
- lenstr = go_accessor_expr(field.type.expr, '', True)
- if t(field.field_type) == 'byte':
- if fieldname == 'Name':
- go(' c.sendString(%s)', fieldname)
- else:
- go(' c.sendBytes(%s[0:%s])', fieldname, lenstr)
- elif t(field.field_type) == 'uint32':
- go(' c.sendUInt32List(%s[0:%s])', fieldname, lenstr)
- else:
- go(' c.send%sList(%s, %s)', t(field.field_type), fieldname, lenstr)
-
- if not void and firstvar:
- go(' return cookie')
- go('}')
- go('')
-
- if not void:
- args = go_complex_writer_arguments_names(param_fields)
- go('func (c *Conn) %s(', func_name)
- go_complex_writer_arguments(param_fields, '(*%s, os.Error) {' % self.c_reply_type)
- go(' return c.%sReply(c.%sRequest(%s))', func_name, func_name, args)
- go('}')
- go('')
-
-#
-# Struct definitions, readers and writers
-#
-
-def go_struct(self, name):
- go_type_setup(self, name, ())
- if symbols and t(name) not in symbols:
- go('// excluding struct %s\n', t(name))
- return
-
- if self.c_type == 'SetupRequest': return
- if self.c_type == 'SetupFailed': return
- if self.c_type == 'SetupAuthenticate': return
-
- go_complex(self)
- go_complex_reader(self)
-
- if self.c_type == 'Format': return
- if self.c_type == 'VisualInfo': return
- if self.c_type == 'DepthInfo': return
- if self.c_type == 'SetupInfo': return
- if self.c_type == 'ScreenInfo': return
-
- # omit variable length struct writers, they're never used
- if not self.fixed_size():
- go('// omitting variable length send%s', self.c_type)
- go('')
- return
-
- go('func (c *Conn) send%sList(list []%s, count int) {', self.c_type, self.c_type)
- go(' b0 := make([]byte, %d * count)', structsize(self.fields))
- go(' for k := 0; k < count; k++ {')
- go(' b := b0[k * %d:]', structsize(self.fields))
- go_complex_writer_help(self.fields, 'list[k]')
- go(' }')
- go(' c.sendBytes(b0)')
- go('}')
- go('')
-
-def go_union(self, name):
- pass
-
-#
-# Request writers with reply structs and readers where needed
-#
-
-def replyfields(self):
- l = []
- for field in self.fields:
- if field.type.is_pad or not field.wire: continue
- if field.field_name == 'response_type': continue
- if field.field_name == 'sequence': continue
- if field.field_name == 'length':
- if self.c_reply_name != 'GetImageReply' and self.c_reply_name != 'GetKeyboardMappingReply':
- continue
- l.append(field)
- return l
-
-def go_reply(self, name):
- '''
- Declares the function that returns the reply structure.
- '''
- fields = replyfields(self.reply)
- go_complex(self.reply, fields)
- go('func (c *Conn) %s(cookie Cookie) (*%s, os.Error) {', self.c_reply_name, self.c_reply_type)
- go(' b, error := c.waitForReply(cookie)')
- go(' if error != nil { return nil, error }')
- go(' v := new(%s)', self.c_reply_type)
- go_complex_reader_help(self.reply, fields)
- go(' return v, nil')
- go('}')
- go('')
-
-def go_request(self, name):
- '''
- Exported function that handles request declarations.
- '''
- go_type_setup(self, name, ('Request',))
- if symbols and n(name) not in symbols:
- go('// excluding request %s\n', n(name))
- return
-
- if self.reply:
- go_complex_writer(self, name, False)
- go_type_setup(self.reply, name, ('Reply',))
- go_reply(self, name)
- else:
- go_complex_writer(self, name, True)
-
-#
-# Event structs and readers
-#
-
-def eventfields(self):
- l = []
- for field in self.fields:
- if field.type.is_pad or not field.wire: continue
- if field.field_name == 'response_type': continue
- if field.field_name == 'sequence': continue
- l.append(field)
- return l
-
-eventlist = []
-
-def dumpeventlist():
- go('func parseEvent(buf []byte) (Event, os.Error) {')
- go(' switch buf[0] {')
- for event in eventlist:
- go(' case %s: return get%sEvent(buf), nil', event, event)
- go(' }')
- go(' return nil, os.NewError("unknown event type")')
- go('}')
-
-def go_event(self, name):
- '''
- Exported function that handles event declarations.
- '''
- go_type_setup(self, name, ('Event',))
- if symbols and t(name) not in symbols:
- go('// excluding event %s\n', t(name))
- return
-
- eventlist.append(n(name))
-
- go('const %s = %s', t(name), self.opcodes[name])
- go('')
- fields = eventfields(self)
- if self.name == name:
- # Structure definition
- go_complex(self, fields)
- go('func get%s(b []byte) %s {', self.c_type, self.c_type)
- go(' var v %s', self.c_type)
- go_complex_reader_help(self, fields)
- go(' return v')
- go('}')
- go('')
- else:
- # maybe skip this depending on how it interacts with type switching on interfaces
- go('type %s %s', n(name + ('Event',)), n(self.name + ('Event',)))
- go('')
- go('func get%s(b []byte) %s {', self.c_type, self.c_type)
- go(' return (%s)(get%s(b))', n(name + ('Event',)), n(self.name + ('Event',)))
- go('}')
- go('')
-
-#
-# Map simple types to primitive types
-#
-
-def go_simple(self, name):
- '''
- Exported function that handles cardinal type declarations.
- These are types which are typedef'd to one of the CARDx's, char, float, etc.
- We stick them into the mangletab. Lop off xcb prefix.
- '''
- go_type_setup(self, name, ())
- if self.name != name:
- if _ns.is_ext:
- name = name[2]
- else:
- name = name[1]
- if name == "KEYSYM":
- mangletab[name] = "Keysym"
- elif name == "TIMESTAMP":
- mangletab[name] = "Timestamp"
- elif self.size == 4:
- mangletab[name] = "Id"
- else:
- mangletab[name] = t(self.name)
-
-#
-# Dump enums as consts, calculate implicit values instead
-# of using iota.
-#
-
-def go_enum(self, name):
- if symbols and t(name) not in symbols:
- go('// excluding enum %s\n', t(name))
- return
- go('const (')
- iota = 0
- for (enam, eval) in self.values:
- if str(eval) == '':
- iota = iota + 1
- eval = iota
- else:
- iota = int(eval)
- if name[1] == 'Atom':
- s = name[1] + "".join([x.capitalize() for x in enam.split("_")])
- else:
- s = n(name + (enam,))
- go(' %s = %s', s, eval)
- go(')')
- go('')
-
-errorlist = []
-
-def dumperrorlist():
- go('var errorNames = map[byte]string{')
- for error in errorlist:
- go(' Bad%s: "%s",', error, error)
- go('}')
- go('')
-
-def go_error(self, name):
- '''
- Exported function that handles error declarations.
- '''
- errorlist.append(n(name))
- go('const Bad%s = %s', n(name), self.opcodes[name])
- go('')
-
-#
-# Create the go file
-#
-
-def go_open(self):
- '''
- Exported function that handles module open.
- Opens the files and writes out the auto-generated code.
- '''
- global _ns
- _ns = self.namespace
-
- go('// This file was generated automatically from %s.', _ns.file)
- go('')
- go('package xgb')
- go('')
- go('import "os"')
- go('')
-
- if _ns.is_ext:
- go('const %s_MAJOR_VERSION = %s', _ns.ext_name.upper(), _ns.major_version)
- go('const %s_MINOR_VERSION = %s', _ns.ext_name.upper(), _ns.minor_version)
- go('')
-
-def go_close(self):
- '''
- Exported function that handles module close.
- '''
- global outfile
- if len(eventlist) > 0:
- dumpeventlist()
- if len(errorlist) > 0:
- dumperrorlist()
- if not outfile:
- outfile = '%s.go' % _ns.header
- gofile = open(outfile, 'w')
- for line in golines:
- gofile.write(line)
- gofile.write('\n')
- gofile.close()
-
-# Main routine starts here
-
-# Must create an "output" dictionary before any xcbgen imports.
-output = {'open' : go_open,
- 'close' : go_close,
- 'simple' : go_simple,
- 'enum' : go_enum,
- 'struct' : go_struct,
- 'union' : go_union,
- 'request' : go_request,
- 'event' : go_event,
- 'error' : go_error
- }
-
-# Boilerplate below this point
-
-# Check for the argument that specifies path to the xcbgen python package.
-try:
- opts, args = getopt.getopt(sys.argv[1:], 'p:s:o:')
-except getopt.GetoptError, err:
- print str(err)
- print 'Usage: go_client.py [-p path] [-s symbol_list_file] [-o output.go] file.xml'
- sys.exit(1)
-
-for (opt, arg) in opts:
- if opt == '-p':
- sys.path.append(arg)
- if opt == '-s':
- readsymbols(arg)
- if opt == '-o':
- outfile = arg
-
-# Import the module class
-try:
- from xcbgen.state import Module
-except ImportError:
- print 'Failed to load the xcbgen Python package!'
- print 'Make sure that xcb/proto installed it on your Python path,'
- print 'or pass the path with -p.'
- print ''
- raise
-
-module = Module(args[0], output)
-module.register()
-module.resolve()
-module.generate()
diff --git a/src/pkg/xgb/xgb.go b/src/pkg/xgb/xgb.go
deleted file mode 100644
index 3f292ae28..000000000
--- a/src/pkg/xgb/xgb.go
+++ /dev/null
@@ -1,464 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// The XGB package implements the X11 core protocol.
-// It is based on XCB: http://xcb.freedesktop.org/
-package xgb
-
-import (
- "fmt"
- "io"
- "net"
- "os"
- "strconv"
- "strings"
-)
-
-// A Conn represents a connection to an X server.
-// Only one goroutine should use a Conn's methods at a time.
-type Conn struct {
- host string
- conn net.Conn
- nextId Id
- nextCookie Cookie
- replies map[Cookie][]byte
- events queue
- err os.Error
- display string
- defaultScreen int
- scratch [32]byte
- Setup SetupInfo
-}
-
-// Id is used for all X identifiers, such as windows, pixmaps, and GCs.
-type Id uint32
-
-// Cookies are the sequence numbers used to pair replies up with their requests
-type Cookie uint16
-
-type Keysym uint32
-type Timestamp uint32
-
-// Event is an interface that can contain any of the events returned by the server.
-// Use a type assertion switch to extract the Event structs.
-type Event interface{}
-
-// Error contains protocol errors returned to us by the X server.
-type Error struct {
- Detail uint8
- Major uint8
- Minor uint16
- Cookie Cookie
- Id Id
-}
-
-func (e *Error) String() string {
- return fmt.Sprintf("Bad%s (major=%d minor=%d cookie=%d id=0x%x)",
- errorNames[e.Detail], e.Major, e.Minor, e.Cookie, e.Id)
-}
-
-// NewID generates a new unused ID for use with requests like CreateWindow.
-func (c *Conn) NewId() Id {
- id := c.nextId
- // TODO: handle ID overflow
- c.nextId++
- return id
-}
-
-// Pad a length to align on 4 bytes.
-func pad(n int) int { return (n + 3) & ^3 }
-
-func put16(buf []byte, v uint16) {
- buf[0] = byte(v)
- buf[1] = byte(v >> 8)
-}
-
-func put32(buf []byte, v uint32) {
- buf[0] = byte(v)
- buf[1] = byte(v >> 8)
- buf[2] = byte(v >> 16)
- buf[3] = byte(v >> 24)
-}
-
-func get16(buf []byte) uint16 {
- v := uint16(buf[0])
- v |= uint16(buf[1]) << 8
- return v
-}
-
-func get32(buf []byte) uint32 {
- v := uint32(buf[0])
- v |= uint32(buf[1]) << 8
- v |= uint32(buf[2]) << 16
- v |= uint32(buf[3]) << 24
- return v
-}
-
-// Voodoo to count the number of bits set in a value list mask.
-func popCount(mask0 int) int {
- mask := uint32(mask0)
- n := 0
- for i := uint32(0); i < 32; i++ {
- if mask&(1<<i) != 0 {
- n++
- }
- }
- return n
-}
-
-// A simple queue used to stow away events.
-type queue struct {
- data [][]byte
- a, b int
-}
-
-func (q *queue) queue(item []byte) {
- if q.b == len(q.data) {
- if q.a > 0 {
- copy(q.data, q.data[q.a:q.b])
- q.a, q.b = 0, q.b-q.a
- } else {
- newData := make([][]byte, (len(q.data)*3)/2)
- copy(newData, q.data)
- q.data = newData
- }
- }
- q.data[q.b] = item
- q.b++
-}
-
-func (q *queue) dequeue() []byte {
- if q.a < q.b {
- item := q.data[q.a]
- q.a++
- return item
- }
- return nil
-}
-
-// sendRequest sends a request to the server and return its associated sequence number, or cookie.
-// It is only used to send the fixed length portion of the request, sendBytes and friends are used
-// to send any additional variable length data.
-func (c *Conn) sendRequest(buf []byte) Cookie {
- if _, err := c.conn.Write(buf); err != nil {
- fmt.Fprintf(os.Stderr, "x protocol write error: %s\n", err)
- c.err = err
- }
- cookie := c.nextCookie
- c.nextCookie++
- return cookie
-}
-
-// sendPadding sends enough bytes to align to a 4-byte border.
-// It is used to pad the variable length data that is used with some requests.
-func (c *Conn) sendPadding(n int) {
- x := pad(n) - n
- if x > 0 {
- _, err := c.conn.Write(c.scratch[0:x])
- if err != nil {
- fmt.Fprintf(os.Stderr, "x protocol write error: %s\n", err)
- c.err = err
- }
- }
-}
-
-// sendBytes sends a byte slice as variable length data after the fixed portion of a request,
-// along with any necessary padding.
-func (c *Conn) sendBytes(buf []byte) {
- if _, err := c.conn.Write(buf); err != nil {
- fmt.Fprintf(os.Stderr, "x protocol write error: %s\n", err)
- c.err = err
- }
- c.sendPadding(len(buf))
-}
-
-func (c *Conn) sendString(str string) { c.sendBytes([]byte(str)) }
-
-// sendUInt32s sends a list of 32-bit integers as variable length data.
-func (c *Conn) sendUInt32List(list []uint32) {
- buf := make([]byte, len(list)*4)
- for i := 0; i < len(list); i++ {
- put32(buf[i*4:], list[i])
- }
- c.sendBytes(buf)
-}
-
-func (c *Conn) sendIdList(list []Id, length int) {
- buf := make([]byte, length*4)
- for i := 0; i < length; i++ {
- put32(buf[i*4:], uint32(list[i]))
- }
- c.sendBytes(buf)
-}
-
-func (c *Conn) sendKeysymList(list []Keysym, length int) {
- buf := make([]byte, length*4)
- for i := 0; i < length; i++ {
- put32(buf[i*4:], uint32(list[i]))
- }
- c.sendBytes(buf)
-}
-
-// readNextReply reads and processes the next server reply.
-// If it is a protocol error then it is returned as an Error.
-// Events are pushed onto the event queue and replies to requests
-// are stashed away in a map indexed by the sequence number.
-func (c *Conn) readNextReply() os.Error {
- buf := make([]byte, 32)
- if _, err := io.ReadFull(c.conn, buf); err != nil {
- fmt.Fprintf(os.Stderr, "x protocol read error: %s\n", err)
- return err
- }
-
- switch buf[0] {
- case 0:
- err := &Error{
- Detail: buf[1],
- Cookie: Cookie(get16(buf[2:])),
- Id: Id(get32(buf[4:])),
- Minor: get16(buf[8:]),
- Major: buf[10],
- }
- fmt.Fprintf(os.Stderr, "x protocol error: %s\n", err)
- return err
-
- case 1:
- seq := Cookie(get16(buf[2:]))
- size := get32(buf[4:])
- if size > 0 {
- bigbuf := make([]byte, 32+size*4, 32+size*4)
- copy(bigbuf[0:32], buf)
- if _, err := io.ReadFull(c.conn, bigbuf[32:]); err != nil {
- fmt.Fprintf(os.Stderr, "x protocol read error: %s\n", err)
- return err
- }
- c.replies[seq] = bigbuf
- } else {
- c.replies[seq] = buf
- }
-
- default:
- c.events.queue(buf)
- }
-
- return nil
-}
-
-// waitForReply looks for a reply in the map indexed by sequence number.
-// If the reply is not in the map it will block while reading replies from the server
-// until the reply is found or an error occurs.
-func (c *Conn) waitForReply(cookie Cookie) ([]byte, os.Error) {
- for {
- if reply, ok := c.replies[cookie]; ok {
- c.replies[cookie] = reply, false
- return reply, nil
- }
- if err := c.readNextReply(); err != nil {
- return nil, err
- }
- }
- panic("unreachable")
-}
-
-// WaitForEvent returns the next event from the server.
-// It will block until an event is available.
-func (c *Conn) WaitForEvent() (Event, os.Error) {
- for {
- if reply := c.events.dequeue(); reply != nil {
- return parseEvent(reply)
- }
- if err := c.readNextReply(); err != nil {
- return nil, err
- }
- }
- panic("unreachable")
-}
-
-// PollForEvent returns the next event from the server if one is available in the internal queue.
-// It will not read from the connection, so you must call WaitForEvent to receive new events.
-// Only use this function to empty the queue without blocking.
-func (c *Conn) PollForEvent() (Event, os.Error) {
- if reply := c.events.dequeue(); reply != nil {
- return parseEvent(reply)
- }
- return nil, nil
-}
-
-// Dial connects to the X server given in the 'display' string.
-// If 'display' is empty it will be taken from os.Getenv("DISPLAY").
-//
-// Examples:
-// Dial(":1") // connect to net.Dial("unix", "", "/tmp/.X11-unix/X1")
-// Dial("/tmp/launch-123/:0") // connect to net.Dial("unix", "", "/tmp/launch-123/:0")
-// Dial("hostname:2.1") // connect to net.Dial("tcp", "", "hostname:6002")
-// Dial("tcp/hostname:1.0") // connect to net.Dial("tcp", "", "hostname:6001")
-func Dial(display string) (*Conn, os.Error) {
- c, err := connect(display)
- if err != nil {
- return nil, err
- }
-
- // Get authentication data
- authName, authData, err := readAuthority(c.host, c.display)
- if err != nil {
- return nil, err
- }
-
- // Assume that the authentication protocol is "MIT-MAGIC-COOKIE-1".
- if authName != "MIT-MAGIC-COOKIE-1" || len(authData) != 16 {
- return nil, os.NewError("unsupported auth protocol " + authName)
- }
-
- buf := make([]byte, 12+pad(len(authName))+pad(len(authData)))
- buf[0] = 0x6c
- buf[1] = 0
- put16(buf[2:], 11)
- put16(buf[4:], 0)
- put16(buf[6:], uint16(len(authName)))
- put16(buf[8:], uint16(len(authData)))
- put16(buf[10:], 0)
- copy(buf[12:], []byte(authName))
- copy(buf[12+pad(len(authName)):], authData)
- if _, err = c.conn.Write(buf); err != nil {
- return nil, err
- }
-
- head := make([]byte, 8)
- if _, err = io.ReadFull(c.conn, head[0:8]); err != nil {
- return nil, err
- }
- code := head[0]
- reasonLen := head[1]
- major := get16(head[2:])
- minor := get16(head[4:])
- dataLen := get16(head[6:])
-
- if major != 11 || minor != 0 {
- return nil, os.NewError(fmt.Sprintf("x protocol version mismatch: %d.%d", major, minor))
- }
-
- buf = make([]byte, int(dataLen)*4+8, int(dataLen)*4+8)
- copy(buf, head)
- if _, err = io.ReadFull(c.conn, buf[8:]); err != nil {
- return nil, err
- }
-
- if code == 0 {
- reason := buf[8 : 8+reasonLen]
- return nil, os.NewError(fmt.Sprintf("x protocol authentication refused: %s", string(reason)))
- }
-
- getSetupInfo(buf, &c.Setup)
-
- if c.defaultScreen >= len(c.Setup.Roots) {
- c.defaultScreen = 0
- }
-
- c.nextId = Id(c.Setup.ResourceIdBase)
- c.nextCookie = 1
- c.replies = make(map[Cookie][]byte)
- c.events = queue{make([][]byte, 100), 0, 0}
- return c, nil
-}
-
-// Close closes the connection to the X server.
-func (c *Conn) Close() { c.conn.Close() }
-
-// DefaultScreen returns the Screen info for the default screen, which is
-// 0 or the one given in the display argument to Dial.
-func (c *Conn) DefaultScreen() *ScreenInfo { return &c.Setup.Roots[c.defaultScreen] }
-
-
-// ClientMessageData holds the data from a client message,
-// duplicated in three forms because Go doesn't have unions.
-type ClientMessageData struct {
- Data8 [20]byte
- Data16 [10]uint16
- Data32 [5]uint32
-}
-
-func getClientMessageData(b []byte, v *ClientMessageData) int {
- copy(&v.Data8, b)
- for i := 0; i < 10; i++ {
- v.Data16[i] = get16(b[i*2:])
- }
- for i := 0; i < 5; i++ {
- v.Data32[i] = get32(b[i*4:])
- }
- return 20
-}
-
-func connect(display string) (*Conn, os.Error) {
- if len(display) == 0 {
- display = os.Getenv("DISPLAY")
- }
-
- display0 := display
- if len(display) == 0 {
- return nil, os.NewError("empty display string")
- }
-
- colonIdx := strings.LastIndex(display, ":")
- if colonIdx < 0 {
- return nil, os.NewError("bad display string: " + display0)
- }
-
- var protocol, socket string
- c := new(Conn)
-
- if display[0] == '/' {
- socket = display[0:colonIdx]
- } else {
- slashIdx := strings.LastIndex(display, "/")
- if slashIdx >= 0 {
- protocol = display[0:slashIdx]
- c.host = display[slashIdx+1 : colonIdx]
- } else {
- c.host = display[0:colonIdx]
- }
- }
-
- display = display[colonIdx+1 : len(display)]
- if len(display) == 0 {
- return nil, os.NewError("bad display string: " + display0)
- }
-
- var scr string
- dotIdx := strings.LastIndex(display, ".")
- if dotIdx < 0 {
- c.display = display[0:]
- } else {
- c.display = display[0:dotIdx]
- scr = display[dotIdx+1:]
- }
-
- dispnum, err := strconv.Atoui(c.display)
- if err != nil {
- return nil, os.NewError("bad display string: " + display0)
- }
-
- if len(scr) != 0 {
- c.defaultScreen, err = strconv.Atoi(scr)
- if err != nil {
- return nil, os.NewError("bad display string: " + display0)
- }
- }
-
- // Connect to server
- if len(socket) != 0 {
- c.conn, err = net.Dial("unix", "", socket+":"+c.display)
- } else if len(c.host) != 0 {
- if protocol == "" {
- protocol = "tcp"
- }
- c.conn, err = net.Dial(protocol, "", c.host+":"+strconv.Uitoa(6000+dispnum))
- } else {
- c.conn, err = net.Dial("unix", "", "/tmp/.X11-unix/X"+c.display)
- }
-
- if err != nil {
- return nil, os.NewError("cannot connect to " + display0 + ": " + err.String())
- }
- return c, nil
-}
diff --git a/src/pkg/xgb/xproto.go b/src/pkg/xgb/xproto.go
deleted file mode 100644
index 821b88304..000000000
--- a/src/pkg/xgb/xproto.go
+++ /dev/null
@@ -1,4153 +0,0 @@
-// This file was generated automatically from xproto.xml.
-
-package xgb
-
-import "os"
-
-type Char2b struct {
- Byte1 byte
- Byte2 byte
-}
-
-func getChar2b(b []byte, v *Char2b) int {
- v.Byte1 = b[0]
- v.Byte2 = b[1]
- return 2
-}
-
-func (c *Conn) sendChar2bList(list []Char2b, count int) {
- b0 := make([]byte, 2*count)
- for k := 0; k < count; k++ {
- b := b0[k*2:]
- b[0] = list[k].Byte1
- b[1] = list[k].Byte2
- }
- c.sendBytes(b0)
-}
-
-type Point struct {
- X int16
- Y int16
-}
-
-func getPoint(b []byte, v *Point) int {
- v.X = int16(get16(b[0:]))
- v.Y = int16(get16(b[2:]))
- return 4
-}
-
-func (c *Conn) sendPointList(list []Point, count int) {
- b0 := make([]byte, 4*count)
- for k := 0; k < count; k++ {
- b := b0[k*4:]
- put16(b[0:], uint16(list[k].X))
- put16(b[2:], uint16(list[k].Y))
- }
- c.sendBytes(b0)
-}
-
-type Rectangle struct {
- X int16
- Y int16
- Width uint16
- Height uint16
-}
-
-func getRectangle(b []byte, v *Rectangle) int {
- v.X = int16(get16(b[0:]))
- v.Y = int16(get16(b[2:]))
- v.Width = get16(b[4:])
- v.Height = get16(b[6:])
- return 8
-}
-
-func (c *Conn) sendRectangleList(list []Rectangle, count int) {
- b0 := make([]byte, 8*count)
- for k := 0; k < count; k++ {
- b := b0[k*8:]
- put16(b[0:], uint16(list[k].X))
- put16(b[2:], uint16(list[k].Y))
- put16(b[4:], list[k].Width)
- put16(b[6:], list[k].Height)
- }
- c.sendBytes(b0)
-}
-
-type Arc struct {
- X int16
- Y int16
- Width uint16
- Height uint16
- Angle1 int16
- Angle2 int16
-}
-
-func getArc(b []byte, v *Arc) int {
- v.X = int16(get16(b[0:]))
- v.Y = int16(get16(b[2:]))
- v.Width = get16(b[4:])
- v.Height = get16(b[6:])
- v.Angle1 = int16(get16(b[8:]))
- v.Angle2 = int16(get16(b[10:]))
- return 12
-}
-
-func (c *Conn) sendArcList(list []Arc, count int) {
- b0 := make([]byte, 12*count)
- for k := 0; k < count; k++ {
- b := b0[k*12:]
- put16(b[0:], uint16(list[k].X))
- put16(b[2:], uint16(list[k].Y))
- put16(b[4:], list[k].Width)
- put16(b[6:], list[k].Height)
- put16(b[8:], uint16(list[k].Angle1))
- put16(b[10:], uint16(list[k].Angle2))
- }
- c.sendBytes(b0)
-}
-
-type Format struct {
- Depth byte
- BitsPerPixel byte
- ScanlinePad byte
-}
-
-func getFormat(b []byte, v *Format) int {
- v.Depth = b[0]
- v.BitsPerPixel = b[1]
- v.ScanlinePad = b[2]
- return 8
-}
-
-const (
- VisualClassStaticGray = 0
- VisualClassGrayScale = 1
- VisualClassStaticColor = 2
- VisualClassPseudoColor = 3
- VisualClassTrueColor = 4
- VisualClassDirectColor = 5
-)
-
-type VisualInfo struct {
- VisualId Id
- Class byte
- BitsPerRgbValue byte
- ColormapEntries uint16
- RedMask uint32
- GreenMask uint32
- BlueMask uint32
-}
-
-func getVisualInfo(b []byte, v *VisualInfo) int {
- v.VisualId = Id(get32(b[0:]))
- v.Class = b[4]
- v.BitsPerRgbValue = b[5]
- v.ColormapEntries = get16(b[6:])
- v.RedMask = get32(b[8:])
- v.GreenMask = get32(b[12:])
- v.BlueMask = get32(b[16:])
- return 24
-}
-
-type DepthInfo struct {
- Depth byte
- VisualsLen uint16
- Visuals []VisualInfo
-}
-
-func getDepthInfo(b []byte, v *DepthInfo) int {
- v.Depth = b[0]
- v.VisualsLen = get16(b[2:])
- offset := 8
- v.Visuals = make([]VisualInfo, int(v.VisualsLen))
- for i := 0; i < int(v.VisualsLen); i++ {
- offset += getVisualInfo(b[offset:], &v.Visuals[i])
- }
- return offset
-}
-
-const (
- EventMaskNoEvent = 0
- EventMaskKeyPress = 1
- EventMaskKeyRelease = 2
- EventMaskButtonPress = 4
- EventMaskButtonRelease = 8
- EventMaskEnterWindow = 16
- EventMaskLeaveWindow = 32
- EventMaskPointerMotion = 64
- EventMaskPointerMotionHint = 128
- EventMaskButton1Motion = 256
- EventMaskButton2Motion = 512
- EventMaskButton3Motion = 1024
- EventMaskButton4Motion = 2048
- EventMaskButton5Motion = 4096
- EventMaskButtonMotion = 8192
- EventMaskKeymapState = 16384
- EventMaskExposure = 32768
- EventMaskVisibilityChange = 65536
- EventMaskStructureNotify = 131072
- EventMaskResizeRedirect = 262144
- EventMaskSubstructureNotify = 524288
- EventMaskSubstructureRedirect = 1048576
- EventMaskFocusChange = 2097152
- EventMaskPropertyChange = 4194304
- EventMaskColorMapChange = 8388608
- EventMaskOwnerGrabButton = 16777216
-)
-
-const (
- BackingStoreNotUseful = 0
- BackingStoreWhenMapped = 1
- BackingStoreAlways = 2
-)
-
-type ScreenInfo struct {
- Root Id
- DefaultColormap Id
- WhitePixel uint32
- BlackPixel uint32
- CurrentInputMasks uint32
- WidthInPixels uint16
- HeightInPixels uint16
- WidthInMillimeters uint16
- HeightInMillimeters uint16
- MinInstalledMaps uint16
- MaxInstalledMaps uint16
- RootVisual Id
- BackingStores byte
- SaveUnders byte
- RootDepth byte
- AllowedDepthsLen byte
- AllowedDepths []DepthInfo
-}
-
-func getScreenInfo(b []byte, v *ScreenInfo) int {
- v.Root = Id(get32(b[0:]))
- v.DefaultColormap = Id(get32(b[4:]))
- v.WhitePixel = get32(b[8:])
- v.BlackPixel = get32(b[12:])
- v.CurrentInputMasks = get32(b[16:])
- v.WidthInPixels = get16(b[20:])
- v.HeightInPixels = get16(b[22:])
- v.WidthInMillimeters = get16(b[24:])
- v.HeightInMillimeters = get16(b[26:])
- v.MinInstalledMaps = get16(b[28:])
- v.MaxInstalledMaps = get16(b[30:])
- v.RootVisual = Id(get32(b[32:]))
- v.BackingStores = b[36]
- v.SaveUnders = b[37]
- v.RootDepth = b[38]
- v.AllowedDepthsLen = b[39]
- offset := 40
- v.AllowedDepths = make([]DepthInfo, int(v.AllowedDepthsLen))
- for i := 0; i < int(v.AllowedDepthsLen); i++ {
- offset += getDepthInfo(b[offset:], &v.AllowedDepths[i])
- }
- return offset
-}
-
-const (
- ImageOrderLSBFirst = 0
- ImageOrderMSBFirst = 1
-)
-
-type SetupInfo struct {
- Status byte
- ProtocolMajorVersion uint16
- ProtocolMinorVersion uint16
- Length uint16
- ReleaseNumber uint32
- ResourceIdBase uint32
- ResourceIdMask uint32
- MotionBufferSize uint32
- VendorLen uint16
- MaximumRequestLength uint16
- RootsLen byte
- PixmapFormatsLen byte
- ImageByteOrder byte
- BitmapFormatBitOrder byte
- BitmapFormatScanlineUnit byte
- BitmapFormatScanlinePad byte
- MinKeycode byte
- MaxKeycode byte
- Vendor []byte
- PixmapFormats []Format
- Roots []ScreenInfo
-}
-
-func getSetupInfo(b []byte, v *SetupInfo) int {
- v.Status = b[0]
- v.ProtocolMajorVersion = get16(b[2:])
- v.ProtocolMinorVersion = get16(b[4:])
- v.Length = get16(b[6:])
- v.ReleaseNumber = get32(b[8:])
- v.ResourceIdBase = get32(b[12:])
- v.ResourceIdMask = get32(b[16:])
- v.MotionBufferSize = get32(b[20:])
- v.VendorLen = get16(b[24:])
- v.MaximumRequestLength = get16(b[26:])
- v.RootsLen = b[28]
- v.PixmapFormatsLen = b[29]
- v.ImageByteOrder = b[30]
- v.BitmapFormatBitOrder = b[31]
- v.BitmapFormatScanlineUnit = b[32]
- v.BitmapFormatScanlinePad = b[33]
- v.MinKeycode = b[34]
- v.MaxKeycode = b[35]
- offset := 40
- v.Vendor = make([]byte, int(v.VendorLen))
- copy(v.Vendor[0:len(v.Vendor)], b[offset:])
- offset += len(v.Vendor) * 1
- offset = pad(offset)
- v.PixmapFormats = make([]Format, int(v.PixmapFormatsLen))
- for i := 0; i < int(v.PixmapFormatsLen); i++ {
- offset += getFormat(b[offset:], &v.PixmapFormats[i])
- }
- offset = pad(offset)
- v.Roots = make([]ScreenInfo, int(v.RootsLen))
- for i := 0; i < int(v.RootsLen); i++ {
- offset += getScreenInfo(b[offset:], &v.Roots[i])
- }
- return offset
-}
-
-const (
- ModMaskShift = 1
- ModMaskLock = 2
- ModMaskControl = 4
- ModMask1 = 8
- ModMask2 = 16
- ModMask3 = 32
- ModMask4 = 64
- ModMask5 = 128
- ModMaskAny = 32768
-)
-
-const (
- KeyButMaskShift = 1
- KeyButMaskLock = 2
- KeyButMaskControl = 4
- KeyButMaskMod1 = 8
- KeyButMaskMod2 = 16
- KeyButMaskMod3 = 32
- KeyButMaskMod4 = 64
- KeyButMaskMod5 = 128
- KeyButMaskButton1 = 256
- KeyButMaskButton2 = 512
- KeyButMaskButton3 = 1024
- KeyButMaskButton4 = 2048
- KeyButMaskButton5 = 4096
-)
-
-const (
- WindowNone = 0
-)
-
-const KeyPress = 2
-
-type KeyPressEvent struct {
- Detail byte
- Time Timestamp
- Root Id
- Event Id
- Child Id
- RootX int16
- RootY int16
- EventX int16
- EventY int16
- State uint16
- SameScreen byte
-}
-
-func getKeyPressEvent(b []byte) KeyPressEvent {
- var v KeyPressEvent
- v.Detail = b[1]
- v.Time = Timestamp(get32(b[4:]))
- v.Root = Id(get32(b[8:]))
- v.Event = Id(get32(b[12:]))
- v.Child = Id(get32(b[16:]))
- v.RootX = int16(get16(b[20:]))
- v.RootY = int16(get16(b[22:]))
- v.EventX = int16(get16(b[24:]))
- v.EventY = int16(get16(b[26:]))
- v.State = get16(b[28:])
- v.SameScreen = b[30]
- return v
-}
-
-const KeyRelease = 3
-
-type KeyReleaseEvent KeyPressEvent
-
-func getKeyReleaseEvent(b []byte) KeyReleaseEvent {
- return (KeyReleaseEvent)(getKeyPressEvent(b))
-}
-
-const (
- ButtonMask1 = 256
- ButtonMask2 = 512
- ButtonMask3 = 1024
- ButtonMask4 = 2048
- ButtonMask5 = 4096
- ButtonMaskAny = 32768
-)
-
-const ButtonPress = 4
-
-type ButtonPressEvent struct {
- Detail byte
- Time Timestamp
- Root Id
- Event Id
- Child Id
- RootX int16
- RootY int16
- EventX int16
- EventY int16
- State uint16
- SameScreen byte
-}
-
-func getButtonPressEvent(b []byte) ButtonPressEvent {
- var v ButtonPressEvent
- v.Detail = b[1]
- v.Time = Timestamp(get32(b[4:]))
- v.Root = Id(get32(b[8:]))
- v.Event = Id(get32(b[12:]))
- v.Child = Id(get32(b[16:]))
- v.RootX = int16(get16(b[20:]))
- v.RootY = int16(get16(b[22:]))
- v.EventX = int16(get16(b[24:]))
- v.EventY = int16(get16(b[26:]))
- v.State = get16(b[28:])
- v.SameScreen = b[30]
- return v
-}
-
-const ButtonRelease = 5
-
-type ButtonReleaseEvent ButtonPressEvent
-
-func getButtonReleaseEvent(b []byte) ButtonReleaseEvent {
- return (ButtonReleaseEvent)(getButtonPressEvent(b))
-}
-
-const (
- MotionNormal = 0
- MotionHint = 1
-)
-
-const MotionNotify = 6
-
-type MotionNotifyEvent struct {
- Detail byte
- Time Timestamp
- Root Id
- Event Id
- Child Id
- RootX int16
- RootY int16
- EventX int16
- EventY int16
- State uint16
- SameScreen byte
-}
-
-func getMotionNotifyEvent(b []byte) MotionNotifyEvent {
- var v MotionNotifyEvent
- v.Detail = b[1]
- v.Time = Timestamp(get32(b[4:]))
- v.Root = Id(get32(b[8:]))
- v.Event = Id(get32(b[12:]))
- v.Child = Id(get32(b[16:]))
- v.RootX = int16(get16(b[20:]))
- v.RootY = int16(get16(b[22:]))
- v.EventX = int16(get16(b[24:]))
- v.EventY = int16(get16(b[26:]))
- v.State = get16(b[28:])
- v.SameScreen = b[30]
- return v
-}
-
-const (
- NotifyDetailAncestor = 0
- NotifyDetailVirtual = 1
- NotifyDetailInferior = 2
- NotifyDetailNonlinear = 3
- NotifyDetailNonlinearVirtual = 4
- NotifyDetailPointer = 5
- NotifyDetailPointerRoot = 6
- NotifyDetailNone = 7
-)
-
-const (
- NotifyModeNormal = 0
- NotifyModeGrab = 1
- NotifyModeUngrab = 2
- NotifyModeWhileGrabbed = 3
-)
-
-const EnterNotify = 7
-
-type EnterNotifyEvent struct {
- Detail byte
- Time Timestamp
- Root Id
- Event Id
- Child Id
- RootX int16
- RootY int16
- EventX int16
- EventY int16
- State uint16
- Mode byte
- SameScreenFocus byte
-}
-
-func getEnterNotifyEvent(b []byte) EnterNotifyEvent {
- var v EnterNotifyEvent
- v.Detail = b[1]
- v.Time = Timestamp(get32(b[4:]))
- v.Root = Id(get32(b[8:]))
- v.Event = Id(get32(b[12:]))
- v.Child = Id(get32(b[16:]))
- v.RootX = int16(get16(b[20:]))
- v.RootY = int16(get16(b[22:]))
- v.EventX = int16(get16(b[24:]))
- v.EventY = int16(get16(b[26:]))
- v.State = get16(b[28:])
- v.Mode = b[30]
- v.SameScreenFocus = b[31]
- return v
-}
-
-const LeaveNotify = 8
-
-type LeaveNotifyEvent EnterNotifyEvent
-
-func getLeaveNotifyEvent(b []byte) LeaveNotifyEvent {
- return (LeaveNotifyEvent)(getEnterNotifyEvent(b))
-}
-
-const FocusIn = 9
-
-type FocusInEvent struct {
- Detail byte
- Event Id
- Mode byte
-}
-
-func getFocusInEvent(b []byte) FocusInEvent {
- var v FocusInEvent
- v.Detail = b[1]
- v.Event = Id(get32(b[4:]))
- v.Mode = b[8]
- return v
-}
-
-const FocusOut = 10
-
-type FocusOutEvent FocusInEvent
-
-func getFocusOutEvent(b []byte) FocusOutEvent { return (FocusOutEvent)(getFocusInEvent(b)) }
-
-const KeymapNotify = 11
-
-type KeymapNotifyEvent struct {
- Keys [31]byte
-}
-
-func getKeymapNotifyEvent(b []byte) KeymapNotifyEvent {
- var v KeymapNotifyEvent
- copy(v.Keys[0:31], b[1:])
- return v
-}
-
-const Expose = 12
-
-type ExposeEvent struct {
- Window Id
- X uint16
- Y uint16
- Width uint16
- Height uint16
- Count uint16
-}
-
-func getExposeEvent(b []byte) ExposeEvent {
- var v ExposeEvent
- v.Window = Id(get32(b[4:]))
- v.X = get16(b[8:])
- v.Y = get16(b[10:])
- v.Width = get16(b[12:])
- v.Height = get16(b[14:])
- v.Count = get16(b[16:])
- return v
-}
-
-const GraphicsExposure = 13
-
-type GraphicsExposureEvent struct {
- Drawable Id
- X uint16
- Y uint16
- Width uint16
- Height uint16
- MinorOpcode uint16
- Count uint16
- MajorOpcode byte
-}
-
-func getGraphicsExposureEvent(b []byte) GraphicsExposureEvent {
- var v GraphicsExposureEvent
- v.Drawable = Id(get32(b[4:]))
- v.X = get16(b[8:])
- v.Y = get16(b[10:])
- v.Width = get16(b[12:])
- v.Height = get16(b[14:])
- v.MinorOpcode = get16(b[16:])
- v.Count = get16(b[18:])
- v.MajorOpcode = b[20]
- return v
-}
-
-const NoExposure = 14
-
-type NoExposureEvent struct {
- Drawable Id
- MinorOpcode uint16
- MajorOpcode byte
-}
-
-func getNoExposureEvent(b []byte) NoExposureEvent {
- var v NoExposureEvent
- v.Drawable = Id(get32(b[4:]))
- v.MinorOpcode = get16(b[8:])
- v.MajorOpcode = b[10]
- return v
-}
-
-const (
- VisibilityUnobscured = 0
- VisibilityPartiallyObscured = 1
- VisibilityFullyObscured = 2
-)
-
-const VisibilityNotify = 15
-
-type VisibilityNotifyEvent struct {
- Window Id
- State byte
-}
-
-func getVisibilityNotifyEvent(b []byte) VisibilityNotifyEvent {
- var v VisibilityNotifyEvent
- v.Window = Id(get32(b[4:]))
- v.State = b[8]
- return v
-}
-
-const CreateNotify = 16
-
-type CreateNotifyEvent struct {
- Parent Id
- Window Id
- X int16
- Y int16
- Width uint16
- Height uint16
- BorderWidth uint16
- OverrideRedirect byte
-}
-
-func getCreateNotifyEvent(b []byte) CreateNotifyEvent {
- var v CreateNotifyEvent
- v.Parent = Id(get32(b[4:]))
- v.Window = Id(get32(b[8:]))
- v.X = int16(get16(b[12:]))
- v.Y = int16(get16(b[14:]))
- v.Width = get16(b[16:])
- v.Height = get16(b[18:])
- v.BorderWidth = get16(b[20:])
- v.OverrideRedirect = b[22]
- return v
-}
-
-const DestroyNotify = 17
-
-type DestroyNotifyEvent struct {
- Event Id
- Window Id
-}
-
-func getDestroyNotifyEvent(b []byte) DestroyNotifyEvent {
- var v DestroyNotifyEvent
- v.Event = Id(get32(b[4:]))
- v.Window = Id(get32(b[8:]))
- return v
-}
-
-const UnmapNotify = 18
-
-type UnmapNotifyEvent struct {
- Event Id
- Window Id
- FromConfigure byte
-}
-
-func getUnmapNotifyEvent(b []byte) UnmapNotifyEvent {
- var v UnmapNotifyEvent
- v.Event = Id(get32(b[4:]))
- v.Window = Id(get32(b[8:]))
- v.FromConfigure = b[12]
- return v
-}
-
-const MapNotify = 19
-
-type MapNotifyEvent struct {
- Event Id
- Window Id
- OverrideRedirect byte
-}
-
-func getMapNotifyEvent(b []byte) MapNotifyEvent {
- var v MapNotifyEvent
- v.Event = Id(get32(b[4:]))
- v.Window = Id(get32(b[8:]))
- v.OverrideRedirect = b[12]
- return v
-}
-
-const MapRequest = 20
-
-type MapRequestEvent struct {
- Parent Id
- Window Id
-}
-
-func getMapRequestEvent(b []byte) MapRequestEvent {
- var v MapRequestEvent
- v.Parent = Id(get32(b[4:]))
- v.Window = Id(get32(b[8:]))
- return v
-}
-
-const ReparentNotify = 21
-
-type ReparentNotifyEvent struct {
- Event Id
- Window Id
- Parent Id
- X int16
- Y int16
- OverrideRedirect byte
-}
-
-func getReparentNotifyEvent(b []byte) ReparentNotifyEvent {
- var v ReparentNotifyEvent
- v.Event = Id(get32(b[4:]))
- v.Window = Id(get32(b[8:]))
- v.Parent = Id(get32(b[12:]))
- v.X = int16(get16(b[16:]))
- v.Y = int16(get16(b[18:]))
- v.OverrideRedirect = b[20]
- return v
-}
-
-const ConfigureNotify = 22
-
-type ConfigureNotifyEvent struct {
- Event Id
- Window Id
- AboveSibling Id
- X int16
- Y int16
- Width uint16
- Height uint16
- BorderWidth uint16
- OverrideRedirect byte
-}
-
-func getConfigureNotifyEvent(b []byte) ConfigureNotifyEvent {
- var v ConfigureNotifyEvent
- v.Event = Id(get32(b[4:]))
- v.Window = Id(get32(b[8:]))
- v.AboveSibling = Id(get32(b[12:]))
- v.X = int16(get16(b[16:]))
- v.Y = int16(get16(b[18:]))
- v.Width = get16(b[20:])
- v.Height = get16(b[22:])
- v.BorderWidth = get16(b[24:])
- v.OverrideRedirect = b[26]
- return v
-}
-
-const ConfigureRequest = 23
-
-type ConfigureRequestEvent struct {
- StackMode byte
- Parent Id
- Window Id
- Sibling Id
- X int16
- Y int16
- Width uint16
- Height uint16
- BorderWidth uint16
- ValueMask uint16
-}
-
-func getConfigureRequestEvent(b []byte) ConfigureRequestEvent {
- var v ConfigureRequestEvent
- v.StackMode = b[1]
- v.Parent = Id(get32(b[4:]))
- v.Window = Id(get32(b[8:]))
- v.Sibling = Id(get32(b[12:]))
- v.X = int16(get16(b[16:]))
- v.Y = int16(get16(b[18:]))
- v.Width = get16(b[20:])
- v.Height = get16(b[22:])
- v.BorderWidth = get16(b[24:])
- v.ValueMask = get16(b[26:])
- return v
-}
-
-const GravityNotify = 24
-
-type GravityNotifyEvent struct {
- Event Id
- Window Id
- X int16
- Y int16
-}
-
-func getGravityNotifyEvent(b []byte) GravityNotifyEvent {
- var v GravityNotifyEvent
- v.Event = Id(get32(b[4:]))
- v.Window = Id(get32(b[8:]))
- v.X = int16(get16(b[12:]))
- v.Y = int16(get16(b[14:]))
- return v
-}
-
-const ResizeRequest = 25
-
-type ResizeRequestEvent struct {
- Window Id
- Width uint16
- Height uint16
-}
-
-func getResizeRequestEvent(b []byte) ResizeRequestEvent {
- var v ResizeRequestEvent
- v.Window = Id(get32(b[4:]))
- v.Width = get16(b[8:])
- v.Height = get16(b[10:])
- return v
-}
-
-const (
- PlaceOnTop = 0
- PlaceOnBottom = 1
-)
-
-const CirculateNotify = 26
-
-type CirculateNotifyEvent struct {
- Event Id
- Window Id
- Place byte
-}
-
-func getCirculateNotifyEvent(b []byte) CirculateNotifyEvent {
- var v CirculateNotifyEvent
- v.Event = Id(get32(b[4:]))
- v.Window = Id(get32(b[8:]))
- v.Place = b[16]
- return v
-}
-
-const CirculateRequest = 27
-
-type CirculateRequestEvent CirculateNotifyEvent
-
-func getCirculateRequestEvent(b []byte) CirculateRequestEvent {
- return (CirculateRequestEvent)(getCirculateNotifyEvent(b))
-}
-
-const (
- PropertyNewValue = 0
- PropertyDelete = 1
-)
-
-const PropertyNotify = 28
-
-type PropertyNotifyEvent struct {
- Window Id
- Atom Id
- Time Timestamp
- State byte
-}
-
-func getPropertyNotifyEvent(b []byte) PropertyNotifyEvent {
- var v PropertyNotifyEvent
- v.Window = Id(get32(b[4:]))
- v.Atom = Id(get32(b[8:]))
- v.Time = Timestamp(get32(b[12:]))
- v.State = b[16]
- return v
-}
-
-const SelectionClear = 29
-
-type SelectionClearEvent struct {
- Time Timestamp
- Owner Id
- Selection Id
-}
-
-func getSelectionClearEvent(b []byte) SelectionClearEvent {
- var v SelectionClearEvent
- v.Time = Timestamp(get32(b[4:]))
- v.Owner = Id(get32(b[8:]))
- v.Selection = Id(get32(b[12:]))
- return v
-}
-
-const (
- TimeCurrentTime = 0
-)
-
-const (
- AtomNone = 0
- AtomAny = 0
- AtomPrimary = 1
- AtomSecondary = 2
- AtomArc = 3
- AtomAtom = 4
- AtomBitmap = 5
- AtomCardinal = 6
- AtomColormap = 7
- AtomCursor = 8
- AtomCutBuffer0 = 9
- AtomCutBuffer1 = 10
- AtomCutBuffer2 = 11
- AtomCutBuffer3 = 12
- AtomCutBuffer4 = 13
- AtomCutBuffer5 = 14
- AtomCutBuffer6 = 15
- AtomCutBuffer7 = 16
- AtomDrawable = 17
- AtomFont = 18
- AtomInteger = 19
- AtomPixmap = 20
- AtomPoint = 21
- AtomRectangle = 22
- AtomResourceManager = 23
- AtomRgbColorMap = 24
- AtomRgbBestMap = 25
- AtomRgbBlueMap = 26
- AtomRgbDefaultMap = 27
- AtomRgbGrayMap = 28
- AtomRgbGreenMap = 29
- AtomRgbRedMap = 30
- AtomString = 31
- AtomVisualid = 32
- AtomWindow = 33
- AtomWmCommand = 34
- AtomWmHints = 35
- AtomWmClientMachine = 36
- AtomWmIconName = 37
- AtomWmIconSize = 38
- AtomWmName = 39
- AtomWmNormalHints = 40
- AtomWmSizeHints = 41
- AtomWmZoomHints = 42
- AtomMinSpace = 43
- AtomNormSpace = 44
- AtomMaxSpace = 45
- AtomEndSpace = 46
- AtomSuperscriptX = 47
- AtomSuperscriptY = 48
- AtomSubscriptX = 49
- AtomSubscriptY = 50
- AtomUnderlinePosition = 51
- AtomUnderlineThickness = 52
- AtomStrikeoutAscent = 53
- AtomStrikeoutDescent = 54
- AtomItalicAngle = 55
- AtomXHeight = 56
- AtomQuadWidth = 57
- AtomWeight = 58
- AtomPointSize = 59
- AtomResolution = 60
- AtomCopyright = 61
- AtomNotice = 62
- AtomFontName = 63
- AtomFamilyName = 64
- AtomFullName = 65
- AtomCapHeight = 66
- AtomWmClass = 67
- AtomWmTransientFor = 68
-)
-
-const SelectionRequest = 30
-
-type SelectionRequestEvent struct {
- Time Timestamp
- Owner Id
- Requestor Id
- Selection Id
- Target Id
- Property Id
-}
-
-func getSelectionRequestEvent(b []byte) SelectionRequestEvent {
- var v SelectionRequestEvent
- v.Time = Timestamp(get32(b[4:]))
- v.Owner = Id(get32(b[8:]))
- v.Requestor = Id(get32(b[12:]))
- v.Selection = Id(get32(b[16:]))
- v.Target = Id(get32(b[20:]))
- v.Property = Id(get32(b[24:]))
- return v
-}
-
-const SelectionNotify = 31
-
-type SelectionNotifyEvent struct {
- Time Timestamp
- Requestor Id
- Selection Id
- Target Id
- Property Id
-}
-
-func getSelectionNotifyEvent(b []byte) SelectionNotifyEvent {
- var v SelectionNotifyEvent
- v.Time = Timestamp(get32(b[4:]))
- v.Requestor = Id(get32(b[8:]))
- v.Selection = Id(get32(b[12:]))
- v.Target = Id(get32(b[16:]))
- v.Property = Id(get32(b[20:]))
- return v
-}
-
-const (
- ColormapStateUninstalled = 0
- ColormapStateInstalled = 1
-)
-
-const (
- ColormapNone = 0
-)
-
-const ColormapNotify = 32
-
-type ColormapNotifyEvent struct {
- Window Id
- Colormap Id
- New byte
- State byte
-}
-
-func getColormapNotifyEvent(b []byte) ColormapNotifyEvent {
- var v ColormapNotifyEvent
- v.Window = Id(get32(b[4:]))
- v.Colormap = Id(get32(b[8:]))
- v.New = b[12]
- v.State = b[13]
- return v
-}
-
-const ClientMessage = 33
-
-type ClientMessageEvent struct {
- Format byte
- Window Id
- Type Id
- Data ClientMessageData
-}
-
-func getClientMessageEvent(b []byte) ClientMessageEvent {
- var v ClientMessageEvent
- v.Format = b[1]
- v.Window = Id(get32(b[4:]))
- v.Type = Id(get32(b[8:]))
- getClientMessageData(b[12:], &v.Data)
- return v
-}
-
-const (
- MappingModifier = 0
- MappingKeyboard = 1
- MappingPointer = 2
-)
-
-const MappingNotify = 34
-
-type MappingNotifyEvent struct {
- Request byte
- FirstKeycode byte
- Count byte
-}
-
-func getMappingNotifyEvent(b []byte) MappingNotifyEvent {
- var v MappingNotifyEvent
- v.Request = b[4]
- v.FirstKeycode = b[5]
- v.Count = b[6]
- return v
-}
-
-const BadRequest = 1
-
-const BadValue = 2
-
-const BadWindow = 3
-
-const BadPixmap = 4
-
-const BadAtom = 5
-
-const BadCursor = 6
-
-const BadFont = 7
-
-const BadMatch = 8
-
-const BadDrawable = 9
-
-const BadAccess = 10
-
-const BadAlloc = 11
-
-const BadColormap = 12
-
-const BadGContext = 13
-
-const BadIDChoice = 14
-
-const BadName = 15
-
-const BadLength = 16
-
-const BadImplementation = 17
-
-const (
- WindowClassCopyFromParent = 0
- WindowClassInputOutput = 1
- WindowClassInputOnly = 2
-)
-
-const (
- CWBackPixmap = 1
- CWBackPixel = 2
- CWBorderPixmap = 4
- CWBorderPixel = 8
- CWBitGravity = 16
- CWWinGravity = 32
- CWBackingStore = 64
- CWBackingPlanes = 128
- CWBackingPixel = 256
- CWOverrideRedirect = 512
- CWSaveUnder = 1024
- CWEventMask = 2048
- CWDontPropagate = 4096
- CWColormap = 8192
- CWCursor = 16384
-)
-
-const (
- BackPixmapNone = 0
- BackPixmapParentRelative = 1
-)
-
-const (
- GravityBitForget = 0
- GravityWinUnmap = 0
- GravityNorthWest = 1
- GravityNorth = 2
- GravityNorthEast = 3
- GravityWest = 4
- GravityCenter = 5
- GravityEast = 6
- GravitySouthWest = 7
- GravitySouth = 8
- GravitySouthEast = 9
- GravityStatic = 10
-)
-
-func (c *Conn) CreateWindow(Depth byte, Wid Id, Parent Id, X int16, Y int16, Width uint16, Height uint16, BorderWidth uint16, Class uint16, Visual Id, ValueMask uint32, ValueList []uint32) {
- b := c.scratch[0:32]
- n := 32
- n += pad(popCount(int(ValueMask)) * 4)
- put16(b[2:], uint16(n/4))
- b[0] = 1
- b[1] = Depth
- put32(b[4:], uint32(Wid))
- put32(b[8:], uint32(Parent))
- put16(b[12:], uint16(X))
- put16(b[14:], uint16(Y))
- put16(b[16:], Width)
- put16(b[18:], Height)
- put16(b[20:], BorderWidth)
- put16(b[22:], Class)
- put32(b[24:], uint32(Visual))
- put32(b[28:], ValueMask)
- c.sendRequest(b)
- c.sendUInt32List(ValueList[0:popCount(int(ValueMask))])
-}
-
-func (c *Conn) ChangeWindowAttributes(Window Id, ValueMask uint32, ValueList []uint32) {
- b := c.scratch[0:12]
- n := 12
- n += pad(popCount(int(ValueMask)) * 4)
- put16(b[2:], uint16(n/4))
- b[0] = 2
- put32(b[4:], uint32(Window))
- put32(b[8:], ValueMask)
- c.sendRequest(b)
- c.sendUInt32List(ValueList[0:popCount(int(ValueMask))])
-}
-
-const (
- MapStateUnmapped = 0
- MapStateUnviewable = 1
- MapStateViewable = 2
-)
-
-func (c *Conn) GetWindowAttributesRequest(Window Id) Cookie {
- b := c.scratch[0:8]
- put16(b[2:], 2)
- b[0] = 3
- put32(b[4:], uint32(Window))
- return c.sendRequest(b)
-}
-
-func (c *Conn) GetWindowAttributes(Window Id) (*GetWindowAttributesReply, os.Error) {
- return c.GetWindowAttributesReply(c.GetWindowAttributesRequest(Window))
-}
-
-type GetWindowAttributesReply struct {
- BackingStore byte
- Visual Id
- Class uint16
- BitGravity byte
- WinGravity byte
- BackingPlanes uint32
- BackingPixel uint32
- SaveUnder byte
- MapIsInstalled byte
- MapState byte
- OverrideRedirect byte
- Colormap Id
- AllEventMasks uint32
- YourEventMask uint32
- DoNotPropagateMask uint16
-}
-
-func (c *Conn) GetWindowAttributesReply(cookie Cookie) (*GetWindowAttributesReply, os.Error) {
- b, error := c.waitForReply(cookie)
- if error != nil {
- return nil, error
- }
- v := new(GetWindowAttributesReply)
- v.BackingStore = b[1]
- v.Visual = Id(get32(b[8:]))
- v.Class = get16(b[12:])
- v.BitGravity = b[14]
- v.WinGravity = b[15]
- v.BackingPlanes = get32(b[16:])
- v.BackingPixel = get32(b[20:])
- v.SaveUnder = b[24]
- v.MapIsInstalled = b[25]
- v.MapState = b[26]
- v.OverrideRedirect = b[27]
- v.Colormap = Id(get32(b[28:]))
- v.AllEventMasks = get32(b[32:])
- v.YourEventMask = get32(b[36:])
- v.DoNotPropagateMask = get16(b[40:])
- return v, nil
-}
-
-func (c *Conn) DestroyWindow(Window Id) {
- b := c.scratch[0:8]
- put16(b[2:], 2)
- b[0] = 4
- put32(b[4:], uint32(Window))
- c.sendRequest(b)
-}
-
-func (c *Conn) DestroySubwindows(Window Id) {
- b := c.scratch[0:8]
- put16(b[2:], 2)
- b[0] = 5
- put32(b[4:], uint32(Window))
- c.sendRequest(b)
-}
-
-const (
- SetModeInsert = 0
- SetModeDelete = 1
-)
-
-func (c *Conn) ChangeSaveSet(Mode byte, Window Id) {
- b := c.scratch[0:8]
- put16(b[2:], 2)
- b[0] = 6
- b[1] = Mode
- put32(b[4:], uint32(Window))
- c.sendRequest(b)
-}
-
-func (c *Conn) ReparentWindow(Window Id, Parent Id, X int16, Y int16) {
- b := c.scratch[0:16]
- put16(b[2:], 4)
- b[0] = 7
- put32(b[4:], uint32(Window))
- put32(b[8:], uint32(Parent))
- put16(b[12:], uint16(X))
- put16(b[14:], uint16(Y))
- c.sendRequest(b)
-}
-
-func (c *Conn) MapWindow(Window Id) {
- b := c.scratch[0:8]
- put16(b[2:], 2)
- b[0] = 8
- put32(b[4:], uint32(Window))
- c.sendRequest(b)
-}
-
-func (c *Conn) MapSubwindows(Window Id) {
- b := c.scratch[0:8]
- put16(b[2:], 2)
- b[0] = 9
- put32(b[4:], uint32(Window))
- c.sendRequest(b)
-}
-
-func (c *Conn) UnmapWindow(Window Id) {
- b := c.scratch[0:8]
- put16(b[2:], 2)
- b[0] = 10
- put32(b[4:], uint32(Window))
- c.sendRequest(b)
-}
-
-func (c *Conn) UnmapSubwindows(Window Id) {
- b := c.scratch[0:8]
- put16(b[2:], 2)
- b[0] = 11
- put32(b[4:], uint32(Window))
- c.sendRequest(b)
-}
-
-const (
- ConfigWindowX = 1
- ConfigWindowY = 2
- ConfigWindowWidth = 4
- ConfigWindowHeight = 8
- ConfigWindowBorderWidth = 16
- ConfigWindowSibling = 32
- ConfigWindowStackMode = 64
-)
-
-const (
- StackModeAbove = 0
- StackModeBelow = 1
- StackModeTopIf = 2
- StackModeBottomIf = 3
- StackModeOpposite = 4
-)
-
-func (c *Conn) ConfigureWindow(Window Id, ValueMask uint16, ValueList []uint32) {
- b := c.scratch[0:12]
- n := 12
- n += pad(popCount(int(ValueMask)) * 4)
- put16(b[2:], uint16(n/4))
- b[0] = 12
- put32(b[4:], uint32(Window))
- put16(b[8:], ValueMask)
- c.sendRequest(b)
- c.sendUInt32List(ValueList[0:popCount(int(ValueMask))])
-}
-
-const (
- CirculateRaiseLowest = 0
- CirculateLowerHighest = 1
-)
-
-func (c *Conn) CirculateWindow(Direction byte, Window Id) {
- b := c.scratch[0:8]
- put16(b[2:], 2)
- b[0] = 13
- b[1] = Direction
- put32(b[4:], uint32(Window))
- c.sendRequest(b)
-}
-
-func (c *Conn) GetGeometryRequest(Drawable Id) Cookie {
- b := c.scratch[0:8]
- put16(b[2:], 2)
- b[0] = 14
- put32(b[4:], uint32(Drawable))
- return c.sendRequest(b)
-}
-
-func (c *Conn) GetGeometry(Drawable Id) (*GetGeometryReply, os.Error) {
- return c.GetGeometryReply(c.GetGeometryRequest(Drawable))
-}
-
-type GetGeometryReply struct {
- Depth byte
- Root Id
- X int16
- Y int16
- Width uint16
- Height uint16
- BorderWidth uint16
-}
-
-func (c *Conn) GetGeometryReply(cookie Cookie) (*GetGeometryReply, os.Error) {
- b, error := c.waitForReply(cookie)
- if error != nil {
- return nil, error
- }
- v := new(GetGeometryReply)
- v.Depth = b[1]
- v.Root = Id(get32(b[8:]))
- v.X = int16(get16(b[12:]))
- v.Y = int16(get16(b[14:]))
- v.Width = get16(b[16:])
- v.Height = get16(b[18:])
- v.BorderWidth = get16(b[20:])
- return v, nil
-}
-
-func (c *Conn) QueryTreeRequest(Window Id) Cookie {
- b := c.scratch[0:8]
- put16(b[2:], 2)
- b[0] = 15
- put32(b[4:], uint32(Window))
- return c.sendRequest(b)
-}
-
-func (c *Conn) QueryTree(Window Id) (*QueryTreeReply, os.Error) {
- return c.QueryTreeReply(c.QueryTreeRequest(Window))
-}
-
-type QueryTreeReply struct {
- Root Id
- Parent Id
- ChildrenLen uint16
- Children []Id
-}
-
-func (c *Conn) QueryTreeReply(cookie Cookie) (*QueryTreeReply, os.Error) {
- b, error := c.waitForReply(cookie)
- if error != nil {
- return nil, error
- }
- v := new(QueryTreeReply)
- v.Root = Id(get32(b[8:]))
- v.Parent = Id(get32(b[12:]))
- v.ChildrenLen = get16(b[16:])
- offset := 32
- v.Children = make([]Id, int(v.ChildrenLen))
- for i := 0; i < len(v.Children); i++ {
- v.Children[i] = Id(get32(b[offset+i*4:]))
- }
- offset += len(v.Children) * 4
- return v, nil
-}
-
-func (c *Conn) InternAtomRequest(OnlyIfExists byte, Name string) Cookie {
- b := c.scratch[0:8]
- n := 8
- n += pad(len(Name) * 1)
- put16(b[2:], uint16(n/4))
- b[0] = 16
- b[1] = OnlyIfExists
- put16(b[4:], uint16(len(Name)))
- cookie := c.sendRequest(b)
- c.sendString(Name)
- return cookie
-}
-
-func (c *Conn) InternAtom(OnlyIfExists byte, Name string) (*InternAtomReply, os.Error) {
- return c.InternAtomReply(c.InternAtomRequest(OnlyIfExists, Name))
-}
-
-type InternAtomReply struct {
- Atom Id
-}
-
-func (c *Conn) InternAtomReply(cookie Cookie) (*InternAtomReply, os.Error) {
- b, error := c.waitForReply(cookie)
- if error != nil {
- return nil, error
- }
- v := new(InternAtomReply)
- v.Atom = Id(get32(b[8:]))
- return v, nil
-}
-
-func (c *Conn) GetAtomNameRequest(Atom Id) Cookie {
- b := c.scratch[0:8]
- put16(b[2:], 2)
- b[0] = 17
- put32(b[4:], uint32(Atom))
- return c.sendRequest(b)
-}
-
-func (c *Conn) GetAtomName(Atom Id) (*GetAtomNameReply, os.Error) {
- return c.GetAtomNameReply(c.GetAtomNameRequest(Atom))
-}
-
-type GetAtomNameReply struct {
- NameLen uint16
- Name []byte
-}
-
-func (c *Conn) GetAtomNameReply(cookie Cookie) (*GetAtomNameReply, os.Error) {
- b, error := c.waitForReply(cookie)
- if error != nil {
- return nil, error
- }
- v := new(GetAtomNameReply)
- v.NameLen = get16(b[8:])
- offset := 32
- v.Name = make([]byte, int(v.NameLen))
- copy(v.Name[0:len(v.Name)], b[offset:])
- offset += len(v.Name) * 1
- return v, nil
-}
-
-const (
- PropModeReplace = 0
- PropModePrepend = 1
- PropModeAppend = 2
-)
-
-func (c *Conn) ChangeProperty(Mode byte, Window Id, Property Id, Type Id, Format byte, Data []byte) {
- b := c.scratch[0:24]
- n := 24
- n += pad(((len(Data) * int(Format)) / 8) * 1)
- put16(b[2:], uint16(n/4))
- b[0] = 18
- b[1] = Mode
- put32(b[4:], uint32(Window))
- put32(b[8:], uint32(Property))
- put32(b[12:], uint32(Type))
- b[16] = Format
- put32(b[20:], uint32(len(Data)))
- c.sendRequest(b)
- c.sendBytes(Data[0:((len(Data) * int(Format)) / 8)])
-}
-
-func (c *Conn) DeleteProperty(Window Id, Property Id) {
- b := c.scratch[0:12]
- put16(b[2:], 3)
- b[0] = 19
- put32(b[4:], uint32(Window))
- put32(b[8:], uint32(Property))
- c.sendRequest(b)
-}
-
-const (
- GetPropertyTypeAny = 0
-)
-
-func (c *Conn) GetPropertyRequest(Delete byte, Window Id, Property Id, Type Id, LongOffset uint32, LongLength uint32) Cookie {
- b := c.scratch[0:24]
- put16(b[2:], 6)
- b[0] = 20
- b[1] = Delete
- put32(b[4:], uint32(Window))
- put32(b[8:], uint32(Property))
- put32(b[12:], uint32(Type))
- put32(b[16:], LongOffset)
- put32(b[20:], LongLength)
- return c.sendRequest(b)
-}
-
-func (c *Conn) GetProperty(Delete byte, Window Id, Property Id, Type Id, LongOffset uint32, LongLength uint32) (*GetPropertyReply, os.Error) {
- return c.GetPropertyReply(c.GetPropertyRequest(Delete, Window, Property, Type, LongOffset, LongLength))
-}
-
-type GetPropertyReply struct {
- Format byte
- Type Id
- BytesAfter uint32
- ValueLen uint32
- Value []byte
-}
-
-func (c *Conn) GetPropertyReply(cookie Cookie) (*GetPropertyReply, os.Error) {
- b, error := c.waitForReply(cookie)
- if error != nil {
- return nil, error
- }
- v := new(GetPropertyReply)
- v.Format = b[1]
- v.Type = Id(get32(b[8:]))
- v.BytesAfter = get32(b[12:])
- v.ValueLen = get32(b[16:])
- offset := 32
- v.Value = make([]byte, (int(v.ValueLen) * (int(v.Format) / 8)))
- copy(v.Value[0:len(v.Value)], b[offset:])
- offset += len(v.Value) * 1
- return v, nil
-}
-
-func (c *Conn) ListPropertiesRequest(Window Id) Cookie {
- b := c.scratch[0:8]
- put16(b[2:], 2)
- b[0] = 21
- put32(b[4:], uint32(Window))
- return c.sendRequest(b)
-}
-
-func (c *Conn) ListProperties(Window Id) (*ListPropertiesReply, os.Error) {
- return c.ListPropertiesReply(c.ListPropertiesRequest(Window))
-}
-
-type ListPropertiesReply struct {
- AtomsLen uint16
- Atoms []Id
-}
-
-func (c *Conn) ListPropertiesReply(cookie Cookie) (*ListPropertiesReply, os.Error) {
- b, error := c.waitForReply(cookie)
- if error != nil {
- return nil, error
- }
- v := new(ListPropertiesReply)
- v.AtomsLen = get16(b[8:])
- offset := 32
- v.Atoms = make([]Id, int(v.AtomsLen))
- for i := 0; i < len(v.Atoms); i++ {
- v.Atoms[i] = Id(get32(b[offset+i*4:]))
- }
- offset += len(v.Atoms) * 4
- return v, nil
-}
-
-func (c *Conn) SetSelectionOwner(Owner Id, Selection Id, Time Timestamp) {
- b := c.scratch[0:16]
- put16(b[2:], 4)
- b[0] = 22
- put32(b[4:], uint32(Owner))
- put32(b[8:], uint32(Selection))
- put32(b[12:], uint32(Time))
- c.sendRequest(b)
-}
-
-func (c *Conn) GetSelectionOwnerRequest(Selection Id) Cookie {
- b := c.scratch[0:8]
- put16(b[2:], 2)
- b[0] = 23
- put32(b[4:], uint32(Selection))
- return c.sendRequest(b)
-}
-
-func (c *Conn) GetSelectionOwner(Selection Id) (*GetSelectionOwnerReply, os.Error) {
- return c.GetSelectionOwnerReply(c.GetSelectionOwnerRequest(Selection))
-}
-
-type GetSelectionOwnerReply struct {
- Owner Id
-}
-
-func (c *Conn) GetSelectionOwnerReply(cookie Cookie) (*GetSelectionOwnerReply, os.Error) {
- b, error := c.waitForReply(cookie)
- if error != nil {
- return nil, error
- }
- v := new(GetSelectionOwnerReply)
- v.Owner = Id(get32(b[8:]))
- return v, nil
-}
-
-func (c *Conn) ConvertSelection(Requestor Id, Selection Id, Target Id, Property Id, Time Timestamp) {
- b := c.scratch[0:24]
- put16(b[2:], 6)
- b[0] = 24
- put32(b[4:], uint32(Requestor))
- put32(b[8:], uint32(Selection))
- put32(b[12:], uint32(Target))
- put32(b[16:], uint32(Property))
- put32(b[20:], uint32(Time))
- c.sendRequest(b)
-}
-
-const (
- SendEventDestPointerWindow = 0
- SendEventDestItemFocus = 1
-)
-
-func (c *Conn) SendEvent(Propagate byte, Destination Id, EventMask uint32, Event []byte) {
- b := make([]byte, 44)
- put16(b[2:], 11)
- b[0] = 25
- b[1] = Propagate
- put32(b[4:], uint32(Destination))
- put32(b[8:], EventMask)
- copy(b[12:44], Event)
- c.sendRequest(b)
-}
-
-const (
- GrabModeSync = 0
- GrabModeAsync = 1
-)
-
-const (
- GrabStatusSuccess = 0
- GrabStatusAlreadyGrabbed = 1
- GrabStatusInvalidTime = 2
- GrabStatusNotViewable = 3
- GrabStatusFrozen = 4
-)
-
-const (
- CursorNone = 0
-)
-
-func (c *Conn) GrabPointerRequest(OwnerEvents byte, GrabWindow Id, EventMask uint16, PointerMode byte, KeyboardMode byte, ConfineTo Id, Cursor Id, Time Timestamp) Cookie {
- b := c.scratch[0:24]
- put16(b[2:], 6)
- b[0] = 26
- b[1] = OwnerEvents
- put32(b[4:], uint32(GrabWindow))
- put16(b[8:], EventMask)
- b[10] = PointerMode
- b[11] = KeyboardMode
- put32(b[12:], uint32(ConfineTo))
- put32(b[16:], uint32(Cursor))
- put32(b[20:], uint32(Time))
- return c.sendRequest(b)
-}
-
-func (c *Conn) GrabPointer(OwnerEvents byte, GrabWindow Id, EventMask uint16, PointerMode byte, KeyboardMode byte, ConfineTo Id, Cursor Id, Time Timestamp) (*GrabPointerReply, os.Error) {
- return c.GrabPointerReply(c.GrabPointerRequest(OwnerEvents, GrabWindow, EventMask, PointerMode, KeyboardMode, ConfineTo, Cursor, Time))
-}
-
-type GrabPointerReply struct {
- Status byte
-}
-
-func (c *Conn) GrabPointerReply(cookie Cookie) (*GrabPointerReply, os.Error) {
- b, error := c.waitForReply(cookie)
- if error != nil {
- return nil, error
- }
- v := new(GrabPointerReply)
- v.Status = b[1]
- return v, nil
-}
-
-func (c *Conn) UngrabPointer(Time Timestamp) {
- b := c.scratch[0:8]
- put16(b[2:], 2)
- b[0] = 27
- put32(b[4:], uint32(Time))
- c.sendRequest(b)
-}
-
-const (
- ButtonIndexAny = 0
- ButtonIndex1 = 1
- ButtonIndex2 = 2
- ButtonIndex3 = 3
- ButtonIndex4 = 4
- ButtonIndex5 = 5
-)
-
-func (c *Conn) GrabButton(OwnerEvents byte, GrabWindow Id, EventMask uint16, PointerMode byte, KeyboardMode byte, ConfineTo Id, Cursor Id, Button byte, Modifiers uint16) {
- b := c.scratch[0:24]
- put16(b[2:], 6)
- b[0] = 28
- b[1] = OwnerEvents
- put32(b[4:], uint32(GrabWindow))
- put16(b[8:], EventMask)
- b[10] = PointerMode
- b[11] = KeyboardMode
- put32(b[12:], uint32(ConfineTo))
- put32(b[16:], uint32(Cursor))
- b[20] = Button
- put16(b[22:], Modifiers)
- c.sendRequest(b)
-}
-
-func (c *Conn) UngrabButton(Button byte, GrabWindow Id, Modifiers uint16) {
- b := c.scratch[0:12]
- put16(b[2:], 3)
- b[0] = 29
- b[1] = Button
- put32(b[4:], uint32(GrabWindow))
- put16(b[8:], Modifiers)
- c.sendRequest(b)
-}
-
-func (c *Conn) ChangeActivePointerGrab(Cursor Id, Time Timestamp, EventMask uint16) {
- b := c.scratch[0:16]
- put16(b[2:], 4)
- b[0] = 30
- put32(b[4:], uint32(Cursor))
- put32(b[8:], uint32(Time))
- put16(b[12:], EventMask)
- c.sendRequest(b)
-}
-
-func (c *Conn) GrabKeyboardRequest(OwnerEvents byte, GrabWindow Id, Time Timestamp, PointerMode byte, KeyboardMode byte) Cookie {
- b := c.scratch[0:16]
- put16(b[2:], 4)
- b[0] = 31
- b[1] = OwnerEvents
- put32(b[4:], uint32(GrabWindow))
- put32(b[8:], uint32(Time))
- b[12] = PointerMode
- b[13] = KeyboardMode
- return c.sendRequest(b)
-}
-
-func (c *Conn) GrabKeyboard(OwnerEvents byte, GrabWindow Id, Time Timestamp, PointerMode byte, KeyboardMode byte) (*GrabKeyboardReply, os.Error) {
- return c.GrabKeyboardReply(c.GrabKeyboardRequest(OwnerEvents, GrabWindow, Time, PointerMode, KeyboardMode))
-}
-
-type GrabKeyboardReply struct {
- Status byte
-}
-
-func (c *Conn) GrabKeyboardReply(cookie Cookie) (*GrabKeyboardReply, os.Error) {
- b, error := c.waitForReply(cookie)
- if error != nil {
- return nil, error
- }
- v := new(GrabKeyboardReply)
- v.Status = b[1]
- return v, nil
-}
-
-func (c *Conn) UngrabKeyboard(Time Timestamp) {
- b := c.scratch[0:8]
- put16(b[2:], 2)
- b[0] = 32
- put32(b[4:], uint32(Time))
- c.sendRequest(b)
-}
-
-const (
- GrabAny = 0
-)
-
-func (c *Conn) GrabKey(OwnerEvents byte, GrabWindow Id, Modifiers uint16, Key byte, PointerMode byte, KeyboardMode byte) {
- b := c.scratch[0:16]
- put16(b[2:], 4)
- b[0] = 33
- b[1] = OwnerEvents
- put32(b[4:], uint32(GrabWindow))
- put16(b[8:], Modifiers)
- b[10] = Key
- b[11] = PointerMode
- b[12] = KeyboardMode
- c.sendRequest(b)
-}
-
-func (c *Conn) UngrabKey(Key byte, GrabWindow Id, Modifiers uint16) {
- b := c.scratch[0:12]
- put16(b[2:], 3)
- b[0] = 34
- b[1] = Key
- put32(b[4:], uint32(GrabWindow))
- put16(b[8:], Modifiers)
- c.sendRequest(b)
-}
-
-const (
- AllowAsyncPointer = 0
- AllowSyncPointer = 1
- AllowReplayPointer = 2
- AllowAsyncKeyboard = 3
- AllowSyncKeyboard = 4
- AllowReplayKeyboard = 5
- AllowAsyncBoth = 6
- AllowSyncBoth = 7
-)
-
-func (c *Conn) AllowEvents(Mode byte, Time Timestamp) {
- b := c.scratch[0:8]
- put16(b[2:], 2)
- b[0] = 35
- b[1] = Mode
- put32(b[4:], uint32(Time))
- c.sendRequest(b)
-}
-
-func (c *Conn) GrabServer() {
- b := c.scratch[0:4]
- put16(b[2:], 1)
- b[0] = 36
- c.sendRequest(b)
-}
-
-func (c *Conn) UngrabServer() {
- b := c.scratch[0:4]
- put16(b[2:], 1)
- b[0] = 37
- c.sendRequest(b)
-}
-
-func (c *Conn) QueryPointerRequest(Window Id) Cookie {
- b := c.scratch[0:8]
- put16(b[2:], 2)
- b[0] = 38
- put32(b[4:], uint32(Window))
- return c.sendRequest(b)
-}
-
-func (c *Conn) QueryPointer(Window Id) (*QueryPointerReply, os.Error) {
- return c.QueryPointerReply(c.QueryPointerRequest(Window))
-}
-
-type QueryPointerReply struct {
- SameScreen byte
- Root Id
- Child Id
- RootX int16
- RootY int16
- WinX int16
- WinY int16
- Mask uint16
-}
-
-func (c *Conn) QueryPointerReply(cookie Cookie) (*QueryPointerReply, os.Error) {
- b, error := c.waitForReply(cookie)
- if error != nil {
- return nil, error
- }
- v := new(QueryPointerReply)
- v.SameScreen = b[1]
- v.Root = Id(get32(b[8:]))
- v.Child = Id(get32(b[12:]))
- v.RootX = int16(get16(b[16:]))
- v.RootY = int16(get16(b[18:]))
- v.WinX = int16(get16(b[20:]))
- v.WinY = int16(get16(b[22:]))
- v.Mask = get16(b[24:])
- return v, nil
-}
-
-type Timecoord struct {
- Time Timestamp
- X int16
- Y int16
-}
-
-func getTimecoord(b []byte, v *Timecoord) int {
- v.Time = Timestamp(get32(b[0:]))
- v.X = int16(get16(b[4:]))
- v.Y = int16(get16(b[6:]))
- return 8
-}
-
-func (c *Conn) sendTimecoordList(list []Timecoord, count int) {
- b0 := make([]byte, 8*count)
- for k := 0; k < count; k++ {
- b := b0[k*8:]
- put32(b[0:], uint32(list[k].Time))
- put16(b[4:], uint16(list[k].X))
- put16(b[6:], uint16(list[k].Y))
- }
- c.sendBytes(b0)
-}
-
-func (c *Conn) GetMotionEventsRequest(Window Id, Start Timestamp, Stop Timestamp) Cookie {
- b := c.scratch[0:16]
- put16(b[2:], 4)
- b[0] = 39
- put32(b[4:], uint32(Window))
- put32(b[8:], uint32(Start))
- put32(b[12:], uint32(Stop))
- return c.sendRequest(b)
-}
-
-func (c *Conn) GetMotionEvents(Window Id, Start Timestamp, Stop Timestamp) (*GetMotionEventsReply, os.Error) {
- return c.GetMotionEventsReply(c.GetMotionEventsRequest(Window, Start, Stop))
-}
-
-type GetMotionEventsReply struct {
- EventsLen uint32
- Events []Timecoord
-}
-
-func (c *Conn) GetMotionEventsReply(cookie Cookie) (*GetMotionEventsReply, os.Error) {
- b, error := c.waitForReply(cookie)
- if error != nil {
- return nil, error
- }
- v := new(GetMotionEventsReply)
- v.EventsLen = get32(b[8:])
- offset := 32
- v.Events = make([]Timecoord, int(v.EventsLen))
- for i := 0; i < int(v.EventsLen); i++ {
- offset += getTimecoord(b[offset:], &v.Events[i])
- }
- return v, nil
-}
-
-func (c *Conn) TranslateCoordinatesRequest(SrcWindow Id, DstWindow Id, SrcX int16, SrcY int16) Cookie {
- b := c.scratch[0:16]
- put16(b[2:], 4)
- b[0] = 40
- put32(b[4:], uint32(SrcWindow))
- put32(b[8:], uint32(DstWindow))
- put16(b[12:], uint16(SrcX))
- put16(b[14:], uint16(SrcY))
- return c.sendRequest(b)
-}
-
-func (c *Conn) TranslateCoordinates(SrcWindow Id, DstWindow Id, SrcX int16, SrcY int16) (*TranslateCoordinatesReply, os.Error) {
- return c.TranslateCoordinatesReply(c.TranslateCoordinatesRequest(SrcWindow, DstWindow, SrcX, SrcY))
-}
-
-type TranslateCoordinatesReply struct {
- SameScreen byte
- Child Id
- DstX uint16
- DstY uint16
-}
-
-func (c *Conn) TranslateCoordinatesReply(cookie Cookie) (*TranslateCoordinatesReply, os.Error) {
- b, error := c.waitForReply(cookie)
- if error != nil {
- return nil, error
- }
- v := new(TranslateCoordinatesReply)
- v.SameScreen = b[1]
- v.Child = Id(get32(b[8:]))
- v.DstX = get16(b[12:])
- v.DstY = get16(b[14:])
- return v, nil
-}
-
-func (c *Conn) WarpPointer(SrcWindow Id, DstWindow Id, SrcX int16, SrcY int16, SrcWidth uint16, SrcHeight uint16, DstX int16, DstY int16) {
- b := c.scratch[0:24]
- put16(b[2:], 6)
- b[0] = 41
- put32(b[4:], uint32(SrcWindow))
- put32(b[8:], uint32(DstWindow))
- put16(b[12:], uint16(SrcX))
- put16(b[14:], uint16(SrcY))
- put16(b[16:], SrcWidth)
- put16(b[18:], SrcHeight)
- put16(b[20:], uint16(DstX))
- put16(b[22:], uint16(DstY))
- c.sendRequest(b)
-}
-
-const (
- InputFocusNone = 0
- InputFocusPointerRoot = 1
- InputFocusParent = 2
- InputFocusFollowKeyboard = 3
-)
-
-func (c *Conn) SetInputFocus(RevertTo byte, Focus Id, Time Timestamp) {
- b := c.scratch[0:12]
- put16(b[2:], 3)
- b[0] = 42
- b[1] = RevertTo
- put32(b[4:], uint32(Focus))
- put32(b[8:], uint32(Time))
- c.sendRequest(b)
-}
-
-func (c *Conn) GetInputFocusRequest() Cookie {
- b := c.scratch[0:4]
- put16(b[2:], 1)
- b[0] = 43
- return c.sendRequest(b)
-}
-
-func (c *Conn) GetInputFocus() (*GetInputFocusReply, os.Error) {
- return c.GetInputFocusReply(c.GetInputFocusRequest())
-}
-
-type GetInputFocusReply struct {
- RevertTo byte
- Focus Id
-}
-
-func (c *Conn) GetInputFocusReply(cookie Cookie) (*GetInputFocusReply, os.Error) {
- b, error := c.waitForReply(cookie)
- if error != nil {
- return nil, error
- }
- v := new(GetInputFocusReply)
- v.RevertTo = b[1]
- v.Focus = Id(get32(b[8:]))
- return v, nil
-}
-
-func (c *Conn) QueryKeymapRequest() Cookie {
- b := c.scratch[0:4]
- put16(b[2:], 1)
- b[0] = 44
- return c.sendRequest(b)
-}
-
-func (c *Conn) QueryKeymap() (*QueryKeymapReply, os.Error) {
- return c.QueryKeymapReply(c.QueryKeymapRequest())
-}
-
-type QueryKeymapReply struct {
- Keys [32]byte
-}
-
-func (c *Conn) QueryKeymapReply(cookie Cookie) (*QueryKeymapReply, os.Error) {
- b, error := c.waitForReply(cookie)
- if error != nil {
- return nil, error
- }
- v := new(QueryKeymapReply)
- copy(v.Keys[0:32], b[8:])
- return v, nil
-}
-
-func (c *Conn) OpenFont(Fid Id, Name string) {
- b := c.scratch[0:12]
- n := 12
- n += pad(len(Name) * 1)
- put16(b[2:], uint16(n/4))
- b[0] = 45
- put32(b[4:], uint32(Fid))
- put16(b[8:], uint16(len(Name)))
- c.sendRequest(b)
- c.sendString(Name)
-}
-
-func (c *Conn) CloseFont(Font Id) {
- b := c.scratch[0:8]
- put16(b[2:], 2)
- b[0] = 46
- put32(b[4:], uint32(Font))
- c.sendRequest(b)
-}
-
-const (
- FontDrawLeftToRight = 0
- FontDrawRightToLeft = 1
-)
-
-type Fontprop struct {
- Name Id
- Value uint32
-}
-
-func getFontprop(b []byte, v *Fontprop) int {
- v.Name = Id(get32(b[0:]))
- v.Value = get32(b[4:])
- return 8
-}
-
-func (c *Conn) sendFontpropList(list []Fontprop, count int) {
- b0 := make([]byte, 8*count)
- for k := 0; k < count; k++ {
- b := b0[k*8:]
- put32(b[0:], uint32(list[k].Name))
- put32(b[4:], list[k].Value)
- }
- c.sendBytes(b0)
-}
-
-type Charinfo struct {
- LeftSideBearing int16
- RightSideBearing int16
- CharacterWidth int16
- Ascent int16
- Descent int16
- Attributes uint16
-}
-
-func getCharinfo(b []byte, v *Charinfo) int {
- v.LeftSideBearing = int16(get16(b[0:]))
- v.RightSideBearing = int16(get16(b[2:]))
- v.CharacterWidth = int16(get16(b[4:]))
- v.Ascent = int16(get16(b[6:]))
- v.Descent = int16(get16(b[8:]))
- v.Attributes = get16(b[10:])
- return 12
-}
-
-func (c *Conn) sendCharinfoList(list []Charinfo, count int) {
- b0 := make([]byte, 12*count)
- for k := 0; k < count; k++ {
- b := b0[k*12:]
- put16(b[0:], uint16(list[k].LeftSideBearing))
- put16(b[2:], uint16(list[k].RightSideBearing))
- put16(b[4:], uint16(list[k].CharacterWidth))
- put16(b[6:], uint16(list[k].Ascent))
- put16(b[8:], uint16(list[k].Descent))
- put16(b[10:], list[k].Attributes)
- }
- c.sendBytes(b0)
-}
-
-func (c *Conn) QueryFontRequest(Font Id) Cookie {
- b := c.scratch[0:8]
- put16(b[2:], 2)
- b[0] = 47
- put32(b[4:], uint32(Font))
- return c.sendRequest(b)
-}
-
-func (c *Conn) QueryFont(Font Id) (*QueryFontReply, os.Error) {
- return c.QueryFontReply(c.QueryFontRequest(Font))
-}
-
-type QueryFontReply struct {
- MinBounds Charinfo
- MaxBounds Charinfo
- MinCharOrByte2 uint16
- MaxCharOrByte2 uint16
- DefaultChar uint16
- PropertiesLen uint16
- DrawDirection byte
- MinByte1 byte
- MaxByte1 byte
- AllCharsExist byte
- FontAscent int16
- FontDescent int16
- CharInfosLen uint32
- Properties []Fontprop
- CharInfos []Charinfo
-}
-
-func (c *Conn) QueryFontReply(cookie Cookie) (*QueryFontReply, os.Error) {
- b, error := c.waitForReply(cookie)
- if error != nil {
- return nil, error
- }
- v := new(QueryFontReply)
- getCharinfo(b[8:], &v.MinBounds)
- getCharinfo(b[24:], &v.MaxBounds)
- v.MinCharOrByte2 = get16(b[40:])
- v.MaxCharOrByte2 = get16(b[42:])
- v.DefaultChar = get16(b[44:])
- v.PropertiesLen = get16(b[46:])
- v.DrawDirection = b[48]
- v.MinByte1 = b[49]
- v.MaxByte1 = b[50]
- v.AllCharsExist = b[51]
- v.FontAscent = int16(get16(b[52:]))
- v.FontDescent = int16(get16(b[54:]))
- v.CharInfosLen = get32(b[56:])
- offset := 60
- v.Properties = make([]Fontprop, int(v.PropertiesLen))
- for i := 0; i < int(v.PropertiesLen); i++ {
- offset += getFontprop(b[offset:], &v.Properties[i])
- }
- offset = pad(offset)
- v.CharInfos = make([]Charinfo, int(v.CharInfosLen))
- for i := 0; i < int(v.CharInfosLen); i++ {
- offset += getCharinfo(b[offset:], &v.CharInfos[i])
- }
- return v, nil
-}
-
-func (c *Conn) QueryTextExtentsRequest(Font Id, String []Char2b) Cookie {
- b := c.scratch[0:8]
- n := 8
- n += pad(len(String) * 2)
- put16(b[2:], uint16(n/4))
- b[0] = 48
- b[1] = byte((len(String) & 1))
- put32(b[4:], uint32(Font))
- cookie := c.sendRequest(b)
- c.sendChar2bList(String, len(String))
- return cookie
-}
-
-func (c *Conn) QueryTextExtents(Font Id, String []Char2b) (*QueryTextExtentsReply, os.Error) {
- return c.QueryTextExtentsReply(c.QueryTextExtentsRequest(Font, String))
-}
-
-type QueryTextExtentsReply struct {
- DrawDirection byte
- FontAscent int16
- FontDescent int16
- OverallAscent int16
- OverallDescent int16
- OverallWidth int32
- OverallLeft int32
- OverallRight int32
-}
-
-func (c *Conn) QueryTextExtentsReply(cookie Cookie) (*QueryTextExtentsReply, os.Error) {
- b, error := c.waitForReply(cookie)
- if error != nil {
- return nil, error
- }
- v := new(QueryTextExtentsReply)
- v.DrawDirection = b[1]
- v.FontAscent = int16(get16(b[8:]))
- v.FontDescent = int16(get16(b[10:]))
- v.OverallAscent = int16(get16(b[12:]))
- v.OverallDescent = int16(get16(b[14:]))
- v.OverallWidth = int32(get32(b[16:]))
- v.OverallLeft = int32(get32(b[20:]))
- v.OverallRight = int32(get32(b[24:]))
- return v, nil
-}
-
-type Str struct {
- NameLen byte
- Name []byte
-}
-
-func getStr(b []byte, v *Str) int {
- v.NameLen = b[0]
- offset := 1
- v.Name = make([]byte, int(v.NameLen))
- copy(v.Name[0:len(v.Name)], b[offset:])
- offset += len(v.Name) * 1
- return offset
-}
-
-// omitting variable length sendStr
-
-func (c *Conn) ListFontsRequest(MaxNames uint16, Pattern []byte) Cookie {
- b := c.scratch[0:8]
- n := 8
- n += pad(len(Pattern) * 1)
- put16(b[2:], uint16(n/4))
- b[0] = 49
- put16(b[4:], MaxNames)
- put16(b[6:], uint16(len(Pattern)))
- cookie := c.sendRequest(b)
- c.sendBytes(Pattern[0:len(Pattern)])
- return cookie
-}
-
-func (c *Conn) ListFonts(MaxNames uint16, Pattern []byte) (*ListFontsReply, os.Error) {
- return c.ListFontsReply(c.ListFontsRequest(MaxNames, Pattern))
-}
-
-type ListFontsReply struct {
- NamesLen uint16
- Names []Str
-}
-
-func (c *Conn) ListFontsReply(cookie Cookie) (*ListFontsReply, os.Error) {
- b, error := c.waitForReply(cookie)
- if error != nil {
- return nil, error
- }
- v := new(ListFontsReply)
- v.NamesLen = get16(b[8:])
- offset := 32
- v.Names = make([]Str, int(v.NamesLen))
- for i := 0; i < int(v.NamesLen); i++ {
- offset += getStr(b[offset:], &v.Names[i])
- }
- return v, nil
-}
-
-func (c *Conn) ListFontsWithInfoRequest(MaxNames uint16, Pattern []byte) Cookie {
- b := c.scratch[0:8]
- n := 8
- n += pad(len(Pattern) * 1)
- put16(b[2:], uint16(n/4))
- b[0] = 50
- put16(b[4:], MaxNames)
- put16(b[6:], uint16(len(Pattern)))
- cookie := c.sendRequest(b)
- c.sendBytes(Pattern[0:len(Pattern)])
- return cookie
-}
-
-func (c *Conn) ListFontsWithInfo(MaxNames uint16, Pattern []byte) (*ListFontsWithInfoReply, os.Error) {
- return c.ListFontsWithInfoReply(c.ListFontsWithInfoRequest(MaxNames, Pattern))
-}
-
-type ListFontsWithInfoReply struct {
- NameLen byte
- MinBounds Charinfo
- MaxBounds Charinfo
- MinCharOrByte2 uint16
- MaxCharOrByte2 uint16
- DefaultChar uint16
- PropertiesLen uint16
- DrawDirection byte
- MinByte1 byte
- MaxByte1 byte
- AllCharsExist byte
- FontAscent int16
- FontDescent int16
- RepliesHint uint32
- Properties []Fontprop
- Name []byte
-}
-
-func (c *Conn) ListFontsWithInfoReply(cookie Cookie) (*ListFontsWithInfoReply, os.Error) {
- b, error := c.waitForReply(cookie)
- if error != nil {
- return nil, error
- }
- v := new(ListFontsWithInfoReply)
- v.NameLen = b[1]
- getCharinfo(b[8:], &v.MinBounds)
- getCharinfo(b[24:], &v.MaxBounds)
- v.MinCharOrByte2 = get16(b[40:])
- v.MaxCharOrByte2 = get16(b[42:])
- v.DefaultChar = get16(b[44:])
- v.PropertiesLen = get16(b[46:])
- v.DrawDirection = b[48]
- v.MinByte1 = b[49]
- v.MaxByte1 = b[50]
- v.AllCharsExist = b[51]
- v.FontAscent = int16(get16(b[52:]))
- v.FontDescent = int16(get16(b[54:]))
- v.RepliesHint = get32(b[56:])
- offset := 60
- v.Properties = make([]Fontprop, int(v.PropertiesLen))
- for i := 0; i < int(v.PropertiesLen); i++ {
- offset += getFontprop(b[offset:], &v.Properties[i])
- }
- offset = pad(offset)
- v.Name = make([]byte, int(v.NameLen))
- copy(v.Name[0:len(v.Name)], b[offset:])
- offset += len(v.Name) * 1
- return v, nil
-}
-
-func (c *Conn) SetFontPath(FontQty uint16, Path []byte) {
- b := c.scratch[0:8]
- n := 8
- n += pad(len(Path) * 1)
- put16(b[2:], uint16(n/4))
- b[0] = 51
- put16(b[4:], FontQty)
- c.sendRequest(b)
- c.sendBytes(Path[0:len(Path)])
-}
-
-func (c *Conn) GetFontPathRequest() Cookie {
- b := c.scratch[0:4]
- put16(b[2:], 1)
- b[0] = 52
- return c.sendRequest(b)
-}
-
-func (c *Conn) GetFontPath() (*GetFontPathReply, os.Error) {
- return c.GetFontPathReply(c.GetFontPathRequest())
-}
-
-type GetFontPathReply struct {
- PathLen uint16
- Path []Str
-}
-
-func (c *Conn) GetFontPathReply(cookie Cookie) (*GetFontPathReply, os.Error) {
- b, error := c.waitForReply(cookie)
- if error != nil {
- return nil, error
- }
- v := new(GetFontPathReply)
- v.PathLen = get16(b[8:])
- offset := 32
- v.Path = make([]Str, int(v.PathLen))
- for i := 0; i < int(v.PathLen); i++ {
- offset += getStr(b[offset:], &v.Path[i])
- }
- return v, nil
-}
-
-func (c *Conn) CreatePixmap(Depth byte, Pid Id, Drawable Id, Width uint16, Height uint16) {
- b := c.scratch[0:16]
- put16(b[2:], 4)
- b[0] = 53
- b[1] = Depth
- put32(b[4:], uint32(Pid))
- put32(b[8:], uint32(Drawable))
- put16(b[12:], Width)
- put16(b[14:], Height)
- c.sendRequest(b)
-}
-
-func (c *Conn) FreePixmap(Pixmap Id) {
- b := c.scratch[0:8]
- put16(b[2:], 2)
- b[0] = 54
- put32(b[4:], uint32(Pixmap))
- c.sendRequest(b)
-}
-
-const (
- GCFunction = 1
- GCPlaneMask = 2
- GCForeground = 4
- GCBackground = 8
- GCLineWidth = 16
- GCLineStyle = 32
- GCCapStyle = 64
- GCJoinStyle = 128
- GCFillStyle = 256
- GCFillRule = 512
- GCTile = 1024
- GCStipple = 2048
- GCTileStippleOriginX = 4096
- GCTileStippleOriginY = 8192
- GCFont = 16384
- GCSubwindowMode = 32768
- GCGraphicsExposures = 65536
- GCClipOriginX = 131072
- GCClipOriginY = 262144
- GCClipMask = 524288
- GCDashOffset = 1048576
- GCDashList = 2097152
- GCArcMode = 4194304
-)
-
-const (
- GXClear = 0
- GXAnd = 1
- GXAndReverse = 2
- GXCopy = 3
- GXAndInverted = 4
- GXNoop = 5
- GXXor = 6
- GXOr = 7
- GXNor = 8
- GXEquiv = 9
- GXInvert = 10
- GXOrReverse = 11
- GXCopyInverted = 12
- GXOrInverted = 13
- GXNand = 14
- GXSet = 15
-)
-
-const (
- LineStyleSolid = 0
- LineStyleOnOffDash = 1
- LineStyleDoubleDash = 2
-)
-
-const (
- CapStyleNotLast = 0
- CapStyleButt = 1
- CapStyleRound = 2
- CapStyleProjecting = 3
-)
-
-const (
- JoinStyleMiter = 0
- JoinStyleRound = 1
- JoinStyleBevel = 2
-)
-
-const (
- FillStyleSolid = 0
- FillStyleTiled = 1
- FillStyleStippled = 2
- FillStyleOpaqueStippled = 3
-)
-
-const (
- FillRuleEvenOdd = 0
- FillRuleWinding = 1
-)
-
-const (
- SubwindowModeClipByChildren = 0
- SubwindowModeIncludeInferiors = 1
-)
-
-const (
- ArcModeChord = 0
- ArcModePieSlice = 1
-)
-
-func (c *Conn) CreateGC(Cid Id, Drawable Id, ValueMask uint32, ValueList []uint32) {
- b := c.scratch[0:16]
- n := 16
- n += pad(popCount(int(ValueMask)) * 4)
- put16(b[2:], uint16(n/4))
- b[0] = 55
- put32(b[4:], uint32(Cid))
- put32(b[8:], uint32(Drawable))
- put32(b[12:], ValueMask)
- c.sendRequest(b)
- c.sendUInt32List(ValueList[0:popCount(int(ValueMask))])
-}
-
-func (c *Conn) ChangeGC(Gc Id, ValueMask uint32, ValueList []uint32) {
- b := c.scratch[0:12]
- n := 12
- n += pad(popCount(int(ValueMask)) * 4)
- put16(b[2:], uint16(n/4))
- b[0] = 56
- put32(b[4:], uint32(Gc))
- put32(b[8:], ValueMask)
- c.sendRequest(b)
- c.sendUInt32List(ValueList[0:popCount(int(ValueMask))])
-}
-
-func (c *Conn) CopyGC(SrcGc Id, DstGc Id, ValueMask uint32) {
- b := c.scratch[0:16]
- put16(b[2:], 4)
- b[0] = 57
- put32(b[4:], uint32(SrcGc))
- put32(b[8:], uint32(DstGc))
- put32(b[12:], ValueMask)
- c.sendRequest(b)
-}
-
-func (c *Conn) SetDashes(Gc Id, DashOffset uint16, Dashes []byte) {
- b := c.scratch[0:12]
- n := 12
- n += pad(len(Dashes) * 1)
- put16(b[2:], uint16(n/4))
- b[0] = 58
- put32(b[4:], uint32(Gc))
- put16(b[8:], DashOffset)
- put16(b[10:], uint16(len(Dashes)))
- c.sendRequest(b)
- c.sendBytes(Dashes[0:len(Dashes)])
-}
-
-const (
- ClipOrderingUnsorted = 0
- ClipOrderingYSorted = 1
- ClipOrderingYXSorted = 2
- ClipOrderingYXBanded = 3
-)
-
-func (c *Conn) SetClipRectangles(Ordering byte, Gc Id, ClipXOrigin int16, ClipYOrigin int16, Rectangles []Rectangle) {
- b := c.scratch[0:12]
- n := 12
- n += pad(len(Rectangles) * 8)
- put16(b[2:], uint16(n/4))
- b[0] = 59
- b[1] = Ordering
- put32(b[4:], uint32(Gc))
- put16(b[8:], uint16(ClipXOrigin))
- put16(b[10:], uint16(ClipYOrigin))
- c.sendRequest(b)
- c.sendRectangleList(Rectangles, len(Rectangles))
-}
-
-func (c *Conn) FreeGC(Gc Id) {
- b := c.scratch[0:8]
- put16(b[2:], 2)
- b[0] = 60
- put32(b[4:], uint32(Gc))
- c.sendRequest(b)
-}
-
-func (c *Conn) ClearArea(Exposures byte, Window Id, X int16, Y int16, Width uint16, Height uint16) {
- b := c.scratch[0:16]
- put16(b[2:], 4)
- b[0] = 61
- b[1] = Exposures
- put32(b[4:], uint32(Window))
- put16(b[8:], uint16(X))
- put16(b[10:], uint16(Y))
- put16(b[12:], Width)
- put16(b[14:], Height)
- c.sendRequest(b)
-}
-
-func (c *Conn) CopyArea(SrcDrawable Id, DstDrawable Id, Gc Id, SrcX int16, SrcY int16, DstX int16, DstY int16, Width uint16, Height uint16) {
- b := c.scratch[0:28]
- put16(b[2:], 7)
- b[0] = 62
- put32(b[4:], uint32(SrcDrawable))
- put32(b[8:], uint32(DstDrawable))
- put32(b[12:], uint32(Gc))
- put16(b[16:], uint16(SrcX))
- put16(b[18:], uint16(SrcY))
- put16(b[20:], uint16(DstX))
- put16(b[22:], uint16(DstY))
- put16(b[24:], Width)
- put16(b[26:], Height)
- c.sendRequest(b)
-}
-
-func (c *Conn) CopyPlane(SrcDrawable Id, DstDrawable Id, Gc Id, SrcX int16, SrcY int16, DstX int16, DstY int16, Width uint16, Height uint16, BitPlane uint32) {
- b := c.scratch[0:32]
- put16(b[2:], 8)
- b[0] = 63
- put32(b[4:], uint32(SrcDrawable))
- put32(b[8:], uint32(DstDrawable))
- put32(b[12:], uint32(Gc))
- put16(b[16:], uint16(SrcX))
- put16(b[18:], uint16(SrcY))
- put16(b[20:], uint16(DstX))
- put16(b[22:], uint16(DstY))
- put16(b[24:], Width)
- put16(b[26:], Height)
- put32(b[28:], BitPlane)
- c.sendRequest(b)
-}
-
-const (
- CoordModeOrigin = 0
- CoordModePrevious = 1
-)
-
-func (c *Conn) PolyPoint(CoordinateMode byte, Drawable Id, Gc Id, Points []Point) {
- b := c.scratch[0:12]
- n := 12
- n += pad(len(Points) * 4)
- put16(b[2:], uint16(n/4))
- b[0] = 64
- b[1] = CoordinateMode
- put32(b[4:], uint32(Drawable))
- put32(b[8:], uint32(Gc))
- c.sendRequest(b)
- c.sendPointList(Points, len(Points))
-}
-
-func (c *Conn) PolyLine(CoordinateMode byte, Drawable Id, Gc Id, Points []Point) {
- b := c.scratch[0:12]
- n := 12
- n += pad(len(Points) * 4)
- put16(b[2:], uint16(n/4))
- b[0] = 65
- b[1] = CoordinateMode
- put32(b[4:], uint32(Drawable))
- put32(b[8:], uint32(Gc))
- c.sendRequest(b)
- c.sendPointList(Points, len(Points))
-}
-
-type Segment struct {
- X1 int16
- Y1 int16
- X2 int16
- Y2 int16
-}
-
-func getSegment(b []byte, v *Segment) int {
- v.X1 = int16(get16(b[0:]))
- v.Y1 = int16(get16(b[2:]))
- v.X2 = int16(get16(b[4:]))
- v.Y2 = int16(get16(b[6:]))
- return 8
-}
-
-func (c *Conn) sendSegmentList(list []Segment, count int) {
- b0 := make([]byte, 8*count)
- for k := 0; k < count; k++ {
- b := b0[k*8:]
- put16(b[0:], uint16(list[k].X1))
- put16(b[2:], uint16(list[k].Y1))
- put16(b[4:], uint16(list[k].X2))
- put16(b[6:], uint16(list[k].Y2))
- }
- c.sendBytes(b0)
-}
-
-func (c *Conn) PolySegment(Drawable Id, Gc Id, Segments []Segment) {
- b := c.scratch[0:12]
- n := 12
- n += pad(len(Segments) * 8)
- put16(b[2:], uint16(n/4))
- b[0] = 66
- put32(b[4:], uint32(Drawable))
- put32(b[8:], uint32(Gc))
- c.sendRequest(b)
- c.sendSegmentList(Segments, len(Segments))
-}
-
-func (c *Conn) PolyRectangle(Drawable Id, Gc Id, Rectangles []Rectangle) {
- b := c.scratch[0:12]
- n := 12
- n += pad(len(Rectangles) * 8)
- put16(b[2:], uint16(n/4))
- b[0] = 67
- put32(b[4:], uint32(Drawable))
- put32(b[8:], uint32(Gc))
- c.sendRequest(b)
- c.sendRectangleList(Rectangles, len(Rectangles))
-}
-
-func (c *Conn) PolyArc(Drawable Id, Gc Id, Arcs []Arc) {
- b := c.scratch[0:12]
- n := 12
- n += pad(len(Arcs) * 12)
- put16(b[2:], uint16(n/4))
- b[0] = 68
- put32(b[4:], uint32(Drawable))
- put32(b[8:], uint32(Gc))
- c.sendRequest(b)
- c.sendArcList(Arcs, len(Arcs))
-}
-
-const (
- PolyShapeComplex = 0
- PolyShapeNonconvex = 1
- PolyShapeConvex = 2
-)
-
-func (c *Conn) FillPoly(Drawable Id, Gc Id, Shape byte, CoordinateMode byte, Points []Point) {
- b := c.scratch[0:16]
- n := 16
- n += pad(len(Points) * 4)
- put16(b[2:], uint16(n/4))
- b[0] = 69
- put32(b[4:], uint32(Drawable))
- put32(b[8:], uint32(Gc))
- b[12] = Shape
- b[13] = CoordinateMode
- c.sendRequest(b)
- c.sendPointList(Points, len(Points))
-}
-
-func (c *Conn) PolyFillRectangle(Drawable Id, Gc Id, Rectangles []Rectangle) {
- b := c.scratch[0:12]
- n := 12
- n += pad(len(Rectangles) * 8)
- put16(b[2:], uint16(n/4))
- b[0] = 70
- put32(b[4:], uint32(Drawable))
- put32(b[8:], uint32(Gc))
- c.sendRequest(b)
- c.sendRectangleList(Rectangles, len(Rectangles))
-}
-
-func (c *Conn) PolyFillArc(Drawable Id, Gc Id, Arcs []Arc) {
- b := c.scratch[0:12]
- n := 12
- n += pad(len(Arcs) * 12)
- put16(b[2:], uint16(n/4))
- b[0] = 71
- put32(b[4:], uint32(Drawable))
- put32(b[8:], uint32(Gc))
- c.sendRequest(b)
- c.sendArcList(Arcs, len(Arcs))
-}
-
-const (
- ImageFormatXYBitmap = 0
- ImageFormatXYPixmap = 1
- ImageFormatZPixmap = 2
-)
-
-func (c *Conn) PutImage(Format byte, Drawable Id, Gc Id, Width uint16, Height uint16, DstX int16, DstY int16, LeftPad byte, Depth byte, Data []byte) {
- b := c.scratch[0:24]
- n := 24
- n += pad(len(Data) * 1)
- put16(b[2:], uint16(n/4))
- b[0] = 72
- b[1] = Format
- put32(b[4:], uint32(Drawable))
- put32(b[8:], uint32(Gc))
- put16(b[12:], Width)
- put16(b[14:], Height)
- put16(b[16:], uint16(DstX))
- put16(b[18:], uint16(DstY))
- b[20] = LeftPad
- b[21] = Depth
- c.sendRequest(b)
- c.sendBytes(Data[0:len(Data)])
-}
-
-func (c *Conn) GetImageRequest(Format byte, Drawable Id, X int16, Y int16, Width uint16, Height uint16, PlaneMask uint32) Cookie {
- b := c.scratch[0:20]
- put16(b[2:], 5)
- b[0] = 73
- b[1] = Format
- put32(b[4:], uint32(Drawable))
- put16(b[8:], uint16(X))
- put16(b[10:], uint16(Y))
- put16(b[12:], Width)
- put16(b[14:], Height)
- put32(b[16:], PlaneMask)
- return c.sendRequest(b)
-}
-
-func (c *Conn) GetImage(Format byte, Drawable Id, X int16, Y int16, Width uint16, Height uint16, PlaneMask uint32) (*GetImageReply, os.Error) {
- return c.GetImageReply(c.GetImageRequest(Format, Drawable, X, Y, Width, Height, PlaneMask))
-}
-
-type GetImageReply struct {
- Depth byte
- Length uint32
- Visual Id
- Data []byte
-}
-
-func (c *Conn) GetImageReply(cookie Cookie) (*GetImageReply, os.Error) {
- b, error := c.waitForReply(cookie)
- if error != nil {
- return nil, error
- }
- v := new(GetImageReply)
- v.Depth = b[1]
- v.Length = get32(b[4:])
- v.Visual = Id(get32(b[8:]))
- offset := 32
- v.Data = make([]byte, (int(v.Length) * 4))
- copy(v.Data[0:len(v.Data)], b[offset:])
- offset += len(v.Data) * 1
- return v, nil
-}
-
-func (c *Conn) PolyText8(Drawable Id, Gc Id, X int16, Y int16, Items []byte) {
- b := c.scratch[0:16]
- n := 16
- n += pad(len(Items) * 1)
- put16(b[2:], uint16(n/4))
- b[0] = 74
- put32(b[4:], uint32(Drawable))
- put32(b[8:], uint32(Gc))
- put16(b[12:], uint16(X))
- put16(b[14:], uint16(Y))
- c.sendRequest(b)
- c.sendBytes(Items[0:len(Items)])
-}
-
-func (c *Conn) PolyText16(Drawable Id, Gc Id, X int16, Y int16, Items []byte) {
- b := c.scratch[0:16]
- n := 16
- n += pad(len(Items) * 1)
- put16(b[2:], uint16(n/4))
- b[0] = 75
- put32(b[4:], uint32(Drawable))
- put32(b[8:], uint32(Gc))
- put16(b[12:], uint16(X))
- put16(b[14:], uint16(Y))
- c.sendRequest(b)
- c.sendBytes(Items[0:len(Items)])
-}
-
-func (c *Conn) ImageText8(Drawable Id, Gc Id, X int16, Y int16, String []byte) {
- b := c.scratch[0:16]
- n := 16
- n += pad(len(String) * 1)
- put16(b[2:], uint16(n/4))
- b[0] = 76
- b[1] = byte(len(String))
- put32(b[4:], uint32(Drawable))
- put32(b[8:], uint32(Gc))
- put16(b[12:], uint16(X))
- put16(b[14:], uint16(Y))
- c.sendRequest(b)
- c.sendBytes(String[0:len(String)])
-}
-
-func (c *Conn) ImageText16(Drawable Id, Gc Id, X int16, Y int16, String []Char2b) {
- b := c.scratch[0:16]
- n := 16
- n += pad(len(String) * 2)
- put16(b[2:], uint16(n/4))
- b[0] = 77
- b[1] = byte(len(String))
- put32(b[4:], uint32(Drawable))
- put32(b[8:], uint32(Gc))
- put16(b[12:], uint16(X))
- put16(b[14:], uint16(Y))
- c.sendRequest(b)
- c.sendChar2bList(String, len(String))
-}
-
-const (
- ColormapAllocNone = 0
- ColormapAllocAll = 1
-)
-
-func (c *Conn) CreateColormap(Alloc byte, Mid Id, Window Id, Visual Id) {
- b := c.scratch[0:16]
- put16(b[2:], 4)
- b[0] = 78
- b[1] = Alloc
- put32(b[4:], uint32(Mid))
- put32(b[8:], uint32(Window))
- put32(b[12:], uint32(Visual))
- c.sendRequest(b)
-}
-
-func (c *Conn) FreeColormap(Cmap Id) {
- b := c.scratch[0:8]
- put16(b[2:], 2)
- b[0] = 79
- put32(b[4:], uint32(Cmap))
- c.sendRequest(b)
-}
-
-func (c *Conn) CopyColormapAndFree(Mid Id, SrcCmap Id) {
- b := c.scratch[0:12]
- put16(b[2:], 3)
- b[0] = 80
- put32(b[4:], uint32(Mid))
- put32(b[8:], uint32(SrcCmap))
- c.sendRequest(b)
-}
-
-func (c *Conn) InstallColormap(Cmap Id) {
- b := c.scratch[0:8]
- put16(b[2:], 2)
- b[0] = 81
- put32(b[4:], uint32(Cmap))
- c.sendRequest(b)
-}
-
-func (c *Conn) UninstallColormap(Cmap Id) {
- b := c.scratch[0:8]
- put16(b[2:], 2)
- b[0] = 82
- put32(b[4:], uint32(Cmap))
- c.sendRequest(b)
-}
-
-func (c *Conn) ListInstalledColormapsRequest(Window Id) Cookie {
- b := c.scratch[0:8]
- put16(b[2:], 2)
- b[0] = 83
- put32(b[4:], uint32(Window))
- return c.sendRequest(b)
-}
-
-func (c *Conn) ListInstalledColormaps(Window Id) (*ListInstalledColormapsReply, os.Error) {
- return c.ListInstalledColormapsReply(c.ListInstalledColormapsRequest(Window))
-}
-
-type ListInstalledColormapsReply struct {
- CmapsLen uint16
- Cmaps []Id
-}
-
-func (c *Conn) ListInstalledColormapsReply(cookie Cookie) (*ListInstalledColormapsReply, os.Error) {
- b, error := c.waitForReply(cookie)
- if error != nil {
- return nil, error
- }
- v := new(ListInstalledColormapsReply)
- v.CmapsLen = get16(b[8:])
- offset := 32
- v.Cmaps = make([]Id, int(v.CmapsLen))
- for i := 0; i < len(v.Cmaps); i++ {
- v.Cmaps[i] = Id(get32(b[offset+i*4:]))
- }
- offset += len(v.Cmaps) * 4
- return v, nil
-}
-
-func (c *Conn) AllocColorRequest(Cmap Id, Red uint16, Green uint16, Blue uint16) Cookie {
- b := c.scratch[0:16]
- put16(b[2:], 4)
- b[0] = 84
- put32(b[4:], uint32(Cmap))
- put16(b[8:], Red)
- put16(b[10:], Green)
- put16(b[12:], Blue)
- return c.sendRequest(b)
-}
-
-func (c *Conn) AllocColor(Cmap Id, Red uint16, Green uint16, Blue uint16) (*AllocColorReply, os.Error) {
- return c.AllocColorReply(c.AllocColorRequest(Cmap, Red, Green, Blue))
-}
-
-type AllocColorReply struct {
- Red uint16
- Green uint16
- Blue uint16
- Pixel uint32
-}
-
-func (c *Conn) AllocColorReply(cookie Cookie) (*AllocColorReply, os.Error) {
- b, error := c.waitForReply(cookie)
- if error != nil {
- return nil, error
- }
- v := new(AllocColorReply)
- v.Red = get16(b[8:])
- v.Green = get16(b[10:])
- v.Blue = get16(b[12:])
- v.Pixel = get32(b[16:])
- return v, nil
-}
-
-func (c *Conn) AllocNamedColorRequest(Cmap Id, Name string) Cookie {
- b := c.scratch[0:12]
- n := 12
- n += pad(len(Name) * 1)
- put16(b[2:], uint16(n/4))
- b[0] = 85
- put32(b[4:], uint32(Cmap))
- put16(b[8:], uint16(len(Name)))
- cookie := c.sendRequest(b)
- c.sendString(Name)
- return cookie
-}
-
-func (c *Conn) AllocNamedColor(Cmap Id, Name string) (*AllocNamedColorReply, os.Error) {
- return c.AllocNamedColorReply(c.AllocNamedColorRequest(Cmap, Name))
-}
-
-type AllocNamedColorReply struct {
- Pixel uint32
- ExactRed uint16
- ExactGreen uint16
- ExactBlue uint16
- VisualRed uint16
- VisualGreen uint16
- VisualBlue uint16
-}
-
-func (c *Conn) AllocNamedColorReply(cookie Cookie) (*AllocNamedColorReply, os.Error) {
- b, error := c.waitForReply(cookie)
- if error != nil {
- return nil, error
- }
- v := new(AllocNamedColorReply)
- v.Pixel = get32(b[8:])
- v.ExactRed = get16(b[12:])
- v.ExactGreen = get16(b[14:])
- v.ExactBlue = get16(b[16:])
- v.VisualRed = get16(b[18:])
- v.VisualGreen = get16(b[20:])
- v.VisualBlue = get16(b[22:])
- return v, nil
-}
-
-func (c *Conn) AllocColorCellsRequest(Contiguous byte, Cmap Id, Colors uint16, Planes uint16) Cookie {
- b := c.scratch[0:12]
- put16(b[2:], 3)
- b[0] = 86
- b[1] = Contiguous
- put32(b[4:], uint32(Cmap))
- put16(b[8:], Colors)
- put16(b[10:], Planes)
- return c.sendRequest(b)
-}
-
-func (c *Conn) AllocColorCells(Contiguous byte, Cmap Id, Colors uint16, Planes uint16) (*AllocColorCellsReply, os.Error) {
- return c.AllocColorCellsReply(c.AllocColorCellsRequest(Contiguous, Cmap, Colors, Planes))
-}
-
-type AllocColorCellsReply struct {
- PixelsLen uint16
- MasksLen uint16
- Pixels []uint32
- Masks []uint32
-}
-
-func (c *Conn) AllocColorCellsReply(cookie Cookie) (*AllocColorCellsReply, os.Error) {
- b, error := c.waitForReply(cookie)
- if error != nil {
- return nil, error
- }
- v := new(AllocColorCellsReply)
- v.PixelsLen = get16(b[8:])
- v.MasksLen = get16(b[10:])
- offset := 32
- v.Pixels = make([]uint32, int(v.PixelsLen))
- for i := 0; i < len(v.Pixels); i++ {
- v.Pixels[i] = get32(b[offset+i*4:])
- }
- offset += len(v.Pixels) * 4
- offset = pad(offset)
- v.Masks = make([]uint32, int(v.MasksLen))
- for i := 0; i < len(v.Masks); i++ {
- v.Masks[i] = get32(b[offset+i*4:])
- }
- offset += len(v.Masks) * 4
- return v, nil
-}
-
-func (c *Conn) AllocColorPlanesRequest(Contiguous byte, Cmap Id, Colors uint16, Reds uint16, Greens uint16, Blues uint16) Cookie {
- b := c.scratch[0:16]
- put16(b[2:], 4)
- b[0] = 87
- b[1] = Contiguous
- put32(b[4:], uint32(Cmap))
- put16(b[8:], Colors)
- put16(b[10:], Reds)
- put16(b[12:], Greens)
- put16(b[14:], Blues)
- return c.sendRequest(b)
-}
-
-func (c *Conn) AllocColorPlanes(Contiguous byte, Cmap Id, Colors uint16, Reds uint16, Greens uint16, Blues uint16) (*AllocColorPlanesReply, os.Error) {
- return c.AllocColorPlanesReply(c.AllocColorPlanesRequest(Contiguous, Cmap, Colors, Reds, Greens, Blues))
-}
-
-type AllocColorPlanesReply struct {
- PixelsLen uint16
- RedMask uint32
- GreenMask uint32
- BlueMask uint32
- Pixels []uint32
-}
-
-func (c *Conn) AllocColorPlanesReply(cookie Cookie) (*AllocColorPlanesReply, os.Error) {
- b, error := c.waitForReply(cookie)
- if error != nil {
- return nil, error
- }
- v := new(AllocColorPlanesReply)
- v.PixelsLen = get16(b[8:])
- v.RedMask = get32(b[12:])
- v.GreenMask = get32(b[16:])
- v.BlueMask = get32(b[20:])
- offset := 32
- v.Pixels = make([]uint32, int(v.PixelsLen))
- for i := 0; i < len(v.Pixels); i++ {
- v.Pixels[i] = get32(b[offset+i*4:])
- }
- offset += len(v.Pixels) * 4
- return v, nil
-}
-
-func (c *Conn) FreeColors(Cmap Id, PlaneMask uint32, Pixels []uint32) {
- b := c.scratch[0:12]
- n := 12
- n += pad(len(Pixels) * 4)
- put16(b[2:], uint16(n/4))
- b[0] = 88
- put32(b[4:], uint32(Cmap))
- put32(b[8:], PlaneMask)
- c.sendRequest(b)
- c.sendUInt32List(Pixels[0:len(Pixels)])
-}
-
-const (
- ColorFlagRed = 1
- ColorFlagGreen = 2
- ColorFlagBlue = 4
-)
-
-type Coloritem struct {
- Pixel uint32
- Red uint16
- Green uint16
- Blue uint16
- Flags byte
-}
-
-func getColoritem(b []byte, v *Coloritem) int {
- v.Pixel = get32(b[0:])
- v.Red = get16(b[4:])
- v.Green = get16(b[6:])
- v.Blue = get16(b[8:])
- v.Flags = b[10]
- return 12
-}
-
-func (c *Conn) sendColoritemList(list []Coloritem, count int) {
- b0 := make([]byte, 12*count)
- for k := 0; k < count; k++ {
- b := b0[k*12:]
- put32(b[0:], list[k].Pixel)
- put16(b[4:], list[k].Red)
- put16(b[6:], list[k].Green)
- put16(b[8:], list[k].Blue)
- b[10] = list[k].Flags
- }
- c.sendBytes(b0)
-}
-
-func (c *Conn) StoreColors(Cmap Id, Items []Coloritem) {
- b := c.scratch[0:8]
- n := 8
- n += pad(len(Items) * 12)
- put16(b[2:], uint16(n/4))
- b[0] = 89
- put32(b[4:], uint32(Cmap))
- c.sendRequest(b)
- c.sendColoritemList(Items, len(Items))
-}
-
-func (c *Conn) StoreNamedColor(Flags byte, Cmap Id, Pixel uint32, Name string) {
- b := c.scratch[0:16]
- n := 16
- n += pad(len(Name) * 1)
- put16(b[2:], uint16(n/4))
- b[0] = 90
- b[1] = Flags
- put32(b[4:], uint32(Cmap))
- put32(b[8:], Pixel)
- put16(b[12:], uint16(len(Name)))
- c.sendRequest(b)
- c.sendString(Name)
-}
-
-type Rgb struct {
- Red uint16
- Green uint16
- Blue uint16
-}
-
-func getRgb(b []byte, v *Rgb) int {
- v.Red = get16(b[0:])
- v.Green = get16(b[2:])
- v.Blue = get16(b[4:])
- return 8
-}
-
-func (c *Conn) sendRgbList(list []Rgb, count int) {
- b0 := make([]byte, 8*count)
- for k := 0; k < count; k++ {
- b := b0[k*8:]
- put16(b[0:], list[k].Red)
- put16(b[2:], list[k].Green)
- put16(b[4:], list[k].Blue)
- }
- c.sendBytes(b0)
-}
-
-func (c *Conn) QueryColorsRequest(Cmap Id, Pixels []uint32) Cookie {
- b := c.scratch[0:8]
- n := 8
- n += pad(len(Pixels) * 4)
- put16(b[2:], uint16(n/4))
- b[0] = 91
- put32(b[4:], uint32(Cmap))
- cookie := c.sendRequest(b)
- c.sendUInt32List(Pixels[0:len(Pixels)])
- return cookie
-}
-
-func (c *Conn) QueryColors(Cmap Id, Pixels []uint32) (*QueryColorsReply, os.Error) {
- return c.QueryColorsReply(c.QueryColorsRequest(Cmap, Pixels))
-}
-
-type QueryColorsReply struct {
- ColorsLen uint16
- Colors []Rgb
-}
-
-func (c *Conn) QueryColorsReply(cookie Cookie) (*QueryColorsReply, os.Error) {
- b, error := c.waitForReply(cookie)
- if error != nil {
- return nil, error
- }
- v := new(QueryColorsReply)
- v.ColorsLen = get16(b[8:])
- offset := 32
- v.Colors = make([]Rgb, int(v.ColorsLen))
- for i := 0; i < int(v.ColorsLen); i++ {
- offset += getRgb(b[offset:], &v.Colors[i])
- }
- return v, nil
-}
-
-func (c *Conn) LookupColorRequest(Cmap Id, Name string) Cookie {
- b := c.scratch[0:12]
- n := 12
- n += pad(len(Name) * 1)
- put16(b[2:], uint16(n/4))
- b[0] = 92
- put32(b[4:], uint32(Cmap))
- put16(b[8:], uint16(len(Name)))
- cookie := c.sendRequest(b)
- c.sendString(Name)
- return cookie
-}
-
-func (c *Conn) LookupColor(Cmap Id, Name string) (*LookupColorReply, os.Error) {
- return c.LookupColorReply(c.LookupColorRequest(Cmap, Name))
-}
-
-type LookupColorReply struct {
- ExactRed uint16
- ExactGreen uint16
- ExactBlue uint16
- VisualRed uint16
- VisualGreen uint16
- VisualBlue uint16
-}
-
-func (c *Conn) LookupColorReply(cookie Cookie) (*LookupColorReply, os.Error) {
- b, error := c.waitForReply(cookie)
- if error != nil {
- return nil, error
- }
- v := new(LookupColorReply)
- v.ExactRed = get16(b[8:])
- v.ExactGreen = get16(b[10:])
- v.ExactBlue = get16(b[12:])
- v.VisualRed = get16(b[14:])
- v.VisualGreen = get16(b[16:])
- v.VisualBlue = get16(b[18:])
- return v, nil
-}
-
-const (
- PixmapNone = 0
-)
-
-func (c *Conn) CreateCursor(Cid Id, Source Id, Mask Id, ForeRed uint16, ForeGreen uint16, ForeBlue uint16, BackRed uint16, BackGreen uint16, BackBlue uint16, X uint16, Y uint16) {
- b := c.scratch[0:32]
- put16(b[2:], 8)
- b[0] = 93
- put32(b[4:], uint32(Cid))
- put32(b[8:], uint32(Source))
- put32(b[12:], uint32(Mask))
- put16(b[16:], ForeRed)
- put16(b[18:], ForeGreen)
- put16(b[20:], ForeBlue)
- put16(b[22:], BackRed)
- put16(b[24:], BackGreen)
- put16(b[26:], BackBlue)
- put16(b[28:], X)
- put16(b[30:], Y)
- c.sendRequest(b)
-}
-
-const (
- FontNone = 0
-)
-
-func (c *Conn) CreateGlyphCursor(Cid Id, SourceFont Id, MaskFont Id, SourceChar uint16, MaskChar uint16, ForeRed uint16, ForeGreen uint16, ForeBlue uint16, BackRed uint16, BackGreen uint16, BackBlue uint16) {
- b := c.scratch[0:32]
- put16(b[2:], 8)
- b[0] = 94
- put32(b[4:], uint32(Cid))
- put32(b[8:], uint32(SourceFont))
- put32(b[12:], uint32(MaskFont))
- put16(b[16:], SourceChar)
- put16(b[18:], MaskChar)
- put16(b[20:], ForeRed)
- put16(b[22:], ForeGreen)
- put16(b[24:], ForeBlue)
- put16(b[26:], BackRed)
- put16(b[28:], BackGreen)
- put16(b[30:], BackBlue)
- c.sendRequest(b)
-}
-
-func (c *Conn) FreeCursor(Cursor Id) {
- b := c.scratch[0:8]
- put16(b[2:], 2)
- b[0] = 95
- put32(b[4:], uint32(Cursor))
- c.sendRequest(b)
-}
-
-func (c *Conn) RecolorCursor(Cursor Id, ForeRed uint16, ForeGreen uint16, ForeBlue uint16, BackRed uint16, BackGreen uint16, BackBlue uint16) {
- b := c.scratch[0:20]
- put16(b[2:], 5)
- b[0] = 96
- put32(b[4:], uint32(Cursor))
- put16(b[8:], ForeRed)
- put16(b[10:], ForeGreen)
- put16(b[12:], ForeBlue)
- put16(b[14:], BackRed)
- put16(b[16:], BackGreen)
- put16(b[18:], BackBlue)
- c.sendRequest(b)
-}
-
-const (
- QueryShapeOfLargestCursor = 0
- QueryShapeOfFastestTile = 1
- QueryShapeOfFastestStipple = 2
-)
-
-func (c *Conn) QueryBestSizeRequest(Class byte, Drawable Id, Width uint16, Height uint16) Cookie {
- b := c.scratch[0:12]
- put16(b[2:], 3)
- b[0] = 97
- b[1] = Class
- put32(b[4:], uint32(Drawable))
- put16(b[8:], Width)
- put16(b[10:], Height)
- return c.sendRequest(b)
-}
-
-func (c *Conn) QueryBestSize(Class byte, Drawable Id, Width uint16, Height uint16) (*QueryBestSizeReply, os.Error) {
- return c.QueryBestSizeReply(c.QueryBestSizeRequest(Class, Drawable, Width, Height))
-}
-
-type QueryBestSizeReply struct {
- Width uint16
- Height uint16
-}
-
-func (c *Conn) QueryBestSizeReply(cookie Cookie) (*QueryBestSizeReply, os.Error) {
- b, error := c.waitForReply(cookie)
- if error != nil {
- return nil, error
- }
- v := new(QueryBestSizeReply)
- v.Width = get16(b[8:])
- v.Height = get16(b[10:])
- return v, nil
-}
-
-func (c *Conn) QueryExtensionRequest(Name string) Cookie {
- b := c.scratch[0:8]
- n := 8
- n += pad(len(Name) * 1)
- put16(b[2:], uint16(n/4))
- b[0] = 98
- put16(b[4:], uint16(len(Name)))
- cookie := c.sendRequest(b)
- c.sendString(Name)
- return cookie
-}
-
-func (c *Conn) QueryExtension(Name string) (*QueryExtensionReply, os.Error) {
- return c.QueryExtensionReply(c.QueryExtensionRequest(Name))
-}
-
-type QueryExtensionReply struct {
- Present byte
- MajorOpcode byte
- FirstEvent byte
- FirstError byte
-}
-
-func (c *Conn) QueryExtensionReply(cookie Cookie) (*QueryExtensionReply, os.Error) {
- b, error := c.waitForReply(cookie)
- if error != nil {
- return nil, error
- }
- v := new(QueryExtensionReply)
- v.Present = b[8]
- v.MajorOpcode = b[9]
- v.FirstEvent = b[10]
- v.FirstError = b[11]
- return v, nil
-}
-
-func (c *Conn) ListExtensionsRequest() Cookie {
- b := c.scratch[0:4]
- put16(b[2:], 1)
- b[0] = 99
- return c.sendRequest(b)
-}
-
-func (c *Conn) ListExtensions() (*ListExtensionsReply, os.Error) {
- return c.ListExtensionsReply(c.ListExtensionsRequest())
-}
-
-type ListExtensionsReply struct {
- NamesLen byte
- Names []Str
-}
-
-func (c *Conn) ListExtensionsReply(cookie Cookie) (*ListExtensionsReply, os.Error) {
- b, error := c.waitForReply(cookie)
- if error != nil {
- return nil, error
- }
- v := new(ListExtensionsReply)
- v.NamesLen = b[1]
- offset := 32
- v.Names = make([]Str, int(v.NamesLen))
- for i := 0; i < int(v.NamesLen); i++ {
- offset += getStr(b[offset:], &v.Names[i])
- }
- return v, nil
-}
-
-func (c *Conn) ChangeKeyboardMapping(KeycodeCount byte, FirstKeycode byte, KeysymsPerKeycode byte, Keysyms []Keysym) {
- b := c.scratch[0:8]
- n := 8
- n += pad((int(KeycodeCount) * int(KeysymsPerKeycode)) * 4)
- put16(b[2:], uint16(n/4))
- b[0] = 100
- b[1] = KeycodeCount
- b[4] = FirstKeycode
- b[5] = KeysymsPerKeycode
- c.sendRequest(b)
- c.sendKeysymList(Keysyms, (int(KeycodeCount) * int(KeysymsPerKeycode)))
-}
-
-func (c *Conn) GetKeyboardMappingRequest(FirstKeycode byte, Count byte) Cookie {
- b := c.scratch[0:8]
- put16(b[2:], 2)
- b[0] = 101
- b[4] = FirstKeycode
- b[5] = Count
- return c.sendRequest(b)
-}
-
-func (c *Conn) GetKeyboardMapping(FirstKeycode byte, Count byte) (*GetKeyboardMappingReply, os.Error) {
- return c.GetKeyboardMappingReply(c.GetKeyboardMappingRequest(FirstKeycode, Count))
-}
-
-type GetKeyboardMappingReply struct {
- KeysymsPerKeycode byte
- Length uint32
- Keysyms []Keysym
-}
-
-func (c *Conn) GetKeyboardMappingReply(cookie Cookie) (*GetKeyboardMappingReply, os.Error) {
- b, error := c.waitForReply(cookie)
- if error != nil {
- return nil, error
- }
- v := new(GetKeyboardMappingReply)
- v.KeysymsPerKeycode = b[1]
- v.Length = get32(b[4:])
- offset := 32
- v.Keysyms = make([]Keysym, int(v.Length))
- for i := 0; i < len(v.Keysyms); i++ {
- v.Keysyms[i] = Keysym(get32(b[offset+i*4:]))
- }
- offset += len(v.Keysyms) * 4
- return v, nil
-}
-
-const (
- KBKeyClickPercent = 1
- KBBellPercent = 2
- KBBellPitch = 4
- KBBellDuration = 8
- KBLed = 16
- KBLedMode = 32
- KBKey = 64
- KBAutoRepeatMode = 128
-)
-
-const (
- LedModeOff = 0
- LedModeOn = 1
-)
-
-const (
- AutoRepeatModeOff = 0
- AutoRepeatModeOn = 1
- AutoRepeatModeDefault = 2
-)
-
-func (c *Conn) ChangeKeyboardControl(ValueMask uint32, ValueList []uint32) {
- b := c.scratch[0:8]
- n := 8
- n += pad(popCount(int(ValueMask)) * 4)
- put16(b[2:], uint16(n/4))
- b[0] = 102
- put32(b[4:], ValueMask)
- c.sendRequest(b)
- c.sendUInt32List(ValueList[0:popCount(int(ValueMask))])
-}
-
-func (c *Conn) GetKeyboardControlRequest() Cookie {
- b := c.scratch[0:4]
- put16(b[2:], 1)
- b[0] = 103
- return c.sendRequest(b)
-}
-
-func (c *Conn) GetKeyboardControl() (*GetKeyboardControlReply, os.Error) {
- return c.GetKeyboardControlReply(c.GetKeyboardControlRequest())
-}
-
-type GetKeyboardControlReply struct {
- GlobalAutoRepeat byte
- LedMask uint32
- KeyClickPercent byte
- BellPercent byte
- BellPitch uint16
- BellDuration uint16
- AutoRepeats [32]byte
-}
-
-func (c *Conn) GetKeyboardControlReply(cookie Cookie) (*GetKeyboardControlReply, os.Error) {
- b, error := c.waitForReply(cookie)
- if error != nil {
- return nil, error
- }
- v := new(GetKeyboardControlReply)
- v.GlobalAutoRepeat = b[1]
- v.LedMask = get32(b[8:])
- v.KeyClickPercent = b[12]
- v.BellPercent = b[13]
- v.BellPitch = get16(b[14:])
- v.BellDuration = get16(b[16:])
- copy(v.AutoRepeats[0:32], b[20:])
- return v, nil
-}
-
-func (c *Conn) Bell(Percent int8) {
- b := c.scratch[0:4]
- put16(b[2:], 1)
- b[0] = 104
- b[1] = byte(Percent)
- c.sendRequest(b)
-}
-
-func (c *Conn) ChangePointerControl(AccelerationNumerator int16, AccelerationDenominator int16, Threshold int16, DoAcceleration byte, DoThreshold byte) {
- b := c.scratch[0:12]
- put16(b[2:], 3)
- b[0] = 105
- put16(b[4:], uint16(AccelerationNumerator))
- put16(b[6:], uint16(AccelerationDenominator))
- put16(b[8:], uint16(Threshold))
- b[10] = DoAcceleration
- b[11] = DoThreshold
- c.sendRequest(b)
-}
-
-func (c *Conn) GetPointerControlRequest() Cookie {
- b := c.scratch[0:4]
- put16(b[2:], 1)
- b[0] = 106
- return c.sendRequest(b)
-}
-
-func (c *Conn) GetPointerControl() (*GetPointerControlReply, os.Error) {
- return c.GetPointerControlReply(c.GetPointerControlRequest())
-}
-
-type GetPointerControlReply struct {
- AccelerationNumerator uint16
- AccelerationDenominator uint16
- Threshold uint16
-}
-
-func (c *Conn) GetPointerControlReply(cookie Cookie) (*GetPointerControlReply, os.Error) {
- b, error := c.waitForReply(cookie)
- if error != nil {
- return nil, error
- }
- v := new(GetPointerControlReply)
- v.AccelerationNumerator = get16(b[8:])
- v.AccelerationDenominator = get16(b[10:])
- v.Threshold = get16(b[12:])
- return v, nil
-}
-
-const (
- BlankingNotPreferred = 0
- BlankingPreferred = 1
- BlankingDefault = 2
-)
-
-const (
- ExposuresNotAllowed = 0
- ExposuresAllowed = 1
- ExposuresDefault = 2
-)
-
-func (c *Conn) SetScreenSaver(Timeout int16, Interval int16, PreferBlanking byte, AllowExposures byte) {
- b := c.scratch[0:12]
- put16(b[2:], 3)
- b[0] = 107
- put16(b[4:], uint16(Timeout))
- put16(b[6:], uint16(Interval))
- b[8] = PreferBlanking
- b[9] = AllowExposures
- c.sendRequest(b)
-}
-
-func (c *Conn) GetScreenSaverRequest() Cookie {
- b := c.scratch[0:4]
- put16(b[2:], 1)
- b[0] = 108
- return c.sendRequest(b)
-}
-
-func (c *Conn) GetScreenSaver() (*GetScreenSaverReply, os.Error) {
- return c.GetScreenSaverReply(c.GetScreenSaverRequest())
-}
-
-type GetScreenSaverReply struct {
- Timeout uint16
- Interval uint16
- PreferBlanking byte
- AllowExposures byte
-}
-
-func (c *Conn) GetScreenSaverReply(cookie Cookie) (*GetScreenSaverReply, os.Error) {
- b, error := c.waitForReply(cookie)
- if error != nil {
- return nil, error
- }
- v := new(GetScreenSaverReply)
- v.Timeout = get16(b[8:])
- v.Interval = get16(b[10:])
- v.PreferBlanking = b[12]
- v.AllowExposures = b[13]
- return v, nil
-}
-
-const (
- HostModeInsert = 0
- HostModeDelete = 1
-)
-
-const (
- FamilyInternet = 0
- FamilyDECnet = 1
- FamilyChaos = 2
- FamilyServerInterpreted = 5
- FamilyInternet6 = 6
-)
-
-func (c *Conn) ChangeHosts(Mode byte, Family byte, Address []byte) {
- b := c.scratch[0:8]
- n := 8
- n += pad(len(Address) * 1)
- put16(b[2:], uint16(n/4))
- b[0] = 109
- b[1] = Mode
- b[4] = Family
- put16(b[6:], uint16(len(Address)))
- c.sendRequest(b)
- c.sendBytes(Address[0:len(Address)])
-}
-
-type Host struct {
- Family byte
- AddressLen uint16
- Address []byte
-}
-
-func getHost(b []byte, v *Host) int {
- v.Family = b[0]
- v.AddressLen = get16(b[2:])
- offset := 4
- v.Address = make([]byte, int(v.AddressLen))
- copy(v.Address[0:len(v.Address)], b[offset:])
- offset += len(v.Address) * 1
- return offset
-}
-
-// omitting variable length sendHost
-
-func (c *Conn) ListHostsRequest() Cookie {
- b := c.scratch[0:4]
- put16(b[2:], 1)
- b[0] = 110
- return c.sendRequest(b)
-}
-
-func (c *Conn) ListHosts() (*ListHostsReply, os.Error) {
- return c.ListHostsReply(c.ListHostsRequest())
-}
-
-type ListHostsReply struct {
- Mode byte
- HostsLen uint16
- Hosts []Host
-}
-
-func (c *Conn) ListHostsReply(cookie Cookie) (*ListHostsReply, os.Error) {
- b, error := c.waitForReply(cookie)
- if error != nil {
- return nil, error
- }
- v := new(ListHostsReply)
- v.Mode = b[1]
- v.HostsLen = get16(b[8:])
- offset := 32
- v.Hosts = make([]Host, int(v.HostsLen))
- for i := 0; i < int(v.HostsLen); i++ {
- offset += getHost(b[offset:], &v.Hosts[i])
- }
- return v, nil
-}
-
-const (
- AccessControlDisable = 0
- AccessControlEnable = 1
-)
-
-func (c *Conn) SetAccessControl(Mode byte) {
- b := c.scratch[0:4]
- put16(b[2:], 1)
- b[0] = 111
- b[1] = Mode
- c.sendRequest(b)
-}
-
-const (
- CloseDownDestroyAll = 0
- CloseDownRetainPermanent = 1
- CloseDownRetainTemporary = 2
-)
-
-func (c *Conn) SetCloseDownMode(Mode byte) {
- b := c.scratch[0:4]
- put16(b[2:], 1)
- b[0] = 112
- b[1] = Mode
- c.sendRequest(b)
-}
-
-const (
- KillAllTemporary = 0
-)
-
-func (c *Conn) KillClient(Resource uint32) {
- b := c.scratch[0:8]
- put16(b[2:], 2)
- b[0] = 113
- put32(b[4:], Resource)
- c.sendRequest(b)
-}
-
-func (c *Conn) RotateProperties(Window Id, Delta int16, Atoms []Id) {
- b := c.scratch[0:12]
- n := 12
- n += pad(len(Atoms) * 4)
- put16(b[2:], uint16(n/4))
- b[0] = 114
- put32(b[4:], uint32(Window))
- put16(b[8:], uint16(len(Atoms)))
- put16(b[10:], uint16(Delta))
- c.sendRequest(b)
- c.sendIdList(Atoms, len(Atoms))
-}
-
-const (
- ScreenSaverReset = 0
- ScreenSaverActive = 1
-)
-
-func (c *Conn) ForceScreenSaver(Mode byte) {
- b := c.scratch[0:4]
- put16(b[2:], 1)
- b[0] = 115
- b[1] = Mode
- c.sendRequest(b)
-}
-
-const (
- MappingStatusSuccess = 0
- MappingStatusBusy = 1
- MappingStatusFailure = 2
-)
-
-func (c *Conn) SetPointerMappingRequest(Map []byte) Cookie {
- b := c.scratch[0:4]
- n := 4
- n += pad(len(Map) * 1)
- put16(b[2:], uint16(n/4))
- b[0] = 116
- b[1] = byte(len(Map))
- cookie := c.sendRequest(b)
- c.sendBytes(Map[0:len(Map)])
- return cookie
-}
-
-func (c *Conn) SetPointerMapping(Map []byte) (*SetPointerMappingReply, os.Error) {
- return c.SetPointerMappingReply(c.SetPointerMappingRequest(Map))
-}
-
-type SetPointerMappingReply struct {
- Status byte
-}
-
-func (c *Conn) SetPointerMappingReply(cookie Cookie) (*SetPointerMappingReply, os.Error) {
- b, error := c.waitForReply(cookie)
- if error != nil {
- return nil, error
- }
- v := new(SetPointerMappingReply)
- v.Status = b[1]
- return v, nil
-}
-
-func (c *Conn) GetPointerMappingRequest() Cookie {
- b := c.scratch[0:4]
- put16(b[2:], 1)
- b[0] = 117
- return c.sendRequest(b)
-}
-
-func (c *Conn) GetPointerMapping() (*GetPointerMappingReply, os.Error) {
- return c.GetPointerMappingReply(c.GetPointerMappingRequest())
-}
-
-type GetPointerMappingReply struct {
- MapLen byte
- Map []byte
-}
-
-func (c *Conn) GetPointerMappingReply(cookie Cookie) (*GetPointerMappingReply, os.Error) {
- b, error := c.waitForReply(cookie)
- if error != nil {
- return nil, error
- }
- v := new(GetPointerMappingReply)
- v.MapLen = b[1]
- offset := 32
- v.Map = make([]byte, int(v.MapLen))
- copy(v.Map[0:len(v.Map)], b[offset:])
- offset += len(v.Map) * 1
- return v, nil
-}
-
-const (
- MapIndexShift = 0
- MapIndexLock = 1
- MapIndexControl = 2
- MapIndex1 = 3
- MapIndex2 = 4
- MapIndex3 = 5
- MapIndex4 = 6
- MapIndex5 = 7
-)
-
-func (c *Conn) SetModifierMappingRequest(KeycodesPerModifier byte, Keycodes []byte) Cookie {
- b := c.scratch[0:4]
- n := 4
- n += pad((int(KeycodesPerModifier) * 8) * 1)
- put16(b[2:], uint16(n/4))
- b[0] = 118
- b[1] = KeycodesPerModifier
- cookie := c.sendRequest(b)
- c.sendBytes(Keycodes[0:(int(KeycodesPerModifier) * 8)])
- return cookie
-}
-
-func (c *Conn) SetModifierMapping(KeycodesPerModifier byte, Keycodes []byte) (*SetModifierMappingReply, os.Error) {
- return c.SetModifierMappingReply(c.SetModifierMappingRequest(KeycodesPerModifier, Keycodes))
-}
-
-type SetModifierMappingReply struct {
- Status byte
-}
-
-func (c *Conn) SetModifierMappingReply(cookie Cookie) (*SetModifierMappingReply, os.Error) {
- b, error := c.waitForReply(cookie)
- if error != nil {
- return nil, error
- }
- v := new(SetModifierMappingReply)
- v.Status = b[1]
- return v, nil
-}
-
-func (c *Conn) GetModifierMappingRequest() Cookie {
- b := c.scratch[0:4]
- put16(b[2:], 1)
- b[0] = 119
- return c.sendRequest(b)
-}
-
-func (c *Conn) GetModifierMapping() (*GetModifierMappingReply, os.Error) {
- return c.GetModifierMappingReply(c.GetModifierMappingRequest())
-}
-
-type GetModifierMappingReply struct {
- KeycodesPerModifier byte
- Keycodes []byte
-}
-
-func (c *Conn) GetModifierMappingReply(cookie Cookie) (*GetModifierMappingReply, os.Error) {
- b, error := c.waitForReply(cookie)
- if error != nil {
- return nil, error
- }
- v := new(GetModifierMappingReply)
- v.KeycodesPerModifier = b[1]
- offset := 32
- v.Keycodes = make([]byte, (int(v.KeycodesPerModifier) * 8))
- copy(v.Keycodes[0:len(v.Keycodes)], b[offset:])
- offset += len(v.Keycodes) * 1
- return v, nil
-}
-
-func (c *Conn) NoOperation() {
- b := c.scratch[0:4]
- put16(b[2:], 1)
- b[0] = 127
- c.sendRequest(b)
-}
-
-func parseEvent(buf []byte) (Event, os.Error) {
- switch buf[0] {
- case KeyPress:
- return getKeyPressEvent(buf), nil
- case KeyRelease:
- return getKeyReleaseEvent(buf), nil
- case ButtonPress:
- return getButtonPressEvent(buf), nil
- case ButtonRelease:
- return getButtonReleaseEvent(buf), nil
- case MotionNotify:
- return getMotionNotifyEvent(buf), nil
- case EnterNotify:
- return getEnterNotifyEvent(buf), nil
- case LeaveNotify:
- return getLeaveNotifyEvent(buf), nil
- case FocusIn:
- return getFocusInEvent(buf), nil
- case FocusOut:
- return getFocusOutEvent(buf), nil
- case KeymapNotify:
- return getKeymapNotifyEvent(buf), nil
- case Expose:
- return getExposeEvent(buf), nil
- case GraphicsExposure:
- return getGraphicsExposureEvent(buf), nil
- case NoExposure:
- return getNoExposureEvent(buf), nil
- case VisibilityNotify:
- return getVisibilityNotifyEvent(buf), nil
- case CreateNotify:
- return getCreateNotifyEvent(buf), nil
- case DestroyNotify:
- return getDestroyNotifyEvent(buf), nil
- case UnmapNotify:
- return getUnmapNotifyEvent(buf), nil
- case MapNotify:
- return getMapNotifyEvent(buf), nil
- case MapRequest:
- return getMapRequestEvent(buf), nil
- case ReparentNotify:
- return getReparentNotifyEvent(buf), nil
- case ConfigureNotify:
- return getConfigureNotifyEvent(buf), nil
- case ConfigureRequest:
- return getConfigureRequestEvent(buf), nil
- case GravityNotify:
- return getGravityNotifyEvent(buf), nil
- case ResizeRequest:
- return getResizeRequestEvent(buf), nil
- case CirculateNotify:
- return getCirculateNotifyEvent(buf), nil
- case CirculateRequest:
- return getCirculateRequestEvent(buf), nil
- case PropertyNotify:
- return getPropertyNotifyEvent(buf), nil
- case SelectionClear:
- return getSelectionClearEvent(buf), nil
- case SelectionRequest:
- return getSelectionRequestEvent(buf), nil
- case SelectionNotify:
- return getSelectionNotifyEvent(buf), nil
- case ColormapNotify:
- return getColormapNotifyEvent(buf), nil
- case ClientMessage:
- return getClientMessageEvent(buf), nil
- case MappingNotify:
- return getMappingNotifyEvent(buf), nil
- }
- return nil, os.NewError("unknown event type")
-}
-
-var errorNames = map[byte]string{
- BadRequest: "Request",
- BadValue: "Value",
- BadWindow: "Window",
- BadPixmap: "Pixmap",
- BadAtom: "Atom",
- BadCursor: "Cursor",
- BadFont: "Font",
- BadMatch: "Match",
- BadDrawable: "Drawable",
- BadAccess: "Access",
- BadAlloc: "Alloc",
- BadColormap: "Colormap",
- BadGContext: "GContext",
- BadIDChoice: "IDChoice",
- BadName: "Name",
- BadLength: "Length",
- BadImplementation: "Implementation",
-}