diff --git a/TODO b/TODO
index 64fc326..8f655d3 100644
--- a/TODO
+++ b/TODO
@@ -25,9 +25,6 @@ Medium Tasks:
Big Tasks:
- . Shift the code so it doesn't pollute the global namespace; that
- will make it more usable as an embed or library
-
. Generate messages + enums from spice.proto
. Video:
diff --git a/atKeynames.js b/atKeynames.js
index e1e27fd..110e9e9 100644
--- a/atKeynames.js
+++ b/atKeynames.js
@@ -82,6 +82,8 @@
* 2) Use the keyboards native set and translate it to common keysyms.
*/
+
+var KeyNames = {
/*
* definition of the AT84/MF101/MF102 Keyboard:
* ============================================================
@@ -89,95 +91,99 @@
* Key Name Main Also (hex) (dec)
* ---------------- ---------- ------- ------ ------
*/
+ KEY_Escape :/* Escape 0x01 */ 1,
+ KEY_1 :/* 1 ! 0x02 */ 2,
+ KEY_2 :/* 2 @ 0x03 */ 3,
+ KEY_3 :/* 3 # 0x04 */ 4,
+ KEY_4 :/* 4 $ 0x05 */ 5,
+ KEY_5 :/* 5 % 0x06 */ 6,
+ KEY_6 :/* 6 ^ 0x07 */ 7,
+ KEY_7 :/* 7 & 0x08 */ 8,
+ KEY_8 :/* 8 * 0x09 */ 9,
+ KEY_9 :/* 9 ( 0x0a */ 10,
+ KEY_0 :/* 0 ) 0x0b */ 11,
+ KEY_Minus :/* - (Minus) _ (Under) 0x0c */ 12,
+ KEY_Equal :/* = (Equal) + 0x0d */ 13,
+ KEY_BackSpace :/* Back Space 0x0e */ 14,
+ KEY_Tab :/* Tab 0x0f */ 15,
+ KEY_Q :/* Q 0x10 */ 16,
+ KEY_W :/* W 0x11 */ 17,
+ KEY_E :/* E 0x12 */ 18,
+ KEY_R :/* R 0x13 */ 19,
+ KEY_T :/* T 0x14 */ 20,
+ KEY_Y :/* Y 0x15 */ 21,
+ KEY_U :/* U 0x16 */ 22,
+ KEY_I :/* I 0x17 */ 23,
+ KEY_O :/* O 0x18 */ 24,
+ KEY_P :/* P 0x19 */ 25,
+ KEY_LBrace :/* [ { 0x1a */ 26,
+ KEY_RBrace :/* ] } 0x1b */ 27,
+ KEY_Enter :/* Enter 0x1c */ 28,
+ KEY_LCtrl :/* Ctrl(left) 0x1d */ 29,
+ KEY_A :/* A 0x1e */ 30,
+ KEY_S :/* S 0x1f */ 31,
+ KEY_D :/* D 0x20 */ 32,
+ KEY_F :/* F 0x21 */ 33,
+ KEY_G :/* G 0x22 */ 34,
+ KEY_H :/* H 0x23 */ 35,
+ KEY_J :/* J 0x24 */ 36,
+ KEY_K :/* K 0x25 */ 37,
+ KEY_L :/* L 0x26 */ 38,
+ KEY_SemiColon :/* ;(SemiColon) :(Colon) 0x27 */ 39,
+ KEY_Quote :/* ' (Apostr) " (Quote) 0x28 */ 40,
+ KEY_Tilde :/* ` (Accent) ~ (Tilde) 0x29 */ 41,
+ KEY_ShiftL :/* Shift(left) 0x2a */ 42,
+ KEY_BSlash :/* \(BckSlash) |(VertBar)0x2b */ 43,
+ KEY_Z :/* Z 0x2c */ 44,
+ KEY_X :/* X 0x2d */ 45,
+ KEY_C :/* C 0x2e */ 46,
+ KEY_V :/* V 0x2f */ 47,
+ KEY_B :/* B 0x30 */ 48,
+ KEY_N :/* N 0x31 */ 49,
+ KEY_M :/* M 0x32 */ 50,
+ KEY_Comma :/* , (Comma) < (Less) 0x33 */ 51,
+ KEY_Period :/* . (Period) >(Greater)0x34 */ 52,
+ KEY_Slash :/* / (Slash) ? 0x35 */ 53,
+ KEY_ShiftR :/* Shift(right) 0x36 */ 54,
+ KEY_KP_Multiply :/* * 0x37 */ 55,
+ KEY_Alt :/* Alt(left) 0x38 */ 56,
+ KEY_Space :/* (SpaceBar) 0x39 */ 57,
+ KEY_CapsLock :/* CapsLock 0x3a */ 58,
+ KEY_F1 :/* F1 0x3b */ 59,
+ KEY_F2 :/* F2 0x3c */ 60,
+ KEY_F3 :/* F3 0x3d */ 61,
+ KEY_F4 :/* F4 0x3e */ 62,
+ KEY_F5 :/* F5 0x3f */ 63,
+ KEY_F6 :/* F6 0x40 */ 64,
+ KEY_F7 :/* F7 0x41 */ 65,
+ KEY_F8 :/* F8 0x42 */ 66,
+ KEY_F9 :/* F9 0x43 */ 67,
+ KEY_F10 :/* F10 0x44 */ 68,
+ KEY_NumLock :/* NumLock 0x45 */ 69,
+ KEY_ScrollLock :/* ScrollLock 0x46 */ 70,
+ KEY_KP_7 :/* 7 Home 0x47 */ 71,
+ KEY_KP_8 :/* 8 Up 0x48 */ 72,
+ KEY_KP_9 :/* 9 PgUp 0x49 */ 73,
+ KEY_KP_Minus :/* - (Minus) 0x4a */ 74,
+ KEY_KP_4 :/* 4 Left 0x4b */ 75,
+ KEY_KP_5 :/* 5 0x4c */ 76,
+ KEY_KP_6 :/* 6 Right 0x4d */ 77,
+ KEY_KP_Plus :/* + (Plus) 0x4e */ 78,
+ KEY_KP_1 :/* 1 End 0x4f */ 79,
+ KEY_KP_2 :/* 2 Down 0x50 */ 80,
+ KEY_KP_3 :/* 3 PgDown 0x51 */ 81,
+ KEY_KP_0 :/* 0 Insert 0x52 */ 82,
+ KEY_KP_Decimal :/* . (Decimal) Delete 0x53 */ 83,
+ KEY_SysReqest :/* SysReqest 0x54 */ 84,
+ /* NOTUSED 0x55 */
+ KEY_Less :/* < (Less) >(Greater) 0x56 */ 86,
+ KEY_F11 :/* F11 0x57 */ 87,
+ KEY_F12 :/* F12 0x58 */ 88,
-var KEY_Escape =/* Escape 0x01 */ 1
-var KEY_1 =/* 1 ! 0x02 */ 2
-var KEY_2 =/* 2 @ 0x03 */ 3
-var KEY_3 =/* 3 # 0x04 */ 4
-var KEY_4 =/* 4 $ 0x05 */ 5
-var KEY_5 =/* 5 % 0x06 */ 6
-var KEY_6 =/* 6 ^ 0x07 */ 7
-var KEY_7 =/* 7 & 0x08 */ 8
-var KEY_8 =/* 8 * 0x09 */ 9
-var KEY_9 =/* 9 ( 0x0a */ 10
-var KEY_0 =/* 0 ) 0x0b */ 11
-var KEY_Minus =/* - (Minus) _ (Under) 0x0c */ 12
-var KEY_Equal =/* = (Equal) + 0x0d */ 13
-var KEY_BackSpace =/* Back Space 0x0e */ 14
-var KEY_Tab =/* Tab 0x0f */ 15
-var KEY_Q =/* Q 0x10 */ 16
-var KEY_W =/* W 0x11 */ 17
-var KEY_E =/* E 0x12 */ 18
-var KEY_R =/* R 0x13 */ 19
-var KEY_T =/* T 0x14 */ 20
-var KEY_Y =/* Y 0x15 */ 21
-var KEY_U =/* U 0x16 */ 22
-var KEY_I =/* I 0x17 */ 23
-var KEY_O =/* O 0x18 */ 24
-var KEY_P =/* P 0x19 */ 25
-var KEY_LBrace =/* [ { 0x1a */ 26
-var KEY_RBrace =/* ] } 0x1b */ 27
-var KEY_Enter =/* Enter 0x1c */ 28
-var KEY_LCtrl =/* Ctrl(left) 0x1d */ 29
-var KEY_A =/* A 0x1e */ 30
-var KEY_S =/* S 0x1f */ 31
-var KEY_D =/* D 0x20 */ 32
-var KEY_F =/* F 0x21 */ 33
-var KEY_G =/* G 0x22 */ 34
-var KEY_H =/* H 0x23 */ 35
-var KEY_J =/* J 0x24 */ 36
-var KEY_K =/* K 0x25 */ 37
-var KEY_L =/* L 0x26 */ 38
-var KEY_SemiColon =/* ;(SemiColon) :(Colon) 0x27 */ 39
-var KEY_Quote =/* ' (Apostr) " (Quote) 0x28 */ 40
-var KEY_Tilde =/* ` (Accent) ~ (Tilde) 0x29 */ 41
-var KEY_ShiftL =/* Shift(left) 0x2a */ 42
-var KEY_BSlash =/* \(BckSlash) |(VertBar)0x2b */ 43
-var KEY_Z =/* Z 0x2c */ 44
-var KEY_X =/* X 0x2d */ 45
-var KEY_C =/* C 0x2e */ 46
-var KEY_V =/* V 0x2f */ 47
-var KEY_B =/* B 0x30 */ 48
-var KEY_N =/* N 0x31 */ 49
-var KEY_M =/* M 0x32 */ 50
-var KEY_Comma =/* , (Comma) < (Less) 0x33 */ 51
-var KEY_Period =/* . (Period) >(Greater)0x34 */ 52
-var KEY_Slash =/* / (Slash) ? 0x35 */ 53
-var KEY_ShiftR =/* Shift(right) 0x36 */ 54
-var KEY_KP_Multiply =/* * 0x37 */ 55
-var KEY_Alt =/* Alt(left) 0x38 */ 56
-var KEY_Space =/* (SpaceBar) 0x39 */ 57
-var KEY_CapsLock =/* CapsLock 0x3a */ 58
-var KEY_F1 =/* F1 0x3b */ 59
-var KEY_F2 =/* F2 0x3c */ 60
-var KEY_F3 =/* F3 0x3d */ 61
-var KEY_F4 =/* F4 0x3e */ 62
-var KEY_F5 =/* F5 0x3f */ 63
-var KEY_F6 =/* F6 0x40 */ 64
-var KEY_F7 =/* F7 0x41 */ 65
-var KEY_F8 =/* F8 0x42 */ 66
-var KEY_F9 =/* F9 0x43 */ 67
-var KEY_F10 =/* F10 0x44 */ 68
-var KEY_NumLock =/* NumLock 0x45 */ 69
-var KEY_ScrollLock =/* ScrollLock 0x46 */ 70
-var KEY_KP_7 =/* 7 Home 0x47 */ 71
-var KEY_KP_8 =/* 8 Up 0x48 */ 72
-var KEY_KP_9 =/* 9 PgUp 0x49 */ 73
-var KEY_KP_Minus =/* - (Minus) 0x4a */ 74
-var KEY_KP_4 =/* 4 Left 0x4b */ 75
-var KEY_KP_5 =/* 5 0x4c */ 76
-var KEY_KP_6 =/* 6 Right 0x4d */ 77
-var KEY_KP_Plus =/* + (Plus) 0x4e */ 78
-var KEY_KP_1 =/* 1 End 0x4f */ 79
-var KEY_KP_2 =/* 2 Down 0x50 */ 80
-var KEY_KP_3 =/* 3 PgDown 0x51 */ 81
-var KEY_KP_0 =/* 0 Insert 0x52 */ 82
-var KEY_KP_Decimal =/* . (Decimal) Delete 0x53 */ 83
-var KEY_SysReqest =/* SysReqest 0x54 */ 84
- /* NOTUSED 0x55 */
-var KEY_Less =/* < (Less) >(Greater) 0x56 */ 86
-var KEY_F11 =/* F11 0x57 */ 87
-var KEY_F12 =/* F12 0x58 */ 88
+ KEY_Prefix0 :/* special 0x60 */ 96,
+ KEY_Prefix1 :/* specail 0x61 */ 97,
+};
-var KEY_Prefix0 =/* special 0x60 */ 96
-var KEY_Prefix1 =/* specail 0x61 */ 97
+export {
+ KeyNames,
+};
diff --git a/bitmap.js b/bitmap.js
index 91278d7..d15ce70 100644
--- a/bitmap.js
+++ b/bitmap.js
@@ -23,16 +23,19 @@
** bitmap.js
** Handle SPICE_IMAGE_TYPE_BITMAP
**--------------------------------------------------------------------------*/
+
+import { Constants } from './enums.js';
+
function convert_spice_bitmap_to_web(context, spice_bitmap)
{
var ret;
var offset, x, src_offset = 0, src_dec = 0;
var u8 = new Uint8Array(spice_bitmap.data);
- if (spice_bitmap.format != SPICE_BITMAP_FMT_32BIT &&
- spice_bitmap.format != SPICE_BITMAP_FMT_RGBA)
+ if (spice_bitmap.format != Constants.SPICE_BITMAP_FMT_32BIT &&
+ spice_bitmap.format != Constants.SPICE_BITMAP_FMT_RGBA)
return undefined;
- if (!(spice_bitmap.flags & SPICE_BITMAP_FLAGS_TOP_DOWN))
+ if (!(spice_bitmap.flags & Constants.SPICE_BITMAP_FLAGS_TOP_DOWN))
{
src_offset = (spice_bitmap.y - 1 ) * spice_bitmap.stride;
src_dec = 2 * spice_bitmap.stride;
@@ -47,7 +50,7 @@ function convert_spice_bitmap_to_web(context, spice_bitmap)
ret.data[offset + 2 ] = u8[src_offset + 0];
// FIXME - We effectively treat all images as having SPICE_IMAGE_FLAGS_HIGH_BITS_SET
- if (spice_bitmap.format == SPICE_BITMAP_FMT_32BIT)
+ if (spice_bitmap.format == Constants.SPICE_BITMAP_FMT_32BIT)
ret.data[offset + 3] = 255;
else
ret.data[offset + 3] = u8[src_offset];
@@ -55,3 +58,7 @@ function convert_spice_bitmap_to_web(context, spice_bitmap)
return ret;
}
+
+export {
+ convert_spice_bitmap_to_web,
+};
diff --git a/cursor.js b/cursor.js
index d3f4d55..a3be8da 100644
--- a/cursor.js
+++ b/cursor.js
@@ -18,6 +18,15 @@
along with spice-html5. If not, see .
*/
+import { create_rgba_png } from './png.js';
+import { Constants } from './enums.js';
+import { DEBUG } from './utils.js';
+import {
+ SpiceMsgCursorInit,
+ SpiceMsgCursorSet,
+} from './spicemsg.js';
+import { SpiceSimulateCursor } from './simulatecursor.js';
+import { SpiceConn } from './spiceconn.js';
/*----------------------------------------------------------------------------
** SpiceCursorConn
@@ -31,12 +40,12 @@ function SpiceCursorConn()
SpiceCursorConn.prototype = Object.create(SpiceConn.prototype);
SpiceCursorConn.prototype.process_channel_message = function(msg)
{
- if (msg.type == SPICE_MSG_CURSOR_INIT)
+ if (msg.type == Constants.SPICE_MSG_CURSOR_INIT)
{
var cursor_init = new SpiceMsgCursorInit(msg.data);
DEBUG > 1 && console.log("SpiceMsgCursorInit");
if (this.parent && this.parent.inputs &&
- this.parent.inputs.mouse_mode == SPICE_MOUSE_MODE_SERVER)
+ this.parent.inputs.mouse_mode == Constants.SPICE_MOUSE_MODE_SERVER)
{
// FIXME - this imagines that the server actually
// provides the current cursor position,
@@ -49,11 +58,11 @@ SpiceCursorConn.prototype.process_channel_message = function(msg)
return true;
}
- if (msg.type == SPICE_MSG_CURSOR_SET)
+ if (msg.type == Constants.SPICE_MSG_CURSOR_SET)
{
var cursor_set = new SpiceMsgCursorSet(msg.data);
DEBUG > 1 && console.log("SpiceMsgCursorSet");
- if (cursor_set.flags & SPICE_CURSOR_FLAGS_NONE)
+ if (cursor_set.flags & Constants.SPICE_CURSOR_FLAGS_NONE)
{
document.getElementById(this.parent.screen_id).style.cursor = "none";
return true;
@@ -62,7 +71,7 @@ SpiceCursorConn.prototype.process_channel_message = function(msg)
if (cursor_set.flags > 0)
this.log_warn("FIXME: No support for cursor flags " + cursor_set.flags);
- if (cursor_set.cursor.header.type != SPICE_CURSOR_TYPE_ALPHA)
+ if (cursor_set.cursor.header.type != Constants.SPICE_CURSOR_TYPE_ALPHA)
{
this.log_warn("FIXME: No support for cursor type " + cursor_set.cursor.header.type);
return false;
@@ -73,39 +82,39 @@ SpiceCursorConn.prototype.process_channel_message = function(msg)
return true;
}
- if (msg.type == SPICE_MSG_CURSOR_MOVE)
+ if (msg.type == Constants.SPICE_MSG_CURSOR_MOVE)
{
this.known_unimplemented(msg.type, "Cursor Move");
return true;
}
- if (msg.type == SPICE_MSG_CURSOR_HIDE)
+ if (msg.type == Constants.SPICE_MSG_CURSOR_HIDE)
{
DEBUG > 1 && console.log("SpiceMsgCursorHide");
document.getElementById(this.parent.screen_id).style.cursor = "none";
return true;
}
- if (msg.type == SPICE_MSG_CURSOR_TRAIL)
+ if (msg.type == Constants.SPICE_MSG_CURSOR_TRAIL)
{
this.known_unimplemented(msg.type, "Cursor Trail");
return true;
}
- if (msg.type == SPICE_MSG_CURSOR_RESET)
+ if (msg.type == Constants.SPICE_MSG_CURSOR_RESET)
{
DEBUG > 1 && console.log("SpiceMsgCursorReset");
document.getElementById(this.parent.screen_id).style.cursor = "auto";
return true;
}
- if (msg.type == SPICE_MSG_CURSOR_INVAL_ONE)
+ if (msg.type == Constants.SPICE_MSG_CURSOR_INVAL_ONE)
{
this.known_unimplemented(msg.type, "Cursor Inval One");
return true;
}
- if (msg.type == SPICE_MSG_CURSOR_INVAL_ALL)
+ if (msg.type == Constants.SPICE_MSG_CURSOR_INVAL_ALL)
{
DEBUG > 1 && console.log("SpiceMsgCursorInvalAll");
// FIXME - There may be something useful to do here...
@@ -126,3 +135,7 @@ SpiceCursorConn.prototype.set_cursor = function(cursor)
if (window.getComputedStyle(screen, null).cursor == 'auto')
SpiceSimulateCursor.simulate_cursor(this, cursor, screen, pngstr);
}
+
+export {
+ SpiceCursorConn,
+};
diff --git a/display.js b/display.js
index f6c74f5..b3525f7 100644
--- a/display.js
+++ b/display.js
@@ -18,6 +18,16 @@
along with spice-html5. If not, see .
*/
+import * as Webm from './webm.js';
+import * as Messages from './spicemsg.js';
+import * as Quic from './quic.js';
+import * as Utils from './utils.js';
+import * as Inputs from './inputs.js';
+import { Constants } from './enums.js';
+import { SpiceConn } from './spiceconn.js';
+import { SpiceRect } from './spicetype.js';
+import { convert_spice_lz_to_web } from './lz.js';
+import { convert_spice_bitmap_to_web } from './bitmap.js';
/*----------------------------------------------------------------------------
** FIXME: putImageData does not support Alpha blending
@@ -62,37 +72,37 @@ function SpiceDisplayConn()
SpiceDisplayConn.prototype = Object.create(SpiceConn.prototype);
SpiceDisplayConn.prototype.process_channel_message = function(msg)
{
- if (msg.type == SPICE_MSG_DISPLAY_MODE)
+ if (msg.type == Constants.SPICE_MSG_DISPLAY_MODE)
{
this.known_unimplemented(msg.type, "Display Mode");
return true;
}
- if (msg.type == SPICE_MSG_DISPLAY_MARK)
+ if (msg.type == Constants.SPICE_MSG_DISPLAY_MARK)
{
// FIXME - DISPLAY_MARK not implemented (may be hard or impossible)
this.known_unimplemented(msg.type, "Display Mark");
return true;
}
- if (msg.type == SPICE_MSG_DISPLAY_RESET)
+ if (msg.type == Constants.SPICE_MSG_DISPLAY_RESET)
{
- DEBUG > 2 && console.log("Display reset");
+ Utils.DEBUG > 2 && console.log("Display reset");
this.surfaces[this.primary_surface].canvas.context.restore();
return true;
}
- if (msg.type == SPICE_MSG_DISPLAY_DRAW_COPY)
+ if (msg.type == Constants.SPICE_MSG_DISPLAY_DRAW_COPY)
{
- var draw_copy = new SpiceMsgDisplayDrawCopy(msg.data);
+ var draw_copy = new Messages.SpiceMsgDisplayDrawCopy(msg.data);
- DEBUG > 1 && this.log_draw("DrawCopy", draw_copy);
+ Utils.DEBUG > 1 && this.log_draw("DrawCopy", draw_copy);
if (! draw_copy.base.box.is_same_size(draw_copy.data.src_area))
this.log_warn("FIXME: DrawCopy src_area is a different size than base.box; we do not handle that yet.");
- if (draw_copy.base.clip.type != SPICE_CLIP_TYPE_NONE)
+ if (draw_copy.base.clip.type != Constants.SPICE_CLIP_TYPE_NONE)
this.log_warn("FIXME: DrawCopy we don't handle clipping yet");
- if (draw_copy.data.rop_descriptor != SPICE_ROPD_OP_PUT)
+ if (draw_copy.data.rop_descriptor != Constants.SPICE_ROPD_OP_PUT)
this.log_warn("FIXME: DrawCopy we don't handle ropd type: " + draw_copy.data.rop_descriptor);
if (draw_copy.data.mask.flags)
this.log_warn("FIXME: DrawCopy we don't handle mask flag: " + draw_copy.data.mask.flags);
@@ -102,14 +112,14 @@ SpiceDisplayConn.prototype.process_channel_message = function(msg)
if (draw_copy.data && draw_copy.data.src_bitmap)
{
if (draw_copy.data.src_bitmap.descriptor.flags &&
- draw_copy.data.src_bitmap.descriptor.flags != SPICE_IMAGE_FLAGS_CACHE_ME &&
- draw_copy.data.src_bitmap.descriptor.flags != SPICE_IMAGE_FLAGS_HIGH_BITS_SET)
+ draw_copy.data.src_bitmap.descriptor.flags != Constants.SPICE_IMAGE_FLAGS_CACHE_ME &&
+ draw_copy.data.src_bitmap.descriptor.flags != Constants.SPICE_IMAGE_FLAGS_HIGH_BITS_SET)
{
this.log_warn("FIXME: DrawCopy unhandled image flags: " + draw_copy.data.src_bitmap.descriptor.flags);
- DEBUG <= 1 && this.log_draw("DrawCopy", draw_copy);
+ Utils.DEBUG <= 1 && this.log_draw("DrawCopy", draw_copy);
}
- if (draw_copy.data.src_bitmap.descriptor.type == SPICE_IMAGE_TYPE_QUIC)
+ if (draw_copy.data.src_bitmap.descriptor.type == Constants.SPICE_IMAGE_TYPE_QUIC)
{
var canvas = this.surfaces[draw_copy.base.surface_id].canvas;
if (! draw_copy.data.src_bitmap.quic)
@@ -117,7 +127,7 @@ SpiceDisplayConn.prototype.process_channel_message = function(msg)
this.log_warn("FIXME: DrawCopy could not handle this QUIC file.");
return false;
}
- var source_img = convert_spice_quic_to_web(canvas.context,
+ var source_img = Quic.convert_spice_quic_to_web(canvas.context,
draw_copy.data.src_bitmap.quic);
return this.draw_copy_helper(
@@ -125,12 +135,12 @@ SpiceDisplayConn.prototype.process_channel_message = function(msg)
src_area: draw_copy.data.src_area,
image_data: source_img,
tag: "copyquic." + draw_copy.data.src_bitmap.quic.type,
- has_alpha: (draw_copy.data.src_bitmap.quic.type == QUIC_IMAGE_TYPE_RGBA ? true : false) ,
+ has_alpha: (draw_copy.data.src_bitmap.quic.type == Quic.Constants.QUIC_IMAGE_TYPE_RGBA ? true : false) ,
descriptor : draw_copy.data.src_bitmap.descriptor
});
}
- else if (draw_copy.data.src_bitmap.descriptor.type == SPICE_IMAGE_TYPE_FROM_CACHE ||
- draw_copy.data.src_bitmap.descriptor.type == SPICE_IMAGE_TYPE_FROM_CACHE_LOSSLESS)
+ else if (draw_copy.data.src_bitmap.descriptor.type == Constants.SPICE_IMAGE_TYPE_FROM_CACHE ||
+ draw_copy.data.src_bitmap.descriptor.type == Constants.SPICE_IMAGE_TYPE_FROM_CACHE_LOSSLESS)
{
if (! this.cache || ! this.cache[draw_copy.data.src_bitmap.descriptor.id])
{
@@ -149,7 +159,7 @@ SpiceDisplayConn.prototype.process_channel_message = function(msg)
/* FIXME - LOSSLESS CACHE ramifications not understood or handled */
}
- else if (draw_copy.data.src_bitmap.descriptor.type == SPICE_IMAGE_TYPE_SURFACE)
+ else if (draw_copy.data.src_bitmap.descriptor.type == Constants.SPICE_IMAGE_TYPE_SURFACE)
{
var source_context = this.surfaces[draw_copy.data.src_bitmap.surface_id].canvas.context;
var target_context = this.surfaces[draw_copy.base.surface_id].canvas.context;
@@ -174,11 +184,11 @@ SpiceDisplayConn.prototype.process_channel_message = function(msg)
src_area: computed_src_area,
image_data: source_img,
tag: "copysurf." + draw_copy.data.src_bitmap.surface_id,
- has_alpha: this.surfaces[draw_copy.data.src_bitmap.surface_id].format == SPICE_SURFACE_FMT_32_xRGB ? false : true,
+ has_alpha: this.surfaces[draw_copy.data.src_bitmap.surface_id].format == Constants.SPICE_SURFACE_FMT_32_xRGB ? false : true,
descriptor : draw_copy.data.src_bitmap.descriptor
});
}
- else if (draw_copy.data.src_bitmap.descriptor.type == SPICE_IMAGE_TYPE_JPEG)
+ else if (draw_copy.data.src_bitmap.descriptor.type == Constants.SPICE_IMAGE_TYPE_JPEG)
{
if (! draw_copy.data.src_bitmap.jpeg)
{
@@ -211,7 +221,7 @@ SpiceDisplayConn.prototype.process_channel_message = function(msg)
return true;
}
- else if (draw_copy.data.src_bitmap.descriptor.type == SPICE_IMAGE_TYPE_JPEG_ALPHA)
+ else if (draw_copy.data.src_bitmap.descriptor.type == Constants.SPICE_IMAGE_TYPE_JPEG_ALPHA)
{
if (! draw_copy.data.src_bitmap.jpeg_alpha)
{
@@ -240,7 +250,7 @@ SpiceDisplayConn.prototype.process_channel_message = function(msg)
sc : this,
};
- if (this.surfaces[draw_copy.base.surface_id].format == SPICE_SURFACE_FMT_32_ARGB)
+ if (this.surfaces[draw_copy.base.surface_id].format == Constants.SPICE_SURFACE_FMT_32_ARGB)
{
var canvas = this.surfaces[draw_copy.base.surface_id].canvas;
@@ -252,7 +262,7 @@ SpiceDisplayConn.prototype.process_channel_message = function(msg)
return true;
}
- else if (draw_copy.data.src_bitmap.descriptor.type == SPICE_IMAGE_TYPE_BITMAP)
+ else if (draw_copy.data.src_bitmap.descriptor.type == Constants.SPICE_IMAGE_TYPE_BITMAP)
{
var canvas = this.surfaces[draw_copy.base.surface_id].canvas;
if (! draw_copy.data.src_bitmap.bitmap)
@@ -275,11 +285,11 @@ SpiceDisplayConn.prototype.process_channel_message = function(msg)
src_area: draw_copy.data.src_area,
image_data: source_img,
tag: "bitmap." + draw_copy.data.src_bitmap.bitmap.format,
- has_alpha: draw_copy.data.src_bitmap.bitmap == SPICE_BITMAP_FMT_32BIT ? false : true,
+ has_alpha: draw_copy.data.src_bitmap.bitmap == Constants.SPICE_BITMAP_FMT_32BIT ? false : true,
descriptor : draw_copy.data.src_bitmap.descriptor
});
}
- else if (draw_copy.data.src_bitmap.descriptor.type == SPICE_IMAGE_TYPE_LZ_RGB)
+ else if (draw_copy.data.src_bitmap.descriptor.type == Constants.SPICE_IMAGE_TYPE_LZ_RGB)
{
var canvas = this.surfaces[draw_copy.base.surface_id].canvas;
if (! draw_copy.data.src_bitmap.lz_rgb)
@@ -302,7 +312,7 @@ SpiceDisplayConn.prototype.process_channel_message = function(msg)
src_area: draw_copy.data.src_area,
image_data: source_img,
tag: "lz_rgb." + draw_copy.data.src_bitmap.lz_rgb.type,
- has_alpha: draw_copy.data.src_bitmap.lz_rgb.type == LZ_IMAGE_TYPE_RGBA ? true : false ,
+ has_alpha: draw_copy.data.src_bitmap.lz_rgb.type == Constants.LZ_IMAGE_TYPE_RGBA ? true : false ,
descriptor : draw_copy.data.src_bitmap.descriptor
});
}
@@ -318,20 +328,20 @@ SpiceDisplayConn.prototype.process_channel_message = function(msg)
return false;
}
- if (msg.type == SPICE_MSG_DISPLAY_DRAW_FILL)
+ if (msg.type == Constants.SPICE_MSG_DISPLAY_DRAW_FILL)
{
- var draw_fill = new SpiceMsgDisplayDrawFill(msg.data);
+ var draw_fill = new Messages.SpiceMsgDisplayDrawFill(msg.data);
- DEBUG > 1 && this.log_draw("DrawFill", draw_fill);
+ Utils.DEBUG > 1 && this.log_draw("DrawFill", draw_fill);
- if (draw_fill.data.rop_descriptor != SPICE_ROPD_OP_PUT)
+ if (draw_fill.data.rop_descriptor != Constants.SPICE_ROPD_OP_PUT)
this.log_warn("FIXME: DrawFill we don't handle ropd type: " + draw_fill.data.rop_descriptor);
if (draw_fill.data.mask.flags)
this.log_warn("FIXME: DrawFill we don't handle mask flag: " + draw_fill.data.mask.flags);
if (draw_fill.data.mask.bitmap)
this.log_warn("FIXME: DrawFill we don't handle mask");
- if (draw_fill.data.brush.type == SPICE_BRUSH_TYPE_SOLID)
+ if (draw_fill.data.brush.type == Constants.SPICE_BRUSH_TYPE_SOLID)
{
// FIXME - do brushes ever have alpha?
var color = draw_fill.data.brush.color & 0xffffff;
@@ -343,7 +353,7 @@ SpiceDisplayConn.prototype.process_channel_message = function(msg)
draw_fill.base.box.right - draw_fill.base.box.left,
draw_fill.base.box.bottom - draw_fill.base.box.top);
- if (DUMP_DRAWS && this.parent.dump_id)
+ if (Utils.DUMP_DRAWS && this.parent.dump_id)
{
var debug_canvas = document.createElement("canvas");
debug_canvas.setAttribute('width', this.surfaces[draw_fill.base.surface_id].canvas.width);
@@ -367,65 +377,65 @@ SpiceDisplayConn.prototype.process_channel_message = function(msg)
return true;
}
- if (msg.type == SPICE_MSG_DISPLAY_DRAW_OPAQUE)
+ if (msg.type == Constants.SPICE_MSG_DISPLAY_DRAW_OPAQUE)
{
this.known_unimplemented(msg.type, "Display Draw Opaque");
return true;
}
- if (msg.type == SPICE_MSG_DISPLAY_DRAW_BLEND)
+ if (msg.type == Constants.SPICE_MSG_DISPLAY_DRAW_BLEND)
{
this.known_unimplemented(msg.type, "Display Draw Blend");
return true;
}
- if (msg.type == SPICE_MSG_DISPLAY_DRAW_BLACKNESS)
+ if (msg.type == Constants.SPICE_MSG_DISPLAY_DRAW_BLACKNESS)
{
this.known_unimplemented(msg.type, "Display Draw Blackness");
return true;
}
- if (msg.type == SPICE_MSG_DISPLAY_DRAW_WHITENESS)
+ if (msg.type == Constants.SPICE_MSG_DISPLAY_DRAW_WHITENESS)
{
this.known_unimplemented(msg.type, "Display Draw Whiteness");
return true;
}
- if (msg.type == SPICE_MSG_DISPLAY_DRAW_INVERS)
+ if (msg.type == Constants.SPICE_MSG_DISPLAY_DRAW_INVERS)
{
this.known_unimplemented(msg.type, "Display Draw Invers");
return true;
}
- if (msg.type == SPICE_MSG_DISPLAY_DRAW_ROP3)
+ if (msg.type == Constants.SPICE_MSG_DISPLAY_DRAW_ROP3)
{
this.known_unimplemented(msg.type, "Display Draw ROP3");
return true;
}
- if (msg.type == SPICE_MSG_DISPLAY_DRAW_STROKE)
+ if (msg.type == Constants.SPICE_MSG_DISPLAY_DRAW_STROKE)
{
this.known_unimplemented(msg.type, "Display Draw Stroke");
return true;
}
- if (msg.type == SPICE_MSG_DISPLAY_DRAW_TRANSPARENT)
+ if (msg.type == Constants.SPICE_MSG_DISPLAY_DRAW_TRANSPARENT)
{
this.known_unimplemented(msg.type, "Display Draw Transparent");
return true;
}
- if (msg.type == SPICE_MSG_DISPLAY_DRAW_ALPHA_BLEND)
+ if (msg.type == Constants.SPICE_MSG_DISPLAY_DRAW_ALPHA_BLEND)
{
this.known_unimplemented(msg.type, "Display Draw Alpha Blend");
return true;
}
- if (msg.type == SPICE_MSG_DISPLAY_COPY_BITS)
+ if (msg.type == Constants.SPICE_MSG_DISPLAY_COPY_BITS)
{
- var copy_bits = new SpiceMsgDisplayCopyBits(msg.data);
+ var copy_bits = new Messages.SpiceMsgDisplayCopyBits(msg.data);
- DEBUG > 1 && this.log_draw("CopyBits", copy_bits);
+ Utils.DEBUG > 1 && this.log_draw("CopyBits", copy_bits);
var source_canvas = this.surfaces[copy_bits.base.surface_id].canvas;
var source_context = source_canvas.context;
@@ -442,7 +452,7 @@ SpiceDisplayConn.prototype.process_channel_message = function(msg)
//source_context.putImageData(source_img, copy_bits.base.box.left, copy_bits.base.box.top);
putImageDataWithAlpha(source_context, source_img, copy_bits.base.box.left, copy_bits.base.box.top);
- if (DUMP_DRAWS && this.parent.dump_id)
+ if (Utils.DUMP_DRAWS && this.parent.dump_id)
{
var debug_canvas = document.createElement("canvas");
debug_canvas.setAttribute('width', width);
@@ -457,36 +467,36 @@ SpiceDisplayConn.prototype.process_channel_message = function(msg)
return true;
}
- if (msg.type == SPICE_MSG_DISPLAY_INVAL_ALL_PIXMAPS)
+ if (msg.type == Constants.SPICE_MSG_DISPLAY_INVAL_ALL_PIXMAPS)
{
this.known_unimplemented(msg.type, "Display Inval All Pixmaps");
return true;
}
- if (msg.type == SPICE_MSG_DISPLAY_INVAL_PALETTE)
+ if (msg.type == Constants.SPICE_MSG_DISPLAY_INVAL_PALETTE)
{
this.known_unimplemented(msg.type, "Display Inval Palette");
return true;
}
- if (msg.type == SPICE_MSG_DISPLAY_INVAL_ALL_PALETTES)
+ if (msg.type == Constants.SPICE_MSG_DISPLAY_INVAL_ALL_PALETTES)
{
this.known_unimplemented(msg.type, "Inval All Palettes");
return true;
}
- if (msg.type == SPICE_MSG_DISPLAY_SURFACE_CREATE)
+ if (msg.type == Constants.SPICE_MSG_DISPLAY_SURFACE_CREATE)
{
if (! ("surfaces" in this))
this.surfaces = [];
- var m = new SpiceMsgSurfaceCreate(msg.data);
- DEBUG > 1 && console.log(this.type + ": MsgSurfaceCreate id " + m.surface.surface_id
+ var m = new Messages.SpiceMsgSurfaceCreate(msg.data);
+ Utils.DEBUG > 1 && console.log(this.type + ": MsgSurfaceCreate id " + m.surface.surface_id
+ "; " + m.surface.width + "x" + m.surface.height
+ "; format " + m.surface.format
+ "; flags " + m.surface.flags);
- if (m.surface.format != SPICE_SURFACE_FMT_32_xRGB &&
- m.surface.format != SPICE_SURFACE_FMT_32_ARGB)
+ if (m.surface.format != Constants.SPICE_SURFACE_FMT_32_xRGB &&
+ m.surface.format != Constants.SPICE_SURFACE_FMT_32_ARGB)
{
this.log_warn("FIXME: cannot handle surface format " + m.surface.format + " yet.");
return false;
@@ -499,14 +509,14 @@ SpiceDisplayConn.prototype.process_channel_message = function(msg)
canvas.setAttribute('tabindex', m.surface.surface_id);
canvas.context = canvas.getContext("2d");
- if (DUMP_CANVASES && this.parent.dump_id)
+ if (Utils.DUMP_CANVASES && this.parent.dump_id)
document.getElementById(this.parent.dump_id).appendChild(canvas);
m.surface.canvas = canvas;
m.surface.draw_count = 0;
this.surfaces[m.surface.surface_id] = m.surface;
- if (m.surface.flags & SPICE_SURFACE_FLAGS_PRIMARY)
+ if (m.surface.flags & Constants.SPICE_SURFACE_FLAGS_PRIMARY)
{
this.primary_surface = m.surface.surface_id;
@@ -521,18 +531,18 @@ SpiceDisplayConn.prototype.process_channel_message = function(msg)
return true;
}
- if (msg.type == SPICE_MSG_DISPLAY_SURFACE_DESTROY)
+ if (msg.type == Constants.SPICE_MSG_DISPLAY_SURFACE_DESTROY)
{
- var m = new SpiceMsgSurfaceDestroy(msg.data);
- DEBUG > 1 && console.log(this.type + ": MsgSurfaceDestroy id " + m.surface_id);
+ var m = new Messages.SpiceMsgSurfaceDestroy(msg.data);
+ Utils.DEBUG > 1 && console.log(this.type + ": MsgSurfaceDestroy id " + m.surface_id);
this.delete_surface(m.surface_id);
return true;
}
- if (msg.type == SPICE_MSG_DISPLAY_STREAM_CREATE)
+ if (msg.type == Constants.SPICE_MSG_DISPLAY_STREAM_CREATE)
{
- var m = new SpiceMsgDisplayStreamCreate(msg.data);
- STREAM_DEBUG > 0 && console.log(this.type + ": MsgStreamCreate id" + m.id + "; type " + m.codec_type +
+ var m = new Messages.SpiceMsgDisplayStreamCreate(msg.data);
+ Utils.STREAM_DEBUG > 0 && console.log(this.type + ": MsgStreamCreate id" + m.id + "; type " + m.codec_type +
"; width " + m.stream_width + "; height " + m.stream_height +
"; left " + m.dest.left + "; top " + m.dest.top
);
@@ -543,7 +553,7 @@ SpiceDisplayConn.prototype.process_channel_message = function(msg)
else
this.streams[m.id] = m;
- if (m.codec_type == SPICE_VIDEO_CODEC_TYPE_VP8)
+ if (m.codec_type == Constants.SPICE_VIDEO_CODEC_TYPE_VP8)
{
var media = new MediaSource();
var v = document.createElement("video");
@@ -579,21 +589,21 @@ SpiceDisplayConn.prototype.process_channel_message = function(msg)
media.spiceconn = this;
v.spice_stream = s;
}
- else if (m.codec_type == SPICE_VIDEO_CODEC_TYPE_MJPEG)
+ else if (m.codec_type == Constants.SPICE_VIDEO_CODEC_TYPE_MJPEG)
this.streams[m.id].frames_loading = 0;
else
console.log("Unhandled stream codec: "+m.codec_type);
return true;
}
- if (msg.type == SPICE_MSG_DISPLAY_STREAM_DATA ||
- msg.type == SPICE_MSG_DISPLAY_STREAM_DATA_SIZED)
+ if (msg.type == Constants.SPICE_MSG_DISPLAY_STREAM_DATA ||
+ msg.type == Constants.SPICE_MSG_DISPLAY_STREAM_DATA_SIZED)
{
var m;
- if (msg.type == SPICE_MSG_DISPLAY_STREAM_DATA_SIZED)
- m = new SpiceMsgDisplayStreamDataSized(msg.data);
+ if (msg.type == Constants.SPICE_MSG_DISPLAY_STREAM_DATA_SIZED)
+ m = new Messages.SpiceMsgDisplayStreamDataSized(msg.data);
else
- m = new SpiceMsgDisplayStreamData(msg.data);
+ m = new Messages.SpiceMsgDisplayStreamData(msg.data);
if (!this.streams[m.base.id])
{
@@ -603,20 +613,20 @@ SpiceDisplayConn.prototype.process_channel_message = function(msg)
var time_until_due = m.base.multi_media_time - this.parent.relative_now();
- if (this.streams[m.base.id].codec_type === SPICE_VIDEO_CODEC_TYPE_MJPEG)
+ if (this.streams[m.base.id].codec_type === Constants.SPICE_VIDEO_CODEC_TYPE_MJPEG)
process_mjpeg_stream_data(this, m, time_until_due);
- if (this.streams[m.base.id].codec_type === SPICE_VIDEO_CODEC_TYPE_VP8)
+ if (this.streams[m.base.id].codec_type === Constants.SPICE_VIDEO_CODEC_TYPE_VP8)
process_video_stream_data(this.streams[m.base.id], m);
return true;
}
- if (msg.type == SPICE_MSG_DISPLAY_STREAM_ACTIVATE_REPORT)
+ if (msg.type == Constants.SPICE_MSG_DISPLAY_STREAM_ACTIVATE_REPORT)
{
- var m = new SpiceMsgDisplayStreamActivateReport(msg.data);
+ var m = new Messages.SpiceMsgDisplayStreamActivateReport(msg.data);
- var report = new SpiceMsgcDisplayStreamReport(m.stream_id, m.unique_id);
+ var report = new Messages.SpiceMsgcDisplayStreamReport(m.stream_id, m.unique_id);
if (this.streams[m.stream_id])
{
this.streams[m.stream_id].report = report;
@@ -627,20 +637,20 @@ SpiceDisplayConn.prototype.process_channel_message = function(msg)
return true;
}
- if (msg.type == SPICE_MSG_DISPLAY_STREAM_CLIP)
+ if (msg.type == Constants.SPICE_MSG_DISPLAY_STREAM_CLIP)
{
- var m = new SpiceMsgDisplayStreamClip(msg.data);
- STREAM_DEBUG > 1 && console.log(this.type + ": MsgStreamClip id" + m.id);
+ var m = new Messages.SpiceMsgDisplayStreamClip(msg.data);
+ Utils.STREAM_DEBUG > 1 && console.log(this.type + ": MsgStreamClip id" + m.id);
this.streams[m.id].clip = m.clip;
return true;
}
- if (msg.type == SPICE_MSG_DISPLAY_STREAM_DESTROY)
+ if (msg.type == Constants.SPICE_MSG_DISPLAY_STREAM_DESTROY)
{
- var m = new SpiceMsgDisplayStreamDestroy(msg.data);
- STREAM_DEBUG > 0 && console.log(this.type + ": MsgStreamDestroy id" + m.id);
+ var m = new Messages.SpiceMsgDisplayStreamDestroy(msg.data);
+ Utils.STREAM_DEBUG > 0 && console.log(this.type + ": MsgStreamDestroy id" + m.id);
- if (this.streams[m.id].codec_type == SPICE_VIDEO_CODEC_TYPE_VP8)
+ if (this.streams[m.id].codec_type == Constants.SPICE_VIDEO_CODEC_TYPE_VP8)
{
document.getElementById(this.parent.screen_id).removeChild(this.streams[m.id].video);
this.streams[m.id].source_buffer = null;
@@ -651,30 +661,30 @@ SpiceDisplayConn.prototype.process_channel_message = function(msg)
return true;
}
- if (msg.type == SPICE_MSG_DISPLAY_STREAM_DESTROY_ALL)
+ if (msg.type == Constants.SPICE_MSG_DISPLAY_STREAM_DESTROY_ALL)
{
this.known_unimplemented(msg.type, "Display Stream Destroy All");
return true;
}
- if (msg.type == SPICE_MSG_DISPLAY_INVAL_LIST)
+ if (msg.type == Constants.SPICE_MSG_DISPLAY_INVAL_LIST)
{
- var m = new SpiceMsgDisplayInvalList(msg.data);
+ var m = new Messages.SpiceMsgDisplayInvalList(msg.data);
var i;
- DEBUG > 1 && console.log(this.type + ": MsgInvalList " + m.count + " items");
+ Utils.DEBUG > 1 && console.log(this.type + ": MsgInvalList " + m.count + " items");
for (i = 0; i < m.count; i++)
if (this.cache[m.resources[i].id] != undefined)
delete this.cache[m.resources[i].id];
return true;
}
- if (msg.type == SPICE_MSG_DISPLAY_MONITORS_CONFIG)
+ if (msg.type == Constants.SPICE_MSG_DISPLAY_MONITORS_CONFIG)
{
this.known_unimplemented(msg.type, "Display Monitors Config");
return true;
}
- if (msg.type == SPICE_MSG_DISPLAY_DRAW_COMPOSITE)
+ if (msg.type == Constants.SPICE_MSG_DISPLAY_DRAW_COMPOSITE)
{
this.known_unimplemented(msg.type, "Display Draw Composite");
return true;
@@ -686,7 +696,7 @@ SpiceDisplayConn.prototype.process_channel_message = function(msg)
SpiceDisplayConn.prototype.delete_surface = function(surface_id)
{
var canvas = document.getElementById("spice_surface_" + surface_id);
- if (DUMP_CANVASES && this.parent.dump_id)
+ if (Utils.DUMP_CANVASES && this.parent.dump_id)
document.getElementById(this.parent.dump_id).removeChild(canvas);
if (this.primary_surface == surface_id)
{
@@ -707,7 +717,7 @@ SpiceDisplayConn.prototype.draw_copy_helper = function(o)
{
/* FIXME - This is based on trial + error, not a serious thoughtful
analysis of what Spice requires. See display.js for more. */
- if (this.surfaces[o.base.surface_id].format == SPICE_SURFACE_FMT_32_xRGB)
+ if (this.surfaces[o.base.surface_id].format == Constants.SPICE_SURFACE_FMT_32_xRGB)
{
stripAlpha(o.image_data);
canvas.context.putImageData(o.image_data, o.base.box.left, o.base.box.top);
@@ -724,14 +734,14 @@ SpiceDisplayConn.prototype.draw_copy_helper = function(o)
this.log_warn("FIXME: DrawCopy not shifting draw copies just yet...");
}
- if (o.descriptor && (o.descriptor.flags & SPICE_IMAGE_FLAGS_CACHE_ME))
+ if (o.descriptor && (o.descriptor.flags & Constants.SPICE_IMAGE_FLAGS_CACHE_ME))
{
if (! ("cache" in this))
this.cache = {};
this.cache[o.descriptor.id] = o.image_data;
}
- if (DUMP_DRAWS && this.parent.dump_id)
+ if (Utils.DUMP_DRAWS && this.parent.dump_id)
{
var debug_canvas = document.createElement("canvas");
debug_canvas.setAttribute('width', o.image_data.width);
@@ -794,9 +804,9 @@ SpiceDisplayConn.prototype.log_draw = function(prefix, draw)
if (draw.data.brush)
{
- if (draw.data.brush.type == SPICE_BRUSH_TYPE_SOLID)
+ if (draw.data.brush.type == Constants.SPICE_BRUSH_TYPE_SOLID)
str += "; brush.color 0x" + draw.data.brush.color.toString(16);
- if (draw.data.brush.type == SPICE_BRUSH_TYPE_PATTERN)
+ if (draw.data.brush.type == Constants.SPICE_BRUSH_TYPE_PATTERN)
{
str += "; brush.pat ";
if (draw.data.brush.pattern.pat != null)
@@ -830,15 +840,15 @@ SpiceDisplayConn.prototype.hook_events = function()
{
var canvas = this.surfaces[this.primary_surface].canvas;
canvas.sc = this.parent;
- canvas.addEventListener('mousemove', handle_mousemove);
- canvas.addEventListener('mousedown', handle_mousedown);
- canvas.addEventListener('contextmenu', handle_contextmenu);
- canvas.addEventListener('mouseup', handle_mouseup);
- canvas.addEventListener('keydown', handle_keydown);
- canvas.addEventListener('keyup', handle_keyup);
+ canvas.addEventListener('mousemove', Inputs.handle_mousemove);
+ canvas.addEventListener('mousedown', Inputs.handle_mousedown);
+ canvas.addEventListener('contextmenu', Inputs.handle_contextmenu);
+ canvas.addEventListener('mouseup', Inputs.handle_mouseup);
+ canvas.addEventListener('keydown', Inputs.handle_keydown);
+ canvas.addEventListener('keyup', Inputs.handle_keyup);
canvas.addEventListener('mouseout', handle_mouseout);
canvas.addEventListener('mouseover', handle_mouseover);
- canvas.addEventListener('wheel', handle_mousewheel);
+ canvas.addEventListener('wheel', Inputs.handle_mousewheel);
canvas.focus();
}
}
@@ -848,15 +858,15 @@ SpiceDisplayConn.prototype.unhook_events = function()
if (this.primary_surface !== undefined)
{
var canvas = this.surfaces[this.primary_surface].canvas;
- canvas.removeEventListener('mousemove', handle_mousemove);
- canvas.removeEventListener('mousedown', handle_mousedown);
- canvas.removeEventListener('contextmenu', handle_contextmenu);
- canvas.removeEventListener('mouseup', handle_mouseup);
- canvas.removeEventListener('keydown', handle_keydown);
- canvas.removeEventListener('keyup', handle_keyup);
+ canvas.removeEventListener('mousemove', Inputs.handle_mousemove);
+ canvas.removeEventListener('mousedown', Inputs.handle_mousedown);
+ canvas.removeEventListener('contextmenu', Inputs.handle_contextmenu);
+ canvas.removeEventListener('mouseup', Inputs.handle_mouseup);
+ canvas.removeEventListener('keydown', Inputs.handle_keydown);
+ canvas.removeEventListener('keyup', Inputs.handle_keyup);
canvas.removeEventListener('mouseout', handle_mouseout);
canvas.removeEventListener('mouseover', handle_mouseover);
- canvas.removeEventListener('wheel', handle_mousewheel);
+ canvas.removeEventListener('wheel', Inputs.handle_mousewheel);
}
}
@@ -902,7 +912,7 @@ function handle_draw_jpeg_onload()
// This can happen; if the jpeg image loads after our surface
// has been destroyed (e.g. open a menu, close it quickly),
// we'll find we have no surface.
- DEBUG > 2 && this.o.sc.log_info("Discarding jpeg; presumed lost surface " + this.o.base.surface_id);
+ Utils.DEBUG > 2 && this.o.sc.log_info("Discarding jpeg; presumed lost surface " + this.o.base.surface_id);
temp_canvas = document.createElement("canvas");
temp_canvas.setAttribute('width', this.o.base.box.right);
temp_canvas.setAttribute('height', this.o.base.box.bottom);
@@ -924,7 +934,7 @@ function handle_draw_jpeg_onload()
context.drawImage(c, this.o.base.box.left, this.o.base.box.top);
if (this.o.descriptor &&
- (this.o.descriptor.flags & SPICE_IMAGE_FLAGS_CACHE_ME))
+ (this.o.descriptor.flags & Constants.SPICE_IMAGE_FLAGS_CACHE_ME))
{
if (! ("cache" in this.o.sc))
this.o.sc.cache = {};
@@ -942,10 +952,10 @@ function handle_draw_jpeg_onload()
// Give the Garbage collector a clue to recycle this; avoids
// fairly massive memory leaks during video playback
this.onload = undefined;
- this.src = EMPTY_GIF_IMAGE;
+ this.src = Utils.EMPTY_GIF_IMAGE;
if (this.o.descriptor &&
- (this.o.descriptor.flags & SPICE_IMAGE_FLAGS_CACHE_ME))
+ (this.o.descriptor.flags & Constants.SPICE_IMAGE_FLAGS_CACHE_ME))
{
if (! ("cache" in this.o.sc))
this.o.sc.cache = {};
@@ -959,7 +969,7 @@ function handle_draw_jpeg_onload()
if (temp_canvas == null)
{
- if (DUMP_DRAWS && this.o.sc.parent.dump_id)
+ if (Utils.DUMP_DRAWS && this.o.sc.parent.dump_id)
{
var debug_canvas = document.createElement("canvas");
debug_canvas.setAttribute('id', this.o.tag + "." +
@@ -998,7 +1008,7 @@ function process_mjpeg_stream_data(sc, m, time_until_due)
tmpstr += '0';
tmpstr += m.data[i].toString(16);
}
- var strm_base = new SpiceMsgDisplayBase();
+ var strm_base = new Messages.SpiceMsgDisplayBase();
strm_base.surface_id = sc.streams[m.base.id].surface_id;
strm_base.box = m.dest || sc.streams[m.base.id].dest;
strm_base.clip = sc.streams[m.base.id].clip;
@@ -1028,8 +1038,8 @@ function process_stream_data_report(sc, id, msg_mmtime, time_until_due)
sc.streams[id].report.end_frame_mm_time = msg_mmtime;
sc.streams[id].report.last_frame_delay = time_until_due;
- var msg = new SpiceMiniData();
- msg.build_msg(SPICE_MSGC_DISPLAY_STREAM_REPORT, sc.streams[id].report);
+ var msg = new Messages.SpiceMiniData();
+ msg.build_msg(Constants.SPICE_MSGC_DISPLAY_STREAM_REPORT, sc.streams[id].report);
sc.send_msg(msg);
sc.streams[id].report.start_frame_mm_time = 0;
@@ -1046,10 +1056,10 @@ function handle_video_source_open(e)
if (stream.source_buffer)
return;
- var s = this.addSourceBuffer(SPICE_VP8_CODEC);
+ var s = this.addSourceBuffer(Webm.Constants.SPICE_VP8_CODEC);
if (! s)
{
- p.log_err('Codec ' + SPICE_VP8_CODEC + ' not available.');
+ p.log_err('Codec ' + Webm.Constants.SPICE_VP8_CODEC + ' not available.');
return;
}
@@ -1059,9 +1069,9 @@ function handle_video_source_open(e)
listen_for_video_events(stream);
- var h = new webm_Header();
- var te = new webm_VideoTrackEntry(this.stream.stream_width, this.stream.stream_height);
- var t = new webm_Tracks(te);
+ var h = new Webm.Header();
+ var te = new Webm.VideoTrackEntry(this.stream.stream_width, this.stream.stream_height);
+ var t = new Webm.Tracks(te);
var mb = new ArrayBuffer(h.buffer_size() + t.buffer_size())
@@ -1123,7 +1133,7 @@ function handle_append_video_buffer_done(e)
if (!stream.video)
{
- if (STREAM_DEBUG > 0)
+ if (Utils.STREAM_DEBUG > 0)
console.log("Stream id " + stream.id + " received updateend after video is gone.");
return;
}
@@ -1136,8 +1146,8 @@ function handle_append_video_buffer_done(e)
stream.video.currentTime = stream.video.buffered.start(stream.video.buffered.length - 1);
}
- if (STREAM_DEBUG > 1)
- console.log(stream.video.currentTime + ":id " + stream.id + " updateend " + dump_media_element(stream.video));
+ if (Utils.STREAM_DEBUG > 1)
+ console.log(stream.video.currentTime + ":id " + stream.id + " updateend " + Utils.dump_media_element(stream.video));
}
function handle_video_buffer_error(e)
@@ -1167,7 +1177,7 @@ function push_or_queue(stream, msg, mb)
function video_simple_block(stream, msg, keyframe)
{
- var simple = new webm_SimpleBlock(msg.base.multi_media_time - stream.cluster_time, msg.data, keyframe);
+ var simple = new Webm.SimpleBlock(msg.base.multi_media_time - stream.cluster_time, msg.data, keyframe);
var mb = new ArrayBuffer(simple.buffer_size());
simple.to_buffer(mb);
@@ -1177,7 +1187,7 @@ function video_simple_block(stream, msg, keyframe)
function new_video_cluster(stream, msg)
{
stream.cluster_time = msg.base.multi_media_time;
- var c = new webm_Cluster(stream.cluster_time - stream.start_time, msg.data);
+ var c = new Webm.Cluster(stream.cluster_time - stream.start_time, msg.data);
var mb = new ArrayBuffer(c.buffer_size());
c.to_buffer(mb);
@@ -1195,7 +1205,7 @@ function process_video_stream_data(stream, msg)
new_video_cluster(stream, msg);
}
- else if (msg.base.multi_media_time - stream.cluster_time >= MAX_CLUSTER_TIME)
+ else if (msg.base.multi_media_time - stream.cluster_time >= Webm.Constants.MAX_CLUSTER_TIME)
new_video_cluster(stream, msg);
else
video_simple_block(stream, msg, false);
@@ -1206,18 +1216,18 @@ function video_handle_event_debug(e)
var s = this.spice_stream;
if (s.video)
{
- if (STREAM_DEBUG > 0 || s.video.buffered.len > 1)
+ if (Utils.STREAM_DEBUG > 0 || s.video.buffered.len > 1)
console.log(s.video.currentTime + ":id " + s.id + " event " + e.type +
- dump_media_element(s.video));
+ Utils.dump_media_element(s.video));
}
- if (STREAM_DEBUG > 1 && s.media)
- console.log(" media_source " + dump_media_source(s.media));
+ if (Utils.STREAM_DEBUG > 1 && s.media)
+ console.log(" media_source " + Utils.dump_media_source(s.media));
- if (STREAM_DEBUG > 1 && s.source_buffer)
- console.log(" source_buffer " + dump_source_buffer(s.source_buffer));
+ if (Utils.STREAM_DEBUG > 1 && s.source_buffer)
+ console.log(" source_buffer " + Utils.dump_source_buffer(s.source_buffer));
- if (STREAM_DEBUG > 1 || s.queue.length > 1)
+ if (Utils.STREAM_DEBUG > 1 || s.queue.length > 1)
console.log(' queue len ' + s.queue.length + '; append_okay: ' + s.append_okay);
}
@@ -1246,8 +1256,12 @@ function listen_for_video_events(stream)
];
video_0_events.forEach(video_debug_listen_for_one_event, stream.video);
- if (STREAM_DEBUG > 0)
+ if (Utils.STREAM_DEBUG > 0)
video_1_events.forEach(video_debug_listen_for_one_event, stream.video);
- if (STREAM_DEBUG > 1)
+ if (Utils.STREAM_DEBUG > 1)
video_2_events.forEach(video_debug_listen_for_one_event, stream.video);
}
+
+export {
+ SpiceDisplayConn,
+};
diff --git a/enums.js b/enums.js
index b6e013c..9d31148 100644
--- a/enums.js
+++ b/enums.js
@@ -23,355 +23,357 @@
** enums.js
** 'constants' for Spice
**--------------------------------------------------------------------------*/
-var SPICE_MAGIC = "REDQ";
-var SPICE_VERSION_MAJOR = 2;
-var SPICE_VERSION_MINOR = 2;
+export var Constants = {
+ SPICE_MAGIC : "REDQ",
+ SPICE_VERSION_MAJOR : 2,
+ SPICE_VERSION_MINOR : 2,
-var SPICE_CONNECT_TIMEOUT = (30 * 1000);
+ SPICE_CONNECT_TIMEOUT : (30 * 1000),
-var SPICE_COMMON_CAP_PROTOCOL_AUTH_SELECTION = 0;
-var SPICE_COMMON_CAP_AUTH_SPICE = 1;
-var SPICE_COMMON_CAP_AUTH_SASL = 2;
-var SPICE_COMMON_CAP_MINI_HEADER = 3;
+ SPICE_COMMON_CAP_PROTOCOL_AUTH_SELECTION : 0,
+ SPICE_COMMON_CAP_AUTH_SPICE : 1,
+ SPICE_COMMON_CAP_AUTH_SASL : 2,
+ SPICE_COMMON_CAP_MINI_HEADER : 3,
-var SPICE_TICKET_KEY_PAIR_LENGTH = 1024;
-var SPICE_TICKET_PUBKEY_BYTES = (SPICE_TICKET_KEY_PAIR_LENGTH / 8 + 34);
+ SPICE_TICKET_KEY_PAIR_LENGTH : 1024,
+ SPICE_TICKET_PUBKEY_BYTES : (1024 / 8 +34), // (SPICE_TICKET_KEY_PAIR_LENGTH / 8 + 34)
-var SPICE_LINK_ERR_OK = 0,
- SPICE_LINK_ERR_ERROR = 1,
- SPICE_LINK_ERR_INVALID_MAGIC = 2,
- SPICE_LINK_ERR_INVALID_DATA = 3,
- SPICE_LINK_ERR_VERSION_MISMATCH = 4,
- SPICE_LINK_ERR_NEED_SECURED = 5,
- SPICE_LINK_ERR_NEED_UNSECURED = 6,
- SPICE_LINK_ERR_PERMISSION_DENIED = 7,
- SPICE_LINK_ERR_BAD_CONNECTION_ID = 8,
- SPICE_LINK_ERR_CHANNEL_NOT_AVAILABLE = 9;
+ SPICE_LINK_ERR_OK : 0,
+ SPICE_LINK_ERR_ERROR : 1,
+ SPICE_LINK_ERR_INVALID_MAGIC : 2,
+ SPICE_LINK_ERR_INVALID_DATA : 3,
+ SPICE_LINK_ERR_VERSION_MISMATCH : 4,
+ SPICE_LINK_ERR_NEED_SECURED : 5,
+ SPICE_LINK_ERR_NEED_UNSECURED : 6,
+ SPICE_LINK_ERR_PERMISSION_DENIED : 7,
+ SPICE_LINK_ERR_BAD_CONNECTION_ID : 8,
+ SPICE_LINK_ERR_CHANNEL_NOT_AVAILABLE : 9,
-var SPICE_MSG_MIGRATE = 1;
-var SPICE_MSG_MIGRATE_DATA = 2;
-var SPICE_MSG_SET_ACK = 3;
-var SPICE_MSG_PING = 4;
-var SPICE_MSG_WAIT_FOR_CHANNELS = 5;
-var SPICE_MSG_DISCONNECTING = 6;
-var SPICE_MSG_NOTIFY = 7;
-var SPICE_MSG_LIST = 8;
+ SPICE_MSG_MIGRATE : 1,
+ SPICE_MSG_MIGRATE_DATA : 2,
+ SPICE_MSG_SET_ACK : 3,
+ SPICE_MSG_PING : 4,
+ SPICE_MSG_WAIT_FOR_CHANNELS : 5,
+ SPICE_MSG_DISCONNECTING : 6,
+ SPICE_MSG_NOTIFY : 7,
+ SPICE_MSG_LIST : 8,
-var SPICE_MSG_MAIN_MIGRATE_BEGIN = 101;
-var SPICE_MSG_MAIN_MIGRATE_CANCEL = 102;
-var SPICE_MSG_MAIN_INIT = 103;
-var SPICE_MSG_MAIN_CHANNELS_LIST = 104;
-var SPICE_MSG_MAIN_MOUSE_MODE = 105;
-var SPICE_MSG_MAIN_MULTI_MEDIA_TIME = 106;
-var SPICE_MSG_MAIN_AGENT_CONNECTED = 107;
-var SPICE_MSG_MAIN_AGENT_DISCONNECTED = 108;
-var SPICE_MSG_MAIN_AGENT_DATA = 109;
-var SPICE_MSG_MAIN_AGENT_TOKEN = 110;
-var SPICE_MSG_MAIN_MIGRATE_SWITCH_HOST = 111;
-var SPICE_MSG_MAIN_MIGRATE_END = 112;
-var SPICE_MSG_MAIN_NAME = 113;
-var SPICE_MSG_MAIN_UUID = 114;
-var SPICE_MSG_MAIN_AGENT_CONNECTED_TOKENS = 115;
-var SPICE_MSG_MAIN_MIGRATE_BEGIN_SEAMLESS = 116;
-var SPICE_MSG_MAIN_MIGRATE_DST_SEAMLESS_ACK = 117;
-var SPICE_MSG_MAIN_MIGRATE_DST_SEAMLESS_NACK = 118;
-var SPICE_MSG_END_MAIN = 119;
+ SPICE_MSG_MAIN_MIGRATE_BEGIN : 101,
+ SPICE_MSG_MAIN_MIGRATE_CANCEL : 102,
+ SPICE_MSG_MAIN_INIT : 103,
+ SPICE_MSG_MAIN_CHANNELS_LIST : 104,
+ SPICE_MSG_MAIN_MOUSE_MODE : 105,
+ SPICE_MSG_MAIN_MULTI_MEDIA_TIME : 106,
+ SPICE_MSG_MAIN_AGENT_CONNECTED : 107,
+ SPICE_MSG_MAIN_AGENT_DISCONNECTED : 108,
+ SPICE_MSG_MAIN_AGENT_DATA : 109,
+ SPICE_MSG_MAIN_AGENT_TOKEN : 110,
+ SPICE_MSG_MAIN_MIGRATE_SWITCH_HOST : 111,
+ SPICE_MSG_MAIN_MIGRATE_END : 112,
+ SPICE_MSG_MAIN_NAME : 113,
+ SPICE_MSG_MAIN_UUID : 114,
+ SPICE_MSG_MAIN_AGENT_CONNECTED_TOKENS : 115,
+ SPICE_MSG_MAIN_MIGRATE_BEGIN_SEAMLESS : 116,
+ SPICE_MSG_MAIN_MIGRATE_DST_SEAMLESS_ACK : 117,
+ SPICE_MSG_MAIN_MIGRATE_DST_SEAMLESS_NACK : 118,
+ SPICE_MSG_END_MAIN : 119,
-var SPICE_MSGC_ACK_SYNC = 1;
-var SPICE_MSGC_ACK = 2;
-var SPICE_MSGC_PONG = 3;
-var SPICE_MSGC_MIGRATE_FLUSH_MARK = 4;
-var SPICE_MSGC_MIGRATE_DATA = 5;
-var SPICE_MSGC_DISCONNECTING = 6;
+ SPICE_MSGC_ACK_SYNC : 1,
+ SPICE_MSGC_ACK : 2,
+ SPICE_MSGC_PONG : 3,
+ SPICE_MSGC_MIGRATE_FLUSH_MARK : 4,
+ SPICE_MSGC_MIGRATE_DATA : 5,
+ SPICE_MSGC_DISCONNECTING : 6,
-var SPICE_MSGC_MAIN_CLIENT_INFO = 101;
-var SPICE_MSGC_MAIN_MIGRATE_CONNECTED = 102;
-var SPICE_MSGC_MAIN_MIGRATE_CONNECT_ERROR = 103;
-var SPICE_MSGC_MAIN_ATTACH_CHANNELS = 104;
-var SPICE_MSGC_MAIN_MOUSE_MODE_REQUEST = 105;
-var SPICE_MSGC_MAIN_AGENT_START = 106;
-var SPICE_MSGC_MAIN_AGENT_DATA = 107;
-var SPICE_MSGC_MAIN_AGENT_TOKEN = 108;
-var SPICE_MSGC_MAIN_MIGRATE_END = 109;
-var SPICE_MSGC_END_MAIN = 110;
+ SPICE_MSGC_MAIN_CLIENT_INFO : 101,
+ SPICE_MSGC_MAIN_MIGRATE_CONNECTED : 102,
+ SPICE_MSGC_MAIN_MIGRATE_CONNECT_ERROR : 103,
+ SPICE_MSGC_MAIN_ATTACH_CHANNELS : 104,
+ SPICE_MSGC_MAIN_MOUSE_MODE_REQUEST : 105,
+ SPICE_MSGC_MAIN_AGENT_START : 106,
+ SPICE_MSGC_MAIN_AGENT_DATA : 107,
+ SPICE_MSGC_MAIN_AGENT_TOKEN : 108,
+ SPICE_MSGC_MAIN_MIGRATE_END : 109,
+ SPICE_MSGC_END_MAIN : 110,
-var SPICE_MSG_DISPLAY_MODE = 101;
-var SPICE_MSG_DISPLAY_MARK = 102;
-var SPICE_MSG_DISPLAY_RESET = 103;
-var SPICE_MSG_DISPLAY_COPY_BITS = 104;
-var SPICE_MSG_DISPLAY_INVAL_LIST = 105;
-var SPICE_MSG_DISPLAY_INVAL_ALL_PIXMAPS = 106;
-var SPICE_MSG_DISPLAY_INVAL_PALETTE = 107;
-var SPICE_MSG_DISPLAY_INVAL_ALL_PALETTES= 108;
+ SPICE_MSG_DISPLAY_MODE : 101,
+ SPICE_MSG_DISPLAY_MARK : 102,
+ SPICE_MSG_DISPLAY_RESET : 103,
+ SPICE_MSG_DISPLAY_COPY_BITS : 104,
+ SPICE_MSG_DISPLAY_INVAL_LIST : 105,
+ SPICE_MSG_DISPLAY_INVAL_ALL_PIXMAPS : 106,
+ SPICE_MSG_DISPLAY_INVAL_PALETTE : 107,
+ SPICE_MSG_DISPLAY_INVAL_ALL_PALETTES: 108,
-var SPICE_MSG_DISPLAY_STREAM_CREATE = 122;
-var SPICE_MSG_DISPLAY_STREAM_DATA = 123;
-var SPICE_MSG_DISPLAY_STREAM_CLIP = 124;
-var SPICE_MSG_DISPLAY_STREAM_DESTROY = 125;
-var SPICE_MSG_DISPLAY_STREAM_DESTROY_ALL= 126;
+ SPICE_MSG_DISPLAY_STREAM_CREATE : 122,
+ SPICE_MSG_DISPLAY_STREAM_DATA : 123,
+ SPICE_MSG_DISPLAY_STREAM_CLIP : 124,
+ SPICE_MSG_DISPLAY_STREAM_DESTROY : 125,
+ SPICE_MSG_DISPLAY_STREAM_DESTROY_ALL: 126,
-var SPICE_MSG_DISPLAY_DRAW_FILL = 302;
-var SPICE_MSG_DISPLAY_DRAW_OPAQUE = 303;
-var SPICE_MSG_DISPLAY_DRAW_COPY = 304;
-var SPICE_MSG_DISPLAY_DRAW_BLEND = 305;
-var SPICE_MSG_DISPLAY_DRAW_BLACKNESS = 306;
-var SPICE_MSG_DISPLAY_DRAW_WHITENESS = 307;
-var SPICE_MSG_DISPLAY_DRAW_INVERS = 308;
-var SPICE_MSG_DISPLAY_DRAW_ROP3 = 309;
-var SPICE_MSG_DISPLAY_DRAW_STROKE = 310;
-var SPICE_MSG_DISPLAY_DRAW_TEXT = 311;
-var SPICE_MSG_DISPLAY_DRAW_TRANSPARENT = 312;
-var SPICE_MSG_DISPLAY_DRAW_ALPHA_BLEND = 313;
-var SPICE_MSG_DISPLAY_SURFACE_CREATE = 314;
-var SPICE_MSG_DISPLAY_SURFACE_DESTROY = 315;
-var SPICE_MSG_DISPLAY_STREAM_DATA_SIZED = 316;
-var SPICE_MSG_DISPLAY_MONITORS_CONFIG = 317;
-var SPICE_MSG_DISPLAY_DRAW_COMPOSITE = 318;
-var SPICE_MSG_DISPLAY_STREAM_ACTIVATE_REPORT = 319;
+ SPICE_MSG_DISPLAY_DRAW_FILL : 302,
+ SPICE_MSG_DISPLAY_DRAW_OPAQUE : 303,
+ SPICE_MSG_DISPLAY_DRAW_COPY : 304,
+ SPICE_MSG_DISPLAY_DRAW_BLEND : 305,
+ SPICE_MSG_DISPLAY_DRAW_BLACKNESS : 306,
+ SPICE_MSG_DISPLAY_DRAW_WHITENESS : 307,
+ SPICE_MSG_DISPLAY_DRAW_INVERS : 308,
+ SPICE_MSG_DISPLAY_DRAW_ROP3 : 309,
+ SPICE_MSG_DISPLAY_DRAW_STROKE : 310,
+ SPICE_MSG_DISPLAY_DRAW_TEXT : 311,
+ SPICE_MSG_DISPLAY_DRAW_TRANSPARENT : 312,
+ SPICE_MSG_DISPLAY_DRAW_ALPHA_BLEND : 313,
+ SPICE_MSG_DISPLAY_SURFACE_CREATE : 314,
+ SPICE_MSG_DISPLAY_SURFACE_DESTROY : 315,
+ SPICE_MSG_DISPLAY_STREAM_DATA_SIZED : 316,
+ SPICE_MSG_DISPLAY_MONITORS_CONFIG : 317,
+ SPICE_MSG_DISPLAY_DRAW_COMPOSITE : 318,
+ SPICE_MSG_DISPLAY_STREAM_ACTIVATE_REPORT : 319,
-var SPICE_MSGC_DISPLAY_INIT = 101;
-var SPICE_MSGC_DISPLAY_STREAM_REPORT = 102;
+ SPICE_MSGC_DISPLAY_INIT : 101,
+ SPICE_MSGC_DISPLAY_STREAM_REPORT : 102,
-var SPICE_MSG_INPUTS_INIT = 101;
-var SPICE_MSG_INPUTS_KEY_MODIFIERS = 102;
+ SPICE_MSG_INPUTS_INIT : 101,
+ SPICE_MSG_INPUTS_KEY_MODIFIERS : 102,
-var SPICE_MSG_INPUTS_MOUSE_MOTION_ACK = 111;
+ SPICE_MSG_INPUTS_MOUSE_MOTION_ACK : 111,
-var SPICE_MSGC_INPUTS_KEY_DOWN = 101;
-var SPICE_MSGC_INPUTS_KEY_UP = 102;
-var SPICE_MSGC_INPUTS_KEY_MODIFIERS = 103;
+ SPICE_MSGC_INPUTS_KEY_DOWN : 101,
+ SPICE_MSGC_INPUTS_KEY_UP : 102,
+ SPICE_MSGC_INPUTS_KEY_MODIFIERS : 103,
-var SPICE_MSGC_INPUTS_MOUSE_MOTION = 111;
-var SPICE_MSGC_INPUTS_MOUSE_POSITION = 112;
-var SPICE_MSGC_INPUTS_MOUSE_PRESS = 113;
-var SPICE_MSGC_INPUTS_MOUSE_RELEASE = 114;
+ SPICE_MSGC_INPUTS_MOUSE_MOTION : 111,
+ SPICE_MSGC_INPUTS_MOUSE_POSITION : 112,
+ SPICE_MSGC_INPUTS_MOUSE_PRESS : 113,
+ SPICE_MSGC_INPUTS_MOUSE_RELEASE : 114,
-var SPICE_MSG_CURSOR_INIT = 101;
-var SPICE_MSG_CURSOR_RESET = 102;
-var SPICE_MSG_CURSOR_SET = 103;
-var SPICE_MSG_CURSOR_MOVE = 104;
-var SPICE_MSG_CURSOR_HIDE = 105;
-var SPICE_MSG_CURSOR_TRAIL = 106;
-var SPICE_MSG_CURSOR_INVAL_ONE = 107;
-var SPICE_MSG_CURSOR_INVAL_ALL = 108;
+ SPICE_MSG_CURSOR_INIT : 101,
+ SPICE_MSG_CURSOR_RESET : 102,
+ SPICE_MSG_CURSOR_SET : 103,
+ SPICE_MSG_CURSOR_MOVE : 104,
+ SPICE_MSG_CURSOR_HIDE : 105,
+ SPICE_MSG_CURSOR_TRAIL : 106,
+ SPICE_MSG_CURSOR_INVAL_ONE : 107,
+ SPICE_MSG_CURSOR_INVAL_ALL : 108,
-var SPICE_MSG_PLAYBACK_DATA = 101;
-var SPICE_MSG_PLAYBACK_MODE = 102;
-var SPICE_MSG_PLAYBACK_START = 103;
-var SPICE_MSG_PLAYBACK_STOP = 104;
-var SPICE_MSG_PLAYBACK_VOLUME = 105;
-var SPICE_MSG_PLAYBACK_MUTE = 106;
-var SPICE_MSG_PLAYBACK_LATENCY = 107;
+ SPICE_MSG_PLAYBACK_DATA : 101,
+ SPICE_MSG_PLAYBACK_MODE : 102,
+ SPICE_MSG_PLAYBACK_START : 103,
+ SPICE_MSG_PLAYBACK_STOP : 104,
+ SPICE_MSG_PLAYBACK_VOLUME : 105,
+ SPICE_MSG_PLAYBACK_MUTE : 106,
+ SPICE_MSG_PLAYBACK_LATENCY : 107,
-var SPICE_MSG_SPICEVMC_DATA = 101;
-var SPICE_MSG_PORT_INIT = 201;
-var SPICE_MSG_PORT_EVENT = 202;
-var SPICE_MSG_END_PORT = 203;
+ SPICE_MSG_SPICEVMC_DATA : 101,
+ SPICE_MSG_PORT_INIT : 201,
+ SPICE_MSG_PORT_EVENT : 202,
+ SPICE_MSG_END_PORT : 203,
-var SPICE_MSGC_SPICEVMC_DATA = 101;
-var SPICE_MSGC_PORT_EVENT = 201;
-var SPICE_MSGC_END_PORT = 202;
+ SPICE_MSGC_SPICEVMC_DATA : 101,
+ SPICE_MSGC_PORT_EVENT : 201,
+ SPICE_MSGC_END_PORT : 202,
-var SPICE_PLAYBACK_CAP_CELT_0_5_1 = 0;
-var SPICE_PLAYBACK_CAP_VOLUME = 1;
-var SPICE_PLAYBACK_CAP_LATENCY = 2;
-var SPICE_PLAYBACK_CAP_OPUS = 3;
+ SPICE_PLAYBACK_CAP_CELT_0_5_1 : 0,
+ SPICE_PLAYBACK_CAP_VOLUME : 1,
+ SPICE_PLAYBACK_CAP_LATENCY : 2,
+ SPICE_PLAYBACK_CAP_OPUS : 3,
-var SPICE_MAIN_CAP_SEMI_SEAMLESS_MIGRATE = 0;
-var SPICE_MAIN_CAP_NAME_AND_UUID = 1;
-var SPICE_MAIN_CAP_AGENT_CONNECTED_TOKENS = 2;
-var SPICE_MAIN_CAP_SEAMLESS_MIGRATE = 3;
+ SPICE_MAIN_CAP_SEMI_SEAMLESS_MIGRATE : 0,
+ SPICE_MAIN_CAP_NAME_AND_UUID : 1,
+ SPICE_MAIN_CAP_AGENT_CONNECTED_TOKENS : 2,
+ SPICE_MAIN_CAP_SEAMLESS_MIGRATE : 3,
-var SPICE_DISPLAY_CAP_SIZED_STREAM = 0;
-var SPICE_DISPLAY_CAP_MONITORS_CONFIG = 1;
-var SPICE_DISPLAY_CAP_COMPOSITE = 2;
-var SPICE_DISPLAY_CAP_A8_SURFACE = 3;
-var SPICE_DISPLAY_CAP_STREAM_REPORT = 4;
-var SPICE_DISPLAY_CAP_LZ4_COMPRESSION = 5;
-var SPICE_DISPLAY_CAP_PREF_COMPRESSION = 6;
-var SPICE_DISPLAY_CAP_GL_SCANOUT = 7;
-var SPICE_DISPLAY_CAP_MULTI_CODEC = 8;
-var SPICE_DISPLAY_CAP_CODEC_MJPEG = 9;
-var SPICE_DISPLAY_CAP_CODEC_VP8 = 10;
+ SPICE_DISPLAY_CAP_SIZED_STREAM : 0,
+ SPICE_DISPLAY_CAP_MONITORS_CONFIG : 1,
+ SPICE_DISPLAY_CAP_COMPOSITE : 2,
+ SPICE_DISPLAY_CAP_A8_SURFACE : 3,
+ SPICE_DISPLAY_CAP_STREAM_REPORT : 4,
+ SPICE_DISPLAY_CAP_LZ4_COMPRESSION : 5,
+ SPICE_DISPLAY_CAP_PREF_COMPRESSION : 6,
+ SPICE_DISPLAY_CAP_GL_SCANOUT : 7,
+ SPICE_DISPLAY_CAP_MULTI_CODEC : 8,
+ SPICE_DISPLAY_CAP_CODEC_MJPEG : 9,
+ SPICE_DISPLAY_CAP_CODEC_VP8 : 10,
-var SPICE_AUDIO_DATA_MODE_INVALID = 0;
-var SPICE_AUDIO_DATA_MODE_RAW = 1;
-var SPICE_AUDIO_DATA_MODE_CELT_0_5_1 = 2;
-var SPICE_AUDIO_DATA_MODE_OPUS = 3;
+ SPICE_AUDIO_DATA_MODE_INVALID : 0,
+ SPICE_AUDIO_DATA_MODE_RAW : 1,
+ SPICE_AUDIO_DATA_MODE_CELT_0_5_1 : 2,
+ SPICE_AUDIO_DATA_MODE_OPUS : 3,
-var SPICE_AUDIO_FMT_INVALID = 0;
-var SPICE_AUDIO_FMT_S16 = 1;
+ SPICE_AUDIO_FMT_INVALID : 0,
+ SPICE_AUDIO_FMT_S16 : 1,
-var SPICE_CHANNEL_MAIN = 1;
-var SPICE_CHANNEL_DISPLAY = 2;
-var SPICE_CHANNEL_INPUTS = 3;
-var SPICE_CHANNEL_CURSOR = 4;
-var SPICE_CHANNEL_PLAYBACK = 5;
-var SPICE_CHANNEL_RECORD = 6;
-var SPICE_CHANNEL_TUNNEL = 7;
-var SPICE_CHANNEL_SMARTCARD = 8;
-var SPICE_CHANNEL_USBREDIR = 9;
-var SPICE_CHANNEL_PORT = 10;
-var SPICE_CHANNEL_WEBDAV = 11;
+ SPICE_CHANNEL_MAIN : 1,
+ SPICE_CHANNEL_DISPLAY : 2,
+ SPICE_CHANNEL_INPUTS : 3,
+ SPICE_CHANNEL_CURSOR : 4,
+ SPICE_CHANNEL_PLAYBACK : 5,
+ SPICE_CHANNEL_RECORD : 6,
+ SPICE_CHANNEL_TUNNEL : 7,
+ SPICE_CHANNEL_SMARTCARD : 8,
+ SPICE_CHANNEL_USBREDIR : 9,
+ SPICE_CHANNEL_PORT : 10,
+ SPICE_CHANNEL_WEBDAV : 11,
-var SPICE_SURFACE_FLAGS_PRIMARY = (1 << 0);
+ SPICE_SURFACE_FLAGS_PRIMARY : (1 << 0),
-var SPICE_NOTIFY_SEVERITY_INFO = 0;
-var SPICE_NOTIFY_SEVERITY_WARN = 1;
-var SPICE_NOTIFY_SEVERITY_ERROR = 2;
+ SPICE_NOTIFY_SEVERITY_INFO : 0,
+ SPICE_NOTIFY_SEVERITY_WARN : 1,
+ SPICE_NOTIFY_SEVERITY_ERROR : 2,
-var SPICE_MOUSE_MODE_SERVER = (1 << 0),
- SPICE_MOUSE_MODE_CLIENT = (1 << 1),
- SPICE_MOUSE_MODE_MASK = 0x3;
+ SPICE_MOUSE_MODE_SERVER : (1 << 0),
+ SPICE_MOUSE_MODE_CLIENT : (1 << 1),
+ SPICE_MOUSE_MODE_MASK : 0x3,
-var SPICE_CLIP_TYPE_NONE = 0;
-var SPICE_CLIP_TYPE_RECTS = 1;
+ SPICE_CLIP_TYPE_NONE : 0,
+ SPICE_CLIP_TYPE_RECTS : 1,
-var SPICE_IMAGE_TYPE_BITMAP = 0;
-var SPICE_IMAGE_TYPE_QUIC = 1;
-var SPICE_IMAGE_TYPE_RESERVED = 2;
-var SPICE_IMAGE_TYPE_LZ_PLT = 100;
-var SPICE_IMAGE_TYPE_LZ_RGB = 101;
-var SPICE_IMAGE_TYPE_GLZ_RGB = 102;
-var SPICE_IMAGE_TYPE_FROM_CACHE = 103;
-var SPICE_IMAGE_TYPE_SURFACE = 104;
-var SPICE_IMAGE_TYPE_JPEG = 105;
-var SPICE_IMAGE_TYPE_FROM_CACHE_LOSSLESS = 106;
-var SPICE_IMAGE_TYPE_ZLIB_GLZ_RGB = 107;
-var SPICE_IMAGE_TYPE_JPEG_ALPHA = 108;
+ SPICE_IMAGE_TYPE_BITMAP : 0,
+ SPICE_IMAGE_TYPE_QUIC : 1,
+ SPICE_IMAGE_TYPE_RESERVED : 2,
+ SPICE_IMAGE_TYPE_LZ_PLT : 100,
+ SPICE_IMAGE_TYPE_LZ_RGB : 101,
+ SPICE_IMAGE_TYPE_GLZ_RGB : 102,
+ SPICE_IMAGE_TYPE_FROM_CACHE : 103,
+ SPICE_IMAGE_TYPE_SURFACE : 104,
+ SPICE_IMAGE_TYPE_JPEG : 105,
+ SPICE_IMAGE_TYPE_FROM_CACHE_LOSSLESS : 106,
+ SPICE_IMAGE_TYPE_ZLIB_GLZ_RGB : 107,
+ SPICE_IMAGE_TYPE_JPEG_ALPHA : 108,
-var SPICE_IMAGE_FLAGS_CACHE_ME = (1 << 0),
- SPICE_IMAGE_FLAGS_HIGH_BITS_SET = (1 << 1),
- SPICE_IMAGE_FLAGS_CACHE_REPLACE_ME = (1 << 2);
+ SPICE_IMAGE_FLAGS_CACHE_ME : (1 << 0),
+ SPICE_IMAGE_FLAGS_HIGH_BITS_SET : (1 << 1),
+ SPICE_IMAGE_FLAGS_CACHE_REPLACE_ME : (1 << 2),
-var SPICE_BITMAP_FLAGS_PAL_CACHE_ME = (1 << 0),
- SPICE_BITMAP_FLAGS_PAL_FROM_CACHE = (1 << 1),
- SPICE_BITMAP_FLAGS_TOP_DOWN = (1 << 2),
- SPICE_BITMAP_FLAGS_MASK = 0x7;
+ SPICE_BITMAP_FLAGS_PAL_CACHE_ME : (1 << 0),
+ SPICE_BITMAP_FLAGS_PAL_FROM_CACHE : (1 << 1),
+ SPICE_BITMAP_FLAGS_TOP_DOWN : (1 << 2),
+ SPICE_BITMAP_FLAGS_MASK : 0x7,
-var SPICE_BITMAP_FMT_INVALID = 0,
- SPICE_BITMAP_FMT_1BIT_LE = 1,
- SPICE_BITMAP_FMT_1BIT_BE = 2,
- SPICE_BITMAP_FMT_4BIT_LE = 3,
- SPICE_BITMAP_FMT_4BIT_BE = 4,
- SPICE_BITMAP_FMT_8BIT = 5,
- SPICE_BITMAP_FMT_16BIT = 6,
- SPICE_BITMAP_FMT_24BIT = 7,
- SPICE_BITMAP_FMT_32BIT = 8,
- SPICE_BITMAP_FMT_RGBA = 9;
+ SPICE_BITMAP_FMT_INVALID : 0,
+ SPICE_BITMAP_FMT_1BIT_LE : 1,
+ SPICE_BITMAP_FMT_1BIT_BE : 2,
+ SPICE_BITMAP_FMT_4BIT_LE : 3,
+ SPICE_BITMAP_FMT_4BIT_BE : 4,
+ SPICE_BITMAP_FMT_8BIT : 5,
+ SPICE_BITMAP_FMT_16BIT : 6,
+ SPICE_BITMAP_FMT_24BIT : 7,
+ SPICE_BITMAP_FMT_32BIT : 8,
+ SPICE_BITMAP_FMT_RGBA : 9,
-var SPICE_CURSOR_FLAGS_NONE = (1 << 0),
- SPICE_CURSOR_FLAGS_CACHE_ME = (1 << 1),
- SPICE_CURSOR_FLAGS_FROM_CACHE = (1 << 2),
- SPICE_CURSOR_FLAGS_MASK = 0x7;
+ SPICE_CURSOR_FLAGS_NONE : (1 << 0),
+ SPICE_CURSOR_FLAGS_CACHE_ME : (1 << 1),
+ SPICE_CURSOR_FLAGS_FROM_CACHE : (1 << 2),
+ SPICE_CURSOR_FLAGS_MASK : 0x7,
-var SPICE_MOUSE_BUTTON_MASK_LEFT = (1 << 0),
- SPICE_MOUSE_BUTTON_MASK_MIDDLE = (1 << 1),
- SPICE_MOUSE_BUTTON_MASK_RIGHT = (1 << 2),
- SPICE_MOUSE_BUTTON_MASK_MASK = 0x7;
+ SPICE_MOUSE_BUTTON_MASK_LEFT : (1 << 0),
+ SPICE_MOUSE_BUTTON_MASK_MIDDLE : (1 << 1),
+ SPICE_MOUSE_BUTTON_MASK_RIGHT : (1 << 2),
+ SPICE_MOUSE_BUTTON_MASK_MASK : 0x7,
-var SPICE_MOUSE_BUTTON_INVALID = 0;
-var SPICE_MOUSE_BUTTON_LEFT = 1;
-var SPICE_MOUSE_BUTTON_MIDDLE = 2;
-var SPICE_MOUSE_BUTTON_RIGHT = 3;
-var SPICE_MOUSE_BUTTON_UP = 4;
-var SPICE_MOUSE_BUTTON_DOWN = 5;
+ SPICE_MOUSE_BUTTON_INVALID : 0,
+ SPICE_MOUSE_BUTTON_LEFT : 1,
+ SPICE_MOUSE_BUTTON_MIDDLE : 2,
+ SPICE_MOUSE_BUTTON_RIGHT : 3,
+ SPICE_MOUSE_BUTTON_UP : 4,
+ SPICE_MOUSE_BUTTON_DOWN : 5,
-var SPICE_BRUSH_TYPE_NONE = 0,
- SPICE_BRUSH_TYPE_SOLID = 1,
- SPICE_BRUSH_TYPE_PATTERN = 2;
+ SPICE_BRUSH_TYPE_NONE : 0,
+ SPICE_BRUSH_TYPE_SOLID : 1,
+ SPICE_BRUSH_TYPE_PATTERN : 2,
-var SPICE_SURFACE_FMT_INVALID = 0,
- SPICE_SURFACE_FMT_1_A = 1,
- SPICE_SURFACE_FMT_8_A = 8,
- SPICE_SURFACE_FMT_16_555 = 16,
- SPICE_SURFACE_FMT_32_xRGB = 32,
- SPICE_SURFACE_FMT_16_565 = 80,
- SPICE_SURFACE_FMT_32_ARGB = 96;
+ SPICE_SURFACE_FMT_INVALID : 0,
+ SPICE_SURFACE_FMT_1_A : 1,
+ SPICE_SURFACE_FMT_8_A : 8,
+ SPICE_SURFACE_FMT_16_555 : 16,
+ SPICE_SURFACE_FMT_32_xRGB : 32,
+ SPICE_SURFACE_FMT_16_565 : 80,
+ SPICE_SURFACE_FMT_32_ARGB : 96,
-var SPICE_ROPD_INVERS_SRC = (1 << 0),
- SPICE_ROPD_INVERS_BRUSH = (1 << 1),
- SPICE_ROPD_INVERS_DEST = (1 << 2),
- SPICE_ROPD_OP_PUT = (1 << 3),
- SPICE_ROPD_OP_OR = (1 << 4),
- SPICE_ROPD_OP_AND = (1 << 5),
- SPICE_ROPD_OP_XOR = (1 << 6),
- SPICE_ROPD_OP_BLACKNESS = (1 << 7),
- SPICE_ROPD_OP_WHITENESS = (1 << 8),
- SPICE_ROPD_OP_INVERS = (1 << 9),
- SPICE_ROPD_INVERS_RES = (1 << 10),
- SPICE_ROPD_MASK = 0x7ff;
+ SPICE_ROPD_INVERS_SRC : (1 << 0),
+ SPICE_ROPD_INVERS_BRUSH : (1 << 1),
+ SPICE_ROPD_INVERS_DEST : (1 << 2),
+ SPICE_ROPD_OP_PUT : (1 << 3),
+ SPICE_ROPD_OP_OR : (1 << 4),
+ SPICE_ROPD_OP_AND : (1 << 5),
+ SPICE_ROPD_OP_XOR : (1 << 6),
+ SPICE_ROPD_OP_BLACKNESS : (1 << 7),
+ SPICE_ROPD_OP_WHITENESS : (1 << 8),
+ SPICE_ROPD_OP_INVERS : (1 << 9),
+ SPICE_ROPD_INVERS_RES : (1 << 10),
+ SPICE_ROPD_MASK : 0x7ff,
-var LZ_IMAGE_TYPE_INVALID = 0,
- LZ_IMAGE_TYPE_PLT1_LE = 1,
- LZ_IMAGE_TYPE_PLT1_BE = 2, // PLT stands for palette
- LZ_IMAGE_TYPE_PLT4_LE = 3,
- LZ_IMAGE_TYPE_PLT4_BE = 4,
- LZ_IMAGE_TYPE_PLT8 = 5,
- LZ_IMAGE_TYPE_RGB16 = 6,
- LZ_IMAGE_TYPE_RGB24 = 7,
- LZ_IMAGE_TYPE_RGB32 = 8,
- LZ_IMAGE_TYPE_RGBA = 9,
- LZ_IMAGE_TYPE_XXXA = 10;
+ LZ_IMAGE_TYPE_INVALID : 0,
+ LZ_IMAGE_TYPE_PLT1_LE : 1,
+ LZ_IMAGE_TYPE_PLT1_BE : 2, // PLT stands for palette
+ LZ_IMAGE_TYPE_PLT4_LE : 3,
+ LZ_IMAGE_TYPE_PLT4_BE : 4,
+ LZ_IMAGE_TYPE_PLT8 : 5,
+ LZ_IMAGE_TYPE_RGB16 : 6,
+ LZ_IMAGE_TYPE_RGB24 : 7,
+ LZ_IMAGE_TYPE_RGB32 : 8,
+ LZ_IMAGE_TYPE_RGBA : 9,
+ LZ_IMAGE_TYPE_XXXA : 10,
-var QUIC_IMAGE_TYPE_INVALID = 0,
- QUIC_IMAGE_TYPE_GRAY = 1,
- QUIC_IMAGE_TYPE_RGB16 = 2,
- QUIC_IMAGE_TYPE_RGB24 = 3,
- QUIC_IMAGE_TYPE_RGB32 = 4,
- QUIC_IMAGE_TYPE_RGBA = 5;
+ QUIC_IMAGE_TYPE_INVALID : 0,
+ QUIC_IMAGE_TYPE_GRAY : 1,
+ QUIC_IMAGE_TYPE_RGB16 : 2,
+ QUIC_IMAGE_TYPE_RGB24 : 3,
+ QUIC_IMAGE_TYPE_RGB32 : 4,
+ QUIC_IMAGE_TYPE_RGBA : 5,
-var SPICE_INPUT_MOTION_ACK_BUNCH = 4;
+ SPICE_INPUT_MOTION_ACK_BUNCH : 4,
-var SPICE_CURSOR_TYPE_ALPHA = 0,
- SPICE_CURSOR_TYPE_MONO = 1,
- SPICE_CURSOR_TYPE_COLOR4 = 2,
- SPICE_CURSOR_TYPE_COLOR8 = 3,
- SPICE_CURSOR_TYPE_COLOR16 = 4,
- SPICE_CURSOR_TYPE_COLOR24 = 5,
- SPICE_CURSOR_TYPE_COLOR32 = 6;
+ SPICE_CURSOR_TYPE_ALPHA : 0,
+ SPICE_CURSOR_TYPE_MONO : 1,
+ SPICE_CURSOR_TYPE_COLOR4 : 2,
+ SPICE_CURSOR_TYPE_COLOR8 : 3,
+ SPICE_CURSOR_TYPE_COLOR16 : 4,
+ SPICE_CURSOR_TYPE_COLOR24 : 5,
+ SPICE_CURSOR_TYPE_COLOR32 : 6,
-var SPICE_VIDEO_CODEC_TYPE_MJPEG = 1;
-var SPICE_VIDEO_CODEC_TYPE_VP8 = 2;
+ SPICE_VIDEO_CODEC_TYPE_MJPEG : 1,
+ SPICE_VIDEO_CODEC_TYPE_VP8 : 2,
-var VD_AGENT_PROTOCOL = 1;
-var VD_AGENT_MAX_DATA_SIZE = 2048;
+ VD_AGENT_PROTOCOL : 1,
+ VD_AGENT_MAX_DATA_SIZE : 2048,
-var VD_AGENT_MOUSE_STATE = 1,
- VD_AGENT_MONITORS_CONFIG = 2,
- VD_AGENT_REPLY = 3,
- VD_AGENT_CLIPBOARD = 4,
- VD_AGENT_DISPLAY_CONFIG = 5,
- VD_AGENT_ANNOUNCE_CAPABILITIES = 6,
- VD_AGENT_CLIPBOARD_GRAB = 7,
- VD_AGENT_CLIPBOARD_REQUEST = 8,
- VD_AGENT_CLIPBOARD_RELEASE = 9,
- VD_AGENT_FILE_XFER_START =10,
- VD_AGENT_FILE_XFER_STATUS =11,
- VD_AGENT_FILE_XFER_DATA =12,
- VD_AGENT_CLIENT_DISCONNECTED =13,
- VD_AGENT_MAX_CLIPBOARD =14;
+ VD_AGENT_MOUSE_STATE : 1,
+ VD_AGENT_MONITORS_CONFIG : 2,
+ VD_AGENT_REPLY : 3,
+ VD_AGENT_CLIPBOARD : 4,
+ VD_AGENT_DISPLAY_CONFIG : 5,
+ VD_AGENT_ANNOUNCE_CAPABILITIES : 6,
+ VD_AGENT_CLIPBOARD_GRAB : 7,
+ VD_AGENT_CLIPBOARD_REQUEST : 8,
+ VD_AGENT_CLIPBOARD_RELEASE : 9,
+ VD_AGENT_FILE_XFER_START :10,
+ VD_AGENT_FILE_XFER_STATUS :11,
+ VD_AGENT_FILE_XFER_DATA :12,
+ VD_AGENT_CLIENT_DISCONNECTED :13,
+ VD_AGENT_MAX_CLIPBOARD :14,
-var VD_AGENT_CAP_MOUSE_STATE = 0,
- VD_AGENT_CAP_MONITORS_CONFIG = 1,
- VD_AGENT_CAP_REPLY = 2,
- VD_AGENT_CAP_CLIPBOARD = 3,
- VD_AGENT_CAP_DISPLAY_CONFIG = 4,
- VD_AGENT_CAP_CLIPBOARD_BY_DEMAND = 5,
- VD_AGENT_CAP_CLIPBOARD_SELECTION = 6,
- VD_AGENT_CAP_SPARSE_MONITORS_CONFIG = 7,
- VD_AGENT_CAP_GUEST_LINEEND_LF = 8,
- VD_AGENT_CAP_GUEST_LINEEND_CRLF = 9,
- VD_AGENT_CAP_MAX_CLIPBOARD = 10,
- VD_AGENT_END_CAP = 11;
+ VD_AGENT_CAP_MOUSE_STATE : 0,
+ VD_AGENT_CAP_MONITORS_CONFIG : 1,
+ VD_AGENT_CAP_REPLY : 2,
+ VD_AGENT_CAP_CLIPBOARD : 3,
+ VD_AGENT_CAP_DISPLAY_CONFIG : 4,
+ VD_AGENT_CAP_CLIPBOARD_BY_DEMAND : 5,
+ VD_AGENT_CAP_CLIPBOARD_SELECTION : 6,
+ VD_AGENT_CAP_SPARSE_MONITORS_CONFIG : 7,
+ VD_AGENT_CAP_GUEST_LINEEND_LF : 8,
+ VD_AGENT_CAP_GUEST_LINEEND_CRLF : 9,
+ VD_AGENT_CAP_MAX_CLIPBOARD : 10,
+ VD_AGENT_END_CAP : 11,
-var VD_AGENT_FILE_XFER_STATUS_CAN_SEND_DATA = 0,
- VD_AGENT_FILE_XFER_STATUS_CANCELLED = 1,
- VD_AGENT_FILE_XFER_STATUS_ERROR = 2,
- VD_AGENT_FILE_XFER_STATUS_SUCCESS = 3;
+ VD_AGENT_FILE_XFER_STATUS_CAN_SEND_DATA : 0,
+ VD_AGENT_FILE_XFER_STATUS_CANCELLED : 1,
+ VD_AGENT_FILE_XFER_STATUS_ERROR : 2,
+ VD_AGENT_FILE_XFER_STATUS_SUCCESS : 3,
+};
diff --git a/filexfer.js b/filexfer.js
index d850db2..c42e96b 100644
--- a/filexfer.js
+++ b/filexfer.js
@@ -86,3 +86,9 @@ function handle_file_drop(e)
}
}
+
+export {
+ SpiceFileXferTask,
+ handle_file_dragover,
+ handle_file_drop,
+};
diff --git a/inputs.js b/inputs.js
index 29f4970..0c4e183 100644
--- a/inputs.js
+++ b/inputs.js
@@ -18,6 +18,12 @@
along with spice-html5. If not, see .
*/
+import * as Messages from './spicemsg.js';
+import { Constants } from './enums.js';
+import { KeyNames } from './atKeynames.js';
+import { SpiceConn } from './spiceconn.js';
+import { DEBUG } from './utils.js';
+
/*----------------------------------------------------------------------------
** Modifier Keystates
** These need to be tracked because focus in and out can get the keyboard
@@ -45,26 +51,26 @@ function SpiceInputsConn()
SpiceInputsConn.prototype = Object.create(SpiceConn.prototype);
SpiceInputsConn.prototype.process_channel_message = function(msg)
{
- if (msg.type == SPICE_MSG_INPUTS_INIT)
+ if (msg.type == Constants.SPICE_MSG_INPUTS_INIT)
{
- var inputs_init = new SpiceMsgInputsInit(msg.data);
+ var inputs_init = new Messages.SpiceMsgInputsInit(msg.data);
this.keyboard_modifiers = inputs_init.keyboard_modifiers;
DEBUG > 1 && console.log("MsgInputsInit - modifier " + this.keyboard_modifiers);
// FIXME - We don't do anything with the keyboard modifiers...
return true;
}
- if (msg.type == SPICE_MSG_INPUTS_KEY_MODIFIERS)
+ if (msg.type == Constants.SPICE_MSG_INPUTS_KEY_MODIFIERS)
{
- var key = new SpiceMsgInputsKeyModifiers(msg.data);
+ var key = new Messages.SpiceMsgInputsKeyModifiers(msg.data);
this.keyboard_modifiers = key.keyboard_modifiers;
DEBUG > 1 && console.log("MsgInputsKeyModifiers - modifier " + this.keyboard_modifiers);
// FIXME - We don't do anything with the keyboard modifiers...
return true;
}
- if (msg.type == SPICE_MSG_INPUTS_MOUSE_MOTION_ACK)
+ if (msg.type == Constants.SPICE_MSG_INPUTS_MOUSE_MOTION_ACK)
{
DEBUG > 1 && console.log("mouse motion ack");
- this.waiting_for_ack -= SPICE_INPUT_MOTION_ACK_BUNCH;
+ this.waiting_for_ack -= Constants.SPICE_INPUT_MOTION_ACK_BUNCH;
return true;
}
return false;
@@ -74,21 +80,21 @@ SpiceInputsConn.prototype.process_channel_message = function(msg)
function handle_mousemove(e)
{
- var msg = new SpiceMiniData();
+ var msg = new Messages.SpiceMiniData();
var move;
- if (this.sc.mouse_mode == SPICE_MOUSE_MODE_CLIENT)
+ if (this.sc.mouse_mode == Constants.SPICE_MOUSE_MODE_CLIENT)
{
- move = new SpiceMsgcMousePosition(this.sc, e)
- msg.build_msg(SPICE_MSGC_INPUTS_MOUSE_POSITION, move);
+ move = new Messages.SpiceMsgcMousePosition(this.sc, e)
+ msg.build_msg(Constants.SPICE_MSGC_INPUTS_MOUSE_POSITION, move);
}
else
{
- move = new SpiceMsgcMouseMotion(this.sc, e)
- msg.build_msg(SPICE_MSGC_INPUTS_MOUSE_MOTION, move);
+ move = new Messages.SpiceMsgcMouseMotion(this.sc, e)
+ msg.build_msg(Constants.SPICE_MSGC_INPUTS_MOUSE_MOTION, move);
}
if (this.sc && this.sc.inputs && this.sc.inputs.state === "ready")
{
- if (this.sc.inputs.waiting_for_ack < (2 * SPICE_INPUT_MOTION_ACK_BUNCH))
+ if (this.sc.inputs.waiting_for_ack < (2 * Constants.SPICE_INPUT_MOTION_ACK_BUNCH))
{
this.sc.inputs.send_msg(msg);
this.sc.inputs.waiting_for_ack++;
@@ -111,9 +117,9 @@ function handle_mousemove(e)
function handle_mousedown(e)
{
- var press = new SpiceMsgcMousePress(this.sc, e)
- var msg = new SpiceMiniData();
- msg.build_msg(SPICE_MSGC_INPUTS_MOUSE_PRESS, press);
+ var press = new Messages.SpiceMsgcMousePress(this.sc, e)
+ var msg = new Messages.SpiceMiniData();
+ msg.build_msg(Constants.SPICE_MSGC_INPUTS_MOUSE_PRESS, press);
if (this.sc && this.sc.inputs && this.sc.inputs.state === "ready")
this.sc.inputs.send_msg(msg);
@@ -128,9 +134,9 @@ function handle_contextmenu(e)
function handle_mouseup(e)
{
- var release = new SpiceMsgcMouseRelease(this.sc, e)
- var msg = new SpiceMiniData();
- msg.build_msg(SPICE_MSGC_INPUTS_MOUSE_RELEASE, release);
+ var release = new Messages.SpiceMsgcMouseRelease(this.sc, e)
+ var msg = new Messages.SpiceMiniData();
+ msg.build_msg(Constants.SPICE_MSGC_INPUTS_MOUSE_RELEASE, release);
if (this.sc && this.sc.inputs && this.sc.inputs.state === "ready")
this.sc.inputs.send_msg(msg);
@@ -139,21 +145,21 @@ function handle_mouseup(e)
function handle_mousewheel(e)
{
- var press = new SpiceMsgcMousePress;
- var release = new SpiceMsgcMouseRelease;
+ var press = new Messages.SpiceMsgcMousePress;
+ var release = new Messages.SpiceMsgcMouseRelease;
if (e.deltaY < 0)
- press.button = release.button = SPICE_MOUSE_BUTTON_UP;
+ press.button = release.button = Constants.SPICE_MOUSE_BUTTON_UP;
else
- press.button = release.button = SPICE_MOUSE_BUTTON_DOWN;
+ press.button = release.button = Constants.SPICE_MOUSE_BUTTON_DOWN;
press.buttons_state = 0;
release.buttons_state = 0;
- var msg = new SpiceMiniData();
- msg.build_msg(SPICE_MSGC_INPUTS_MOUSE_PRESS, press);
+ var msg = new Messages.SpiceMiniData();
+ msg.build_msg(Constants.SPICE_MSGC_INPUTS_MOUSE_PRESS, press);
if (this.sc && this.sc.inputs && this.sc.inputs.state === "ready")
this.sc.inputs.send_msg(msg);
- msg.build_msg(SPICE_MSGC_INPUTS_MOUSE_RELEASE, release);
+ msg.build_msg(Constants.SPICE_MSGC_INPUTS_MOUSE_RELEASE, release);
if (this.sc && this.sc.inputs && this.sc.inputs.state === "ready")
this.sc.inputs.send_msg(msg);
@@ -162,10 +168,10 @@ function handle_mousewheel(e)
function handle_keydown(e)
{
- var key = new SpiceMsgcKeyDown(e)
- var msg = new SpiceMiniData();
+ var key = new Messages.SpiceMsgcKeyDown(e)
+ var msg = new Messages.SpiceMiniData();
check_and_update_modifiers(e, key.code, this.sc);
- msg.build_msg(SPICE_MSGC_INPUTS_KEY_DOWN, key);
+ msg.build_msg(Constants.SPICE_MSGC_INPUTS_KEY_DOWN, key);
if (this.sc && this.sc.inputs && this.sc.inputs.state === "ready")
this.sc.inputs.send_msg(msg);
@@ -174,10 +180,10 @@ function handle_keydown(e)
function handle_keyup(e)
{
- var key = new SpiceMsgcKeyUp(e)
- var msg = new SpiceMiniData();
+ var key = new Messages.SpiceMsgcKeyUp(e)
+ var msg = new Messages.SpiceMiniData();
check_and_update_modifiers(e, key.code, this.sc);
- msg.build_msg(SPICE_MSGC_INPUTS_KEY_UP, key);
+ msg.build_msg(Constants.SPICE_MSGC_INPUTS_KEY_UP, key);
if (this.sc && this.sc.inputs && this.sc.inputs.state === "ready")
this.sc.inputs.send_msg(msg);
@@ -187,37 +193,37 @@ function handle_keyup(e)
function sendCtrlAltDel()
{
if (sc && sc.inputs && sc.inputs.state === "ready"){
- var key = new SpiceMsgcKeyDown();
- var msg = new SpiceMiniData();
+ var key = new Messages.SpiceMsgcKeyDown();
+ var msg = new Messages.SpiceMiniData();
- update_modifier(true, KEY_LCtrl, sc);
- update_modifier(true, KEY_Alt, sc);
+ update_modifier(true, KeyNames.KEY_LCtrl, sc);
+ update_modifier(true, KeyNames.KEY_Alt, sc);
- key.code = KEY_KP_Decimal;
- msg.build_msg(SPICE_MSGC_INPUTS_KEY_DOWN, key);
+ key.code = KeyNames.KEY_KP_Decimal;
+ msg.build_msg(Constants.SPICE_MSGC_INPUTS_KEY_DOWN, key);
sc.inputs.send_msg(msg);
- msg.build_msg(SPICE_MSGC_INPUTS_KEY_UP, key);
+ msg.build_msg(Constants.SPICE_MSGC_INPUTS_KEY_UP, key);
sc.inputs.send_msg(msg);
- if(Ctrl_state == false) update_modifier(false, KEY_LCtrl, sc);
- if(Alt_state == false) update_modifier(false, KEY_Alt, sc);
+ if(Ctrl_state == false) update_modifier(false, KeyNames.KEY_LCtrl, sc);
+ if(Alt_state == false) update_modifier(false, KeyNames.KEY_Alt, sc);
}
}
function update_modifier(state, code, sc)
{
- var msg = new SpiceMiniData();
+ var msg = new Messages.SpiceMiniData();
if (!state)
{
- var key = new SpiceMsgcKeyUp()
+ var key = new Messages.SpiceMsgcKeyUp()
key.code =(0x80|code);
- msg.build_msg(SPICE_MSGC_INPUTS_KEY_UP, key);
+ msg.build_msg(Constants.SPICE_MSGC_INPUTS_KEY_UP, key);
}
else
{
- var key = new SpiceMsgcKeyDown()
+ var key = new Messages.SpiceMsgcKeyDown()
key.code = code;
- msg.build_msg(SPICE_MSGC_INPUTS_KEY_DOWN, key);
+ msg.build_msg(Constants.SPICE_MSGC_INPUTS_KEY_DOWN, key);
}
sc.inputs.send_msg(msg);
@@ -233,19 +239,19 @@ function check_and_update_modifiers(e, code, sc)
Meta_state = e.metaKey;
}
- if (code === KEY_ShiftL)
+ if (code === KeyNames.KEY_ShiftL)
Shift_state = true;
- else if (code === KEY_Alt)
+ else if (code === KeyNames.KEY_Alt)
Alt_state = true;
- else if (code === KEY_LCtrl)
+ else if (code === KeyNames.KEY_LCtrl)
Ctrl_state = true;
else if (code === 0xE0B5)
Meta_state = true;
- else if (code === (0x80|KEY_ShiftL))
+ else if (code === (0x80|KeyNames.KEY_ShiftL))
Shift_state = false;
- else if (code === (0x80|KEY_Alt))
+ else if (code === (0x80|KeyNames.KEY_Alt))
Alt_state = false;
- else if (code === (0x80|KEY_LCtrl))
+ else if (code === (0x80|KeyNames.KEY_LCtrl))
Ctrl_state = false;
else if (code === (0x80|0xE0B5))
Meta_state = false;
@@ -255,19 +261,19 @@ function check_and_update_modifiers(e, code, sc)
if (Shift_state != e.shiftKey)
{
console.log("Shift state out of sync");
- update_modifier(e.shiftKey, KEY_ShiftL, sc);
+ update_modifier(e.shiftKey, KeyNames.KEY_ShiftL, sc);
Shift_state = e.shiftKey;
}
if (Alt_state != e.altKey)
{
console.log("Alt state out of sync");
- update_modifier(e.altKey, KEY_Alt, sc);
+ update_modifier(e.altKey, KeyNames.KEY_Alt, sc);
Alt_state = e.altKey;
}
if (Ctrl_state != e.ctrlKey)
{
console.log("Ctrl state out of sync");
- update_modifier(e.ctrlKey, KEY_LCtrl, sc);
+ update_modifier(e.ctrlKey, KeyNames.KEY_LCtrl, sc);
Ctrl_state = e.ctrlKey;
}
if (Meta_state != e.metaKey)
@@ -278,3 +284,15 @@ function check_and_update_modifiers(e, code, sc)
}
}
}
+
+export {
+ SpiceInputsConn,
+ handle_mousemove,
+ handle_mousedown,
+ handle_contextmenu,
+ handle_mouseup,
+ handle_mousewheel,
+ handle_keydown,
+ handle_keyup,
+ sendCtrlAltDel,
+};
diff --git a/lz.js b/lz.js
index 53c1141..700cfda 100644
--- a/lz.js
+++ b/lz.js
@@ -18,6 +18,7 @@
along with spice-html5. If not, see .
*/
+import { Constants } from './enums.js';
/*----------------------------------------------------------------------------
** lz.js
@@ -30,6 +31,7 @@ function lz_rgb32_decompress(in_buf, at, out_buf, type, default_alpha)
var op = 0;
var ctrl;
var ctr = 0;
+ var i = 0;
for (ctrl = in_buf[encoder++]; (op * 4) < out_buf.length; ctrl = in_buf[encoder++])
{
@@ -62,7 +64,7 @@ function lz_rgb32_decompress(in_buf, at, out_buf, type, default_alpha)
}
}
len += 1;
- if (type == LZ_IMAGE_TYPE_RGBA)
+ if (type == Constants.LZ_IMAGE_TYPE_RGBA)
len += 2;
ofs += 1;
@@ -72,7 +74,7 @@ function lz_rgb32_decompress(in_buf, at, out_buf, type, default_alpha)
var b = ref;
//if (type == LZ_IMAGE_TYPE_RGBA) console.log("alpha " + out_buf[(b*4)+3] + " dupped into pixel " + op + " through pixel " + (op + len));
for (; len; --len) {
- if (type == LZ_IMAGE_TYPE_RGBA)
+ if (type == Constants.LZ_IMAGE_TYPE_RGBA)
{
out_buf[(op*4) + 3] = out_buf[(b*4)+3];
}
@@ -86,7 +88,7 @@ function lz_rgb32_decompress(in_buf, at, out_buf, type, default_alpha)
} else {
//if (type == LZ_IMAGE_TYPE_RGBA) console.log("alpha copied to pixel " + op + " through " + (op + len) + " from " + ref);
for (; len; --len) {
- if (type == LZ_IMAGE_TYPE_RGBA)
+ if (type == Constants.LZ_IMAGE_TYPE_RGBA)
{
out_buf[(op*4) + 3] = out_buf[(ref*4)+3];
}
@@ -101,7 +103,7 @@ function lz_rgb32_decompress(in_buf, at, out_buf, type, default_alpha)
} else {
ctrl++;
- if (type == LZ_IMAGE_TYPE_RGBA)
+ if (type == Constants.LZ_IMAGE_TYPE_RGBA)
{
//console.log("alpha " + in_buf[encoder] + " set into pixel " + op);
out_buf[(op*4) + 3] = in_buf[encoder++];
@@ -119,7 +121,7 @@ function lz_rgb32_decompress(in_buf, at, out_buf, type, default_alpha)
for (--ctrl; ctrl; ctrl--) {
- if (type == LZ_IMAGE_TYPE_RGBA)
+ if (type == Constants.LZ_IMAGE_TYPE_RGBA)
{
//console.log("alpha " + in_buf[encoder] + " set into pixel " + op);
out_buf[(op*4) + 3] = in_buf[encoder++];
@@ -157,26 +159,30 @@ function flip_image_data(img)
function convert_spice_lz_to_web(context, lz_image)
{
var at;
- if (lz_image.type === LZ_IMAGE_TYPE_RGB32 || lz_image.type === LZ_IMAGE_TYPE_RGBA)
+ if (lz_image.type === Constants.LZ_IMAGE_TYPE_RGB32 || lz_image.type === Constants.LZ_IMAGE_TYPE_RGBA)
{
var u8 = new Uint8Array(lz_image.data);
var ret = context.createImageData(lz_image.width, lz_image.height);
- at = lz_rgb32_decompress(u8, 0, ret.data, LZ_IMAGE_TYPE_RGB32, lz_image.type != LZ_IMAGE_TYPE_RGBA);
+ at = lz_rgb32_decompress(u8, 0, ret.data, Constants.LZ_IMAGE_TYPE_RGB32, lz_image.type != Constants.LZ_IMAGE_TYPE_RGBA);
if (!lz_image.top_down)
flip_image_data(ret);
- if (lz_image.type == LZ_IMAGE_TYPE_RGBA)
- lz_rgb32_decompress(u8, at, ret.data, LZ_IMAGE_TYPE_RGBA, false);
+ if (lz_image.type == Constants.LZ_IMAGE_TYPE_RGBA)
+ lz_rgb32_decompress(u8, at, ret.data, Constants.LZ_IMAGE_TYPE_RGBA, false);
}
- else if (lz_image.type === LZ_IMAGE_TYPE_XXXA)
+ else if (lz_image.type === Constants.LZ_IMAGE_TYPE_XXXA)
{
var u8 = new Uint8Array(lz_image.data);
var ret = context.createImageData(lz_image.width, lz_image.height);
- lz_rgb32_decompress(u8, 0, ret.data, LZ_IMAGE_TYPE_RGBA, false);
+ lz_rgb32_decompress(u8, 0, ret.data, Constants.LZ_IMAGE_TYPE_RGBA, false);
}
else
return undefined;
return ret;
}
+
+export {
+ convert_spice_lz_to_web,
+};
diff --git a/main.js b/main.js
index 6976f9c..6664207 100644
--- a/main.js
+++ b/main.js
@@ -18,6 +18,17 @@
along with spice-html5. If not, see .
*/
+import * as Messages from './spicemsg.js';
+import { Constants } from './enums.js';
+import { SpiceCursorConn } from './cursor.js';
+import { SpiceConn } from './spiceconn.js';
+import { DEBUG } from './utils.js';
+import { SpiceFileXferTask } from './filexfer.js';
+import { SpiceInputsConn } from './inputs.js';
+import { SpiceDisplayConn } from './display.js';
+import { SpicePlaybackConn } from './playback.js';
+import { SpicePortConn } from './port.js';
+
/*----------------------------------------------------------------------------
** SpiceMainConn
** This is the master Javascript class for establishing and
@@ -65,23 +76,23 @@ function SpiceMainConn()
SpiceMainConn.prototype = Object.create(SpiceConn.prototype);
SpiceMainConn.prototype.process_channel_message = function(msg)
{
- if (msg.type == SPICE_MSG_MAIN_MIGRATE_BEGIN)
+ if (msg.type == Constants.SPICE_MSG_MAIN_MIGRATE_BEGIN)
{
this.known_unimplemented(msg.type, "Main Migrate Begin");
return true;
}
- if (msg.type == SPICE_MSG_MAIN_MIGRATE_CANCEL)
+ if (msg.type == Constants.SPICE_MSG_MAIN_MIGRATE_CANCEL)
{
this.known_unimplemented(msg.type, "Main Migrate Cancel");
return true;
}
- if (msg.type == SPICE_MSG_MAIN_INIT)
+ if (msg.type == Constants.SPICE_MSG_MAIN_INIT)
{
this.log_info("Connected to " + this.ws.url);
this.report_success("Connected")
- this.main_init = new SpiceMsgMainInit(msg.data);
+ this.main_init = new Messages.SpiceMsgMainInit(msg.data);
this.connection_id = this.main_init.session_id;
this.agent_tokens = this.main_init.agent_tokens;
@@ -108,33 +119,33 @@ SpiceMainConn.prototype.process_channel_message = function(msg)
if (this.main_init.agent_connected)
this.connect_agent();
- var attach = new SpiceMiniData;
- attach.type = SPICE_MSGC_MAIN_ATTACH_CHANNELS;
+ var attach = new Messages.SpiceMiniData;
+ attach.type = Constants.SPICE_MSGC_MAIN_ATTACH_CHANNELS;
attach.size = attach.buffer_size();
this.send_msg(attach);
return true;
}
- if (msg.type == SPICE_MSG_MAIN_MOUSE_MODE)
+ if (msg.type == Constants.SPICE_MSG_MAIN_MOUSE_MODE)
{
- var mode = new SpiceMsgMainMouseMode(msg.data);
+ var mode = new Messages.SpiceMsgMainMouseMode(msg.data);
DEBUG > 0 && this.log_info("Mouse supported modes " + mode.supported_modes + "; current " + mode.current_mode);
this.handle_mouse_mode(mode.current_mode, mode.supported_modes);
return true;
}
- if (msg.type == SPICE_MSG_MAIN_MULTI_MEDIA_TIME)
+ if (msg.type == Constants.SPICE_MSG_MAIN_MULTI_MEDIA_TIME)
{
this.known_unimplemented(msg.type, "Main Multi Media Time");
return true;
}
- if (msg.type == SPICE_MSG_MAIN_CHANNELS_LIST)
+ if (msg.type == Constants.SPICE_MSG_MAIN_CHANNELS_LIST)
{
var i;
var chans;
DEBUG > 0 && console.log("channels");
- chans = new SpiceMsgChannels(msg.data);
+ chans = new Messages.SpiceMsgChannels(msg.data);
for (i = 0; i < chans.channels.length; i++)
{
var conn = {
@@ -144,7 +155,7 @@ SpiceMainConn.prototype.process_channel_message = function(msg)
type : chans.channels[i].type,
chan_id : chans.channels[i].id
};
- if (chans.channels[i].type == SPICE_CHANNEL_DISPLAY)
+ if (chans.channels[i].type == Constants.SPICE_CHANNEL_DISPLAY)
{
if (chans.channels[i].id == 0) {
this.display = new SpiceDisplayConn(conn);
@@ -152,16 +163,16 @@ SpiceMainConn.prototype.process_channel_message = function(msg)
this.log_warn("The spice-html5 client does not handle multiple heads.");
}
}
- else if (chans.channels[i].type == SPICE_CHANNEL_INPUTS)
+ else if (chans.channels[i].type == Constants.SPICE_CHANNEL_INPUTS)
{
this.inputs = new SpiceInputsConn(conn);
this.inputs.mouse_mode = this.mouse_mode;
}
- else if (chans.channels[i].type == SPICE_CHANNEL_CURSOR)
+ else if (chans.channels[i].type == Constants.SPICE_CHANNEL_CURSOR)
this.cursor = new SpiceCursorConn(conn);
- else if (chans.channels[i].type == SPICE_CHANNEL_PLAYBACK)
+ else if (chans.channels[i].type == Constants.SPICE_CHANNEL_PLAYBACK)
this.cursor = new SpicePlaybackConn(conn);
- else if (chans.channels[i].type == SPICE_CHANNEL_PORT)
+ else if (chans.channels[i].type == Constants.SPICE_CHANNEL_PORT)
this.ports.push(new SpicePortConn(conn));
else
{
@@ -176,23 +187,23 @@ SpiceMainConn.prototype.process_channel_message = function(msg)
return true;
}
- if (msg.type == SPICE_MSG_MAIN_AGENT_CONNECTED)
+ if (msg.type == Constants.SPICE_MSG_MAIN_AGENT_CONNECTED)
{
this.connect_agent();
return true;
}
- if (msg.type == SPICE_MSG_MAIN_AGENT_CONNECTED_TOKENS)
+ if (msg.type == Constants.SPICE_MSG_MAIN_AGENT_CONNECTED_TOKENS)
{
- var connected_tokens = new SpiceMsgMainAgentTokens(msg.data);
+ var connected_tokens = new Messages.SpiceMsgMainAgentTokens(msg.data);
this.agent_tokens = connected_tokens.num_tokens;
this.connect_agent();
return true;
}
- if (msg.type == SPICE_MSG_MAIN_AGENT_TOKEN)
+ if (msg.type == Constants.SPICE_MSG_MAIN_AGENT_TOKEN)
{
- var remaining_tokens, tokens = new SpiceMsgMainAgentTokens(msg.data);
+ var remaining_tokens, tokens = new Messages.SpiceMsgMainAgentTokens(msg.data);
this.agent_tokens += tokens.num_tokens;
this.send_agent_message_queue();
@@ -206,68 +217,68 @@ SpiceMainConn.prototype.process_channel_message = function(msg)
return true;
}
- if (msg.type == SPICE_MSG_MAIN_AGENT_DISCONNECTED)
+ if (msg.type == Constants.SPICE_MSG_MAIN_AGENT_DISCONNECTED)
{
this.agent_connected = false;
return true;
}
- if (msg.type == SPICE_MSG_MAIN_AGENT_DATA)
+ if (msg.type == Constants.SPICE_MSG_MAIN_AGENT_DATA)
{
- var agent_data = new SpiceMsgMainAgentData(msg.data);
- if (agent_data.type == VD_AGENT_ANNOUNCE_CAPABILITIES)
+ var agent_data = new Messages.SpiceMsgMainAgentData(msg.data);
+ if (agent_data.type == Constants.VD_AGENT_ANNOUNCE_CAPABILITIES)
{
- var agent_caps = new VDAgentAnnounceCapabilities(agent_data.data);
+ var agent_caps = new Messages.VDAgentAnnounceCapabilities(agent_data.data);
if (agent_caps.request)
this.announce_agent_capabilities(0);
return true;
}
- else if (agent_data.type == VD_AGENT_FILE_XFER_STATUS)
+ else if (agent_data.type == Constants.VD_AGENT_FILE_XFER_STATUS)
{
- this.handle_file_xfer_status(new VDAgentFileXferStatusMessage(agent_data.data));
+ this.handle_file_xfer_status(new Messages.VDAgentFileXferStatusMessage(agent_data.data));
return true;
}
return false;
}
- if (msg.type == SPICE_MSG_MAIN_MIGRATE_SWITCH_HOST)
+ if (msg.type == Constants.SPICE_MSG_MAIN_MIGRATE_SWITCH_HOST)
{
this.known_unimplemented(msg.type, "Main Migrate Switch Host");
return true;
}
- if (msg.type == SPICE_MSG_MAIN_MIGRATE_END)
+ if (msg.type == Constants.SPICE_MSG_MAIN_MIGRATE_END)
{
this.known_unimplemented(msg.type, "Main Migrate End");
return true;
}
- if (msg.type == SPICE_MSG_MAIN_NAME)
+ if (msg.type == Constants.SPICE_MSG_MAIN_NAME)
{
this.known_unimplemented(msg.type, "Main Name");
return true;
}
- if (msg.type == SPICE_MSG_MAIN_UUID)
+ if (msg.type == Constants.SPICE_MSG_MAIN_UUID)
{
this.known_unimplemented(msg.type, "Main UUID");
return true;
}
- if (msg.type == SPICE_MSG_MAIN_MIGRATE_BEGIN_SEAMLESS)
+ if (msg.type == Constants.SPICE_MSG_MAIN_MIGRATE_BEGIN_SEAMLESS)
{
this.known_unimplemented(msg.type, "Main Migrate Begin Seamless");
return true;
}
- if (msg.type == SPICE_MSG_MAIN_MIGRATE_DST_SEAMLESS_ACK)
+ if (msg.type == Constants.SPICE_MSG_MAIN_MIGRATE_DST_SEAMLESS_ACK)
{
this.known_unimplemented(msg.type, "Main Migrate Dst Seamless ACK");
return true;
}
- if (msg.type == SPICE_MSG_MAIN_MIGRATE_DST_SEAMLESS_NACK)
+ if (msg.type == Constants.SPICE_MSG_MAIN_MIGRATE_DST_SEAMLESS_NACK)
{
this.known_unimplemented(msg.type, "Main Migrate Dst Seamless NACK");
return true;
@@ -325,15 +336,15 @@ SpiceMainConn.prototype.send_agent_message_queue = function(message)
SpiceMainConn.prototype.send_agent_message = function(type, message)
{
- var agent_data = new SpiceMsgcMainAgentData(type, message);
- var sb = 0, maxsize = VD_AGENT_MAX_DATA_SIZE - SpiceMiniData.prototype.buffer_size();
+ var agent_data = new Messages.SpiceMsgcMainAgentData(type, message);
+ var sb = 0, maxsize = Constants.VD_AGENT_MAX_DATA_SIZE - Messages.SpiceMiniData.prototype.buffer_size();
var data = new ArrayBuffer(agent_data.buffer_size());
agent_data.to_buffer(data);
while (sb < agent_data.buffer_size())
{
var eb = Math.min(sb + maxsize, agent_data.buffer_size());
- var mr = new SpiceMiniData();
- mr.type = SPICE_MSGC_MAIN_AGENT_DATA;
+ var mr = new Messages.SpiceMiniData();
+ mr.type = Constants.SPICE_MSGC_MAIN_AGENT_DATA;
mr.size = eb - sb;
mr.data = data.slice(sb, eb);
this.send_agent_message_queue(mr);
@@ -343,16 +354,16 @@ SpiceMainConn.prototype.send_agent_message = function(type, message)
SpiceMainConn.prototype.announce_agent_capabilities = function(request)
{
- var caps = new VDAgentAnnounceCapabilities(request, (1 << VD_AGENT_CAP_MOUSE_STATE) |
- (1 << VD_AGENT_CAP_MONITORS_CONFIG) |
- (1 << VD_AGENT_CAP_REPLY));
- this.send_agent_message(VD_AGENT_ANNOUNCE_CAPABILITIES, caps);
+ var caps = new Messages.VDAgentAnnounceCapabilities(request, (1 << Constants.VD_AGENT_CAP_MOUSE_STATE) |
+ (1 << Constants.VD_AGENT_CAP_MONITORS_CONFIG) |
+ (1 << Constants.VD_AGENT_CAP_REPLY));
+ this.send_agent_message(Constants.VD_AGENT_ANNOUNCE_CAPABILITIES, caps);
}
SpiceMainConn.prototype.resize_window = function(flags, width, height, depth, x, y)
{
- var monitors_config = new VDAgentMonitorsConfig(flags, width, height, depth, x, y);
- this.send_agent_message(VD_AGENT_MONITORS_CONFIG, monitors_config);
+ var monitors_config = new Messages.VDAgentMonitorsConfig(flags, width, height, depth, x, y);
+ this.send_agent_message(Constants.VD_AGENT_MONITORS_CONFIG, monitors_config);
}
SpiceMainConn.prototype.file_xfer_start = function(file)
@@ -363,8 +374,8 @@ SpiceMainConn.prototype.file_xfer_start = function(file)
task = new SpiceFileXferTask(task_id, file);
task.create_progressbar();
this.file_xfer_tasks[task_id] = task;
- xfer_start = new VDAgentFileXferStartMessage(task_id, file.name, file.size);
- this.send_agent_message(VD_AGENT_FILE_XFER_START, xfer_start);
+ xfer_start = new Messages.VDAgentFileXferStartMessage(task_id, file.name, file.size);
+ this.send_agent_message(Constants.VD_AGENT_FILE_XFER_START, xfer_start);
}
SpiceMainConn.prototype.handle_file_xfer_status = function(file_xfer_status)
@@ -377,16 +388,16 @@ SpiceMainConn.prototype.handle_file_xfer_status = function(file_xfer_status)
xfer_task = this.file_xfer_tasks[file_xfer_status.id];
switch (file_xfer_status.result)
{
- case VD_AGENT_FILE_XFER_STATUS_CAN_SEND_DATA:
+ case Constants.VD_AGENT_FILE_XFER_STATUS_CAN_SEND_DATA:
this.file_xfer_read(xfer_task);
return;
- case VD_AGENT_FILE_XFER_STATUS_CANCELLED:
+ case Constants.VD_AGENT_FILE_XFER_STATUS_CANCELLED:
xfer_error = "transfer is cancelled by spice agent";
break;
- case VD_AGENT_FILE_XFER_STATUS_ERROR:
+ case Constants.VD_AGENT_FILE_XFER_STATUS_ERROR:
xfer_error = "some errors occurred in the spice agent";
break;
- case VD_AGENT_FILE_XFER_STATUS_SUCCESS:
+ case Constants.VD_AGENT_FILE_XFER_STATUS_SUCCESS:
break;
default:
xfer_error = "unhandled status type: " + file_xfer_status.result;
@@ -398,7 +409,7 @@ SpiceMainConn.prototype.handle_file_xfer_status = function(file_xfer_status)
SpiceMainConn.prototype.file_xfer_read = function(file_xfer_task, start_byte)
{
- var FILE_XFER_CHUNK_SIZE = 32 * VD_AGENT_MAX_DATA_SIZE;
+ var FILE_XFER_CHUNK_SIZE = 32 * Constants.VD_AGENT_MAX_DATA_SIZE;
var _this = this;
var sb, eb;
var slice, reader;
@@ -412,9 +423,9 @@ SpiceMainConn.prototype.file_xfer_read = function(file_xfer_task, start_byte)
if (file_xfer_task.cancelled)
{
- var xfer_status = new VDAgentFileXferStatusMessage(file_xfer_task.id,
- VD_AGENT_FILE_XFER_STATUS_CANCELLED);
- this.send_agent_message(VD_AGENT_FILE_XFER_STATUS, xfer_status);
+ var xfer_status = new Messages.VDAgentFileXferStatusMessage(file_xfer_task.id,
+ Constants.VD_AGENT_FILE_XFER_STATUS_CANCELLED);
+ this.send_agent_message(Constants.VD_AGENT_FILE_XFER_STATUS, xfer_status);
delete this.file_xfer_tasks[file_xfer_task.id];
return;
}
@@ -432,10 +443,10 @@ SpiceMainConn.prototype.file_xfer_read = function(file_xfer_task, start_byte)
reader = new FileReader();
reader.onload = function(e)
{
- var xfer_data = new VDAgentFileXferDataMessage(file_xfer_task.id,
+ var xfer_data = new Messages.VDAgentFileXferDataMessage(file_xfer_task.id,
e.target.result.byteLength,
e.target.result);
- _this.send_agent_message(VD_AGENT_FILE_XFER_DATA, xfer_data);
+ _this.send_agent_message(Constants.VD_AGENT_FILE_XFER_DATA, xfer_data);
_this.file_xfer_read(file_xfer_task, eb);
file_xfer_task.update_progressbar(eb);
};
@@ -460,9 +471,9 @@ SpiceMainConn.prototype.connect_agent = function()
{
this.agent_connected = true;
- var agent_start = new SpiceMsgcMainAgentStart(~0);
- var mr = new SpiceMiniData();
- mr.build_msg(SPICE_MSGC_MAIN_AGENT_START, agent_start);
+ var agent_start = new Messages.SpiceMsgcMainAgentStart(~0);
+ var mr = new Messages.SpiceMiniData();
+ mr.build_msg(Constants.SPICE_MSGC_MAIN_AGENT_START, agent_start);
this.send_msg(mr);
this.announce_agent_capabilities(1);
@@ -475,11 +486,11 @@ SpiceMainConn.prototype.connect_agent = function()
SpiceMainConn.prototype.handle_mouse_mode = function(current, supported)
{
this.mouse_mode = current;
- if (current != SPICE_MOUSE_MODE_CLIENT && (supported & SPICE_MOUSE_MODE_CLIENT))
+ if (current != Constants.SPICE_MOUSE_MODE_CLIENT && (supported & Constants.SPICE_MOUSE_MODE_CLIENT))
{
- var mode_request = new SpiceMsgcMainMouseModeRequest(SPICE_MOUSE_MODE_CLIENT);
- var mr = new SpiceMiniData();
- mr.build_msg(SPICE_MSGC_MAIN_MOUSE_MODE_REQUEST, mode_request);
+ var mode_request = new Messages.SpiceMsgcMainMouseModeRequest(Constants.SPICE_MOUSE_MODE_CLIENT);
+ var mr = new Messages.SpiceMiniData();
+ mr.build_msg(Constants.SPICE_MSGC_MAIN_MOUSE_MODE_REQUEST, mode_request);
this.send_msg(mr);
}
@@ -493,3 +504,7 @@ SpiceMainConn.prototype.relative_now = function()
var ret = (Date.now() - this.our_mm_time) + this.mm_time;
return ret;
}
+
+export {
+ SpiceMainConn,
+};
diff --git a/playback.js b/playback.js
index 5af9233..f477f76 100644
--- a/playback.js
+++ b/playback.js
@@ -22,6 +22,13 @@
** SpicePlaybackConn
** Drive the Spice Playback channel (sound out)
**--------------------------------------------------------------------------*/
+
+import * as Utils from './utils.js';
+import * as Webm from './webm.js';
+import * as Messages from './spicemsg.js';
+import { Constants } from './enums.js';
+import { SpiceConn } from './spiceconn.js';
+
function SpicePlaybackConn()
{
SpiceConn.apply(this, arguments);
@@ -40,25 +47,25 @@ SpicePlaybackConn.prototype.process_channel_message = function(msg)
return false;
}
- if (msg.type == SPICE_MSG_PLAYBACK_START)
+ if (msg.type == Constants.SPICE_MSG_PLAYBACK_START)
{
- var start = new SpiceMsgPlaybackStart(msg.data);
+ var start = new Messages.SpiceMsgPlaybackStart(msg.data);
- PLAYBACK_DEBUG > 0 && console.log("PlaybackStart; frequency " + start.frequency);
+ Utils.PLAYBACK_DEBUG > 0 && console.log("PlaybackStart; frequency " + start.frequency);
- if (start.frequency != OPUS_FREQUENCY)
+ if (start.frequency != Webm.Constants.OPUS_FREQUENCY)
{
this.log_err('This player cannot handle frequency ' + start.frequency);
return false;
}
- if (start.channels != OPUS_CHANNELS)
+ if (start.channels != Webm.Constants.OPUS_CHANNELS)
{
this.log_err('This player cannot handle ' + start.channels + ' channels');
return false;
}
- if (start.format != SPICE_AUDIO_FMT_S16)
+ if (start.format != Constants.SPICE_AUDIO_FMT_S16)
{
this.log_err('This player cannot format ' + start.format);
return false;
@@ -85,9 +92,9 @@ SpicePlaybackConn.prototype.process_channel_message = function(msg)
}
}
- if (msg.type == SPICE_MSG_PLAYBACK_DATA)
+ if (msg.type == Constants.SPICE_MSG_PLAYBACK_DATA)
{
- var data = new SpiceMsgPlaybackData(msg.data);
+ var data = new Messages.SpiceMsgPlaybackData(msg.data);
if (! this.source_buffer)
return true;
@@ -115,28 +122,28 @@ SpicePlaybackConn.prototype.process_channel_message = function(msg)
will resync.
*/
- if (this.start_time != 0 && data.time != (this.last_data_time + EXPECTED_PACKET_DURATION))
+ if (this.start_time != 0 && data.time != (this.last_data_time + Webm.Constants.EXPECTED_PACKET_DURATION))
{
- if (Math.abs(data.time - (EXPECTED_PACKET_DURATION + this.last_data_time)) < MAX_CLUSTER_TIME)
+ if (Math.abs(data.time - (Webm.Constants.EXPECTED_PACKET_DURATION + this.last_data_time)) < Webm.Constants.MAX_CLUSTER_TIME)
{
- PLAYBACK_DEBUG > 1 && console.log("Hacking time of " + data.time + " to " +
- (this.last_data_time + EXPECTED_PACKET_DURATION));
- data.time = this.last_data_time + EXPECTED_PACKET_DURATION;
+ Utils.PLAYBACK_DEBUG > 1 && console.log("Hacking time of " + data.time + " to " +
+ (this.last_data_time + Webm.Constants.EXPECTED_PACKET_DURATION));
+ data.time = this.last_data_time + Webm.Constants.EXPECTED_PACKET_DURATION;
}
else
{
- PLAYBACK_DEBUG > 1 && console.log("Apparent gap in audio time; now is " + data.time + " last was " + this.last_data_time);
+ Utils.PLAYBACK_DEBUG > 1 && console.log("Apparent gap in audio time; now is " + data.time + " last was " + this.last_data_time);
}
}
this.last_data_time = data.time;
- PLAYBACK_DEBUG > 1 && console.log("PlaybackData; time " + data.time + "; length " + data.data.byteLength);
+ Utils.PLAYBACK_DEBUG > 1 && console.log("PlaybackData; time " + data.time + "; length " + data.data.byteLength);
if (this.start_time == 0)
this.start_playback(data);
- else if (data.time - this.cluster_time >= MAX_CLUSTER_TIME)
+ else if (data.time - this.cluster_time >= Webm.Constants.MAX_CLUSTER_TIME)
this.new_cluster(data);
else
@@ -145,10 +152,10 @@ SpicePlaybackConn.prototype.process_channel_message = function(msg)
return true;
}
- if (msg.type == SPICE_MSG_PLAYBACK_MODE)
+ if (msg.type == Constants.SPICE_MSG_PLAYBACK_MODE)
{
- var mode = new SpiceMsgPlaybackMode(msg.data);
- if (mode.mode != SPICE_AUDIO_DATA_MODE_OPUS)
+ var mode = new Messages.SpiceMsgPlaybackMode(msg.data);
+ if (mode.mode != Constants.SPICE_AUDIO_DATA_MODE_OPUS)
{
this.log_err('This player cannot handle mode ' + mode.mode);
delete this.source_buffer;
@@ -156,9 +163,9 @@ SpicePlaybackConn.prototype.process_channel_message = function(msg)
return true;
}
- if (msg.type == SPICE_MSG_PLAYBACK_STOP)
+ if (msg.type == Constants.SPICE_MSG_PLAYBACK_STOP)
{
- PLAYBACK_DEBUG > 0 && console.log("PlaybackStop");
+ Utils.PLAYBACK_DEBUG > 0 && console.log("PlaybackStop");
if (this.source_buffer)
{
document.getElementById(this.parent.screen_id).removeChild(this.audio);
@@ -176,19 +183,19 @@ SpicePlaybackConn.prototype.process_channel_message = function(msg)
}
}
- if (msg.type == SPICE_MSG_PLAYBACK_VOLUME)
+ if (msg.type == Constants.SPICE_MSG_PLAYBACK_VOLUME)
{
this.known_unimplemented(msg.type, "Playback Volume");
return true;
}
- if (msg.type == SPICE_MSG_PLAYBACK_MUTE)
+ if (msg.type == Constants.SPICE_MSG_PLAYBACK_MUTE)
{
this.known_unimplemented(msg.type, "Playback Mute");
return true;
}
- if (msg.type == SPICE_MSG_PLAYBACK_LATENCY)
+ if (msg.type == Constants.SPICE_MSG_PLAYBACK_LATENCY)
{
this.known_unimplemented(msg.type, "Playback Latency");
return true;
@@ -201,9 +208,9 @@ SpicePlaybackConn.prototype.start_playback = function(data)
{
this.start_time = data.time;
- var h = new webm_Header();
- var te = new webm_AudioTrackEntry;
- var t = new webm_Tracks(te);
+ var h = new Webm.Header();
+ var te = new Webm.AudioTrackEntry;
+ var t = new Webm.Tracks(te);
var mb = new ArrayBuffer(h.buffer_size() + t.buffer_size())
@@ -221,7 +228,7 @@ SpicePlaybackConn.prototype.new_cluster = function(data)
{
this.cluster_time = data.time;
- var c = new webm_Cluster(data.time - this.start_time);
+ var c = new Webm.Cluster(data.time - this.start_time);
var mb = new ArrayBuffer(c.buffer_size());
this.bytes_written += c.to_buffer(mb);
@@ -236,7 +243,7 @@ SpicePlaybackConn.prototype.new_cluster = function(data)
SpicePlaybackConn.prototype.simple_block = function(data, keyframe)
{
- var sb = new webm_SimpleBlock(data.time - this.cluster_time, data.data, keyframe);
+ var sb = new Webm.SimpleBlock(data.time - this.cluster_time, data.data, keyframe);
var mb = new ArrayBuffer(sb.buffer_size());
this.bytes_written += sb.to_buffer(mb);
@@ -254,14 +261,14 @@ function handle_source_open(e)
if (p.source_buffer)
return;
- p.source_buffer = this.addSourceBuffer(SPICE_PLAYBACK_CODEC);
+ p.source_buffer = this.addSourceBuffer(Webm.Constants.SPICE_PLAYBACK_CODEC);
if (! p.source_buffer)
{
- p.log_err('Codec ' + SPICE_PLAYBACK_CODEC + ' not available.');
+ p.log_err('Codec ' + Webm.Constants.SPICE_PLAYBACK_CODEC + ' not available.');
return;
}
- if (PLAYBACK_DEBUG > 0)
+ if (Utils.PLAYBACK_DEBUG > 0)
playback_handle_event_debug.call(this, e);
listen_for_audio_events(p);
@@ -315,7 +322,7 @@ function handle_append_buffer_done(e)
{
var p = this.spiceconn;
- if (PLAYBACK_DEBUG > 1)
+ if (Utils.PLAYBACK_DEBUG > 1)
playback_handle_event_debug.call(this, e);
if (p.queue.length > 0)
@@ -352,18 +359,18 @@ function playback_handle_event_debug(e)
var p = this.spiceconn;
if (p.audio)
{
- if (PLAYBACK_DEBUG > 0 || p.audio.buffered.len > 1)
+ if (Utils.PLAYBACK_DEBUG > 0 || p.audio.buffered.len > 1)
console.log(p.audio.currentTime + ": event " + e.type +
- dump_media_element(p.audio));
+ Utils.dump_media_element(p.audio));
}
- if (PLAYBACK_DEBUG > 1 && p.media_source)
- console.log(" media_source " + dump_media_source(p.media_source));
+ if (Utils.PLAYBACK_DEBUG > 1 && p.media_source)
+ console.log(" media_source " + Utils.dump_media_source(p.media_source));
- if (PLAYBACK_DEBUG > 1 && p.source_buffer)
- console.log(" source_buffer " + dump_source_buffer(p.source_buffer));
+ if (Utils.PLAYBACK_DEBUG > 1 && p.source_buffer)
+ console.log(" source_buffer " + Utils.dump_source_buffer(p.source_buffer));
- if (PLAYBACK_DEBUG > 0 || p.queue.length > 1)
+ if (Utils.PLAYBACK_DEBUG > 0 || p.queue.length > 1)
console.log(' queue len ' + p.queue.length + '; append_okay: ' + p.append_okay);
}
@@ -391,8 +398,12 @@ function listen_for_audio_events(spiceconn)
];
audio_0_events.forEach(playback_debug_listen_for_one_event, spiceconn.audio);
- if (PLAYBACK_DEBUG > 0)
+ if (Utils.PLAYBACK_DEBUG > 0)
audio_1_events.forEach(playback_debug_listen_for_one_event, spiceconn.audio);
- if (PLAYBACK_DEBUG > 1)
+ if (Utils.PLAYBACK_DEBUG > 1)
audio_2_events.forEach(playback_debug_listen_for_one_event, spiceconn.audio);
}
+
+export {
+ SpicePlaybackConn,
+};
diff --git a/png.js b/png.js
index 6a26151..d6dd7ab 100644
--- a/png.js
+++ b/png.js
@@ -22,6 +22,8 @@
** crc logic from rfc2083 ported to Javascript
**--------------------------------------------------------------------------*/
+import { SpiceDataView } from './spicedataview.js';
+
var rfc2083_crc_table = Array(256);
var rfc2083_crc_table_computed = 0;
/* Make the table for a fast CRC. */
@@ -254,3 +256,7 @@ function create_rgba_png(width, height, bytes)
return "%89PNG%0D%0A%1A%0A" + str;
}
+
+export {
+ create_rgba_png,
+};
diff --git a/port.js b/port.js
index ee22073..74523ae 100644
--- a/port.js
+++ b/port.js
@@ -19,6 +19,11 @@
along with spice-html5. If not, see .
*/
+import { Constants } from './enums.js';
+import { DEBUG } from './utils.js';
+import { SpiceConn } from './spiceconn.js';
+import { SpiceMsgPortInit } from './spicemsg.js';
+
/*----------------------------------------------------------------------------
** SpicePortConn
** Drive the Spice Port Channel
@@ -34,7 +39,7 @@ SpicePortConn.prototype = Object.create(SpiceConn.prototype);
SpicePortConn.prototype.process_channel_message = function(msg)
{
- if (msg.type == SPICE_MSG_PORT_INIT)
+ if (msg.type == Constants.SPICE_MSG_PORT_INIT)
{
if (this.port_name === null)
{
@@ -47,7 +52,7 @@ SpicePortConn.prototype.process_channel_message = function(msg)
DEBUG > 0 && console.log('SPICE port: Port', this.port_name, 'is already initialized.');
}
- else if (msg.type == SPICE_MSG_PORT_EVENT)
+ else if (msg.type == Constants.SPICE_MSG_PORT_EVENT)
{
DEBUG > 0 && console.log('SPICE port: Port event received for', this.portName, msg);
var event = new CustomEvent('spice-port-event', {
@@ -62,7 +67,7 @@ SpicePortConn.prototype.process_channel_message = function(msg)
window.dispatchEvent(event);
return true;
}
- else if (msg.type == SPICE_MSG_SPICEVMC_DATA)
+ else if (msg.type == Constants.SPICE_MSG_SPICEVMC_DATA)
{
DEBUG > 0 && console.log('SPICE port: Data received in port', this.portName, msg);
var event = new CustomEvent('spice-port-data', {
@@ -83,3 +88,7 @@ SpicePortConn.prototype.process_channel_message = function(msg)
return false;
};
+
+export {
+ SpicePortConn,
+};
diff --git a/quic.js b/quic.js
index 22ea3c7..216937f 100644
--- a/quic.js
+++ b/quic.js
@@ -22,12 +22,15 @@
var encoder;
-var QUIC_IMAGE_TYPE_INVALID = 0;
-var QUIC_IMAGE_TYPE_GRAY = 1;
-var QUIC_IMAGE_TYPE_RGB16 = 2;
-var QUIC_IMAGE_TYPE_RGB24 = 3;
-var QUIC_IMAGE_TYPE_RGB32 = 4;
-var QUIC_IMAGE_TYPE_RGBA = 5;
+var Constants = {
+ QUIC_IMAGE_TYPE_INVALID : 0,
+ QUIC_IMAGE_TYPE_GRAY : 1,
+ QUIC_IMAGE_TYPE_RGB16 : 2,
+ QUIC_IMAGE_TYPE_RGB24 : 3,
+ QUIC_IMAGE_TYPE_RGB32 : 4,
+ QUIC_IMAGE_TYPE_RGBA : 5,
+};
+
var DEFevol = 3;
var DEFwmimax = 6;
var DEFwminext = 2048;
@@ -191,17 +194,17 @@ function family_init(family, bpc, limit)
function quic_image_bpc(type)
{
switch (type) {
- case QUIC_IMAGE_TYPE_GRAY:
+ case Constants.QUIC_IMAGE_TYPE_GRAY:
return 8;
- case QUIC_IMAGE_TYPE_RGB16:
+ case Constants.QUIC_IMAGE_TYPE_RGB16:
return 5;
- case QUIC_IMAGE_TYPE_RGB24:
+ case Constants.QUIC_IMAGE_TYPE_RGB24:
return 8;
- case QUIC_IMAGE_TYPE_RGB32:
+ case Constants.QUIC_IMAGE_TYPE_RGB32:
return 8;
- case QUIC_IMAGE_TYPE_RGBA:
+ case Constants.QUIC_IMAGE_TYPE_RGBA:
return 8;
- case QUIC_IMAGE_TYPE_INVALID:
+ case Constants.QUIC_IMAGE_TYPE_INVALID:
default:
console.log("quic: bad image type\n");
return 0;
@@ -1189,8 +1192,8 @@ QuicEncoder.prototype.quic_decode = function(buf, stride)
switch (this.type)
{
- case QUIC_IMAGE_TYPE_RGB32:
- case QUIC_IMAGE_TYPE_RGB24:
+ case Constants.QUIC_IMAGE_TYPE_RGB32:
+ case Constants.QUIC_IMAGE_TYPE_RGB24:
this.channels[0].correlate_row.zero = 0;
this.channels[1].correlate_row.zero = 0;
this.channels[2].correlate_row.zero = 0;
@@ -1208,11 +1211,11 @@ QuicEncoder.prototype.quic_decode = function(buf, stride)
this.rows_completed++;
};
break;
- case QUIC_IMAGE_TYPE_RGB16:
+ case Constants.QUIC_IMAGE_TYPE_RGB16:
console.log("quic: unsupported output format\n");
return false;
break;
- case QUIC_IMAGE_TYPE_RGBA:
+ case Constants.QUIC_IMAGE_TYPE_RGBA:
this.channels[0].correlate_row.zero = 0;
this.channels[1].correlate_row.zero = 0;
this.channels[2].correlate_row.zero = 0;
@@ -1237,12 +1240,12 @@ QuicEncoder.prototype.quic_decode = function(buf, stride)
}
break;
- case QUIC_IMAGE_TYPE_GRAY:
+ case Constants.QUIC_IMAGE_TYPE_GRAY:
console.log("quic: unsupported output format\n");
return false;
break;
- case QUIC_IMAGE_TYPE_INVALID:
+ case Constants.QUIC_IMAGE_TYPE_INVALID:
default:
console.log("quic: bad image type\n");
return false;
@@ -1255,8 +1258,8 @@ QuicEncoder.prototype.simple_quic_decode = function(buf)
var stride = 4; /* FIXME - proper stride calc please */
if (!this.quic_decode_begin(buf))
return undefined;
- if (this.type != QUIC_IMAGE_TYPE_RGB32 && this.type != QUIC_IMAGE_TYPE_RGB24
- && this.type != QUIC_IMAGE_TYPE_RGBA)
+ if (this.type != Constants.QUIC_IMAGE_TYPE_RGB32 && this.type != Constants.QUIC_IMAGE_TYPE_RGB24
+ && this.type != Constants.QUIC_IMAGE_TYPE_RGBA)
return undefined;
var out = new Uint8Array(this.width*this.height*4);
out[0] = 69;
@@ -1299,7 +1302,7 @@ function convert_spice_quic_to_web(context, spice_quic)
ret.data[i + 0] = spice_quic.outptr[i + 2];
ret.data[i + 1] = spice_quic.outptr[i + 1];
ret.data[i + 2] = spice_quic.outptr[i + 0];
- if (spice_quic.type !== QUIC_IMAGE_TYPE_RGBA)
+ if (spice_quic.type !== Constants.QUIC_IMAGE_TYPE_RGBA)
ret.data[i + 3] = 255;
else
ret.data[i + 3] = 255 - spice_quic.outptr[i + 3];
@@ -1334,3 +1337,9 @@ if (need_init)
if (!encoder)
throw("quic: failed to create encoder");
}
+
+export {
+ Constants,
+ SpiceQuic,
+ convert_spice_quic_to_web,
+};
diff --git a/resize.js b/resize.js
index 51fb1cc..32282fd 100644
--- a/resize.js
+++ b/resize.js
@@ -80,3 +80,8 @@ function handle_resize(e)
sc.spice_resize_timer = window.setTimeout(resize_helper, 200, sc);
}
+
+export {
+ resize_helper,
+ handle_resize,
+};
diff --git a/simulatecursor.js b/simulatecursor.js
index ffd9089..07d483a 100644
--- a/simulatecursor.js
+++ b/simulatecursor.js
@@ -25,6 +25,10 @@
** is a preloaded cursor available, we will use that. Failing that, we will
** simulate a cursor using an image that is moved around the screen.
**--------------------------------------------------------------------------*/
+
+import { SpiceDataView } from './spicedataview.js';
+import { hex_sha1 } from './thirdparty/sha1.js';
+
var SpiceSimulateCursor = {
cursors : new Array(),
@@ -200,3 +204,5 @@ SpiceSimulateCursor.ICONDIRENTRY.prototype =
return 16;
}
};
+
+export { SpiceSimulateCursor };
diff --git a/spice.html b/spice.html
index 7abfcff..f55f218 100644
--- a/spice.html
+++ b/spice.html
@@ -28,38 +28,27 @@
Spice Javascript client
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
@@ -184,7 +174,7 @@
-
+
diff --git a/spice_auto.html b/spice_auto.html
index 2f04fc9..ad4e171 100644
--- a/spice_auto.html
+++ b/spice_auto.html
@@ -28,38 +28,27 @@
Spice Javascript client
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+