Andrej Mitrovic wrote: >Using std.c.windows.windows is going to be problematic because the >WindowsAPI bindings have a void* handle typedef, and >std.c.windows.windows has the same typedef. > >If your library has this function: >foo(HDC hdc) { } > >I can't use it from my code if I use the WindowsAPI bindings: > >import win32.windef; >import win32.winuser; > >{ > HDc hdc; > foo(hdc); // compile error >} > >See: > >test.d(21): Error: function test.Foo (HANDLE hdc) is not callable >using argument types (HANDLE) >test.d(21): Error: cannot implicitly convert expression (hdc) of type >HANDLE to HANDLE > >Personally I wish we got totally rid of std.c.windows.windows and the >ancient DLLs distributed with DMD.
Ok, would something like this work? (for cairo.c.win32) ------------------------------- //Use Andrej Mitrovic's API from //https://github.com/AndrejMitrovic/DWindowsProgramming/tree/master/win32 version(EXT_WIN32_BINDINGS) { import win32.windef; import win32.wingdi; } else { import core.sys.windows.windows; pragma(msg, "cairo.c.win32: LOGFONTW should move to druntime"); enum size_t LF_FACESIZE = 32; struct LOGFONTW { LONG lfHeight; LONG lfWidth; LONG lfEscapement; LONG lfOrientation; LONG lfWeight; BYTE lfItalic; BYTE lfUnderline; BYTE lfStrikeOut; BYTE lfCharSet; BYTE lfOutPrecision; BYTE lfClipPrecision; BYTE lfQuality; BYTE lfPitchAndFamily; WCHAR[LF_FACESIZE] lfFaceName; } } ------------------------------- I guess win32.windef and win32.wingdi contain all needed types? Regarding the LGPL clause in the bindings, that's a leftover from the cairo c headers. Even if that counted as releasing the sources as LGPL I could still relicense them as long as I'm the only contributor. I'll just ask on the cairo mailing list, that seems to be the best solution. -- Johannes Pfau