summaryrefslogtreecommitdiffstats
path: root/include/freerdp/client/rail.h
blob: 18582b992a0d9b96d03b7c956bb35457cca0f6d2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
/**
 * FreeRDP: A Remote Desktop Protocol Implementation
 * Remote Applications Integrated Locally (RAIL)
 *
 * Copyright 2013 Marc-Andre Moreau <marcandre.moreau@gmail.com>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *	 http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef FREERDP_CHANNEL_RAIL_CLIENT_RAIL_H
#define FREERDP_CHANNEL_RAIL_CLIENT_RAIL_H

#include <freerdp/api.h>
#include <freerdp/types.h>

#include <freerdp/rail.h>
#include <freerdp/message.h>
#include <freerdp/channels/rail.h>

#ifdef __cplusplus
extern "C"
{
#endif

	/**
	 * Client Interface
	 */

	typedef struct s_rail_client_context RailClientContext;

	typedef UINT (*pcRailOnOpen)(RailClientContext* context, BOOL* sendHandshake);

	typedef UINT (*pcRailClientExecute)(RailClientContext* context, const RAIL_EXEC_ORDER* exec);
	typedef UINT (*pcRailClientActivate)(RailClientContext* context,
	                                     const RAIL_ACTIVATE_ORDER* activate);
	typedef UINT (*pcRailClientSystemParam)(RailClientContext* context,
	                                        const RAIL_SYSPARAM_ORDER* sysparam);
	typedef UINT (*pcRailServerSystemParam)(RailClientContext* context,
	                                        const RAIL_SYSPARAM_ORDER* sysparam);
	typedef UINT (*pcRailClientSystemCommand)(RailClientContext* context,
	                                          const RAIL_SYSCOMMAND_ORDER* syscommand);
	typedef UINT (*pcRailClientHandshake)(RailClientContext* context,
	                                      const RAIL_HANDSHAKE_ORDER* handshake);
	typedef UINT (*pcRailServerHandshake)(RailClientContext* context,
	                                      const RAIL_HANDSHAKE_ORDER* handshake);
	typedef UINT (*pcRailServerHandshakeEx)(RailClientContext* context,
	                                        const RAIL_HANDSHAKE_EX_ORDER* handshakeEx);
	typedef UINT (*pcRailClientNotifyEvent)(RailClientContext* context,
	                                        const RAIL_NOTIFY_EVENT_ORDER* notifyEvent);
	typedef UINT (*pcRailClientWindowMove)(RailClientContext* context,
	                                       const RAIL_WINDOW_MOVE_ORDER* windowMove);
	typedef UINT (*pcRailServerLocalMoveSize)(RailClientContext* context,
	                                          const RAIL_LOCALMOVESIZE_ORDER* localMoveSize);
	typedef UINT (*pcRailServerMinMaxInfo)(RailClientContext* context,
	                                       const RAIL_MINMAXINFO_ORDER* minMaxInfo);
	typedef UINT (*pcRailClientInformation)(RailClientContext* context,
	                                        const RAIL_CLIENT_STATUS_ORDER* clientStatus);
	typedef UINT (*pcRailClientSystemMenu)(RailClientContext* context,
	                                       const RAIL_SYSMENU_ORDER* sysmenu);
	typedef UINT (*pcRailServerTaskBarInfo)(RailClientContext* context,
	                                        const RAIL_TASKBAR_INFO_ORDER* taskBarInfo);
	typedef UINT (*pcRailClientLanguageBarInfo)(RailClientContext* context,
	                                            const RAIL_LANGBAR_INFO_ORDER* langBarInfo);
	typedef UINT (*pcRailServerLanguageBarInfo)(RailClientContext* context,
	                                            const RAIL_LANGBAR_INFO_ORDER* langBarInfo);
	typedef UINT (*pcRailClientLanguageIMEInfo)(RailClientContext* context,
	                                            const RAIL_LANGUAGEIME_INFO_ORDER* langImeInfo);
	typedef UINT (*pcRailServerExecuteResult)(RailClientContext* context,
	                                          const RAIL_EXEC_RESULT_ORDER* execResult);
	typedef UINT (*pcRailClientGetAppIdRequest)(RailClientContext* context,
	                                            const RAIL_GET_APPID_REQ_ORDER* getAppIdReq);
	typedef UINT (*pcRailServerGetAppIdResponse)(RailClientContext* context,
	                                             const RAIL_GET_APPID_RESP_ORDER* getAppIdResp);
	typedef UINT (*pcRailServerZOrderSync)(RailClientContext* context,
	                                       const RAIL_ZORDER_SYNC* zorder);
	typedef UINT (*pcRailServerCloak)(RailClientContext* context, const RAIL_CLOAK* cloak);
	typedef UINT (*pcRailClientCloak)(RailClientContext* context, const RAIL_CLOAK* cloak);
	typedef UINT (*pcRailServerPowerDisplayRequest)(RailClientContext* context,
	                                                const RAIL_POWER_DISPLAY_REQUEST* power);
	typedef UINT (*pcRailClientSnapArrange)(RailClientContext* context,
	                                        const RAIL_SNAP_ARRANGE* snap);
	typedef UINT (*pcRailServerGetAppidResponseExtended)(RailClientContext* context,
	                                                     const RAIL_GET_APPID_RESP_EX* id);
	typedef UINT (*pcRailClientCompartmentInfo)(RailClientContext* context,
	                                            const RAIL_COMPARTMENT_INFO_ORDER* compartmentInfo);
	typedef UINT (*pcRailClientTextScale)(RailClientContext* context, UINT32 TextScale);
	typedef UINT (*pcRailClientCaretBlinkRate)(RailClientContext* context, UINT32 CaretBlinkRate);

	struct s_rail_client_context
	{
		void* handle;
		void* custom;

		pcRailClientExecute ClientExecute;
		pcRailClientActivate ClientActivate;
		pcRailClientSystemParam ClientSystemParam;
		pcRailServerSystemParam ServerSystemParam;
		pcRailClientSystemCommand ClientSystemCommand;
		pcRailClientHandshake ClientHandshake;
		pcRailServerHandshake ServerHandshake;
		pcRailServerHandshakeEx ServerHandshakeEx;
		pcRailClientNotifyEvent ClientNotifyEvent;
		pcRailClientWindowMove ClientWindowMove;
		pcRailServerLocalMoveSize ServerLocalMoveSize;
		pcRailServerMinMaxInfo ServerMinMaxInfo;
		pcRailClientInformation ClientInformation;
		pcRailClientSystemMenu ClientSystemMenu;
		pcRailServerTaskBarInfo ServerTaskBarInfo;
		pcRailClientLanguageBarInfo ClientLanguageBarInfo;
		pcRailServerLanguageBarInfo ServerLanguageBarInfo;
		pcRailClientLanguageIMEInfo ClientLanguageIMEInfo;
		pcRailServerExecuteResult ServerExecuteResult;
		pcRailClientGetAppIdRequest ClientGetAppIdRequest;
		pcRailServerGetAppIdResponse ServerGetAppIdResponse;
		pcRailServerZOrderSync ServerZOrderSync;
		pcRailClientCloak ClientCloak;
		pcRailServerCloak ServerCloak;
		pcRailServerPowerDisplayRequest ServerPowerDisplayRequest;
		pcRailClientSnapArrange ClientSnapArrange;
		pcRailServerGetAppidResponseExtended ServerGetAppidResponseExtended;
		pcRailClientCompartmentInfo ClientCompartmentInfo;
		pcRailOnOpen OnOpen;
		pcRailClientTextScale ClientTextScale;
		pcRailClientCaretBlinkRate ClientCaretBlinkRate;
	};

	FREERDP_API UINT client_rail_server_start_cmd(RailClientContext* context);

#ifdef __cplusplus
}
#endif

#endif /* FREERDP_CHANNEL_RAIL_CLIENT_RAIL_H */