/* * noVNC: HTML5 VNC client * Copyright (C) 2019 The noVNC Authors * Licensed under MPL 2.0 (see LICENSE.txt) * * See README.md for usage and integration instructions. * */ export default class RREDecoder { constructor() { this._subrects = 0; } decodeRect(x, y, width, height, sock, display, depth) { if (this._subrects === 0) { if (sock.rQwait("RRE", 4 + 4)) { return false; } this._subrects = sock.rQshift32(); let color = sock.rQshiftBytes(4); // Background display.fillRect(x, y, width, height, color); } while (this._subrects > 0) { if (sock.rQwait("RRE", 4 + 8)) { return false; } let color = sock.rQshiftBytes(4); let sx = sock.rQshift16(); let sy = sock.rQshift16(); let swidth = sock.rQshift16(); let sheight = sock.rQshift16(); display.fillRect(x + sx, y + sy, swidth, sheight, color); this._subrects--; } return true; } }