update for HEAD-2003091401
[reactos.git] / include / ddk / winddi.h
index 9d18363..c3dde72 100644 (file)
@@ -16,6 +16,7 @@
 #else
 #include <windows.h>
 #endif
+#include <ddk/ddrawi.h>
 
 #ifndef IN
 #define IN
 typedef DWORD PTRDIFF;
 #endif
 
-#define GDI_DRIVER_VERSION 0x4000   // NT 4 compatibility
-
-/* FIXME: find definitions for these structs  */
-typedef PVOID  PCOLORADJUSTMENT;
-typedef PVOID  PDD_CALLBACKS;
-typedef PVOID  PDD_HALINFO;
-typedef PVOID  PDD_PALETTECALLBACKS;
-typedef PVOID  PDD_SURFACECALLBACKS;
-typedef PVOID  PFONTINFO;
-typedef PVOID  PGAMMA_TABLES;
-typedef PVOID  PGLYPHDATA;
-typedef PVOID  PLINEATTRS;
-typedef DWORD  MIX;
-typedef DWORD  ROP4;
-typedef PVOID  PSTROBJ;
-typedef PVOID  PTTPOLYGONHEADER;
-typedef PVOID  PVIDEOMEMORY;
+#define DDI_DRIVER_VERSION_NT4 0x20000
+#define DDI_DRIVER_VERSION_SP3 0x20003
+#define DDI_DRIVER_VERSION_NT5 0x30000
+#define DDI_DRIVER_VERSION_NT5_01 0x30100
 
+#define GDI_DRIVER_VERSION 0x4000   /* NT 4 compatibility */
+
+typedef DDHAL_DDCALLBACKS *PDD_CALLBACKS;
+typedef DDHALINFO *PDD_HALINFO;
+typedef DDHAL_DDPALETTECALLBACKS *PDD_PALETTECALLBACKS;
+typedef DDHAL_DDSURFACECALLBACKS *PDD_SURFACECALLBACKS;
+typedef struct _VIDEOMEMORY
+{
+    DWORD               dwFlags;
+    FLATPTR             fpStart;
+    union
+    {
+        FLATPTR         fpEnd;
+        DWORD           dwWidth;
+    };
+    DDSCAPS             ddsCaps;
+    DDSCAPS             ddsCapsAlt;
+    union
+    {
+        struct _VMEMHEAP *lpHeap;
+        DWORD           dwHeight;
+    };
+} VIDEOMEMORY, *PVIDEOMEMORY;
+
+typedef struct _FONTINFO
+{
+    ULONG   cjThis;
+    FLONG   flCaps;
+    ULONG   cGlyphsSupported;
+    ULONG   cjMaxGlyph1;
+    ULONG   cjMaxGlyph4;
+    ULONG   cjMaxGlyph8;
+    ULONG   cjMaxGlyph32;
+} FONTINFO, *PFONTINFO;
+
+typedef BYTE GAMMA_TABLES[2][256];
+typedef GAMMA_TABLES *PGAMMA_TABLES;
+typedef COLORADJUSTMENT *PCOLORADJUSTMENT;
+
+typedef ULONG  MIX;
+typedef ULONG  ROP4;
 #define  DDI_DRIVER_VERSION  0x00010000
 
-/* FIXME: how big should this constant be?  */
 #define  HS_DDI_MAX  6
 
 /* XLate types */
@@ -69,7 +97,9 @@ enum _BMF_TYPES
   BMF_24BPP,
   BMF_32BPP,
   BMF_4RLE,
-  BMF_8RLE
+  BMF_8RLE,
+  BMF_JPEG,
+  BMF_PNG
 };
 
 #define  BMF_TOPDOWN     0x00000001
@@ -77,6 +107,10 @@ enum _BMF_TYPES
 #define  BMF_DONTCACHE   0x00000004
 #define  BMF_USERMEM     0x00000008
 #define  BMF_KMSECTION   0x00000010
+#define  BMF_NOTSYSMEM  0x0020
+#define  BMF_WINDOW_BLT 0x0040
+#define  BMF_UMPDMEM    0x0080
+#define  BMF_RESERVED   0xFF00
 
 #define DC_TRIVIAL      0
 #define DC_RECT         1
@@ -190,6 +224,13 @@ enum _FP_MODES
   FP_WINDINGMODE
 };
 
+typedef struct _FD_GLYPHATTR {
+    ULONG    cjThis;
+    ULONG    cGlyphs;
+    ULONG    iMode;
+    BYTE     aGlyphAttr[1];
+} FD_GLYPHATTR, *PFD_GLYPHATTR;
+
 enum _GLYPH_MODE
 {
   FO_HGLYPHS,
@@ -197,7 +238,7 @@ enum _GLYPH_MODE
   FO_PATHOBJ
 };
 
-// Allowed values for GDIINFO.ulPrimaryOrder.
+/* Allowed values for GDIINFO.ulPrimaryOrder. */
 
 #define PRIMARY_ORDER_ABC       0
 #define PRIMARY_ORDER_ACB       1
@@ -206,7 +247,7 @@ enum _GLYPH_MODE
 #define PRIMARY_ORDER_CBA       4
 #define PRIMARY_ORDER_CAB       5
 
-// Allowed values for GDIINFO.ulHTPatternSize.
+/* Allowed values for GDIINFO.ulHTPatternSize. */
 
 #define HT_PATSIZE_2x2          0
 #define HT_PATSIZE_2x2_M        1
@@ -227,7 +268,7 @@ enum _GLYPH_MODE
 #define HT_PATSIZE_MAX_INDEX    HT_PATSIZE_16x16_M
 #define HT_PATSIZE_DEFAULT      HT_PATSIZE_4x4_M
 
-// Allowed values for GDIINFO.ulHTOutputFormat.
+/* Allowed values for GDIINFO.ulHTOutputFormat. */
 
 #define HT_FORMAT_1BPP          0
 #define HT_FORMAT_4BPP          2
@@ -237,7 +278,7 @@ enum _GLYPH_MODE
 #define HT_FORMAT_24BPP         6
 #define HT_FORMAT_32BPP         7
 
-// Allowed values for GDIINFO.flHTFlags.
+/* Allowed values for GDIINFO.flHTFlags. */
 
 #define HT_FLAG_SQUARE_DEVICE_PEL    0x00000001
 #define HT_FLAG_HAS_BLACK_DYE        0x00000002
@@ -292,6 +333,7 @@ enum _DRV_HOOK_FUNCS
   INDEX_DrvDisableSurface,
   INDEX_DrvAssertMode,
   INDEX_DrvResetPDEV = 7,
+  INDEX_DrvDisableDriver,
   INDEX_DrvCreateDeviceBitmap = 10,
   INDEX_DrvDeleteDeviceBitmap,
   INDEX_DrvRealizeBrush,
@@ -331,7 +373,8 @@ enum _DRV_HOOK_FUNCS
   INDEX_DrvQueryTrueTypeOutline,
   INDEX_DrvGetTrueTypeFile,
   INDEX_DrvQueryFontFile,
-  INDEX_DrvQueryAdvanceWidths = 53,
+  INDEX_DrvMovePanning,
+  INDEX_DrvQueryAdvanceWidths,
   INDEX_DrvSetPixelFormat,
   INDEX_DrvDescribePixelFormat,
   INDEX_DrvSwapBuffers,
@@ -341,7 +384,35 @@ enum _DRV_HOOK_FUNCS
   INDEX_DrvEnableDirectDraw,
   INDEX_DrvDisableDirectDraw,
   INDEX_DrvQuerySpoolType,
-  INDEX_DrvTransparentBlt = 74,
+  INDEX_DrvIcmCreateColorTransform,
+  INDEX_DrvIcmDeleteColorTransform,
+  INDEX_DrvIcmCheckBitmapBits,
+  INDEX_DrvIcmSetDeviceGammaRamp,
+  INDEX_DrvGradientFill,
+  INDEX_DrvStretchBltROP,
+  INDEX_DrvPlgBlt,
+  INDEX_DrvAlphaBlend,
+  INDEX_DrvSynthesizeFont,
+  INDEX_DrvGetSynthesizedFontFiles,
+  INDEX_DrvTransparentBlt,
+  INDEX_DrvQueryPerBandInfo,
+  INDEX_DrvQueryDeviceSupport,
+  INDEX_DrvReserved1,
+  INDEX_DrvReserved2,
+  INDEX_DrvReserved3,
+  INDEX_DrvReserved4,
+  INDEX_DrvReserved5,
+  INDEX_DrvReserved6,
+  INDEX_DrvReserved7,
+  INDEX_DrvReserved8,
+  INDEX_DrvQueryGlyphAttrs,
+  INDEX_DrvNotify,
+  INDEX_DrvSynchronizeSurface,
+  INDEX_DrvResetDevice,
+  INDEX_DrvReserved9,
+  INDEX_DrvReserved10,
+  INDEX_DrvReserved11,
+  INDEX_DrvDeriveSurface = 85,
   INDEX_LAST
 };
 
@@ -432,8 +503,7 @@ typedef struct _DRVENABLEDATA
   DRVFN  *pdrvfn;
 } DRVENABLEDATA, *PDRVENABLEDATA;
 
-/* FIXME: replace this with correct def for LDECI4  */
-typedef DWORD  LDECI4;
+typedef LONG  LDECI4;
 
 typedef struct _CIECHROMA
 {
@@ -518,7 +588,7 @@ typedef struct _BRUSHOBJ
 {
   ULONG  iSolidColor;
   PVOID  pvRbrush;
-
+  FLONG  flColorType;
   /*  remainder of fields are for GDI internal use  */
   LOGBRUSH  logbrush;
 } BRUSHOBJ, *PBRUSHOBJ;
@@ -539,6 +609,19 @@ typedef struct _ENUMRECTS
   RECTL  arcl[1];
 } ENUMRECTS, *PENUMRECTS;
 
+typedef struct _BLENDOBJ
+{
+    BLENDFUNCTION BlendFunction;
+}BLENDOBJ,*PBLENDOBJ;
+
+typedef struct
+{
+   DWORD nSize;
+   HDC   hdc;
+   PBYTE pvEMF;
+   PBYTE pvCurrentRecord;
+} EMFINFO, *PEMFINFO;
+
 typedef struct _FONTOBJ
 {
   ULONG  iUniq;
@@ -616,7 +699,7 @@ typedef struct _IFIMETRICS
   PANOSE panose;
 } IFIMETRICS, *PIFIMETRICS;
 
-#define NB_RESERVED_COLORS              20 // number of fixed colors in system palette
+#define NB_RESERVED_COLORS              20 /* number of fixed colors in system palette */
 
 typedef struct _XLATEOBJ
 {
@@ -630,9 +713,10 @@ typedef struct _XLATEOBJ
 
 typedef struct _PALOBJ
 {
+  ULONG   ulReserved;
   PXLATEOBJ logicalToSystem;
   int *mapping;
-  PLOGPALETTE logpalette; // _MUST_ be the last field
+  PLOGPALETTE logpalette; /* _MUST_ be the last field */
 } PALOBJ, *PPALOBJ;
 
 typedef struct _PATHOBJ
@@ -669,9 +753,178 @@ typedef VOID (CALLBACK * WNDOBJCHANGEPROC)(PWNDOBJ WndObj, ULONG Flags);
 
 typedef struct _XFORMOBJ
 {
-  /* FIXME: what does this beast look like?  */
+    ULONG ulReserved;
 } XFORMOBJ, *PXFORMOBJ;
 
+typedef struct _GLYPHBITS
+{
+  POINTL ptlOrigin;
+  SIZEL  sizlBitmap;
+  BYTE   aj[1];
+} GLYPHBITS;
+
+typedef union _GLYPHDEF
+{
+  GLYPHBITS  *pgb;
+  PATHOBJ    *ppo;
+} GLYPHDEF;
+
+typedef struct _POINTQF
+{
+    LARGE_INTEGER x;
+    LARGE_INTEGER y;
+} POINTQF, *PPOINTQF;
+
+typedef struct _GLYPHDATA {
+        GLYPHDEF gdf;
+        HGLYPH   hg;
+        FIX      fxD;
+        FIX      fxA;
+        FIX      fxAB;
+        FIX      fxInkTop;
+        FIX      fxInkBottom;
+        RECTL    rclInk;
+        POINTQF  ptqD;
+} GLYPHDATA, *PGLYPHDATA;
+
+typedef struct _GLYPHPOS
+{
+  HGLYPH     hg;
+  GLYPHDEF  *pgdf;
+  POINTL    *ptl;
+} GLYPHPOS, *PGLYPHPOS;
+
+typedef struct _STROBJ
+{
+  ULONG      cGlyphs;
+  FLONG      flAccel;
+  ULONG      ulCharInc;
+  RECTL      rclBkGround;
+  GLYPHPOS  *pgp;
+  LPWSTR     pwszOrg;
+} STROBJ, *PSTROBJ;
+
+typedef struct _WCRUN
+{
+  WCHAR   wcLow;
+  USHORT  cGlyphs;
+  HGLYPH *phg;
+} WCRUN, *PWCRUN;
+
+typedef struct _FD_GLYPHSET
+{
+  ULONG  cjThis;
+  FLONG  flAccel;
+  ULONG  cGlyphsSupported;
+  ULONG  cRuns;
+  WCRUN  awcrun[1];
+} FD_GLYPHSET, *PFD_GLYPHSET;
+
+struct _DRIVEROBJ;
+
+typedef BOOL (CALLBACK * FREEOBJPROC) (struct _DRIVEROBJ* pDriverObj);
+
+typedef struct _DRIVEROBJ
+{
+  PVOID  pvObj;
+  FREEOBJPROC  pFreeProc;
+  HDEV  hdev;
+  DHPDEV  dhpdev;
+} DRIVEROBJ;
+
+typedef struct _TYPE1_FONT
+{
+  HANDLE  hPFM;
+  HANDLE  hPFB;
+  ULONG  ulIdentifier;
+} TYPE1_FONT;
+
+typedef struct _ENG_TIME_FIELDS
+{
+  USHORT  usYear;
+  USHORT  usMonth;
+  USHORT  usDay;
+  USHORT  usHour;
+  USHORT  usMinute;
+  USHORT  usSecond;
+  USHORT  usMilliseconds;
+  USHORT  usWeekday;
+} ENG_TIME_FIELDS, *PENG_TIME_FIELDS;
+
+typedef struct _LINEATTRS
+{
+  FLONG  fl;
+  ULONG  iJoin;
+  ULONG  iEndCap;
+  FLOAT_LONG  elWidth;
+  FLOATL  eMiterLimit;
+  ULONG  cstyle;
+  PFLOAT_LONG  pstyle;
+  FLOAT_LONG  elStyleState;
+} LINEATTRS, *PLINEATTRS;
+
+typedef struct _FLOATOBJ
+{
+  ULONG ul1,
+       ul2;
+} FLOATOBJ, *PFLOATOBJ;
+
+typedef struct _POINTFIX
+{
+  FIX x,
+      y;
+} POINTFIX;
+
+typedef struct _PATHDATA
+{
+  FLONG      flags;
+  ULONG      count;
+  POINTFIX  *pptfx;
+} PATHDATA, *PPATHDATA;
+
+typedef struct _RUN
+{
+  LONG  iStart;
+  LONG  iStop;
+} RUN, *PRUN;
+
+typedef struct _CLIPLINE
+{
+  POINTFIX  ptfxA;
+  POINTFIX  ptfxB;
+  LONG      lStyleState;
+  ULONG     c;
+  RUN       arun[1];
+} CLIPLINE, *PCLIPLINE;
+
+typedef struct _RECTFX
+{
+  FIX xLeft,
+      yTop,
+      xRight,
+      yBottom;
+} RECTFX, *PRECTFX;
+
+typedef struct
+{
+  FLOATOBJ  eM11,
+            eM12,
+            eM21,
+            eM22,
+            eDx,
+            eDy;
+} FLOATOBJ_XFORM, *PFLOATOBJ_XFORM, FAR *LPFLOATOBJ_XFORM;
+
+typedef struct _XFORML
+{
+  FLOATL  eM11,
+          eM12,
+          eM21,
+          eM22,
+          eDx,
+          eDy;
+} XFORML, *PXFORML;
+
 /*
  * Functions Prefixed with Drv are calls made from GDI to DDI, and
  * everything else are calls made from DDI to GDI.  DDI is
@@ -682,6 +935,7 @@ typedef struct _XFORMOBJ
 BOOL STDCALL
 DrvAssertMode(IN DHPDEV PDev,
              IN BOOL ShouldEnable);
+
 BOOL STDCALL
 DrvBitBlt(IN PSURFOBJ DestSurface,
          IN PSURFOBJ SrcSurface,
@@ -751,10 +1005,10 @@ DrvEnablePDEV(IN DEVMODEW *DM,
              IN LPWSTR LogAddress,
              IN ULONG PatternCount,
              OUT HSURF *SurfPatterns,
-             IN ULONG CapsSize,
-             OUT ULONG *DevCaps,
+             IN ULONG GDIInfoSize,
+             OUT GDIINFO *GDIInfo,
              IN ULONG DevInfoSize,
-             OUT DEVINFO *DI,
+             OUT DEVINFO *DevInfo,
              IN LPWSTR DevDataFile,
              IN LPWSTR DeviceName,
              IN HANDLE Driver);
@@ -1010,12 +1264,8 @@ CLIPOBJ_cEnumStart(IN PCLIPOBJ ClipObj,
 PPATHOBJ STDCALL
 CLIPOBJ_ppoGetPath(PCLIPOBJ ClipObj);
 
-/*
-EngAcquireSemaphore
-*/
-
-/* FIXME: find correct defines for following symbols  */
 #define  FL_ZERO_MEMORY  1
+#define  FL_NONPAGED_MEMORY 2
 
 PVOID STDCALL
 EngAllocMem(ULONG Flags,
@@ -1045,7 +1295,6 @@ EngBitBlt(SURFOBJ *Dest,
          ROP4 rop4);
 
 /*
-EngCheckAbort
 EngComputeGlyphSet
 */
 
@@ -1090,6 +1339,30 @@ EngCreatePalette(IN ULONG Mode,
                 IN ULONG Green,
                 IN ULONG Blue);
 
+HSEMAPHORE
+STDCALL
+EngCreateSemaphore ( VOID );
+
+VOID
+STDCALL
+EngAcquireSemaphore ( IN HSEMAPHORE hsem );
+
+VOID
+STDCALL
+EngReleaseSemaphore ( IN HSEMAPHORE hsem );
+
+VOID
+STDCALL
+EngDeleteSemaphore ( IN HSEMAPHORE hsem );
+
+BOOL
+STDCALL
+EngIsSemaphoreOwned ( IN HSEMAPHORE hsem );
+
+BOOL
+STDCALL
+EngIsSemaphoreOwnedByCurrentThread ( IN HSEMAPHORE hsem );
+
 /*
 EngCreatePath
 EngCreateSemaphore
@@ -1115,11 +1388,6 @@ EngDeleteEvent
 BOOL STDCALL
 EngDeletePalette(IN HPALETTE Palette);
 
-/*
-EngDeletePath
-EngDeleteSemaphore
-*/
-
 BOOL STDCALL
 EngDeleteSurface(IN HSURF Surface);
 
@@ -1146,7 +1414,6 @@ EngEraseSurface(SURFOBJ *Surface,
                ULONG iColor);
 
 /*
-EngFillPath
 EngFindImageProcAddress
 EngFindResource
 */
@@ -1161,16 +1428,17 @@ EngFreeModule
 VOID STDCALL
 EngFreeUserMem(PVOID pv);
 
+VOID STDCALL
+EngGetCurrentCodePage(OUT PUSHORT OemCodePage,
+                     OUT PUSHORT AnsiCodePage);
+
 /*
-EngGetCurrentCodePage
-EngGetDriverName
 EngGetFileChangeTime
 EngGetFilePath
 EngGetForm
 EngGetLastError
 EngGetPrinter
 EngGetPrinterData
-EngGetPrinterDataFileName
 EngGetProcessHandle
 EngGetType1FontList
 */
@@ -1190,7 +1458,6 @@ HANDLE STDCALL
 EngLoadImage(LPWSTR DriverName);
 
 /*
-EngLoadModule
 EngLoadModuleForWrite
 EngLockDriverObj
 */
@@ -1202,16 +1469,20 @@ EngLockSurface(IN HSURF Surface);
 EngMapEvent
 EngMapFontFile
 EngMapModule
-EngMarkBandingSurface
 EngMovePointer
-EngMultiByteToUnicodeN
-EngMultiByteToWideChar
 */
 
-INT STDCALL EngMulDiv(
-            INT nMultiplicand,
-            INT nMultiplier,
-            INT nDivisor);
+INT STDCALL
+EngMulDiv(IN INT nMultiplicand,
+         IN INT nMultiplier,
+         IN INT nDivisor);
+
+VOID STDCALL
+EngMultiByteToUnicodeN(OUT LPWSTR UnicodeString,
+                      IN ULONG MaxBytesInUnicodeString,
+                      OUT PULONG BytesInUnicodeString,
+                      IN PCHAR MultiByteString,
+                      IN ULONG BytesInMultiByteString);
 
 BOOL STDCALL
 EngPaint(IN SURFOBJ *Surface,
@@ -1227,7 +1498,6 @@ EngQueryLocalTime
 EngQueryPalette
 EngQueryPerformanceCounter
 EngQueryPerformanceFrequency
-EngReleaseSemaphore
 EngRestoreFloatingPointState
 EngSaveFloatingPointState
 EngSecureMem
@@ -1236,28 +1506,39 @@ EngSetLastError
 EngSetPointerShape
 EngSetPointerTag
 EngSetPrinterData
-EngSort
-EngStretchBlt
+*/
+
+typedef int CDECL (*SORTCOMP)(const void *Elem1, const void *Elem2);
+
+void STDCALL
+EngSort(IN OUT PBYTE Buf, IN ULONG ElemSize, IN ULONG ElemCount, IN SORTCOMP CompFunc);
+
+/*
 EngStrokeAndFillPath
 EngStrokePath
 EngTextOut
 */
 
 BOOL STDCALL
-EngTransparentBlt(PSURFOBJ Dest,
-                 PSURFOBJ Source,
-                 PCLIPOBJ Clip,
-                 PXLATEOBJ ColorTranslation,
-                 PRECTL DestRect,
-                 PRECTL SourceRect,
-                 ULONG TransparentColor,
-                 ULONG Reserved);
+EngTransparentBlt(IN PSURFOBJ Dest,
+                 IN PSURFOBJ Source,
+                 IN PCLIPOBJ Clip,
+                 IN PXLATEOBJ ColorTranslation,
+                 IN PRECTL DestRect,
+                 IN PRECTL SourceRect,
+                 IN ULONG TransparentColor,
+                 IN ULONG Reserved);
+
+VOID STDCALL
+EngUnicodeToMultiByteN(OUT PCHAR MultiByteString,
+                      IN ULONG  MaxBytesInMultiByteString,
+                      OUT PULONG  BytesInMultiByteString,
+                      IN PWSTR  UnicodeString,
+                      IN ULONG  BytesInUnicodeString);
 
 /*
-EngUnicodeToMultiByteN
 EngUnloadImage
 EngUnlockDriverObj
-EngUnlockSurface
 EngUnmapEvent
 EngUnmapFontFile
 EngUnsecureMem = NTOSKRNL.MmUnsecureVirtualMemory
@@ -1293,28 +1574,49 @@ FLOATOBJ_SubFloatObj
 FLOATOBJ_SubLong
 */
 
-ULONG FONTOBJ_cGetAllGlyphHandles(IN PFONTOBJ  FontObj,
-                                  IN HGLYPH  *Glyphs);
-ULONG FONTOBJ_cGetGlyphs(IN PFONTOBJ  FontObj,
-                         IN ULONG  Mode,
-                         IN ULONG  NumGlyphs,
-                         IN HGLYPH  *GlyphHandles,
-                         IN PVOID  *OutGlyphs);
-PGAMMA_TABLES FONTOBJ_pGetGammaTables(IN PFONTOBJ  FontObj);
-IFIMETRICS *FONTOBJ_pifi(IN PFONTOBJ  FontObj);
-PVOID  FONTOBJ_pvTrueTypeFontFile(IN PFONTOBJ  FontObj,
-                                  IN ULONG  *FileSize);
-XFORMOBJ *FONTOBJ_pxoGetXform(IN PFONTOBJ  FontObj);
-VOID  FONTOBJ_vGetInfo(IN PFONTOBJ  FontObj,
-                       IN ULONG  InfoSize,
-                       OUT PFONTINFO  FontInfo);
+ULONG
+STDCALL
+FONTOBJ_cGetAllGlyphHandles(IN PFONTOBJ  FontObj,
+                            IN HGLYPH  *Glyphs);
+
+ULONG
+STDCALL
+FONTOBJ_cGetGlyphs(IN PFONTOBJ FontObj,
+                   IN ULONG    Mode,
+                   IN ULONG    NumGlyphs,
+                   IN HGLYPH  *GlyphHandles,
+                   IN PVOID   *OutGlyphs);
+
+PGAMMA_TABLES
+STDCALL
+FONTOBJ_pGetGammaTables(IN PFONTOBJ FontObj);
+
+IFIMETRICS*
+STDCALL
+FONTOBJ_pifi(IN PFONTOBJ  FontObj);
+
+PVOID
+STDCALL
+FONTOBJ_pvTrueTypeFontFile(IN PFONTOBJ  FontObj,
+                           IN ULONG    *FileSize);
+
+XFORMOBJ*
+STDCALL
+FONTOBJ_pxoGetXform(IN PFONTOBJ  FontObj);
+
+VOID
+STDCALL
+FONTOBJ_vGetInfo(IN  PFONTOBJ   FontObj,
+                 IN  ULONG      InfoSize,
+                 OUT PFONTINFO  FontInfo);
 
 /*
 HT_ComputeRGBGammaTable
 HT_Get8BPPFormatPalette
 */
 
-ULONG STDCALL
+ULONG
+STDCALL
 PALOBJ_cGetColors(PALOBJ *PalObj,
                  ULONG Start,
                  ULONG Colors,
@@ -1322,14 +1624,12 @@ PALOBJ_cGetColors(PALOBJ *PalObj,
 
 /*
 PATHOBJ_bCloseFigure
-PATHOBJ_bEnum
 PATHOBJ_bEnumClipLines
 PATHOBJ_bMoveTo
 PATHOBJ_bPolyBezierTo
 PATHOBJ_bPolyLineTo
 PATHOBJ_vEnumStart
 PATHOBJ_vEnumStartClipLines
-PATHOBJ_vGetBounds
 RtlAnsiCharToUnicodeChar = NTOSKRNL.RtlAnsiCharToUnicodeChar
 RtlMultiByteToUnicodeN = NTOSKRNL.RtlMultiByteToUnicodeN
 RtlRaiseException = NTOSKRNL.RtlRaiseException
@@ -1362,5 +1662,85 @@ XLATEOBJ_iXlate(XLATEOBJ *XlateObj,
 ULONG * STDCALL
 XLATEOBJ_piVector(XLATEOBJ *XlateObj);
 
-#endif
+HANDLE STDCALL
+BRUSHOBJ_hGetColorTransform(BRUSHOBJ *pbo);
+ULONG STDCALL
+BRUSHOBJ_ulGetBrushColor(BRUSHOBJ *pbo);
+BOOL STDCALL 
+EngAlphaBlend(SURFOBJ *psoDest,SURFOBJ *psoSrc,CLIPOBJ *pco,XLATEOBJ *pxlo,RECTL *prclDest,RECTL *prclSrc,BLENDOBJ *pBlendObj);
+BOOL STDCALL
+EngCheckAbort(SURFOBJ *pso);
+FD_GLYPHSET* STDCALL
+EngComputeGlyphSet(INT nCodePage,INT nFirstChar,INT cChars);
+VOID STDCALL
+EngDeletePath(PATHOBJ *ppo);
+BOOL STDCALL
+EngFillPath(SURFOBJ *pso,PATHOBJ *ppo,CLIPOBJ *pco,BRUSHOBJ *pbo,POINTL *pptlBrushOrg,MIX mix,FLONG flOptions);
+PVOID STDCALL
+EngFindResource(HANDLE h,int iName,int iType,PULONG pulSize);
+VOID STDCALL 
+EngFreeModule(HANDLE h);
+LPWSTR STDCALL
+EngGetDriverName(HDEV hdev);
+LPWSTR STDCALL
+EngGetPrinterDataFileName(HDEV hdev);
+BOOL STDCALL 
+EngGradientFill(SURFOBJ *psoDest,CLIPOBJ *pco,XLATEOBJ *pxlo,TRIVERTEX *pVertex,ULONG nVertex,PVOID pMesh,ULONG nMesh,RECTL *prclExtents,POINTL *pptlDitherOrg,ULONG ulMode);
+HANDLE STDCALL 
+EngLoadModule(LPWSTR pwsz);
+BOOL STDCALL 
+EngMarkBandingSurface(HSURF hsurf);
+INT STDCALL 
+EngMultiByteToWideChar(UINT CodePage,LPWSTR WideCharString,INT BytesInWideCharString,LPSTR MultiByteString,INT BytesInMultiByteString);
+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);
+BOOL STDCALL
+EngQueryEMFInfo(HDEV hdev,EMFINFO *pEMFInfo);
+VOID STDCALL 
+EngQueryLocalTime(PENG_TIME_FIELDS etf);
+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);
+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);
+BOOL STDCALL 
+EngStrokeAndFillPath(SURFOBJ *pso,PATHOBJ *ppo,CLIPOBJ *pco,XFORMOBJ *pxo,BRUSHOBJ *pboStroke,LINEATTRS *plineattrs,BRUSHOBJ *pboFill,POINTL *pptlBrushOrg,MIX mixFill,FLONG flOptions);
+BOOL STDCALL
+EngStrokePath(SURFOBJ *pso,PATHOBJ *ppo,CLIPOBJ *pco,XFORMOBJ *pxo,BRUSHOBJ *pbo,POINTL *pptlBrushOrg,LINEATTRS *plineattrs,MIX mix);
+BOOL STDCALL 
+EngTextOut(SURFOBJ *pso,STROBJ *pstro,FONTOBJ *pfo,CLIPOBJ *pco,RECTL *prclExtra,RECTL *prclOpaque,BRUSHOBJ *pboFore,BRUSHOBJ *pboOpaque,POINTL *pptlOrg,MIX mix);
+VOID STDCALL 
+EngUnlockSurface(SURFOBJ *pso);
+INT STDCALL 
+EngWideCharToMultiByte(UINT CodePage,LPWSTR WideCharString,INT BytesInWideCharString,LPSTR MultiByteString,INT BytesInMultiByteString);
+PFD_GLYPHATTR STDCALL
+FONTOBJ_pQueryGlyphAttrs(FONTOBJ *pfo,ULONG iMode);
+VOID STDCALL
+PATHOBJ_vGetBounds(PATHOBJ *ppo,PRECTFX prectfx);
+FD_GLYPHSET *STDCALL
+FONTOBJ_pfdg(FONTOBJ *pfo);
+BOOL STDCALL
+PATHOBJ_bEnum(PATHOBJ *ppo,PATHDATA *ppd);
+BOOL STDCALL 
+PATHOBJ_bEnumClipLines(PATHOBJ *ppo,ULONG cb,CLIPLINE *pcl);
+VOID STDCALL 
+PATHOBJ_vEnumStart(PATHOBJ *ppo);
+VOID STDCALL
+PATHOBJ_vEnumStartClipLines(PATHOBJ *ppo,CLIPOBJ *pco,SURFOBJ *pso,LINEATTRS *pla);
+BOOL STDCALL
+STROBJ_bEnum(STROBJ *pstro,ULONG *pc,PGLYPHPOS *ppgpos);
+BOOL STDCALL
+STROBJ_bEnumPositionsOnly(STROBJ *pstro,ULONG *pc,PGLYPHPOS *ppgpos);
+BOOL STDCALL
+STROBJ_bGetAdvanceWidths(STROBJ *pso,ULONG iFirst,ULONG c,POINTQF *pptqD);
+DWORD STDCALL
+STROBJ_dwGetCodePage(STROBJ  *pstro);
+VOID STDCALL
+STROBJ_vEnumStart(STROBJ *pstro);
+ULONG STDCALL
+XFORMOBJ_iGetXform(XFORMOBJ *pxo,XFORML *pxform);
+BOOL STDCALL
+XFORMOBJ_bApplyXform(XFORMOBJ *pxo,ULONG iMode,ULONG cPoints,PVOID pvIn,PVOID pvOut);
+HANDLE STDCALL
+XLATEOBJ_hGetColorTransform(XLATEOBJ *pxlo);
 
+#endif