diff --git a/js/x11/examples/hello.js b/js/x11/examples/hello.js new file mode 100644 index 0000000..75dcbf3 --- /dev/null +++ b/js/x11/examples/hello.js @@ -0,0 +1,55 @@ +var x11 = require('../core/x11'); + +var Exposure = x11.eventMask.Exposure; +var PointerMotion = x11.eventMask.PointerMotion; +var KeyPress = x11.eventMask.KeyPress; +var ButtonPress = x11.eventMask.ButtonPress; +var ButtonRelease= x11.eventMask.ButtonRelease; + +x11.createClient(function(err, display) { + if (!err) { + var X = display.client; + var root = display.screen[0].root; + var wid = X.AllocID(); + X.CreateWindow( + wid, + root, // new window id, parent + 0, + 0, + 400, + 500, // x, y, w, h + 0, + 0, + 0, + 0, // border, depth, class, visual + { eventMask: Exposure | PointerMotion | KeyPress | ButtonPress | ButtonRelease} // other parameters + ); + X.MapWindow(wid); + var gc = X.AllocID(); + X.CreateGC(gc, wid); + var white = display.screen[0].white_pixel; + var black = display.screen[0].black_pixel; + cidBlack = X.AllocID(); + cidWhite = X.AllocID(); + X.CreateGC(cidBlack, wid, { foreground: black, background: white }); + X.CreateGC(cidWhite, wid, { foreground: white, background: black }); + X.on('event', function(ev) { + // print(ev) + switch (ev.type) { + case x11.eventType.Expose: + X.PolyFillRectangle(wid, cidWhite, [0, 0, 500, 500]); + X.PolyText8(wid, cidBlack, 50, 50, ['Hello World, Node.JS!']); + X.PolyText8(wid, cidBlack, 50, 70, ['New line']); + break; + case x11.eventType.KeyPress: + if (ev.keycode == 24 /*q*/) process.exit() + break; + } + }); + X.on('error', function(e) { + console.log(e); + }); + } else { + console.log(err); + } +});