feat: pointer processing logic (#168)

FastPath pointer messages handling:

- Add pointer messages handling in `ironrdp-session`, `ironrdp-client` and `ironrdp-web`
  - Supported bpp's: 1, 16, 24, 32 (8bpp is not supported yet, palette messages handling
    should be added first)
  - Alpha blending is supported, and done via software-based compositing
  - Inverted cursor pixels are supported (FreeRDP do not support them correctly)
  - Large pointers are supported (FreeRDP crashes on them)
  - Cursor caching is supported
- Add new CLI argument to enable/disable pointer rendering (--no-server-pointer)
- `session`/`client` refactoring to facilitate multiple types of session output updates besides
  framebuffer update (e.g. request to hide/show system pointer on client)
- Minor changes in web client typescript code to hide/show cursor on canvas

Closes #108
This commit is contained in:
Vladyslav Nikonov 2023-08-04 20:55:11 +03:00 committed by GitHub
parent 2cb0b476b5
commit 1f401a1350
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
33 changed files with 1459 additions and 129 deletions

View file

@ -74,7 +74,7 @@ fn decode_correctly_decodes_rl_with_leading_ones() {
#[test]
fn decode_correctly_decodes_rlgr3() {
#[allow(clippy::inconsistent_digit_grouping, clippy::unreadable_literal)]
let input = [0b110000_00];
let input = [0b11000000];
let expected = [0, 1, 0, 0];
let mode = EntropyAlgorithm::Rlgr3;