48 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| var logo = require('./node-png').readPng('./node-logo.png');
 | |
| 
 | |
| var x11 = require('../../lib');
 | |
| 
 | |
| var Exposure = x11.eventMask.Exposure;
 | |
| 
 | |
| x11.createClient(function(err, display)
 | |
| {
 | |
|   var X = display.client;
 | |
|   X.require('render', function(err, Render) {
 | |
|     var root = display.screen[0].root;
 | |
|     main(root, X, Render);
 | |
|   });
 | |
| });
 | |
| 
 | |
| 
 | |
| function main(root, X, Render) {
 | |
| 
 | |
|   var win, picWin, pic, gc;
 | |
| 
 | |
|   win = X.AllocID();
 | |
|   X.CreateWindow(
 | |
|      win, root,
 | |
|      0, 0, logo.width, logo.height,
 | |
|      0, 0, 0, 0,
 | |
|      { eventMask: Exposure }
 | |
|   );
 | |
|   X.MapWindow(win);
 | |
| 
 | |
|   gc = X.AllocID();
 | |
|   X.CreateGC(gc, win);
 | |
| 
 | |
|   var logoPixmap = X.AllocID();
 | |
|   X.CreatePixmap(logoPixmap, win, 24, logo.width, logo.height);
 | |
|   // TODO: add proper png pixel conversion here
 | |
|   X.PutImage(2, logoPixmap, gc, logo.width, logo.height, 0, 0, 0, 24, logo.data);
 | |
| 
 | |
|   var logoPicture = X.AllocID();
 | |
|   Render.CreatePicture(logoPicture, logoPixmap, Render.rgb24);
 | |
|   var winPicture = X.AllocID();
 | |
|   Render.CreatePicture(winPicture, win, Render.rgb24);
 | |
| 
 | |
|   X.on('event', function(ev) {
 | |
|     if (ev.name == 'Expose')
 | |
|       Render.Composite(3, logoPicture, 0, winPicture, 0, 0, 0, 0, 0, 0, logo.width, logo.height);
 | |
|   });
 | |
| }
 |