update for HEAD-2003021201
[reactos.git] / include / ddk / winddi.h
1 /*
2  * WinDDI.h - definition of the GDI - DDI interface
3  */
4
5 #ifndef __DDK_WINDDI_H
6 #define __DDK_WINDDI_H
7
8 #if defined(WIN32_LEAN_AND_MEAN) && defined(_GNU_H_WINDOWS32_STRUCTURES)
9 #error "windows.h cannot be included before winddi.h if WIN32_LEAN_AND_MEAN is defined"
10 #endif
11
12 #ifdef WIN32_LEAN_AND_MEAN
13 #undef WIN32_LEAN_AND_MEAN
14 #include <windows.h>
15 #define WIN32_LEAN_AND_MEAN
16 #else
17 #include <windows.h>
18 #endif
19
20 #ifndef IN
21 #define IN
22 #define OUT
23 #define OPTIONAL
24 #endif
25
26 #ifndef PTRDIFF
27 typedef DWORD PTRDIFF;
28 #endif
29
30 #define GDI_DRIVER_VERSION 0x4000   // NT 4 compatibility
31
32 /* FIXME: find definitions for these structs  */
33 typedef PVOID  PCOLORADJUSTMENT;
34 typedef PVOID  PDD_CALLBACKS;
35 typedef PVOID  PDD_HALINFO;
36 typedef PVOID  PDD_PALETTECALLBACKS;
37 typedef PVOID  PDD_SURFACECALLBACKS;
38 typedef PVOID  PFONTINFO;
39 typedef PVOID  PGAMMA_TABLES;
40 typedef PVOID  PGLYPHDATA;
41 typedef PVOID  PLINEATTRS;
42 typedef DWORD  MIX;
43 typedef DWORD  ROP4;
44 typedef PVOID  PSTROBJ;
45 typedef PVOID  PTTPOLYGONHEADER;
46 typedef PVOID  PVIDEOMEMORY;
47
48 #define  DDI_DRIVER_VERSION  0x00010000
49
50 /* FIXME: how big should this constant be?  */
51 #define  HS_DDI_MAX  6
52
53 /* XLate types */
54 #define XO_TRIVIAL      0x00000001
55 #define XO_TABLE        0x00000002
56 #define XO_TO_MONO      0x00000004
57
58 #define XO_SRCPALETTE    1
59 #define XO_DESTPALETTE   2
60 #define XO_DESTDCPALETTE 3
61
62 /*  EngCreateBitmap format types  */
63 enum _BMF_TYPES
64 {
65   BMF_1BPP = 1,
66   BMF_4BPP,
67   BMF_8BPP,
68   BMF_16BPP,
69   BMF_24BPP,
70   BMF_32BPP,
71   BMF_4RLE,
72   BMF_8RLE
73 };
74
75 #define  BMF_TOPDOWN     0x00000001
76 #define  BMF_NOZEROINIT  0x00000002
77 #define  BMF_DONTCACHE   0x00000004
78 #define  BMF_USERMEM     0x00000008
79 #define  BMF_KMSECTION   0x00000010
80
81 #define DC_TRIVIAL      0
82 #define DC_RECT         1
83 #define DC_COMPLEX      3
84
85 #define FC_RECT         1
86 #define FC_RECT4        2
87 #define FC_COMPLEX      3
88
89 #define TC_RECTANGLES   0
90 #define TC_PATHOBJ      2
91
92 #define OC_BANK_CLIP    1
93
94 #define CT_RECTANGLES   0L
95
96 #define CD_LEFTWARDS    1L
97 #define CD_UPWARDS      2L
98
99 /*  Options for CLIPOBJ_cEnumStart BuildOrder field  */
100 enum _CD_ORDERS
101 {
102   CD_RIGHTDOWN,
103   CD_LEFTDOWN,
104   CD_RIGHTUP,
105   CD_LEFTUP,
106   CD_ANY
107 };
108
109 /*  Options for CLIPOBJ_cEnumStart Type field  */
110 #define  CT_RECTANGLE  1
111
112 #define  DCR_SOLID     0
113 #define  DCR_DRIVER    1
114 #define  DCR_HALFTONE  2
115
116 #define  DMMAXDEVICENAME  32
117 #define  DMMAXFORMNAME  32
118
119 #define  DM_DEFAULT     0x00000001
120 #define  DM_MONOCHROME  0x00000002
121
122 #define  ED_ABORTDOC  0x00000001
123
124 enum _ESCAPE_CODES
125 {
126   ESC_PASSTHROUGH,
127   ESC_QUERYESCSUPPORT
128 };
129
130 #define  FM_INFO_TECH_TRUETYPE              0x00000001
131 #define  FM_INFO_TECH_BITMAP                0x00000002
132 #define  FM_INFO_TECH_STROKE                0x00000004
133 #define  FM_INFO_TECH_OUTLINE_NOT_TRUETYPE  0x00000008
134 #define  FM_INFO_ARB_XFORMS                 0x00000010
135 #define  FM_INFO_1BPP                       0x00000020
136 #define  FM_INFO_4BPP                       0x00000040
137 #define  FM_INFO_8BPP                       0x00000080
138 #define  FM_INFO_16BPP                      0x00000100
139 #define  FM_INFO_24BPP                      0x00000200
140 #define  FM_INFO_32BPP                      0x00000400
141 #define  FM_INFO_INTEGER_WIDTH              0x00000800
142 #define  FM_INFO_CONSTANT_WIDTH             0x00001000
143 #define  FM_INFO_NOT_CONTIGUOUS             0x00002000
144 #define  FM_INFO_PID_EMBEDDED               0x00004000
145 #define  FM_INFO_RETURNS_OUTLINES           0x00008000
146 #define  FM_INFO_RETURNS_STROKES            0x00010000
147 #define  FM_INFO_RETURNS_BITMAPS            0x00020000
148 #define  FM_INFO_UNICODE_COMPLIANT          0x00040000
149 #define  FM_INFO_RIGHT_HANDED               0x00080000
150 #define  FM_INFO_INTEGRAL_SCALING           0x00100000
151 #define  FM_INFO_90DEGREE_ROTATIONS         0x00200000
152 #define  FM_INFO_OPTICALLY_FIXED_PITCH      0x00400000
153 #define  FM_INFO_DO_NOT_ENUMERATE           0x00800000
154 #define  FM_INFO_ISOTROPIC_SCALING_ONLY     0x01000000
155 #define  FM_INFO_ANISOTROPIC_SCALING_ONLY   0x02000000
156 #define  FM_INFO_TID_EMBEDDED               0x04000000
157 #define  FM_INFO_FAMILY_EQUIV               0x08000000
158 #define  FM_INFO_DBCS_FIXED_PITCH           0x10000000
159 #define  FM_INFO_NONNEGATIVE_AC             0x20000000
160 #define  FM_INFO_IGNORE_TC_RA_ABLE          0x40000000
161 #define  FM_INFO_TECH_TYPE1                 0x80000000
162
163 #define  FM_SEL_ITALIC      0x00000001
164 #define  FM_SEL_UNDERSCORE  0x00000002
165 #define  FM_SEL_NEGATIVE    0x00000004
166 #define  FM_SEL_OUTLINED    0x00000008
167 #define  FM_SEL_STRIKEOUT   0x00000010
168 #define  FM_SEL_BOLD        0x00000020
169 #define  FM_SEL_REGULAR     0x00000040
170
171 #define  FM_TYPE_LICENSED   0x00000002
172 #define  FM_READONLY_EMBED  0x00000004
173 #define  FM_EDITABLE_EMBED  0x00000008
174 #define  FM_NO_EMBEDDING    0x00000002
175
176 #define  FO_TYPE_RASTER    RASTER_FONTTYPE
177 #define  FO_TYPE_DEVICE    DEVICE_FONTTYPE
178 #define  FO_TYPE_TRUETYPE  TRUETYPE_FONTTYPE
179 #define  FO_SIM_BOLD       0x00002000
180 #define  FO_SIM_ITALIC     0x00004000
181 #define  FO_EM_HEIGHT      0x00008000
182 #define  FO_GRAY16         0x00010000
183 #define  FO_NOGRAY16       0x00020000
184 #define  FO_NOHINTS        0x00040000
185 #define  FO_NO_CHOICE      0x00080000
186
187 enum _FP_MODES
188 {
189   FP_ALTERNATEMODE = 1,
190   FP_WINDINGMODE
191 };
192
193 enum _GLYPH_MODE
194 {
195   FO_HGLYPHS,
196   FO_GLYPHBITS,
197   FO_PATHOBJ
198 };
199
200 // Allowed values for GDIINFO.ulPrimaryOrder.
201
202 #define PRIMARY_ORDER_ABC       0
203 #define PRIMARY_ORDER_ACB       1
204 #define PRIMARY_ORDER_BAC       2
205 #define PRIMARY_ORDER_BCA       3
206 #define PRIMARY_ORDER_CBA       4
207 #define PRIMARY_ORDER_CAB       5
208
209 // Allowed values for GDIINFO.ulHTPatternSize.
210
211 #define HT_PATSIZE_2x2          0
212 #define HT_PATSIZE_2x2_M        1
213 #define HT_PATSIZE_4x4          2
214 #define HT_PATSIZE_4x4_M        3
215 #define HT_PATSIZE_6x6          4
216 #define HT_PATSIZE_6x6_M        5
217 #define HT_PATSIZE_8x8          6
218 #define HT_PATSIZE_8x8_M        7
219 #define HT_PATSIZE_10x10        8
220 #define HT_PATSIZE_10x10_M      9
221 #define HT_PATSIZE_12x12        10
222 #define HT_PATSIZE_12x12_M      11
223 #define HT_PATSIZE_14x14        12
224 #define HT_PATSIZE_14x14_M      13
225 #define HT_PATSIZE_16x16        14
226 #define HT_PATSIZE_16x16_M      15
227 #define HT_PATSIZE_MAX_INDEX    HT_PATSIZE_16x16_M
228 #define HT_PATSIZE_DEFAULT      HT_PATSIZE_4x4_M
229
230 // Allowed values for GDIINFO.ulHTOutputFormat.
231
232 #define HT_FORMAT_1BPP          0
233 #define HT_FORMAT_4BPP          2
234 #define HT_FORMAT_4BPP_IRGB     3
235 #define HT_FORMAT_8BPP          4
236 #define HT_FORMAT_16BPP         5
237 #define HT_FORMAT_24BPP         6
238 #define HT_FORMAT_32BPP         7
239
240 // Allowed values for GDIINFO.flHTFlags.
241
242 #define HT_FLAG_SQUARE_DEVICE_PEL    0x00000001
243 #define HT_FLAG_HAS_BLACK_DYE        0x00000002
244 #define HT_FLAG_ADDITIVE_PRIMS       0x00000004
245 #define HT_FLAG_OUTPUT_CMY           0x00000100
246
247 #define GCAPS_BEZIERS           0x00000001
248 #define GCAPS_GEOMETRICWIDE     0x00000002
249 #define GCAPS_ALTERNATEFILL     0x00000004
250 #define GCAPS_WINDINGFILL       0x00000008
251 #define GCAPS_HALFTONE          0x00000010
252 #define GCAPS_COLOR_DITHER      0x00000020
253 #define GCAPS_HORIZSTRIKE       0x00000040
254 #define GCAPS_VERTSTRIKE        0x00000080
255 #define GCAPS_OPAQUERECT        0x00000100
256 #define GCAPS_VECTORFONT        0x00000200
257 #define GCAPS_MONO_DITHER       0x00000400
258 #define GCAPS_ASYNCCHANGE       0x00000800
259 #define GCAPS_ASYNCMOVE         0x00001000
260 #define GCAPS_DONTJOURNAL       0x00002000
261 #define GCAPS_DIRECTDRAW        0x00004000
262 #define GCAPS_ARBRUSHOPAQUE     0x00008000
263 #define GCAPS_PANNING           0x00010000
264 #define GCAPS_HIGHRESTEXT       0x00040000
265 #define GCAPS_PALMANAGED        0x00080000
266 #define GCAPS_DITHERONREALIZE   0x00200000
267 #define GCAPS_NO64BITMEMACCESS  0x00400000
268 #define GCAPS_FORCEDITHER       0x00800000
269 #define GCAPS_GRAY16            0x01000000
270
271 /*  EngAssocateSurface hook flags  */
272 #define  HOOK_BITBLT             0x00000001
273 #define  HOOK_STRETCHBLT         0x00000002
274 #define  HOOK_PLGBLT             0x00000004
275 #define  HOOK_TEXTOUT            0x00000008
276 #define  HOOK_PAINT              0x00000010
277 #define  HOOK_STROKEPATH         0x00000020
278 #define  HOOK_FILLPATH           0x00000040
279 #define  HOOK_STROKEANDFILLPATH  0x00000080
280 #define  HOOK_LINETO             0x00000100
281 #define  HOOK_COPYBITS           0x00000400
282 #define  HOOK_SYNCHRONIZE        0x00001000
283 #define  HOOK_SYNCHRONIZEACCESS  0x00004000
284 #define  HOOK_TRANSPARENTBLT     0x00008000
285
286 enum _DRV_HOOK_FUNCS
287 {
288   INDEX_DrvEnablePDEV,
289   INDEX_DrvCompletePDEV,
290   INDEX_DrvDisablePDEV,
291   INDEX_DrvEnableSurface,
292   INDEX_DrvDisableSurface,
293   INDEX_DrvAssertMode,
294   INDEX_DrvResetPDEV = 7,
295   INDEX_DrvCreateDeviceBitmap = 10,
296   INDEX_DrvDeleteDeviceBitmap,
297   INDEX_DrvRealizeBrush,
298   INDEX_DrvDitherColor,
299   INDEX_DrvStrokePath,
300   INDEX_DrvFillPath,
301   INDEX_DrvStrokeAndFillPath,
302   INDEX_DrvPaint,
303   INDEX_DrvBitBlt,
304   INDEX_DrvCopyBits,
305   INDEX_DrvStretchBlt,
306   INDEX_DrvSetPalette = 22,
307   INDEX_DrvTextOut,
308   INDEX_DrvEscape,
309   INDEX_DrvDrawEscape,
310   INDEX_DrvQueryFont,
311   INDEX_DrvQueryFontTree,
312   INDEX_DrvQueryFontData,
313   INDEX_DrvSetPointerShape,
314   INDEX_DrvMovePointer,
315   INDEX_DrvLineTo,
316   INDEX_DrvSendPage,
317   INDEX_DrvStartPage,
318   INDEX_DrvEndDoc,
319   INDEX_DrvStartDoc,
320   INDEX_DrvGetGlyphMode = 37,
321   INDEX_DrvSynchronize,
322   INDEX_DrvSaveScreenBits = 40,
323   INDEX_DrvGetModes,
324   INDEX_DrvFree,
325   INDEX_DrvDestroyFont,
326   INDEX_DrvQueryFontCaps,
327   INDEX_DrvLoadFontFile,
328   INDEX_DrvUnloadFontFile,
329   INDEX_DrvFontManagement,
330   INDEX_DrvQueryTrueTypeTable,
331   INDEX_DrvQueryTrueTypeOutline,
332   INDEX_DrvGetTrueTypeFile,
333   INDEX_DrvQueryFontFile,
334   INDEX_DrvQueryAdvanceWidths = 53,
335   INDEX_DrvSetPixelFormat,
336   INDEX_DrvDescribePixelFormat,
337   INDEX_DrvSwapBuffers,
338   INDEX_DrvStartBanding,
339   INDEX_DrvNextBand,
340   INDEX_DrvGetDirectDrawInfo,
341   INDEX_DrvEnableDirectDraw,
342   INDEX_DrvDisableDirectDraw,
343   INDEX_DrvQuerySpoolType,
344   INDEX_DrvTransparentBlt = 74,
345   INDEX_LAST
346 };
347
348 /*  EngCreatePalette mode types  */
349 #define  PAL_INDEXED    0x00000001
350 #define  PAL_BITFIELDS  0x00000002
351 #define  PAL_RGB        0x00000004
352 #define  PAL_BGR        0x00000008
353
354 enum _QUERY_ADVANCE_WIDTH_TYPES
355 {
356   QAW_GETWIDTHS = 1,
357   QAW_GETEASYWIDTHS
358 };
359
360 #define  QC_OUTLINES  0x00000001
361 #define  QC_1BIT      0x00000002
362 #define  QC_4BIT      0x00000004
363
364 enum _QFF_MODES
365 {
366   QFF_DESCRIPTION = 1,
367   QFF_NUMFACES
368 };
369
370 #define  RB_DITHERCOLOR  0x80000000
371
372 enum _SPS_RC
373 {
374   SPS_ERROR,
375   SPS_DECLINE,
376   SPS_ACCEPT_NOEXCLUDE,
377   SPS_ACCEPT_EXCLUDE
378 };
379
380 #define SPS_CHANGE        0x00000001L
381 #define SPS_ASYNCCHANGE   0x00000002L
382 #define SPS_ANIMATESTART  0x00000004L
383 #define SPS_ANIMATEUPDATE 0x00000008L
384
385 #define  SS_SAVE     0
386 #define  SS_RESTORE  1
387 #define  SS_FREE     2
388
389 enum _SURF_TYPES
390 {
391   STYPE_BITMAP = 0,
392   STYPE_DEVICE = 1,
393   STYPE_DEVBITMAP = 3
394 };
395
396 #define  WO_RGN_CLIENT_DELTA   0x00000001
397 #define  WO_RGN_CLIENT         0x00000002
398 #define  WO_RGN_SURFACE_DELTA  0x00000004
399 #define  WO_RGN_SURFACE        0x00000008
400 #define  WO_RGN_UPDATE_ALL     0x00000010
401
402 #define  WOC_RGN_CLIENT_DELTA   0x00000001
403 #define  WOC_RGN_CLIENT         0x00000002
404 #define  WOC_RGN_SURFACE_DELTA  0x00000004
405 #define  WOC_RGN_SURFACE        0x00000008
406 #define  WOC_CHANGED            0x00000010
407 #define  WOC_DELETE             0x00000020
408
409 typedef HANDLE  HDEV;
410 typedef HANDLE  HGLYPH;
411 typedef HANDLE  HSURF;
412 typedef HANDLE  DHPDEV;
413 typedef HANDLE  DHSURF;
414 typedef ULONG  (*PFN)(VOID);
415 typedef ULONG IDENT;
416
417 typedef struct _DRVFN
418 {
419   ULONG  iFunc;
420   PFN  pfn;
421 } DRVFN, *PDRVFN;
422
423 /*
424  * DRVENABLEDATA - this structure is passed to the DDI from the GDI
425  *   in the function DrvEnableDriver to determine driver parameters.
426  */
427
428 typedef struct _DRVENABLEDATA
429 {
430   ULONG  iDriverVersion;
431   ULONG  c;
432   DRVFN  *pdrvfn;
433 } DRVENABLEDATA, *PDRVENABLEDATA;
434
435 /* FIXME: replace this with correct def for LDECI4  */
436 typedef DWORD  LDECI4;
437
438 typedef struct _CIECHROMA
439 {
440   LDECI4  x;
441   LDECI4  y;
442   LDECI4  Y;
443 } CIECHROMA, *PCIECHROMA;
444
445 typedef struct _COLORINFO
446 {
447   CIECHROMA  Red;
448   CIECHROMA  Green;
449   CIECHROMA  Blue;
450   CIECHROMA  Cyan;
451   CIECHROMA  Magenta;
452   CIECHROMA  Yellow;
453   CIECHROMA  AlignmentWhite;
454   LDECI4  RedGamma;
455   LDECI4  GreenGamma;
456   LDECI4  BlueGamma;
457   LDECI4  MagentaInCyanDye;
458   LDECI4  YellowInCyanDye;
459   LDECI4  CyanInMagentaDye;
460   LDECI4  YellowInMagentaDye;
461   LDECI4  CyanInYellowDye;
462   LDECI4  MagentaInYellowDye;
463 } COLORINFO, *PCOLORINFO;
464
465 typedef struct _DEVINFO
466 {
467   ULONG  flGraphicsCaps;
468   LOGFONTW  lfDefaultFont;
469   LOGFONTW  lfAnsiVarFont;
470   LOGFONTW  lfAnsiFixFont;
471   ULONG  cFonts;
472   ULONG  iDitherFormat;
473   USHORT  cxDither;
474   USHORT  cyDither;
475   HPALETTE  hpalDefault;
476 } DEVINFO, *PDEVINFO;
477
478 typedef struct _GDIINFO
479 {
480   ULONG  ulVersion;
481   ULONG  ulTechnology;
482   ULONG  ulHorzSize;
483   ULONG  ulVertSize;
484   ULONG  ulHorzRes;
485   ULONG  ulVertRes;
486   ULONG  cBitsPixel;
487   ULONG  cPlanes;
488   ULONG  ulNumColors;
489   ULONG  flRaster;
490   ULONG  ulLogPixelsX;
491   ULONG  ulLogPixelsY;
492   ULONG  flTextCaps;
493   ULONG  ulDACRed;
494   ULONG  ulDACGreen;
495   ULONG  ulDACBlue;
496   ULONG  ulAspectX;
497   ULONG  ulAspectY;
498   ULONG  ulAspectXY;
499   LONG  xStyleStep;
500   LONG  yStyleStep;
501   LONG  denStyleStep;
502   POINTL  ptlPhysOffset;
503   SIZEL  szlPhysSize;
504   ULONG  ulNumPalReg;
505   COLORINFO  ciDevice;
506   ULONG  ulDevicePelsDPI;
507   ULONG  ulPrimaryOrder;
508   ULONG  ulHTPatternSize;
509   ULONG  ulHTOutputFormat;
510   ULONG  flHTFlags;
511   ULONG  ulVRefresh;
512   ULONG  ulBltAlignment;
513   ULONG  ulPanningHorzRes;
514   ULONG  ulPanningVertRes;
515 } GDIINFO, *PGDIINFO;
516
517 typedef struct _BRUSHOBJ
518 {
519   ULONG  iSolidColor;
520   PVOID  pvRbrush;
521
522   /*  remainder of fields are for GDI internal use  */
523   LOGBRUSH  logbrush;
524 } BRUSHOBJ, *PBRUSHOBJ;
525
526 typedef struct _CLIPOBJ
527 {
528   ULONG  iUniq;
529   RECTL  rclBounds;
530   BYTE  iDComplexity;
531   BYTE  iFComplexity;
532   BYTE  iMode;
533   BYTE  fjOptions;
534 } CLIPOBJ, *PCLIPOBJ;
535
536 typedef struct _ENUMRECTS
537 {
538   ULONG  c;
539   RECTL  arcl[1];
540 } ENUMRECTS, *PENUMRECTS;
541
542 typedef struct _FONTOBJ
543 {
544   ULONG  iUniq;
545   ULONG  iFace;
546   ULONG  cxMax;
547   ULONG  flFontType;
548   ULONG  iTTUniq;
549   ULONG  iFile;
550   SIZE  sizLogResPpi;
551   ULONG  ulStyleSize;
552   PVOID  pvConsumer;
553   PVOID  pvProducer;
554 } FONTOBJ, *PFONTOBJ;
555
556 typedef struct _IFIMETRICS
557 {
558   ULONG cjThis;
559   ULONG ulVersion;
560   PTRDIFF dpwszFamilyName;
561   PTRDIFF dpwszStyleName;
562   PTRDIFF dpwszFaceName;
563   PTRDIFF dpwszUniqueName;
564   PTRDIFF dpFontSim;
565   LONG lEmbedId;
566   LONG lItalicAngle;
567   LONG lCharBias;
568   PTRDIFF dpCharSets;
569   BYTE jWinCharSet;
570   BYTE jWinPitchAndFamily;
571   USHORT usWinWeight;
572   ULONG flInfo;
573   USHORT fsSelection;
574   USHORT fsType;
575   WORD fwdUnitsPerEm;
576   WORD fwdLowestPPEm;
577   WORD fwdWinAscender;
578   WORD fwdWinDescender;
579   WORD fwdMacAscender;
580   WORD fwdMacDescender;
581   WORD fwdMacLineGap;
582   WORD fwdTypoAscender;
583   WORD fwdTypoDescender;
584   WORD fwdTypoLineGap;
585   WORD fwdAveCharWidth;
586   WORD fwdMaxCharInc;
587   WORD fwdCapHeight;
588   WORD fwdXHeight;
589   WORD fwdSubScriptXSize;
590   WORD fwdSubScriptYSize;
591   WORD fwdSubScriptXOffset;
592   WORD fwdSubScriptYOffset;
593   WORD fwdSuperScriptXSize;
594   WORD fwdSuperScriptYSize;
595   WORD fwdSuperScriptXOffset;
596   WORD fwdSuperScriptYOffset;
597   WORD fwdUnderscoreSize;
598   WORD fwdUnderscorePosition;
599   WORD fwdStrikeoutSize;
600   WORD fwdStrikeoutPosition;
601   BYTE chFirstChar;
602   BYTE chLastChar;
603   BYTE chDefaultChar;
604   BYTE chBreakChar;
605   WCHAR wcFirstChar;
606   WCHAR wcLastChar;
607   WCHAR wcDefaultChar;
608   WCHAR wcBreakChar;
609   POINTL ptlBaseline;
610   POINTL ptlAspect;
611   POINTL ptlCaret;
612   RECTL rclFontBox;
613   BYTE achVendId[4];
614   ULONG cKerningPairs;
615   ULONG ulPanoseCulture;
616   PANOSE panose;
617 } IFIMETRICS, *PIFIMETRICS;
618
619 #define NB_RESERVED_COLORS              20 // number of fixed colors in system palette
620
621 typedef struct _XLATEOBJ
622 {
623   ULONG  iUniq;
624   ULONG  flXlate;
625   USHORT  iSrcType;
626   USHORT  iDstType;
627   ULONG  cEntries;
628   ULONG  *pulXlate;
629 } XLATEOBJ, *PXLATEOBJ;
630
631 typedef struct _PALOBJ
632 {
633   PXLATEOBJ logicalToSystem;
634   int *mapping;
635   PLOGPALETTE logpalette; // _MUST_ be the last field
636 } PALOBJ, *PPALOBJ;
637
638 typedef struct _PATHOBJ
639 {
640   ULONG  fl;
641   ULONG  cCurves;
642 } PATHOBJ, *PPATHOBJ;
643
644 typedef struct _SURFOBJ
645 {
646   DHSURF  dhsurf;
647   HSURF  hsurf;
648   DHPDEV  dhpdev;
649   HDEV  hdev;
650   SIZEL  sizlBitmap;
651   ULONG  cjBits;
652   PVOID  pvBits;
653   PVOID  pvScan0;
654   LONG  lDelta;
655   ULONG  iUniq;
656   ULONG  iBitmapFormat;
657   USHORT  iType;
658   USHORT  fjBitmap;
659 } SURFOBJ, *PSURFOBJ;
660
661 typedef struct _WNDOBJ
662 {
663   CLIPOBJ  coClient;
664   PVOID  pvConsumer;
665   RECTL  rclClient;
666 } WNDOBJ, *PWNDOBJ;
667
668 typedef VOID (CALLBACK * WNDOBJCHANGEPROC)(PWNDOBJ WndObj, ULONG Flags);
669
670 typedef struct _XFORMOBJ
671 {
672   /* FIXME: what does this beast look like?  */
673 } XFORMOBJ, *PXFORMOBJ;
674
675 /*
676  * Functions Prefixed with Drv are calls made from GDI to DDI, and
677  * everything else are calls made from DDI to GDI.  DDI is
678  * not allowed to make calls to any other kernel or user modules.
679  */
680
681 /*  GDI --> DDI calls  */
682 BOOL STDCALL
683 DrvAssertMode(IN DHPDEV PDev,
684               IN BOOL ShouldEnable);
685 BOOL STDCALL
686 DrvBitBlt(IN PSURFOBJ DestSurface,
687           IN PSURFOBJ SrcSurface,
688           IN PSURFOBJ MaskSurface,
689           IN PCLIPOBJ ClipObj,
690           IN PXLATEOBJ XLateObj,
691           IN PRECTL DestRectL,
692           IN PPOINTL SrcPointL,
693           IN PPOINTL MaskPointL,
694           IN PBRUSHOBJ BrushObj,
695           IN PPOINTL BrushPointL,
696           IN ROP4 RasterOp);
697 VOID STDCALL
698 DrvCompletePDEV(IN DHPDEV PDev,
699                 IN HDEV Dev);
700 BOOL STDCALL
701 DrvCopyBits(OUT PSURFOBJ DestSurface,
702             IN PSURFOBJ SrcSurface,
703             IN PCLIPOBJ ClipObj,
704             IN PXLATEOBJ XLateObj,
705             IN PRECTL DestRectL,
706             IN PPOINTL SrcPointL);
707 HBITMAP STDCALL
708 DrvCreateDeviceBitmap(IN DHPDEV DPev,
709                       IN SIZEL SizeL,
710                       IN ULONG Format);
711 VOID STDCALL
712 DrvDeleteDeviceBitmap(IN DHSURF Surface);
713 LONG STDCALL
714 DrvDescribePixelFormat(IN DHPDEV DPev,
715                        IN LONG PixelFormat,
716                        IN ULONG DescriptorSize,
717                        OUT PPIXELFORMATDESCRIPTOR PFD);
718 VOID STDCALL
719 DrvDestroyFont(IN PFONTOBJ FontObj);
720 VOID STDCALL
721 DrvDisableDirectDraw(IN DHPDEV PDev);
722 VOID STDCALL
723 DrvDisableDriver(VOID);
724 VOID STDCALL
725 DrvDisablePDEV(IN DHPDEV PDev);
726 VOID STDCALL
727 DrvDisableSurface(IN DHPDEV PDev);
728 ULONG STDCALL
729 DrvDitherColor(IN DHPDEV DPev,
730                IN ULONG Mode,
731                IN ULONG RGB,
732                OUT PULONG DitherBits);
733 ULONG STDCALL
734 DrvDrawEscape(IN PSURFOBJ SurfObj,
735               IN ULONG EscCode,
736               IN PCLIPOBJ ClipObj,
737               IN PRECTL RectL,
738               IN ULONG InputSize,
739               IN PVOID *InputData);
740 BOOL STDCALL
741 DrvEnableDirectDraw(IN DHPDEV PDev,
742                     IN PDD_CALLBACKS Callbacks,
743                     IN PDD_SURFACECALLBACKS SurfaceCallbacks,
744                     IN PDD_PALETTECALLBACKS PaletteCallbacks);
745 BOOL STDCALL
746 DrvEnableDriver(IN ULONG Version,
747                 IN ULONG DEDSize,
748                 OUT PDRVENABLEDATA DED);
749 DHPDEV STDCALL
750 DrvEnablePDEV(IN DEVMODEW *DM,
751               IN LPWSTR LogAddress,
752               IN ULONG PatternCount,
753               OUT HSURF *SurfPatterns,
754               IN ULONG CapsSize,
755               OUT ULONG *DevCaps,
756               IN ULONG DevInfoSize,
757               OUT DEVINFO *DI,
758               IN LPWSTR DevDataFile,
759               IN LPWSTR DeviceName,
760               IN HANDLE Driver);
761 HSURF STDCALL
762 DrvEnableSurface(IN DHPDEV PDev);
763 BOOL STDCALL
764 DrvEndDoc(IN PSURFOBJ SurfObj,
765           IN ULONG Flags);
766 ULONG STDCALL
767 DrvEscape(IN PSURFOBJ SurfObj,
768           IN ULONG EscCode,
769           IN ULONG InputSize,
770           IN PVOID *InputData,
771           IN ULONG OutputSize,
772           OUT PVOID *OutputData);
773 BOOL STDCALL
774 DrvFillPath(IN PSURFOBJ SurfObj,
775             IN PPATHOBJ PathObj,
776             IN PCLIPOBJ ClipObj,
777             IN PBRUSHOBJ BrushObj,
778             IN PPOINTL BrushOrg,
779             IN MIX Mix,
780             IN ULONG Options);
781 ULONG STDCALL
782 DrvFontManagement(IN PSURFOBJ SurfObj,
783                   IN PFONTOBJ FontObj,
784                   IN ULONG Mode,
785                   IN ULONG InputSize,
786                   IN PVOID InputData,
787                   IN ULONG OutputSize,
788                   OUT PVOID OutputData);
789 VOID STDCALL
790 DrvFree(IN PVOID Obj,
791         IN ULONG ID);
792 BOOL STDCALL
793 DrvGetDirectDrawInfo(IN DHPDEV PDev,
794                      IN PDD_HALINFO HalInfo,
795                      IN PDWORD NumHeaps,
796                      IN PVIDEOMEMORY List,
797                      IN PDWORD NumFourCCCodes,
798                      IN PDWORD FourCC);
799 ULONG STDCALL
800 DrvGetGlyphMode(IN DHPDEV DPev,
801                 IN PFONTOBJ FontObj);
802 ULONG STDCALL
803 DrvGetModes(IN HANDLE Driver,
804             IN ULONG DataSize,
805             OUT PDEVMODEW DM);
806 PVOID STDCALL
807 DrvGetTrueTypeFile(IN ULONG FileNumber,
808                    IN PULONG Size);
809 BOOL STDCALL
810 DrvLineTo(IN PSURFOBJ SurfObj,
811           IN PCLIPOBJ ClipObj,
812           IN PBRUSHOBJ BrushObj,
813           IN LONG x1,
814           IN LONG y1,
815           IN LONG x2,
816           IN LONG y2,
817           IN PRECTL Bounds,
818           IN MIX Mix);
819 ULONG STDCALL
820 DrvLoadFontFile(IN ULONG FileNumber,
821                 IN PVOID ViewData,
822                 IN ULONG ViewSize,
823                 IN ULONG LangID);
824 VOID STDCALL
825 DrvMovePointer(IN PSURFOBJ SurfObj,
826                IN LONG x,
827                IN LONG y,
828                IN PRECTL RectL);
829 BOOL STDCALL
830 DrvNextBand(IN PSURFOBJ SurfObj,
831             OUT PPOINTL PointL);
832 BOOL STDCALL
833 DrvPaint(IN PSURFOBJ SurfObj,
834          IN PCLIPOBJ ClipObj,
835          IN PBRUSHOBJ BrushObj,
836          IN PPOINTL BrushOrg,
837          IN MIX Mix);
838 BOOL STDCALL
839 DrvQueryAdvanceWidths(IN DHPDEV DPev,
840                       IN PFONTOBJ FontObj,
841                       IN ULONG Mode,
842                       IN HGLYPH Glyph,
843                       OUT PVOID *Widths,
844                       IN ULONG NumGlyphs);
845 PIFIMETRICS STDCALL
846 DrvQueryFont(IN DHPDEV PDev,
847              IN ULONG FileNumber,
848              IN ULONG FaceIndex,
849              IN PULONG Identifier);
850 LONG STDCALL
851 DrvQueryFontCaps(IN ULONG CapsSize,
852                  OUT PULONG CapsData);
853 LONG STDCALL
854 DrvQueryFontData(IN DHPDEV DPev,
855                  IN PFONTOBJ FontObj,
856                  IN ULONG Mode,
857                  IN HGLYPH Glyph,
858                  IN PGLYPHDATA GlyphData,
859                  IN PVOID DataBuffer,
860                  IN ULONG BufferSize);
861 LONG STDCALL
862 DrvQueryFontFile(IN ULONG FileNumber,
863                  IN ULONG Mode,
864                  IN ULONG BufSize,
865                  OUT PULONG Buf);
866 PVOID STDCALL
867 DrvQueryFontTree(IN DHPDEV PDev,
868                  IN ULONG FileNumber,
869                  IN ULONG FaceIndex,
870                  IN ULONG Mode,
871                  OUT ULONG *ID);
872 BOOL STDCALL
873 DrvQuerySpoolType(DHPDEV PDev,
874                   LPWSTR SpoolType);
875 LONG STDCALL
876 DrvQueryTrueTypeOutline(IN DHPDEV PDev,
877                         IN PFONTOBJ FontObj,
878                         IN HGLYPH Glyph,
879                         IN BOOL MetricsOnly,
880                         IN PGLYPHDATA GlyphData,
881                         IN ULONG BufSize,
882                         OUT PTTPOLYGONHEADER Polygons);
883 LONG STDCALL
884 DrvQueryTrueTypeTable(IN ULONG FileNumber,
885                       IN ULONG Font,
886                       IN ULONG Tag,
887                       IN PTRDIFF Start,
888                       IN ULONG BufSize,
889                       OUT BYTE *Buf);
890 BOOL STDCALL
891 DrvRealizeBrush(IN PBRUSHOBJ BrushObj,
892                 IN PSURFOBJ TargetSurface,
893                 IN PSURFOBJ PatternSurface,
894                 IN PSURFOBJ MaskSurface,
895                 IN PXLATEOBJ XLateObj,
896                 IN ULONG iHatch);
897 BOOL STDCALL
898 DrvResetPDEV(IN DHPDEV PDevOld,
899              IN DHPDEV PDevNew);
900 ULONG STDCALL
901 DrvSaveScreenBits(IN PSURFOBJ SurfObj,
902                   IN ULONG Mode,
903                   IN ULONG ID,
904                   IN PRECTL RectL);
905 BOOL STDCALL
906 DrvSendPage(IN PSURFOBJ SurfObj);
907 BOOL STDCALL
908 DrvSetPalette(IN DHPDEV PDev,
909               IN PPALOBJ PaletteObj,
910               IN ULONG Flags,
911               IN ULONG Start,
912               IN ULONG NumColors);
913 ULONG STDCALL
914 DrvSetPointerShape(IN PSURFOBJ SurfObj,
915                    IN PSURFOBJ MaskSurface,
916                    IN PSURFOBJ ColorSurface,
917                    IN PXLATEOBJ XLateObj,
918                    IN LONG xHot,
919                    IN LONG yHot,
920                    IN LONG x,
921                    IN LONG y,
922                    IN PRECTL RectL,
923                    IN ULONG Flags);
924 BOOL STDCALL
925 DrvStartBanding(IN PSURFOBJ SurfObj,
926                 IN PPOINTL PointL);
927 BOOL STDCALL
928 DrvStartDoc(IN PSURFOBJ SurfObj,
929             IN LPWSTR DocName,
930             IN DWORD JobID);
931 BOOL STDCALL
932 DrvStartPage(IN PSURFOBJ SurfObj);
933 BOOL STDCALL
934 DrvStretchBlt(IN PSURFOBJ DestSurface,
935               IN PSURFOBJ SrcSurface,
936               IN PSURFOBJ MaskSurface,
937               IN PCLIPOBJ ClipObj,
938               IN PXLATEOBJ XLateObj,
939               IN PCOLORADJUSTMENT CA,
940               IN PPOINTL HTOrg,
941               IN PRECTL Dest,
942               IN PRECTL Src,
943               IN PPOINTL Mask,
944               IN ULONG Mode);
945 BOOL STDCALL
946 DrvStrokeAndFillPath(IN PSURFOBJ SurfObj,
947                      IN PPATHOBJ PathObj,
948                      IN PCLIPOBJ ClipObj,
949                      IN PXFORMOBJ XFormObj,
950                      IN PBRUSHOBJ StrokeBrush,
951                      IN PLINEATTRS LineAttrs,
952                      IN PBRUSHOBJ FillBrush,
953                      IN PPOINTL BrushOrg,
954                      IN MIX MixFill,
955                      IN ULONG Options);
956 BOOL STDCALL
957 DrvStrokePath(IN PSURFOBJ SurfObj,
958               IN PPATHOBJ PathObj,
959               IN PCLIPOBJ PClipObj,
960               IN PXFORMOBJ XFormObj,
961               IN PBRUSHOBJ BrushObj,
962               IN PPOINTL BrushOrg,
963               IN PLINEATTRS LineAttrs,
964               IN MIX Mix);
965 VOID STDCALL
966 DrvSynchronize(IN DHPDEV PDev,
967                IN PRECTL RectL);
968 BOOL STDCALL
969 DrvTextOut(IN PSURFOBJ SurfObj,
970            IN PSTROBJ StrObj,
971            IN PFONTOBJ FontObj,
972            IN PCLIPOBJ ClipObj,
973            IN PRECTL ExtraRect,
974            IN PRECTL OpaqueRect,
975            IN PBRUSHOBJ ForegroundBrush,
976            IN PBRUSHOBJ OpaqueBrush,
977            IN PPOINTL OrgPoint,
978            IN MIX Mix);
979 BOOL STDCALL
980 DrvTransparentBlt(PSURFOBJ Dest,
981                   PSURFOBJ Source,
982                   PCLIPOBJ Clip,
983                   PXLATEOBJ ColorTranslation,
984                   PRECTL DestRect,
985                   PRECTL SourceRect,
986                   ULONG TransparentColor,
987                   ULONG Reserved);
988 BOOL STDCALL
989 DrvUnloadFontFile(IN ULONG FileNumber);
990
991 /*  DDI --> GDI calls  */
992 PVOID STDCALL
993 BRUSHOBJ_pvAllocRbrush(IN PBRUSHOBJ BrushObj,
994                        IN ULONG ObjSize);
995 PVOID STDCALL
996 BRUSHOBJ_pvGetRbrush(IN PBRUSHOBJ BrushObj);
997
998 BOOL STDCALL
999 CLIPOBJ_bEnum(IN PCLIPOBJ ClipObj,
1000               IN ULONG ObjSize,
1001               OUT ULONG *EnumRects);
1002
1003 ULONG STDCALL
1004 CLIPOBJ_cEnumStart(IN PCLIPOBJ ClipObj,
1005                    IN BOOL ShouldDoAll,
1006                    IN ULONG ClipType,
1007                    IN ULONG BuildOrder,
1008                    IN ULONG MaxRects);
1009
1010 PPATHOBJ STDCALL
1011 CLIPOBJ_ppoGetPath(PCLIPOBJ ClipObj);
1012
1013 /*
1014 EngAcquireSemaphore
1015 */
1016
1017 /* FIXME: find correct defines for following symbols  */
1018 #define  FL_ZERO_MEMORY  1
1019
1020 PVOID STDCALL
1021 EngAllocMem(ULONG Flags,
1022             ULONG MemSize,
1023             ULONG Tag);
1024
1025 PVOID STDCALL
1026 EngAllocUserMem(ULONG cj,
1027                 ULONG tag);
1028
1029 BOOL STDCALL
1030 EngAssociateSurface(IN HSURF Surface,
1031                     IN HDEV Dev,
1032                     IN ULONG Hooks);
1033
1034 BOOL STDCALL
1035 EngBitBlt(SURFOBJ *Dest,
1036           SURFOBJ *Source,
1037           SURFOBJ *Mask,
1038           CLIPOBJ *ClipRegion,
1039           XLATEOBJ *ColorTranslation,
1040           RECTL *DestRect,
1041           POINTL *SourcePoint,
1042           POINTL *MaskRect,
1043           BRUSHOBJ *Brush,
1044           POINTL *BrushOrigin,
1045           ROP4 rop4);
1046
1047 /*
1048 EngCheckAbort
1049 EngComputeGlyphSet
1050 */
1051
1052 BOOL STDCALL
1053 EngCopyBits(SURFOBJ *Dest,
1054             SURFOBJ *Source,
1055             CLIPOBJ *Clip,
1056             XLATEOBJ *ColorTranslation,
1057             RECTL *DestRect,
1058             POINTL *SourcePoint);
1059
1060 HBITMAP STDCALL
1061 EngCreateBitmap(IN SIZEL Size,
1062                 IN LONG Width,
1063                 IN ULONG Format,
1064                 IN ULONG Flags,
1065                 IN PVOID Bits);
1066
1067 PCLIPOBJ STDCALL
1068 EngCreateClip(VOID);
1069
1070 HBITMAP STDCALL
1071 EngCreateDeviceBitmap(IN DHSURF Surface,
1072                       IN SIZEL Size,
1073                       IN ULONG Format);
1074
1075 HSURF STDCALL
1076 EngCreateDeviceSurface(IN DHSURF Surface,
1077                        IN SIZEL Size,
1078                        IN ULONG FormatVersion);
1079
1080 /*
1081 EngCreateDriverObj
1082 EngCreateEvent
1083 */
1084
1085 HPALETTE STDCALL
1086 EngCreatePalette(IN ULONG Mode,
1087                  IN ULONG NumColors,
1088                  IN PULONG *Colors,
1089                  IN ULONG Red,
1090                  IN ULONG Green,
1091                  IN ULONG Blue);
1092
1093 /*
1094 EngCreatePath
1095 EngCreateSemaphore
1096 EngCreateWnd
1097 */
1098
1099 VOID STDCALL
1100 EngDebugBreak(VOID);
1101
1102 VOID STDCALL
1103 EngDebugPrint(PCHAR StandardPrefix,
1104               PCHAR DebugMessage,
1105               va_list ArgList);
1106
1107 VOID STDCALL
1108 EngDeleteClip(CLIPOBJ *ClipRegion);
1109
1110 /*
1111 EngDeleteDriverObj
1112 EngDeleteEvent
1113 */
1114
1115 BOOL STDCALL
1116 EngDeletePalette(IN HPALETTE Palette);
1117
1118 /*
1119 EngDeletePath
1120 EngDeleteSemaphore
1121 */
1122
1123 BOOL STDCALL
1124 EngDeleteSurface(IN HSURF Surface);
1125
1126 /*
1127 EngDeleteWnd
1128 */
1129
1130 DWORD STDCALL
1131 EngDeviceIoControl(HANDLE hDevice,
1132                    DWORD dwIoControlCode,
1133                    LPVOID lpInBuffer,
1134                    DWORD nInBufferSize,
1135                    LPVOID lpOutBuffer,
1136                    DWORD nOutBufferSize,
1137                    DWORD *lpBytesReturned);
1138
1139 /*
1140 EngEnumForms
1141 */
1142
1143 BOOL STDCALL
1144 EngEraseSurface(SURFOBJ *Surface,
1145                 RECTL *Rect,
1146                 ULONG iColor);
1147
1148 /*
1149 EngFillPath
1150 EngFindImageProcAddress
1151 EngFindResource
1152 */
1153
1154 VOID STDCALL
1155 EngFreeMem(PVOID Mem);
1156
1157 /*
1158 EngFreeModule
1159 */
1160
1161 VOID STDCALL
1162 EngFreeUserMem(PVOID pv);
1163
1164 /*
1165 EngGetCurrentCodePage
1166 EngGetDriverName
1167 EngGetFileChangeTime
1168 EngGetFilePath
1169 EngGetForm
1170 EngGetLastError
1171 EngGetPrinter
1172 EngGetPrinterData
1173 EngGetPrinterDataFileName
1174 EngGetProcessHandle
1175 EngGetType1FontList
1176 */
1177
1178 BOOL STDCALL
1179 EngLineTo(SURFOBJ *Surface,
1180           CLIPOBJ *Clip,
1181           BRUSHOBJ *Brush,
1182           LONG x1,
1183           LONG y1,
1184           LONG x2,
1185           LONG y2,
1186           RECTL *RectBounds,
1187           MIX mix);
1188
1189 HANDLE STDCALL
1190 EngLoadImage(LPWSTR DriverName);
1191
1192 /*
1193 EngLoadModule
1194 EngLoadModuleForWrite
1195 EngLockDriverObj
1196 */
1197
1198 SURFOBJ * STDCALL
1199 EngLockSurface(IN HSURF Surface);
1200
1201 /*
1202 EngMapEvent
1203 EngMapFontFile
1204 EngMapModule
1205 EngMarkBandingSurface
1206 EngMovePointer
1207 EngMultiByteToUnicodeN
1208 EngMultiByteToWideChar
1209 */
1210
1211 INT STDCALL EngMulDiv(
1212              INT nMultiplicand,
1213              INT nMultiplier,
1214              INT nDivisor);
1215
1216 BOOL STDCALL
1217 EngPaint(IN SURFOBJ *Surface,
1218          IN CLIPOBJ *ClipRegion,
1219          IN BRUSHOBJ *Brush,
1220          IN POINTL *BrushOrigin,
1221          IN MIX  Mix);
1222
1223 /*
1224 EngProbeForRead
1225 EngProbeForReadAndWrite = NTOSKRNL.ProbeForWrite
1226 EngQueryLocalTime
1227 EngQueryPalette
1228 EngQueryPerformanceCounter
1229 EngQueryPerformanceFrequency
1230 EngReleaseSemaphore
1231 EngRestoreFloatingPointState
1232 EngSaveFloatingPointState
1233 EngSecureMem
1234 EngSetEvent
1235 EngSetLastError
1236 EngSetPointerShape
1237 EngSetPointerTag
1238 EngSetPrinterData
1239 EngSort
1240 EngStretchBlt
1241 EngStrokeAndFillPath
1242 EngStrokePath
1243 EngTextOut
1244 */
1245
1246 BOOL STDCALL
1247 EngTransparentBlt(PSURFOBJ Dest,
1248                   PSURFOBJ Source,
1249                   PCLIPOBJ Clip,
1250                   PXLATEOBJ ColorTranslation,
1251                   PRECTL DestRect,
1252                   PRECTL SourceRect,
1253                   ULONG TransparentColor,
1254                   ULONG Reserved);
1255
1256 /*
1257 EngUnicodeToMultiByteN
1258 EngUnloadImage
1259 EngUnlockDriverObj
1260 EngUnlockSurface
1261 EngUnmapEvent
1262 EngUnmapFontFile
1263 EngUnsecureMem = NTOSKRNL.MmUnsecureVirtualMemory
1264 EngWaitForSingleObject
1265 EngWideCharToMultiByte
1266 EngWritePrinter
1267 FLOATOBJ_Add
1268 FLOATOBJ_AddFloat
1269 FLOATOBJ_AddFloatObj
1270 FLOATOBJ_AddLong
1271 FLOATOBJ_Div
1272 FLOATOBJ_DivFloat
1273 FLOATOBJ_DivFloatObj
1274 FLOATOBJ_DivLong
1275 FLOATOBJ_Equal
1276 FLOATOBJ_EqualLong
1277 FLOATOBJ_GetFloat
1278 FLOATOBJ_GetLong
1279 FLOATOBJ_GreaterThan
1280 FLOATOBJ_GreaterThanLong
1281 FLOATOBJ_LessThan
1282 FLOATOBJ_LessThanLong
1283 FLOATOBJ_Mul
1284 FLOATOBJ_MulFloat
1285 FLOATOBJ_MulFloatObj
1286 FLOATOBJ_MulLong
1287 FLOATOBJ_Neg
1288 FLOATOBJ_SetFloat
1289 FLOATOBJ_SetLong
1290 FLOATOBJ_Sub
1291 FLOATOBJ_SubFloat
1292 FLOATOBJ_SubFloatObj
1293 FLOATOBJ_SubLong
1294 */
1295
1296 ULONG FONTOBJ_cGetAllGlyphHandles(IN PFONTOBJ  FontObj,
1297                                   IN HGLYPH  *Glyphs);
1298 ULONG FONTOBJ_cGetGlyphs(IN PFONTOBJ  FontObj,
1299                          IN ULONG  Mode,
1300                          IN ULONG  NumGlyphs,
1301                          IN HGLYPH  *GlyphHandles,
1302                          IN PVOID  *OutGlyphs);
1303 PGAMMA_TABLES FONTOBJ_pGetGammaTables(IN PFONTOBJ  FontObj);
1304 IFIMETRICS *FONTOBJ_pifi(IN PFONTOBJ  FontObj);
1305 PVOID  FONTOBJ_pvTrueTypeFontFile(IN PFONTOBJ  FontObj,
1306                                   IN ULONG  *FileSize);
1307 XFORMOBJ *FONTOBJ_pxoGetXform(IN PFONTOBJ  FontObj);
1308 VOID  FONTOBJ_vGetInfo(IN PFONTOBJ  FontObj,
1309                        IN ULONG  InfoSize,
1310                        OUT PFONTINFO  FontInfo);
1311
1312 /*
1313 HT_ComputeRGBGammaTable
1314 HT_Get8BPPFormatPalette
1315 */
1316
1317 ULONG STDCALL
1318 PALOBJ_cGetColors(PALOBJ *PalObj,
1319                   ULONG Start,
1320                   ULONG Colors,
1321                   ULONG *PaletteEntry);
1322
1323 /*
1324 PATHOBJ_bCloseFigure
1325 PATHOBJ_bEnum
1326 PATHOBJ_bEnumClipLines
1327 PATHOBJ_bMoveTo
1328 PATHOBJ_bPolyBezierTo
1329 PATHOBJ_bPolyLineTo
1330 PATHOBJ_vEnumStart
1331 PATHOBJ_vEnumStartClipLines
1332 PATHOBJ_vGetBounds
1333 RtlAnsiCharToUnicodeChar = NTOSKRNL.RtlAnsiCharToUnicodeChar
1334 RtlMultiByteToUnicodeN = NTOSKRNL.RtlMultiByteToUnicodeN
1335 RtlRaiseException = NTOSKRNL.RtlRaiseException
1336 RtlUnicodeToMultiByteN = NTOSKRNL.RtlUnicodeToMultiByteN
1337 RtlUnicodeToMultiByteSize = NTOSKRNL.RtlUnicodeToMultiByteSize
1338 RtlUnwind = NTOSKRNL.RtlUnwind
1339 RtlUpcaseUnicodeChar = NTOSKRNL.RtlUpcaseUnicodeChar
1340 RtlUpcaseUnicodeToMultiByteN = NTOSKRNL.RtlUpcaseUnicodeToMultiByteN
1341 STROBJ_bEnum
1342 STROBJ_dwGetCodePage
1343 STROBJ_vEnumStart
1344 WNDOBJ_bEnum
1345 WNDOBJ_cEnumStart
1346 WNDOBJ_vSetConsumer
1347 XFORMOBJ_bApplyXform
1348 XFORMOBJ_iGetFloatObjXform
1349 XFORMOBJ_iGetXform
1350 */
1351
1352 ULONG STDCALL
1353 XLATEOBJ_cGetPalette(XLATEOBJ *XlateObj,
1354                      ULONG PalOutType,
1355                      ULONG cPal,
1356                      ULONG *OutPal);
1357
1358 ULONG STDCALL
1359 XLATEOBJ_iXlate(XLATEOBJ *XlateObj,
1360                 ULONG Color);
1361
1362 ULONG * STDCALL
1363 XLATEOBJ_piVector(XLATEOBJ *XlateObj);
1364
1365 #endif
1366