20#ifndef FREERDP_CLIENT_X11_RAIL_H
21#define FREERDP_CLIENT_X11_RAIL_H
23#include <freerdp/client/rail.h>
30enum xf_localmove_state
44 enum xf_localmove_state state;
69 UINT32 clientAreaWidth;
70 UINT32 clientAreaHeight;
74 INT32 windowClientDeltaX;
75 INT32 windowClientDeltaY;
78 UINT32 numWindowRects;
83 UINT32 numVisibilityRects;
86 UINT32 localWindowOffsetCorrX;
87 UINT32 localWindowOffsetCorrY;
89 UINT32 resizeMarginLeft;
90 UINT32 resizeMarginTop;
91 UINT32 resizeMarginRight;
92 UINT32 resizeMarginBottom;
102 xfLocalMove local_move;
107 BOOL rail_ignore_configure;
108 BOOL rail_fullscreen_normalizing;
114typedef struct xf_rail_icon_cache xfRailIconCache;
117BOOL xf_rail_paint(xfContext* xfc,
const RECTANGLE_16* rect);
119BOOL xf_rail_paint_surface(xfContext* xfc, UINT64 windowId,
const RECTANGLE_16* rect);
122BOOL xf_rail_send_client_system_command(xfContext* xfc, UINT64 windowId, UINT16 command);
125BOOL xf_rail_schedule_workarea(xfContext* xfc);
128BOOL xf_rail_send_activate(xfContext* xfc, Window xwindow, BOOL enabled);
130BOOL xf_rail_adjust_position(xfContext* xfc, xfAppWindow* appWindow);
132BOOL xf_rail_end_local_move(xfContext* xfc, xfAppWindow* appWindow);
135BOOL xf_rail_enable_remoteapp_mode(xfContext* xfc);
138BOOL xf_rail_disable_remoteapp_mode(xfContext* xfc);
141xfAppWindow* xf_rail_add_window(xfContext* xfc, UINT64
id, INT32 x, INT32 y, UINT32 width,
142 UINT32 height, UINT32 surfaceId);
144#define xf_rail_return_window(window, alreadyLocked) \
145 xf_rail_return_windowFrom((window), (alreadyLocked), __FILE__, __func__, __LINE__)
146void xf_rail_return_windowFrom(xfAppWindow* window, BOOL alreadyLocked,
const char* file,
147 const char* fkt,
size_t line);
149#define xf_rail_get_window(xfc, id, alreadyLocked) \
150 xf_rail_get_windowFrom((xfc), (id), (alreadyLocked), __FILE__, __func__, __LINE__)
152WINPR_ATTR_MALLOC(xf_rail_return_windowFrom, 1)
153xfAppWindow* xf_rail_get_windowFrom(xfContext* xfc, UINT64
id, BOOL alreadyLocked, const
char* file,
154 const
char* fkt,
size_t line);
157BOOL xf_rail_del_window(xfContext* xfc, UINT64
id);
159int xf_rail_init(xfContext* xfc, RailClientContext* rail);
161int xf_rail_uninit(xfContext* xfc, RailClientContext* rail);