#define UNIMPLEMENTED DbgPrint("GDI32: %s is unimplemented, please try again later.\n", __FUNCTION__);
+
/*
* @unimplemented
*/
BOOL
-STDCALL
-CancelDC(
- HDC a0
- )
+WINAPI
+PtInRegion(IN HRGN hrgn,
+ int x,
+ int y)
{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return FALSE;
+ /* FIXME some stuff at user mode need be fixed */
+ return NtGdiPtInRegion(hrgn,x,y);
}
-
/*
* @unimplemented
*/
-int
-STDCALL
-DrawEscape(
- HDC a0,
- int a1,
- int a2,
- LPCSTR a3
- )
+BOOL
+WINAPI
+RectInRegion(HRGN hrgn,
+ LPCRECT prcl)
{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+ /* FIXME some stuff at user mode need be fixed */
+ return NtGdiRectInRegion(hrgn, (LPRECT) prcl);
}
-
/*
* @unimplemented
*/
-int
-STDCALL
-EnumObjects(
- HDC a0,
- int a1,
- GOBJENUMPROC a2,
- LPARAM a3
- )
+BOOL
+WINAPI
+RestoreDC(IN HDC hdc,
+ IN INT iLevel)
{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+ /* FIXME Sharememory */
+ return NtGdiRestoreDC(hdc, iLevel);
}
/*
* @unimplemented
*/
-int
-STDCALL
-Escape(HDC hdc, INT escape, INT in_count, LPCSTR in_data, LPVOID out_data)
+INT
+WINAPI
+SaveDC(IN HDC hdc)
{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+ /* FIXME Sharememory */
+ return NtGdiSaveDC(hdc);
}
+
+
/*
* @unimplemented
*/
-HRGN
-STDCALL
-ExtCreateRegion(
- CONST XFORM * a0,
- DWORD a1,
- CONST RGNDATA * a2
- )
+BOOL
+WINAPI
+CancelDC(HDC hdc)
{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+ UNIMPLEMENTED;
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return FALSE;
}
/*
- * @implemented
+ * @unimplemented
*/
-UINT
-STDCALL
-GetBoundsRect(
- HDC hdc,
- LPRECT lprcBounds,
- UINT flags
- )
+int
+WINAPI
+DrawEscape(HDC hdc,
+ int a1,
+ int a2,
+ LPCSTR a3)
{
- return NtGdiGetBoundsRect(hdc,lprcBounds,flags & DCB_RESET);
+ UNIMPLEMENTED;
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return 0;
}
/*
- * @implemented
+ * @unimplemented
*/
int
-STDCALL
-GetMetaRgn(HDC hdc,
- HRGN hrgn)
+WINAPI
+EnumObjects(HDC hdc,
+ int a1,
+ GOBJENUMPROC a2,
+ LPARAM a3)
{
- return NtGdiGetRandomRgn(hdc,hrgn,2);
+ UNIMPLEMENTED;
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return 0;
}
+
/*
- * @unimplemented
+ * @implemented
*/
UINT
-STDCALL
-GetMetaFileBitsEx(
- HMETAFILE a0,
- UINT a1,
- LPVOID a2
+WINAPI
+GetBoundsRect(
+ HDC hdc,
+ LPRECT lprcBounds,
+ UINT flags
)
{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+ return NtGdiGetBoundsRect(hdc,lprcBounds,flags & DCB_RESET);
}
-
/*
* @unimplemented
*/
-DWORD
-STDCALL
-GetFontLanguageInfo(
- HDC hDc
+UINT
+WINAPI
+GetMetaFileBitsEx(
+ HMETAFILE a0,
+ UINT a1,
+ LPVOID a2
)
{
UNIMPLEMENTED;
* @unimplemented
*/
BOOL
-STDCALL
+WINAPI
PlayMetaFile(
HDC a0,
HMETAFILE a1
}
/*
- * @unimplemented
- */
-BOOL
-STDCALL
-ResizePalette(
- HPALETTE a0,
- UINT a1
- )
-{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return FALSE;
-}
-
-/*
- * @unimplemented
- */
-int
-STDCALL
-SetMetaRgn(
- HDC hdc
- )
-{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
-}
-
-/*
- * @unimplemented
+ * @implemented
*/
UINT
-STDCALL
-SetBoundsRect(
- HDC a0,
- CONST RECT *a1,
- UINT a2
- )
-{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
-}
-
-
-/*
- * @unimplemented
- */
-DWORD
-STDCALL
-SetMapperFlags(
- HDC a0,
- DWORD a1
- )
+WINAPI
+SetBoundsRect(HDC hdc,
+ CONST RECT *prc,
+ UINT flags)
{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+ /* FIXME add check for validate the flags */
+ return NtGdiSetBoundsRect(hdc, (LPRECT)prc, flags);
}
/*
* @unimplemented
*/
HMETAFILE
-STDCALL
+WINAPI
SetMetaFileBitsEx(
UINT a0,
CONST BYTE *a1
return 0;
}
-/*
- * @unimplemented
- */
-UINT
-STDCALL
-SetSystemPaletteUse(
- HDC a0,
- UINT a1
- )
-{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
-}
-
-/*
- * @unimplemented
- */
-BOOL
-STDCALL
-SetTextJustification(
- HDC a0,
- int a1,
- int a2
- )
-{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return FALSE;
-}
-
-/*
- * @unimplemented
- */
-BOOL
-STDCALL
-UpdateColors(
- HDC hdc
- )
-{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return FALSE;
-}
-
-
/*
* @unimplemented
*/
BOOL
-STDCALL
+WINAPI
PlayMetaFileRecord(
HDC a0,
LPHANDLETABLE a1,
* @unimplemented
*/
BOOL
-STDCALL
+WINAPI
EnumMetaFile(
HDC a0,
HMETAFILE a1,
* @unimplemented
*/
BOOL
-STDCALL
+WINAPI
DeleteEnhMetaFile(
HENHMETAFILE a0
)
* @unimplemented
*/
BOOL
-STDCALL
+WINAPI
EnumEnhMetaFile(
HDC a0,
HENHMETAFILE a1,
* @unimplemented
*/
UINT
-STDCALL
+WINAPI
GetEnhMetaFileBits(
HENHMETAFILE a0,
UINT a1,
* @unimplemented
*/
UINT
-STDCALL
+WINAPI
GetEnhMetaFileHeader(
HENHMETAFILE a0,
UINT a1,
* @unimplemented
*/
UINT
-STDCALL
+WINAPI
GetEnhMetaFilePaletteEntries(
HENHMETAFILE a0,
UINT a1,
* @unimplemented
*/
UINT
-STDCALL
+WINAPI
GetWinMetaFileBits(
HENHMETAFILE a0,
UINT a1,
* @unimplemented
*/
BOOL
-STDCALL
+WINAPI
PlayEnhMetaFile(
HDC a0,
HENHMETAFILE a1,
* @unimplemented
*/
BOOL
-STDCALL
+WINAPI
PlayEnhMetaFileRecord(
HDC a0,
LPHANDLETABLE a1,
* @unimplemented
*/
HENHMETAFILE
-STDCALL
+WINAPI
SetEnhMetaFileBits(
UINT a0,
CONST BYTE *a1
* @unimplemented
*/
HENHMETAFILE
-STDCALL
+WINAPI
SetWinMetaFileBits(
UINT a0,
CONST BYTE *a1,
* @unimplemented
*/
BOOL
-STDCALL
+WINAPI
GdiComment(
HDC hDC,
UINT bytes,
* @unimplemented
*/
BOOL
-STDCALL
-AngleArc(
- HDC hdc,
- int a1,
- int a2,
- DWORD a3,
- FLOAT a4,
- FLOAT a5
- )
-{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return FALSE;
-}
-
-
-/*
- * @unimplemented
- */
-BOOL
-STDCALL
+WINAPI
SetColorAdjustment(
HDC hdc,
CONST COLORADJUSTMENT *a1
* @unimplemented
*/
int
-STDCALL
+WINAPI
EndDoc(
HDC hdc
)
* @unimplemented
*/
int
-STDCALL
+WINAPI
StartPage(
HDC hdc
)
* @unimplemented
*/
int
-STDCALL
+WINAPI
EndPage(
HDC hdc
)
* @unimplemented
*/
int
-STDCALL
+WINAPI
AbortDoc(
HDC hdc
)
* @unimplemented
*/
int
-STDCALL
+WINAPI
SetAbortProc(
- HDC hdc,
- ABORTPROC a1
- )
+ HDC hdc,
+ ABORTPROC lpAbortProc)
{
UNIMPLEMENTED;
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return 0;
}
-
/*
- * @unimplemented
+ * @implemented
*/
BOOL
-STDCALL
-ScaleViewportExtEx(
- HDC a0,
- int a1,
- int a2,
- int a3,
- int a4,
- LPSIZE a5
- )
+WINAPI
+UnrealizeObject(HGDIOBJ hgdiobj)
{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return FALSE;
-}
-
-
+ BOOL retValue = TRUE;
/*
- * @unimplemented
- */
-BOOL
-STDCALL
-ScaleWindowExtEx(
- HDC a0,
- int a1,
- int a2,
- int a3,
- int a4,
- LPSIZE a5
- )
-{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return FALSE;
-}
-
+ Win 2k Graphics API, Black Book. by coriolis.com
+ Page 62, Note that Steps 3, 5, and 6 are not required for Windows NT(tm)
+ and Windows 2000(tm).
+ Step 5. UnrealizeObject(hTrackBrush);
+ */
/*
- * @implemented
+ msdn.microsoft.com,
+ "Windows 2000/XP: If hgdiobj is a brush, UnrealizeObject does nothing,
+ and the function returns TRUE. Use SetBrushOrgEx to set the origin of
+ a brush."
*/
-BOOL
-STDCALL
-UnrealizeObject(
- HGDIOBJ a0
- )
-{
- return NtGdiUnrealizeObject(a0);
+ if (GDI_HANDLE_GET_TYPE(hgdiobj) != GDI_OBJECT_TYPE_BRUSH)
+ {
+ retValue = NtGdiUnrealizeObject(hgdiobj);
+ }
+
+ return retValue;
}
* @implemented
*/
BOOL
-STDCALL
+WINAPI
GdiFlush()
{
NtGdiFlush();
* @unimplemented
*/
int
-STDCALL
+WINAPI
SetICMMode(
HDC a0,
int a1
* @unimplemented
*/
BOOL
-STDCALL
+WINAPI
CheckColorsInGamut(
HDC a0,
LPVOID a1,
}
-/*
- * @unimplemented
- */
-HCOLORSPACE
-STDCALL
-GetColorSpace(
- HDC hDc
- )
-{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
-}
-
-
-/*
- * @unimplemented
- */
-HCOLORSPACE
-STDCALL
-SetColorSpace(
- HDC a0,
- HCOLORSPACE a1
- )
-{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return FALSE;
-}
-
/*
* @implemented
*/
BOOL
-STDCALL
+WINAPI
GetDeviceGammaRamp( HDC hdc,
LPVOID lpGammaRamp)
{
return retValue;
}
-
-
-
-
-
/*
- * @unimplemented
+ * @implemented
*/
BOOL
-STDCALL
-SetDeviceGammaRamp(
- HDC a0,
- LPVOID a1
- )
+WINAPI
+SetDeviceGammaRamp(HDC hdc,
+ LPVOID lpGammaRamp)
{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return FALSE;
+ BOOL retValue = FALSE;
+
+ if (lpGammaRamp)
+ {
+ retValue = NtGdiSetDeviceGammaRamp(hdc, lpGammaRamp);
+ }
+ else
+ {
+ SetLastError(ERROR_INVALID_PARAMETER);
+ }
+
+ return retValue;
}
* @unimplemented
*/
BOOL
-STDCALL
+WINAPI
ColorMatchToTarget(
HDC a0,
HDC a1,
* @unimplemented
*/
BOOL
-STDCALL
+WINAPI
wglCopyContext(
HGLRC a0,
HGLRC a1,
* @unimplemented
*/
HGLRC
-STDCALL
+WINAPI
wglCreateContext(
HDC hDc
)
* @unimplemented
*/
HGLRC
-STDCALL
+WINAPI
wglCreateLayerContext(
HDC hDc,
int a1
* @unimplemented
*/
BOOL
-STDCALL
+WINAPI
wglDeleteContext(
HGLRC a
)
* @unimplemented
*/
HGLRC
-STDCALL
+WINAPI
wglGetCurrentContext(VOID)
{
UNIMPLEMENTED;
* @unimplemented
*/
HDC
-STDCALL
+WINAPI
wglGetCurrentDC(VOID)
{
UNIMPLEMENTED;
* @unimplemented
*/
PROC
-STDCALL
+WINAPI
wglGetProcAddress(
LPCSTR a0
)
* @unimplemented
*/
BOOL
-STDCALL
+WINAPI
wglMakeCurrent(
HDC a0,
HGLRC a1
* @unimplemented
*/
BOOL
-STDCALL
+WINAPI
wglShareLists(
HGLRC a0,
HGLRC a1
* @unimplemented
*/
BOOL
-STDCALL
+WINAPI
wglDescribeLayerPlane(
HDC a0,
int a1,
* @unimplemented
*/
int
-STDCALL
+WINAPI
wglSetLayerPaletteEntries(
HDC a0,
int a1,
* @unimplemented
*/
int
-STDCALL
+WINAPI
wglGetLayerPaletteEntries(
HDC a0,
int a1,
* @unimplemented
*/
BOOL
-STDCALL
+WINAPI
wglRealizeLayerPalette(
HDC a0,
int a1,
* @unimplemented
*/
BOOL
-STDCALL
+WINAPI
wglSwapLayerBuffers(
HDC a0,
UINT a1
* === WHERE ARE THEY DEFINED? =============
*/
-
-
-
-
-
-
-
/*
* @unimplemented
*/
DWORD
-STDCALL
+WINAPI
IsValidEnhMetaRecord(
DWORD a0,
DWORD a1
* @unimplemented
*/
DWORD
-STDCALL
+WINAPI
IsValidEnhMetaRecordOffExt(
DWORD a0,
DWORD a1,
* @unimplemented
*/
DWORD
-STDCALL
+WINAPI
GetGlyphOutlineWow(
DWORD a0,
DWORD a1,
return 0;
}
-
-
-
/*
* @unimplemented
*/
DWORD
-STDCALL
-SelectBrushLocal(
- DWORD a0,
- DWORD a1
- )
-{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
-}
-
-
-/*
- * @unimplemented
- */
-DWORD
-STDCALL
-SelectFontLocal(
- DWORD a0,
- DWORD a1
- )
-{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
-}
-
-
-/*
- * @unimplemented
- */
-DWORD
-STDCALL
-SetFontEnumeration(
- DWORD a0
- )
-{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
-}
-
-
-/*
- * @unimplemented
- */
-DWORD
-STDCALL
-gdiPlaySpoolStream(
+WINAPI
+gdiPlaySpoolStream(
DWORD a0,
DWORD a1,
DWORD a2,
}
/*
- * @unimplemented
+ * @implemented
*/
-HANDLE
-STDCALL
+HANDLE
+WINAPI
AddFontMemResourceEx(
PVOID pbFont,
DWORD cbFont,
DWORD *pcFonts
)
{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+ if ( pbFont && cbFont && pcFonts)
+ {
+ return NtGdiAddFontMemResourceEx(pbFont, cbFont, NULL, 0, pcFonts);
+ }
+ SetLastError(ERROR_INVALID_PARAMETER);
+ return NULL;
}
/*
* @unimplemented
*/
-int
-STDCALL
+int
+WINAPI
AddFontResourceTracking(
LPCSTR lpString,
int unknown
/*
* @unimplemented
*/
-HBITMAP
-STDCALL
+HBITMAP
+WINAPI
ClearBitmapAttributes(HBITMAP hbm, DWORD dwFlags)
{
UNIMPLEMENTED;
/*
* @unimplemented
*/
-HBRUSH
-STDCALL
+HBRUSH
+WINAPI
ClearBrushAttributes(HBRUSH hbm, DWORD dwFlags)
{
UNIMPLEMENTED;
/*
* @unimplemented
*/
-BOOL
-STDCALL
+BOOL
+WINAPI
ColorCorrectPalette(HDC hDC,HPALETTE hPalette,DWORD dwFirstEntry,DWORD dwNumOfEntries)
{
UNIMPLEMENTED;
* @unimplemented
*/
int
-STDCALL
+WINAPI
EndFormPage(HDC hdc)
{
UNIMPLEMENTED;
return 0;
}
-
-
-/*
- * @unimplemented
- */
-DWORD
-STDCALL
-GdiAddGlsBounds(HDC hdc,LPRECT prc)
-{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
-}
-
/*
* @unimplemented
*/
-BOOL
-STDCALL
+BOOL
+WINAPI
GdiArtificialDecrementDriver(LPWSTR pDriverName,BOOL unknown)
{
UNIMPLEMENTED;
* @unimplemented
*/
BOOL
-STDCALL
+WINAPI
GdiCleanCacheDC(HDC hdc)
{
UNIMPLEMENTED;
* @unimplemented
*/
HDC
-STDCALL
+WINAPI
GdiConvertAndCheckDC(HDC hdc)
{
UNIMPLEMENTED;
/*
* @unimplemented
*/
-HENHMETAFILE
-STDCALL
+HENHMETAFILE
+WINAPI
GdiConvertEnhMetaFile(HENHMETAFILE hmf)
{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+ UNIMPLEMENTED;
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return 0;
}
/*
* @unimplemented
*/
BOOL
-STDCALL
+WINAPI
GdiDrawStream(HDC dc, ULONG l, VOID *v)
{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
-}
-
-/*
- * @unimplemented
- */
-DWORD
-STDCALL
-GdiGetCodePage(HDC hdc)
-{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+ UNIMPLEMENTED;
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return 0;
}
/*
- * @unimplemented
- */
-HBRUSH
-STDCALL
-GdiGetLocalBrush(HBRUSH hbr)
-{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
-}
-
-/*
- * @unimplemented
- */
-HDC
-STDCALL
-GdiGetLocalDC(HDC hdc)
-{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
-}
-
-/*
- * @unimplemented
- */
-HFONT
-STDCALL
-GdiGetLocalFont(HFONT hfont)
-{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
-}
-
-/*
- * @unimplemented
+ * @implemented
*/
BOOL
-STDCALL
-GdiIsMetaFileDC(HDC hdc)
+WINAPI
+GdiIsMetaFileDC(HDC hDC)
{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+ if (GDI_HANDLE_GET_TYPE(hDC) != GDI_OBJECT_TYPE_DC)
+ {
+ if (GDI_HANDLE_GET_TYPE(hDC) == GDI_OBJECT_TYPE_METADC)
+ return TRUE;
+ else
+ {
+ PLDC pLDC = GdiGetLDC(hDC);
+ if ( !pLDC )
+ {
+ SetLastError(ERROR_INVALID_HANDLE);
+ return FALSE;
+ }
+ if ( pLDC->iType == LDC_EMFLDC) return TRUE;
+ }
+ }
+ return FALSE;
}
/*
- * @unimplemented
+ * @implemented
*/
BOOL
-STDCALL
-GdiIsMetaPrintDC(HDC hdc)
+WINAPI
+GdiIsMetaPrintDC(HDC hDC)
{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+
+ if (GDI_HANDLE_GET_TYPE(hDC) != GDI_OBJECT_TYPE_DC)
+ {
+ if (GDI_HANDLE_GET_TYPE(hDC) == GDI_OBJECT_TYPE_METADC)
+ return FALSE;
+ else
+ {
+ PLDC pLDC = GdiGetLDC(hDC);
+ if ( !pLDC )
+ {
+ SetLastError(ERROR_INVALID_HANDLE);
+ return FALSE;
+ }
+ if ( pLDC->Flags & LDC_META_PRINT) return TRUE;
+ }
+ }
+ return FALSE;
}
/*
- * @unimplemented
+ * @implemented
*/
BOOL
-STDCALL
-GdiIsPlayMetafileDC(HDC hdc)
+WINAPI
+GdiIsPlayMetafileDC(HDC hDC)
{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+ PLDC pLDC = GdiGetLDC(hDC);
+ if ( pLDC )
+ {
+ if ( pLDC->Flags & LDC_PLAY_MFDC ) return TRUE;
+ }
+ return FALSE;
}
/*
* @unimplemented
*/
BOOL
-STDCALL
+WINAPI
GdiValidateHandle(HGDIOBJ hobj)
{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+ UNIMPLEMENTED;
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return 0;
}
/*
* @unimplemented
*/
-DWORD
-STDCALL
+DWORD
+WINAPI
GetBitmapAttributes(HBITMAP hbm)
{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+ UNIMPLEMENTED;
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return 0;
}
/*
* @unimplemented
*/
-DWORD
-STDCALL
+DWORD
+WINAPI
GetBrushAttributes(HBRUSH hbr)
{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+ UNIMPLEMENTED;
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return 0;
}
-/*
- * @unimplemented
- */
-BOOL
-STDCALL
-GetCharABCWidthsI(
- HDC hdc,
- UINT giFirst,
- UINT cgi,
- LPWORD pgi,
- LPABC lpabc
-)
-{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
-}
-
-/*
- * @unimplemented
- */
-BOOL
-STDCALL
-GetCharWidthI(
- HDC hdc,
- UINT giFirst,
- UINT cgi,
- LPWORD pgi,
- LPINT lpBuffer
-)
-{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
-}
-
-
-
/*
* @implemented
*/
-ULONG
-STDCALL
+ULONG
+WINAPI
GetEUDCTimeStamp(VOID)
{
return NtGdiGetEudcTimeStampEx(NULL,0,TRUE);
/*
* @implemented
*/
-ULONG
-STDCALL
+ULONG
+WINAPI
GetFontAssocStatus(HDC hdc)
{
ULONG retValue = 0;
return retValue;
}
-/*
- * @unimplemented
- */
-HFONT
-STDCALL
-GetHFONT(HDC dc)
-{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
-}
-
-/*
- * @unimplemented
- */
-DWORD
-STDCALL
-GetLayout(
- HDC hdc
-)
-{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
-}
-
/*
* @implemented
*/
BOOL
-STDCALL
+WINAPI
GetTextExtentExPointWPri(HDC hdc,
LPWSTR lpwsz,
ULONG cwc,
return NtGdiGetTextExtentExW(hdc,lpwsz,cwc,dxMax,pcCh,pdxOut,psize,0);
}
-/*
- * @implemented
- */
-INT
-STDCALL
-GetTextFaceAliasW(HDC hdc,
- int cChar,
- LPWSTR pszOut)
-{
- INT retValue = 0;
- if ((!pszOut) || (cChar))
- {
- retValue = NtGdiGetTextFaceW(hdc,cChar,pszOut,TRUE);
- }
- else
- {
- SetLastError(ERROR_INVALID_PARAMETER);
- }
- return retValue;
-}
-
-
-
/*
* @unimplemented
*/
-BOOL
-STDCALL
-MirrorRgn(HWND hwnd,HRGN hrgn)
-{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
-}
-
-
-
-/*
- * @unimplemented
- */
-DWORD
-STDCALL
+DWORD
+WINAPI
QueryFontAssocStatus(VOID)
{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+ UNIMPLEMENTED;
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return 0;
}
/*
- * @unimplemented
+ * @implemented
*/
-BOOL
-STDCALL
-RemoveFontMemResourceEx(
- HANDLE fh
-)
+BOOL
+WINAPI
+RemoveFontMemResourceEx(HANDLE fh)
{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+ if (fh)
+ {
+ return NtGdiRemoveFontMemResourceEx(fh);
+ }
+ SetLastError(ERROR_INVALID_PARAMETER);
+ return FALSE;
}
/*
* @unimplemented
*/
-int
-STDCALL
+int
+WINAPI
RemoveFontResourceTracking(LPCSTR lpString,int unknown)
{
UNIMPLEMENTED;
/*
* @unimplemented
*/
-HBITMAP
-STDCALL
+HBITMAP
+WINAPI
SetBitmapAttributes(HBITMAP hbm, DWORD dwFlags)
{
UNIMPLEMENTED;
/*
* @unimplemented
*/
-HBRUSH
-STDCALL
+HBRUSH
+WINAPI
SetBrushAttributes(HBRUSH hbm, DWORD dwFlags)
{
UNIMPLEMENTED;
}
/*
- * @unimplemented
- */
-DWORD
-STDCALL
-SetLayout(
- HDC hdc,
- DWORD dwLayout
-)
-{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
-}
-
-/*
- * @unimplemented
- */
-DWORD
-STDCALL
-SetLayoutWidth(HDC hdc,LONG wox,DWORD dwLayout)
-{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
-}
-
-/*
- * @unimplemented
- */
-BOOL
-STDCALL
-SetMagicColors(HDC hdc,PALETTEENTRY peMagic,ULONG Index)
-{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
-}
-
-/*
- * @unimplemented
- */
-BOOL
-STDCALL
-SetVirtualResolution(HDC hdc, int cxVirtualDevicePixel,int cyVirtualDevicePixel,int cxVirtualDeviceMm, int cyVirtualDeviceMm)
-{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
-}
-
-/*
- * @unimplemented
+ * @implemented
*/
-int
-STDCALL
+int
+WINAPI
StartFormPage(HDC hdc)
{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+ return StartPage(hdc);
}
/*
* @unimplemented
*/
-VOID
-STDCALL
+VOID
+WINAPI
UnloadNetworkFonts(DWORD unknown)
{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-}
-
-/*
- * @implemented
- */
-BOOL
-STDCALL
-GetTextExtentExPointI(HDC hdc,
- LPWORD pgiIn,
- int cgi,
- int nMaxExtent,
- LPINT lpnFit,
- LPINT alpDx,
- LPSIZE lpSize)
-{
- return NtGdiGetTextExtentExW(hdc,pgiIn,cgi,nMaxExtent,(ULONG *)lpnFit, (PULONG) alpDx,lpSize,1);
-}
-
-/*
- * @implemented
- */
-BOOL
-STDCALL
-GetTextExtentPointI(HDC hdc,
- LPWORD pgiIn,
- int cgi,
- LPSIZE lpSize)
-{
- return NtGdiGetTextExtent(hdc,pgiIn,cgi,lpSize,2);
-}
-
-
-
-
-
-/*
- * @unimplemented
- */
-BOOL
-STDCALL
-GdiRealizationInfo(HDC hdc, PREALIZATION_INFO pri)
-{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
-}
-
-
-
-/*
- * @unimplemented
- */
-BOOL
-STDCALL
-GetETM(HDC hdc,EXTTEXTMETRIC *petm)
-{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+ UNIMPLEMENTED;
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
}
/*
* @unimplemented
*/
BOOL
-STDCALL
-GdiAddGlsRecord(HDC hdc,DWORD unknown1,LPCSTR unknown2,LPRECT unknown3)
+WINAPI
+GdiRealizationInfo(HDC hdc,
+ PREALIZATION_INFO pri)
{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
-}
-
-/*
- * @unimplemented
- */
-HANDLE
-STDCALL
-GdiConvertMetaFilePict(HGLOBAL hMem)
-{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+ // ATM we do not support local font data and Language Pack.
+ return NtGdiGetRealizationInfo(hdc, pri, (HFONT) NULL);
}
/*
* @implemented
*/
-DEVMODEW *
-STDCALL
-GdiConvertToDevmodeW(DEVMODEA *dm)
-{
- LPDEVMODEW dmw;
-
- dmw = HEAP_alloc(sizeof(DEVMODEW));
-#define COPYS(f,len) MultiByteToWideChar ( CP_THREAD_ACP, 0, (LPSTR)dm->f, len, dmw->f, len )
-#define COPYN(f) dmw->f = dm->f
- COPYS(dmDeviceName, CCHDEVICENAME );
- COPYN(dmSpecVersion);
- COPYN(dmDriverVersion);
- switch ( dm->dmSize )
- {
- case SIZEOF_DEVMODEA_300:
- dmw->dmSize = SIZEOF_DEVMODEW_300;
- break;
- case SIZEOF_DEVMODEA_400:
- dmw->dmSize = SIZEOF_DEVMODEW_400;
- break;
- case SIZEOF_DEVMODEA_500:
- default: /* FIXME what to do??? */
- dmw->dmSize = SIZEOF_DEVMODEW_500;
- break;
- }
- COPYN(dmDriverExtra);
- COPYN(dmFields);
- COPYN(dmPosition.x);
- COPYN(dmPosition.y);
- COPYN(dmScale);
- COPYN(dmCopies);
- COPYN(dmDefaultSource);
- COPYN(dmPrintQuality);
- COPYN(dmColor);
- COPYN(dmDuplex);
- COPYN(dmYResolution);
- COPYN(dmTTOption);
- COPYN(dmCollate);
- COPYS(dmFormName,CCHFORMNAME);
- COPYN(dmLogPixels);
- COPYN(dmBitsPerPel);
- COPYN(dmPelsWidth);
- COPYN(dmPelsHeight);
- COPYN(dmDisplayFlags); // aka dmNup
- COPYN(dmDisplayFrequency);
-
- if ( dm->dmSize <= SIZEOF_DEVMODEA_300 )
- return dmw; // we're done with 0x300 fields
-
- COPYN(dmICMMethod);
- COPYN(dmICMIntent);
- COPYN(dmMediaType);
- COPYN(dmDitherType);
- COPYN(dmReserved1);
- COPYN(dmReserved2);
-
- if ( dm->dmSize <= SIZEOF_DEVMODEA_400 )
- return dmw; // we're done with 0x400 fields
-
- COPYN(dmPanningWidth);
- COPYN(dmPanningHeight);
-
- return dmw;
-
-#undef COPYN
-#undef COPYS
-}
-
-/*
- * @unimplemented
- */
-HENHMETAFILE
-STDCALL
-GdiCreateLocalEnhMetaFile(HENHMETAFILE hmo)
-{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
-}
-
-/*
- * @unimplemented
- */
-METAFILEPICT *
-STDCALL
-GdiCreateLocalMetaFilePict(HENHMETAFILE hmo)
-{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
-}
-
-
-/*
- * @unimplemented
- */
-HANDLE
-STDCALL
-GdiGetSpoolFileHandle(
- LPWSTR pwszPrinterName,
- LPDEVMODEW pDevmode,
- LPWSTR pwszDocName)
-{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
-}
-
-/*
- * @unimplemented
- */
BOOL
-STDCALL
-GdiDeleteSpoolFileHandle(
- HANDLE SpoolFileHandle)
+WINAPI
+GetETM(HDC hdc,
+ EXTTEXTMETRIC *petm)
{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
-}
+ BOOL Ret = NtGdiGetETM(hdc, petm);
-/*
- * @unimplemented
- */
-DWORD
-STDCALL
-GdiGetPageCount(
- HANDLE SpoolFileHandle)
-{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
-}
+ if (Ret && petm)
+ petm->emKernPairs = GetKerningPairsA(hdc, 0, 0);
-/*
- * @unimplemented
- */
-HDC
-STDCALL
-GdiGetDC(
- HANDLE SpoolFileHandle)
-{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+ return Ret;
}
/*
* @unimplemented
*/
-HANDLE
-STDCALL
-GdiGetPageHandle(
- HANDLE SpoolFileHandle,
- DWORD Page,
- LPDWORD pdwPageType)
-{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
-}
-
-/*
- * @unimplemented
- */
-BOOL
-STDCALL
-GdiStartDocEMF(
- HANDLE SpoolFileHandle,
- DOCINFOW *pDocInfo)
+int
+WINAPI
+Escape(HDC hdc, INT nEscape, INT cbInput, LPCSTR lpvInData, LPVOID lpvOutData)
{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
-}
+ int retValue = SP_ERROR;
+ HGDIOBJ hObject = hdc;
+ UINT Type = 0;
+ LPVOID pUserData = NULL;
-/*
- * @unimplemented
- */
-BOOL
-STDCALL
-GdiStartPageEMF(
- HANDLE SpoolFileHandle)
-{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
-}
+ Type = GDI_HANDLE_GET_TYPE(hObject);
-/*
- * @unimplemented
- */
-BOOL
-STDCALL
-GdiPlayPageEMF(
- HANDLE SpoolFileHandle,
- HANDLE hemf,
- RECT *prectDocument,
- RECT *prectBorder,
- RECT *prectClip)
-{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+ if (Type == GDI_OBJECT_TYPE_METADC)
+ {
+ /* FIXME we do not support metafile */
+ UNIMPLEMENTED;
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ }
+ else
+ {
+ switch (nEscape)
+ {
+ case ABORTDOC:
+ /* Note Winodws check see if the handle have any user data for ABORTDOC command
+ * ReactOS copy this behavior to be compatible with windows 2003
+ */
+ if ( (!GdiGetHandleUserData(hObject, (DWORD)Type, (PVOID) &pUserData)) ||
+ (pUserData == NULL) )
+ {
+ GdiSetLastError(ERROR_INVALID_HANDLE);
+ retValue = FALSE;
+ }
+ else
+ {
+ retValue = AbortDoc(hdc);
+ }
+ break;
+
+ case DRAFTMODE:
+ case FLUSHOUTPUT:
+ case SETCOLORTABLE:
+ /* Note 1: DRAFTMODE, FLUSHOUTPUT, SETCOLORTABLE is outdated and been replace with other api */
+ /* Note 2: Winodws check see if the handle have any user data for DRAFTMODE, FLUSHOUTPUT, SETCOLORTABLE command
+ * ReactOS copy this behavior to be compatible with windows 2003
+ */
+ if ( (!GdiGetHandleUserData(hObject, (DWORD)Type, (PVOID) &pUserData)) ||
+ (pUserData == NULL) )
+ {
+ GdiSetLastError(ERROR_INVALID_HANDLE);
+ }
+ retValue = FALSE;
+ break;
+
+ case SETABORTPROC:
+ /* Note : Winodws check see if the handle have any user data for DRAFTMODE, FLUSHOUTPUT, SETCOLORTABLE command
+ * ReactOS copy this behavior to be compatible with windows 2003
+ */
+ if ( (!GdiGetHandleUserData(hObject, (DWORD)Type, (PVOID) &pUserData)) ||
+ (pUserData == NULL) )
+ {
+ GdiSetLastError(ERROR_INVALID_HANDLE);
+ retValue = FALSE;
+ }
+ retValue = SetAbortProc(hdc, (ABORTPROC)lpvInData);
+ break;
+
+ case GETCOLORTABLE:
+ retValue = GetSystemPaletteEntries(hdc, (UINT)*lpvInData, 1, (LPPALETTEENTRY)lpvOutData);
+ if ( !retValue )
+ {
+ retValue = SP_ERROR;
+ }
+ break;
+
+ case ENDDOC:
+ /* Note : Winodws check see if the handle have any user data for DRAFTMODE, FLUSHOUTPUT, SETCOLORTABLE command
+ * ReactOS copy this behavior to be compatible with windows 2003
+ */
+ if ( (!GdiGetHandleUserData(hObject, (DWORD)Type, (PVOID) &pUserData)) ||
+ (pUserData == NULL) )
+ {
+ GdiSetLastError(ERROR_INVALID_HANDLE);
+ retValue = FALSE;
+ }
+ retValue = EndDoc(hdc);
+ break;
+
+
+ case GETSCALINGFACTOR:
+ /* Note GETSCALINGFACTOR is outdated have been replace by GetDeviceCaps */
+ if ( Type == GDI_OBJECT_TYPE_DC )
+ {
+ if ( lpvOutData )
+ {
+ PPOINT ptr = (PPOINT) lpvOutData;
+ ptr->x = 0;
+ ptr->y = 0;
+ }
+ }
+ retValue = FALSE;
+ break;
+
+ case GETEXTENDEDTEXTMETRICS:
+ retValue = (int) GetETM( hdc, (EXTTEXTMETRIC *) lpvOutData) != 0;
+ break;
+
+ case STARTDOC:
+ {
+ DOCINFOA *pUserDatalpdi;
+ DOCINFOA lpdi;
+
+ /* Note : Winodws check see if the handle have any user data for STARTDOC command
+ * ReactOS copy this behavior to be compatible with windows 2003
+ */
+ if ( (!GdiGetHandleUserData(hObject, (DWORD)Type, (PVOID) &pUserDatalpdi)) ||
+ (pUserData == NULL) )
+ {
+ GdiSetLastError(ERROR_INVALID_HANDLE);
+ retValue = FALSE;
+ }
+
+ lpdi.cbSize = sizeof(DOCINFOA);
+
+ /* NOTE lpszOutput will be store in handle userdata */
+ lpdi.lpszOutput = 0;
+
+ lpdi.lpszDatatype = 0;
+ lpdi.fwType = 0;
+ lpdi.lpszDocName = lpvInData;
+
+ /* NOTE : doc for StartDocA/W at msdn http://msdn2.microsoft.com/en-us/library/ms535793(VS.85).aspx */
+ retValue = StartDocA(hdc, &lpdi);
+
+ /* StartDocA fail */
+ if (retValue < 0)
+ {
+ /* check see if outbuffer contain any data, if it does abort */
+ if ( (pUserDatalpdi->lpszOutput != 0) &&
+ ( (*(WCHAR *)pUserDatalpdi->lpszOutput) != UNICODE_NULL) )
+ {
+ retValue = SP_APPABORT;
+ }
+ else
+ {
+ retValue = GetLastError();
+
+ /* Translate StartDocA error code to STARTDOC error code
+ * see msdn http://msdn2.microsoft.com/en-us/library/ms535472.aspx
+ */
+ switch(retValue)
+ {
+ case ERROR_NOT_ENOUGH_MEMORY:
+ retValue = SP_OUTOFMEMORY;
+ break;
+
+ case ERROR_PRINT_CANCELLED:
+ retValue = SP_USERABORT;
+ break;
+
+ case ERROR_DISK_FULL:
+ retValue = SP_OUTOFDISK;
+ break;
+
+ default:
+ retValue = SP_ERROR;
+ break;
+ }
+ }
+ }
+ }
+ break;
+
+
+
+
+ default:
+ UNIMPLEMENTED;
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ }
+ }
+
+ return retValue;
}
/*
* @unimplemented
*/
BOOL
-STDCALL
-GdiEndPageEMF(
- HANDLE SpoolFileHandle,
- DWORD dwOptimization)
+WINAPI
+GdiAddGlsRecord(HDC hdc,
+ DWORD unknown1,
+ LPCSTR unknown2,
+ LPRECT unknown3)
{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+ UNIMPLEMENTED;
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return 0;
}
/*
* @unimplemented
*/
-BOOL
-STDCALL
-GdiEndDocEMF(
- HANDLE SpoolFileHandle)
+HANDLE
+WINAPI
+GdiConvertMetaFilePict(HGLOBAL hMem)
{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+ UNIMPLEMENTED;
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return 0;
}
/*
- * @unimplemented
+ * @implemented
*/
-BOOL
-STDCALL
-GdiGetDevmodeForPage(
- HANDLE SpoolFileHandle,
- DWORD dwPageNumber,
- PDEVMODEW *pCurrDM,
- PDEVMODEW *pLastDM)
+DEVMODEW *
+WINAPI
+GdiConvertToDevmodeW(DEVMODEA *dmA)
{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+ DEVMODEW *dmW;
+ WORD dmW_size, dmA_size;
+
+ dmA_size = dmA->dmSize;
+
+ /* this is the minimal dmSize that XP accepts */
+ if (dmA_size < FIELD_OFFSET(DEVMODEA, dmFields))
+ return NULL;
+
+ if (dmA_size > sizeof(DEVMODEA))
+ dmA_size = sizeof(DEVMODEA);
+
+ dmW_size = dmA_size + CCHDEVICENAME;
+ if (dmA_size >= FIELD_OFFSET(DEVMODEA, dmFormName) + CCHFORMNAME)
+ dmW_size += CCHFORMNAME;
+
+ dmW = HeapAlloc(GetProcessHeap(), 0, dmW_size + dmA->dmDriverExtra);
+ if (!dmW) return NULL;
+
+ MultiByteToWideChar(CP_ACP, 0, (const char*) dmA->dmDeviceName, CCHDEVICENAME,
+ dmW->dmDeviceName, CCHDEVICENAME);
+ /* copy slightly more, to avoid long computations */
+ memcpy(&dmW->dmSpecVersion, &dmA->dmSpecVersion, dmA_size - CCHDEVICENAME);
+
+ if (dmA_size >= FIELD_OFFSET(DEVMODEA, dmFormName) + CCHFORMNAME)
+ {
+ MultiByteToWideChar(CP_ACP, 0, (const char*) dmA->dmFormName, CCHFORMNAME,
+ dmW->dmFormName, CCHFORMNAME);
+ if (dmA_size > FIELD_OFFSET(DEVMODEA, dmLogPixels))
+ memcpy(&dmW->dmLogPixels, &dmA->dmLogPixels, dmA_size - FIELD_OFFSET(DEVMODEA, dmLogPixels));
+ }
+
+ if (dmA->dmDriverExtra)
+ memcpy((char *)dmW + dmW_size, (const char *)dmA + dmA_size, dmA->dmDriverExtra);
+
+ dmW->dmSize = dmW_size;
+
+ return dmW;
}
/*
* @unimplemented
*/
-BOOL
-STDCALL
-GdiResetDCEMF(
- HANDLE SpoolFileHandle,
- PDEVMODEW pCurrDM)
-{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
-}
-
-
-HBITMAP
-STDCALL
-CreateDIBitmap(HDC
- hDc, const BITMAPINFOHEADER *Header,
- DWORD Init, LPCVOID Bits, const BITMAPINFO *Data,
- UINT ColorUse)
+HENHMETAFILE
+WINAPI
+GdiCreateLocalEnhMetaFile(HENHMETAFILE hmo)
{
- /* FIMXE we need do more thing in user mode */
- return NtGdiCreateDIBitmap(hDc, Header, Init, Bits, Data, ColorUse);
+ UNIMPLEMENTED;
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return 0;
}
/*
* @unimplemented
*/
-INT
-STDCALL
-CombineRgn(HRGN hDest,
- HRGN hSrc1,
- HRGN hSrc2,
- INT CombineMode)
+METAFILEPICT *
+WINAPI
+GdiCreateLocalMetaFilePict(HENHMETAFILE hmo)
{
- /* FIXME some part should be done in user mode */
- return NtGdiCombineRgn(hDest, hSrc1, hSrc2, CombineMode);
+ UNIMPLEMENTED;
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return 0;
}
+
/*
* @unimplemented
*/
-HBITMAP STDCALL
-CreateBitmap(
- INT Width,
- INT Height,
- UINT Planes,
- UINT BitsPixel,
- PCVOID pUnsafeBits)
+HANDLE
+WINAPI
+GdiGetSpoolFileHandle(LPWSTR pwszPrinterName,
+ LPDEVMODEW pDevmode,
+ LPWSTR pwszDocName)
{
- /* FIXME some part should be done in user mode */
- return NtGdiCreateBitmap(Width, Height, Planes, BitsPixel, (LPBYTE) pUnsafeBits);
+ UNIMPLEMENTED;
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return 0;
}
-
-
-
/*
* @unimplemented
*/
-LPWSTR STDCALL
-EngGetDriverName(HDEV hdev)
+BOOL
+WINAPI
+GdiDeleteSpoolFileHandle(HANDLE SpoolFileHandle)
{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+ UNIMPLEMENTED;
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return 0;
}
/*
* @unimplemented
- * wrong info it is not Obsolete GDI Function as http://www.osronline.com/DDKx/graphics/gdioview_20tj.htm say
*/
-BOOL STDCALL
-EngQueryEMFInfo(HDEV hdev,EMFINFO *pEMFInfo)
+DWORD
+WINAPI
+GdiGetPageCount(HANDLE SpoolFileHandle)
{
-#if 0
- BOOL retValue = FALSE;
- DHPDEV Dhpdev;
-
- if ((!hdev) && (!pEMFInfo))
- {
- if ((Dhpdev = NtGdiGetDhpdev(hdev)))
- {
- /* FIXME check if it support or if it is pEMFInfo we got */
- /* FIXME copy the data from Dhpdev to pEMFInfo */
- }
- }
- return retValue;
-#else
- return FALSE;
-#endif
+ UNIMPLEMENTED;
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return 0;
}
-
/*
* @unimplemented
*/
-INT STDCALL
-EngWideCharToMultiByte( UINT CodePage,
- LPWSTR WideCharString,
- INT BytesInWideCharString,
- LPSTR MultiByteString,
- INT BytesInMultiByteString)
+HDC
+WINAPI
+GdiGetDC(HANDLE SpoolFileHandle)
{
- return WideCharToMultiByte(
- CodePage,
- 0,
- WideCharString,
- (BytesInWideCharString/sizeof(WCHAR)), /* Bytes to (in WCHARs) */
- MultiByteString,
- BytesInMultiByteString,
- NULL,
- NULL);
+ UNIMPLEMENTED;
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return 0;
}
-
-
/*
* @unimplemented
*/
-BOOL STDCALL
-STROBJ_bEnum(STROBJ *pstro,ULONG *pc,PGLYPHPOS *ppgpos)
+HANDLE
+WINAPI
+GdiGetPageHandle(HANDLE SpoolFileHandle,
+ DWORD Page,
+ LPDWORD pdwPageType)
{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+ UNIMPLEMENTED;
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return 0;
}
/*
* @unimplemented
*/
-BOOL STDCALL
-STROBJ_bEnumPositionsOnly(STROBJ *pstro,ULONG *pc,PGLYPHPOS *ppgpos)
+BOOL
+WINAPI
+GdiStartDocEMF(HANDLE SpoolFileHandle,
+ DOCINFOW *pDocInfo)
{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+ UNIMPLEMENTED;
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return 0;
}
/*
* @unimplemented
*/
-BOOL STDCALL
-STROBJ_bGetAdvanceWidths(STROBJ *pso,ULONG iFirst,ULONG c,POINTQF *pptqD)
+BOOL
+WINAPI
+GdiStartPageEMF(HANDLE SpoolFileHandle)
{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+ UNIMPLEMENTED;
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return 0;
}
/*
* @unimplemented
*/
-DWORD STDCALL
-STROBJ_dwGetCodePage(STROBJ *pstro)
+BOOL
+WINAPI
+GdiPlayPageEMF(HANDLE SpoolFileHandle,
+ HANDLE hemf,
+ RECT *prectDocument,
+ RECT *prectBorder,
+ RECT *prectClip)
{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+ UNIMPLEMENTED;
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return 0;
}
/*
* @unimplemented
*/
-VOID STDCALL
-STROBJ_vEnumStart(STROBJ *pstro)
+BOOL
+WINAPI
+GdiEndPageEMF(HANDLE SpoolFileHandle,
+ DWORD dwOptimization)
{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ UNIMPLEMENTED;
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return 0;
}
/*
* @unimplemented
*/
-BOOL STDCALL
-XFORMOBJ_bApplyXform(XFORMOBJ *pxo,ULONG iMode,ULONG cPoints,PVOID pvIn,PVOID pvOut)
+BOOL
+WINAPI
+GdiEndDocEMF(HANDLE SpoolFileHandle)
{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+ UNIMPLEMENTED;
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return 0;
}
/*
* @unimplemented
*/
-ULONG STDCALL
-XFORMOBJ_iGetXform(XFORMOBJ *pxo,XFORML *pxform)
+BOOL
+WINAPI
+GdiGetDevmodeForPage(HANDLE SpoolFileHandle,
+ DWORD dwPageNumber,
+ PDEVMODEW *pCurrDM,
+ PDEVMODEW *pLastDM)
{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+ UNIMPLEMENTED;
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return 0;
}
/*
* @unimplemented
*/
-ULONG STDCALL
-XLATEOBJ_cGetPalette(XLATEOBJ *XlateObj,
- ULONG PalOutType,
- ULONG cPal,
- ULONG *OutPal)
+BOOL
+WINAPI
+GdiResetDCEMF(HANDLE SpoolFileHandle,
+ PDEVMODEW pCurrDM)
{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+ UNIMPLEMENTED;
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return 0;
}
+
/*
* @unimplemented
*/
-HANDLE STDCALL
-XLATEOBJ_hGetColorTransform(XLATEOBJ *pxlo)
+INT
+WINAPI
+CombineRgn(HRGN hDest,
+ HRGN hSrc1,
+ HRGN hSrc2,
+ INT CombineMode)
{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+ /* FIXME some part should be done in user mode */
+ return NtGdiCombineRgn(hDest, hSrc1, hSrc2, CombineMode);
}
/*
* @unimplemented
*/
-ULONG STDCALL
+ULONG WINAPI
XLATEOBJ_iXlate(XLATEOBJ *XlateObj,
- ULONG Color)
+ ULONG Color)
{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+ UNIMPLEMENTED;
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return 0;
}
/*
* @unimplemented
*/
-ULONG * STDCALL
+ULONG *
+WINAPI
XLATEOBJ_piVector(XLATEOBJ *XlateObj)
{
- return XlateObj->pulXlate;
+ return XlateObj->pulXlate;
}
/*
* @unimplemented
*/
-BOOL
-STDCALL
-GdiPlayEMF
-(
- LPWSTR pwszPrinterName,
- LPDEVMODEW pDevmode,
- LPWSTR pwszDocName,
- EMFPLAYPROC pfnEMFPlayFn,
- HANDLE hPageQuery
+BOOL
+WINAPI
+GdiPlayEMF(LPWSTR pwszPrinterName,
+ LPDEVMODEW pDevmode,
+ LPWSTR pwszDocName,
+ EMFPLAYPROC pfnEMFPlayFn,
+ HANDLE hPageQuery
)
{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+ UNIMPLEMENTED;
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return 0;
}
* @unimplemented
*/
BOOL
-STDCALL
-GdiPlayPrivatePageEMF
-(
- HANDLE SpoolFileHandle,
- DWORD unknown,
- RECT *prectDocument
-)
+WINAPI
+GdiPlayPrivatePageEMF(HANDLE SpoolFileHandle,
+ DWORD unknown,
+ RECT *prectDocument)
{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+ UNIMPLEMENTED;
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return 0;
}
/*
* @unimplemented
*/
-VOID STDCALL GdiInitializeLanguagePack(DWORD InitParam)
+VOID WINAPI GdiInitializeLanguagePack(DWORD InitParam)
{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ UNIMPLEMENTED;
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
}
* @implemented
*/
INT
-STDCALL
+WINAPI
ExcludeClipRect(IN HDC hdc, IN INT xLeft, IN INT yTop, IN INT xRight, IN INT yBottom)
{
- /* FIXME some part need be done on user mode size */
- return NtGdiExcludeClipRect(hdc, xLeft, yTop, xRight, yBottom);
+ /* FIXME some part need be done on user mode size */
+ return NtGdiExcludeClipRect(hdc, xLeft, yTop, xRight, yBottom);
}
/*
* @implemented
*/
INT
-STDCALL
+WINAPI
ExtSelectClipRgn( IN HDC hdc, IN HRGN hrgn, IN INT iMode)
{
- /* FIXME some part need be done on user mode size */
- return NtGdiExtSelectClipRgn(hdc,hrgn, iMode);
+ /* FIXME some part need be done on user mode size */
+ return NtGdiExtSelectClipRgn(hdc,hrgn, iMode);
}
/*
* @implemented
*/
BOOL
-STDCALL
+WINAPI
GdiGradientFill(
IN HDC hdc,
IN PTRIVERTEX pVertex,
* @implemented
*/
BOOL
-STDCALL
-GdiTransparentBlt(
- IN HDC hdcDst,
- IN INT xDst,
- IN INT yDst,
- IN INT cxDst,
- IN INT cyDst,
- IN HDC hdcSrc,
- IN INT xSrc,
- IN INT ySrc,
- IN INT cxSrc,
- IN INT cySrc,
- IN COLORREF TransColor
+WINAPI
+GdiTransparentBlt(IN HDC hdcDst,
+ IN INT xDst,
+ IN INT yDst,
+ IN INT cxDst,
+ IN INT cyDst,
+ IN HDC hdcSrc,
+ IN INT xSrc,
+ IN INT ySrc,
+ IN INT cxSrc,
+ IN INT cySrc,
+ IN COLORREF TransColor
)
{
/* FIXME some part need be done in user mode */
* @unimplemented
*/
BOOL
-STDCALL
+WINAPI
GdiPrinterThunk(
IN HUMPD humpd,
DWORD *status,
*
*/
HBITMAP
-STDCALL
+WINAPI
GdiConvertBitmapV5(
- HBITMAP in_format_BitMap,
+ HBITMAP in_format_BitMap,
HBITMAP src_BitMap,
INT bpp,
INT unuse)
{
/* FIXME guessing the prototypes */
- /*
- * it have create a new bitmap with desired in format,
+ /*
+ * it have create a new bitmap with desired in format,
* then convert it src_bitmap to new format
- * and return it as HBITMAP
+ * and return it as HBITMAP
*/
return FALSE;
}
-
-/*
- * @implemented
- *
- */
-COLORREF
-STDCALL
-GetBkColor(HDC hdc)
-{
- /* FIXME some part are done in user mode */
- return NtGdiGetBkColor(hdc);
-}
-
/*
* @implemented
*
*/
int
-STDCALL
-GetBkMode(HDC hdc)
-{
- /* FIXME some part are done in user mode */
- return NtGdiGetBkMode(hdc);
-}
-
-/*
- * @implemented
- *
- */
-BOOL
-STDCALL
-GetBrushOrgEx(HDC hdc,LPPOINT pt)
-{
- /* FIXME some part are done in user mode */
- return NtGdiGetBrushOrgEx(hdc,pt);
-}
-
-/*
- * @implemented
- *
- */
-BOOL
-STDCALL
-GetCharABCWidthsFloatW(HDC hdc,UINT FirstChar,UINT LastChar,LPABCFLOAT abcF)
-{
- /* FIXME some part are done in user mode */
- return NtGdiGetCharABCWidthsFloat(hdc, FirstChar, LastChar, abcF);
-}
-
-/*
- * @implemented
- *
- */
-int
-STDCALL
-GetDeviceCaps(HDC hdc,
- int i)
-{
- /* FIXME some part need be done in user mode */
- return NtGdiGetDeviceCaps(hdc,i);
-}
-
-
-/*
- * @implemented
- *
- */
-BOOL
-STDCALL
-GetCurrentPositionEx(HDC hdc,
- LPPOINT lpPoint)
-{
- /* FIXME some part need be done in user mode */
- return NtGdiGetCurrentPositionEx(hdc, lpPoint);
-}
-
-/*
- * @implemented
- *
- */
-int
-STDCALL
+WINAPI
GetClipBox(HDC hdc,
LPRECT lprc)
{
- /* FIXME some part need be done in user mode */
- return NtGdiGetClipBox(hdc, lprc);
-}
-
-/*
- * @implemented
- *
- */
-BOOL
-STDCALL
-GetCharWidthFloatW(HDC hdc,
- UINT iFirstChar,
- UINT iLastChar,
- PFLOAT pxBuffer)
-{
- /* FIXME some part need be done in user mode */
- return NtGdiGetCharWidthFloat(hdc, iFirstChar, iLastChar, pxBuffer);
-}
-
-/*
- * @implemented
- *
- */
-BOOL
-STDCALL
-GetCharWidth32W(HDC hdc,
- UINT iFirstChar,
- UINT iLastChar,
- LPINT lpBuffer)
-{
- /* FIXME some part need be done in user mode */
- return NtGdiGetCharWidth32(hdc, iFirstChar, iLastChar, lpBuffer);
-}
-
-/*
- * @implemented
- *
- */
-BOOL
-STDCALL
-GetCharABCWidths(HDC hdc,
- UINT uFirstChar,
- UINT uLastChar,
- LPABC lpabc)
-{
- /* FIXME some part need be done in user mode */
- return NtGdiGetCharABCWidths(hdc, uFirstChar, uLastChar, lpabc);
+ return NtGdiGetAppClipBox(hdc, lprc);
}
-
/*
* @implemented
*
*/
-DWORD
-STDCALL
+DWORD
+WINAPI
GetFontData(HDC hdc,
DWORD dwTable,
DWORD dwOffset,
* @implemented
*
*/
-DWORD
-STDCALL
+DWORD
+WINAPI
GetRegionData(HRGN hrgn,
DWORD nCount,
LPRGNDATA lpRgnData)
*
*/
INT
-STDCALL
+WINAPI
GetRgnBox(HRGN hrgn,
LPRECT prcOut)
{
- /* FIXME some stuff need be done in user mode */
- return NtGdiGetRgnBox(hrgn, prcOut);
+#if 0
+ PRGN_ATTR Rgn_Attr;
+ if (!GdiGetHandleUserData((HGDIOBJ) hRgn, GDI_OBJECT_TYPE_REGION, (PVOID) &Rgn_Attr))
+ return NtGdiGetRgnBox(hrgn, prcOut);
+ if (Rgn_Attr->Flags == NULLREGION)
+ {
+ prcOut->left = 0;
+ prcOut->top = 0;
+ prcOut->right = 0;
+ prcOut->bottom = 0;
+ }
+ else
+ {
+ if (Rgn_Attr->Flags != SIMPLEREGION) return NtGdiGetRgnBox(hrgn, prcOut);
+ *prcOut = Rgn_Attr->Rect;
+ }
+ return Rgn_Attr->Flags;
+#endif
+ return NtGdiGetRgnBox(hrgn, prcOut);
}
*
*/
INT
-STDCALL
+WINAPI
OffsetRgn( HRGN hrgn,
int nXOffset,
int nYOffset)
return NtGdiOffsetRgn(hrgn,nXOffset,nYOffset);
}
-
+/*
+ * @implemented
+ */
INT
-STDCALL
-GetTextCharsetInfo(HDC hdc,
- LPFONTSIGNATURE lpSig,
- DWORD dwFlags)
-{
- /* FIXME some part are done in user mode */
- return NtGdiGetTextCharsetInfo(hdc, lpSig, dwFlags);
-}
-
-
-
-INT
-STDCALL
+WINAPI
IntersectClipRect(HDC hdc,
int nLeftRect,
int nTopRect,
int nRightRect,
int nBottomRect)
{
- /* FIXME some part are done in user mode */
+#if 0
+// Handle something other than a normal dc object.
+ if (GDI_HANDLE_GET_TYPE(hdc) != GDI_OBJECT_TYPE_DC)
+ {
+ if (GDI_HANDLE_GET_TYPE(hdc) == GDI_OBJECT_TYPE_METADC)
+ return MFDRV_IntersectClipRect( hdc, nLeftRect, nTopRect, nRightRect, nBottomRect);
+ else
+ {
+ PLDC pLDC = GdiGetLDC(hdc);
+ if ( pLDC )
+ {
+ if (pLDC->iType != LDC_EMFLDC || EMFDRV_IntersectClipRect( hdc, nLeftRect, nTopRect, nRightRect, nBottomRect))
+ return NtGdiIntersectClipRect(hdc, nLeftRect, nTopRect, nRightRect, nBottomRect);
+ }
+ else
+ SetLastError(ERROR_INVALID_HANDLE);
+ return 0;
+ }
+ }
+#endif
return NtGdiIntersectClipRect(hdc, nLeftRect, nTopRect, nRightRect, nBottomRect);
}
-INT
-STDCALL
+/*
+ * @implemented
+ */
+INT
+WINAPI
OffsetClipRgn(HDC hdc,
int nXOffset,
int nYOffset)
{
- /* FIXME some part are done in user mode */
- return NtGdiOffsetClipRgn( hdc, nXOffset, nYOffset);
+#if 0
+// Handle something other than a normal dc object.
+ if (GDI_HANDLE_GET_TYPE(hdc) != GDI_OBJECT_TYPE_DC)
+ {
+ if (GDI_HANDLE_GET_TYPE(hdc) == GDI_OBJECT_TYPE_METADC)
+ return MFDRV_OffsetClipRgn( hdc, nXOffset, nYOffset );
+ else
+ {
+ PLDC pLDC = GdiGetLDC(hdc);
+ if ( !pLDC )
+ {
+ SetLastError(ERROR_INVALID_HANDLE);
+ return 0;
+ }
+ if (pLDC->iType == LDC_EMFLDC && !EMFDRV_OffsetClipRgn( hdc, nXOffset, nYOffset ))
+ return 0;
+ return NtGdiOffsetClipRgn( hdc, nXOffset, nYOffset);
+ }
+ }
+#endif
+ return NtGdiOffsetClipRgn( hdc, nXOffset, nYOffset);
}
INT
-STDCALL
+WINAPI
NamedEscape(HDC hdc,
PWCHAR pDriver,
- INT iEsc,
+ INT iEsc,
INT cjIn,
LPSTR pjIn,
INT cjOut,
LPSTR pjOut)
{
- /* FIXME metadc, metadc are done most in user mode, and we do not support it
- * Windows 2000/XP/Vista ignore the current hdc, that are being pass and always set hdc to NULL
+ /* FIXME metadc, metadc are done most in user mode, and we do not support it
+ * Windows 2000/XP/Vista ignore the current hdc, that are being pass and always set hdc to NULL
* when it calls to NtGdiExtEscape from NamedEscape
*/
return NtGdiExtEscape(NULL,pDriver,wcslen(pDriver),iEsc,cjIn,pjIn,cjOut,pjOut);
}
-BOOL
-STDCALL
-PatBlt(HDC hdc,
- int nXLeft,
- int nYLeft,
- int nWidth,
- int nHeight,
- DWORD dwRop)
-{
- /* FIXME some part need be done in user mode */
- return NtGdiPatBlt( hdc, nXLeft, nYLeft, nWidth, nHeight, dwRop);
-}
-BOOL
-STDCALL
-PolyPatBlt(IN HDC hdc,
- IN DWORD rop4,
- IN PPOLYPATBLT pPoly,
- IN DWORD Count,
- IN DWORD Mode)
+/*
+ * @unimplemented
+ */
+
+/* FIXME wrong protypes, it is a fastcall api */
+DWORD
+WINAPI
+cGetTTFFromFOT(DWORD x1 ,DWORD x2 ,DWORD x3, DWORD x4, DWORD x5, DWORD x6, DWORD x7)
{
- /* FIXME some part need be done in user mode */
- return NtGdiPolyPatBlt(hdc, rop4, pPoly,Count,Mode);
+ UNIMPLEMENTED;
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return 0;
}
-
-
-
-
-
-
-
-