/** * FreeRDP: A Remote Desktop Protocol Client * X11 Client * * Copyright 2011 Marc-Andre Moreau * * 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 __XFREERDP_H #define __XFREERDP_H #include #include #include #include #include #include #include typedef struct xf_info xfInfo; #include "xf_window.h" #include "xf_monitor.h" #define SET_XFI(_instance, _xfi) (_instance)->param1 = _xfi #define GET_XFI(_instance) ((xfInfo*) ((_instance)->param1)) #define SET_CHANMAN(_instance, _chanman) (_instance)->param2 = _chanman #define GET_CHANMAN(_instance) ((rdpChanMan*) ((_instance)->param2)) struct xf_WorkArea { uint32 x; uint32 y; uint32 width; uint32 height; }; typedef struct xf_WorkArea xfWorkArea; struct xf_info { GC gc; int bpp; int xfds; int depth; int width; int height; int srcBpp; GC gc_mono; Screen* screen; XImage* image; Pixmap primary; Pixmap drawing; Visual* visual; Display* display; Pixmap bitmap_mono; Colormap colormap; int screen_number; int scanline_pad; boolean big_endian; boolean fullscreen; boolean unobscured; boolean decoration; freerdp* instance; xfWindow* window; xfWorkArea workArea; int current_desktop; boolean remote_app; HCLRCONV clrconv; rdpRail* rail; rdpCache* cache; boolean focused; boolean mouse_active; boolean mouse_motion; boolean fullscreen_toggle; uint32 keyboard_layout_id; boolean pressed_keys[256]; XModifierKeymap* modifier_map; XSetWindowAttributes attribs; boolean complex_regions; VIRTUAL_SCREEN vscreen; uint8* bmp_codec_none; void* rfx_context; Atom _NET_WM_ICON; Atom _MOTIF_WM_HINTS; Atom _NET_CURRENT_DESKTOP; Atom _NET_WORKAREA; Atom _NET_WM_STATE; Atom _NET_WM_STATE_FULLSCREEN; Atom _NET_WM_STATE_SKIP_TASKBAR; Atom _NET_WM_STATE_SKIP_PAGER; Atom _NET_WM_WINDOW_TYPE; Atom _NET_WM_WINDOW_TYPE_NORMAL; Atom _NET_WM_WINDOW_TYPE_DIALOG; Atom _NET_WM_WINDOW_TYPE_UTILITY; Atom _NET_WM_MOVERESIZE; }; void xf_toggle_fullscreen(xfInfo* xfi); boolean xf_post_connect(freerdp* instance); #ifdef WITH_DEBUG_X11 #define DEBUG_X11(fmt, ...) DEBUG_CLASS(X11, fmt, ## __VA_ARGS__) #else #define DEBUG_X11(fmt, ...) DEBUG_NULL(fmt, ## __VA_ARGS__) #endif #ifdef WITH_DEBUG_X11_LOCAL_MOVESIZE #define DEBUG_X11_LMS(fmt, ...) DEBUG_CLASS(X11_LMS, fmt, ## __VA_ARGS__) #else #define DEBUG_X11_LMS(fmt, ...) DEBUG_NULL(fmt, ## __VA_ARGS__) #endif #endif /* __XFREERDP_H */