mirror of
https://github.com/danbulant/node-x11
synced 2026-06-24 17:21:47 +00:00
fix Render.SetPictureFilter
This commit is contained in:
parent
51b03c5173
commit
31785d9a5b
1 changed files with 35 additions and 16 deletions
|
|
@ -152,10 +152,10 @@ exports.requireExt = function(display, callback)
|
||||||
}
|
}
|
||||||
|
|
||||||
ext.FreePicture = function(pid) {
|
ext.FreePicture = function(pid) {
|
||||||
X.seq_num++;
|
X.seq_num++;
|
||||||
X.pack_stream.pack('CCSL', [ext.majorOpcode, 7, 2, pid]);
|
X.pack_stream.pack('CCSL', [ext.majorOpcode, 7, 2, pid]);
|
||||||
X.pack_stream.flush();
|
X.pack_stream.flush();
|
||||||
}
|
};
|
||||||
|
|
||||||
function floatToFix(f)
|
function floatToFix(f)
|
||||||
{
|
{
|
||||||
|
|
@ -163,23 +163,42 @@ exports.requireExt = function(display, callback)
|
||||||
}
|
}
|
||||||
|
|
||||||
// see example of blur filter here: https://github.com/richoH/rxvt-unicode/blob/master/src/background.C
|
// see example of blur filter here: https://github.com/richoH/rxvt-unicode/blob/master/src/background.C
|
||||||
// TODO: not ready yet.
|
|
||||||
ext.SetPictureFilter = function(pid, name, filterParams)
|
ext.SetPictureFilter = function(pid, name, filterParams)
|
||||||
{
|
{
|
||||||
|
if (filterParams === 0)
|
||||||
|
filterParams = [0];
|
||||||
|
if (!filterParams)
|
||||||
|
filterParams = [];
|
||||||
|
if (!Array.isArray(filterParams))
|
||||||
|
filterParams = [filterParams];
|
||||||
|
|
||||||
X.seq_num++;
|
X.seq_num++;
|
||||||
var reqLen = 2; //header + params + 1xStopfix+2xColors
|
var reqLen = 2;
|
||||||
var format = 'CCSLa';
|
var format = 'CCSLSxxp';
|
||||||
var params = [ext.majorOpcode, 30, reqLen, pid];
|
var params = [ext.majorOpcode, 30, reqLen, pid, name.length, name + '\0'];
|
||||||
/*
|
reqLen += xutil.padded_length(name.length+3)/4 + filterParams.length;
|
||||||
if (name == 'convolution')
|
|
||||||
{
|
if (name == 'nearest' || name == 'bilinear' || name == 'fast' || name == 'good' || name == 'best') {
|
||||||
reqLen += 2;
|
if (filterParams.length != 0) {
|
||||||
format += 'L';
|
throw 'Render.SetPictureFilter: "' + name + '" - unexpected parameters for filters";
|
||||||
params.push(floatToFix(filterParams));
|
}
|
||||||
|
} else if (name == 'convolution' || ) {
|
||||||
|
if (filterParams.length < 2 || filterParams[0]*filterParams[1] !== filterParams.length + 2) {
|
||||||
|
throw 'Render.SetPictureFilter: "convolution" - incorrect matrix dimensions. Must be flat array [ w, h, elem1, elem2, ... ]';
|
||||||
|
}
|
||||||
|
for (var i=0; i < filterParams.length; ++i) {
|
||||||
|
format += 'L';
|
||||||
|
params.push(floatToFix(filterParams[i]));
|
||||||
|
}
|
||||||
|
} else if (name == 'binomial' || name == 'gaussian') {
|
||||||
|
if (filterParams.length < 2) {
|
||||||
|
throw 'Render.SetPictureFilter: "' + name + '" - incorrect number of parameters, must be exactly 1 number, instead got: ' + filterParams;
|
||||||
|
}
|
||||||
|
format += 'L';
|
||||||
|
params.push(floatToFix(filterParams[0]));
|
||||||
} else {
|
} else {
|
||||||
throw 'Not implemented filter ' + name;
|
throw 'Render.SetPictureFilter: unknown filter "' + name + '"';
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
params[2] = reqLen;
|
params[2] = reqLen;
|
||||||
X.pack_stream.pack(format, params);
|
X.pack_stream.pack(format, params);
|
||||||
X.pack_stream.flush();
|
X.pack_stream.flush();
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue