2 * WinDDI.h - definition of the GDI - DDI interface
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"
12 #ifdef WIN32_LEAN_AND_MEAN
13 #undef WIN32_LEAN_AND_MEAN
15 #define WIN32_LEAN_AND_MEAN
19 #include <ddk/ddrawi.h>
28 typedef DWORD PTRDIFF;
31 #define DDI_DRIVER_VERSION_NT4 0x20000
32 #define DDI_DRIVER_VERSION_SP3 0x20003
33 #define DDI_DRIVER_VERSION_NT5 0x30000
34 #define DDI_DRIVER_VERSION_NT5_01 0x30100
36 #define GDI_DRIVER_VERSION 0x4000 /* NT 4 compatibility */
38 typedef DDHAL_DDCALLBACKS *PDD_CALLBACKS;
39 typedef DDHALINFO *PDD_HALINFO;
40 typedef DDHAL_DDPALETTECALLBACKS *PDD_PALETTECALLBACKS;
41 typedef DDHAL_DDSURFACECALLBACKS *PDD_SURFACECALLBACKS;
42 typedef struct _VIDEOMEMORY
55 struct _VMEMHEAP *lpHeap;
58 } VIDEOMEMORY, *PVIDEOMEMORY;
60 typedef struct _FONTINFO
64 ULONG cGlyphsSupported;
69 } FONTINFO, *PFONTINFO;
71 typedef BYTE GAMMA_TABLES[2][256];
72 typedef GAMMA_TABLES *PGAMMA_TABLES;
73 typedef COLORADJUSTMENT *PCOLORADJUSTMENT;
77 #define DDI_DRIVER_VERSION 0x00010000
82 #define XO_TRIVIAL 0x00000001
83 #define XO_TABLE 0x00000002
84 #define XO_TO_MONO 0x00000004
86 #define XO_SRCPALETTE 1
87 #define XO_DESTPALETTE 2
88 #define XO_DESTDCPALETTE 3
90 /* EngCreateBitmap format types */
105 #define BMF_TOPDOWN 0x00000001
106 #define BMF_NOZEROINIT 0x00000002
107 #define BMF_DONTCACHE 0x00000004
108 #define BMF_USERMEM 0x00000008
109 #define BMF_KMSECTION 0x00000010
110 #define BMF_NOTSYSMEM 0x0020
111 #define BMF_WINDOW_BLT 0x0040
112 #define BMF_UMPDMEM 0x0080
113 #define BMF_RESERVED 0xFF00
123 #define TC_RECTANGLES 0
126 #define OC_BANK_CLIP 1
128 #define CT_RECTANGLES 0L
130 #define CD_LEFTWARDS 1L
131 #define CD_UPWARDS 2L
133 /* Options for CLIPOBJ_cEnumStart BuildOrder field */
143 /* Options for CLIPOBJ_cEnumStart Type field */
144 #define CT_RECTANGLE 1
148 #define DCR_HALFTONE 2
150 #define DMMAXDEVICENAME 32
151 #define DMMAXFORMNAME 32
153 #define DM_DEFAULT 0x00000001
154 #define DM_MONOCHROME 0x00000002
156 #define ED_ABORTDOC 0x00000001
164 #define FM_INFO_TECH_TRUETYPE 0x00000001
165 #define FM_INFO_TECH_BITMAP 0x00000002
166 #define FM_INFO_TECH_STROKE 0x00000004
167 #define FM_INFO_TECH_OUTLINE_NOT_TRUETYPE 0x00000008
168 #define FM_INFO_ARB_XFORMS 0x00000010
169 #define FM_INFO_1BPP 0x00000020
170 #define FM_INFO_4BPP 0x00000040
171 #define FM_INFO_8BPP 0x00000080
172 #define FM_INFO_16BPP 0x00000100
173 #define FM_INFO_24BPP 0x00000200
174 #define FM_INFO_32BPP 0x00000400
175 #define FM_INFO_INTEGER_WIDTH 0x00000800
176 #define FM_INFO_CONSTANT_WIDTH 0x00001000
177 #define FM_INFO_NOT_CONTIGUOUS 0x00002000
178 #define FM_INFO_PID_EMBEDDED 0x00004000
179 #define FM_INFO_RETURNS_OUTLINES 0x00008000
180 #define FM_INFO_RETURNS_STROKES 0x00010000
181 #define FM_INFO_RETURNS_BITMAPS 0x00020000
182 #define FM_INFO_UNICODE_COMPLIANT 0x00040000
183 #define FM_INFO_RIGHT_HANDED 0x00080000
184 #define FM_INFO_INTEGRAL_SCALING 0x00100000
185 #define FM_INFO_90DEGREE_ROTATIONS 0x00200000
186 #define FM_INFO_OPTICALLY_FIXED_PITCH 0x00400000
187 #define FM_INFO_DO_NOT_ENUMERATE 0x00800000
188 #define FM_INFO_ISOTROPIC_SCALING_ONLY 0x01000000
189 #define FM_INFO_ANISOTROPIC_SCALING_ONLY 0x02000000
190 #define FM_INFO_TID_EMBEDDED 0x04000000
191 #define FM_INFO_FAMILY_EQUIV 0x08000000
192 #define FM_INFO_DBCS_FIXED_PITCH 0x10000000
193 #define FM_INFO_NONNEGATIVE_AC 0x20000000
194 #define FM_INFO_IGNORE_TC_RA_ABLE 0x40000000
195 #define FM_INFO_TECH_TYPE1 0x80000000
197 #define FM_SEL_ITALIC 0x00000001
198 #define FM_SEL_UNDERSCORE 0x00000002
199 #define FM_SEL_NEGATIVE 0x00000004
200 #define FM_SEL_OUTLINED 0x00000008
201 #define FM_SEL_STRIKEOUT 0x00000010
202 #define FM_SEL_BOLD 0x00000020
203 #define FM_SEL_REGULAR 0x00000040
205 #define FM_TYPE_LICENSED 0x00000002
206 #define FM_READONLY_EMBED 0x00000004
207 #define FM_EDITABLE_EMBED 0x00000008
208 #define FM_NO_EMBEDDING 0x00000002
210 #define FO_TYPE_RASTER RASTER_FONTTYPE
211 #define FO_TYPE_DEVICE DEVICE_FONTTYPE
212 #define FO_TYPE_TRUETYPE TRUETYPE_FONTTYPE
213 #define FO_SIM_BOLD 0x00002000
214 #define FO_SIM_ITALIC 0x00004000
215 #define FO_EM_HEIGHT 0x00008000
216 #define FO_GRAY16 0x00010000
217 #define FO_NOGRAY16 0x00020000
218 #define FO_NOHINTS 0x00040000
219 #define FO_NO_CHOICE 0x00080000
223 FP_ALTERNATEMODE = 1,
227 typedef struct _FD_GLYPHATTR {
232 } FD_GLYPHATTR, *PFD_GLYPHATTR;
241 /* Allowed values for GDIINFO.ulPrimaryOrder. */
243 #define PRIMARY_ORDER_ABC 0
244 #define PRIMARY_ORDER_ACB 1
245 #define PRIMARY_ORDER_BAC 2
246 #define PRIMARY_ORDER_BCA 3
247 #define PRIMARY_ORDER_CBA 4
248 #define PRIMARY_ORDER_CAB 5
250 /* Allowed values for GDIINFO.ulHTPatternSize. */
252 #define HT_PATSIZE_2x2 0
253 #define HT_PATSIZE_2x2_M 1
254 #define HT_PATSIZE_4x4 2
255 #define HT_PATSIZE_4x4_M 3
256 #define HT_PATSIZE_6x6 4
257 #define HT_PATSIZE_6x6_M 5
258 #define HT_PATSIZE_8x8 6
259 #define HT_PATSIZE_8x8_M 7
260 #define HT_PATSIZE_10x10 8
261 #define HT_PATSIZE_10x10_M 9
262 #define HT_PATSIZE_12x12 10
263 #define HT_PATSIZE_12x12_M 11
264 #define HT_PATSIZE_14x14 12
265 #define HT_PATSIZE_14x14_M 13
266 #define HT_PATSIZE_16x16 14
267 #define HT_PATSIZE_16x16_M 15
268 #define HT_PATSIZE_MAX_INDEX HT_PATSIZE_16x16_M
269 #define HT_PATSIZE_DEFAULT HT_PATSIZE_4x4_M
271 /* Allowed values for GDIINFO.ulHTOutputFormat. */
273 #define HT_FORMAT_1BPP 0
274 #define HT_FORMAT_4BPP 2
275 #define HT_FORMAT_4BPP_IRGB 3
276 #define HT_FORMAT_8BPP 4
277 #define HT_FORMAT_16BPP 5
278 #define HT_FORMAT_24BPP 6
279 #define HT_FORMAT_32BPP 7
281 /* Allowed values for GDIINFO.flHTFlags. */
283 #define HT_FLAG_SQUARE_DEVICE_PEL 0x00000001
284 #define HT_FLAG_HAS_BLACK_DYE 0x00000002
285 #define HT_FLAG_ADDITIVE_PRIMS 0x00000004
286 #define HT_FLAG_OUTPUT_CMY 0x00000100
288 #define GCAPS_BEZIERS 0x00000001
289 #define GCAPS_GEOMETRICWIDE 0x00000002
290 #define GCAPS_ALTERNATEFILL 0x00000004
291 #define GCAPS_WINDINGFILL 0x00000008
292 #define GCAPS_HALFTONE 0x00000010
293 #define GCAPS_COLOR_DITHER 0x00000020
294 #define GCAPS_HORIZSTRIKE 0x00000040
295 #define GCAPS_VERTSTRIKE 0x00000080
296 #define GCAPS_OPAQUERECT 0x00000100
297 #define GCAPS_VECTORFONT 0x00000200
298 #define GCAPS_MONO_DITHER 0x00000400
299 #define GCAPS_ASYNCCHANGE 0x00000800
300 #define GCAPS_ASYNCMOVE 0x00001000
301 #define GCAPS_DONTJOURNAL 0x00002000
302 #define GCAPS_DIRECTDRAW 0x00004000
303 #define GCAPS_ARBRUSHOPAQUE 0x00008000
304 #define GCAPS_PANNING 0x00010000
305 #define GCAPS_HIGHRESTEXT 0x00040000
306 #define GCAPS_PALMANAGED 0x00080000
307 #define GCAPS_DITHERONREALIZE 0x00200000
308 #define GCAPS_NO64BITMEMACCESS 0x00400000
309 #define GCAPS_FORCEDITHER 0x00800000
310 #define GCAPS_GRAY16 0x01000000
312 /* EngAssocateSurface hook flags */
313 #define HOOK_BITBLT 0x00000001
314 #define HOOK_STRETCHBLT 0x00000002
315 #define HOOK_PLGBLT 0x00000004
316 #define HOOK_TEXTOUT 0x00000008
317 #define HOOK_PAINT 0x00000010
318 #define HOOK_STROKEPATH 0x00000020
319 #define HOOK_FILLPATH 0x00000040
320 #define HOOK_STROKEANDFILLPATH 0x00000080
321 #define HOOK_LINETO 0x00000100
322 #define HOOK_COPYBITS 0x00000400
323 #define HOOK_SYNCHRONIZE 0x00001000
324 #define HOOK_SYNCHRONIZEACCESS 0x00004000
325 #define HOOK_TRANSPARENTBLT 0x00008000
330 INDEX_DrvCompletePDEV,
331 INDEX_DrvDisablePDEV,
332 INDEX_DrvEnableSurface,
333 INDEX_DrvDisableSurface,
335 INDEX_DrvResetPDEV = 7,
336 INDEX_DrvDisableDriver,
337 INDEX_DrvCreateDeviceBitmap = 10,
338 INDEX_DrvDeleteDeviceBitmap,
339 INDEX_DrvRealizeBrush,
340 INDEX_DrvDitherColor,
343 INDEX_DrvStrokeAndFillPath,
348 INDEX_DrvSetPalette = 22,
353 INDEX_DrvQueryFontTree,
354 INDEX_DrvQueryFontData,
355 INDEX_DrvSetPointerShape,
356 INDEX_DrvMovePointer,
362 INDEX_DrvGetGlyphMode = 37,
363 INDEX_DrvSynchronize,
364 INDEX_DrvSaveScreenBits = 40,
367 INDEX_DrvDestroyFont,
368 INDEX_DrvQueryFontCaps,
369 INDEX_DrvLoadFontFile,
370 INDEX_DrvUnloadFontFile,
371 INDEX_DrvFontManagement,
372 INDEX_DrvQueryTrueTypeTable,
373 INDEX_DrvQueryTrueTypeOutline,
374 INDEX_DrvGetTrueTypeFile,
375 INDEX_DrvQueryFontFile,
376 INDEX_DrvMovePanning,
377 INDEX_DrvQueryAdvanceWidths,
378 INDEX_DrvSetPixelFormat,
379 INDEX_DrvDescribePixelFormat,
380 INDEX_DrvSwapBuffers,
381 INDEX_DrvStartBanding,
383 INDEX_DrvGetDirectDrawInfo,
384 INDEX_DrvEnableDirectDraw,
385 INDEX_DrvDisableDirectDraw,
386 INDEX_DrvQuerySpoolType,
387 INDEX_DrvIcmCreateColorTransform,
388 INDEX_DrvIcmDeleteColorTransform,
389 INDEX_DrvIcmCheckBitmapBits,
390 INDEX_DrvIcmSetDeviceGammaRamp,
391 INDEX_DrvGradientFill,
392 INDEX_DrvStretchBltROP,
395 INDEX_DrvSynthesizeFont,
396 INDEX_DrvGetSynthesizedFontFiles,
397 INDEX_DrvTransparentBlt,
398 INDEX_DrvQueryPerBandInfo,
399 INDEX_DrvQueryDeviceSupport,
408 INDEX_DrvQueryGlyphAttrs,
410 INDEX_DrvSynchronizeSurface,
411 INDEX_DrvResetDevice,
415 INDEX_DrvDeriveSurface = 85,
419 /* EngCreatePalette mode types */
420 #define PAL_INDEXED 0x00000001
421 #define PAL_BITFIELDS 0x00000002
422 #define PAL_RGB 0x00000004
423 #define PAL_BGR 0x00000008
425 enum _QUERY_ADVANCE_WIDTH_TYPES
431 #define QC_OUTLINES 0x00000001
432 #define QC_1BIT 0x00000002
433 #define QC_4BIT 0x00000004
441 #define RB_DITHERCOLOR 0x80000000
447 SPS_ACCEPT_NOEXCLUDE,
451 #define SPS_CHANGE 0x00000001L
452 #define SPS_ASYNCCHANGE 0x00000002L
453 #define SPS_ANIMATESTART 0x00000004L
454 #define SPS_ANIMATEUPDATE 0x00000008L
467 #define WO_RGN_CLIENT_DELTA 0x00000001
468 #define WO_RGN_CLIENT 0x00000002
469 #define WO_RGN_SURFACE_DELTA 0x00000004
470 #define WO_RGN_SURFACE 0x00000008
471 #define WO_RGN_UPDATE_ALL 0x00000010
473 #define WOC_RGN_CLIENT_DELTA 0x00000001
474 #define WOC_RGN_CLIENT 0x00000002
475 #define WOC_RGN_SURFACE_DELTA 0x00000004
476 #define WOC_RGN_SURFACE 0x00000008
477 #define WOC_CHANGED 0x00000010
478 #define WOC_DELETE 0x00000020
481 typedef HANDLE HGLYPH;
482 typedef HANDLE HSURF;
483 typedef HANDLE DHPDEV;
484 typedef HANDLE DHSURF;
485 typedef ULONG (*PFN)(VOID);
488 typedef struct _DRVFN
495 * DRVENABLEDATA - this structure is passed to the DDI from the GDI
496 * in the function DrvEnableDriver to determine driver parameters.
499 typedef struct _DRVENABLEDATA
501 ULONG iDriverVersion;
504 } DRVENABLEDATA, *PDRVENABLEDATA;
508 typedef struct _CIECHROMA
513 } CIECHROMA, *PCIECHROMA;
515 typedef struct _COLORINFO
523 CIECHROMA AlignmentWhite;
527 LDECI4 MagentaInCyanDye;
528 LDECI4 YellowInCyanDye;
529 LDECI4 CyanInMagentaDye;
530 LDECI4 YellowInMagentaDye;
531 LDECI4 CyanInYellowDye;
532 LDECI4 MagentaInYellowDye;
533 } COLORINFO, *PCOLORINFO;
535 typedef struct _DEVINFO
537 ULONG flGraphicsCaps;
538 LOGFONTW lfDefaultFont;
539 LOGFONTW lfAnsiVarFont;
540 LOGFONTW lfAnsiFixFont;
545 HPALETTE hpalDefault;
546 } DEVINFO, *PDEVINFO;
548 typedef struct _GDIINFO
572 POINTL ptlPhysOffset;
576 ULONG ulDevicePelsDPI;
577 ULONG ulPrimaryOrder;
578 ULONG ulHTPatternSize;
579 ULONG ulHTOutputFormat;
582 ULONG ulBltAlignment;
583 ULONG ulPanningHorzRes;
584 ULONG ulPanningVertRes;
585 } GDIINFO, *PGDIINFO;
587 typedef struct _BRUSHOBJ
592 /* remainder of fields are for GDI internal use */
594 } BRUSHOBJ, *PBRUSHOBJ;
596 typedef struct _CLIPOBJ
604 } CLIPOBJ, *PCLIPOBJ;
606 typedef struct _ENUMRECTS
610 } ENUMRECTS, *PENUMRECTS;
612 typedef struct _BLENDOBJ
614 BLENDFUNCTION BlendFunction;
615 }BLENDOBJ,*PBLENDOBJ;
622 PBYTE pvCurrentRecord;
623 } EMFINFO, *PEMFINFO;
625 typedef struct _FONTOBJ
637 } FONTOBJ, *PFONTOBJ;
639 typedef struct _IFIMETRICS
643 PTRDIFF dpwszFamilyName;
644 PTRDIFF dpwszStyleName;
645 PTRDIFF dpwszFaceName;
646 PTRDIFF dpwszUniqueName;
653 BYTE jWinPitchAndFamily;
661 WORD fwdWinDescender;
663 WORD fwdMacDescender;
665 WORD fwdTypoAscender;
666 WORD fwdTypoDescender;
668 WORD fwdAveCharWidth;
672 WORD fwdSubScriptXSize;
673 WORD fwdSubScriptYSize;
674 WORD fwdSubScriptXOffset;
675 WORD fwdSubScriptYOffset;
676 WORD fwdSuperScriptXSize;
677 WORD fwdSuperScriptYSize;
678 WORD fwdSuperScriptXOffset;
679 WORD fwdSuperScriptYOffset;
680 WORD fwdUnderscoreSize;
681 WORD fwdUnderscorePosition;
682 WORD fwdStrikeoutSize;
683 WORD fwdStrikeoutPosition;
698 ULONG ulPanoseCulture;
700 } IFIMETRICS, *PIFIMETRICS;
702 #define NB_RESERVED_COLORS 20 /* number of fixed colors in system palette */
704 typedef struct _XLATEOBJ
712 } XLATEOBJ, *PXLATEOBJ;
714 typedef struct _PALOBJ
717 PXLATEOBJ logicalToSystem;
719 PLOGPALETTE logpalette; /* _MUST_ be the last field */
722 typedef struct _PATHOBJ
726 } PATHOBJ, *PPATHOBJ;
728 typedef struct _SURFOBJ
743 } SURFOBJ, *PSURFOBJ;
745 typedef struct _WNDOBJ
752 typedef VOID (CALLBACK * WNDOBJCHANGEPROC)(PWNDOBJ WndObj, ULONG Flags);
754 typedef struct _XFORMOBJ
757 } XFORMOBJ, *PXFORMOBJ;
759 typedef struct _GLYPHBITS
766 typedef union _GLYPHDEF
772 typedef struct _POINTQF
776 } POINTQF, *PPOINTQF;
778 typedef struct _GLYPHDATA {
788 } GLYPHDATA, *PGLYPHDATA;
790 typedef struct _GLYPHPOS
795 } GLYPHPOS, *PGLYPHPOS;
797 typedef struct _STROBJ
807 typedef struct _WCRUN
814 typedef struct _FD_GLYPHSET
818 ULONG cGlyphsSupported;
821 } FD_GLYPHSET, *PFD_GLYPHSET;
825 typedef BOOL (CALLBACK * FREEOBJPROC) (struct _DRIVEROBJ* pDriverObj);
827 typedef struct _DRIVEROBJ
830 FREEOBJPROC pFreeProc;
835 typedef struct _TYPE1_FONT
842 typedef struct _ENG_TIME_FIELDS
850 USHORT usMilliseconds;
852 } ENG_TIME_FIELDS, *PENG_TIME_FIELDS;
854 typedef struct _LINEATTRS
863 FLOAT_LONG elStyleState;
864 } LINEATTRS, *PLINEATTRS;
866 typedef struct _FLOATOBJ
870 } FLOATOBJ, *PFLOATOBJ;
872 typedef struct _POINTFIX
878 typedef struct _PATHDATA
883 } PATHDATA, *PPATHDATA;
891 typedef struct _CLIPLINE
898 } CLIPLINE, *PCLIPLINE;
900 typedef struct _RECTFX
916 } FLOATOBJ_XFORM, *PFLOATOBJ_XFORM, FAR *LPFLOATOBJ_XFORM;
918 typedef struct _XFORML
929 * Functions Prefixed with Drv are calls made from GDI to DDI, and
930 * everything else are calls made from DDI to GDI. DDI is
931 * not allowed to make calls to any other kernel or user modules.
934 /* GDI --> DDI calls */
936 DrvAssertMode(IN DHPDEV PDev,
937 IN BOOL ShouldEnable);
940 DrvBitBlt(IN PSURFOBJ DestSurface,
941 IN PSURFOBJ SrcSurface,
942 IN PSURFOBJ MaskSurface,
944 IN PXLATEOBJ XLateObj,
946 IN PPOINTL SrcPointL,
947 IN PPOINTL MaskPointL,
948 IN PBRUSHOBJ BrushObj,
949 IN PPOINTL BrushPointL,
952 DrvCompletePDEV(IN DHPDEV PDev,
955 DrvCopyBits(OUT PSURFOBJ DestSurface,
956 IN PSURFOBJ SrcSurface,
958 IN PXLATEOBJ XLateObj,
960 IN PPOINTL SrcPointL);
962 DrvCreateDeviceBitmap(IN DHPDEV DPev,
966 DrvDeleteDeviceBitmap(IN DHSURF Surface);
968 DrvDescribePixelFormat(IN DHPDEV DPev,
970 IN ULONG DescriptorSize,
971 OUT PPIXELFORMATDESCRIPTOR PFD);
973 DrvDestroyFont(IN PFONTOBJ FontObj);
975 DrvDisableDirectDraw(IN DHPDEV PDev);
977 DrvDisableDriver(VOID);
979 DrvDisablePDEV(IN DHPDEV PDev);
981 DrvDisableSurface(IN DHPDEV PDev);
983 DrvDitherColor(IN DHPDEV DPev,
986 OUT PULONG DitherBits);
988 DrvDrawEscape(IN PSURFOBJ SurfObj,
993 IN PVOID *InputData);
995 DrvEnableDirectDraw(IN DHPDEV PDev,
996 IN PDD_CALLBACKS Callbacks,
997 IN PDD_SURFACECALLBACKS SurfaceCallbacks,
998 IN PDD_PALETTECALLBACKS PaletteCallbacks);
1000 DrvEnableDriver(IN ULONG Version,
1002 OUT PDRVENABLEDATA DED);
1004 DrvEnablePDEV(IN DEVMODEW *DM,
1005 IN LPWSTR LogAddress,
1006 IN ULONG PatternCount,
1007 OUT HSURF *SurfPatterns,
1008 IN ULONG GDIInfoSize,
1009 OUT GDIINFO *GDIInfo,
1010 IN ULONG DevInfoSize,
1011 OUT DEVINFO *DevInfo,
1012 IN LPWSTR DevDataFile,
1013 IN LPWSTR DeviceName,
1016 DrvEnableSurface(IN DHPDEV PDev);
1018 DrvEndDoc(IN PSURFOBJ SurfObj,
1021 DrvEscape(IN PSURFOBJ SurfObj,
1024 IN PVOID *InputData,
1025 IN ULONG OutputSize,
1026 OUT PVOID *OutputData);
1028 DrvFillPath(IN PSURFOBJ SurfObj,
1029 IN PPATHOBJ PathObj,
1030 IN PCLIPOBJ ClipObj,
1031 IN PBRUSHOBJ BrushObj,
1032 IN PPOINTL BrushOrg,
1036 DrvFontManagement(IN PSURFOBJ SurfObj,
1037 IN PFONTOBJ FontObj,
1041 IN ULONG OutputSize,
1042 OUT PVOID OutputData);
1044 DrvFree(IN PVOID Obj,
1047 DrvGetDirectDrawInfo(IN DHPDEV PDev,
1048 IN PDD_HALINFO HalInfo,
1050 IN PVIDEOMEMORY List,
1051 IN PDWORD NumFourCCCodes,
1054 DrvGetGlyphMode(IN DHPDEV DPev,
1055 IN PFONTOBJ FontObj);
1057 DrvGetModes(IN HANDLE Driver,
1061 DrvGetTrueTypeFile(IN ULONG FileNumber,
1064 DrvLineTo(IN PSURFOBJ SurfObj,
1065 IN PCLIPOBJ ClipObj,
1066 IN PBRUSHOBJ BrushObj,
1074 DrvLoadFontFile(IN ULONG FileNumber,
1079 DrvMovePointer(IN PSURFOBJ SurfObj,
1084 DrvNextBand(IN PSURFOBJ SurfObj,
1085 OUT PPOINTL PointL);
1087 DrvPaint(IN PSURFOBJ SurfObj,
1088 IN PCLIPOBJ ClipObj,
1089 IN PBRUSHOBJ BrushObj,
1090 IN PPOINTL BrushOrg,
1093 DrvQueryAdvanceWidths(IN DHPDEV DPev,
1094 IN PFONTOBJ FontObj,
1098 IN ULONG NumGlyphs);
1100 DrvQueryFont(IN DHPDEV PDev,
1101 IN ULONG FileNumber,
1103 IN PULONG Identifier);
1105 DrvQueryFontCaps(IN ULONG CapsSize,
1106 OUT PULONG CapsData);
1108 DrvQueryFontData(IN DHPDEV DPev,
1109 IN PFONTOBJ FontObj,
1112 IN PGLYPHDATA GlyphData,
1113 IN PVOID DataBuffer,
1114 IN ULONG BufferSize);
1116 DrvQueryFontFile(IN ULONG FileNumber,
1121 DrvQueryFontTree(IN DHPDEV PDev,
1122 IN ULONG FileNumber,
1127 DrvQuerySpoolType(DHPDEV PDev,
1130 DrvQueryTrueTypeOutline(IN DHPDEV PDev,
1131 IN PFONTOBJ FontObj,
1133 IN BOOL MetricsOnly,
1134 IN PGLYPHDATA GlyphData,
1136 OUT PTTPOLYGONHEADER Polygons);
1138 DrvQueryTrueTypeTable(IN ULONG FileNumber,
1145 DrvRealizeBrush(IN PBRUSHOBJ BrushObj,
1146 IN PSURFOBJ TargetSurface,
1147 IN PSURFOBJ PatternSurface,
1148 IN PSURFOBJ MaskSurface,
1149 IN PXLATEOBJ XLateObj,
1152 DrvResetPDEV(IN DHPDEV PDevOld,
1155 DrvSaveScreenBits(IN PSURFOBJ SurfObj,
1160 DrvSendPage(IN PSURFOBJ SurfObj);
1162 DrvSetPalette(IN DHPDEV PDev,
1163 IN PPALOBJ PaletteObj,
1166 IN ULONG NumColors);
1168 DrvSetPointerShape(IN PSURFOBJ SurfObj,
1169 IN PSURFOBJ MaskSurface,
1170 IN PSURFOBJ ColorSurface,
1171 IN PXLATEOBJ XLateObj,
1179 DrvStartBanding(IN PSURFOBJ SurfObj,
1182 DrvStartDoc(IN PSURFOBJ SurfObj,
1186 DrvStartPage(IN PSURFOBJ SurfObj);
1188 DrvStretchBlt(IN PSURFOBJ DestSurface,
1189 IN PSURFOBJ SrcSurface,
1190 IN PSURFOBJ MaskSurface,
1191 IN PCLIPOBJ ClipObj,
1192 IN PXLATEOBJ XLateObj,
1193 IN PCOLORADJUSTMENT CA,
1200 DrvStrokeAndFillPath(IN PSURFOBJ SurfObj,
1201 IN PPATHOBJ PathObj,
1202 IN PCLIPOBJ ClipObj,
1203 IN PXFORMOBJ XFormObj,
1204 IN PBRUSHOBJ StrokeBrush,
1205 IN PLINEATTRS LineAttrs,
1206 IN PBRUSHOBJ FillBrush,
1207 IN PPOINTL BrushOrg,
1211 DrvStrokePath(IN PSURFOBJ SurfObj,
1212 IN PPATHOBJ PathObj,
1213 IN PCLIPOBJ PClipObj,
1214 IN PXFORMOBJ XFormObj,
1215 IN PBRUSHOBJ BrushObj,
1216 IN PPOINTL BrushOrg,
1217 IN PLINEATTRS LineAttrs,
1220 DrvSynchronize(IN DHPDEV PDev,
1223 DrvTextOut(IN PSURFOBJ SurfObj,
1225 IN PFONTOBJ FontObj,
1226 IN PCLIPOBJ ClipObj,
1227 IN PRECTL ExtraRect,
1228 IN PRECTL OpaqueRect,
1229 IN PBRUSHOBJ ForegroundBrush,
1230 IN PBRUSHOBJ OpaqueBrush,
1231 IN PPOINTL OrgPoint,
1234 DrvTransparentBlt(PSURFOBJ Dest,
1237 PXLATEOBJ ColorTranslation,
1240 ULONG TransparentColor,
1243 DrvUnloadFontFile(IN ULONG FileNumber);
1245 /* DDI --> GDI calls */
1247 BRUSHOBJ_pvAllocRbrush(IN PBRUSHOBJ BrushObj,
1250 BRUSHOBJ_pvGetRbrush(IN PBRUSHOBJ BrushObj);
1253 CLIPOBJ_bEnum(IN PCLIPOBJ ClipObj,
1255 OUT ULONG *EnumRects);
1258 CLIPOBJ_cEnumStart(IN PCLIPOBJ ClipObj,
1259 IN BOOL ShouldDoAll,
1261 IN ULONG BuildOrder,
1265 CLIPOBJ_ppoGetPath(PCLIPOBJ ClipObj);
1267 #define FL_ZERO_MEMORY 1
1268 #define FL_NONPAGED_MEMORY 2
1271 EngAllocMem(ULONG Flags,
1276 EngAllocUserMem(ULONG cj,
1280 EngAssociateSurface(IN HSURF Surface,
1285 EngBitBlt(SURFOBJ *Dest,
1288 CLIPOBJ *ClipRegion,
1289 XLATEOBJ *ColorTranslation,
1291 POINTL *SourcePoint,
1294 POINTL *BrushOrigin,
1302 EngCopyBits(SURFOBJ *Dest,
1305 XLATEOBJ *ColorTranslation,
1307 POINTL *SourcePoint);
1310 EngCreateBitmap(IN SIZEL Size,
1317 EngCreateClip(VOID);
1320 EngCreateDeviceBitmap(IN DHSURF Surface,
1325 EngCreateDeviceSurface(IN DHSURF Surface,
1327 IN ULONG FormatVersion);
1335 EngCreatePalette(IN ULONG Mode,
1344 EngCreateSemaphore ( VOID );
1348 EngAcquireSemaphore ( IN HSEMAPHORE hsem );
1352 EngReleaseSemaphore ( IN HSEMAPHORE hsem );
1356 EngDeleteSemaphore ( IN HSEMAPHORE hsem );
1360 EngIsSemaphoreOwned ( IN HSEMAPHORE hsem );
1364 EngIsSemaphoreOwnedByCurrentThread ( IN HSEMAPHORE hsem );
1373 EngDebugBreak(VOID);
1376 EngDebugPrint(PCHAR StandardPrefix,
1381 EngDeleteClip(CLIPOBJ *ClipRegion);
1389 EngDeletePalette(IN HPALETTE Palette);
1392 EngDeleteSurface(IN HSURF Surface);
1399 EngDeviceIoControl(HANDLE hDevice,
1400 DWORD dwIoControlCode,
1402 DWORD nInBufferSize,
1404 DWORD nOutBufferSize,
1405 DWORD *lpBytesReturned);
1412 EngEraseSurface(SURFOBJ *Surface,
1417 EngFindImageProcAddress
1422 EngFreeMem(PVOID Mem);
1429 EngFreeUserMem(PVOID pv);
1432 EngGetCurrentCodePage(OUT PUSHORT OemCodePage,
1433 OUT PUSHORT AnsiCodePage);
1436 EngGetFileChangeTime
1447 EngLineTo(SURFOBJ *Surface,
1458 EngLoadImage(LPWSTR DriverName);
1461 EngLoadModuleForWrite
1466 EngLockSurface(IN HSURF Surface);
1476 EngMulDiv(IN INT nMultiplicand,
1481 EngMultiByteToUnicodeN(OUT LPWSTR UnicodeString,
1482 IN ULONG MaxBytesInUnicodeString,
1483 OUT PULONG BytesInUnicodeString,
1484 IN PCHAR MultiByteString,
1485 IN ULONG BytesInMultiByteString);
1488 EngPaint(IN SURFOBJ *Surface,
1489 IN CLIPOBJ *ClipRegion,
1491 IN POINTL *BrushOrigin,
1496 EngProbeForReadAndWrite = NTOSKRNL.ProbeForWrite
1499 EngQueryPerformanceCounter
1500 EngQueryPerformanceFrequency
1501 EngRestoreFloatingPointState
1502 EngSaveFloatingPointState
1511 typedef int CDECL (*SORTCOMP)(const void *Elem1, const void *Elem2);
1514 EngSort(IN OUT PBYTE Buf, IN ULONG ElemSize, IN ULONG ElemCount, IN SORTCOMP CompFunc);
1517 EngStrokeAndFillPath
1523 EngTransparentBlt(IN PSURFOBJ Dest,
1526 IN PXLATEOBJ ColorTranslation,
1528 IN PRECTL SourceRect,
1529 IN ULONG TransparentColor,
1533 EngUnicodeToMultiByteN(OUT PCHAR MultiByteString,
1534 IN ULONG MaxBytesInMultiByteString,
1535 OUT PULONG BytesInMultiByteString,
1536 IN PWSTR UnicodeString,
1537 IN ULONG BytesInUnicodeString);
1544 EngUnsecureMem = NTOSKRNL.MmUnsecureVirtualMemory
1545 EngWaitForSingleObject
1546 EngWideCharToMultiByte
1550 FLOATOBJ_AddFloatObj
1554 FLOATOBJ_DivFloatObj
1560 FLOATOBJ_GreaterThan
1561 FLOATOBJ_GreaterThanLong
1563 FLOATOBJ_LessThanLong
1566 FLOATOBJ_MulFloatObj
1573 FLOATOBJ_SubFloatObj
1579 FONTOBJ_cGetAllGlyphHandles(IN PFONTOBJ FontObj,
1584 FONTOBJ_cGetGlyphs(IN PFONTOBJ FontObj,
1587 IN HGLYPH *GlyphHandles,
1588 IN PVOID *OutGlyphs);
1592 FONTOBJ_pGetGammaTables(IN PFONTOBJ FontObj);
1596 FONTOBJ_pifi(IN PFONTOBJ FontObj);
1600 FONTOBJ_pvTrueTypeFontFile(IN PFONTOBJ FontObj,
1601 IN ULONG *FileSize);
1605 FONTOBJ_pxoGetXform(IN PFONTOBJ FontObj);
1609 FONTOBJ_vGetInfo(IN PFONTOBJ FontObj,
1611 OUT PFONTINFO FontInfo);
1614 HT_ComputeRGBGammaTable
1615 HT_Get8BPPFormatPalette
1620 PALOBJ_cGetColors(PALOBJ *PalObj,
1623 ULONG *PaletteEntry);
1626 PATHOBJ_bCloseFigure
1627 PATHOBJ_bEnumClipLines
1629 PATHOBJ_bPolyBezierTo
1632 PATHOBJ_vEnumStartClipLines
1633 RtlAnsiCharToUnicodeChar = NTOSKRNL.RtlAnsiCharToUnicodeChar
1634 RtlMultiByteToUnicodeN = NTOSKRNL.RtlMultiByteToUnicodeN
1635 RtlRaiseException = NTOSKRNL.RtlRaiseException
1636 RtlUnicodeToMultiByteN = NTOSKRNL.RtlUnicodeToMultiByteN
1637 RtlUnicodeToMultiByteSize = NTOSKRNL.RtlUnicodeToMultiByteSize
1638 RtlUnwind = NTOSKRNL.RtlUnwind
1639 RtlUpcaseUnicodeChar = NTOSKRNL.RtlUpcaseUnicodeChar
1640 RtlUpcaseUnicodeToMultiByteN = NTOSKRNL.RtlUpcaseUnicodeToMultiByteN
1642 STROBJ_dwGetCodePage
1647 XFORMOBJ_bApplyXform
1648 XFORMOBJ_iGetFloatObjXform
1653 XLATEOBJ_cGetPalette(XLATEOBJ *XlateObj,
1659 XLATEOBJ_iXlate(XLATEOBJ *XlateObj,
1663 XLATEOBJ_piVector(XLATEOBJ *XlateObj);
1666 BRUSHOBJ_hGetColorTransform(BRUSHOBJ *pbo);
1668 BRUSHOBJ_ulGetBrushColor(BRUSHOBJ *pbo);
1670 EngAlphaBlend(SURFOBJ *psoDest,SURFOBJ *psoSrc,CLIPOBJ *pco,XLATEOBJ *pxlo,RECTL *prclDest,RECTL *prclSrc,BLENDOBJ *pBlendObj);
1672 EngCheckAbort(SURFOBJ *pso);
1673 FD_GLYPHSET* STDCALL
1674 EngComputeGlyphSet(INT nCodePage,INT nFirstChar,INT cChars);
1676 EngDeletePath(PATHOBJ *ppo);
1678 EngFillPath(SURFOBJ *pso,PATHOBJ *ppo,CLIPOBJ *pco,BRUSHOBJ *pbo,POINTL *pptlBrushOrg,MIX mix,FLONG flOptions);
1680 EngFindResource(HANDLE h,int iName,int iType,PULONG pulSize);
1682 EngFreeModule(HANDLE h);
1684 EngGetDriverName(HDEV hdev);
1686 EngGetPrinterDataFileName(HDEV hdev);
1688 EngGradientFill(SURFOBJ *psoDest,CLIPOBJ *pco,XLATEOBJ *pxlo,TRIVERTEX *pVertex,ULONG nVertex,PVOID pMesh,ULONG nMesh,RECTL *prclExtents,POINTL *pptlDitherOrg,ULONG ulMode);
1690 EngLoadModule(LPWSTR pwsz);
1692 EngMarkBandingSurface(HSURF hsurf);
1694 EngMultiByteToWideChar(UINT CodePage,LPWSTR WideCharString,INT BytesInWideCharString,LPSTR MultiByteString,INT BytesInMultiByteString);
1696 EngPlgBlt(SURFOBJ *psoTrg,SURFOBJ *psoSrc,SURFOBJ *psoMsk,CLIPOBJ *pco,XLATEOBJ *pxlo,COLORADJUSTMENT *pca,POINTL *pptlBrushOrg,POINTFIX *pptfx,RECTL *prcl,POINTL *pptl,ULONG iMode);
1698 EngQueryEMFInfo(HDEV hdev,EMFINFO *pEMFInfo);
1700 EngQueryLocalTime(PENG_TIME_FIELDS etf);
1702 EngStretchBlt(SURFOBJ *psoDest,SURFOBJ *psoSrc,SURFOBJ *psoMask,CLIPOBJ *pco,XLATEOBJ *pxlo,COLORADJUSTMENT *pca,POINTL *pptlHTOrg,RECTL *prclDest,RECTL *prclSrc,POINTL *pptlMask,ULONG iMode);
1704 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);
1706 EngStrokeAndFillPath(SURFOBJ *pso,PATHOBJ *ppo,CLIPOBJ *pco,XFORMOBJ *pxo,BRUSHOBJ *pboStroke,LINEATTRS *plineattrs,BRUSHOBJ *pboFill,POINTL *pptlBrushOrg,MIX mixFill,FLONG flOptions);
1708 EngStrokePath(SURFOBJ *pso,PATHOBJ *ppo,CLIPOBJ *pco,XFORMOBJ *pxo,BRUSHOBJ *pbo,POINTL *pptlBrushOrg,LINEATTRS *plineattrs,MIX mix);
1710 EngTextOut(SURFOBJ *pso,STROBJ *pstro,FONTOBJ *pfo,CLIPOBJ *pco,RECTL *prclExtra,RECTL *prclOpaque,BRUSHOBJ *pboFore,BRUSHOBJ *pboOpaque,POINTL *pptlOrg,MIX mix);
1712 EngUnlockSurface(SURFOBJ *pso);
1714 EngWideCharToMultiByte(UINT CodePage,LPWSTR WideCharString,INT BytesInWideCharString,LPSTR MultiByteString,INT BytesInMultiByteString);
1715 PFD_GLYPHATTR STDCALL
1716 FONTOBJ_pQueryGlyphAttrs(FONTOBJ *pfo,ULONG iMode);
1718 PATHOBJ_vGetBounds(PATHOBJ *ppo,PRECTFX prectfx);
1719 FD_GLYPHSET *STDCALL
1720 FONTOBJ_pfdg(FONTOBJ *pfo);
1722 PATHOBJ_bEnum(PATHOBJ *ppo,PATHDATA *ppd);
1724 PATHOBJ_bEnumClipLines(PATHOBJ *ppo,ULONG cb,CLIPLINE *pcl);
1726 PATHOBJ_vEnumStart(PATHOBJ *ppo);
1728 PATHOBJ_vEnumStartClipLines(PATHOBJ *ppo,CLIPOBJ *pco,SURFOBJ *pso,LINEATTRS *pla);
1730 STROBJ_bEnum(STROBJ *pstro,ULONG *pc,PGLYPHPOS *ppgpos);
1732 STROBJ_bEnumPositionsOnly(STROBJ *pstro,ULONG *pc,PGLYPHPOS *ppgpos);
1734 STROBJ_bGetAdvanceWidths(STROBJ *pso,ULONG iFirst,ULONG c,POINTQF *pptqD);
1736 STROBJ_dwGetCodePage(STROBJ *pstro);
1738 STROBJ_vEnumStart(STROBJ *pstro);
1740 XFORMOBJ_iGetXform(XFORMOBJ *pxo,XFORML *pxform);
1742 XFORMOBJ_bApplyXform(XFORMOBJ *pxo,ULONG iMode,ULONG cPoints,PVOID pvIn,PVOID pvOut);
1744 XLATEOBJ_hGetColorTransform(XLATEOBJ *pxlo);