node-x11/examples/smoketest/trapezoids.js
2015-11-04 16:44:25 +11:00

75 lines
1.9 KiB
JavaScript

var x11 = require('../../lib');
var Exposure = x11.eventMask.Exposure;
var PointerMotion = x11.eventMask.PointerMotion;
var draw;
x11.createClient({ debug: true}, function(err, display) {
var X = display.client;
var root = display.screen[0].root;
var wid = X.AllocID();
X.CreateWindow(
wid, root,
0, 0, 800, 600,
0, 0, 0, 0,
{
eventMask: Exposure|PointerMotion
}
);
X.MapWindow(wid);
X.require('render', function(err, Render) {
var pixMask = X.AllocID();
X.CreatePixmap(pixMask, wid, 8, 600, 600);
var pictTraps = X.AllocID();
Render.CreatePicture(pictTraps, pixMask, Render.a8);
var pictWin = X.AllocID();
Render.CreatePicture(pictWin, wid, Render.rgb24);
var pictSolid = X.AllocID();
r = 0.2; g = 0.2; b = 0.2; a = 1;
Render.CreateSolidFill(pictSolid, r, g, b, a);
draw = function(x, y) {
var r, g, b, a;
// fill window
//r = x/1000; g = x/1000; b = x/1000; a = 0.5;
r = 1; g = 1; b = 1; a = 0.5;
Render.FillRectangles(1, pictWin, [r, g, b, a], [0, 0, 1000, 1000])
// fill traps
r = 0; g = 0; b = 0; a = 0;
Render.FillRectangles(1, pictTraps, [r, g, b, a], [0, 0, 1000, 1000])
Render.AddTraps(pictTraps, 0, 0, [
x, 200, y,
//150, 200, 50,
5, 250, 300,
110, 200, 310,
50, 150, 500
]);
// (op, src, mask, dst, srcX, srcY, maskX, maskY, dstX, dstY, width, height)
//Render.Composite(Render.PictOp.Over, pictSolid, pictTraps, pictWin, 0, 0, 0, 0, 0, 0, 800, 600);
//Render.PictOp.Over
Render.Composite(Render.PictOp.Over, pictSolid, pictTraps, pictWin, 0, 0, 0, 0, 0, 0, 800, 600);
};
});
}).on('error', function(err) {
//console.log(err);
}).on('event', function(ev) {
//console.log(ev);
if (ev.name == 'MotionNotify') {
draw(ev.x, ev.y);
}
});