jam/js/x11/examples/hello.js

56 lines
1.6 KiB
JavaScript

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);
}
});