forget commit Implement of GdiGetLocalBrush, GdiGetLocalDC, GdiGetLocalFont
[reactos.git] / reactos / dll / win32 / gdi32 / misc / stubs.c
index 0b23fd0..cfd221c 100644 (file)
 
 #define UNIMPLEMENTED DbgPrint("GDI32: %s is unimplemented, please try again later.\n", __FUNCTION__);
 
+
 /*
  * @unimplemented
  */
 BOOL
 STDCALL
-CancelDC(
-       HDC     a0
-       )
+TranslateCharsetInfo(DWORD * lpSrc,
+                     LPCHARSETINFO lpCs,
+                     DWORD dwFlags)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return FALSE;
+    /* FIXME share memory */
+    return NtGdiTranslateCharsetInfo(lpSrc, lpCs, dwFlags );
+}
+
+/*
+ * @unimplemented
+ */
+int
+STDCALL
+StretchDIBits(HDC hdc,
+              int XDest,
+              int YDest,
+              int nDestWidth,
+              int nDestHeight,
+              int XSrc,
+              int YSrc,
+              int nSrcWidth,
+              int nSrcHeight,
+              CONST VOID *lpBits,
+              CONST BITMAPINFO *lpBitsInfo,
+              UINT iUsage,
+              DWORD dwRop)
+
+{
+    /* FIXME share memory */
+    return NtGdiStretchDIBits(hdc, XDest, YDest, nDestWidth, nDestHeight, XSrc, YSrc, 
+                              nSrcWidth, nSrcHeight, lpBits, lpBitsInfo, iUsage, dwRop);
+}
+
+/*
+ * @unimplemented
+ */
+int
+STDCALL
+SetDIBits(HDC hdc,
+          HBITMAP hbmp,
+          UINT uStartScan,
+          UINT cScanLines,
+          CONST VOID *lpvBits,
+          CONST BITMAPINFO *lpbmi,
+          UINT fuColorUse)
+{
+    /* FIXME share memory */
+    return NtGdiSetDIBits(hdc, hbmp, uStartScan, cScanLines, lpvBits, lpbmi, fuColorUse);
+}
+
+/*
+ * @unimplemented
+ */
+int
+STDCALL
+SetGraphicsMode(HDC hdc,
+                int iMode)
+{
+    /* FIXME share memory */
+    return NtGdiSetGraphicsMode(hdc, iMode);
+}
+
+/*
+ * @unimplemented
+ */
+int
+STDCALL
+SetPolyFillMode(HDC hdc,
+                int iPolyFillMode)
+{
+    /* FIXME share memory */
+    return NtGdiSetPolyFillMode(hdc, iPolyFillMode);
+}
+
+/*
+ * @unimplemented
+ */
+int
+STDCALL
+SetROP2(HDC hdc,
+        int fnDrawMode)
+{
+    UNIMPLEMENTED;
+    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+    return 0;
 }
 
+/*
+ * @unimplemented
+ */
+int
+STDCALL
+SetStretchBltMode(HDC hdc, int iStretchMode)
+{
+    /* FIXME share memory */
+    return NtGdiSetStretchBltMode(hdc, iStretchMode);
+}
 
 /*
  * @unimplemented
  */
 BOOL
 STDCALL
-Chord(
-       HDC     a0,
-       int     a1,
-       int     a2,
-       int     a3,
-       int     a4,
-       int     a5,
-       int     a6,
-       int     a7,
-       int     a8
-       )
+SetRectRgn(HRGN hrgn,
+           int nLeftRect,
+           int nTopRect,
+           int nRightRect,
+           int nBottomRect)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return FALSE;
+    /* FIXME metadc stuff */
+    return NtGdiSetRectRgn(hrgn, nLeftRect, nTopRect, nRightRect, nBottomRect);
 }
 
+/*
+ * @unimplemented
+ */
+UINT
+STDCALL
+SetTextAlign(HDC hdc,
+             UINT fMode)
+{
+    /* FIXME share memory */
+    return NtGdiSetTextAlign(hdc, fMode);
+}
 
 /*
  * @unimplemented
  */
-HMETAFILE
+BOOL
 STDCALL
-CloseMetaFile(
-       HDC     a0
-       )
+SetViewportExtEx(HDC hdc,
+                 int nXExtent,
+                 int nYExtent,
+                 LPSIZE lpSize)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    /* FIXME share memory */
+    return NtGdiSetViewportExtEx(hdc, nXExtent, nYExtent, lpSize);
 }
 
+/*
+ * @unimplemented
+ */
+BOOL
+STDCALL
+SetWindowOrgEx(HDC hdc,
+               int X,
+               int Y,
+               LPPOINT lpPoint)
+{
+    /* FIXME share memory */
+    return NtGdiSetWindowOrgEx(hdc,X,Y,lpPoint);
+}
 
 /*
  * @unimplemented
  */
 BOOL
 STDCALL
-DeleteMetaFile(
-       HMETAFILE       a0
-       )
+SetWindowExtEx(HDC hdc,
+               int nXExtent,
+               int nYExtent,
+               LPSIZE lpSize)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return FALSE;
+    /* FIXME share memory */
+    return NtGdiSetWindowExtEx(hdc, nXExtent, nYExtent, lpSize);
 }
 
+/*
+ * @unimplemented
+ */
+BOOL
+STDCALL
+SetViewportOrgEx(HDC hdc,
+                 int X,
+                 int Y,
+                 LPPOINT lpPoint)
+{
+    /* FIXME share memory */
+    return NtGdiSetViewportOrgEx(hdc,X,Y,lpPoint);
+}
 
 /*
  * @unimplemented
  */
-int
+BOOL
 STDCALL
-DrawEscape(
-       HDC             a0,
-       int             a1,
-       int             a2,
-       LPCSTR          a3
-       )
+SetBrushOrgEx(HDC hdc,
+              int nXOrg,
+              int nYOrg,
+              LPPOINT lppt)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    /* FIXME share memory */
+    return NtGdiSetBrushOrg(hdc,nXOrg,nYOrg,lppt);
 }
 
+/*
+ * @unimplemented
+ */
+BOOL 
+STDCALL
+PtInRegion(IN HRGN hrgn,
+           int x,
+           int y)
+{
+    /* FIXME some stuff at user mode need be fixed */
+    return NtGdiPtInRegion(hrgn,x,y);
+}
 
 /*
  * @unimplemented
  */
-int
+BOOL
 STDCALL
-EnumObjects(
-       HDC             a0,
-       int             a1,
-       GOBJENUMPROC    a2,
-       LPARAM          a3
-       )
+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
+BOOL
 STDCALL
-Escape(HDC hdc, INT escape, INT in_count, LPCSTR in_data, LPVOID out_data)
+RestoreDC(IN HDC hdc,
+          IN INT iLevel)
 {
-    return NtGdiEscape(hdc,escape,in_count,in_data,out_data);
+    /* FIXME Sharememory */
+    return NtGdiRestoreDC(hdc, iLevel);
 }
 
 /*
  * @unimplemented
  */
-HRGN
+INT
 STDCALL
-ExtCreateRegion(
-       CONST XFORM *   a0,
-       DWORD           a1,
-       CONST RGNDATA * a2
-       )
+SaveDC(IN HDC hdc)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    /* FIXME Sharememory */
+    return NtGdiSaveDC(hdc);
 }
 
 
+
 /*
  * @unimplemented
  */
 BOOL
 STDCALL
-GetAspectRatioFilterEx(
-       HDC     a0,
-       LPSIZE  a1
-       )
+CancelDC(HDC hdc)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return FALSE;
+    UNIMPLEMENTED;
+    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+    return FALSE;
 }
 
 
 /*
  * @unimplemented
  */
-UINT
+int
 STDCALL
-GetBoundsRect(
-       HDC     a0,
-       LPRECT  a1,
-       UINT    a2
-       )
+DrawEscape(HDC  hdc,
+           int a1,
+           int a2,
+           LPCSTR a3)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    UNIMPLEMENTED;
+    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+    return 0;
 }
 
 
@@ -188,26 +305,37 @@ GetBoundsRect(
  */
 int
 STDCALL
-GetMetaRgn(
-       HDC     a0,
-       HRGN    a1
-       )
+EnumObjects(HDC hdc,
+            int a1,
+            GOBJENUMPROC a2,
+            LPARAM a3)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    UNIMPLEMENTED;
+    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+    return 0;
 }
 
+/*
+ * @unimplemented
+ */
+int
+STDCALL
+Escape(HDC hdc, INT escape, INT in_count, LPCSTR in_data, LPVOID out_data)
+{
+        UNIMPLEMENTED;
+        SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+        return 0;
+}
 
 /*
  * @unimplemented
  */
-UINT
+HRGN
 STDCALL
-GetMetaFileBitsEx(
-       HMETAFILE       a0,
-       UINT            a1,
-       LPVOID          a2
+ExtCreateRegion(
+       CONST XFORM *   a0,
+       DWORD           a1,
+       CONST RGNDATA * a2
        )
 {
        UNIMPLEMENTED;
@@ -217,44 +345,50 @@ GetMetaFileBitsEx(
 
 
 /*
- * @unimplemented
+ * @implemented
  */
-BOOL
+UINT
 STDCALL
-GetRasterizerCaps(
-       LPRASTERIZER_STATUS     a0,
-       UINT                    a1
+GetBoundsRect(
+       HDC     hdc,
+       LPRECT  lprcBounds,
+       UINT    flags
        )
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return FALSE;
+    return NtGdiGetBoundsRect(hdc,lprcBounds,flags & DCB_RESET);
 }
 
+
 /*
- * @unimplemented
+ * @implemented
  */
-UINT
+int
 STDCALL
-GetSystemPaletteUse(HDC hDc)
+GetMetaRgn(HDC hdc,
+           HRGN hrgn)
 {
-    return NtGdiGetSystemPaletteUse(hDc);
+    return NtGdiGetRandomRgn(hdc,hrgn,2);
 }
 
 
 /*
  * @unimplemented
  */
-int
+UINT
 STDCALL
-GetTextCharacterExtra(
-       HDC     hDc
+GetMetaFileBitsEx(
+       HMETAFILE       a0,
+       UINT            a1,
+       LPVOID          a2
        )
 {
-       return NtGdiGetSetTextCharExtra( hDc, 0, FALSE);
+       UNIMPLEMENTED;
+       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+       return 0;
 }
 
 
+
 /*
  * @unimplemented
  */
@@ -269,7 +403,6 @@ GetFontLanguageInfo(
        return 0;
 }
 
-
 /*
  * @unimplemented
  */
@@ -285,7 +418,6 @@ PlayMetaFile(
        return FALSE;
 }
 
-
 /*
  * @unimplemented
  */
@@ -301,7 +433,6 @@ ResizePalette(
        return FALSE;
 }
 
-
 /*
  * @unimplemented
  */
@@ -316,21 +447,17 @@ SetMetaRgn(
        return 0;
 }
 
-
 /*
- * @unimplemented
+ * @implemented
  */
 UINT
 STDCALL
-SetBoundsRect(
-       HDC             a0,
-       CONST RECT      *a1,
-       UINT            a2
-       )
+SetBoundsRect(HDC hdc,
+              CONST RECT *prc,
+              UINT flags)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    /* FIXME add check for vaildate the flags */
+    return NtGdiSetBoundsRect(hdc, (LPRECT)prc, flags);
 }
 
 
@@ -349,7 +476,6 @@ SetMapperFlags(
        return 0;
 }
 
-
 /*
  * @unimplemented
  */
@@ -365,37 +491,6 @@ SetMetaFileBitsEx(
        return 0;
 }
 
-
-/*
- * @unimplemented
- */
-UINT
-STDCALL
-SetSystemPaletteUse(
-       HDC     a0,
-       UINT    a1
-       )
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-
-/*
- * @unimplemented
- */
-int
-STDCALL
-SetTextCharacterExtra(
-       HDC     hDC,
-       int     CharExtra
-       )
-{
-       return NtGdiGetSetTextCharExtra( hDC, CharExtra, TRUE);
-}
-
-
 /*
  * @unimplemented
  */
@@ -412,7 +507,6 @@ SetTextJustification(
        return FALSE;
 }
 
-
 /*
  * @unimplemented
  */
@@ -463,10 +557,6 @@ EnumMetaFile(
        return FALSE;
 }
 
-
-
-
-
 /*
  * @unimplemented
  */
@@ -481,7 +571,6 @@ DeleteEnhMetaFile(
        return FALSE;
 }
 
-
 /*
  * @unimplemented
  */
@@ -500,7 +589,6 @@ EnumEnhMetaFile(
        return FALSE;
 }
 
-
 /*
  * @unimplemented
  */
@@ -534,7 +622,6 @@ GetEnhMetaFileHeader(
        return 0;
 }
 
-
 /*
  * @unimplemented
  */
@@ -551,7 +638,6 @@ GetEnhMetaFilePaletteEntries(
        return 0;
 }
 
-
 /*
  * @unimplemented
  */
@@ -645,14 +731,27 @@ SetWinMetaFileBits(
 BOOL
 STDCALL
 GdiComment(
-       HDC             a0,
-       UINT            a1,
-       CONST BYTE      *a2
+       HDC             hDC,
+       UINT            bytes,
+       CONST BYTE      *buffer
        )
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return FALSE;
+#if 0
+  if (GDI_HANDLE_GET_TYPE(hDC) == GDI_OBJECT_TYPE_EMF)
+  {
+     PLDC pLDC = GdiGetLDC(hDC);
+     if ( !pLDC )
+     {
+        SetLastError(ERROR_INVALID_HANDLE);
+        return FALSE;
+     }
+     if (pLDC->iType == LDC_EMFLDC)
+     {          // Wine port
+         return EMFDRV_GdiComment( hDC, bytes, buffer );
+     }
+  }
+#endif
+  return FALSE;
 }
 
 
@@ -691,20 +790,18 @@ SetColorAdjustment(
        return FALSE;
 }
 
-
 /*
  * @unimplemented
  */
-BOOL
+int
 STDCALL
-GetColorAdjustment(
-       HDC                     hdc,
-       LPCOLORADJUSTMENT       a1
+EndDoc(
+       HDC     hdc
        )
 {
        UNIMPLEMENTED;
        SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return FALSE;
+       return 0;
 }
 
 
@@ -713,7 +810,7 @@ GetColorAdjustment(
  */
 int
 STDCALL
-EndDoc(
+StartPage(
        HDC     hdc
        )
 {
@@ -728,22 +825,7 @@ EndDoc(
  */
 int
 STDCALL
-StartPage(
-       HDC     hdc
-       )
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-
-/*
- * @unimplemented
- */
-int
-STDCALL
-EndPage(
+EndPage(
        HDC     hdc
        )
 {
@@ -784,24 +866,6 @@ SetAbortProc(
 }
 
 
-/*
- * @unimplemented
- */
-BOOL
-STDCALL
-PolyDraw(
-       HDC             hdc,
-       CONST POINT     *a1,
-       CONST BYTE      *a2,
-       int             a3
-       )
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return FALSE;
-}
-
-
 /*
  * @unimplemented
  */
@@ -847,55 +911,28 @@ ScaleWindowExtEx(
  */
 BOOL
 STDCALL
-UnrealizeObject(
-       HGDIOBJ a0
-       )
-{
-       return NtGdiUnrealizeObject(a0);
-}
-
-
-/*
- * @unimplemented
- */
-BOOL
-STDCALL
-GdiFlush()
+UnrealizeObject(HGDIOBJ  hgdiobj)
 {
-        /*
-         * Although GdiFlush is unimplemented, it's safe to return
-         * TRUE, because we don't have GDI engine surface caching
-         * implemented yet.
-         */
-       return TRUE;
-}
+    BOOL retValue = TRUE;
 
+    if (GDI_HANDLE_GET_TYPE(hgdiobj) != GDI_OBJECT_TYPE_BRUSH)
+    {
+        retValue = NtGdiUnrealizeObject(hgdiobj);
+    }
 
-/*
- * @unimplemented
- */
-DWORD
-STDCALL
-GdiSetBatchLimit(
-       DWORD   a0
-       )
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    return retValue;
 }
 
 
 /*
- * @unimplemented
+ * @implemented
  */
-DWORD
+BOOL
 STDCALL
-GdiGetBatchLimit()
+GdiFlush()
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    NtGdiFlush();
+    return TRUE;
 }
 
 
@@ -938,13 +975,11 @@ CheckColorsInGamut(
  */
 HCOLORSPACE
 STDCALL
-GetColorSpace(
-       HDC     hDc
-       )
+GetColorSpace(HDC hDc)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    UNIMPLEMENTED;
+    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+    return 0;
 }
 
 
@@ -963,51 +998,47 @@ SetColorSpace(
        return FALSE;
 }
 
-
 /*
- * @unimplemented
+ * @implemented
  */
 BOOL
 STDCALL
-DeleteColorSpace(
-       HCOLORSPACE     a0
-       )
+GetDeviceGammaRamp( HDC hdc,
+                    LPVOID lpGammaRamp)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return FALSE;
-}
+    BOOL retValue = FALSE;
+    if (lpGammaRamp == NULL)
+    {
+        SetLastError(ERROR_INVALID_PARAMETER);
+    }
+    else
+    {
+        retValue = NtGdiGetDeviceGammaRamp(hdc,lpGammaRamp);
+    }
 
+    return retValue;
+}
 
 /*
- * @unimplemented
+ * @implemented
  */
 BOOL
 STDCALL
-GetDeviceGammaRamp(
-       HDC     a0,
-       LPVOID  a1
-       )
+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);
+    }
 
-/*
- * @unimplemented
- */
-BOOL
-STDCALL
-SetDeviceGammaRamp(
-       HDC     a0,
-       LPVOID  a1
-       )
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return FALSE;
+    return  retValue;
 }
 
 
@@ -1259,52 +1290,46 @@ wglSwapLayerBuffers(
  * === WHERE ARE THEY DEFINED? =============
  */
 
-
 /*
  * @unimplemented
  */
 DWORD
 STDCALL
-GdiPlayDCScript(
+IsValidEnhMetaRecord(
        DWORD   a0,
-       DWORD   a1,
-       DWORD   a2,
-       DWORD   a3,
-       DWORD   a4,
-       DWORD   a5
+       DWORD   a1
        )
 {
        UNIMPLEMENTED;
        SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
        return 0;
-}
 
+}
 
 /*
  * @unimplemented
  */
 DWORD
 STDCALL
-GdiPlayJournal(
+IsValidEnhMetaRecordOffExt(
        DWORD   a0,
        DWORD   a1,
        DWORD   a2,
-       DWORD   a3,
-       DWORD   a4
+       DWORD   a3
        )
 {
        UNIMPLEMENTED;
        SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
        return 0;
-}
 
+}
 
 /*
  * @unimplemented
  */
 DWORD
 STDCALL
-GdiPlayScript(
+GetGlyphOutlineWow(
        DWORD   a0,
        DWORD   a1,
        DWORD   a2,
@@ -1319,20 +1344,18 @@ GdiPlayScript(
        return 0;
 }
 
-
 /*
  * @unimplemented
  */
 DWORD
 STDCALL
-GetGlyphOutlineWow(
+gdiPlaySpoolStream(
        DWORD   a0,
        DWORD   a1,
        DWORD   a2,
        DWORD   a3,
        DWORD   a4,
-       DWORD   a5,
-       DWORD   a6
+       DWORD   a5
        )
 {
        UNIMPLEMENTED;
@@ -1340,33 +1363,32 @@ GetGlyphOutlineWow(
        return 0;
 }
 
-
 /*
  * @unimplemented
  */
-INT
-STDCALL
-GetRandomRgn(
-       HDC     a0,
-       HRGN    a1,
-       INT     a2
-       )
+HANDLE 
+STDCALL 
+AddFontMemResourceEx(
+       PVOID pbFont,
+       DWORD cbFont,
+       PVOID pdv,
+       DWORD *pcFonts
+)
 {
        UNIMPLEMENTED;
        SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
        return 0;
 }
 
-
 /*
  * @unimplemented
  */
-DWORD
-STDCALL
-SelectBrushLocal(
-       DWORD   a0,
-       DWORD   a1
-       )
+int 
+STDCALL 
+AddFontResourceTracking(
+       LPCSTR lpString,
+       int unknown
+)
 {
        UNIMPLEMENTED;
        SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
@@ -1374,66 +1396,49 @@ SelectBrushLocal(
 }
 
 
+
 /*
  * @unimplemented
  */
-DWORD
+HBITMAP 
 STDCALL
-SelectFontLocal(
-       DWORD   a0,
-       DWORD   a1
-       )
+ClearBitmapAttributes(HBITMAP hbm, DWORD dwFlags)
 {
        UNIMPLEMENTED;
        SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
        return 0;
 }
 
-
 /*
  * @unimplemented
  */
-DWORD
+HBRUSH 
 STDCALL
-SetFontEnumeration(
-       DWORD   a0
-       )
+ClearBrushAttributes(HBRUSH hbm, DWORD dwFlags)
 {
        UNIMPLEMENTED;
        SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
        return 0;
 }
 
-
 /*
  * @unimplemented
  */
-DWORD
+BOOL 
 STDCALL
-SetRelAbs(
-       DWORD   a0,
-       DWORD   a1
-       )
+ColorCorrectPalette(HDC hDC,HPALETTE hPalette,DWORD dwFirstEntry,DWORD dwNumOfEntries)
 {
        UNIMPLEMENTED;
        SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
        return 0;
 }
 
-
 /*
  * @unimplemented
  */
-DWORD
+int
 STDCALL
-gdiPlaySpoolStream(
-       DWORD   a0,
-       DWORD   a1,
-       DWORD   a2,
-       DWORD   a3,
-       DWORD   a4,
-       DWORD   a5
-       )
+EndFormPage(HDC hdc)
 {
        UNIMPLEMENTED;
        SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
@@ -1441,17 +1446,13 @@ gdiPlaySpoolStream(
 }
 
 
+
 /*
  * @unimplemented
  */
-DWORD
+DWORD 
 STDCALL
-GetFontResourceInfo(
-       DWORD   a0,
-       DWORD   a1,
-       DWORD   a2,
-       DWORD   a3
-       )
+GdiAddGlsBounds(HDC hdc,LPRECT prc)
 {
        UNIMPLEMENTED;
        SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
@@ -1461,14 +1462,9 @@ GetFontResourceInfo(
 /*
  * @unimplemented
  */
-HANDLE 
-STDCALL 
-AddFontMemResourceEx(
-       PVOID pbFont,
-       DWORD cbFont,
-       PVOID pdv,
-       DWORD *pcFonts
-)
+BOOL 
+STDCALL
+GdiArtificialDecrementDriver(LPWSTR pDriverName,BOOL unknown)
 {
        UNIMPLEMENTED;
        SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
@@ -1478,12 +1474,9 @@ AddFontMemResourceEx(
 /*
  * @unimplemented
  */
-int 
-STDCALL 
-AddFontResourceTracking(
-       LPCSTR lpString,
-       int unknown
-)
+BOOL
+STDCALL
+GdiCleanCacheDC(HDC hdc)
 {
        UNIMPLEMENTED;
        SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
@@ -1493,9 +1486,9 @@ AddFontResourceTracking(
 /*
  * @unimplemented
  */
-BOOL 
-STDCALL 
-AnyLinkedFonts(VOID)
+HDC
+STDCALL
+GdiConvertAndCheckDC(HDC hdc)
 {
        UNIMPLEMENTED;
        SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
@@ -1505,157 +1498,172 @@ AnyLinkedFonts(VOID)
 /*
  * @unimplemented
  */
-HBITMAP 
+HENHMETAFILE 
 STDCALL
-ClearBitmapAttributes(HBITMAP hbm, DWORD dwFlags)
+GdiConvertEnhMetaFile(HENHMETAFILE hmf)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    UNIMPLEMENTED;
+    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+    return 0;
 }
 
 /*
  * @unimplemented
  */
-HBRUSH 
+BOOL
 STDCALL
-ClearBrushAttributes(HBRUSH hbm, DWORD dwFlags)
+GdiDrawStream(HDC dc, ULONG l, VOID *v)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    UNIMPLEMENTED;
+    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+    return 0;
 }
 
 /*
  * @unimplemented
  */
-BOOL 
+DWORD 
 STDCALL
-ColorCorrectPalette(HDC hDC,HPALETTE hPalette,DWORD dwFirstEntry,DWORD dwNumOfEntries)
+GdiGetCodePage(HDC hdc)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    UNIMPLEMENTED;
+    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+    return 0;
 }
 
 /*
  * @unimplemented
  */
-BOOL 
+BOOL
 STDCALL
-EnableEUDC(BOOL enable)
+GdiIsMetaFileDC(HDC hdc)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    UNIMPLEMENTED;
+    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+    return 0;
 }
 
 /*
  * @unimplemented
  */
-int
+BOOL
 STDCALL
-EndFormPage(HDC hdc)
+GdiIsMetaPrintDC(HDC hdc)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    UNIMPLEMENTED;
+    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+    return 0;
 }
 
 /*
  * @unimplemented
  */
-BOOL 
+BOOL
 STDCALL
-FontIsLinked(HDC hdc)
+GdiIsPlayMetafileDC(HDC hdc)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    UNIMPLEMENTED;
+    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+    return 0;
 }
 
 /*
  * @unimplemented
  */
-DWORD 
+BOOL
 STDCALL
-GdiAddGlsBounds(HDC hdc,LPRECT prc)
+GdiValidateHandle(HGDIOBJ hobj)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    UNIMPLEMENTED;
+    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+    return 0;
 }
 
 /*
  * @unimplemented
  */
-BOOL 
+DWORD 
 STDCALL
-GdiArtificialDecrementDriver(LPWSTR pDriverName,BOOL unknown)
+GetBitmapAttributes(HBITMAP hbm)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    UNIMPLEMENTED;
+    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+    return 0;
 }
 
 /*
  * @unimplemented
  */
-BOOL
+DWORD 
 STDCALL
-GdiCleanCacheDC(HDC hdc)
+GetBrushAttributes(HBRUSH hbr)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    UNIMPLEMENTED;
+    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+    return 0;
 }
 
 /*
  * @unimplemented
  */
-HDC
+BOOL 
 STDCALL
-GdiConvertAndCheckDC(HDC hdc)
+GetCharABCWidthsI(HDC hdc,
+                  UINT giFirst,
+                  UINT cgi,
+                  LPWORD pgi,
+                  LPABC lpabc
+)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    UNIMPLEMENTED;
+    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+    return 0;
 }
 
 /*
  * @unimplemented
  */
-HBITMAP 
+BOOL 
 STDCALL
-GdiConvertBitmap(HBITMAP hbm)
+GetCharWidthI(HDC hdc,
+              UINT giFirst,
+              UINT cgi,
+              LPWORD pgi,
+              LPINT lpBuffer
+)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    UNIMPLEMENTED;
+    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+    return 0;
 }
 
+
+
 /*
- * @unimplemented
+ * @implemented
  */
-HBRUSH
+ULONG 
 STDCALL
-GdiConvertBrush(HBRUSH hbr)
+GetEUDCTimeStamp(VOID)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    return NtGdiGetEudcTimeStampEx(NULL,0,TRUE);
 }
 
 /*
- * @unimplemented
+ * @implemented
  */
-HDC 
+ULONG 
 STDCALL
-GdiConvertDC(HDC hdc)
+GetFontAssocStatus(HDC hdc)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    ULONG retValue = 0;
+
+    if (hdc)
+    {
+        retValue = NtGdiQueryFontAssocInfo(hdc);
+    }
+
+    return retValue;
 }
 
 /*
@@ -1663,91 +1671,117 @@ GdiConvertDC(HDC hdc)
  */
 HFONT 
 STDCALL
-GdiConvertFont(HFONT hfont)
+GetHFONT(HDC dc)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    UNIMPLEMENTED;
+    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+    return 0;
 }
 
 /*
  * @unimplemented
  */
-HPALETTE 
+DWORD 
 STDCALL
-GdiConvertPalette(HPALETTE hpal)
+GetLayout(HDC hdc
+)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    UNIMPLEMENTED;
+    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+    return 0;
 }
 
 /*
- * @unimplemented
+ * @implemented
  */
-HRGN
+BOOL
 STDCALL
-GdiConvertRegion(HRGN hregion)
+GetTextExtentExPointWPri(HDC hdc,
+                         LPWSTR lpwsz,
+                         ULONG cwc,
+                         ULONG dxMax,
+                         ULONG *pcCh,
+                         PULONG pdxOut,
+                         LPSIZE psize)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    return NtGdiGetTextExtentExW(hdc,lpwsz,cwc,dxMax,pcCh,pdxOut,psize,0);
 }
 
 /*
- * @unimplemented
+ * @implemented
  */
-HENHMETAFILE 
+INT 
 STDCALL
-GdiConvertEnhMetaFile(HENHMETAFILE hmf)
+GetTextFaceAliasW(HDC hdc,
+                  int cChar,
+                  LPWSTR pszOut)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    INT retValue = 0;
+    if ((!pszOut) || (cChar))
+    {
+        retValue = NtGdiGetTextFaceW(hdc,cChar,pszOut,TRUE);
+    }
+    else
+    {
+        SetLastError(ERROR_INVALID_PARAMETER);
+    }
+    return retValue;
 }
 
+
+
 /*
  * @unimplemented
  */
-BOOL
+BOOL 
 STDCALL
-GdiDeleteLocalDC(HDC hdc)
+MirrorRgn(HWND hwnd,HRGN hrgn)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    UNIMPLEMENTED;
+    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+    return 0;
 }
 
+
+
 /*
  * @unimplemented
  */
-int 
+DWORD 
 STDCALL
-GdiDescribePixelFormat(HDC hdc,int ipfd,UINT cjpfd,PPIXELFORMATDESCRIPTOR ppfd)
+QueryFontAssocStatus(VOID)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    UNIMPLEMENTED;
+    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+    return 0;
 }
 
 /*
- * @unimplemented
+ * @implemented
  */
-BOOL
+BOOL 
 STDCALL
-GdiDrawStream(HDC dc, ULONG l, VOID *v)
+RemoveFontMemResourceEx(HANDLE fh)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    BOOL retValue=0;
+
+    if (fh)
+    {
+        retValue = NtGdiRemoveFontMemResourceEx(fh);
+    }
+    else
+    {
+        SetLastError(ERROR_INVALID_PARAMETER);
+    }
+    return retValue;
 }
 
 /*
  * @unimplemented
  */
-HGDIOBJ 
+int 
 STDCALL
-GdiFixUpHandle(HGDIOBJ hobj)
+RemoveFontResourceTracking(LPCSTR lpString,int unknown)
 {
        UNIMPLEMENTED;
        SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
@@ -1757,9 +1791,9 @@ GdiFixUpHandle(HGDIOBJ hobj)
 /*
  * @unimplemented
  */
-DWORD 
+HBITMAP 
 STDCALL
-GdiGetCodePage(HDC hdc)
+SetBitmapAttributes(HBITMAP hbm, DWORD dwFlags)
 {
        UNIMPLEMENTED;
        SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
@@ -1771,7 +1805,7 @@ GdiGetCodePage(HDC hdc)
  */
 HBRUSH 
 STDCALL
-GdiGetLocalBrush(HBRUSH hbr)
+SetBrushAttributes(HBRUSH hbm, DWORD dwFlags)
 {
        UNIMPLEMENTED;
        SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
@@ -1781,97 +1815,110 @@ GdiGetLocalBrush(HBRUSH hbr)
 /*
  * @unimplemented
  */
-HDC 
+DWORD 
 STDCALL
-GdiGetLocalDC(HDC hdc)
+SetLayout(HDC hdc,
+          DWORD dwLayout)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    UNIMPLEMENTED;
+    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+    return 0;
 }
 
 /*
  * @unimplemented
  */
-HFONT 
+DWORD 
 STDCALL
-GdiGetLocalFont(HFONT hfont)
+SetLayoutWidth(HDC hdc,LONG wox,DWORD dwLayout)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    UNIMPLEMENTED;
+    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+    return 0;
 }
 
+
+
 /*
- * @unimplemented
+ * @implemented
  */
-BOOL
+int 
 STDCALL
-GdiIsMetaFileDC(HDC hdc)
+StartFormPage(HDC hdc)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    return StartPage(hdc);
 }
 
 /*
  * @unimplemented
  */
-BOOL
+VOID 
 STDCALL
-GdiIsMetaPrintDC(HDC hdc)
+UnloadNetworkFonts(DWORD unknown)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    UNIMPLEMENTED;
+    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
 }
 
 /*
- * @unimplemented
+ * @implemented
  */
-BOOL
+BOOL 
 STDCALL
-GdiIsPlayMetafileDC(HDC hdc)
+GetTextExtentExPointI(HDC hdc,
+                      LPWORD pgiIn,
+                      int cgi,
+                      int nMaxExtent,
+                      LPINT lpnFit,
+                      LPINT alpDx,
+                      LPSIZE lpSize)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    return NtGdiGetTextExtentExW(hdc,pgiIn,cgi,nMaxExtent,(ULONG *)lpnFit, (PULONG) alpDx,lpSize,1);
 }
 
-
 /*
- * @unimplemented
+ * @implemented
  */
-BOOL
+BOOL 
 STDCALL
-GdiReleaseLocalDC(HDC hdc)
+GetTextExtentPointI(HDC hdc,
+                    LPWORD pgiIn,
+                    int cgi,
+                    LPSIZE lpSize)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    return NtGdiGetTextExtent(hdc,pgiIn,cgi,lpSize,2);
 }
 
+
+
+
+
 /*
  * @unimplemented
  */
-BOOL
+BOOL 
 STDCALL
-GdiSetAttrs(HDC hdc)
+GdiRealizationInfo(HDC hdc,
+                   PREALIZATION_INFO pri)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    UNIMPLEMENTED;
+    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+    return 0;
 }
 
+
+
 /*
  * @unimplemented
  */
-VOID
+BOOL 
 STDCALL
-GdiSetLastError(DWORD dwErrCode)
+GetETM(HDC hdc,
+       EXTTEXTMETRIC *petm)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+    UNIMPLEMENTED;
+    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+    return 0;
 }
 
 /*
@@ -1879,171 +1926,231 @@ GdiSetLastError(DWORD dwErrCode)
  */
 BOOL
 STDCALL
-GdiSetPixelFormat(HDC hdc,int ipfd)
+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
+HANDLE
 STDCALL
-GdiValidateHandle(HGDIOBJ hobj)
+GdiConvertMetaFilePict(HGLOBAL hMem)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    UNIMPLEMENTED;
+    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+    return 0;
 }
 
 /*
- * @unimplemented
+ * @implemented
  */
-BOOL
+DEVMODEW *
 STDCALL
-GdiSwapBuffers(HDC hdc)
+GdiConvertToDevmodeW(DEVMODEA *dm)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    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
  */
-VOID 
+HENHMETAFILE
 STDCALL
-GdiSetServerAttr(HDC hdc,DWORD attr)
+GdiCreateLocalEnhMetaFile(HENHMETAFILE hmo)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+    UNIMPLEMENTED;
+    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+    return 0;
 }
 
 /*
  * @unimplemented
  */
-DWORD 
+METAFILEPICT *
 STDCALL
-GetBitmapAttributes(HBITMAP hbm)
+GdiCreateLocalMetaFilePict(HENHMETAFILE hmo)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    UNIMPLEMENTED;
+    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+    return 0;
 }
 
+
 /*
  * @unimplemented
  */
-DWORD 
+HANDLE 
 STDCALL
-GetBrushAttributes(HBRUSH hbr)
+GdiGetSpoolFileHandle(LPWSTR pwszPrinterName,
+                      LPDEVMODEW pDevmode,
+                      LPWSTR pwszDocName)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    UNIMPLEMENTED;
+    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+    return 0;
 }
 
 /*
  * @unimplemented
  */
-BOOL 
+BOOL
 STDCALL
-GetCharABCWidthsI(
-       HDC hdc,
-       UINT giFirst,
-       UINT cgi,
-       LPWORD pgi,
-       LPABC lpabc
-)
+GdiDeleteSpoolFileHandle(HANDLE SpoolFileHandle)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    UNIMPLEMENTED;
+    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+    return 0;
 }
 
 /*
  * @unimplemented
  */
-BOOL 
+DWORD 
 STDCALL
-GetCharWidthI(
-       HDC hdc,
-       UINT giFirst,
-       UINT cgi,
-       LPWORD pgi,
-       LPINT lpBuffer
-)
+GdiGetPageCount(HANDLE SpoolFileHandle)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    UNIMPLEMENTED;
+    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+    return 0;
 }
 
 /*
  * @unimplemented
  */
-DWORD 
+HDC
 STDCALL
-GetFontUnicodeRanges(
-       HDC hdc,
-       LPGLYPHSET lpgs
-)
+GdiGetDC(HANDLE SpoolFileHandle)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    UNIMPLEMENTED;
+    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+    return 0;
 }
 
 /*
  * @unimplemented
  */
-ULONG 
+HANDLE 
 STDCALL
-GetEUDCTimeStamp(VOID)
+GdiGetPageHandle(HANDLE SpoolFileHandle,
+                 DWORD Page,
+                 LPDWORD pdwPageType)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    UNIMPLEMENTED;
+    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+    return 0;
 }
 
 /*
  * @unimplemented
  */
-ULONG 
+BOOL
 STDCALL
-GetFontAssocStatus(HDC hdc)
+GdiStartDocEMF(HANDLE SpoolFileHandle,
+               DOCINFOW *pDocInfo)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    UNIMPLEMENTED;
+    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+    return 0;
 }
 
 /*
  * @unimplemented
  */
-HFONT 
+BOOL
 STDCALL
-GetHFONT(HDC dc)
+GdiStartPageEMF(HANDLE SpoolFileHandle)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    UNIMPLEMENTED;
+    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+    return 0;
 }
 
 /*
  * @unimplemented
  */
-DWORD 
+BOOL
 STDCALL
-GetLayout(
-       HDC hdc
-)
+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;
 }
 
 /*
@@ -2051,95 +2158,125 @@ GetLayout(
  */
 BOOL
 STDCALL
-GetTextExtentExPointWPri(HDC hdc,LPWSTR lpwsz,ULONG cwc,ULONG dxMax,ULONG *pcCh,PULONG pdxOut,LPSIZE psize)
+GdiEndPageEMF(HANDLE SpoolFileHandle,
+              DWORD dwOptimization)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    UNIMPLEMENTED;
+    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+    return 0;
 }
 
 /*
  * @unimplemented
  */
-int 
+BOOL
 STDCALL
-GetTextFaceAliasW(HDC hdc,int cChar,LPWSTR pszOut)
+GdiEndDocEMF(HANDLE SpoolFileHandle)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    UNIMPLEMENTED;
+    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+    return 0;
 }
 
 /*
  * @unimplemented
  */
-BOOL 
+BOOL
 STDCALL
-GetTransform(HDC hdc, DWORD iXform, LPXFORM pxf)
+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
  */
-LONG 
+BOOL
 STDCALL
-HT_Get8BPPFormatPalette(LPPALETTEENTRY pPaletteEntry, USHORT RedGamma,USHORT GreenGamma, USHORT BlueGamma)
+GdiResetDCEMF(HANDLE SpoolFileHandle,
+              PDEVMODEW pCurrDM)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    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)
+{
+    /* FIMXE we need do more thing in user mode */
+    return NtGdiCreateDIBitmap(hDc, Header, Init, Bits, Data,  ColorUse);
 }
 
 /*
  * @unimplemented
  */
-LONG 
+INT
 STDCALL
-HT_Get8BPPMaskPalette(LPPALETTEENTRY pPaletteEntry, BOOL Use8BPPMaskPal,BYTE CMYMask, USHORT RedGamma, USHORT GreenGamma, USHORT BlueGamma)
+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
  */
-BOOL 
-STDCALL
-MirrorRgn(HWND hwnd,HRGN hrgn)
+HBITMAP STDCALL
+CreateBitmap(INT  Width,
+             INT  Height,
+             UINT  Planes,
+             UINT  BitsPixel,
+             PCVOID pUnsafeBits)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    /* FIXME some part should be done in user mode */
+    return NtGdiCreateBitmap(Width, Height, Planes, BitsPixel, (LPBYTE) pUnsafeBits);
 }
 
 /*
  * @unimplemented
  */
-int 
-STDCALL
-NamedEscape(HDC hdc,PWCHAR pDriver,int nDriver,int iEsc,int cjIn,LPSTR pjIn,int cjOut,LPSTR pjOut)
+LPWSTR STDCALL
+EngGetDriverName(HDEV hdev)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    UNIMPLEMENTED;
+    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+    return 0;
 }
 
 /*
  * @unimplemented
  */
-DWORD 
+ULONG STDCALL
+XLATEOBJ_iXlate(XLATEOBJ *XlateObj,
+                ULONG Color)
+{
+    UNIMPLEMENTED;
+    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+    return 0;
+}
+
+/*
+ * @unimplemented
+ */
+ULONG *
 STDCALL
-QueryFontAssocStatus(VOID)
+XLATEOBJ_piVector(XLATEOBJ *XlateObj)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    return XlateObj->pulXlate;
 }
 
 /*
@@ -2147,88 +2284,104 @@ QueryFontAssocStatus(VOID)
  */
 BOOL 
 STDCALL
-RemoveFontMemResourceEx(
-       HANDLE fh
+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
  */
-int 
+BOOL
 STDCALL
-RemoveFontResourceTracking(LPCSTR lpString,int unknown)
+GdiPlayPrivatePageEMF(HANDLE SpoolFileHandle,
+                      DWORD unknown,
+                      RECT *prectDocument)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    UNIMPLEMENTED;
+    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+    return 0;
 }
 
 /*
  * @unimplemented
  */
-HBITMAP 
-STDCALL
-SetBitmapAttributes(HBITMAP hbm, DWORD dwFlags)
+VOID STDCALL GdiInitializeLanguagePack(DWORD InitParam)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    UNIMPLEMENTED;
+    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
 }
 
+
 /*
- * @unimplemented
+ * @implemented
  */
-HBRUSH 
+INT
 STDCALL
-SetBrushAttributes(HBRUSH hbm, DWORD dwFlags)
+ExcludeClipRect(IN HDC hdc, IN INT xLeft, IN INT yTop, IN INT xRight, IN INT yBottom)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    /* FIXME some part need be done on user mode size */
+    return NtGdiExcludeClipRect(hdc, xLeft, yTop, xRight, yBottom);
 }
 
 /*
- * @unimplemented
+ * @implemented
  */
-DWORD 
+INT
 STDCALL
-SetLayout(
-       HDC hdc,
-       DWORD dwLayout
-)
+ExtSelectClipRgn( IN HDC hdc, IN HRGN hrgn, IN INT iMode)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    /* FIXME some part need be done on user mode size */
+    return NtGdiExtSelectClipRgn(hdc,hrgn, iMode);
 }
 
 /*
- * @unimplemented
+ * @implemented
  */
-DWORD 
+BOOL
 STDCALL
-SetLayoutWidth(HDC hdc,LONG wox,DWORD dwLayout)
+GdiGradientFill(
+    IN HDC hdc,
+    IN PTRIVERTEX pVertex,
+    IN ULONG nVertex,
+    IN PVOID pMesh,
+    IN ULONG nMesh,
+    IN ULONG ulMode)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    /* FIXME some part need be done in user mode */
+    return NtGdiGradientFill(hdc, pVertex, nVertex, pMesh, nMesh, ulMode);
 }
 
+
 /*
- * @unimplemented
+ * @implemented
  */
-BOOL 
+BOOL
 STDCALL
-SetMagicColors(HDC hdc,PALETTEENTRY peMagic,ULONG Index)
+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
+)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    /* FIXME some part need be done in user mode */
+    return NtGdiTransparentBlt(hdcDst, xDst, yDst, cxDst, cyDst, hdcSrc, xSrc, ySrc, cxSrc, cySrc, TransColor);
 }
 
 /*
@@ -2236,1398 +2389,328 @@ SetMagicColors(HDC hdc,PALETTEENTRY peMagic,ULONG Index)
  */
 BOOL
 STDCALL
-SetVirtualResolution(HDC hdc, int cxVirtualDevicePixel,int cyVirtualDevicePixel,int cxVirtualDeviceMm, int cyVirtualDeviceMm)
+GdiPrinterThunk(
+    IN HUMPD humpd,
+    DWORD *status,
+    DWORD unuse)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    /* FIXME figout the protypes, the HUMPD are a STRUCT or COM object */
+    /* status contain some form of return value that being save, what it is I do not known */
+    /* unsue seam have zero effect, what it is for I do not known */
+
+    // ? return NtGdiSetPUMPDOBJ(humpd->0x10,TRUE, humpd, ?) <- blackbox, OpenRCE info, and api hooks for anylaysing;
+    return FALSE;
 }
 
 /*
  * @unimplemented
+ *
  */
-int 
+HBITMAP
 STDCALL
-StartFormPage(HDC hdc)
+GdiConvertBitmapV5(
+    HBITMAP in_format_BitMap, 
+    HBITMAP src_BitMap,
+    INT bpp,
+    INT unuse)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    /* FIXME guessing the prototypes */
+
+    /* 
+     * it have create a new bitmap with desired in format, 
+     * then convert it src_bitmap to new format
+     * and return it as HBITMAP 
+     */
+
+    return FALSE;
 }
 
+
 /*
- * @unimplemented
+ * @implemented
+ *
  */
-VOID 
-STDCALL
-UnloadNetworkFonts(DWORD unknown)
+COLORREF 
+STDCALL 
+GetBkColor(HDC hdc)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+    /* FIXME some part are done in user mode */
+    return NtGdiGetBkColor(hdc);
 }
 
 /*
- * @unimplemented
+ * @implemented
+ *
  */
-BOOL 
-STDCALL
-GetTextExtentExPointI(
-       HDC hdc,
-       LPWORD pgiIn,
-       int cgi,
-       int nMaxExtent,
-       LPINT lpnFit,
-       LPINT alpDx,
-       LPSIZE lpSize
-)
+int
+STDCALL 
+GetBkMode(HDC hdc)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    /* FIXME some part are done in user mode */
+    return NtGdiGetBkMode(hdc);
 }
 
 /*
- * @unimplemented
+ * @implemented
+ *
  */
 BOOL 
-STDCALL
-GetTextExtentPointI(
-       HDC hdc,
-       LPWORD pgiIn,
-       int cgi,
-       LPSIZE lpSize
-)
+STDCALL 
+GetBrushOrgEx(HDC hdc,LPPOINT pt)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    /* FIXME some part are done in user mode */
+    return NtGdiGetBrushOrgEx(hdc,pt);
 }
 
 /*
- * @unimplemented
+ * @implemented
+ *
  */
-NTSTATUS
-STDCALL
-GdiFullscreenControl(FULLSCREENCONTROL FullscreenCommand,PVOID FullscreenInput,
-                                       DWORD FullscreenInputLength,PVOID FullscreenOutput,
-                                       PULONG FullscreenOutputLength)
+BOOL 
+STDCALL 
+GetCharABCWidthsFloatW(HDC hdc,UINT FirstChar,UINT LastChar,LPABCFLOAT abcF)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    /* FIXME some part are done in user mode */
+    return NtGdiGetCharABCWidthsFloat(hdc, FirstChar, LastChar, abcF);
 }
 
 /*
- * @unimplemented
+ * @implemented
+ *
  */
-INT 
-STDCALL
-GdiQueryFonts(PUNIVERSAL_FONT_ID pufiFontList,ULONG nBufferSize,PLARGE_INTEGER pTimeStamp )
+int 
+STDCALL 
+GetDeviceCaps(HDC hdc,
+              int i)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    /* FIXME some part need be done in user mode */
+    return NtGdiGetDeviceCaps(hdc,i);
 }
 
+
 /*
- * @unimplemented
+ * @implemented
+ *
  */
 BOOL 
-STDCALL
-GdiRealizationInfo(HDC hdc, PREALIZATION_INFO pri)
+STDCALL 
+GetCurrentPositionEx(HDC hdc,
+                     LPPOINT lpPoint)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    /* FIXME some part need be done in user mode */
+    return  NtGdiGetCurrentPositionEx(hdc, lpPoint);
 }
 
 /*
- * @unimplemented
+ * @implemented
+ *
  */
-BOOL 
+int 
 STDCALL
-GetCharWidthInfo(HDC hdc,PCHWIDTHINFO pChWidthInfo)
+GetClipBox(HDC hdc,
+           LPRECT lprc)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    /* FIXME some part need be done in user mode */
+    return  NtGdiGetClipBox(hdc, lprc);
 }
 
 /*
- * @unimplemented
+ * @implemented
+ *
  */
 BOOL 
 STDCALL
-GetETM(HDC hdc,EXTTEXTMETRIC *petm)
+GetCharWidthFloatW(HDC hdc,
+                   UINT iFirstChar, 
+                   UINT iLastChar, 
+                   PFLOAT pxBuffer)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    /* FIXME some part need be done in user mode */
+    return NtGdiGetCharWidthFloat(hdc, iFirstChar, iLastChar, pxBuffer);
 }
 
 /*
- * @unimplemented
+ * @implemented
+ *
  */
 BOOL
 STDCALL
-GdiAddGlsRecord(HDC hdc,DWORD unknown1,LPCSTR unknown2,LPRECT unknown3)
+GetCharWidth32W(HDC hdc,
+               UINT iFirstChar,
+               UINT iLastChar,
+               LPINT lpBuffer)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    /* FIXME some part need be done in user mode */
+    return NtGdiGetCharWidth32(hdc, iFirstChar, iLastChar, lpBuffer);
 }
 
 /*
- * @unimplemented
+ * @implemented
+ *
  */
-HANDLE
+BOOL
 STDCALL
-GdiConvertMetaFilePict(HGLOBAL hMem)
+GetCharABCWidths(HDC hdc,
+                 UINT uFirstChar,
+                 UINT uLastChar,
+                 LPABC lpabc)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    /* FIXME some part need be done in user mode */
+    return NtGdiGetCharABCWidths(hdc, uFirstChar, uLastChar, lpabc);
 }
 
+
 /*
  * @implemented
+ *
  */
-DEVMODEW *
+DWORD 
 STDCALL
-GdiConvertToDevmodeW(DEVMODEA *dm)
+GetFontData(HDC hdc,
+            DWORD dwTable,
+            DWORD dwOffset,
+            LPVOID lpvBuffer,
+            DWORD cbData)
 {
-  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 )
+    if (!lpvBuffer)
     {
-    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;
+       cbData = 0;
     }
-  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
+    return NtGdiGetFontData(hdc, dwTable, dwOffset, lpvBuffer, cbData);
 }
 
+
 /*
- * @unimplemented
+ * @implemented
+ *
  */
-HENHMETAFILE
+DWORD 
 STDCALL
-GdiCreateLocalEnhMetaFile(HENHMETAFILE hmo)
+GetRegionData(HRGN hrgn,
+              DWORD nCount,
+              LPRGNDATA lpRgnData)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    if (!lpRgnData)
+    {
+        nCount = 0;
+    }
+
+    return NtGdiGetRegionData(hrgn,nCount,lpRgnData);
 }
 
+
 /*
- * @unimplemented
+ * @implemented
+ *
  */
-METAFILEPICT *
+INT
 STDCALL
-GdiCreateLocalMetaFilePict(HENHMETAFILE hmo)
+GetRgnBox(HRGN hrgn,
+          LPRECT prcOut)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    /* FIXME some stuff need be done in user mode */
+    return NtGdiGetRgnBox(hrgn, prcOut);
 }
 
 
 /*
- * @unimplemented
+ * @implemented
+ *
  */
-HANDLE 
+INT
 STDCALL
-GdiGetSpoolFileHandle(
-       LPWSTR          pwszPrinterName,
-       LPDEVMODEW      pDevmode,
-       LPWSTR          pwszDocName)
+OffsetRgn( HRGN hrgn,
+          int nXOffset,
+          int nYOffset)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    /* FIXME some part are done in user mode */
+    return NtGdiOffsetRgn(hrgn,nXOffset,nYOffset);
 }
 
-/*
- * @unimplemented
- */
-BOOL
-STDCALL
-GdiDeleteSpoolFileHandle(
-       HANDLE  SpoolFileHandle)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
 
-/*
- * @unimplemented
- */
-DWORD 
+INT
 STDCALL
-GdiGetPageCount(
-       HANDLE  SpoolFileHandle)
+GetTextCharsetInfo(HDC hdc,
+                   LPFONTSIGNATURE lpSig,
+                   DWORD dwFlags)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    /* FIXME some part are done in user mode */
+    return NtGdiGetTextCharsetInfo(hdc, lpSig, dwFlags); 
 }
 
-/*
- * @unimplemented
- */
-HDC
-STDCALL
-GdiGetDC(
-       HANDLE  SpoolFileHandle)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
 
-/*
- * @unimplemented
- */
-HANDLE 
-STDCALL
-GdiGetPageHandle(
-       HANDLE  SpoolFileHandle,
-       DWORD   Page,
-       LPDWORD pdwPageType)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
 
-/*
- * @unimplemented
- */
-BOOL
+INT 
 STDCALL
-GdiStartDocEMF(
-       HANDLE          SpoolFileHandle,
-       DOCINFOW        *pDocInfo)
+IntersectClipRect(HDC hdc,
+                  int nLeftRect,
+                  int nTopRect,
+                  int nRightRect,
+                  int nBottomRect)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    /* FIXME some part are done in user mode */
+    return NtGdiIntersectClipRect(hdc, nLeftRect, nTopRect, nRightRect, nBottomRect);
 }
 
-/*
- * @unimplemented
- */
-BOOL
+INT 
 STDCALL
-GdiStartPageEMF(
-       HANDLE  SpoolFileHandle)
+OffsetClipRgn(HDC hdc,
+              int nXOffset,
+              int nYOffset)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    /* FIXME some part are done in user mode */
+    return NtGdiOffsetClipRgn( hdc,  nXOffset,  nYOffset);
 }
 
-/*
- * @unimplemented
- */
-BOOL
-STDCALL
-GdiPlayPageEMF(
-       HANDLE  SpoolFileHandle,
-       HANDLE  hemf,
-       RECT    *prectDocument,
-       RECT    *prectBorder,
-       RECT    *prectClip)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
 
-/*
- * @unimplemented
- */
-BOOL
+INT
 STDCALL
-GdiEndPageEMF(
-       HANDLE  SpoolFileHandle,
-       DWORD   dwOptimization)
+NamedEscape(HDC hdc,
+            PWCHAR pDriver,
+            INT iEsc, 
+            INT cjIn,
+            LPSTR pjIn,
+            INT cjOut,
+            LPSTR pjOut)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    /* 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);
 }
 
-/*
- * @unimplemented
- */
-BOOL
-STDCALL
-GdiEndDocEMF(
-       HANDLE  SpoolFileHandle)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
 
-/*
- * @unimplemented
- */
 BOOL
 STDCALL
-GdiGetDevmodeForPage(
-       HANDLE          SpoolFileHandle,
-       DWORD           dwPageNumber,
-       PDEVMODEW       *pCurrDM,
-       PDEVMODEW       *pLastDM)
+PatBlt(HDC hdc, 
+       int nXLeft, 
+       int nYLeft, 
+       int nWidth, 
+       int nHeight, 
+       DWORD dwRop)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    /* FIXME some part need be done in user mode */
+    return NtGdiPatBlt( hdc,  nXLeft,  nYLeft,  nWidth,  nHeight,  dwRop);
 }
 
-/*
- * @unimplemented
- */
 BOOL
 STDCALL
-GdiResetDCEMF(
-       HANDLE          SpoolFileHandle,
-       PDEVMODEW       pCurrDM)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-HANDLE STDCALL
-BRUSHOBJ_hGetColorTransform(BRUSHOBJ *pbo)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-PVOID STDCALL
-BRUSHOBJ_pvAllocRbrush(IN BRUSHOBJ *BrushObj,
-                      IN ULONG ObjSize)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-PVOID STDCALL
-BRUSHOBJ_pvGetRbrush(IN BRUSHOBJ *BrushObj)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-ULONG STDCALL
-BRUSHOBJ_ulGetBrushColor(BRUSHOBJ *pbo)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-BOOL STDCALL
-CLIPOBJ_bEnum(IN CLIPOBJ *ClipObj,
-             IN ULONG ObjSize,
-             OUT ULONG *EnumRects)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-ULONG STDCALL
-CLIPOBJ_cEnumStart(IN CLIPOBJ *ClipObj,
-                  IN BOOL ShouldDoAll,
-                  IN ULONG ClipType,
-                  IN ULONG BuildOrder,
-                  IN ULONG MaxRects)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-PATHOBJ* STDCALL
-CLIPOBJ_ppoGetPath(CLIPOBJ *ClipObj)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-VOID
-STDCALL
-EngAcquireSemaphore ( IN HSEMAPHORE hsem )
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-}
-
-/*
- * @unimplemented
- */
-BOOL STDCALL 
-EngAlphaBlend(SURFOBJ *psoDest,SURFOBJ *psoSrc,CLIPOBJ *pco,XLATEOBJ *pxlo,RECTL *prclDest,RECTL *prclSrc,BLENDOBJ *pBlendObj)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-BOOL STDCALL
-EngAssociateSurface(IN HSURF Surface,
-                   IN HDEV Dev,
-                   IN ULONG Hooks)
+PolyPatBlt(IN HDC hdc,
+           IN DWORD rop4,
+           IN PPOLYPATBLT pPoly,
+           IN DWORD Count,
+           IN DWORD Mode)
 {
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
+    /* FIXME some part need be done in user mode */
+    return NtGdiPolyPatBlt(hdc, rop4, pPoly,Count,Mode);
 }
 
-/*
- * @unimplemented
- */
-BOOL STDCALL
-EngBitBlt(SURFOBJ *Dest,
-         SURFOBJ *Source,
-         SURFOBJ *Mask,
-         CLIPOBJ *ClipRegion,
-         XLATEOBJ *ColorTranslation,
-         RECTL *DestRect,
-         POINTL *SourcePoint,
-         POINTL *MaskRect,
-         BRUSHOBJ *Brush,
-         POINTL *BrushOrigin,
-         ROP4 rop4)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
 
-/*
- * @unimplemented
- */
-BOOL STDCALL
-EngCheckAbort(SURFOBJ *pso)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
 
-/*
- * @unimplemented
- */
-FD_GLYPHSET* STDCALL
-EngComputeGlyphSet(INT nCodePage,INT nFirstChar,INT cChars)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
 
-/*
- * @unimplemented
- */
-BOOL STDCALL
-EngCopyBits(SURFOBJ *Dest,
-           SURFOBJ *Source,
-           CLIPOBJ *Clip,
-           XLATEOBJ *ColorTranslation,
-           RECTL *DestRect,
-           POINTL *SourcePoint)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
 
-/*
- * @unimplemented
- */
-HBITMAP STDCALL
-EngCreateBitmap(IN SIZEL Size,
-               IN LONG Width,
-               IN ULONG Format,
-               IN ULONG Flags,
-               IN PVOID Bits)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
 
-/*
- * @unimplemented
- */
-CLIPOBJ* STDCALL
-EngCreateClip(VOID)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
 
-/*
- * @unimplemented
- */
-HBITMAP STDCALL
-EngCreateDeviceBitmap(IN DHSURF Surface,
-                     IN SIZEL Size,
-                     IN ULONG Format)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
 
-/*
- * @unimplemented
- */
-HSURF STDCALL
-EngCreateDeviceSurface(IN DHSURF Surface,
-                      IN SIZEL Size,
-                      IN ULONG FormatVersion)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
 
-/*
- * @unimplemented
- */
-HPALETTE STDCALL
-EngCreatePalette(IN ULONG Mode,
-                IN ULONG NumColors,
-                IN ULONG *Colors,
-                IN ULONG Red,
-                IN ULONG Green,
-                IN ULONG Blue)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-HSEMAPHORE
-STDCALL
-EngCreateSemaphore ( VOID )
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-VOID STDCALL
-EngDeleteClip(CLIPOBJ *ClipRegion)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-}
-
-/*
- * @unimplemented
- */
-BOOL STDCALL
-EngDeletePalette(IN HPALETTE Palette)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-VOID STDCALL
-EngDeletePath(PATHOBJ *ppo)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-}
-
-/*
- * @unimplemented
- */
-VOID
-STDCALL
-EngDeleteSemaphore ( IN HSEMAPHORE hsem )
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-}
-
-/*
- * @unimplemented
- */
-BOOL STDCALL
-EngDeleteSurface(IN HSURF Surface)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-BOOL STDCALL
-EngEraseSurface(SURFOBJ *Surface,
-               RECTL *Rect,
-               ULONG iColor)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-BOOL STDCALL
-EngFillPath(SURFOBJ *pso,PATHOBJ *ppo,CLIPOBJ *pco,BRUSHOBJ *pbo,POINTL *pptlBrushOrg,MIX mix,FLONG flOptions)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-PVOID STDCALL
-EngFindResource(HANDLE h,int iName,int iType,PULONG pulSize)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-VOID STDCALL 
-EngFreeModule(HANDLE h)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-}
-
-/*
- * @unimplemented
- */
-VOID STDCALL
-EngGetCurrentCodePage(OUT PUSHORT OemCodePage,
-                     OUT PUSHORT AnsiCodePage)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-}
-
-/*
- * @unimplemented
- */
-LPWSTR STDCALL
-EngGetDriverName(HDEV hdev)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-LPWSTR STDCALL
-EngGetPrinterDataFileName(HDEV hdev)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-BOOL STDCALL 
-EngGradientFill(SURFOBJ *psoDest,CLIPOBJ *pco,XLATEOBJ *pxlo,TRIVERTEX *pVertex,ULONG nVertex,PVOID pMesh,ULONG nMesh,RECTL *prclExtents,POINTL *pptlDitherOrg,ULONG ulMode)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-BOOL STDCALL
-EngLineTo(SURFOBJ *Surface,
-         CLIPOBJ *Clip,
-         BRUSHOBJ *Brush,
-         LONG x1,
-         LONG y1,
-         LONG x2,
-         LONG y2,
-         RECTL *RectBounds,
-         MIX mix)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-HANDLE STDCALL 
-EngLoadModule(LPWSTR pwsz)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-SURFOBJ * STDCALL
-EngLockSurface(IN HSURF Surface)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-BOOL STDCALL 
-EngMarkBandingSurface(HSURF hsurf)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-VOID STDCALL
-EngMultiByteToUnicodeN(OUT LPWSTR UnicodeString,
-                      IN ULONG MaxBytesInUnicodeString,
-                      OUT PULONG BytesInUnicodeString,
-                      IN PCHAR MultiByteString,
-                      IN ULONG BytesInMultiByteString)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-}
-
-/*
- * @unimplemented
- */
-INT STDCALL 
-EngMultiByteToWideChar(UINT CodePage,LPWSTR WideCharString,INT BytesInWideCharString,LPSTR MultiByteString,INT BytesInMultiByteString)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-BOOL STDCALL
-EngPaint(IN SURFOBJ *Surface,
-        IN CLIPOBJ *ClipRegion,
-        IN BRUSHOBJ *Brush,
-        IN POINTL *BrushOrigin,
-        IN MIX  Mix)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-BOOL STDCALL 
-EngPlgBlt(SURFOBJ *psoTrg,SURFOBJ *psoSrc,SURFOBJ *psoMsk,CLIPOBJ *pco,XLATEOBJ *pxlo,COLORADJUSTMENT *pca,POINTL *pptlBrushOrg,POINTFIX *pptfx,RECTL *prcl,POINTL *pptl,ULONG iMode)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-BOOL STDCALL
-EngQueryEMFInfo(HDEV hdev,EMFINFO *pEMFInfo)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-VOID STDCALL 
-EngQueryLocalTime(PENG_TIME_FIELDS etf)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-}
-
-/*
- * @unimplemented
- */
-VOID
-STDCALL
-EngReleaseSemaphore ( IN HSEMAPHORE hsem )
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-}
-
-/*
- * @unimplemented
- */
-BOOL STDCALL 
-EngStretchBlt(SURFOBJ *psoDest,SURFOBJ *psoSrc,SURFOBJ *psoMask,CLIPOBJ *pco,XLATEOBJ *pxlo,COLORADJUSTMENT *pca,POINTL *pptlHTOrg,RECTL *prclDest,RECTL *prclSrc,POINTL *pptlMask,ULONG iMode)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-BOOL STDCALL 
-EngStretchBltROP(SURFOBJ *psoDest,SURFOBJ *psoSrc,SURFOBJ *psoMask,CLIPOBJ *pco,XLATEOBJ *pxlo,COLORADJUSTMENT *pca,POINTL *pptlHTOrg,RECTL *prclDest,RECTL *prclSrc,POINTL *pptlMask,ULONG iMode,BRUSHOBJ *pbo,DWORD rop4)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-BOOL STDCALL 
-EngStrokeAndFillPath(SURFOBJ *pso,PATHOBJ *ppo,CLIPOBJ *pco,XFORMOBJ *pxo,BRUSHOBJ *pboStroke,LINEATTRS *plineattrs,BRUSHOBJ *pboFill,POINTL *pptlBrushOrg,MIX mixFill,FLONG flOptions)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-BOOL STDCALL
-EngStrokePath(SURFOBJ *pso,PATHOBJ *ppo,CLIPOBJ *pco,XFORMOBJ *pxo,BRUSHOBJ *pbo,POINTL *pptlBrushOrg,LINEATTRS *plineattrs,MIX mix)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-BOOL STDCALL 
-EngTextOut(SURFOBJ *pso,STROBJ *pstro,FONTOBJ *pfo,CLIPOBJ *pco,RECTL *prclExtra,RECTL *prclOpaque,BRUSHOBJ *pboFore,BRUSHOBJ *pboOpaque,POINTL *pptlOrg,MIX mix)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-BOOL STDCALL
-EngTransparentBlt(IN SURFOBJ *Dest,
-                 IN SURFOBJ *Source,
-                 IN CLIPOBJ *Clip,
-                 IN XLATEOBJ *ColorTranslation,
-                 IN PRECTL DestRect,
-                 IN PRECTL SourceRect,
-                 IN ULONG TransparentColor,
-                 IN ULONG Reserved)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-VOID STDCALL
-EngUnicodeToMultiByteN(OUT PCHAR MultiByteString,
-                      IN ULONG  MaxBytesInMultiByteString,
-                      OUT PULONG  BytesInMultiByteString,
-                      IN PWSTR  UnicodeString,
-                      IN ULONG  BytesInUnicodeString)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-}
-
-/*
- * @unimplemented
- */
-VOID STDCALL 
-EngUnlockSurface(SURFOBJ *pso)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-}
-
-/*
- * @unimplemented
- */
-INT STDCALL 
-EngWideCharToMultiByte(UINT CodePage,LPWSTR WideCharString,INT BytesInWideCharString,LPSTR MultiByteString,INT BytesInMultiByteString)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-ULONG
-STDCALL
-FONTOBJ_cGetAllGlyphHandles(IN FONTOBJ *FontObj,
-                            IN HGLYPH  *Glyphs)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-ULONG
-STDCALL
-FONTOBJ_cGetGlyphs(IN FONTOBJ *FontObj,
-                   IN ULONG    Mode,
-                   IN ULONG    NumGlyphs,
-                   IN HGLYPH  *GlyphHandles,
-                   IN PVOID   *OutGlyphs)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-PFD_GLYPHATTR STDCALL
-FONTOBJ_pQueryGlyphAttrs(FONTOBJ *pfo,ULONG iMode)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-FD_GLYPHSET *STDCALL
-FONTOBJ_pfdg(FONTOBJ *pfo)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-IFIMETRICS*
-STDCALL
-FONTOBJ_pifi(IN FONTOBJ  *FontObj)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-PVOID
-STDCALL
-FONTOBJ_pvTrueTypeFontFile(IN FONTOBJ  *FontObj,
-                           IN ULONG    *FileSize)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-XFORMOBJ*
-STDCALL
-FONTOBJ_pxoGetXform(IN FONTOBJ  *FontObj)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-VOID
-STDCALL
-FONTOBJ_vGetInfo(IN  FONTOBJ   *FontObj,
-                 IN  ULONG      InfoSize,
-                 OUT PFONTINFO  FontInfo)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-}
-
-/*
- * @unimplemented
- */
-BOOL STDCALL
-PATHOBJ_bEnum(PATHOBJ *ppo,PATHDATA *ppd)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-BOOL STDCALL 
-PATHOBJ_bEnumClipLines(PATHOBJ *ppo,ULONG cb,CLIPLINE *pcl)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-VOID STDCALL 
-PATHOBJ_vEnumStart(PATHOBJ *ppo)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-}
-
-/*
- * @unimplemented
- */
-VOID STDCALL
-PATHOBJ_vEnumStartClipLines(PATHOBJ *ppo,CLIPOBJ *pco,SURFOBJ *pso,LINEATTRS *pla)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-}
-
-/*
- * @unimplemented
- */
-VOID STDCALL
-PATHOBJ_vGetBounds(PATHOBJ *ppo,PRECTFX prectfx)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-}
-
-/*
- * @unimplemented
- */
-BOOL STDCALL
-STROBJ_bEnum(STROBJ *pstro,ULONG *pc,PGLYPHPOS *ppgpos)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-BOOL STDCALL
-STROBJ_bEnumPositionsOnly(STROBJ *pstro,ULONG *pc,PGLYPHPOS *ppgpos)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-BOOL STDCALL
-STROBJ_bGetAdvanceWidths(STROBJ *pso,ULONG iFirst,ULONG c,POINTQF *pptqD)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-DWORD STDCALL
-STROBJ_dwGetCodePage(STROBJ  *pstro)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-VOID STDCALL
-STROBJ_vEnumStart(STROBJ *pstro)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-}
-
-/*
- * @unimplemented
- */
-BOOL STDCALL
-XFORMOBJ_bApplyXform(XFORMOBJ *pxo,ULONG iMode,ULONG cPoints,PVOID pvIn,PVOID pvOut)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-ULONG STDCALL
-XFORMOBJ_iGetXform(XFORMOBJ *pxo,XFORML *pxform)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-ULONG STDCALL
-XLATEOBJ_cGetPalette(XLATEOBJ *XlateObj,
-                    ULONG PalOutType,
-                    ULONG cPal,
-                    ULONG *OutPal)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-HANDLE STDCALL
-XLATEOBJ_hGetColorTransform(XLATEOBJ *pxlo)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-ULONG STDCALL
-XLATEOBJ_iXlate(XLATEOBJ *XlateObj,
-               ULONG Color)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-ULONG * STDCALL
-XLATEOBJ_piVector(XLATEOBJ *XlateObj)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-BOOL 
-STDCALL
-GdiPlayEMF
-(
-       LPWSTR     pwszPrinterName,
-       LPDEVMODEW pDevmode,
-       LPWSTR     pwszDocName,
-       EMFPLAYPROC pfnEMFPlayFn,
-       HANDLE     hPageQuery
-)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-BOOL
-STDCALL
-GdiInitSpool(VOID)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-BOOL
-STDCALL
-GdiPlayPrivatePageEMF
-(
-       HANDLE  SpoolFileHandle,
-       DWORD   unknown,
-       RECT    *prectDocument
-)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-       return 0;
-}
-
-/*
- * @unimplemented
- */
-VOID STDCALL GdiInitializeLanguagePack(DWORD InitParam)
-{
-       UNIMPLEMENTED;
-       SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-}