Add support for DPI within size instruction and client info.

This commit is contained in:
Michael Jumper
2013-12-27 00:35:21 -08:00
parent 9b20d5e1eb
commit b722cf5977
5 changed files with 46 additions and 8 deletions

View File

@@ -149,7 +149,8 @@ public class ConfiguredGuacamoleSocket implements GuacamoleSocket {
new GuacamoleInstruction( new GuacamoleInstruction(
"size", "size",
Integer.toString(info.getOptimalScreenWidth()), Integer.toString(info.getOptimalScreenWidth()),
Integer.toString(info.getOptimalScreenHeight()) Integer.toString(info.getOptimalScreenHeight()),
Integer.toString(info.getOptimalResolution())
) )
); );

View File

@@ -59,14 +59,19 @@ public class GuacamoleClientInformation {
private int optimalScreenHeight = 768; private int optimalScreenHeight = 768;
/** /**
* The list of audio mimetypes reported by the client to be supported. * The resolution of the optimal dimensions given, in DPI.
*/ */
private List<String> audioMimetypes = new ArrayList<String>(); private int optimalResolution = 96;
/** /**
* The list of audio mimetypes reported by the client to be supported. * The list of audio mimetypes reported by the client to be supported.
*/ */
private List<String> videoMimetypes = new ArrayList<String>(); private final List<String> audioMimetypes = new ArrayList<String>();
/**
* The list of audio mimetypes reported by the client to be supported.
*/
private final List<String> videoMimetypes = new ArrayList<String>();
/** /**
* Returns the optimal screen width requested by the client, in pixels. * Returns the optimal screen width requested by the client, in pixels.
@@ -100,6 +105,26 @@ public class GuacamoleClientInformation {
this.optimalScreenHeight = optimalScreenHeight; this.optimalScreenHeight = optimalScreenHeight;
} }
/**
* Returns the resolution of the screen if the optimal width and height are
* used, in DPI.
*
* @return The optimal screen resolution.
*/
public int getOptimalResolution() {
return optimalResolution;
}
/**
* Sets the resolution of the screen if the optimal width and height are
* used, in DPI.
*
* @param optimalResolution The optimal screen resolution in DPI.
*/
public void setOptimalResolution(int optimalResolution) {
this.optimalResolution = optimalResolution;
}
/** /**
* Returns the list of audio mimetypes supported by the client. To add or * Returns the list of audio mimetypes supported by the client. To add or
* removed supported mimetypes, the list returned by this function can be * removed supported mimetypes, the list returned by this function can be

View File

@@ -251,6 +251,11 @@ public class BasicTunnelRequestUtility {
if (height != null) if (height != null)
info.setOptimalScreenHeight(Integer.parseInt(height)); info.setOptimalScreenHeight(Integer.parseInt(height));
// Set resolution if provided
String dpi = request.getParameter("dpi");
if (dpi != null)
info.setOptimalResolution(Integer.parseInt(dpi));
// Add audio mimetypes // Add audio mimetypes
String[] audio_mimetypes = request.getParameterValues("audio"); String[] audio_mimetypes = request.getParameterValues("audio");
if (audio_mimetypes != null) if (audio_mimetypes != null)

View File

@@ -105,8 +105,10 @@
try { try {
// Calculate optimal width/height for display // Calculate optimal width/height for display
var optimal_width = window.innerWidth; var pixel_density = window.devicePixelRatio || 1;
var optimal_height = window.innerHeight; var optimal_dpi = pixel_density * 96;
var optimal_width = window.innerWidth * pixel_density;
var optimal_height = window.innerHeight * pixel_density;
// Scale width/height to be at least 600x600 // Scale width/height to be at least 600x600
if (optimal_width < 600 || optimal_height < 600) { if (optimal_width < 600 || optimal_height < 600) {
@@ -123,7 +125,8 @@
var connect_string = var connect_string =
window.location.search.substring(1) window.location.search.substring(1)
+ "&width=" + optimal_width + "&width=" + optimal_width
+ "&height=" + optimal_height; + "&height=" + optimal_height
+ "&dpi=" + optimal_dpi;
// Add audio mimetypes to connect_string // Add audio mimetypes to connect_string
GuacUI.Audio.supported.forEach(function(mimetype) { GuacUI.Audio.supported.forEach(function(mimetype) {

View File

@@ -953,7 +953,11 @@ GuacUI.Client.attach = function(guac) {
*/ */
window.onresize = function() { window.onresize = function() {
guac.sendSize(window.innerWidth, window.innerHeight); var pixel_density = window.devicePixelRatio || 1;
var width = window.innerWidth * pixel_density;
var height = window.innerHeight * pixel_density;
guac.sendSize(width, height);
GuacUI.Client.updateDisplayScale(); GuacUI.Client.updateDisplayScale();
}; };