#undef WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <ddk/ntddk.h>
+#include <win32k/text.h>
+#include <win32k/metafile.h>
+#include <win32k/dc.h>
+#include <rosrtl/devmode.h>
+#include <rosrtl/logfont.h>
+#include <internal/heap.h>
+
+/*
+ * @implemented
+ */
+int
+STDCALL
+AddFontResourceExA ( LPCSTR lpszFilename, DWORD fl, PVOID pvReserved )
+{
+ NTSTATUS Status;
+ PWSTR FilenameW;
+ int rc = 0;
+
+ Status = HEAP_strdupA2W ( &FilenameW, lpszFilename );
+ if ( !NT_SUCCESS (Status) )
+ SetLastError (RtlNtStatusToDosError(Status));
+ else
+ {
+ rc = AddFontResourceExW ( FilenameW, fl, pvReserved );
+
+ HEAP_free ( &FilenameW );
+ }
+ return rc;
+}
+/*
+ * @implemented
+ */
int
STDCALL
-AddFontResourceA(
- LPCSTR a0
- )
+AddFontResourceA ( LPCSTR lpszFilename )
{
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+ return AddFontResourceExA ( lpszFilename, 0, 0 );
}
+/*
+ * @implemented
+ */
HMETAFILE
STDCALL
CopyMetaFileA(
- HMETAFILE a0,
- LPCSTR a1
+ HMETAFILE Src,
+ LPCSTR lpszFile
)
{
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+ NTSTATUS Status;
+ PWSTR lpszFileW;
+ HMETAFILE rc = 0;
+
+ Status = HEAP_strdupA2W ( &lpszFileW, lpszFile );
+ if (!NT_SUCCESS (Status))
+ SetLastError (RtlNtStatusToDosError(Status));
+ else
+ {
+ rc = NtGdiCopyMetaFile ( Src, lpszFileW );
+
+ HEAP_free ( lpszFileW );
+ }
+
+ return rc;
}
+
+/*
+ * @implemented
+ */
HDC
STDCALL
CreateICA(
- LPCSTR a0,
- LPCSTR a1,
- LPCSTR a2,
- CONST DEVMODEA * a3
- )
-{
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
-}
-
-
+ LPCSTR lpszDriver,
+ LPCSTR lpszDevice,
+ LPCSTR lpszOutput,
+ CONST DEVMODEA * lpdvmInit
+ )
+{
+ NTSTATUS Status;
+ LPWSTR lpszDriverW, lpszDeviceW, lpszOutputW;
+ DEVMODEW dvmInitW;
+ HDC rc = 0;
+
+ Status = HEAP_strdupA2W ( &lpszDriverW, lpszDriver );
+ if (!NT_SUCCESS (Status))
+ SetLastError (RtlNtStatusToDosError(Status));
+ else
+ {
+ Status = HEAP_strdupA2W ( &lpszDeviceW, lpszDevice );
+ if (!NT_SUCCESS (Status))
+ SetLastError (RtlNtStatusToDosError(Status));
+ else
+ {
+ Status = HEAP_strdupA2W ( &lpszOutputW, lpszOutput );
+ if (!NT_SUCCESS (Status))
+ SetLastError (RtlNtStatusToDosError(Status));
+ else
+ {
+ if ( lpdvmInit )
+ RosRtlDevModeA2W ( &dvmInitW, (const LPDEVMODEA)lpdvmInit );
+
+ rc = NtGdiCreateIC ( lpszDriverW,
+ lpszDeviceW,
+ lpszOutputW,
+ lpdvmInit ? &dvmInitW : NULL );
+
+ HEAP_free ( lpszOutputW );
+ }
+ HEAP_free ( lpszDeviceW );
+ }
+ HEAP_free ( lpszDriverW );
+ }
+ return rc;
+}
+
+
+/*
+ * @implemented
+ */
HDC
STDCALL
CreateMetaFileA(
- LPCSTR a0
+ LPCSTR lpszFile
)
{
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+ NTSTATUS Status;
+ PWSTR lpszFileW;
+ HDC rc = 0;
+
+ Status = HEAP_strdupA2W ( &lpszFileW, lpszFile );
+ if (!NT_SUCCESS (Status))
+ SetLastError (RtlNtStatusToDosError(Status));
+ else
+ {
+ rc = NtGdiCreateMetaFile ( lpszFileW );
+
+ HEAP_free ( lpszFileW );
+ }
+ return rc;
}
+/*
+ * @implemented
+ */
BOOL
STDCALL
CreateScalableFontResourceA(
- DWORD a0,
- LPCSTR a1,
- LPCSTR a2,
- LPCSTR a3
- )
-{
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return FALSE;
-}
-
-
+ DWORD fdwHidden,
+ LPCSTR lpszFontRes,
+ LPCSTR lpszFontFile,
+ LPCSTR lpszCurrentPath
+ )
+{
+ NTSTATUS Status;
+ LPWSTR lpszFontResW, lpszFontFileW, lpszCurrentPathW;
+ BOOL rc = FALSE;
+
+ Status = HEAP_strdupA2W ( &lpszFontResW, lpszFontRes );
+ if (!NT_SUCCESS (Status))
+ SetLastError (RtlNtStatusToDosError(Status));
+ else
+ {
+ Status = HEAP_strdupA2W ( &lpszFontFileW, lpszFontFile );
+ if (!NT_SUCCESS (Status))
+ SetLastError (RtlNtStatusToDosError(Status));
+ else
+ {
+ Status = HEAP_strdupA2W ( &lpszCurrentPathW, lpszCurrentPath );
+ if (!NT_SUCCESS (Status))
+ SetLastError (RtlNtStatusToDosError(Status));
+ else
+ {
+ rc = NtGdiCreateScalableFontResource ( fdwHidden,
+ lpszFontResW,
+ lpszFontFileW,
+ lpszCurrentPathW );
+
+ HEAP_free ( lpszCurrentPathW );
+ }
+
+ HEAP_free ( lpszFontFileW );
+ }
+
+ HEAP_free ( lpszFontResW );
+ }
+ return rc;
+}
+
+
+/*
+ * @unimplemented
+ */
int
STDCALL
DeviceCapabilitiesExA(
- LPCSTR a0,
- LPCSTR a1,
- WORD a2,
- LPSTR a3,
- CONST DEVMODEA *a4
+ LPCSTR pDevice,
+ LPCSTR pPort,
+ WORD fwCapability,
+ LPSTR pOutput,
+ CONST DEVMODEA *pDevMode
)
{
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return 0;
}
+/*
+ * @unimplemented
+ */
int
STDCALL
-EnumFontFamiliesExA(
- HDC a0,
- LPLOGFONT a1,
- FONTENUMEXPROC a2,
- LPARAM a3,
- DWORD a4
+EnumFontFamiliesExA (
+ HDC hdc,
+ LPLOGFONTA lpLogFont,
+ FONTENUMEXPROCA lpEnumFontFamProc,
+ LPARAM lParam,
+ DWORD dwFlags
)
{
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return 0;
+#if 0
+ LOGFONTW LogFontW;
+
+ RosRtlLogFontA2W ( &LogFontW, lpLogFont );
+
+ /* no need to convert LogFontW back to lpLogFont b/c it's an [in] parameter only */
+ return NtGdiEnumFontFamiliesEx ( hdc, &LogFontW, lpEnumFontFamProc, lParam, dwFlags );
+#endif
}
+/*
+ * @unimplemented
+ */
int
STDCALL
EnumFontFamiliesA(
- HDC a0,
- LPCSTR a1,
- FONTENUMPROC a2,
- LPARAM a3
+ HDC hdc,
+ LPCSTR lpszFamily,
+ FONTENUMPROCA lpEnumFontFamProc,
+ LPARAM lParam
)
{
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return 0;
+#if 0
+ NTSTATUS Status;
+ LPWSTR lpszFamilyW;
+ int rc = 0;
+
+ Status = HEAP_strdupA2W ( &lpszFamilyW, lpszFamily );
+ if (!NT_SUCCESS (Status))
+ SetLastError (RtlNtStatusToDosError(Status));
+ else
+ {
+ rc = NtGdiEnumFontFamilies ( hdc, lpszFamilyW, lpEnumFontFamProc, lParam );
+
+ HEAP_free ( lpszFamilyW );
+ }
+
+ return rc;
+#endif
}
+/*
+ * @implemented
+ */
int
STDCALL
-EnumFontsA(
- HDC a0,
- LPCSTR a1,
- ENUMFONTSPROC a2,
- LPARAM a3
- )
-{
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+EnumFontsA (
+ HDC hDC,
+ LPCSTR lpFaceName,
+ FONTENUMPROCA FontFunc,
+ LPARAM lParam
+ )
+{
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return 0;
+#if 0
+ NTSTATUS Status;
+ LPWSTR lpFaceNameW;
+ int rc = 0;
+
+ Status = HEAP_strdupA2W ( &lpFaceNameW, lpFaceName );
+ if (!NT_SUCCESS (Status))
+ SetLastError (RtlNtStatusToDosError(Status));
+ else
+ {
+ rc = NtGdiEnumFonts ( hDC, lpFaceNameW, FontFunc, lParam );
+
+ HEAP_free ( lpFaceNameW );
+ }
+ return rc;
+#endif
}
+/*
+ * @unimplemented
+ */
BOOL
STDCALL
-GetCharWidthA(
- HDC a0,
- UINT a1,
- UINT a2,
- LPINT a3
+GetCharWidthA (
+ HDC hdc,
+ UINT iFirstChar,
+ UINT iLastChar,
+ LPINT lpBuffer
)
{
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return FALSE;
+ /* FIXME what to do with iFirstChar and iLastChar ??? */
+ return NtGdiGetCharWidth ( hdc, iFirstChar, iLastChar, lpBuffer );
}
+/*
+ * @unimplemented
+ */
BOOL
STDCALL
GetCharWidth32A(
- HDC a0,
- UINT a1,
- UINT a2,
- LPINT a3
+ HDC hdc,
+ UINT iFirstChar,
+ UINT iLastChar,
+ LPINT lpBuffer
)
{
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return FALSE;
+ /* FIXME what to do with iFirstChar and iLastChar ??? */
+ return NtGdiGetCharWidth32 ( hdc, iFirstChar, iLastChar, lpBuffer );
}
+/*
+ * @unimplemented
+ */
BOOL
APIENTRY
GetCharWidthFloatA(
- HDC a0,
- UINT a1,
- UINT a2,
- PFLOAT a3
+ HDC hdc,
+ UINT iFirstChar,
+ UINT iLastChar,
+ PFLOAT pxBuffer
)
{
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return FALSE;
+ /* FIXME what to do with iFirstChar and iLastChar ??? */
+ return NtGdiGetCharWidthFloat ( hdc, iFirstChar, iLastChar, pxBuffer );
}
+/*
+ * @unimplemented
+ */
BOOL
APIENTRY
GetCharABCWidthsA(
- HDC a0,
- UINT a1,
- UINT a2,
- LPABC a3
+ HDC hdc,
+ UINT uFirstChar,
+ UINT uLastChar,
+ LPABC lpabc
)
{
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return FALSE;
+ /* FIXME what to do with uFirstChar and uLastChar ??? */
+ return NtGdiGetCharABCWidths ( hdc, uFirstChar, uLastChar, lpabc );
}
+/*
+ * @unimplemented
+ */
BOOL
APIENTRY
GetCharABCWidthsFloatA(
- HDC a0,
- UINT a1,
- UINT a2,
- LPABCFLOAT a3
+ HDC hdc,
+ UINT iFirstChar,
+ UINT iLastChar,
+ LPABCFLOAT lpABCF
)
{
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return FALSE;
+ /* FIXME what to do with iFirstChar and iLastChar ??? */
+ return NtGdiGetCharABCWidthsFloat ( hdc, iFirstChar, iLastChar, lpABCF );
}
+/*
+ * @implemented
+ */
DWORD
STDCALL
GetGlyphOutlineA(
- HDC a0,
- UINT a1,
- UINT a2,
- LPGLYPHMETRICS a3,
- DWORD a4,
- LPVOID a5,
- CONST MAT2 *a6
+ HDC hdc,
+ UINT uChar,
+ UINT uFormat,
+ LPGLYPHMETRICS lpgm,
+ DWORD cbBuffer,
+ LPVOID lpvBuffer,
+ CONST MAT2 *lpmat2
)
{
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+ return NtGdiGetGlyphOutline ( hdc, uChar, uFormat, lpgm, cbBuffer, lpvBuffer, (CONST LPMAT2)lpmat2 );
}
+/*
+ * @implemented
+ */
HMETAFILE
STDCALL
GetMetaFileA(
- LPCSTR a0
+ LPCSTR lpszMetaFile
)
{
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+ NTSTATUS Status;
+ LPWSTR lpszMetaFileW;
+ HMETAFILE rc = 0;
+
+ Status = HEAP_strdupA2W ( &lpszMetaFileW, lpszMetaFile );
+ if (!NT_SUCCESS (Status))
+ SetLastError (RtlNtStatusToDosError(Status));
+ else
+ {
+ rc = NtGdiGetMetaFile ( lpszMetaFileW );
+
+ HEAP_free ( lpszMetaFileW );
+ }
+
+ return rc;
}
+/*
+ * @unimplemented
+ */
UINT
APIENTRY
GetOutlineTextMetricsA(
- HDC a0,
- UINT a1,
- LPOUTLINETEXTMETRICA a2
+ HDC hdc,
+ UINT cbData,
+ LPOUTLINETEXTMETRICA lpOTM
)
{
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return 0;
}
+/*
+ * @implemented
+ */
BOOL
APIENTRY
-GetTextExtentPoint32A(
- HDC hDc,
- LPCSTR a1,
- int a2,
- LPSIZE a3
+GetTextExtentExPointA(
+ HDC hdc,
+ LPCSTR lpszStr,
+ int cchString,
+ int nMaxExtent,
+ LPINT lpnFit,
+ LPINT alpDx,
+ LPSIZE lpSize
)
{
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return FALSE;
-}
+ NTSTATUS Status;
+ LPWSTR lpszStrW;
+ BOOL rc = 0;
+ Status = HEAP_strdupA2W ( &lpszStrW, lpszStr );
+ if (!NT_SUCCESS (Status))
+ SetLastError (RtlNtStatusToDosError(Status));
+ else
+ {
+ rc = NtGdiGetTextExtentExPoint (
+ hdc, lpszStrW, cchString, nMaxExtent, lpnFit, alpDx, lpSize );
-BOOL
-APIENTRY
-GetTextExtentExPointA(
- HDC hDc,
- LPCSTR a1,
- int a2,
- int a3,
- LPINT a4,
- LPINT a5,
- LPSIZE a6
- )
-{
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return FALSE;
+ HEAP_free ( lpszStrW );
+ }
+
+ return rc;
}
+/*
+ * @unimplemented
+ */
DWORD
STDCALL
GetCharacterPlacementA(
LPCSTR a1,
int a2,
int a3,
- LPGCP_RESULTS a4,
+ LPGCP_RESULTSA a4,
DWORD a5
)
{
}
+/*
+ * @implemented
+ */
HDC
STDCALL
ResetDCA(
- HDC a0,
- CONST DEVMODEA *a1
+ HDC hdc,
+ CONST DEVMODEA *lpInitData
)
{
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+ DEVMODEW InitDataW;
+
+ RosRtlDevModeA2W ( &InitDataW, (CONST LPDEVMODEA)lpInitData );
+
+ return NtGdiResetDC ( hdc, &InitDataW );
}
+/*
+ * @implemented
+ */
BOOL
STDCALL
RemoveFontResourceA(
- LPCSTR a0
+ LPCSTR lpFileName
)
{
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return FALSE;
+ NTSTATUS Status;
+ LPWSTR lpFileNameW;
+ BOOL rc = 0;
+
+ Status = HEAP_strdupA2W ( &lpFileNameW, lpFileName );
+ if (!NT_SUCCESS (Status))
+ SetLastError (RtlNtStatusToDosError(Status));
+ else
+ {
+ rc = NtGdiRemoveFontResource ( lpFileNameW );
+
+ HEAP_free ( lpFileNameW );
+ }
+
+ return rc;
}
-HENHMETAFILE
-STDCALL
+/*
+ * @implemented
+ */
+HENHMETAFILE
+STDCALL
CopyEnhMetaFileA(
- HENHMETAFILE a0,
- LPCSTR a1
+ HENHMETAFILE hemfSrc,
+ LPCSTR lpszFile
)
{
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+ NTSTATUS Status;
+ LPWSTR lpszFileW;
+ HENHMETAFILE rc = 0;
+
+ Status = HEAP_strdupA2W ( &lpszFileW, lpszFile );
+ if (!NT_SUCCESS (Status))
+ SetLastError (RtlNtStatusToDosError(Status));
+ else
+ {
+ rc = NtGdiCopyEnhMetaFile ( hemfSrc, lpszFileW );
+
+ HEAP_free ( lpszFileW );
+ }
+ return rc;
}
-HDC
-STDCALL
+/*
+ * @implemented
+ */
+HDC
+STDCALL
CreateEnhMetaFileA(
- HDC a0,
- LPCSTR a1,
- CONST RECT *a2,
- LPCSTR a3
+ HDC hdc,
+ LPCSTR lpFileName,
+ CONST RECT *lpRect,
+ LPCSTR lpDescription
)
{
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+ NTSTATUS Status;
+ LPWSTR lpFileNameW, lpDescriptionW;
+ HDC rc = 0;
+
+ Status = HEAP_strdupA2W ( &lpFileNameW, lpFileName );
+ if (!NT_SUCCESS (Status))
+ SetLastError (RtlNtStatusToDosError(Status));
+ else
+ {
+ Status = HEAP_strdupA2W ( &lpDescriptionW, lpDescription );
+ if (!NT_SUCCESS (Status))
+ SetLastError (RtlNtStatusToDosError(Status));
+ else
+ {
+ rc = NtGdiCreateEnhMetaFile (
+ hdc, lpFileNameW, (CONST LPRECT)lpRect, lpDescriptionW );
+
+ HEAP_free ( lpDescriptionW );
+ }
+ HEAP_free ( lpFileNameW );
+ }
+
+ return rc;
}
-HENHMETAFILE
-STDCALL
+/*
+ * @implemented
+ */
+HENHMETAFILE
+STDCALL
GetEnhMetaFileA(
- LPCSTR a0
+ LPCSTR lpszMetaFile
)
{
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
-}
+ NTSTATUS Status;
+ LPWSTR lpszMetaFileW;
+ HENHMETAFILE rc = 0;
+ Status = HEAP_strdupA2W ( &lpszMetaFileW, lpszMetaFile );
+ if (!NT_SUCCESS (Status))
+ SetLastError (RtlNtStatusToDosError(Status));
+ else
+ {
+ rc = NtGdiGetEnhMetaFile ( lpszMetaFileW );
-UINT
-STDCALL
-GetEnhMetaFileDescriptionA(
- HENHMETAFILE a0,
- UINT a1,
- LPSTR a2
- )
-{
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+ HEAP_free ( lpszMetaFileW );
+ }
+
+ return rc;
}
+/*
+ * @implemented
+ */
+UINT
+STDCALL
+GetEnhMetaFileDescriptionA(
+ HENHMETAFILE hemf,
+ UINT cchBuffer,
+ LPSTR lpszDescription
+ )
+{
+ NTSTATUS Status;
+ LPWSTR lpszDescriptionW;
+ UINT rc;
+
+ if ( lpszDescription && cchBuffer )
+ {
+ lpszDescriptionW = (LPWSTR)HEAP_alloc ( cchBuffer*sizeof(WCHAR) );
+ if ( !lpszDescriptionW )
+ {
+ SetLastError (RtlNtStatusToDosError(STATUS_NO_MEMORY));
+ return 0;
+ }
+ }
+ else
+ lpszDescriptionW = NULL;
+
+ rc = NtGdiGetEnhMetaFileDescription ( hemf, cchBuffer, lpszDescriptionW );
+
+ if ( lpszDescription && cchBuffer )
+ {
+ Status = RtlUnicodeToMultiByteN ( lpszDescription,
+ cchBuffer,
+ NULL,
+ lpszDescriptionW,
+ cchBuffer );
+ HEAP_free ( lpszDescriptionW );
+ if ( !NT_SUCCESS(Status) )
+ {
+ SetLastError (RtlNtStatusToDosError(Status));
+ return 0;
+ }
+ }
+
+ return rc;
+}
+
+
+/*
+ * @unimplemented
+ */
int
STDCALL
StartDocA(
HDC hdc,
- CONST DOCINFO *a1
+ CONST DOCINFOA *a1
)
{
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
}
+/*
+ * @unimplemented
+ */
int
STDCALL
GetObjectA(
LPVOID a2
)
{
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+ return NtGdiGetObject ( a0, a1, a2 );
}
+/*
+ * @unimplemented
+ */
BOOL
STDCALL
PolyTextOutA(
HDC hdc,
- CONST POLYTEXT *a1,
+ CONST POLYTEXTA *a1,
int a2
)
{
}
+/*
+ * @unimplemented
+ */
int
STDCALL
GetTextFaceA(
}
+/*
+ * @unimplemented
+ */
DWORD
STDCALL
GetKerningPairsA(
}
+/*
+ * @unimplemented
+ */
BOOL
STDCALL
GetLogColorSpaceA(
HCOLORSPACE a0,
- LPLOGCOLORSPACE a1,
+ LPLOGCOLORSPACEA a1,
DWORD a2
)
{
}
+/*
+ * @unimplemented
+ */
HCOLORSPACE
STDCALL
CreateColorSpaceA(
- LPLOGCOLORSPACE a0
+ LPLOGCOLORSPACEA a0
)
{
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
}
+/*
+ * @unimplemented
+ */
WINBOOL
STDCALL
GetICMProfileA(
}
+/*
+ * @unimplemented
+ */
BOOL
STDCALL
SetICMProfileA(
}
+/*
+ * @unimplemented
+ */
int
STDCALL
EnumICMProfilesA(
HDC a0,
- ICMENUMPROC a1,
+ ICMENUMPROCA a1,
LPARAM a2
)
{
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+ /*
+ * FIXME - call NtGdiEnumICMProfiles with NULL for lpstrBuffer
+ * to find out how big a buffer we need. Then allocate that buffer
+ * and call NtGdiEnumICMProfiles again to have the buffer filled.
+ *
+ * Finally, step through the buffer ( MULTI-SZ recommended for format ),
+ * and convert each string to ANSI, calling the user's callback function
+ * until we run out of strings or the user returns FALSE
+ */
+
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return 0;
}
+/*
+ * @unimplemented
+ */
BOOL
STDCALL
wglUseFontBitmapsA(
}
+/*
+ * @unimplemented
+ */
BOOL
STDCALL
wglUseFontOutlinesA(
}
+/*
+ * @unimplemented
+ */
WINBOOL
STDCALL
UpdateICMRegKeyA(