20#ifndef FREERDP_LIB_CORE_CAPABILITIES_H
21#define FREERDP_LIB_CORE_CAPABILITIES_H
25#include <freerdp/freerdp.h>
26#include <freerdp/constants.h>
27#include <freerdp/settings.h>
28#include <freerdp/api.h>
30#include <winpr/stream.h>
33#define CAPSET_TYPE_GENERAL 0x0001
34#define CAPSET_TYPE_BITMAP 0x0002
35#define CAPSET_TYPE_ORDER 0x0003
36#define CAPSET_TYPE_BITMAP_CACHE 0x0004
37#define CAPSET_TYPE_CONTROL 0x0005
38#define CAPSET_TYPE_BITMAP_CACHE_V3_CODEC_ID 0x0006
39#define CAPSET_TYPE_ACTIVATION 0x0007
40#define CAPSET_TYPE_POINTER 0x0008
41#define CAPSET_TYPE_SHARE 0x0009
42#define CAPSET_TYPE_COLOR_CACHE 0x000A
43#define CAPSET_TYPE_SOUND 0x000C
44#define CAPSET_TYPE_INPUT 0x000D
45#define CAPSET_TYPE_FONT 0x000E
46#define CAPSET_TYPE_BRUSH 0x000F
47#define CAPSET_TYPE_GLYPH_CACHE 0x0010
48#define CAPSET_TYPE_OFFSCREEN_CACHE 0x0011
49#define CAPSET_TYPE_BITMAP_CACHE_HOST_SUPPORT 0x0012
50#define CAPSET_TYPE_BITMAP_CACHE_V2 0x0013
51#define CAPSET_TYPE_VIRTUAL_CHANNEL 0x0014
52#define CAPSET_TYPE_DRAW_NINE_GRID_CACHE 0x0015
53#define CAPSET_TYPE_DRAW_GDI_PLUS 0x0016
54#define CAPSET_TYPE_RAIL 0x0017
55#define CAPSET_TYPE_WINDOW 0x0018
56#define CAPSET_TYPE_COMP_DESK 0x0019
57#define CAPSET_TYPE_MULTI_FRAGMENT_UPDATE 0x001A
58#define CAPSET_TYPE_LARGE_POINTER 0x001B
59#define CAPSET_TYPE_SURFACE_COMMANDS 0x001C
60#define CAPSET_TYPE_BITMAP_CODECS 0x001D
61#define CAPSET_TYPE_FRAME_ACKNOWLEDGE 0x001E
63#define CAPSET_HEADER_LENGTH 4
65#define SOURCE_DESCRIPTOR "FREERDP"
68#define CAPS_PROTOCOL_VERSION 0x0200
71#define FASTPATH_OUTPUT_SUPPORTED 0x0001
72#define NO_BITMAP_COMPRESSION_HDR 0x0400
73#define LONG_CREDENTIALS_SUPPORTED 0x0004
74#define AUTORECONNECT_SUPPORTED 0x0008
75#define ENC_SALTED_CHECKSUM 0x0010
78#define DRAW_ALLOW_DYNAMIC_COLOR_FIDELITY 0x02
79#define DRAW_ALLOW_COLOR_SUBSAMPLING 0x04
80#define DRAW_ALLOW_SKIP_ALPHA 0x08
83#define NEGOTIATE_ORDER_SUPPORT 0x0002
84#define ZERO_BOUNDS_DELTA_SUPPORT 0x0008
85#define COLOR_INDEX_SUPPORT 0x0020
86#define SOLID_PATTERN_BRUSH_ONLY 0x0040
87#define ORDER_FLAGS_EXTRA_SUPPORT 0x0080
90#define CACHE_BITMAP_V3_SUPPORT 0x0002
91#define ALTSEC_FRAME_MARKER_SUPPORT 0x0004
94#define SOUND_BEEPS_FLAG 0x0001
97#define INPUT_FLAG_SCANCODES 0x0001
98#define INPUT_FLAG_MOUSEX 0x0004
99#define INPUT_FLAG_FASTPATH_INPUT 0x0008
100#define INPUT_FLAG_UNICODE 0x0010
101#define INPUT_FLAG_FASTPATH_INPUT2 0x0020
102#define INPUT_FLAG_UNUSED1 0x0040
103#define INPUT_FLAG_MOUSE_RELATIVE 0x0080
104#define TS_INPUT_FLAG_MOUSE_HWHEEL 0x0100
105#define TS_INPUT_FLAG_QOE_TIMESTAMPS 0x0200
108#define FONTSUPPORT_FONTLIST 0x0001
111#define BRUSH_DEFAULT 0x00000000
112#define BRUSH_COLOR_8x8 0x00000001
113#define BRUSH_COLOR_FULL 0x00000002
116#define BITMAP_CACHE_V2 0x01
119#define PERSISTENT_KEYS_EXPECTED_FLAG 0x0001
120#define ALLOW_CACHE_WAITING_LIST_FLAG 0x0002
123#define DRAW_NINEGRID_NO_SUPPORT 0x00000000
124#define DRAW_NINEGRID_SUPPORTED 0x00000001
125#define DRAW_NINEGRID_SUPPORTED_V2 0x00000002
128#define DRAW_GDIPLUS_DEFAULT 0x00000000
129#define DRAW_GDIPLUS_SUPPORTED 0x00000001
132#define DRAW_GDIPLUS_CACHE_LEVEL_DEFAULT 0x00000000
133#define DRAW_GDIPLUS_CACHE_LEVEL_ONE 0x00000001
136#define WINDOW_LEVEL_NOT_SUPPORTED 0x00000000
137#define WINDOW_LEVEL_SUPPORTED 0x00000001
138#define WINDOW_LEVEL_SUPPORTED_EX 0x00000002
141#define COMPDESK_NOT_SUPPORTED 0x0000
142#define COMPDESK_SUPPORTED 0x0001
145#define CARDP_CAPS_CAPTURE_NON_CAC 0x00000001
146#define CBY_CAPS 0xCBC0
147#define CBY_CAPSET 0xCBC1
148#define CLY_CAPSET 0xCFC0
149#define CLW_VERSION_1_0 0x0100
150#define CT_TILE_64x64 0x0040
151#define CLW_COL_CONV_ICT 0x1
152#define CLW_XFORM_DWT_53_A 0x1
153#define CLW_ENTROPY_RLGR1 0x01
154#define CLW_ENTROPY_RLGR3 0x04
156FREERDP_LOCAL BOOL rdp_recv_get_active_header(rdpRdp* rdp,
wStream* s, UINT16* pChannelId,
158FREERDP_LOCAL BOOL rdp_recv_demand_active(rdpRdp* rdp,
wStream* s, UINT16 pduSource, UINT16 length);
159FREERDP_LOCAL BOOL rdp_send_demand_active(rdpRdp* rdp);
160FREERDP_LOCAL BOOL rdp_recv_confirm_active(rdpRdp* rdp,
wStream* s, UINT16 pduLength);
161FREERDP_LOCAL BOOL rdp_send_confirm_active(rdpRdp* rdp);
163FREERDP_LOCAL BOOL rdp_read_capability_set(wLog* log,
wStream* sub, UINT16 type,
164 rdpSettings* settings, BOOL isServer);
166FREERDP_LOCAL
const char* rdp_input_flag_string(UINT16 flags,
char* buffer,
size_t len);