1 /**
2  * D bindings to Tcl/Tk
3  *
4  * License:
5  *     MIT. See LICENSE for full details.
6  */
7 module tcltk.tkplatdecls;
8 
9 import core.stdc.config;
10 import core.sys.windows.windows;
11 import x11.X;
12 import tcltk.tk;
13 
14 /*
15  * Exported function declarations:
16  */
17 version(Windows)
18 {
19 	extern(C) Window Tk_AttachHWND(Tk_Window tkwin, HWND hwnd) nothrow;
20 	extern(C) HINSTANCE Tk_GetHINSTANCE() nothrow;
21 	extern(C) HWND Tk_GetHWND(Window window) nothrow;
22 	extern(C) Tk_Window Tk_HWNDToWindow(HWND hwnd) nothrow;
23 	extern(C) void Tk_PointerEvent(HWND hwnd, int x, int y) nothrow;
24 	extern(C) int Tk_TranslateWinEvent(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam, LRESULT* result) nothrow;
25 }
26 
27 version(OSX)
28 {
29 	extern(C) void Tk_MacOSXTurnOffMenus();
30 	extern(C) void Tk_MacOSXTkOwnsCursor(int tkOwnsIt);
31 	extern(C) void TkMacOSXInitMenus(Tcl_Interp* interp);
32 	extern(C) void TkMacOSXInitAppleEvents(Tcl_Interp* interp);
33 	extern(C) void TkGenWMConfigureEvent(Tk_Window tkwin, int x, int y, int width, int height, int flags);
34 	extern(C) void TkMacOSXInvalClipRgns(Tk_Window tkwin);
35 	extern(C) void Tk_MacOSXSetupTkNotifier();
36 	extern(C) int Tk_MacOSXIsAppInFront();
37 }
38 
39 struct TkPlatStubHooks;
40 
41 struct TkPlatStubs
42 {
43 	int magic;
44 	TkPlatStubHooks* hooks;
45 
46 	version(Windows)
47 	{
48 		extern(C) Window function(Tk_Window tkwin, HWND hwnd) nothrow tk_AttachHWND;
49 		extern(C) HINSTANCE function() nothrow tk_GetHINSTANCE;
50 		extern(C) HWND function(Window window) nothrow tk_GetHWND;
51 		extern(C) Tk_Window function(HWND hwnd) nothrow tk_HWNDToWindow;
52 		extern(C) void function(HWND hwnd, int x, int y) nothrow tk_PointerEvent;
53 		extern(C) int function(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam, LRESULT* result) nothrow tk_TranslateWinEvent;
54 	}
55 
56 	version(OSX)
57 	{
58 		extern(C) void function() nothrow tk_MacOSXTurnOffMenus;
59 		extern(C) void function(int tkOwnsIt) nothrow tk_MacOSXTkOwnsCursor;
60 		extern(C) void function(Tcl_Interp* interp) nothrow tkMacOSXInitMenus;
61 		extern(C) void function(Tcl_Interp* interp) nothrow tkMacOSXInitAppleEvents;
62 		extern(C) void function(Tk_Window tkwin, int x, int y, int width, int height, int flags) nothrow tkGenWMConfigureEvent;
63 		extern(C) void function(Tk_Window tkwin) nothrow tkMacOSXInvalClipRgns;
64 		extern(C) void function() nothrow tk_MacOSXSetupTkNotifier;
65 		extern(C) int function() nothrow tk_MacOSXIsAppInFront;
66 	}
67 }
68 
69 extern(C) shared TkPlatStubs* tkPlatStubsPtr;