cscg24-guacamole

CSCG 2024 Challenge 'Guacamole Mashup'
git clone https://git.sinitax.com/sinitax/cscg24-guacamole
Log | Files | Refs | sfeed.txt

pointer.h (3255B)


      1/**
      2 * FreeRDP: A Remote Desktop Protocol Implementation
      3 * Pointer Updates Interface API
      4 *
      5 * Copyright 2011 Marc-Andre Moreau <marcandre.moreau@gmail.com>
      6 *
      7 * Licensed under the Apache License, Version 2.0 (the "License");
      8 * you may not use this file except in compliance with the License.
      9 * You may obtain a copy of the License at
     10 *
     11 *     http://www.apache.org/licenses/LICENSE-2.0
     12 *
     13 * Unless required by applicable law or agreed to in writing, software
     14 * distributed under the License is distributed on an "AS IS" BASIS,
     15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     16 * See the License for the specific language governing permissions and
     17 * limitations under the License.
     18 */
     19
     20#ifndef FREERDP_UPDATE_POINTER_H
     21#define FREERDP_UPDATE_POINTER_H
     22
     23#include <freerdp/types.h>
     24
     25#define PTR_MSG_TYPE_SYSTEM 0x0001
     26#define PTR_MSG_TYPE_POSITION 0x0003
     27#define PTR_MSG_TYPE_COLOR 0x0006
     28#define PTR_MSG_TYPE_CACHED 0x0007
     29#define PTR_MSG_TYPE_POINTER 0x0008
     30#define PTR_MSG_TYPE_POINTER_LARGE 0x0009
     31
     32#define SYSPTR_NULL 0x00000000
     33#define SYSPTR_DEFAULT 0x00007F00
     34
     35struct _POINTER_POSITION_UPDATE
     36{
     37	UINT32 xPos;
     38	UINT32 yPos;
     39};
     40typedef struct _POINTER_POSITION_UPDATE POINTER_POSITION_UPDATE;
     41
     42struct _POINTER_SYSTEM_UPDATE
     43{
     44	UINT32 type;
     45};
     46typedef struct _POINTER_SYSTEM_UPDATE POINTER_SYSTEM_UPDATE;
     47
     48struct _POINTER_COLOR_UPDATE
     49{
     50	UINT32 cacheIndex;
     51	UINT32 xPos;
     52	UINT32 yPos;
     53	UINT32 width;
     54	UINT32 height;
     55	UINT32 lengthAndMask;
     56	UINT32 lengthXorMask;
     57	BYTE* xorMaskData;
     58	BYTE* andMaskData;
     59};
     60typedef struct _POINTER_COLOR_UPDATE POINTER_COLOR_UPDATE;
     61
     62struct _POINTER_LARGE_UPDATE
     63{
     64	UINT16 xorBpp;
     65	UINT16 cacheIndex;
     66	UINT16 hotSpotX;
     67	UINT16 hotSpotY;
     68	UINT16 width;
     69	UINT16 height;
     70	UINT32 lengthAndMask;
     71	UINT32 lengthXorMask;
     72	BYTE* xorMaskData;
     73	BYTE* andMaskData;
     74};
     75typedef struct _POINTER_LARGE_UPDATE POINTER_LARGE_UPDATE;
     76
     77struct _POINTER_NEW_UPDATE
     78{
     79	UINT32 xorBpp;
     80	POINTER_COLOR_UPDATE colorPtrAttr;
     81};
     82typedef struct _POINTER_NEW_UPDATE POINTER_NEW_UPDATE;
     83
     84struct _POINTER_CACHED_UPDATE
     85{
     86	UINT32 cacheIndex;
     87};
     88typedef struct _POINTER_CACHED_UPDATE POINTER_CACHED_UPDATE;
     89
     90typedef BOOL (*pPointerPosition)(rdpContext* context,
     91                                 const POINTER_POSITION_UPDATE* pointer_position);
     92typedef BOOL (*pPointerSystem)(rdpContext* context, const POINTER_SYSTEM_UPDATE* pointer_system);
     93typedef BOOL (*pPointerColor)(rdpContext* context, const POINTER_COLOR_UPDATE* pointer_color);
     94typedef BOOL (*pPointerNew)(rdpContext* context, const POINTER_NEW_UPDATE* pointer_new);
     95typedef BOOL (*pPointerCached)(rdpContext* context, const POINTER_CACHED_UPDATE* pointer_cached);
     96typedef BOOL (*pPointerLarge)(rdpContext* context, const POINTER_LARGE_UPDATE* pointer_large);
     97
     98struct rdp_pointer_update
     99{
    100	rdpContext* context;     /* 0 */
    101	UINT32 paddingA[16 - 1]; /* 1 */
    102
    103	pPointerPosition PointerPosition; /* 16 */
    104	pPointerSystem PointerSystem;     /* 17 */
    105	pPointerColor PointerColor;       /* 18 */
    106	pPointerNew PointerNew;           /* 19 */
    107	pPointerCached PointerCached;     /* 20 */
    108	pPointerLarge PointerLarge;       /* 21 */
    109	UINT32 paddingB[32 - 22];         /* 22 */
    110};
    111typedef struct rdp_pointer_update rdpPointerUpdate;
    112
    113#endif /* FREERDP_UPDATE_POINTER_H */