From 28e934348784f1cf1f3da61ff53fbe5a5aa67974 Mon Sep 17 00:00:00 2001 From: Santiago Gimeno Date: Tue, 9 Dec 2014 10:32:39 +0100 Subject: [PATCH] src: fix CreateGC attributes encoding - Every attribute must have 4 byte length. - Add test. --- lib/corereqs.js | 32 ++++++++++++++++---------------- test/createGC.js | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+), 16 deletions(-) create mode 100644 test/createGC.js diff --git a/lib/corereqs.js b/lib/corereqs.js index 13f224d..eeccf11 100644 --- a/lib/corereqs.js +++ b/lib/corereqs.js @@ -70,7 +70,7 @@ var valueMask = { CreateGC: { 'function' : { // TODO: alias? _function? mask: 0x00000001, - format: 'C' + format: 'Cxxx' }, planeMask : { mask: 0x00000002, @@ -86,27 +86,27 @@ var valueMask = { }, lineWidth : { mask: 0x00000010, - format: 'S' + format: 'Sxx' }, lineStyle : { mask: 0x00000020, - format: 'C' + format: 'Cxxx' }, capStyle : { mask: 0x00000040, - format: 'C' + format: 'Cxxx' }, joinStyle : { mask: 0x00000080, - format: 'C' + format: 'Cxxx' }, fillStyle : { mask: 0x00000100, - format: 'C' + format: 'Cxxx' }, fillRule : { mask: 0x00000200, - format: 'C' + format: 'Cxxx' }, tile : { mask: 0x00000400, @@ -118,11 +118,11 @@ var valueMask = { }, tileStippleXOrigin : { mask: 0x00001000, - format: 's' + format: 'sxx' }, tileStippleYOrigin : { mask: 0x00002000, - format: 's' + format: 'sxx' }, font : { mask: 0x00004000, @@ -130,19 +130,19 @@ var valueMask = { }, subwindowMode : { mask: 0x00008000, - format: 'C' + format: 'Cxxx' }, graphicsExposures : { mask: 0x00010000, - format: 'C' + format: 'Cxxx' }, clipXOrigin : { mask: 0x00020000, - format: 'S' + format: 'Sxx' }, clipYOrigin : { mask: 0x00040000, - format: 'S' + format: 'Sxx' }, clipMask : { mask: 0x00080000, @@ -150,15 +150,15 @@ var valueMask = { }, dashOffset : { mask: 0x00100000, - format: 'S' + format: 'Sxx' }, dashes : { mask: 0x00200000, - format: 'C' + format: 'Cxxx' }, arcMode : { mask: 0x00400000, - format: 'C' + format: 'Cxxx' } }, ConfigureWindow: { diff --git a/test/createGC.js b/test/createGC.js new file mode 100644 index 0000000..4762671 --- /dev/null +++ b/test/createGC.js @@ -0,0 +1,46 @@ +var x11 = require('../lib'); +var should = require('should'); + +describe('CreateGC', function() { + before(function(done) { + var self = this; + this.client = x11.createClient(function(err, dpy) { + should.not.exist(err); + self.X = dpy.client; + self.root = dpy.screen[0].root; + self.white = dpy.screen[0].white_pixel; + self.black = dpy.screen[0].black_pixel; + self.wid = self.X.AllocID(); + self.X.CreateWindow(self.wid, self.root, 0, 0, 1, 1); // 1x1 pixel window + self.X.MapWindow(self.wid); + self.X.QueryTree(self.root, function(err, list) { + should.not.exist(err); + list.children.indexOf(self.wid).should.not.equal(-1); + done(); + }); + }); + }); + + it('should create a Graphic Context correctly', function() { + var self = this; + this.client.on('error', function(err) { + should.not.exist(err); + }); + + this.gc = this.X.AllocID(); + this.X.CreateGC(this.gc, + this.wid, + { + foreground: this.black, + background: this.white, + lineStyle : 0 + } + ); + }); + + after(function(done) { + this.X.DestroyWindow(this.wid); + this.X.on('end', done); + this.X.terminate(); + }); +});