14812e3f79373e69752bfc8e418719346dc4752f
[reactos.git] / reactos / 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 /* FIXME: find definitions for these structs */
31 typedef PVOID PCOLORADJUSTMENT;
32 typedef PVOID PDD_CALLBACKS;
33 typedef PVOID PDD_HALINFO;
34 typedef PVOID PDD_PALETTECALLBACKS;
35 typedef PVOID PDD_SURFACECALLBACKS;
36 typedef PVOID PFONTINFO;
37 typedef PVOID PGAMMA_TABLES;
38 typedef PVOID PGLYPHDATA;
39 typedef PVOID PLINEATTRS;
40 typedef DWORD MIX;
41 typedef DWORD ROP4;
42 typedef PVOID PSTROBJ;
43 typedef PVOID PTTPOLYGONHEADER;
44 typedef PVOID PVIDEOMEMORY;
45
46 #define DDI_DRIVER_VERSION 0x00010000
47
48 /* FIXME: how big should this constant be? */
49 #define HS_DDI_MAX 6
50
51 /* EngCreateBitmap format types */
52 enum _BMF_TYPES
53 {
54 BMF_1BPP = 1,
55 BMF_4BPP,
56 BMF_8BPP,
57 BMF_16BPP,
58 BMF_24BPP,
59 BMF_32BPP,
60 BMF_4RLE,
61 BMF_8RLE
62 };
63
64 #define BMF_TOPDOWN 0x00000001
65 #define BMF_NOZEROINIT 0x00000002
66 #define BMF_DONTCACHE 0x00000004
67 #define BMF_USERMEM 0x00000008
68 #define BMF_KMSECTION 0x00000010
69
70 /* Options for CLIPOBJ_cEnumStart BuildOrder field */
71 enum _CD_ORDERS
72 {
73 CD_RIGHTDOWN,
74 CD_LEFTDOWN,
75 CD_RIGHTUP,
76 CD_LEFTUP,
77 CD_ANY
78 };
79
80 /* Options for CLIPOBJ_cEnumStart Type field */
81 #define CT_RECTANGLE 1
82
83 #define DCR_SOLID 0
84 #define DCR_DRIVER 1
85 #define DCR_HALFTONE 2
86
87 #define DMMAXDEVICENAME 32
88 #define DMMAXFORMNAME 32
89
90 #define DM_DEFAULT 0x00000001
91 #define DM_MONOCHROME 0x00000002
92
93 #define ED_ABORTDOC 0x00000001
94
95 enum _ESCAPE_CODES
96 {
97 ESC_PASSTHROUGH,
98 ESC_QUERYESCSUPPORT
99 };
100
101 #define FM_INFO_TECH_TRUETYPE 0x00000001
102 #define FM_INFO_TECH_BITMAP 0x00000002
103 #define FM_INFO_TECH_STROKE 0x00000004
104 #define FM_INFO_TECH_OUTLINE_NOT_TRUETYPE 0x00000008
105 #define FM_INFO_ARB_XFORMS 0x00000010
106 #define FM_INFO_1BPP 0x00000020
107 #define FM_INFO_4BPP 0x00000040
108 #define FM_INFO_8BPP 0x00000080
109 #define FM_INFO_16BPP 0x00000100
110 #define FM_INFO_24BPP 0x00000200
111 #define FM_INFO_32BPP 0x00000400
112 #define FM_INFO_INTEGER_WIDTH 0x00000800
113 #define FM_INFO_CONSTANT_WIDTH 0x00001000
114 #define FM_INFO_NOT_CONTIGUOUS 0x00002000
115 #define FM_INFO_PID_EMBEDDED 0x00004000
116 #define FM_INFO_RETURNS_OUTLINES 0x00008000
117 #define FM_INFO_RETURNS_STROKES 0x00010000
118 #define FM_INFO_RETURNS_BITMAPS 0x00020000
119 #define FM_INFO_UNICODE_COMPLIANT 0x00040000
120 #define FM_INFO_RIGHT_HANDED 0x00080000
121 #define FM_INFO_INTEGRAL_SCALING 0x00100000
122 #define FM_INFO_90DEGREE_ROTATIONS 0x00200000
123 #define FM_INFO_OPTICALLY_FIXED_PITCH 0x00400000
124 #define FM_INFO_DO_NOT_ENUMERATE 0x00800000
125 #define FM_INFO_ISOTROPIC_SCALING_ONLY 0x01000000
126 #define FM_INFO_ANISOTROPIC_SCALING_ONLY 0x02000000
127 #define FM_INFO_TID_EMBEDDED 0x04000000
128 #define FM_INFO_FAMILY_EQUIV 0x08000000
129 #define FM_INFO_DBCS_FIXED_PITCH 0x10000000
130 #define FM_INFO_NONNEGATIVE_AC 0x20000000
131 #define FM_INFO_IGNORE_TC_RA_ABLE 0x40000000
132 #define FM_INFO_TECH_TYPE1 0x80000000
133
134 #define FM_SEL_ITALIC 0x00000001
135 #define FM_SEL_UNDERSCORE 0x00000002
136 #define FM_SEL_NEGATIVE 0x00000004
137 #define FM_SEL_OUTLINED 0x00000008
138 #define FM_SEL_STRIKEOUT 0x00000010
139 #define FM_SEL_BOLD 0x00000020
140 #define FM_SEL_REGULAR 0x00000040
141
142 #define FM_TYPE_LICENSED 0x00000002
143 #define FM_READONLY_EMBED 0x00000004
144 #define FM_EDITABLE_EMBED 0x00000008
145 #define FM_NO_EMBEDDING 0x00000002
146
147 #define FO_TYPE_RASTER RASTER_FONTTYPE
148 #define FO_TYPE_DEVICE DEVICE_FONTTYPE
149 #define FO_TYPE_TRUETYPE TRUETYPE_FONTTYPE
150 #define FO_SIM_BOLD 0x00002000
151 #define FO_SIM_ITALIC 0x00004000
152 #define FO_EM_HEIGHT 0x00008000
153 #define FO_GRAY16 0x00010000
154 #define FO_NOGRAY16 0x00020000
155 #define FO_NOHINTS 0x00040000
156 #define FO_NO_CHOICE 0x00080000
157
158 enum _FP_MODES
159 {
160 FP_ALTERNATEMODE = 1,
161 FP_WINDINGMODE
162 };
163
164 enum _GLYPH_MODE
165 {
166 FO_HGLYPHS,
167 FO_GLYPHBITS,
168 FO_PATHOBJ
169 };
170
171 /* EngAssocateSurface hook flags */
172 #define HOOK_BITBLT 0x00000001
173 #define HOOK_STRETCHBLT 0x00000002
174 #define HOOK_PLGBLT 0x00000004
175 #define HOOK_TEXTOUT 0x00000008
176 #define HOOK_PAINT 0x00000010
177 #define HOOK_STROKEPATH 0x00000020
178 #define HOOK_FILLPATH 0x00000040
179 #define HOOK_STROKEANDFILLPATH 0x00000080
180 #define HOOK_LINETO 0x00000100
181 #define HOOK_COPYBITS 0x00000400
182 #define HOOK_SYNCHRONIZE 0x00001000
183 #define HOOK_SYNCHRONIZEACCESS 0x00004000
184
185 enum _DRV_HOOK_FUNCS
186 {
187 INDEX_DrvEnablePDEV,
188 INDEX_DrvCompletePDEV,
189 INDEX_DrvDisablePDEV,
190 INDEX_DrvEnableSurface,
191 INDEX_DrvDisableSurface,
192 INDEX_DrvAssertMode,
193 INDEX_DrvResetPDEV = 7,
194 INDEX_DrvCreateDeviceBitmap = 10,
195 INDEX_DrvDeleteDeviceBitmap,
196 INDEX_DrvRealizeBrush,
197 INDEX_DrvDitherColor,
198 INDEX_DrvStrokePath,
199 INDEX_DrvFillPath,
200 INDEX_DrvStrokeAndFillPath,
201 INDEX_DrvPaint,
202 INDEX_DrvBitBlt,
203 INDEX_DrvCopyBits,
204 INDEX_DrvStretchBlt,
205 INDEX_DrvSetPalette = 22,
206 INDEX_DrvTextOut,
207 INDEX_DrvEscape,
208 INDEX_DrvDrawEscape,
209 INDEX_DrvQueryFont,
210 INDEX_DrvQueryFontTree,
211 INDEX_DrvQueryFontData,
212 INDEX_DrvSetPointerShape,
213 INDEX_DrvMovePointer,
214 INDEX_DrvLineTo,
215 INDEX_DrvSendPage,
216 INDEX_DrvStartPage,
217 INDEX_DrvEndDoc,
218 INDEX_DrvStartDoc,
219 INDEX_DrvGetGlyphMode = 37,
220 INDEX_DrvSynchronize,
221 INDEX_DrvSaveScreenBits = 40,
222 INDEX_DrvGetModes,
223 INDEX_DrvFree,
224 INDEX_DrvDestroyFont,
225 INDEX_DrvQueryFontCaps,
226 INDEX_DrvLoadFontFile,
227 INDEX_DrvUnloadFontFile,
228 INDEX_DrvFontManagement,
229 INDEX_DrvQueryTrueTypeTable,
230 INDEX_DrvQueryTrueTypeOutline,
231 INDEX_DrvGetTrueTypeFile,
232 INDEX_DrvQueryFontFile,
233 INDEX_DrvQueryAdvanceWidths = 53,
234 INDEX_DrvSetPixelFormat,
235 INDEX_DrvDescribePixelFormat,
236 INDEX_DrvSwapBuffers,
237 INDEX_DrvStartBanding,
238 INDEX_DrvNextBand,
239 INDEX_DrvGetDirectDrawInfo,
240 INDEX_DrvEnableDirectDraw,
241 INDEX_DrvDisableDirectDraw,
242 INDEX_DrvQuerySpoolType,
243 INDEX_LAST
244 };
245
246 /* EngCreatePalette mode types */
247 #define PAL_INDEXED 0x00000001
248 #define PAL_BITFIELDS 0x00000002
249 #define PAL_RGB 0x00000004
250 #define PAL_BGR 0x00000008
251
252 enum _QUERY_ADVANCE_WIDTH_TYPES
253 {
254 QAW_GETWIDTHS = 1,
255 QAW_GETEASYWIDTHS
256 };
257
258 #define QC_OUTLINES 0x00000001
259 #define QC_1BIT 0x00000002
260 #define QC_4BIT 0x00000004
261
262 enum _QFF_MODES
263 {
264 QFF_DESCRIPTION = 1,
265 QFF_NUMFACES
266 };
267
268 #define RB_DITHERCOLOR 0x80000000
269
270 enum _SPS_RC
271 {
272 SPS_ERROR,
273 SPS_DECLINE,
274 SPS_ACCEPT_NOEXCLUDE,
275 SPS_ACCEPT_EXCLUDE
276 };
277
278 #define SPS_CHANGE 0x00000001L
279 #define SPS_ASYNCCHANGE 0x00000002L
280 #define SPS_ANIMATESTART 0x00000004L
281 #define SPS_ANIMATEUPDATE 0x00000008L
282
283 #define SS_SAVE 0
284 #define SS_RESTORE 1
285 #define SS_FREE 2
286
287 enum _SURF_TYPES
288 {
289 STYPE_BITMAP = 1,
290 STYPE_DEVICE,
291 STYPE_DEVBITMAP
292 };
293
294 #define WO_RGN_CLIENT_DELTA 0x00000001
295 #define WO_RGN_CLIENT 0x00000002
296 #define WO_RGN_SURFACE_DELTA 0x00000004
297 #define WO_RGN_SURFACE 0x00000008
298 #define WO_RGN_UPDATE_ALL 0x00000010
299
300 #define WOC_RGN_CLIENT_DELTA 0x00000001
301 #define WOC_RGN_CLIENT 0x00000002
302 #define WOC_RGN_SURFACE_DELTA 0x00000004
303 #define WOC_RGN_SURFACE 0x00000008
304 #define WOC_CHANGED 0x00000010
305 #define WOC_DELETE 0x00000020
306
307 typedef HANDLE HDEV;
308 typedef HANDLE HGLYPH;
309 typedef HANDLE HSURF;
310 typedef HANDLE DHPDEV;
311 typedef HANDLE DHSURF;
312 typedef ULONG (*PFN)(VOID);
313
314 typedef struct _DRVFN
315 {
316 ULONG iFunc;
317 PFN pfn;
318 } DRVFN, *PDRVFN;
319
320 /*
321 * DRVENABLEDATA - this structure is passed to the DDI from the GDI
322 * in the function DrvEnableDriver to determine driver parameters.
323 */
324
325 typedef struct _DRVENABLEDATA
326 {
327 ULONG iDriverVersion;
328 ULONG c;
329 DRVFN *pdrvfn;
330 } DRVENABLEDATA, *PDRVENABLEDATA;
331
332 /* FIXME: replace this with correct def for LDECI4 */
333 typedef DWORD LDECI4;
334
335 typedef struct _CIECHROMA
336 {
337 LDECI4 x;
338 LDECI4 y;
339 LDECI4 Y;
340 } CIECHROMA, *PCIECHROMA;
341
342 typedef struct _COLORINFO
343 {
344 CIECHROMA Red;
345 CIECHROMA Green;
346 CIECHROMA Blue;
347 CIECHROMA Cyan;
348 CIECHROMA Magenta;
349 CIECHROMA Yellow;
350 CIECHROMA AlignmentWhite;
351 LDECI4 RedGamma;
352 LDECI4 GreenGamma;
353 LDECI4 BlueGamma;
354 LDECI4 MagentaInCyanDye;
355 LDECI4 YellowInCyanDye;
356 LDECI4 CyanInMagentaDye;
357 LDECI4 YellowInMagentaDye;
358 LDECI4 CyanInYellowDye;
359 LDECI4 MagentaInYellowDye;
360 } COLORINFO, *PCOLORINFO;
361
362 typedef struct _DEVINFO
363 {
364 ULONG flGraphicsCaps;
365 LOGFONT lfDefaultFont;
366 LOGFONT lfAnsiVarFont;
367 LOGFONT lfAnsiFixFont;
368 ULONG cFonts;
369 ULONG iDitherFormat;
370 USHORT cxDither;
371 USHORT cyDither;
372 HPALETTE hpalDefault;
373 } DEVINFO, *PDEVINFO;
374
375 typedef struct _GDIINFO
376 {
377 ULONG ulVersion;
378 ULONG ulTechnology;
379 ULONG ulHorzSize;
380 ULONG ulVertSize;
381 ULONG ulHorzRes;
382 ULONG ulVertRes;
383 ULONG cBitsPixel;
384 ULONG cPlanes;
385 ULONG ulNumColors;
386 ULONG flRaster;
387 ULONG ulLogPixelsX;
388 ULONG ulLogPixelsY;
389 ULONG flTextCaps;
390 ULONG ulDACRed;
391 ULONG ulDACGreen;
392 ULONG ulDACBlue;
393 ULONG ulAspectX;
394 ULONG ulAspectY;
395 ULONG ulAspectXY;
396 LONG xStyleStep;
397 LONG yStyleStep;
398 LONG denStyleStep;
399 POINTL ptlPhysOffset;
400 SIZEL szlPhysSize;
401 ULONG ulNumPalReg;
402 COLORINFO ciDevice;
403 ULONG ulDevicePelsDPI;
404 ULONG ulPrimaryOrder;
405 ULONG ulHTPatternSize;
406 ULONG ulHTOutputFormat;
407 ULONG flHTFlags;
408 ULONG ulVRefresh;
409 ULONG ulBltAlignment;
410 ULONG ulPanningHorzRes;
411 ULONG ulPanningVertRes;
412 } GDIINFO, *PGDIINFO;
413
414 typedef struct _DEVMODEW
415 {
416 WCHAR dmDeviceName[DMMAXDEVICENAME];
417 WORD dmSpecVersion;
418 WORD dmDriverVersion;
419 WORD dmSize;
420 WORD dmDriverExtra;
421 DWORD dmFields;
422 short dmOrientation;
423 short dmPaperSize;
424 short dmPaperLength;
425 short dmPaperWidth;
426 short dmScale;
427 short dmCopies;
428 short dmDefaultSource;
429 short dmPrintQuality;
430 short dmColor;
431 short dmDuplex;
432 short dmYResolution;
433 short dmTTOption;
434 short dmCollate;
435 WCHAR dmFormName[DMMAXFORMNAME];
436 WORD dmLogPixels;
437 DWORD dmBitsPerPel;
438 DWORD dmPelsWidth;
439 DWORD dmPelsHeight;
440 DWORD dmDisplayFlags;
441 DWORD dmDisplayFrequency;
442 } DEVMODEW, *PDEVMODEW;
443
444 typedef struct _BRUSHOBJ
445 {
446 ULONG iSolidColor;
447 PVOID pvRbrush;
448
449 /* remainder of fields are for GDI internal use */
450 LOGBRUSH logbrush;
451 } BRUSHOBJ, *PBRUSHOBJ;
452
453 typedef struct _CLIPOBJ
454 {
455 ULONG iUniq;
456 RECTL rclBounds;
457 BYTE iDComplexity;
458 BYTE iFComplexity;
459 BYTE iMode;
460 BYTE fjOptions;
461 } CLIPOBJ, *PCLIPOBJ;
462
463 typedef struct _ENUMRECTS
464 {
465 ULONG c;
466 RECTL arcl[1];
467 } ENUMRECTS, *PENUMRECTS;
468
469 typedef struct _FONTOBJ
470 {
471 ULONG iUniq;
472 ULONG iFace;
473 ULONG cxMax;
474 ULONG flFontType;
475 ULONG iTTUniq;
476 ULONG iFile;
477 SIZE sizLogResPpi;
478 ULONG ulStyleSize;
479 PVOID pvConsumer;
480 PVOID pvProducer;
481 } FONTOBJ, *PFONTOBJ;
482
483 typedef struct _IFIMETRICS
484 {
485 ULONG cjThis;
486 ULONG ulVersion;
487 PTRDIFF dpwszFamilyName;
488 PTRDIFF dpwszStyleName;
489 PTRDIFF dpwszFaceName;
490 PTRDIFF dpwszUniqueName;
491 PTRDIFF dpFontSim;
492 LONG lEmbedId;
493 LONG lItalicAngle;
494 LONG lCharBias;
495 PTRDIFF dpCharSets;
496 BYTE jWinCharSet;
497 BYTE jWinPitchAndFamily;
498 USHORT usWinWeight;
499 ULONG flInfo;
500 USHORT fsSelection;
501 USHORT fsType;
502 WORD fwdUnitsPerEm;
503 WORD fwdLowestPPEm;
504 WORD fwdWinAscender;
505 WORD fwdWinDescender;
506 WORD fwdMacAscender;
507 WORD fwdMacDescender;
508 WORD fwdMacLineGap;
509 WORD fwdTypoAscender;
510 WORD fwdTypoDescender;
511 WORD fwdTypoLineGap;
512 WORD fwdAveCharWidth;
513 WORD fwdMaxCharInc;
514 WORD fwdCapHeight;
515 WORD fwdXHeight;
516 WORD fwdSubScriptXSize;
517 WORD fwdSubScriptYSize;
518 WORD fwdSubScriptXOffset;
519 WORD fwdSubScriptYOffset;
520 WORD fwdSuperScriptXSize;
521 WORD fwdSuperScriptYSize;
522 WORD fwdSuperScriptXOffset;
523 WORD fwdSuperScriptYOffset;
524 WORD fwdUnderscoreSize;
525 WORD fwdUnderscorePosition;
526 WORD fwdStrikeoutSize;
527 WORD fwdStrikeoutPosition;
528 BYTE chFirstChar;
529 BYTE chLastChar;
530 BYTE chDefaultChar;
531 BYTE chBreakChar;
532 WCHAR wcFirstChar;
533 WCHAR wcLastChar;
534 WCHAR wcDefaultChar;
535 WCHAR wcBreakChar;
536 POINTL ptlBaseline;
537 POINTL ptlAspect;
538 POINTL ptlCaret;
539 RECTL rclFontBox;
540 BYTE achVendId[4];
541 ULONG cKerningPairs;
542 ULONG ulPanoseCulture;
543 PANOSE panose;
544 } IFIMETRICS, *PIFIMETRICS;
545
546 typedef struct _PALOBJ
547 {
548 ULONG ulReserved;
549 } PALOBJ, *PPALOBJ;
550
551 typedef struct _PATHOBJ
552 {
553 ULONG fl;
554 ULONG cCurves;
555 } PATHOBJ, *PPATHOBJ;
556
557 typedef struct _SURFOBJ
558 {
559 DHSURF dhsurf;
560 HSURF hsurf;
561 DHPDEV dhpdev;
562 HDEV hdev;
563 SIZEL sizlBitmap;
564 ULONG cjBits;
565 PVOID pvBits;
566 PVOID pvScan0;
567 LONG lDelta;
568 ULONG iUniq;
569 ULONG iBitmapFormat;
570 USHORT iType;
571 USHORT fjBitmap;
572 } SURFOBJ, *PSURFOBJ;
573
574 typedef struct _WNDOBJ
575 {
576 CLIPOBJ coClient;
577 PVOID pvConsumer;
578 RECTL rclClient;
579 } WNDOBJ, *PWNDOBJ;
580
581 typedef VOID (CALLBACK * WNDOBJCHANGEPROC)(PWNDOBJ WndObj, ULONG Flags);
582
583 typedef struct _XFORMOBJ
584 {
585 /* FIXME: what does this beast look like? */
586 } XFORMOBJ, *PXFORMOBJ;
587
588 typedef struct _XLATEOBJ
589 {
590 ULONG iUniq;
591 ULONG flXlate;
592 USHORT iSrcType;
593 USHORT iDstType;
594 ULONG cEntries;
595 ULONG *pulXlate;
596 } XLATEOBJ, *PXLATEOBJ;
597
598 /*
599 * Functions Prefixed with Drv are calls made from GDI to DDI, and
600 * everything else are calls made from DDI to GDI. DDI is
601 * not allowed to make calls to any other kernel or user modules.
602 */
603
604 /* GDI --> DDI calls */
605 VOID DrvAssertMode(IN DHPDEV PDev,
606 IN BOOL ShouldEnable);
607 BOOL DrvBitBlt(IN PSURFOBJ DestSurface,
608 IN PSURFOBJ SrcSurface,
609 IN PSURFOBJ MaskSurface,
610 IN PCLIPOBJ ClipObj,
611 IN PXLATEOBJ XLateObj,
612 IN PRECTL DestRectL,
613 IN PPOINTL SrcPointL,
614 IN PPOINTL MaskPointL,
615 IN PBRUSHOBJ BrushObj,
616 IN PPOINTL BrushPointL,
617 IN ROP4 RasterOp);
618 VOID DrvCompletePDEV(IN DHPDEV PDev,
619 IN HDEV Dev);
620 BOOL DrvCopyBits(OUT PSURFOBJ DestSurface,
621 IN PSURFOBJ SrcSurface,
622 IN PCLIPOBJ ClipObj,
623 IN PXLATEOBJ XLateObj,
624 IN PRECTL DestRectL,
625 IN PPOINTL SrcPointL);
626 HBITMAP DrvCreateDeviceBitmap(IN DHPDEV DPev,
627 IN SIZEL SizeL,
628 IN ULONG Format);
629 VOID DrvDeleteDeviceBitmap(IN DHSURF Surface);
630 LONG DrvDescribePixelFormat(IN DHPDEV DPev,
631 IN LONG PixelFormat,
632 IN ULONG DescriptorSize,
633 OUT PPIXELFORMATDESCRIPTOR PFD);
634 VOID DrvDestroyFont(IN PFONTOBJ FontObj);
635 VOID DrvDisableDirectDraw(IN DHPDEV PDev);
636 VOID DrvDisableDriver(VOID);
637 VOID DrvDisablePDEV(IN DHPDEV PDev);
638 VOID DrvDisableSurface(IN DHPDEV PDev);
639 ULONG DrvDitherColor(IN DHPDEV DPev,
640 IN ULONG Mode,
641 IN ULONG RGB,
642 OUT PULONG DitherBits);
643 ULONG DrvDrawEscape(IN PSURFOBJ SurfObj,
644 IN ULONG EscCode,
645 IN PCLIPOBJ ClipObj,
646 IN PRECTL RectL,
647 IN ULONG InputSize,
648 IN PVOID *InputData);
649 BOOL DrvEnableDirectDraw(IN DHPDEV PDev,
650 IN PDD_CALLBACKS Callbacks,
651 IN PDD_SURFACECALLBACKS SurfaceCallbacks,
652 IN PDD_PALETTECALLBACKS PaletteCallbacks);
653 BOOL DrvEnableDriver(IN ULONG Version,
654 IN ULONG DEDSize,
655 OUT PDRVENABLEDATA DED);
656 DHPDEV DrvEnablePDEV(IN DEVMODEW *DM,
657 IN LPWSTR LogAddress,
658 IN ULONG PatternCount,
659 OUT HSURF *SurfPatterns,
660 IN ULONG CapsSize,
661 OUT ULONG *DevCaps,
662 IN ULONG DevInfoSize,
663 OUT DEVINFO *DI,
664 IN LPWSTR DevDataFile,
665 IN LPWSTR DeviceName,
666 IN HANDLE Driver);
667 HSURF DrvEnableSurface(IN DHPDEV PDev);
668 BOOL DrvEndDoc(IN PSURFOBJ SurfObj,
669 IN ULONG Flags);
670 ULONG DrvEscape(IN PSURFOBJ SurfObj,
671 IN ULONG EscCode,
672 IN ULONG InputSize,
673 IN PVOID *InputData,
674 IN ULONG OutputSize,
675 OUT PVOID *OutputData);
676 BOOL DrvFillPath(IN PSURFOBJ SurfObj,
677 IN PPATHOBJ PathObj,
678 IN PCLIPOBJ ClipObj,
679 IN PBRUSHOBJ BrushObj,
680 IN PPOINTL BrushOrg,
681 IN MIX Mix,
682 IN ULONG Options);
683 ULONG DrvFontManagement(IN PSURFOBJ SurfObj,
684 IN PFONTOBJ FontObj,
685 IN ULONG Mode,
686 IN ULONG InputSize,
687 IN PVOID InputData,
688 IN ULONG OutputSize,
689 OUT PVOID OutputData);
690 VOID DrvFree(IN PVOID Obj,
691 IN ULONG ID);
692 BOOL DrvGetDirectDrawInfo(IN DHPDEV PDev,
693 IN PDD_HALINFO HalInfo,
694 IN PDWORD NumHeaps,
695 IN PVIDEOMEMORY List,
696 IN PDWORD NumFourCCCodes,
697 IN PDWORD FourCC);
698 ULONG DrvGetGlyphMode(IN DHPDEV DPev,
699 IN PFONTOBJ FontObj);
700 ULONG DrvGetModes(IN HANDLE Driver,
701 IN ULONG DataSize,
702 OUT PDEVMODEW DM);
703 PVOID DrvGetTrueTypeFile(IN ULONG FileNumber,
704 IN PULONG Size);
705 BOOL DrvLineTo(IN PSURFOBJ SurfObj,
706 IN PCLIPOBJ ClipObj,
707 IN PBRUSHOBJ BrushObj,
708 IN LONG x1,
709 IN LONG y1,
710 IN LONG x2,
711 IN LONG y2,
712 IN PRECTL Bounds,
713 IN MIX Mix);
714 ULONG DrvLoadFontFile(IN ULONG FileNumber,
715 IN PVOID ViewData,
716 IN ULONG ViewSize,
717 IN ULONG LangID);
718 VOID DrvMovePointer(IN PSURFOBJ SurfObj,
719 IN LONG x,
720 IN LONG y,
721 IN PRECTL RectL);
722 BOOL DrvNextBand(IN PSURFOBJ SurfObj,
723 OUT PPOINTL PointL);
724 BOOL DrvPaint(IN PSURFOBJ SurfObj,
725 IN PCLIPOBJ ClipObj,
726 IN PBRUSHOBJ BrushObj,
727 IN PPOINTL BrushOrg,
728 IN MIX Mix);
729 BOOL DrvQueryAdvanceWidths(IN DHPDEV DPev,
730 IN PFONTOBJ FontObj,
731 IN ULONG Mode,
732 IN HGLYPH Glyph,
733 OUT PVOID *Widths,
734 IN ULONG NumGlyphs);
735 PIFIMETRICS DrvQueryFont(IN DHPDEV PDev,
736 IN ULONG FileNumber,
737 IN ULONG FaceIndex,
738 IN PULONG Identifier);
739 LONG DrvQueryFontCaps(IN ULONG CapsSize,
740 OUT PULONG CapsData);
741 LONG DrvQueryFontData(IN DHPDEV DPev,
742 IN PFONTOBJ FontObj,
743 IN ULONG Mode,
744 IN HGLYPH Glyph,
745 IN PGLYPHDATA GlyphData,
746 IN PVOID DataBuffer,
747 IN ULONG BufferSize);
748 LONG DrvQueryFontFile(IN ULONG FileNumber,
749 IN ULONG Mode,
750 IN ULONG BufSize,
751 OUT PULONG Buf);
752 PVOID DrvQueryFontTree(IN DHPDEV PDev,
753 IN ULONG FileNumber,
754 IN ULONG FaceIndex,
755 IN ULONG Mode,
756 OUT ULONG *ID);
757 BOOL DrvQuerySpoolType(DHPDEV PDev,
758 LPWSTR SpoolType);
759 LONG DrvQueryTrueTypeOutline(IN DHPDEV PDev,
760 IN PFONTOBJ FontObj,
761 IN HGLYPH Glyph,
762 IN BOOL MetricsOnly,
763 IN PGLYPHDATA GlyphData,
764 IN ULONG BufSize,
765 OUT PTTPOLYGONHEADER Polygons);
766 LONG DrvQueryTrueTypeTable(IN ULONG FileNumber,
767 IN ULONG Font,
768 IN ULONG Tag,
769 IN PTRDIFF Start,
770 IN ULONG BufSize,
771 OUT BYTE *Buf);
772 BOOL DrvRealizeBrush(IN PBRUSHOBJ BrushObj,
773 IN PSURFOBJ TargetSurface,
774 IN PSURFOBJ PatternSurface,
775 IN PSURFOBJ MaskSurface,
776 IN PXLATEOBJ XLateObj,
777 IN ULONG iHatch);
778 BOOL DrvResetPDEV(IN DHPDEV PDevOld,
779 IN DHPDEV PDevNew);
780 ULONG DrvSaveScreenBits(IN PSURFOBJ SurfObj,
781 IN ULONG Mode,
782 IN ULONG ID,
783 IN PRECTL RectL);
784 BOOL DrvSendPage(IN PSURFOBJ SurfObj);
785 BOOL DrvSetPalette(IN DHPDEV PDev,
786 IN PPALOBJ PaletteObj,
787 IN ULONG Flags,
788 IN ULONG Start,
789 IN ULONG NumColors);
790 ULONG DrvSetPointerShape(IN PSURFOBJ SurfObj,
791 IN PSURFOBJ MaskSurface,
792 IN PSURFOBJ ColorSurface,
793 IN PXLATEOBJ XLateObj,
794 IN LONG xHot,
795 IN LONG yHot,
796 IN LONG x,
797 IN LONG y,
798 IN PRECTL RectL,
799 IN ULONG Flags);
800 BOOL DrvStartBanding(IN PSURFOBJ SurfObj,
801 IN PPOINTL PointL);
802 BOOL DrvStartDoc(IN PSURFOBJ SurfObj,
803 IN LPWSTR DocName,
804 IN DWORD JobID);
805 BOOL DrvStartPage(IN PSURFOBJ SurfObj);
806 BOOL DrvStretchBlt(IN PSURFOBJ DestSurface,
807 IN PSURFOBJ SrcSurface,
808 IN PSURFOBJ MaskSurface,
809 IN PCLIPOBJ ClipObj,
810 IN PXLATEOBJ XLateObj,
811 IN PCOLORADJUSTMENT CA,
812 IN PPOINTL HTOrg,
813 IN PRECTL Dest,
814 IN PRECTL Src,
815 IN PPOINTL Mask,
816 IN ULONG Mode);
817 BOOL DrvStrokeAndFillPath(IN PSURFOBJ SurfObj,
818 IN PPATHOBJ PathObj,
819 IN PCLIPOBJ ClipObj,
820 IN PXFORMOBJ XFormObj,
821 IN PBRUSHOBJ StrokeBrush,
822 IN PLINEATTRS LineAttrs,
823 IN PBRUSHOBJ FillBrush,
824 IN PPOINTL BrushOrg,
825 IN MIX MixFill,
826 IN ULONG Options);
827 BOOL DrvStrokePath(IN PSURFOBJ SurfObj,
828 IN PPATHOBJ PathObj,
829 IN PCLIPOBJ PClipObj,
830 IN PXFORMOBJ XFormObj,
831 IN PBRUSHOBJ BrushObj,
832 IN PPOINTL BrushOrg,
833 IN PLINEATTRS LineAttrs,
834 IN MIX Mix);
835 VOID DrvSynchronize(IN DHPDEV PDev,
836 IN PRECTL RectL);
837 BOOL DrvTextOut(IN PSURFOBJ SurfObj,
838 IN PSTROBJ StrObj,
839 IN PFONTOBJ FontObj,
840 IN PCLIPOBJ ClipObj,
841 IN PRECTL ExtraRect,
842 IN PRECTL OpaqueRect,
843 IN PBRUSHOBJ ForegroundBrush,
844 IN PBRUSHOBJ OpaqueBrush,
845 IN PPOINTL OrgPoint,
846 IN MIX Mix);
847 BOOL DrvUnloadFontFile(IN ULONG FileNumber);
848
849 /* DDI --> GDI calls */
850 PVOID BRUSHOBJ_pvAllocRbrush(IN PBRUSHOBJ BrushObj,
851 IN ULONG ObjSize);
852 PVOID BRUSHOBJ_pvGetRbrush(IN PBRUSHOBJ BrushObj);
853 BOOL CLIPOBJ_bEnum(IN PCLIPOBJ ClipObj,
854 IN ULONG ObjSize,
855 OUT ULONG *EnumRects);
856 ULONG CLIPOBJ_cEnumStart(IN PCLIPOBJ ClipObj,
857 IN BOOL ShouldDoAll,
858 IN ULONG ClipType,
859 IN ULONG BuildOrder,
860 IN ULONG MaxRects);
861 PPATHOBJ CLIPOBJ_ppoGetPath(PCLIPOBJ ClipObj);
862
863 /*
864 EngAcquireSemaphore
865 */
866
867 /* FIXME: find correct defines for following symbols */
868 #define ALLOC_TAG 1
869 #define FL_ZERO_MEMORY 1
870
871 PVOID APIENTRY EngAllocMem(ULONG Flags,
872 ULONG MemSize,
873 ULONG Tag);
874
875 /*
876 EngAllocUserMem
877 */
878
879 BOOL EngAssociateSurface(IN HSURF Surface,
880 IN HDEV Dev,
881 IN ULONG Hooks);
882
883 /*
884 EngBitBlt
885 EngCheckAbort
886 EngComputeGlyphSet
887 EngCopyBits
888 */
889
890 HBITMAP EngCreateBitmap(IN SIZEL Size,
891 IN LONG Width,
892 IN ULONG Format,
893 IN ULONG Flags,
894 IN PVOID Bits);
895
896 /*
897 EngCreateClip
898 EngCreateDeviceBitmap
899 */
900
901 HSURF EngCreateDeviceSurface(IN DHSURF Surface,
902 IN SIZEL Size,
903 IN ULONG FormatVersion);
904
905 /*
906 EngCreateDriverObj
907 EngCreateEvent
908 */
909
910 HPALETTE EngCreatePalette(IN ULONG Mode,
911 IN ULONG NumColors,
912 IN PULONG *Colors,
913 IN ULONG Red,
914 IN ULONG Green,
915 IN ULONG Blue);
916 /*
917 EngCreatePath
918 EngCreateSemaphore
919 EngCreateWnd
920 EngDebugBreak = NTOSKRNL.DbgBreakPoint
921 */
922
923 VOID APIENTRY EngDebugPrint(PCHAR StandardPrefix,
924 PCHAR DebugMessage,
925 va_list ArgList);
926
927 HANDLE STDCALL EngLoadImage(LPWSTR DriverName);
928
929 /*
930 EngDeleteClip
931 EngDeleteDriverObj
932 EngDeleteEvent
933 EngDeletePalette
934 EngDeletePath
935 EngDeleteSemaphore
936 EngDeleteSurface
937 EngDeleteWnd
938 EngDeviceIoControl
939 EngEnumForms
940 EngEraseSurface
941 EngFillPath
942 EngFindImageProcAddress
943 EngFindResource
944 EngFreeMem
945 EngFreeModule
946 EngFreeUserMem
947 EngGetCurrentCodePage
948 EngGetDriverName
949 EngGetFileChangeTime
950 EngGetFilePath
951 EngGetForm
952 EngGetLastError
953 EngGetPrinter
954 EngGetPrinterData
955 EngGetPrinterDataFileName
956 EngGetProcessHandle
957 EngGetType1FontList
958 EngLineTo
959 EngLoadImage
960 EngLoadModule
961 EngLoadModuleForWrite
962 EngLockDriverObj
963 EngLockSurface
964 EngMapEvent
965 EngMapFontFile
966 EngMapModule
967 EngMarkBandingSurface
968 EngMovePointer
969 EngMulDiv
970 EngMultiByteToUnicodeN
971 EngMultiByteToWideChar
972 EngPaint
973 EngProbeForRead
974 EngProbeForReadAndWrite = NTOSKRNL.ProbeForWrite
975 EngQueryLocalTime
976 EngQueryPalette
977 EngQueryPerformanceCounter
978 EngQueryPerformanceFrequency
979 EngReleaseSemaphore
980 EngRestoreFloatingPointState
981 EngSaveFloatingPointState
982 EngSecureMem
983 EngSetEvent
984 EngSetLastError
985 EngSetPointerShape
986 EngSetPointerTag
987 EngSetPrinterData
988 EngSort
989 EngStretchBlt
990 EngStrokeAndFillPath
991 EngStrokePath
992 EngTextOut
993 EngUnicodeToMultiByteN
994 EngUnloadImage
995 EngUnlockDriverObj
996 EngUnlockSurface
997 EngUnmapEvent
998 EngUnmapFontFile
999 EngUnsecureMem = NTOSKRNL.MmUnsecureVirtualMemory
1000 EngWaitForSingleObject
1001 EngWideCharToMultiByte
1002 EngWritePrinter
1003 FLOATOBJ_Add
1004 FLOATOBJ_AddFloat
1005 FLOATOBJ_AddFloatObj
1006 FLOATOBJ_AddLong
1007 FLOATOBJ_Div
1008 FLOATOBJ_DivFloat
1009 FLOATOBJ_DivFloatObj
1010 FLOATOBJ_DivLong
1011 FLOATOBJ_Equal
1012 FLOATOBJ_EqualLong
1013 FLOATOBJ_GetFloat
1014 FLOATOBJ_GetLong
1015 FLOATOBJ_GreaterThan
1016 FLOATOBJ_GreaterThanLong
1017 FLOATOBJ_LessThan
1018 FLOATOBJ_LessThanLong
1019 FLOATOBJ_Mul
1020 FLOATOBJ_MulFloat
1021 FLOATOBJ_MulFloatObj
1022 FLOATOBJ_MulLong
1023 FLOATOBJ_Neg
1024 FLOATOBJ_SetFloat
1025 FLOATOBJ_SetLong
1026 FLOATOBJ_Sub
1027 FLOATOBJ_SubFloat
1028 FLOATOBJ_SubFloatObj
1029 FLOATOBJ_SubLong
1030 */
1031
1032 ULONG FONTOBJ_cGetAllGlyphHandles(IN PFONTOBJ FontObj,
1033 IN HGLYPH *Glyphs);
1034 ULONG FONTOBJ_cGetGlyphs(IN PFONTOBJ FontObj,
1035 IN ULONG Mode,
1036 IN ULONG NumGlyphs,
1037 IN HGLYPH *GlyphHandles,
1038 IN PVOID *OutGlyphs);
1039 PGAMMA_TABLES FONTOBJ_pGetGammaTables(IN PFONTOBJ FontObj);
1040 IFIMETRICS *FONTOBJ_pifi(IN PFONTOBJ FontObj);
1041 PVOID FONTOBJ_pvTrueTypeFontFile(IN PFONTOBJ FontObj,
1042 IN ULONG *FileSize);
1043 XFORMOBJ *FONTOBJ_pxoGetXform(IN PFONTOBJ FontObj);
1044 VOID FONTOBJ_vGetInfo(IN PFONTOBJ FontObj,
1045 IN ULONG InfoSize,
1046 OUT PFONTINFO FontInfo);
1047
1048 /*
1049 HT_ComputeRGBGammaTable
1050 HT_Get8BPPFormatPalette
1051 PALOBJ_cGetColors
1052 PATHOBJ_bCloseFigure
1053 PATHOBJ_bEnum
1054 PATHOBJ_bEnumClipLines
1055 PATHOBJ_bMoveTo
1056 PATHOBJ_bPolyBezierTo
1057 PATHOBJ_bPolyLineTo
1058 PATHOBJ_vEnumStart
1059 PATHOBJ_vEnumStartClipLines
1060 PATHOBJ_vGetBounds
1061 RtlAnsiCharToUnicodeChar = NTOSKRNL.RtlAnsiCharToUnicodeChar
1062 RtlMultiByteToUnicodeN = NTOSKRNL.RtlMultiByteToUnicodeN
1063 RtlRaiseException = NTOSKRNL.RtlRaiseException
1064 RtlUnicodeToMultiByteN = NTOSKRNL.RtlUnicodeToMultiByteN
1065 RtlUnicodeToMultiByteSize = NTOSKRNL.RtlUnicodeToMultiByteSize
1066 RtlUnwind = NTOSKRNL.RtlUnwind
1067 RtlUpcaseUnicodeChar = NTOSKRNL.RtlUpcaseUnicodeChar
1068 RtlUpcaseUnicodeToMultiByteN = NTOSKRNL.RtlUpcaseUnicodeToMultiByteN
1069 STROBJ_bEnum
1070 STROBJ_dwGetCodePage
1071 STROBJ_vEnumStart
1072 WNDOBJ_bEnum
1073 WNDOBJ_cEnumStart
1074 WNDOBJ_vSetConsumer
1075 XFORMOBJ_bApplyXform
1076 XFORMOBJ_iGetFloatObjXform
1077 XFORMOBJ_iGetXform
1078 XLATEOBJ_cGetPalette
1079 XLATEOBJ_iXlate
1080 XLATEOBJ_piVector
1081 */
1082
1083 #endif
1084