xref: /OK3568_Linux_fs/external/xserver/hw/xwin/winclipboard/internal.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun 
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  *Copyright (C) 2003-2004 Harold L Hunt II All Rights Reserved.
4*4882a593Smuzhiyun  *
5*4882a593Smuzhiyun  *Permission is hereby granted, free of charge, to any person obtaining
6*4882a593Smuzhiyun  * a copy of this software and associated documentation files (the
7*4882a593Smuzhiyun  *"Software"), to deal in the Software without restriction, including
8*4882a593Smuzhiyun  *without limitation the rights to use, copy, modify, merge, publish,
9*4882a593Smuzhiyun  *distribute, sublicense, and/or sell copies of the Software, and to
10*4882a593Smuzhiyun  *permit persons to whom the Software is furnished to do so, subject to
11*4882a593Smuzhiyun  *the following conditions:
12*4882a593Smuzhiyun  *
13*4882a593Smuzhiyun  *The above copyright notice and this permission notice shall be
14*4882a593Smuzhiyun  *included in all copies or substantial portions of the Software.
15*4882a593Smuzhiyun  *
16*4882a593Smuzhiyun  *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17*4882a593Smuzhiyun  *EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18*4882a593Smuzhiyun  *MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19*4882a593Smuzhiyun  *NONINFRINGEMENT. IN NO EVENT SHALL HAROLD L HUNT II BE LIABLE FOR
20*4882a593Smuzhiyun  *ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
21*4882a593Smuzhiyun  *CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22*4882a593Smuzhiyun  *WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23*4882a593Smuzhiyun  *
24*4882a593Smuzhiyun  *Except as contained in this notice, the name of Harold L Hunt II
25*4882a593Smuzhiyun  *shall not be used in advertising or otherwise to promote the sale, use
26*4882a593Smuzhiyun  *or other dealings in this Software without prior written authorization
27*4882a593Smuzhiyun  *from Harold L Hunt II.
28*4882a593Smuzhiyun  *
29*4882a593Smuzhiyun  * Authors:	Harold L Hunt II
30*4882a593Smuzhiyun  */
31*4882a593Smuzhiyun 
32*4882a593Smuzhiyun #ifndef WINCLIPBOARD_INTERNAL_H
33*4882a593Smuzhiyun #define WINCLIPBOARD_INTERNAL_H
34*4882a593Smuzhiyun 
35*4882a593Smuzhiyun /* X headers */
36*4882a593Smuzhiyun #include <X11/Xlib.h>
37*4882a593Smuzhiyun 
38*4882a593Smuzhiyun /* Windows headers */
39*4882a593Smuzhiyun #include <X11/Xwindows.h>
40*4882a593Smuzhiyun 
41*4882a593Smuzhiyun #define WIN_XEVENTS_SUCCESS			0
42*4882a593Smuzhiyun #define WIN_XEVENTS_FAILED			1
43*4882a593Smuzhiyun #define WIN_XEVENTS_NOTIFY_DATA			3
44*4882a593Smuzhiyun #define WIN_XEVENTS_NOTIFY_TARGETS		4
45*4882a593Smuzhiyun 
46*4882a593Smuzhiyun #define WM_WM_REINIT                           (WM_USER + 1)
47*4882a593Smuzhiyun #define WM_WM_QUIT                             (WM_USER + 2)
48*4882a593Smuzhiyun 
49*4882a593Smuzhiyun #define ARRAY_SIZE(a)  (sizeof((a)) / sizeof((a)[0]))
50*4882a593Smuzhiyun 
51*4882a593Smuzhiyun /*
52*4882a593Smuzhiyun  * References to external symbols
53*4882a593Smuzhiyun  */
54*4882a593Smuzhiyun 
55*4882a593Smuzhiyun extern void winDebug(const char *format, ...) _X_ATTRIBUTE_PRINTF(1, 2);
56*4882a593Smuzhiyun extern void ErrorF(const char *format, ...) _X_ATTRIBUTE_PRINTF(1, 2);
57*4882a593Smuzhiyun 
58*4882a593Smuzhiyun /*
59*4882a593Smuzhiyun  * winclipboardtextconv.c
60*4882a593Smuzhiyun  */
61*4882a593Smuzhiyun 
62*4882a593Smuzhiyun void
63*4882a593Smuzhiyun  winClipboardDOStoUNIX(char *pszData, int iLength);
64*4882a593Smuzhiyun 
65*4882a593Smuzhiyun void
66*4882a593Smuzhiyun  winClipboardUNIXtoDOS(char **ppszData, int iLength);
67*4882a593Smuzhiyun 
68*4882a593Smuzhiyun /*
69*4882a593Smuzhiyun  * winclipboardthread.c
70*4882a593Smuzhiyun  */
71*4882a593Smuzhiyun 
72*4882a593Smuzhiyun 
73*4882a593Smuzhiyun typedef struct
74*4882a593Smuzhiyun {
75*4882a593Smuzhiyun     Atom atomClipboard;
76*4882a593Smuzhiyun     Atom atomLocalProperty;
77*4882a593Smuzhiyun     Atom atomUTF8String;
78*4882a593Smuzhiyun     Atom atomCompoundText;
79*4882a593Smuzhiyun     Atom atomTargets;
80*4882a593Smuzhiyun } ClipboardAtoms;
81*4882a593Smuzhiyun 
82*4882a593Smuzhiyun /* Modern clipboard API functions */
83*4882a593Smuzhiyun typedef wBOOL WINAPI (*ADDCLIPBOARDFORMATLISTENERPROC)(HWND hwnd);
84*4882a593Smuzhiyun typedef wBOOL WINAPI (*REMOVECLIPBOARDFORMATLISTENERPROC)(HWND hwnd);
85*4882a593Smuzhiyun 
86*4882a593Smuzhiyun extern Bool g_fHasModernClipboardApi;
87*4882a593Smuzhiyun extern ADDCLIPBOARDFORMATLISTENERPROC g_fpAddClipboardFormatListener;
88*4882a593Smuzhiyun extern REMOVECLIPBOARDFORMATLISTENERPROC g_fpRemoveClipboardFormatListener;
89*4882a593Smuzhiyun 
90*4882a593Smuzhiyun /*
91*4882a593Smuzhiyun  * winclipboardwndproc.c
92*4882a593Smuzhiyun  */
93*4882a593Smuzhiyun 
94*4882a593Smuzhiyun Bool winClipboardFlushWindowsMessageQueue(HWND hwnd);
95*4882a593Smuzhiyun 
96*4882a593Smuzhiyun LRESULT CALLBACK
97*4882a593Smuzhiyun winClipboardWindowProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
98*4882a593Smuzhiyun 
99*4882a593Smuzhiyun typedef struct
100*4882a593Smuzhiyun {
101*4882a593Smuzhiyun   Display *pClipboardDisplay;
102*4882a593Smuzhiyun   Window iClipboardWindow;
103*4882a593Smuzhiyun   ClipboardAtoms *atoms;
104*4882a593Smuzhiyun } ClipboardWindowCreationParams;
105*4882a593Smuzhiyun 
106*4882a593Smuzhiyun /*
107*4882a593Smuzhiyun  * winclipboardxevents.c
108*4882a593Smuzhiyun  */
109*4882a593Smuzhiyun 
110*4882a593Smuzhiyun typedef struct
111*4882a593Smuzhiyun {
112*4882a593Smuzhiyun   Bool fUseUnicode;
113*4882a593Smuzhiyun   Atom *targetList;
114*4882a593Smuzhiyun } ClipboardConversionData;
115*4882a593Smuzhiyun 
116*4882a593Smuzhiyun int
117*4882a593Smuzhiyun winClipboardFlushXEvents(HWND hwnd,
118*4882a593Smuzhiyun                          Window iWindow, Display * pDisplay, ClipboardConversionData *data, ClipboardAtoms *atom);
119*4882a593Smuzhiyun 
120*4882a593Smuzhiyun 
121*4882a593Smuzhiyun Atom
122*4882a593Smuzhiyun winClipboardGetLastOwnedSelectionAtom(ClipboardAtoms *atoms);
123*4882a593Smuzhiyun 
124*4882a593Smuzhiyun void
125*4882a593Smuzhiyun winClipboardInitMonitoredSelections(void);
126*4882a593Smuzhiyun 
127*4882a593Smuzhiyun #endif
128