UNPKG

novnc

Version:
60 lines (54 loc) 1.52 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.hashUInt8Array = hashUInt8Array; exports.toSigned32bit = toSigned32bit; exports.toSignedRelative16bit = toSignedRelative16bit; exports.toUnsigned32bit = toUnsigned32bit; /* * noVNC: HTML5 VNC client * Copyright (C) 2020 The noVNC Authors * Licensed under MPL 2.0 (see LICENSE.txt) * * See README.md for usage and integration instructions. */ function toUnsigned32bit(toConvert) { return toConvert >>> 0; } function toSigned32bit(toConvert) { return toConvert | 0; } /* * Converts a signed 32bit integer to a signed 16bit int * Uses second most significant bit to represent it is relative */ function toSignedRelative16bit(toConvert) { // TODO: move these so they are not computed with every func call var negmask16 = 1 << 15; var negmask32 = 1 << 31; var relmask16 = 1 << 14; var converted16 = toConvert | 0; // number is negative if ((toConvert & negmask32) != 0) { // clear the 32bit negative bit // not neccessary because the last 16bits will get dropped anyway converted16 *= -1; // set the 16bit negative bit converted16 |= negmask16; // set the relative bit converted16 |= relmask16; } else { // set the relative bit converted16 |= relmask16; } return converted16; } /* Fast hashing function with low entropy */ function hashUInt8Array(data) { var h; for (var i = 0; i < data.length; i++) { h = Math.imul(31, h) + data[i] | 0; } return h; }