update for HEAD-2003091401
[reactos.git] / subsys / win32k / stubs / stubs.c
index 8e381d7..5dda0bd 100644 (file)
  * Stubs for unimplemented WIN32K.SYS exports
  */
 
+#undef WIN32_LEAN_AND_MEAN
 #include <windows.h>
-#include <ddk/ntddk.h>
+#include <stdlib.h>
+#include <win32k/bitmaps.h>
+#include <win32k/debug.h>
+#include <debug.h>
+#include <ddk/winddi.h>
+#include "../eng/objects.h"
+#include <include/error.h>
 
 #define STUB(x) void x(void) { DbgPrint("WIN32K: Stub for %s\n", #x); }
 
+#ifndef UNIMPLEMENTED
+#define UNIMPLEMENTED DbgPrint("(%s:%i) WIN32K: %s UNIMPLEMENTED\n", __FILE__, __LINE__, __FUNCTION__ )
+#endif//UNIMPLEMENTED
+
+/*
+ * @unimplemented
+ */
+BOOL
+STDCALL
+EngMapFontFileFD (
+       IN  ULONG_PTR  iFile,
+       OUT PULONG    *ppjBuf,
+       OUT ULONG     *pcjBuf
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_0co7.htm
+  UNIMPLEMENTED;
+  return FALSE;
+}
+
+/*
+ * @unimplemented
+ */
+VOID
+STDCALL
+EngUnmapFontFileFD ( IN ULONG_PTR iFile )
+{
+  // http://www.osr.com/ddk/graphics/gdifncs_6wbr.htm
+  UNIMPLEMENTED;
+}
+
+/*
+ * @implemented
+ */
+BOOL
+STDCALL
+EngMapFontFile (
+       ULONG_PTR  iFile,
+       PULONG    *ppjBuf,
+       ULONG     *pcjBuf
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_3up3.htm
+  return EngMapFontFileFD ( iFile, ppjBuf, pcjBuf );
+}
+
+/*
+ * @implemented
+ */
+VOID
+STDCALL
+EngUnmapFontFile ( ULONG_PTR iFile )
+{
+  // www.osr.com/ddk/graphics/gdifncs_09wn.htm
+  return EngUnmapFontFileFD ( iFile );
+}
+
+/*
+ * @unimplemented
+ */
+BOOL
+STDCALL
+EngTextOut (
+       SURFOBJ  *pso,
+       STROBJ   *pstro,
+       FONTOBJ  *pfo,
+       CLIPOBJ  *pco,
+       RECTL    *prclExtra,
+       RECTL    *prclOpaque,
+       BRUSHOBJ *pboFore,
+       BRUSHOBJ *pboOpaque,
+       POINTL   *pptlOrg,
+       MIX       mix
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_4tgn.htm
+  UNIMPLEMENTED;
+  return FALSE;
+}
+
+/*
+ * @unimplemented
+ */
+ULONG
+STDCALL
+BRUSHOBJ_ulGetBrushColor ( IN BRUSHOBJ  *pbo )
+{
+  // www.osr.com/ddk/graphics/gdifncs_0ch3.htm
+  UNIMPLEMENTED;
+  return 0;
+}
+
+/*
+ * @unimplemented
+ */
+PATHOBJ*
+STDCALL
+CLIPOBJ_ppoGetPath ( IN CLIPOBJ *pco )
+{
+  // www.osr.com/ddk/graphics/gdifncs_6hbb.htm
+  UNIMPLEMENTED;
+  return 0;
+}
+
+/*
+ * @unimplemented
+ */
+BOOL
+STDCALL
+EngCheckAbort ( IN SURFOBJ *pso )
+{
+  // www.osr.com/ddk/graphics/gdifncs_3u7b.htm
+  UNIMPLEMENTED;
+  return FALSE;
+}
+
+/*
+ * @unimplemented
+ */
+FD_GLYPHSET*
+STDCALL
+EngComputeGlyphSet(
+       IN INT nCodePage,
+       IN INT nFirstChar,
+       IN INT cChars
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_9607.htm
+  UNIMPLEMENTED;
+  return NULL;
+}
+
+/*
+ * @unimplemented
+ */
+HDRVOBJ
+STDCALL
+EngCreateDriverObj(
+       PVOID        pvObj,
+       FREEOBJPROC  pFreeObjProc,
+       HDEV         hdev
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_8svb.htm
+  UNIMPLEMENTED;
+  return NULL;
+}
+
+/*
+ * @unimplemented
+ */
+PATHOBJ*
+STDCALL
+EngCreatePath ( VOID )
+{
+  // www.osr.com/ddk/graphics/gdifncs_4aav.htm
+  UNIMPLEMENTED;
+  return NULL;
+}
+
+/*
+ * @unimplemented
+ */
+WNDOBJ*
+STDCALL
+EngCreateWnd(
+       SURFOBJ          *pso,
+       HWND              hwnd,
+       WNDOBJCHANGEPROC  pfn,
+       FLONG             fl,
+       int               iPixelFormat
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_2ip3.htm
+  UNIMPLEMENTED;
+  return NULL;
+}
+
+/*
+ * @unimplemented
+ */
+BOOL
+STDCALL
+EngDeleteDriverObj(
+       IN HDRVOBJ  hdo,
+       IN BOOL  bCallBack,
+       IN BOOL  bLocked
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_0qlj.htm
+  UNIMPLEMENTED;
+  return FALSE;
+}
+
+/*
+ * @unimplemented
+ */
+VOID
+STDCALL
+EngDeletePath ( IN PATHOBJ *ppo )
+{
+  // www.osr.com/ddk/graphics/gdifncs_3fl3.htm
+  UNIMPLEMENTED;
+}
+
+/*
+ * @unimplemented
+ */
+VOID
+STDCALL
+EngDeleteWnd ( IN WNDOBJ *pwo )
+{
+  // www.osr.com/ddk/graphics/gdifncs_2z3b.htm
+  UNIMPLEMENTED;
+}
+
+/*
+ * @unimplemented
+ */
+BOOL
+STDCALL
+EngEnumForms (
+       IN  HANDLE   hPrinter,
+       IN  DWORD    Level,
+       OUT LPBYTE   pForm,
+       IN  DWORD    cbBuf,
+       OUT LPDWORD  pcbNeeded,
+       OUT LPDWORD  pcReturned
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_5e07.htm
+  UNIMPLEMENTED;
+  return FALSE;
+}
+
+/*
+ * @unimplemented
+ */
+BOOL
+STDCALL
+EngFillPath (
+       IN SURFOBJ   *pso,
+       IN PATHOBJ   *ppo,
+       IN CLIPOBJ   *pco,
+       IN BRUSHOBJ  *pbo,
+       IN POINTL    *pptlBrushOrg,
+       IN MIX        mix,
+       IN FLONG      flOptions
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_9pyf.htm
+  UNIMPLEMENTED;
+  return FALSE;
+}
+
+/*
+ * @unimplemented
+ */
+PVOID
+STDCALL
+EngFindImageProcAddress(
+       IN HANDLE  hModule,
+       IN LPSTR   lpProcName
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_0oiw.htm
+  UNIMPLEMENTED;
+  return NULL;
+}
+
+/*
+ * @unimplemented
+ */
+PVOID
+STDCALL
+EngFindResource(
+       IN  HANDLE  h,
+       IN  int     iName,
+       IN  int     iType,
+       OUT PULONG  pulSize
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_7rjb.htm
+  UNIMPLEMENTED;
+  return NULL;
+}
+
+/*
+ * @unimplemented
+ */
+VOID
+STDCALL
+EngFreeModule ( IN HANDLE h )
+{
+  // www.osr.com/ddk/graphics/gdifncs_9fzb.htm
+  UNIMPLEMENTED;
+}
+
+
+/*
+ * @unimplemented
+ */
+LPWSTR
+STDCALL
+EngGetDriverName ( IN HDEV hdev )
+{
+  // www.osr.com/ddk/graphics/gdifncs_2gx3.htm
+  UNIMPLEMENTED;
+  return NULL;
+}
+
+/*
+ * @unimplemented
+ */
+BOOL
+STDCALL
+EngGetFileChangeTime(
+       IN  HANDLE          h,
+       OUT LARGE_INTEGER  *pChangeTime
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_1i1z.htm
+  UNIMPLEMENTED;
+  return FALSE;
+}
+
+/*
+ * @unimplemented
+ */
+BOOL
+STDCALL
+EngGetFilePath(
+       IN  HANDLE h,
+       OUT WCHAR* pDest
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_5g2v.htm
+  UNIMPLEMENTED;
+  return FALSE;
+}
+
+/*
+ * @unimplemented
+ */
+BOOL
+STDCALL
+EngGetForm(
+       IN  HANDLE   hPrinter,
+       IN  LPWSTR   pFormName,
+       IN  DWORD    Level,
+       OUT LPBYTE   pForm,
+       IN  DWORD    cbBuf,
+       OUT LPDWORD  pcbNeeded
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_5vvr.htm
+  UNIMPLEMENTED;
+  return FALSE;
+}
+
+/*
+ * @implemented
+ */
+ULONG
+STDCALL
+EngGetLastError ( VOID )
+{
+  // www.osr.com/ddk/graphics/gdifncs_3non.htm
+  return GetLastNtError();
+}
+
+/*
+ * @implemented
+ */
+VOID
+STDCALL
+EngSetLastError ( IN ULONG iError )
+{
+  // www.osr.com/ddk/graphics/gdifncs_95m0.htm
+  SetLastNtError ( iError );
+}
+
+/*
+ * @unimplemented
+ */
+BOOL
+STDCALL
+EngGetPrinter(
+       IN  HANDLE   hPrinter,
+       IN  DWORD    dwLevel,
+       OUT LPBYTE   pPrinter,
+       IN  DWORD    cbBuf,
+       OUT LPDWORD  pcbNeeded
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_50h3.htm
+  UNIMPLEMENTED;
+  return FALSE;
+}
+
+/*
+ * @unimplemented
+ */
+DWORD
+STDCALL
+EngGetPrinterData(
+       IN  HANDLE   hPrinter,
+       IN  LPWSTR   pValueName,
+       OUT LPDWORD  pType,
+       OUT LPBYTE   pData,
+       IN  DWORD    nSize,
+       OUT LPDWORD  pcbNeeded
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_8t5z.htm
+  UNIMPLEMENTED;
+  return 0;
+}
+
+/*
+ * @unimplemented
+ */
+LPWSTR
+STDCALL
+EngGetPrinterDataFileName ( IN HDEV hdev )
+{
+  // www.osr.com/ddk/graphics/gdifncs_2giv.htm
+  UNIMPLEMENTED;
+  return NULL;
+}
+
+/*
+ * @unimplemented ( for NT4 only )
+ */
+HANDLE
+STDCALL
+EngGetProcessHandle ( VOID )
+{
+  // www.osr.com/ddk/graphics/gdifncs_3tif.htm
+  // In Windows 2000 and later, the EngGetProcessHandle function always returns NULL.
+  // FIXME - what does NT4 return?
+  return NULL;
+}
+
+/*
+ * @unimplemented
+ */
+BOOL
+STDCALL
+EngGetType1FontList(
+       IN  HDEV            hdev,
+       OUT TYPE1_FONT     *pType1Buffer,
+       IN  ULONG           cjType1Buffer,
+       OUT PULONG          pulLocalFonts,
+       OUT PULONG          pulRemoteFonts,
+       OUT LARGE_INTEGER  *pLastModified
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_6e5j.htm
+  UNIMPLEMENTED;
+  return FALSE;
+}
+
+/*
+ * @unimplemented
+ */
+HANDLE
+STDCALL
+EngLoadModuleForWrite(
+       IN LPWSTR  pwsz,
+       IN ULONG   cjSizeOfModule
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_98rr.htm
+  UNIMPLEMENTED;
+  return NULL;
+}
+
+/*
+ * @unimplemented
+ */
+DRIVEROBJ*
+STDCALL
+EngLockDriverObj ( IN HDRVOBJ hdo )
+{
+  // www.osr.com/ddk/graphics/gdifncs_41if.htm
+  UNIMPLEMENTED;
+  return NULL;
+}
+
+/*
+ * @unimplemented
+ */
+PVOID
+STDCALL
+EngMapModule(
+       IN  HANDLE  h,
+       OUT PULONG  pSize
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_9b1j.htm
+  UNIMPLEMENTED;
+  return NULL;
+}
+
+/*
+ * @unimplemented
+ */
+BOOL
+STDCALL
+EngMarkBandingSurface ( IN HSURF hsurf )
+{
+  // www.osr.com/ddk/graphics/gdifncs_2jon.htm
+  UNIMPLEMENTED;
+  return FALSE;
+}
+
+/*
+ * @unimplemented
+ */
+VOID
+STDCALL
+EngMovePointer(
+       IN SURFOBJ  *pso,
+       IN LONG      x,
+       IN LONG      y,
+       IN RECTL    *prcl
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_8wfb.htm
+  UNIMPLEMENTED;
+}
+
+
+INT
+STDCALL
+EngMultiByteToWideChar(
+       IN UINT  CodePage,
+       OUT LPWSTR  WideCharString,
+       IN INT  BytesInWideCharString,
+       IN LPSTR  MultiByteString,
+       IN INT  BytesInMultiByteString
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_32cn.htm
+  UNIMPLEMENTED;
+  return 0;
+}
+
+VOID
+STDCALL
+EngQueryLocalTime ( OUT PENG_TIME_FIELDS ptf )
+{
+  // www.osr.com/ddk/graphics/gdifncs_389z.htm
+  UNIMPLEMENTED;
+}
+
+ULONG
+STDCALL
+EngQueryPalette(
+       IN HPALETTE  hPal,
+       OUT ULONG  *piMode,
+       IN ULONG  cColors,
+       OUT ULONG  *pulColors
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_21t3.htm
+  UNIMPLEMENTED;
+  return 0;
+}
+
+BOOL
+STDCALL
+EngRestoreFloatingPointState ( IN VOID *pBuffer )
+{
+  // www.osr.com/ddk/graphics/gdifncs_9l0n.htm
+  UNIMPLEMENTED;
+  return FALSE;
+}
+
+ULONG
+STDCALL
+EngSaveFloatingPointState(
+       OUT VOID  *pBuffer,
+       IN ULONG  cjBufferSize
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_9tif.htm
+  UNIMPLEMENTED;
+  return 0;
+}
+
+ULONG
+STDCALL
+EngSetPointerShape(
+       IN SURFOBJ  *pso,
+       IN SURFOBJ  *psoMask,
+       IN SURFOBJ  *psoColor,
+       IN XLATEOBJ  *pxlo,
+       IN LONG  xHot,
+       IN LONG  yHot,
+       IN LONG  x,
+       IN LONG  y,
+       IN RECTL  *prcl,
+       IN FLONG  fl
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_1y5j.htm
+  UNIMPLEMENTED;
+  return 0;
+}
+
+BOOL
+STDCALL
+EngSetPointerTag(
+       IN HDEV  hdev,
+       IN SURFOBJ  *psoMask,
+       IN SURFOBJ  *psoColor,
+       IN XLATEOBJ  *pxlo,
+       IN FLONG  fl
+       )
+{
+  // This function is obsolete for Windows 2000 and later.
+  // This function is still supported, but always returns FALSE.
+  // www.osr.com/ddk/graphics/gdifncs_4yav.htm
+  return FALSE;
+}
+
+DWORD
+STDCALL
+EngSetPrinterData(
+       IN HANDLE  hPrinter,
+       IN LPWSTR  pType,
+       IN DWORD  dwType,
+       IN LPBYTE  lpbPrinterData,
+       IN DWORD  cjPrinterData
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_8drb.htm
+  UNIMPLEMENTED;
+  return 0;
+}
+
+BOOL
+STDCALL
+EngStretchBlt(
+       IN SURFOBJ  *psoDest,
+       IN SURFOBJ  *psoSrc,
+       IN SURFOBJ  *psoMask,
+       IN CLIPOBJ  *pco,
+       IN XLATEOBJ  *pxlo,
+       IN COLORADJUSTMENT  *pca,
+       IN POINTL  *pptlHTOrg,
+       IN RECTL  *prclDest,
+       IN RECTL  *prclSrc,
+       IN POINTL  *pptlMask,
+       IN ULONG  iMode
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_0bs7.htm
+  UNIMPLEMENTED;
+  return FALSE;
+}
+
+BOOL
+STDCALL
+EngStrokeAndFillPath(
+       IN SURFOBJ  *pso,
+       IN PATHOBJ  *ppo,
+       IN CLIPOBJ  *pco,
+       IN XFORMOBJ  *pxo,
+       IN BRUSHOBJ  *pboStroke,
+       IN LINEATTRS  *plineattrs,
+       IN BRUSHOBJ  *pboFill,
+       IN POINTL  *pptlBrushOrg,
+       IN MIX  mixFill,
+       IN FLONG  flOptions
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_2xwn.htm
+  UNIMPLEMENTED;
+  return FALSE;
+}
+
+BOOL
+STDCALL
+EngStrokePath(
+       IN SURFOBJ  *pso,
+       IN PATHOBJ  *ppo,
+       IN CLIPOBJ  *pco,
+       IN XFORMOBJ  *pxo,
+       IN BRUSHOBJ  *pbo,
+       IN POINTL  *pptlBrushOrg,
+       IN LINEATTRS  *plineattrs,
+       IN MIX  mix
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_4yaw.htm
+  UNIMPLEMENTED;
+  return FALSE;
+}
+
+VOID
+STDCALL
+EngUnloadImage ( IN HANDLE hModule )
+{
+  // www.osr.com/ddk/graphics/gdifncs_586f.htm
+  UNIMPLEMENTED;
+}
+
+BOOL
+STDCALL
+EngUnlockDriverObj ( IN HDRVOBJ hdo )
+{
+  // www.osr.com/ddk/graphics/gdifncs_0l5z.htm
+  UNIMPLEMENTED;
+  return FALSE;
+}
+
+INT
+STDCALL
+EngWideCharToMultiByte(
+       IN UINT  CodePage,
+       IN LPWSTR  WideCharString,
+       IN INT  BytesInWideCharString,
+       OUT LPSTR  MultiByteString,
+       IN INT  BytesInMultiByteString
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_35wn.htm
+  UNIMPLEMENTED;
+  return 0;
+}
+
+BOOL
+STDCALL
+EngWritePrinter (
+       IN HANDLE    hPrinter,
+       IN LPVOID    pBuf,
+       IN DWORD     cbBuf,
+       OUT LPDWORD  pcWritten
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_9v6v.htm
+  UNIMPLEMENTED;
+  return FALSE;
+}
+
+VOID
+STDCALL
+FLOATOBJ_Add (
+       IN OUT PFLOATOBJ  pf,
+       IN PFLOATOBJ      pf1
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_2i3r.htm
+  UNIMPLEMENTED;
+}
+
+VOID
+STDCALL
+FLOATOBJ_AddFloat(
+       IN OUT PFLOATOBJ  pf,
+       IN FLOATL  f
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_0ip3.htm
+  UNIMPLEMENTED;
+}
+
+VOID
+STDCALL
+FLOATOBJ_AddLong(
+       IN OUT PFLOATOBJ  pf,
+       IN LONG  l
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_12jr.htm
+  UNIMPLEMENTED;
+}
+
+VOID
+STDCALL
+FLOATOBJ_Div(
+       IN OUT PFLOATOBJ  pf,
+       IN PFLOATOBJ  pf1
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_3ndz.htm
+  UNIMPLEMENTED;
+}
+
+VOID
+STDCALL
+FLOATOBJ_DivFloat(
+       IN OUT PFLOATOBJ  pf,
+       IN FLOATL  f
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_0gfb.htm
+  UNIMPLEMENTED;
+}
+
+VOID
+STDCALL
+FLOATOBJ_DivLong(
+       IN OUT PFLOATOBJ  pf,
+       IN LONG  l
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_6jdz.htm
+  UNIMPLEMENTED;
+}
+
+BOOL
+STDCALL
+FLOATOBJ_Equal(
+       IN PFLOATOBJ  pf,
+       IN PFLOATOBJ  pf1
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_6ysn.htm
+  UNIMPLEMENTED;
+  return FALSE;
+}
+
+BOOL
+STDCALL
+FLOATOBJ_EqualLong(
+       IN PFLOATOBJ  pf,
+       IN LONG  l
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_1pgn.htm
+  UNIMPLEMENTED;
+  return FALSE;
+}
+
+LONG
+STDCALL
+FLOATOBJ_GetFloat ( IN PFLOATOBJ pf )
+{
+  // www.osr.com/ddk/graphics/gdifncs_4d5z.htm
+  UNIMPLEMENTED;
+  return 0;
+}
+
+LONG
+STDCALL
+FLOATOBJ_GetLong ( IN PFLOATOBJ pf )
+{
+  // www.osr.com/ddk/graphics/gdifncs_0tgn.htm
+  UNIMPLEMENTED;
+  return 0;
+}
+
+BOOL
+STDCALL
+FLOATOBJ_GreaterThan(
+       IN PFLOATOBJ  pf,
+       IN PFLOATOBJ  pf1
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_8n53.htm
+  UNIMPLEMENTED;
+  return FALSE;
+}
+
+BOOL
+STDCALL
+FLOATOBJ_GreaterThanLong(
+       IN PFLOATOBJ  pf,
+       IN LONG  l
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_6gx3.htm
+  UNIMPLEMENTED;
+  return FALSE;
+}
+
+BOOL
+STDCALL
+FLOATOBJ_LessThan(
+       IN PFLOATOBJ  pf,
+       IN PFLOATOBJ  pf1
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_1ynb.htm
+  UNIMPLEMENTED;
+  return FALSE;
+}
+
+BOOL
+STDCALL
+FLOATOBJ_LessThanLong(
+       IN PFLOATOBJ  pf,
+       IN LONG  l
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_9nzb.htm
+  UNIMPLEMENTED;
+  return FALSE;
+}
+
+VOID
+STDCALL
+FLOATOBJ_Mul(
+       IN OUT PFLOATOBJ  pf,
+       IN PFLOATOBJ  pf1
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_8ppj.htm
+  UNIMPLEMENTED;
+}
+
+VOID
+STDCALL
+FLOATOBJ_MulFloat(
+       IN OUT PFLOATOBJ  pf,
+       IN FLOATL  f
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_3puv.htm
+  UNIMPLEMENTED;
+}
+
+VOID
+STDCALL
+FLOATOBJ_MulLong(
+       IN OUT PFLOATOBJ  pf,
+       IN LONG  l
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_56lj.htm
+  UNIMPLEMENTED;
+}
+
+VOID
+STDCALL
+FLOATOBJ_Neg ( IN OUT PFLOATOBJ pf )
+{
+  // www.osr.com/ddk/graphics/gdifncs_14pz.htm
+  UNIMPLEMENTED;
+}
+
+VOID
+STDCALL
+FLOATOBJ_SetFloat(
+       OUT PFLOATOBJ  pf,
+       IN FLOATL  f
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_1prb.htm
+  UNIMPLEMENTED;
+}
+
+VOID
+STDCALL
+FLOATOBJ_SetLong(
+       OUT PFLOATOBJ  pf,
+       IN LONG  l
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_0gpz.htm
+  UNIMPLEMENTED;
+}
+
+VOID
+STDCALL
+FLOATOBJ_Sub(
+       IN OUT PFLOATOBJ  pf,
+       IN PFLOATOBJ  pf1
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_6lyf.htm
+  UNIMPLEMENTED;
+}
+
+VOID
+STDCALL
+FLOATOBJ_SubFloat(
+       IN OUT PFLOATOBJ  pf,
+       IN FLOATL  f
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_2zvr.htm
+  UNIMPLEMENTED;
+}
+
+VOID
+STDCALL
+FLOATOBJ_SubLong(
+       IN OUT PFLOATOBJ  pf,
+       IN LONG  l
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_852f.htm
+  UNIMPLEMENTED;
+}
+
+/*
+ * @unimplemented
+ */
+ULONG
+STDCALL
+FONTOBJ_cGetAllGlyphHandles (
+       IN PFONTOBJ  FontObj,
+       IN HGLYPH   *Glyphs
+       )
+{
+  UNIMPLEMENTED;
+  return 0;
+}
+
+/*
+ * @unimplemented
+ */
+ULONG
+STDCALL
+FONTOBJ_cGetGlyphs(
+       IN PFONTOBJ FontObj,
+       IN ULONG    Mode,
+       IN ULONG    NumGlyphs,
+       IN HGLYPH  *GlyphHandles,
+       IN PVOID   *OutGlyphs
+       )
+{
+  UNIMPLEMENTED;
+  return 0;
+}
+
+/*
+ * @unimplemented
+ */
+IFIMETRICS*
+STDCALL
+FONTOBJ_pifi ( IN PFONTOBJ FontObj )
+{
+  UNIMPLEMENTED;
+  return NULL;
+}
+
+/*
+ * @unimplemented
+ */
+PVOID
+STDCALL
+FONTOBJ_pvTrueTypeFontFile (
+       IN PFONTOBJ  FontObj,
+       IN ULONG    *FileSize)
+{
+  UNIMPLEMENTED;
+  return NULL;
+}
+
+/*
+ * @unimplemented
+ */
+XFORMOBJ*
+STDCALL
+FONTOBJ_pxoGetXform ( IN PFONTOBJ FontObj )
+{
+  UNIMPLEMENTED;
+  return NULL;
+}
+
+/*
+ * @unimplemented
+ */
+VOID
+STDCALL
+FONTOBJ_vGetInfo (
+       IN  PFONTOBJ   FontObj,
+       IN  ULONG      InfoSize,
+       OUT PFONTINFO  FontInfo)
+{
+  UNIMPLEMENTED;
+}
+
+LONG
+STDCALL
+HT_ComputeRGBGammaTable(
+       IN USHORT  GammaTableEntries,
+       IN USHORT  GammaTableType,
+       IN USHORT  RedGamma,
+       IN USHORT  GreenGamma,
+       IN USHORT  BlueGamma,
+       OUT LPBYTE  pGammaTable
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_9dpj.htm
+  UNIMPLEMENTED;
+  return 0;
+}
+
+LONG
+STDCALL
+HT_Get8BPPFormatPalette(
+       OUT LPPALETTEENTRY  pPaletteEntry,
+       IN USHORT  RedGamma,
+       IN USHORT  GreenGamma,
+       IN USHORT  BlueGamma
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_8kvb.htm
+  UNIMPLEMENTED;
+  return 0;
+}
+
+BOOL
+STDCALL
+PATHOBJ_bCloseFigure ( IN PATHOBJ *ppo )
+{
+  // www.osr.com/ddk/graphics/gdifncs_5mhz.htm
+  UNIMPLEMENTED;
+  return FALSE;
+}
+
+BOOL
+STDCALL
+PATHOBJ_bEnum (
+       IN  PATHOBJ   *ppo,
+       OUT PATHDATA  *ppd
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_98o7.htm
+  UNIMPLEMENTED;
+  return FALSE;
+}
+
+BOOL
+STDCALL
+PATHOBJ_bEnumClipLines(
+       IN PATHOBJ  *ppo,
+       IN ULONG  cb,
+       OUT CLIPLINE  *pcl
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_4147.htm
+  UNIMPLEMENTED;
+  return FALSE;
+}
+
+BOOL
+STDCALL
+PATHOBJ_bMoveTo(
+       IN PATHOBJ  *ppo,
+       IN POINTFIX  ptfx
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_70vb.htm
+  UNIMPLEMENTED;
+  return FALSE;
+}
+
+BOOL
+STDCALL
+PATHOBJ_bPolyBezierTo(
+       IN PATHOBJ  *ppo,
+       IN POINTFIX  *pptfx,
+       IN ULONG  cptfx
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_2c9z.htm
+  UNIMPLEMENTED;
+  return FALSE;
+}
+
+BOOL
+STDCALL
+PATHOBJ_bPolyLineTo(
+       IN PATHOBJ  *ppo,
+       IN POINTFIX  *pptfx,
+       IN ULONG  cptfx
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_0x47.htm
+  UNIMPLEMENTED;
+  return FALSE;
+}
+
+VOID
+STDCALL
+PATHOBJ_vEnumStart ( IN PATHOBJ *ppo )
+{
+  // www.osr.com/ddk/graphics/gdifncs_74br.htm
+  UNIMPLEMENTED;
+}
+
+VOID
+STDCALL
+PATHOBJ_vEnumStartClipLines(
+       IN PATHOBJ  *ppo,
+       IN CLIPOBJ  *pco,
+       IN SURFOBJ  *pso,
+       IN LINEATTRS  *pla
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_5grr.htm
+  UNIMPLEMENTED;
+}
+
+VOID
+STDCALL
+PATHOBJ_vGetBounds(
+       IN PATHOBJ  *ppo,
+       OUT PRECTFX  prectfx
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_8qp3.htm
+  UNIMPLEMENTED;
+}
+
+BOOL
+STDCALL
+STROBJ_bEnum(
+       IN STROBJ  *pstro,
+       OUT ULONG  *pc,
+       OUT PGLYPHPOS  *ppgpos
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_65uv.htm
+  UNIMPLEMENTED;
+  return FALSE;
+}
+
+DWORD
+STDCALL
+STROBJ_dwGetCodePage ( IN STROBJ *pstro )
+{
+  // www.osr.com/ddk/graphics/gdifncs_9jmv.htm
+  UNIMPLEMENTED;
+  return 0;
+}
+
+VOID
+STDCALL
+STROBJ_vEnumStart ( IN STROBJ *pstro )
+{
+  // www.osr.com/ddk/graphics/gdifncs_32uf.htm
+  UNIMPLEMENTED;
+}
+
+BOOL
+STDCALL
+WNDOBJ_bEnum(
+       IN WNDOBJ  *pwo,
+       IN ULONG  cj,
+       OUT ULONG  *pul
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_3jqf.htm
+  UNIMPLEMENTED;
+  return FALSE;
+}
+
+ULONG
+STDCALL
+WNDOBJ_cEnumStart(
+       IN WNDOBJ  *pwo,
+       IN ULONG  iType,
+       IN ULONG  iDirection,
+       IN ULONG  cLimit
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_18o7.htm
+  UNIMPLEMENTED;
+  return 0;
+}
+
+VOID
+STDCALL
+WNDOBJ_vSetConsumer(
+       IN WNDOBJ  *pwo,
+       IN PVOID  pvConsumer
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_484n.htm
+  UNIMPLEMENTED;
+}
+
+BOOL
+STDCALL
+XFORMOBJ_bApplyXform(
+       IN XFORMOBJ  *pxo,
+       IN ULONG  iMode,
+       IN ULONG  cPoints,
+       IN PVOID  pvIn,
+       OUT PVOID  pvOut
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_027b.htm
+  UNIMPLEMENTED;
+  return FALSE;
+}
+
+ULONG
+STDCALL
+XFORMOBJ_iGetFloatObjXform(
+       IN XFORMOBJ  *pxo,
+       OUT FLOATOBJ_XFORM  *pxfo
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_5ig7.htm
+  UNIMPLEMENTED;
+  return 0;
+}
+
+ULONG
+STDCALL
+XFORMOBJ_iGetXform(
+       IN XFORMOBJ  *pxo,
+       OUT XFORML  *pxform
+       )
+{
+  // www.osr.com/ddk/graphics/gdifncs_0s2v.htm
+  UNIMPLEMENTED;
+  return 0;
+}
+
+// below here aren't in DDK!!!
 
-STUB(BRUSHOBJ_ulGetBrushColor)
-STUB(CLIPOBJ_ppoGetPath)
-STUB(EngAcquireSemaphore)
-STUB(EngCheckAbort)
-STUB(EngComputeGlyphSet)
-STUB(EngCreateDriverObj)
-STUB(EngCreateEvent)
-STUB(EngCreatePath)
-STUB(EngCreateSemaphore)
-STUB(EngCreateWnd)
-STUB(EngDeleteDriverObj)
-STUB(EngDeleteEvent)
-STUB(EngDeletePath)
-STUB(EngDeleteSemaphore)
-STUB(EngDeleteWnd)
-STUB(EngEnumForms)
-STUB(EngFillPath)
-STUB(EngFindImageProcAddress)
-STUB(EngFindResource)
-STUB(EngFreeModule)
-STUB(EngGetCurrentCodePage)
-STUB(EngGetDriverName)
-STUB(EngGetFileChangeTime)
-STUB(EngGetFilePath)
-STUB(EngGetForm)
-STUB(EngGetLastError)
-STUB(EngGetPrinter)
-STUB(EngGetPrinterData)
-STUB(EngGetPrinterDataFileName)
-STUB(EngGetProcessHandle)
-STUB(EngGetType1FontList)
-STUB(EngLoadModuleForWrite)
-STUB(EngLockDriverObj)
-STUB(EngMapEvent)
-STUB(EngMapFontFile)
-STUB(EngMapModule)
-STUB(EngMarkBandingSurface)
-STUB(EngMovePointer)
-STUB(EngMultiByteToUnicodeN)
-STUB(EngMultiByteToWideChar)
-STUB(EngProbeForRead)
-STUB(EngProbeForReadAndWrite)
-STUB(EngQueryLocalTime)
-STUB(EngQueryPalette)
-STUB(EngQueryPerformanceCounter)
-STUB(EngQueryPerformanceFrequency)
-STUB(EngReleaseSemaphore)
-STUB(EngRestoreFloatingPointState)
-STUB(EngSaveFloatingPointState)
-STUB(EngSecureMem)
-STUB(EngSetEvent)
-STUB(EngSetLastError)
-STUB(EngSetPointerShape)
-STUB(EngSetPointerTag)
-STUB(EngSetPrinterData)
-STUB(EngSort)
-STUB(EngStretchBlt)
-STUB(EngStrokeAndFillPath)
-STUB(EngStrokePath)
-STUB(EngTextOut)
-STUB(EngUnicodeToMultiByteN)
-STUB(EngUnloadImage)
-STUB(EngUnlockDriverObj)
-STUB(EngUnmapEvent)
-STUB(EngUnmapFontFile)
-STUB(EngUnsecureMem)
-STUB(EngWaitForSingleObject)
-STUB(EngWideCharToMultiByte)
-STUB(EngWritePrinter)
-STUB(FLOATOBJ_Add)
-STUB(FLOATOBJ_AddFloat)
 STUB(FLOATOBJ_AddFloatObj)
-STUB(FLOATOBJ_AddLong)
-STUB(FLOATOBJ_Div)
-STUB(FLOATOBJ_DivFloat)
 STUB(FLOATOBJ_DivFloatObj)
-STUB(FLOATOBJ_DivLong)
-STUB(FLOATOBJ_Equal)
-STUB(FLOATOBJ_EqualLong)
-STUB(FLOATOBJ_GetFloat)
-STUB(FLOATOBJ_GetLong)
-STUB(FLOATOBJ_GreaterThan)
-STUB(FLOATOBJ_GreaterThanLong)
-STUB(FLOATOBJ_LessThan)
-STUB(FLOATOBJ_LessThanLong)
-STUB(FLOATOBJ_Mul)
-STUB(FLOATOBJ_MulFloat)
 STUB(FLOATOBJ_MulFloatObj)
-STUB(FLOATOBJ_MulLong)
-STUB(FLOATOBJ_Neg)
-STUB(FLOATOBJ_SetFloat)
-STUB(FLOATOBJ_SetLong)
-STUB(FLOATOBJ_Sub)
-STUB(FLOATOBJ_SubFloat)
 STUB(FLOATOBJ_SubFloatObj)
-STUB(FLOATOBJ_SubLong)
-STUB(FONTOBJ_cGetAllGlyphHandles)
-STUB(FONTOBJ_cGetGlyphs)
-STUB(FONTOBJ_pifi)
-STUB(FONTOBJ_pvTrueTypeFontFile)
-STUB(FONTOBJ_pxoGetXform)
-STUB(FONTOBJ_vGetInfo)
-STUB(HT_ComputeRGBGammaTable)
-STUB(HT_Get8BPPFormatPalette)
-STUB(PATHOBJ_bCloseFigure)
-STUB(PATHOBJ_bEnum)
-STUB(PATHOBJ_bEnumClipLines)
-STUB(PATHOBJ_bMoveTo)
-STUB(PATHOBJ_bPolyBezierTo)
-STUB(PATHOBJ_bPolyLineTo)
-STUB(PATHOBJ_vEnumStart)
-STUB(PATHOBJ_vEnumStartClipLines)
-STUB(PATHOBJ_vGetBounds)
-STUB(STROBJ_bEnum)
-STUB(STROBJ_dwGetCodePage)
-STUB(STROBJ_vEnumStart)
-STUB(WNDOBJ_bEnum)
-STUB(WNDOBJ_cEnumStart)
-STUB(WNDOBJ_vSetConsumer)
-STUB(XFORMOBJ_bApplyXform)
-STUB(XFORMOBJ_iGetFloatObjXform)
-STUB(XFORMOBJ_iGetXform)
-