| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- /*
- * noVNC: HTML5 VNC client
- * Copyright (C) 2012 Joel Martin
- * Copyright (C) 2018 Samuel Mannehed for Cendio AB
- * Copyright (C) 2018 Pierre Ossman for Cendio AB
- * 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;
- }
- }
|