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_MacOSXSetEmbedHandler(Tk_MacOSXEmbedRegisterWinProc registerWinProcPtr,
30 	// 	Tk_MacOSXEmbedGetGrafPortProc getPortProcPtr,
31 	// 	Tk_MacOSXEmbedMakeContainerExistProc containerExistProcPtr,
32 	// 	Tk_MacOSXEmbedGetClipProc getClipProc,
33 	// 	Tk_MacOSXEmbedGetOffsetInParentProc getOffsetProc) nothrow;
34 	extern(C) void Tk_MacOSXTurnOffMenus();
35 	extern(C) void Tk_MacOSXTkOwnsCursor(int tkOwnsIt);
36 	extern(C) void TkMacOSXInitMenus(Tcl_Interp* interp);
37 	extern(C) void TkMacOSXInitAppleEvents(Tcl_Interp* interp);
38 	extern(C) void TkGenWMConfigureEvent(Tk_Window tkwin, int x, int y, int width, int height, int flags);
39 	extern(C) void TkMacOSXInvalClipRgns(Tk_Window tkwin);
40 	// extern(C) void* TkMacOSXGetDrawablePort(Drawable drawable);
41 	// extern(C) void* TkMacOSXGetRootControl(Drawable drawable);
42 	extern(C) void Tk_MacOSXSetupTkNotifier();
43 	extern(C) int Tk_MacOSXIsAppInFront();
44 }
45 
46 struct TkPlatStubs
47 {
48 	int magic;
49 	void* hooks;
50 
51 	version(Windows)
52 	{
53 		extern(C) Window function(Tk_Window tkwin, HWND hwnd) nothrow tk_AttachHWND;
54 		extern(C) HINSTANCE function() nothrow tk_GetHINSTANCE;
55 		extern(C) HWND function(Window window) nothrow tk_GetHWND;
56 		extern(C) Tk_Window function(HWND hwnd) nothrow tk_HWNDToWindow;
57 		extern(C) void function(HWND hwnd, int x, int y) nothrow tk_PointerEvent;
58 		extern(C) int function(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam, LRESULT* result) nothrow tk_TranslateWinEvent;
59 	}
60 
61 	version(OSX)
62 	{
63 		// extern(C) void function(Tk_MacOSXEmbedRegisterWinProc registerWinProcPtr,
64 		// 		Tk_MacOSXEmbedGetGrafPortProc getPortProcPtr,
65 		// 		Tk_MacOSXEmbedMakeContainerExistProc containerExistProcPtr,
66 		// 		Tk_MacOSXEmbedGetClipProc getClipProc,
67 		// 		Tk_MacOSXEmbedGetOffsetInParentProc getOffsetProc) nothrow tk_MacOSXSetEmbedHandler;
68 		extern(C) void function() nothrow tk_MacOSXTurnOffMenus;
69 		extern(C) void function(int tkOwnsIt) nothrow tk_MacOSXTkOwnsCursor;
70 		extern(C) void function(Tcl_Interp* interp) nothrow tkMacOSXInitMenus;
71 		extern(C) void function(Tcl_Interp* interp) nothrow tkMacOSXInitAppleEvents;
72 		extern(C) void function(Tk_Window tkwin, int x, int y, int width, int height, int flags) nothrow tkGenWMConfigureEvent;
73 		extern(C) void function(Tk_Window tkwin) nothrow tkMacOSXInvalClipRgns;
74 		// extern(C) void* function(Drawable drawable) nothrow tkMacOSXGetDrawablePort;
75 		// extern(C) void* function(Drawable drawable) nothrow tkMacOSXGetRootControl;
76 		extern(C) void function() nothrow tk_MacOSXSetupTkNotifier;
77 		extern(C) int function() nothrow tk_MacOSXIsAppInFront;
78 	}
79 }
80 
81 extern(C) shared const(TkPlatStubs)* tkPlatStubsPtr;