diff --git a/js/x11/examples/paint.js b/js/x11/examples/paint.js new file mode 100644 index 0000000..5d666ff --- /dev/null +++ b/js/x11/examples/paint.js @@ -0,0 +1,65 @@ +var x11 = require('../lib'); +var PointerMotion = x11.eventMask.PointerMotion; +var ButtonPress = x11.eventMask.ButtonPress; +var ButtonRelease = x11.eventMask.ButtonRelease; + +var X, Render; +var pressed = false; +var gradNo = 0; + +var xclient = x11.createClient(function(err, display) { + X = display.client; + var root = display.screen[0].root; + X.require('render', function(err, rendExt) { + Render = rendExt; + var wid = X.AllocID(); + + var white = display.screen[0].white_pixel; + var black = display.screen[0].black_pixel; + X.CreateWindow(wid, root, 10, 10, 400, 300, 0, 0, 0, 0, { backgroundPixel: white, eventMask: PointerMotion|ButtonPress|ButtonRelease }); + X.MapWindow(wid); + + var pict = X.AllocID(); + Render.CreatePicture(pict, wid, Render.rgb24); + var pictGrad = []; + for (var i=0; i < 10; ++i) + { + pictGrad[i] = X.AllocID(); + Render.RadialGradient(pictGrad[i], [50,56], [50,50], 0, 50, + [ + [0, [0,0,0,0x0fff ] ], + [0.1 + 0.8*i/10, [0,0,0,0x0fff ] ], + [0.997, [0xffff, 0xf, 0, 0x1] ], + [1, [0xffff, 0xffff, 0, 0x0] ] + ]); + } + + function draw(x, y) { + Render.Composite(3, pictGrad[gradNo], 0, pict, 0, 0, 0, 0, x-50, y-50, 100, 100); + } + + X.on('event', function(ev) { + if (ev.type == 4 && ev.keycode == 1) + pressed = true; + else if (ev.type == 5 && ev.keycode == 1) + pressed = false; + else if (ev.type == 5 && ev.keycode == 4) + { + gradNo--; + if (gradNo < 0) + gradNo = 0; + console.log(gradNo); + } + else if (ev.type == 5 && ev.keycode == 5) + { + gradNo++; + if (gradNo > 9) + gradNo = 9; + console.log(gradNo); + } + else if (pressed) + draw(ev.x, ev.y); + //console.log(ev.type, ev.keycode); + }); + }); +});