mirror of
https://github.com/gyurix1968/guacamole-client.git
synced 2025-09-06 05:07: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;
|
|| currentState == STATE_WAITING;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Layers
|
|
||||||
var background = null;
|
|
||||||
var cursor = null;
|
|
||||||
|
|
||||||
var cursorImage = null;
|
var cursorImage = null;
|
||||||
var cursorHotspotX = 0;
|
var cursorHotspotX = 0;
|
||||||
var cursorHotspotY = 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 = {
|
var instructionHandlers = {
|
||||||
|
|
||||||
"error": function(parameters) {
|
"error": function(parameters) {
|
||||||
@@ -459,48 +478,27 @@ function GuacamoleClient(display, tunnelURL) {
|
|||||||
|
|
||||||
"size": function(parameters) {
|
"size": function(parameters) {
|
||||||
|
|
||||||
var width = parseInt(parameters[0]);
|
displayWidth = parseInt(parameters[0]);
|
||||||
var height = parseInt(parameters[1]);
|
displayHeight = parseInt(parameters[1]);
|
||||||
|
|
||||||
// Update (set) display size
|
// Update (set) display size
|
||||||
if (display && (background == null || cursor == null)) {
|
if (display) {
|
||||||
display.style.width = width + "px";
|
display.style.width = displayWidth + "px";
|
||||||
display.style.height = height + "px";
|
display.style.height = displayHeight + "px";
|
||||||
|
|
||||||
background = new Layer(width, height);
|
|
||||||
cursor = new Layer(width, height);
|
|
||||||
|
|
||||||
display.appendChild(background);
|
|
||||||
display.appendChild(cursor);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
},
|
// Set cursor layer width/height here
|
||||||
|
|
||||||
"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
|
|
||||||
);
|
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
"png": function(parameters) {
|
"png": function(parameters) {
|
||||||
|
|
||||||
var x = parseInt(parameters[0]);
|
var layer = parseInt(parameters[0]);
|
||||||
var y = parseInt(parameters[1]);
|
var x = parseInt(parameters[1]);
|
||||||
var data = parameters[2];
|
var y = parseInt(parameters[2]);
|
||||||
|
var data = parameters[3];
|
||||||
|
|
||||||
background.draw(
|
getLayer(layer).draw(
|
||||||
x,
|
x,
|
||||||
y,
|
y,
|
||||||
"data:image/png;base64," + data
|
"data:image/png;base64," + data
|
||||||
@@ -514,14 +512,17 @@ function GuacamoleClient(display, tunnelURL) {
|
|||||||
|
|
||||||
"copy": function(parameters) {
|
"copy": function(parameters) {
|
||||||
|
|
||||||
var srcX = parseInt(parameters[0]);
|
var srcL = parseInt(parameters[0]);
|
||||||
var srcY = parseInt(parameters[1]);
|
var srcX = parseInt(parameters[1]);
|
||||||
var srcWidth = parseInt(parameters[2]);
|
var srcY = parseInt(parameters[2]);
|
||||||
var srcHeight = parseInt(parameters[3]);
|
var srcWidth = parseInt(parameters[3]);
|
||||||
var dstX = parseInt(parameters[4]);
|
var srcHeight = parseInt(parameters[4]);
|
||||||
var dstY = parseInt(parameters[5]);
|
var dstL = parseInt(parameters[5]);
|
||||||
|
var dstX = parseInt(parameters[6]);
|
||||||
|
var dstY = parseInt(parameters[7]);
|
||||||
|
|
||||||
background.copyRect(
|
getLayer(dstL).copyRect(
|
||||||
|
getLayer(srcL),
|
||||||
srcX,
|
srcX,
|
||||||
srcY,
|
srcY,
|
||||||
srcWidth,
|
srcWidth,
|
||||||
@@ -538,6 +539,11 @@ function GuacamoleClient(display, tunnelURL) {
|
|||||||
var y = parseInt(parameters[1]);
|
var y = parseInt(parameters[1]);
|
||||||
var data = parameters[2];
|
var data = parameters[2];
|
||||||
|
|
||||||
|
if (cursor == null) {
|
||||||
|
cursor = new Layer(displayWidth, displayHeight);
|
||||||
|
display.appendChild(cursor);
|
||||||
|
}
|
||||||
|
|
||||||
// Start cursor image load
|
// Start cursor image load
|
||||||
var image = new Image();
|
var image = new Image();
|
||||||
image.onload = function() {
|
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++;
|
var updateId = currentUpdate++;
|
||||||
|
|
||||||
setUpdate(updateId, function() {
|
setUpdate(updateId, function() {
|
||||||
displayContext.drawImage(display, srcx, srcy, w, h, x, y, w, h);
|
displayContext.drawImage(srcLayer, 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);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user