Added channel mask.

This commit is contained in:
Michael Jumper
2011-03-30 00:29:44 -07:00
parent cace921202
commit 3beb7ec1f0
2 changed files with 42 additions and 11 deletions

View File

@@ -246,12 +246,15 @@ function GuacamoleClient(display, tunnel) {
"png": function(parameters) { "png": function(parameters) {
var layer = parseInt(parameters[0]); var channelMask = parseInt(parameters[0]);
var x = parseInt(parameters[1]); var layer = getLayer(parseInt(parameters[1]));
var y = parseInt(parameters[2]); var x = parseInt(parameters[2]);
var data = parameters[3]; var y = parseInt(parameters[3]);
var data = parameters[4];
getLayer(layer).draw( layer.setChannelMask(channelMask);
layer.draw(
x, x,
y, y,
"data:image/png;base64," + data "data:image/png;base64," + data
@@ -265,17 +268,20 @@ function GuacamoleClient(display, tunnel) {
"copy": function(parameters) { "copy": function(parameters) {
var srcL = parseInt(parameters[0]); var srcL = getLayer(parseInt(parameters[0]));
var srcX = parseInt(parameters[1]); var srcX = parseInt(parameters[1]);
var srcY = parseInt(parameters[2]); var srcY = parseInt(parameters[2]);
var srcWidth = parseInt(parameters[3]); var srcWidth = parseInt(parameters[3]);
var srcHeight = parseInt(parameters[4]); var srcHeight = parseInt(parameters[4]);
var dstL = parseInt(parameters[5]); var channelMask = parseInt(parameters[5]);
var dstX = parseInt(parameters[6]); var dstL = getLayer(parseInt(parameters[6]));
var dstY = parseInt(parameters[7]); var dstX = parseInt(parameters[7]);
var dstY = parseInt(parameters[8]);
getLayer(dstL).copyRect( dstL.setChannelMask(channelMask);
getLayer(srcL),
dstL.copyRect(
srcL,
srcX, srcX,
srcY, srcY,
srcWidth, srcWidth,

View File

@@ -202,6 +202,31 @@ function Layer(width, height) {
}); });
}; };
var compositeOperation = {
/* 0x0 NOT IMPLEMENTED */
0x1: "destination-in",
0x2: "destination-out",
/* 0x3 NOT IMPLEMENTED */
0x4: "source-in",
/* 0x5 NOT IMPLEMENTED */
0x6: "source-atop",
/* 0x7 NOT IMPLEMENTED */
0x8: "source-out",
0x9: "destination-atop",
0xA: "xor",
0xB: "destination-over",
0xC: "source-copy",
/* 0xD NOT IMPLEMENTED */
0xE: "source-over",
0xF: "lighter",
};
display.setChannelMask = function(mask) {
reserveJob(function() {
displayContext.globalCompositeOperation = compositeOperation[mask];
});
};
return display; return display;
} }