Merge pull request #288 from smithkl42/master

Added support for noVNC
This commit is contained in:
Boris Yankov
2013-02-15 10:43:09 -08:00
2 changed files with 172 additions and 0 deletions
+32
View File
@@ -0,0 +1,32 @@
///<reference path="noVNC.d.ts" />
Util.load_scripts(["webutil.js", "base64.js", "websock.js", "des.js",
"input.js", "display.js", "jsunzip.js", "rfb.js"]);
var rfb:RFB;
function setPassword() {
rfb.sendPassword('password');
}
function sendCtrlAltDel() {
rfb.sendCtrlAltDel();
}
function init() {
var host:string, port:number, password:string, path:string, token;
var canvas = <HTMLCanvasElement>document.getElementById('noVNC_canvas');
rfb = new RFB({
target: canvas,
encrypt: true,
repeaterID: "myrepeaterid",
true_color: true,
local_cursor: true,
shared: true,
view_only: true,
updateState: true,
onPasswordRequired: (rfb: RFB) => { }
});
rfb.connect(host, port, password, path);
};
+140
View File
@@ -0,0 +1,140 @@
// Type definitions for noVNC
// Project: https://github.com/kanaka/noVNC
// Definitions by: Ken Smith <https://github.com/smithkl42/>
// Definitions: https://github.com/borisyankov/DefinitelyTyped
interface NvPoint {
x: number;
y: number;
}
interface NvFeatures {
xpath: bool;
air: bool;
query: bool;
}
interface NvEngine {
presto: bool;
trident: bool;
webkit: bool;
gecko: bool;
}
interface NvFlash {
version: number;
build: number;
}
interface NvBox {
x: number;
y: number;
w: number;
h: number;
}
interface NvCleanDirtyBox {
cleanBox: NvBox;
dirtyBoxes: NvBox[];
}
interface NvUtilStatic {
init_logging(level?: string): void;
get_logging(): string;
conf_default(cfg, api, defaults, v, mode, type, defval, desc): void;
conf_defaults(cfg, api, defaults, arr): void;
get_include_uri(): string;
load_scripts(files: string[]): void;
getPosition(obj: HTMLElement): NvPoint;
getEventPosition(e: Event, obj: HTMLElement, scale: number): NvPoint;
addEvent(obj: HTMLElement, evType: string, fn: Function): void;
removeEvent(obj: HTMLElement, evType: string, fn: Function): void;
stopEvent(e: Event): void;
Features: NvFeatures;
Engine: NvEngine;
Flash(): NvFlash;
}
interface NvRenderAction {
type: string;
old_x: number;
old_y: number;
x: number;
y: number;
width: number;
height: number;
}
interface NvRFBDefaults {
target?: HTMLCanvasElement;
focusContainer?: HTMLElement;
encrypt?: bool;
true_color?: bool;
local_cursor?: bool;
shared?: bool;
view_only?: bool;
connectTimeout?: number;
disconnectTimeout?: number;
viewportDrag?: bool;
check_rate?: number;
fbu_req_rate?: number;
repeaterID?: string;
onUpdateState?: (rfb: RFB, state: any, oldstate: any, statusMsg: string) => void;
onPasswordRequired?: (rfb: RFB) => void;
onClipboard?: (rfb: RFB, text: string) => void;
onBell?: (rfb: RFB) => void;
onFBUReceive?: (rfb: RFB, fbu: any) => void;
onFBUComplete?: (rfb: RFB, fbu: any) => void;
onFBResize?: (rfb: RFB, width: number, height: number) => void;
}
class RFB {
constructor(defaults);
set_local_cursor(cursor): void;
get_display(): Display;
get_keyboard(): Keyboard;
get_mouse(): Mouse;
connect(host: string, port: number, password: string, path: string): void;
disconnect(): void;
sendPassword(passwd: string): void;
sendCtrlAltDel(): void;
sendKey(code: number, down: bool): void;
clipboardPasteFrom(text: string): void;
testMode(override_send: (arr: Array) => bool, data_mode: string): void;
}
interface Display {
get_context(): CanvasRenderingContext2D;
set_scale(scale: number): void;
set_width(val: number): void;
get_width(): number;
set_height(val: number): void;
get_height(): number;
viewportChange(deltaX: number, deltaY: number, width: number, height: number): void;
getCleanDirtyReset(): NvCleanDirtyBox;
absX(x: number): number;
absY(y: number): number;
resize(width: number, height: number): void;
clear(): void;
fillRect(x: number, y: number, width: number, height: number, color: number[]);
copyImage(old_x: number, old_y: number, new_x: number, new_y: number, w: number, h: number);
startTile(x: number, y: number, width: number, height: number, color: number[]);
subTile(x: number, y: number, w: number, h: number, color: number[]);
finishTile(): void;
blitImage(x: number, y: number, width: number, height: number, arr: any[], offset: number): void;
blitRgbImage(x: number, y: number, width: number, height: number, arr: any[], offset: number): void;
blitStringImage(str: string, x: number, y: number): void;
drawImage(img: HTMLImageElement, x: number, y: number): void;
renderQ_push(action: NvRenderAction): void;
}
interface Keyboard {
grab(): void;
ungrab(): void;
}
interface Mouse {
grab(): void;
ungrab(): void;
}
declare var Util: NvUtilStatic;