mirror of
https://github.com/danbulant/node-x11
synced 2026-05-24 12:35:39 +00:00
Merge pull request #28 from santigimeno/fix_unpack_bufferx
Add support for signed data in unpackbuffer
This commit is contained in:
commit
877d263a93
2 changed files with 23 additions and 19 deletions
|
|
@ -488,7 +488,7 @@ module.exports = {
|
||||||
},
|
},
|
||||||
function(buf)
|
function(buf)
|
||||||
{
|
{
|
||||||
var res = buf.unpack('LSS');
|
var res = buf.unpack('Lss');
|
||||||
ext = {};
|
ext = {};
|
||||||
ext.child = res[0];
|
ext.child = res[0];
|
||||||
ext.destX = res[1];
|
ext.destX = res[1];
|
||||||
|
|
@ -682,7 +682,7 @@ module.exports = {
|
||||||
|
|
||||||
PolyText8: [
|
PolyText8: [
|
||||||
function(drawable, gc, x, y, items) {
|
function(drawable, gc, x, y, items) {
|
||||||
var format = 'CxSLLSS';
|
var format = 'CxSLLss';
|
||||||
var numItems = items.length;
|
var numItems = items.length;
|
||||||
var reqLen = 16;
|
var reqLen = 16;
|
||||||
var args = [74, 0, drawable, gc, x, y];
|
var args = [74, 0, drawable, gc, x, y];
|
||||||
|
|
@ -801,7 +801,7 @@ module.exports = {
|
||||||
},
|
},
|
||||||
function(buff)
|
function(buff)
|
||||||
{
|
{
|
||||||
var res = buff.unpack('LSSSSSx');
|
var res = buff.unpack('LssSSSx');
|
||||||
var ext = {};
|
var ext = {};
|
||||||
ext.windowid = res[0]
|
ext.windowid = res[0]
|
||||||
ext.xPos = res[1];
|
ext.xPos = res[1];
|
||||||
|
|
@ -821,7 +821,7 @@ module.exports = {
|
||||||
|
|
||||||
SetScreenSaver: [
|
SetScreenSaver: [
|
||||||
function(timeout, interval, preferBlanking, allowExposures) {
|
function(timeout, interval, preferBlanking, allowExposures) {
|
||||||
return [ 'CxSSSCCxx', [107, 3, timeout, interval, preferBlanking, allowExposures]];
|
return [ 'CxSssCCxx', [107, 3, timeout, interval, preferBlanking, allowExposures]];
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -23,26 +23,30 @@ module.exports.addUnpack = function(Buffer)
|
||||||
var arg = format[current_arg];
|
var arg = format[current_arg];
|
||||||
switch (arg) {
|
switch (arg) {
|
||||||
case 'C':
|
case 'C':
|
||||||
data.push(this[offset++]);
|
data.push(this.readUInt8(offset++));
|
||||||
|
break;
|
||||||
|
case 'c':
|
||||||
|
data.push(this.readInt8(offset++));
|
||||||
break;
|
break;
|
||||||
case 'S':
|
case 'S':
|
||||||
case 's': //TODO: 16bit signed unpack
|
data.push(this.readUInt16LE(offset));
|
||||||
var b1 = this[offset++];
|
offset += 2;
|
||||||
var b2 = this[offset++];
|
break;
|
||||||
data.push(b2*256+b1);
|
case 's':
|
||||||
|
data.push(this.readInt16LE(offset));
|
||||||
|
offset += 2;
|
||||||
break;
|
break;
|
||||||
case 'n':
|
case 'n':
|
||||||
var b1 = this[offset++];
|
data.push(this.readUInt16BE(offset));
|
||||||
var b2 = this[offset++];
|
offset += 2;
|
||||||
data.push(b1*256+b2);
|
|
||||||
break;
|
break;
|
||||||
case 'L':
|
case 'L':
|
||||||
case 'l': //TODO: 32bit signed unpack
|
data.push(this.readUInt32LE(offset));
|
||||||
var b1 = this[offset++];
|
offset += 4;
|
||||||
var b2 = this[offset++];
|
break;
|
||||||
var b3 = this[offset++];
|
case 'l':
|
||||||
var b4 = this[offset++];
|
data.push(this.readInt32LE(offset));
|
||||||
data.push(((b4*256+b3)*256 + b2)*256 + b1);
|
offset += 4;
|
||||||
break;
|
break;
|
||||||
case 'x':
|
case 'x':
|
||||||
offset++;
|
offset++;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue