mirror of
https://github.com/danbulant/node-x11
synced 2026-06-14 20:21:40 +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) {
|
||||
X.seq_num++;
|
||||
X.pack_stream.pack('CCSL', [ext.majorOpcode, 7, 2, pid]);
|
||||
X.pack_stream.flush();
|
||||
}
|
||||
X.seq_num++;
|
||||
X.pack_stream.pack('CCSL', [ext.majorOpcode, 7, 2, pid]);
|
||||
X.pack_stream.flush();
|
||||
};
|
||||
|
||||
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
|
||||
// TODO: not ready yet.
|
||||
ext.SetPictureFilter = function(pid, name, filterParams)
|
||||
{
|
||||
if (filterParams === 0)
|
||||
filterParams = [0];
|
||||
if (!filterParams)
|
||||
filterParams = [];
|
||||
if (!Array.isArray(filterParams))
|
||||
filterParams = [filterParams];
|
||||
|
||||
X.seq_num++;
|
||||
var reqLen = 2; //header + params + 1xStopfix+2xColors
|
||||
var format = 'CCSLa';
|
||||
var params = [ext.majorOpcode, 30, reqLen, pid];
|
||||
/*
|
||||
if (name == 'convolution')
|
||||
{
|
||||
reqLen += 2;
|
||||
format += 'L';
|
||||
params.push(floatToFix(filterParams));
|
||||
var reqLen = 2;
|
||||
var format = 'CCSLSxxp';
|
||||
var params = [ext.majorOpcode, 30, reqLen, pid, name.length, name + '\0'];
|
||||
reqLen += xutil.padded_length(name.length+3)/4 + filterParams.length;
|
||||
|
||||
if (name == 'nearest' || name == 'bilinear' || name == 'fast' || name == 'good' || name == 'best') {
|
||||
if (filterParams.length != 0) {
|
||||
throw 'Render.SetPictureFilter: "' + name + '" - unexpected parameters for filters";
|
||||
}
|
||||
} 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 {
|
||||
throw 'Not implemented filter ' + name;
|
||||
throw 'Render.SetPictureFilter: unknown filter "' + name + '"';
|
||||
}
|
||||
*/
|
||||
params[2] = reqLen;
|
||||
X.pack_stream.pack(format, params);
|
||||
X.pack_stream.flush();
|
||||
|
|
|
|||
Loading…
Reference in a new issue