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