"png": function(parameters) {
- var layer = parseInt(parameters[0]);
- var x = parseInt(parameters[1]);
- var y = parseInt(parameters[2]);
- var data = parameters[3];
+ var channelMask = parseInt(parameters[0]);
+ var layer = getLayer(parseInt(parameters[1]));
+ var x = parseInt(parameters[2]);
+ var y = parseInt(parameters[3]);
+ var data = parameters[4];
- getLayer(layer).draw(
+ layer.setChannelMask(channelMask);
+
+ layer.draw(
x,
y,
"data:image/png;base64," + data
"copy": function(parameters) {
- var srcL = parseInt(parameters[0]);
+ var srcL = getLayer(parseInt(parameters[0]));
var srcX = parseInt(parameters[1]);
var srcY = parseInt(parameters[2]);
var srcWidth = parseInt(parameters[3]);
var srcHeight = parseInt(parameters[4]);
- var dstL = parseInt(parameters[5]);
- var dstX = parseInt(parameters[6]);
- var dstY = parseInt(parameters[7]);
+ var channelMask = parseInt(parameters[5]);
+ var dstL = getLayer(parseInt(parameters[6]));
+ var dstX = parseInt(parameters[7]);
+ var dstY = parseInt(parameters[8]);
+
+ dstL.setChannelMask(channelMask);
- getLayer(dstL).copyRect(
- getLayer(srcL),
+ dstL.copyRect(
+ srcL,
srcX,
srcY,
srcWidth,
});
};
+ 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;
}