mirror of
https://github.com/danbulant/node-x11
synced 2026-05-19 12:28:58 +00:00
add Render.AddTraps request
This commit is contained in:
parent
5c72df00e5
commit
fa9dbe2000
2 changed files with 94 additions and 5 deletions
75
examples/smoketest/trapezoids.js
Normal file
75
examples/smoketest/trapezoids.js
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
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);
|
||||
}
|
||||
});
|
||||
|
|
@ -159,7 +159,7 @@ exports.requireExt = function(display, callback)
|
|||
|
||||
function floatToFix(f)
|
||||
{
|
||||
return parseInt(f*65536);
|
||||
return parseInt(f*65535);
|
||||
}
|
||||
|
||||
ext.SetPictureTransform = function(pid, matrix) {
|
||||
|
|
@ -331,7 +331,7 @@ exports.requireExt = function(display, callback)
|
|||
var format = 'CCSCxxxLSSSS';
|
||||
var params = [ext.majorOpcode, 26, reqLen, op, pid];
|
||||
for (var j=0; j < 4; ++j)
|
||||
params.push(color[j]);
|
||||
params.push(floatToFix(color[j]));
|
||||
for (var i=0; i < rects.length; i+=4)
|
||||
{
|
||||
format += 'ssSS';
|
||||
|
|
@ -354,12 +354,13 @@ exports.requireExt = function(display, callback)
|
|||
.flush();
|
||||
}
|
||||
|
||||
// note that Trapezoids is considered deprecated by Render extension
|
||||
ext.Trapezoids = function(op, src, srcX, srcY, dst, maskFormat, trapz)
|
||||
{
|
||||
X.seq_num++;
|
||||
var format = 'CCSCxxxLLLss';
|
||||
var params = [ext.majorOpcode, 10, 6+trapz.length, op, src, dst, maskFormat, srcX, srcY];
|
||||
for (var i=0; i < trapz.length; i+=10)
|
||||
for (var i=0; i < trapz.length; i++)
|
||||
{
|
||||
format += 'llllllllll';
|
||||
for (var j=0; j < 10; ++j)
|
||||
|
|
@ -367,7 +368,20 @@ exports.requireExt = function(display, callback)
|
|||
}
|
||||
X.pack_stream.pack(format, params);
|
||||
X.pack_stream.flush();
|
||||
}
|
||||
};
|
||||
|
||||
ext.AddTraps = function(pic, offX, offY, trapList) {
|
||||
X.seq_num++;
|
||||
var format = 'CCSLss';
|
||||
var params = [ext.majorOpcode, 32, 3+trapList.length, pic, offX, offY];
|
||||
for (var i=0; i < trapList.length; i++)
|
||||
{
|
||||
format += 'l';
|
||||
params.push(floatToFix(trapList[i]));
|
||||
}
|
||||
X.pack_stream.pack(format, params);
|
||||
X.pack_stream.flush();
|
||||
};
|
||||
|
||||
ext.Triangles = function(op, src, srcX, srcY, dst, maskFormat, tris)
|
||||
{
|
||||
|
|
@ -691,7 +705,7 @@ exports.requireExt = function(display, callback)
|
|||
};
|
||||
|
||||
ext.Subpixel = {
|
||||
Unknown: 0
|
||||
Unknown: 0,
|
||||
HorizontalRGB: 1,
|
||||
HorizontalBGR: 2,
|
||||
VerticalRGB : 3,
|
||||
|
|
|
|||
Loading…
Reference in a new issue