diff options
Diffstat (limited to 'client.html')
-rw-r--r-- | client.html | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/client.html b/client.html index 7211bbe..64f51fd 100644 --- a/client.html +++ b/client.html @@ -211,6 +211,39 @@ function handleLoad(event) break; + /* mask from surface */ + case 'm': + source_id = base64_16(cmd, i); + i = i + 3; + sx = base64_16(cmd, i); + i = i + 3; + sy = base64_16(cmd, i); + i = i + 3; + w = base64_16(cmd, i); + i = i + 3; + h = base64_16(cmd, i); + i = i + 3; + dx = base64_16(cmd, i); + i = i + 3; + dy = base64_16(cmd, i); + i = i + 3; + + var tmp = document.createElement("canvas"); + tmp.width = w; + tmp.height = h; + var tmp_context = tmp.getContext("2d"); + tmp_context.globalCompositeOperation = "copy"; + tmp_context.drawImage(surfaces[source_id], sx, sy, w, h, 0, 0, w, h); + tmp_context.globalCompositeOperation = "source-in"; + tmp_context.fillStyle = current_color; + tmp_context.fillRect(0, 0, w, h); + + current_context.globalCompositeOperation = "source-over" + current_context.drawImage(tmp, 0, 0, w, h, dx, dy, w, h); + current_context.globalCompositeOperation = "copy" + + break; + /* fill rect */ case 'r': x = base64_16(cmd, i); |