mirror of
https://github.com/gyurix1968/guacamole-client.git
synced 2025-09-06 13:17:41 +00:00
Stub implementation of layer/buffer support (initial compat for new version of protocol)
This commit is contained in:
@@ -50,10 +50,6 @@ function GuacamoleClient(display, tunnelURL) {
|
||||
|| currentState == STATE_WAITING;
|
||||
}
|
||||
|
||||
// Layers
|
||||
var background = null;
|
||||
var cursor = null;
|
||||
|
||||
var cursorImage = null;
|
||||
var cursorHotspotX = 0;
|
||||
var cursorHotspotY = 0;
|
||||
@@ -443,6 +439,29 @@ function GuacamoleClient(display, tunnelURL) {
|
||||
|
||||
}
|
||||
|
||||
// Layers
|
||||
var displayWidth = null;
|
||||
var displayHeight = null;
|
||||
var background = null;
|
||||
var cursor = null;
|
||||
|
||||
function getLayer(index) {
|
||||
|
||||
// FIXME: Stub - does not actually handle layers or the layer index
|
||||
|
||||
if (background == null) {
|
||||
background = new Layer(displayWidth, displayHeight);
|
||||
|
||||
if (cursor != null)
|
||||
display.insertBefore(background, cursor);
|
||||
else
|
||||
display.appendChild(background);
|
||||
}
|
||||
|
||||
return background;
|
||||
|
||||
}
|
||||
|
||||
var instructionHandlers = {
|
||||
|
||||
"error": function(parameters) {
|
||||
@@ -459,48 +478,27 @@ function GuacamoleClient(display, tunnelURL) {
|
||||
|
||||
"size": function(parameters) {
|
||||
|
||||
var width = parseInt(parameters[0]);
|
||||
var height = parseInt(parameters[1]);
|
||||
displayWidth = parseInt(parameters[0]);
|
||||
displayHeight = parseInt(parameters[1]);
|
||||
|
||||
// Update (set) display size
|
||||
if (display && (background == null || cursor == null)) {
|
||||
display.style.width = width + "px";
|
||||
display.style.height = height + "px";
|
||||
|
||||
background = new Layer(width, height);
|
||||
cursor = new Layer(width, height);
|
||||
|
||||
display.appendChild(background);
|
||||
display.appendChild(cursor);
|
||||
if (display) {
|
||||
display.style.width = displayWidth + "px";
|
||||
display.style.height = displayHeight + "px";
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
"rect": function(parameters) {
|
||||
|
||||
var x = parseInt(parameters[0]);
|
||||
var y = parseInt(parameters[1]);
|
||||
var w = parseInt(parameters[2]);
|
||||
var h = parseInt(parameters[3]);
|
||||
var color = parameters[4];
|
||||
|
||||
background.drawRect(
|
||||
x,
|
||||
y,
|
||||
w,
|
||||
h,
|
||||
color
|
||||
);
|
||||
// Set cursor layer width/height here
|
||||
|
||||
},
|
||||
|
||||
"png": function(parameters) {
|
||||
|
||||
var x = parseInt(parameters[0]);
|
||||
var y = parseInt(parameters[1]);
|
||||
var data = parameters[2];
|
||||
var layer = parseInt(parameters[0]);
|
||||
var x = parseInt(parameters[1]);
|
||||
var y = parseInt(parameters[2]);
|
||||
var data = parameters[3];
|
||||
|
||||
background.draw(
|
||||
getLayer(layer).draw(
|
||||
x,
|
||||
y,
|
||||
"data:image/png;base64," + data
|
||||
@@ -514,14 +512,17 @@ function GuacamoleClient(display, tunnelURL) {
|
||||
|
||||
"copy": function(parameters) {
|
||||
|
||||
var srcX = parseInt(parameters[0]);
|
||||
var srcY = parseInt(parameters[1]);
|
||||
var srcWidth = parseInt(parameters[2]);
|
||||
var srcHeight = parseInt(parameters[3]);
|
||||
var dstX = parseInt(parameters[4]);
|
||||
var dstY = parseInt(parameters[5]);
|
||||
var srcL = 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]);
|
||||
|
||||
background.copyRect(
|
||||
getLayer(dstL).copyRect(
|
||||
getLayer(srcL),
|
||||
srcX,
|
||||
srcY,
|
||||
srcWidth,
|
||||
@@ -538,6 +539,11 @@ function GuacamoleClient(display, tunnelURL) {
|
||||
var y = parseInt(parameters[1]);
|
||||
var data = parameters[2];
|
||||
|
||||
if (cursor == null) {
|
||||
cursor = new Layer(displayWidth, displayHeight);
|
||||
display.appendChild(cursor);
|
||||
}
|
||||
|
||||
// Start cursor image load
|
||||
var image = new Image();
|
||||
image.onload = function() {
|
||||
|
@@ -97,21 +97,11 @@ function Layer(width, height) {
|
||||
};
|
||||
|
||||
|
||||
display.copyRect = function(srcx, srcy, w, h, x, y) {
|
||||
display.copyRect = function(srcLayer, srcx, srcy, w, h, x, y) {
|
||||
var updateId = currentUpdate++;
|
||||
|
||||
setUpdate(updateId, function() {
|
||||
displayContext.drawImage(display, srcx, srcy, w, h, x, y, w, h);
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
display.drawRect = function(x, y, w, h, color) {
|
||||
var updateId = currentUpdate++;
|
||||
|
||||
setUpdate(updateId, function() {
|
||||
displayContext.fillStyle = color;
|
||||
displayContext.fillRect(x, y, w, h);
|
||||
displayContext.drawImage(srcLayer, srcx, srcy, w, h, x, y, w, h);
|
||||
});
|
||||
|
||||
};
|
||||
|
Reference in New Issue
Block a user