54 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
var Buffer = require('buffer').Buffer;
 | 
						|
var x11 = require('../../lib');
 | 
						|
var fs = require('fs');
 | 
						|
var logo1bit = fs.readFileSync('./nodejs-black.bmp');
 | 
						|
var pixmap = require('./bmp').decodeBuffer(logo1bit);
 | 
						|
 | 
						|
var xclient = x11.createClient();
 | 
						|
var Exposure = x11.eventMask.Exposure;
 | 
						|
var PointerMotion = x11.eventMask.PointerMotion;
 | 
						|
 | 
						|
var bitmap = new Buffer(128*128/8); // 16384 bits, 2048 bytes bitmap
 | 
						|
for (var i=0; i < bitmap.length; ++i)
 | 
						|
{
 | 
						|
    bitmap[i] = i % 256;
 | 
						|
}
 | 
						|
 | 
						|
xclient.on('connect', function(err, display) {
 | 
						|
    var X = this;
 | 
						|
    var root = display.screen[0].root;
 | 
						|
    var white = display.screen[0].white_pixel;
 | 
						|
    var black = display.screen[0].black_pixel;
 | 
						|
    //console.log(display.screen[0]);
 | 
						|
 | 
						|
    var wid = X.AllocID();
 | 
						|
    X.CreateWindow(
 | 
						|
       wid, root, 
 | 
						|
       10, 10, 400, 300, 
 | 
						|
       1, 1, 0,
 | 
						|
       { 
 | 
						|
           backgroundPixel: white, eventMask: Exposure|PointerMotion  
 | 
						|
       wid, root,
 | 
						|
       10, 10, 400, 300,
 | 
						|
       0, 0, 0, 0,
 | 
						|
       {
 | 
						|
           backgroundPixel: white, eventMask: Exposure|PointerMotion
 | 
						|
       }
 | 
						|
    );
 | 
						|
    X.MapWindow(wid);
 | 
						|
  
 | 
						|
    var gc = X.AllocID();
 | 
						|
    X.CreateGC(gc, wid, { foreground: black, background: white } );
 | 
						|
 | 
						|
    X.on('event', function(ev) {
 | 
						|
        if (ev.type == 12) // expose
 | 
						|
        {
 | 
						|
            //X.PutImage(0, wid, gc, 128, 128, 20, 20, 0, 1, bitmap);
 | 
						|
            X.PutImage(0, wid, gc, pixmap.width, pixmap.height, 20, 20, 0, pixmap.depth, pixmap.data);
 | 
						|
        } 
 | 
						|
    });
 | 
						|
    X.on('error', function(e) {
 | 
						|
        console.log(e);
 | 
						|
    });
 | 
						|
});
 |