diff --git a/lib/x11/corereqs.js b/lib/x11/corereqs.js index 4eda415..5309261 100644 --- a/lib/x11/corereqs.js +++ b/lib/x11/corereqs.js @@ -341,6 +341,36 @@ module.exports = { } ], + ListFonts: [ + function(pattern, max) + { + var req_len = 2+xutil.padded_length(pattern.length)/4; + return [ 'CxSSSp', [49, req_len, max, pattern.length, pattern] ]; + }, + + function(buf) { + console.log(buf); + // TODO: move to buffer.unpackStringList + var res = []; + var off = 24; + while (off < buf.length) + { + var len = buf[off++]; + if (len == 0) + break; + if (off + len > buf.length) + { + len = buf.length - off; + if (len <= 0) + break; + } + res.push(buf.unpackString(len, off)); + off += len; + } + return res; + } + ], + CreatePixmap: [ function(pid, drawable, depth, width, height) { return [ 'CCSLLSS', [53, depth, 4, pid, drawable, width, height] ]; @@ -365,6 +395,23 @@ module.exports = { } ], + ChangeGC: [ + function(cid, values) { + var format = 'CxSLL'; + var packetLength = 3 + (values ? Object.keys(values).length : 0); + var args = [56, packetLength, cid]; + var vals = packValueMask('CreateGC', values); + args.push(vals[0]); // values bitmask + var valArr = vals[1]; + for (v in valArr) + { + format += 'L'; // TODO: we know format string length in advance and += inefficient for string + args.push(valArr[v]); + } + return [format, args]; + } + ], + // CopyArea: [ function(srcDrawable, dstDrawable, gc, srcX, srcY, dstX, dstY, width, height) {