The real, definitive, Visual C++ support branch. Accept no substitutes
[reactos.git] / include / ddk / winddi.h
1 /*
2 * winddi.h
3 *
4 * GDI device driver interface
5 *
6 * This file is part of the w32api package.
7 *
8 * Contributors:
9 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
10 *
11 * THIS SOFTWARE IS NOT COPYRIGHTED
12 *
13 * This source code is offered for use in the public domain. You may
14 * use, modify or distribute it freely.
15 *
16 * This code is distributed in the hope that it will be useful but
17 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
18 * DISCLAIMED. This includes but is not limited to warranties of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
20 *
21 */
22
23 #ifndef __WINDDI_H
24 #define __WINDDI_H
25
26 #if __GNUC__ >=3
27 #pragma GCC system_header
28 #endif
29
30 #ifdef __VIDEO_H
31 #error video.h cannot be included with winddi.h
32 #else
33
34 #include <ddrawint.h>
35 #include <d3dnthal.h>
36
37 #ifdef __cplusplus
38 extern "C" {
39 #endif
40
41 #ifndef DECL_IMPORT
42 #define DECL_IMPORT __attribute__((dllimport))
43 #endif
44
45 #ifndef WIN32KAPI
46 #define WIN32KAPI DECLSPEC_ADDRSAFE
47 #endif
48
49 #define DDI_DRIVER_VERSION_NT4 0x00020000
50 #define DDI_DRIVER_VERSION_SP3 0x00020003
51 #define DDI_DRIVER_VERSION_NT5 0x00030000
52 #define DDI_DRIVER_VERSION_NT5_01 0x00030100
53
54 #define GDI_DRIVER_VERSION 0x4000
55
56 #ifdef _X86_
57
58 typedef DWORD FLOATL;
59
60 #else /* !_X86_ */
61
62 typedef FLOAT FLOATL;
63
64 #endif
65
66 typedef SHORT FWORD;
67 typedef LONG LDECI4;
68 typedef ULONG IDENT;
69
70 typedef ULONG_PTR HFF;
71 typedef ULONG_PTR HFC;
72
73 typedef LONG PTRDIFF;
74 typedef PTRDIFF *PPTRDIFF;
75 typedef LONG FIX;
76 typedef FIX *PFIX;
77 typedef ULONG ROP4;
78 typedef ULONG MIX;
79 typedef ULONG HGLYPH;
80 typedef HGLYPH *PHGLYPH;
81
82 typedef LONG_PTR (APIENTRY *PFN)();
83
84 DECLARE_HANDLE(HBM);
85 DECLARE_HANDLE(HDEV);
86 DECLARE_HANDLE(HSURF);
87 DECLARE_HANDLE(DHSURF);
88 DECLARE_HANDLE(DHPDEV);
89 DECLARE_HANDLE(HDRVOBJ);
90
91 typedef struct _ENG_EVENT *PEVENT;
92
93 #define OPENGL_CMD 4352
94 #define OPENGL_GETINFO 4353
95 #define WNDOBJ_SETUP 4354
96
97 #define FD_ERROR 0xFFFFFFFF
98 #define DDI_ERROR 0xFFFFFFFF
99
100 #define HFF_INVALID ((HFF) 0)
101 #define HFC_INVALID ((HFC) 0)
102 #define HGLYPH_INVALID ((HGLYPH) -1)
103
104 #define FP_ALTERNATEMODE 1
105 #define FP_WINDINGMODE 2
106
107 #define DN_ACCELERATION_LEVEL 1
108 #define DN_DEVICE_ORIGIN 2
109 #define DN_SLEEP_MODE 3
110 #define DN_DRAWING_BEGIN 4
111
112 #define DCR_SOLID 0
113 #define DCR_DRIVER 1
114 #define DCR_HALFTONE 2
115
116 #define GX_IDENTITY 0
117 #define GX_OFFSET 1
118 #define GX_SCALE 2
119 #define GX_GENERAL 3
120
121 typedef struct _POINTE {
122 FLOATL x;
123 FLOATL y;
124 } POINTE, *PPOINTE;
125
126 typedef union _FLOAT_LONG {
127 FLOATL e;
128 LONG l;
129 } FLOAT_LONG, *PFLOAT_LONG;
130
131 typedef struct _POINTFIX {
132 FIX x;
133 FIX y;
134 } POINTFIX, *PPOINTFIX;
135
136 typedef struct _RECTFX {
137 FIX xLeft;
138 FIX yTop;
139 FIX xRight;
140 FIX yBottom;
141 } RECTFX, *PRECTFX;
142
143 typedef struct _POINTQF {
144 LARGE_INTEGER x;
145 LARGE_INTEGER y;
146 } POINTQF, *PPOINTQF;
147
148
149 typedef struct _BLENDOBJ {
150 BLENDFUNCTION BlendFunction;
151 } BLENDOBJ,*PBLENDOBJ;
152
153 /* BRUSHOBJ.flColorType */
154 #define BR_DEVICE_ICM 0x01
155 #define BR_HOST_ICM 0x02
156 #define BR_CMYKCOLOR 0x04
157 #define BR_ORIGCOLOR 0x08
158
159 typedef struct _BRUSHOBJ {
160 ULONG iSolidColor;
161 PVOID pvRbrush;
162 FLONG flColorType;
163 } BRUSHOBJ;
164
165 typedef struct _CIECHROMA {
166 LDECI4 x;
167 LDECI4 y;
168 LDECI4 Y;
169 } CIECHROMA;
170
171 typedef struct _RUN {
172 LONG iStart;
173 LONG iStop;
174 } RUN, *PRUN;
175
176 typedef struct _CLIPLINE {
177 POINTFIX ptfxA;
178 POINTFIX ptfxB;
179 LONG lStyleState;
180 ULONG c;
181 RUN arun[1];
182 } CLIPLINE, *PCLIPLINE;
183
184 /* CLIPOBJ.iDComplexity constants */
185 #define DC_TRIVIAL 0
186 #define DC_RECT 1
187 #define DC_COMPLEX 3
188
189 /* CLIPOBJ.iFComplexity constants */
190 #define FC_RECT 1
191 #define FC_RECT4 2
192 #define FC_COMPLEX 3
193
194 /* CLIPOBJ.iMode constants */
195 #define TC_RECTANGLES 0
196 #define TC_PATHOBJ 2
197
198 /* CLIPOBJ.fjOptions constants */
199 #define OC_BANK_CLIP 1
200
201 typedef struct _CLIPOBJ {
202 ULONG iUniq;
203 RECTL rclBounds;
204 BYTE iDComplexity;
205 BYTE iFComplexity;
206 BYTE iMode;
207 BYTE fjOptions;
208 } CLIPOBJ;
209
210 typedef struct _COLORINFO {
211 CIECHROMA Red;
212 CIECHROMA Green;
213 CIECHROMA Blue;
214 CIECHROMA Cyan;
215 CIECHROMA Magenta;
216 CIECHROMA Yellow;
217 CIECHROMA AlignmentWhite;
218 LDECI4 RedGamma;
219 LDECI4 GreenGamma;
220 LDECI4 BlueGamma;
221 LDECI4 MagentaInCyanDye;
222 LDECI4 YellowInCyanDye;
223 LDECI4 CyanInMagentaDye;
224 LDECI4 YellowInMagentaDye;
225 LDECI4 CyanInYellowDye;
226 LDECI4 MagentaInYellowDye;
227 } COLORINFO, *PCOLORINFO;
228
229 /* DEVHTADJDATA.DeviceFlags constants */
230 #define DEVHTADJF_COLOR_DEVICE 0x00000001
231 #define DEVHTADJF_ADDITIVE_DEVICE 0x00000002
232
233 typedef struct _DEVHTINFO {
234 DWORD HTFlags;
235 DWORD HTPatternSize;
236 DWORD DevPelsDPI;
237 COLORINFO ColorInfo;
238 } DEVHTINFO, *PDEVHTINFO;
239
240 typedef struct _DEVHTADJDATA {
241 DWORD DeviceFlags;
242 DWORD DeviceXDPI;
243 DWORD DeviceYDPI;
244 PDEVHTINFO pDefHTInfo;
245 PDEVHTINFO pAdjHTInfo;
246 } DEVHTADJDATA, *PDEVHTADJDATA;
247
248 /* DEVINFO.flGraphicsCaps flags */
249 #define GCAPS_BEZIERS 0x00000001
250 #define GCAPS_GEOMETRICWIDE 0x00000002
251 #define GCAPS_ALTERNATEFILL 0x00000004
252 #define GCAPS_WINDINGFILL 0x00000008
253 #define GCAPS_HALFTONE 0x00000010
254 #define GCAPS_COLOR_DITHER 0x00000020
255 #define GCAPS_HORIZSTRIKE 0x00000040
256 #define GCAPS_VERTSTRIKE 0x00000080
257 #define GCAPS_OPAQUERECT 0x00000100
258 #define GCAPS_VECTORFONT 0x00000200
259 #define GCAPS_MONO_DITHER 0x00000400
260 #define GCAPS_ASYNCCHANGE 0x00000800
261 #define GCAPS_ASYNCMOVE 0x00001000
262 #define GCAPS_DONTJOURNAL 0x00002000
263 #define GCAPS_DIRECTDRAW 0x00004000
264 #define GCAPS_ARBRUSHOPAQUE 0x00008000
265 #define GCAPS_PANNING 0x00010000
266 #define GCAPS_HIGHRESTEXT 0x00040000
267 #define GCAPS_PALMANAGED 0x00080000
268 #define GCAPS_DITHERONREALIZE 0x00200000
269 #define GCAPS_NO64BITMEMACCESS 0x00400000
270 #define GCAPS_FORCEDITHER 0x00800000
271 #define GCAPS_GRAY16 0x01000000
272 #define GCAPS_ICM 0x02000000
273 #define GCAPS_CMYKCOLOR 0x04000000
274 #define GCAPS_LAYERED 0x08000000
275 #define GCAPS_ARBRUSHTEXT 0x10000000
276 #define GCAPS_SCREENPRECISION 0x20000000
277 #define GCAPS_FONT_RASTERIZER 0x40000000
278 #define GCAPS_NUP 0x80000000
279
280 /* DEVINFO.iDitherFormat constants */
281 #define BMF_1BPP 1L
282 #define BMF_4BPP 2L
283 #define BMF_8BPP 3L
284 #define BMF_16BPP 4L
285 #define BMF_24BPP 5L
286 #define BMF_32BPP 6L
287 #define BMF_4RLE 7L
288 #define BMF_8RLE 8L
289 #define BMF_JPEG 9L
290 #define BMF_PNG 10L
291
292 /* DEVINFO.flGraphicsCaps2 flags */
293 #define GCAPS2_JPEGSRC 0x00000001
294 #define GCAPS2_xxxx 0x00000002
295 #define GCAPS2_PNGSRC 0x00000008
296 #define GCAPS2_CHANGEGAMMARAMP 0x00000010
297 #define GCAPS2_ALPHACURSOR 0x00000020
298 #define GCAPS2_SYNCFLUSH 0x00000040
299 #define GCAPS2_SYNCTIMER 0x00000080
300 #define GCAPS2_ICD_MULTIMON 0x00000100
301 #define GCAPS2_MOUSETRAILS 0x00000200
302 #define GCAPS2_RESERVED1 0x00000400
303
304 typedef struct _DEVINFO {
305 FLONG flGraphicsCaps;
306 LOGFONTW lfDefaultFont;
307 LOGFONTW lfAnsiVarFont;
308 LOGFONTW lfAnsiFixFont;
309 ULONG cFonts;
310 ULONG iDitherFormat;
311 USHORT cxDither;
312 USHORT cyDither;
313 HPALETTE hpalDefault;
314 FLONG flGraphicsCaps2;
315 } DEVINFO, *PDEVINFO;
316
317 typedef struct _DRIVEROBJ *PDRIVEROBJ;
318
319 typedef BOOL
320 (APIENTRY CALLBACK *FREEOBJPROC)(
321 IN PDRIVEROBJ pDriverObj);
322
323 typedef struct _DRIVEROBJ {
324 PVOID pvObj;
325 FREEOBJPROC pFreeProc;
326 HDEV hdev;
327 DHPDEV dhpdev;
328 } DRIVEROBJ;
329
330 /* DRVFN.iFunc constants */
331 #define INDEX_DrvEnablePDEV 0L
332 #define INDEX_DrvCompletePDEV 1L
333 #define INDEX_DrvDisablePDEV 2L
334 #define INDEX_DrvEnableSurface 3L
335 #define INDEX_DrvDisableSurface 4L
336 #define INDEX_DrvAssertMode 5L
337 #define INDEX_DrvOffset 6L
338 #define INDEX_DrvResetPDEV 7L
339 #define INDEX_DrvDisableDriver 8L
340 #define INDEX_DrvUnknown1 9L
341 #define INDEX_DrvCreateDeviceBitmap 10L
342 #define INDEX_DrvDeleteDeviceBitmap 11L
343 #define INDEX_DrvRealizeBrush 12L
344 #define INDEX_DrvDitherColor 13L
345 #define INDEX_DrvStrokePath 14L
346 #define INDEX_DrvFillPath 15L
347 #define INDEX_DrvStrokeAndFillPath 16L
348 #define INDEX_DrvPaint 17L
349 #define INDEX_DrvBitBlt 18L
350 #define INDEX_DrvCopyBits 19L
351 #define INDEX_DrvStretchBlt 20L
352 #define INDEX_DrvUnknown2 21L
353 #define INDEX_DrvSetPalette 22L
354 #define INDEX_DrvTextOut 23L
355 #define INDEX_DrvEscape 24L
356 #define INDEX_DrvDrawEscape 25L
357 #define INDEX_DrvQueryFont 26L
358 #define INDEX_DrvQueryFontTree 27L
359 #define INDEX_DrvQueryFontData 28L
360 #define INDEX_DrvSetPointerShape 29L
361 #define INDEX_DrvMovePointer 30L
362 #define INDEX_DrvLineTo 31L
363 #define INDEX_DrvSendPage 32L
364 #define INDEX_DrvStartPage 33L
365 #define INDEX_DrvEndDoc 34L
366 #define INDEX_DrvStartDoc 35L
367 #define INDEX_DrvUnknown3 36L
368 #define INDEX_DrvGetGlyphMode 37L
369 #define INDEX_DrvSynchronize 38L
370 #define INDEX_DrvUnknown4 39L
371 #define INDEX_DrvSaveScreenBits 40L
372 #define INDEX_DrvGetModes 41L
373 #define INDEX_DrvFree 42L
374 #define INDEX_DrvDestroyFont 43L
375 #define INDEX_DrvQueryFontCaps 44L
376 #define INDEX_DrvLoadFontFile 45L
377 #define INDEX_DrvUnloadFontFile 46L
378 #define INDEX_DrvFontManagement 47L
379 #define INDEX_DrvQueryTrueTypeTable 48L
380 #define INDEX_DrvQueryTrueTypeOutline 49L
381 #define INDEX_DrvGetTrueTypeFile 50L
382 #define INDEX_DrvQueryFontFile 51L
383 #define INDEX_DrvMovePanning 52L
384 #define INDEX_DrvQueryAdvanceWidths 53L
385 #define INDEX_DrvSetPixelFormat 54L
386 #define INDEX_DrvDescribePixelFormat 55L
387 #define INDEX_DrvSwapBuffers 56L
388 #define INDEX_DrvStartBanding 57L
389 #define INDEX_DrvNextBand 58L
390 #define INDEX_DrvGetDirectDrawInfo 59L
391 #define INDEX_DrvEnableDirectDraw 60L
392 #define INDEX_DrvDisableDirectDraw 61L
393 #define INDEX_DrvQuerySpoolType 62L
394 #define INDEX_DrvUnknown5 63L
395 #define INDEX_DrvIcmCreateColorTransform 64L
396 #define INDEX_DrvIcmDeleteColorTransform 65L
397 #define INDEX_DrvIcmCheckBitmapBits 66L
398 #define INDEX_DrvIcmSetDeviceGammaRamp 67L
399 #define INDEX_DrvGradientFill 68L
400 #define INDEX_DrvStretchBltROP 69L
401 #define INDEX_DrvPlgBlt 70L
402 #define INDEX_DrvAlphaBlend 71L
403 #define INDEX_DrvSynthesizeFont 72L
404 #define INDEX_DrvGetSynthesizedFontFiles 73L
405 #define INDEX_DrvTransparentBlt 74L
406 #define INDEX_DrvQueryPerBandInfo 75L
407 #define INDEX_DrvQueryDeviceSupport 76L
408 #define INDEX_DrvReserved1 77L
409 #define INDEX_DrvReserved2 78L
410 #define INDEX_DrvReserved3 79L
411 #define INDEX_DrvReserved4 80L
412 #define INDEX_DrvReserved5 81L
413 #define INDEX_DrvReserved6 82L
414 #define INDEX_DrvReserved7 83L
415 #define INDEX_DrvReserved8 84L
416 #define INDEX_DrvDeriveSurface 85L
417 #define INDEX_DrvQueryGlyphAttrs 86L
418 #define INDEX_DrvNotify 87L
419 #define INDEX_DrvSynchronizeSurface 88L
420 #define INDEX_DrvResetDevice 89L
421 #define INDEX_DrvReserved9 90L
422 #define INDEX_DrvReserved10 91L
423 #define INDEX_DrvReserved11 92L
424 #define INDEX_LAST 93L
425
426 typedef struct _DRVFN {
427 ULONG iFunc;
428 PFN pfn;
429 } DRVFN, *PDRVFN;
430
431 /* DRVENABLEDATA.iDriverVersion constants */
432 #define DDI_DRIVER_VERSION_NT4 0x00020000
433 #define DDI_DRIVER_VERSION_SP3 0x00020003
434 #define DDI_DRIVER_VERSION_NT5 0x00030000
435 #define DDI_DRIVER_VERSION_NT5_01 0x00030100
436
437 typedef struct _DRVENABLEDATA {
438 ULONG iDriverVersion;
439 ULONG c;
440 DRVFN *pdrvfn;
441 } DRVENABLEDATA, *PDRVENABLEDATA;
442
443 DECLARE_HANDLE(HSEMAPHORE);
444
445 typedef struct {
446 DWORD nSize;
447 HDC hdc;
448 PBYTE pvEMF;
449 PBYTE pvCurrentRecord;
450 } EMFINFO, *PEMFINFO;
451
452 typedef struct _ENGSAFESEMAPHORE {
453 HSEMAPHORE hsem;
454 LONG lCount;
455 } ENGSAFESEMAPHORE;
456
457 typedef struct _ENG_TIME_FIELDS {
458 USHORT usYear;
459 USHORT usMonth;
460 USHORT usDay;
461 USHORT usHour;
462 USHORT usMinute;
463 USHORT usSecond;
464 USHORT usMilliseconds;
465 USHORT usWeekday;
466 } ENG_TIME_FIELDS, *PENG_TIME_FIELDS;
467
468 typedef struct _ENUMRECTS {
469 ULONG c;
470 RECTL arcl[1];
471 } ENUMRECTS;
472
473 typedef struct _FD_XFORM {
474 FLOATL eXX;
475 FLOATL eXY;
476 FLOATL eYX;
477 FLOATL eYY;
478 } FD_XFORM, *PFD_XFORM;
479
480 /* FD_DEVICEMETRICS.flRealizedType constants */
481 #define FDM_TYPE_BM_SIDE_CONST 0x00000001
482 #define FDM_TYPE_MAXEXT_EQUAL_BM_SIDE 0x00000002
483 #define FDM_TYPE_CHAR_INC_EQUAL_BM_BASE 0x00000004
484 #define FDM_TYPE_ZERO_BEARINGS 0x00000008
485 #define FDM_TYPE_CONST_BEARINGS 0x00000010
486
487 typedef struct _FD_DEVICEMETRICS {
488 FLONG flRealizedType;
489 POINTE pteBase;
490 POINTE pteSide;
491 LONG lD;
492 FIX fxMaxAscender;
493 FIX fxMaxDescender;
494 POINTL ptlUnderline1;
495 POINTL ptlStrikeout;
496 POINTL ptlULThickness;
497 POINTL ptlSOThickness;
498 ULONG cxMax;
499 ULONG cyMax;
500 ULONG cjGlyphMax;
501 FD_XFORM fdxQuantized;
502 LONG lNonLinearExtLeading;
503 LONG lNonLinearIntLeading;
504 LONG lNonLinearMaxCharWidth;
505 LONG lNonLinearAvgCharWidth;
506 LONG lMinA;
507 LONG lMinC;
508 LONG lMinD;
509 LONG alReserved[1];
510 } FD_DEVICEMETRICS, *PFD_DEVICEMETRICS;
511
512 /* FD_GLYPHATTR.iMode constants */
513 #define FO_ATTR_MODE_ROTATE 1
514
515 typedef struct _FD_GLYPHATTR {
516 ULONG cjThis;
517 ULONG cGlyphs;
518 ULONG iMode;
519 BYTE aGlyphAttr[1];
520 } FD_GLYPHATTR, *PFD_GLYPHATTR;
521
522 /* FD_GLYPHSET.flAccel */
523 #define GS_UNICODE_HANDLES 0x00000001
524 #define GS_8BIT_HANDLES 0x00000002
525 #define GS_16BIT_HANDLES 0x00000004
526
527 typedef struct _WCRUN {
528 WCHAR wcLow;
529 USHORT cGlyphs;
530 HGLYPH *phg;
531 } WCRUN, *PWCRUN;
532
533 typedef struct _FD_GLYPHSET {
534 ULONG cjThis;
535 FLONG flAccel;
536 ULONG cGlyphsSupported;
537 ULONG cRuns;
538 WCRUN awcrun[1];
539 } FD_GLYPHSET, *PFD_GLYPHSET;
540
541 typedef struct _FD_KERNINGPAIR {
542 WCHAR wcFirst;
543 WCHAR wcSecond;
544 FWORD fwdKern;
545 } FD_KERNINGPAIR;
546
547 #if defined(_X86_) && !defined(USERMODE_DRIVER)
548 typedef struct _FLOATOBJ
549 {
550 ULONG ul1;
551 ULONG ul2;
552 } FLOATOBJ, *PFLOATOBJ;
553 #else
554 typedef FLOAT FLOATOBJ, *PFLOATOBJ;
555 #endif
556
557 typedef struct _FLOATOBJ_XFORM {
558 FLOATOBJ eM11;
559 FLOATOBJ eM12;
560 FLOATOBJ eM21;
561 FLOATOBJ eM22;
562 FLOATOBJ eDx;
563 FLOATOBJ eDy;
564 } FLOATOBJ_XFORM, *PFLOATOBJ_XFORM, FAR *LPFLOATOBJ_XFORM;
565
566 /* FONTDIFF.fsSelection */
567 #define FM_SEL_ITALIC 0x0001
568 #define FM_SEL_UNDERSCORE 0x0002
569 #define FM_SEL_NEGATIVE 0x0004
570 #define FM_SEL_OUTLINED 0x0008
571 #define FM_SEL_STRIKEOUT 0x0010
572 #define FM_SEL_BOLD 0x0020
573 #define FM_SEL_REGULAR 0x0040
574
575 typedef struct _FONTDIFF {
576 BYTE jReserved1;
577 BYTE jReserved2;
578 BYTE jReserved3;
579 BYTE bWeight;
580 USHORT usWinWeight;
581 FSHORT fsSelection;
582 FWORD fwdAveCharWidth;
583 FWORD fwdMaxCharInc;
584 POINTL ptlCaret;
585 } FONTDIFF;
586
587 typedef struct _FONTSIM {
588 PTRDIFF dpBold;
589 PTRDIFF dpItalic;
590 PTRDIFF dpBoldItalic;
591 } FONTSIM;
592
593 /* FONTINFO.flCaps constants */
594 #define FO_DEVICE_FONT 1L
595 #define FO_OUTLINE_CAPABLE 2L
596
597 typedef struct _FONTINFO {
598 ULONG cjThis;
599 FLONG flCaps;
600 ULONG cGlyphsSupported;
601 ULONG cjMaxGlyph1;
602 ULONG cjMaxGlyph4;
603 ULONG cjMaxGlyph8;
604 ULONG cjMaxGlyph32;
605 } FONTINFO, *PFONTINFO;
606
607 /* FONTOBJ.flFontType constants */
608 #define FO_TYPE_RASTER RASTER_FONTTYPE
609 #define FO_TYPE_DEVICE DEVICE_FONTTYPE
610 #define FO_TYPE_TRUETYPE TRUETYPE_FONTTYPE
611 #define FO_TYPE_OPENTYPE OPENTYPE_FONTTYPE
612
613 #define FO_SIM_BOLD 0x00002000
614 #define FO_SIM_ITALIC 0x00004000
615 #define FO_EM_HEIGHT 0x00008000
616 #define FO_GRAY16 0x00010000
617 #define FO_NOGRAY16 0x00020000
618 #define FO_NOHINTS 0x00040000
619 #define FO_NO_CHOICE 0x00080000
620 #define FO_CFF 0x00100000
621 #define FO_POSTSCRIPT 0x00200000
622 #define FO_MULTIPLEMASTER 0x00400000
623 #define FO_VERT_FACE 0x00800000
624 #define FO_DBCS_FONT 0X01000000
625 #define FO_NOCLEARTYPE 0x02000000
626 #define FO_CLEARTYPE_X 0x10000000
627 #define FO_CLEARTYPE_Y 0x20000000
628
629 typedef struct _FONTOBJ {
630 ULONG iUniq;
631 ULONG iFace;
632 ULONG cxMax;
633 FLONG flFontType;
634 ULONG_PTR iTTUniq;
635 ULONG_PTR iFile;
636 SIZE sizLogResPpi;
637 ULONG ulStyleSize;
638 PVOID pvConsumer;
639 PVOID pvProducer;
640 } FONTOBJ;
641
642 typedef struct _GAMMARAMP {
643 WORD Red[256];
644 WORD Green[256];
645 WORD Blue[256];
646 } GAMMARAMP, *PGAMMARAMP;
647
648 /* GDIINFO.ulPrimaryOrder constants */
649 #define PRIMARY_ORDER_ABC 0
650 #define PRIMARY_ORDER_ACB 1
651 #define PRIMARY_ORDER_BAC 2
652 #define PRIMARY_ORDER_BCA 3
653 #define PRIMARY_ORDER_CBA 4
654 #define PRIMARY_ORDER_CAB 5
655
656 /* GDIINFO.ulHTPatternSize constants */
657 #define HT_PATSIZE_2x2 0
658 #define HT_PATSIZE_2x2_M 1
659 #define HT_PATSIZE_4x4 2
660 #define HT_PATSIZE_4x4_M 3
661 #define HT_PATSIZE_6x6 4
662 #define HT_PATSIZE_6x6_M 5
663 #define HT_PATSIZE_8x8 6
664 #define HT_PATSIZE_8x8_M 7
665 #define HT_PATSIZE_10x10 8
666 #define HT_PATSIZE_10x10_M 9
667 #define HT_PATSIZE_12x12 10
668 #define HT_PATSIZE_12x12_M 11
669 #define HT_PATSIZE_14x14 12
670 #define HT_PATSIZE_14x14_M 13
671 #define HT_PATSIZE_16x16 14
672 #define HT_PATSIZE_16x16_M 15
673 #define HT_PATSIZE_SUPERCELL 16
674 #define HT_PATSIZE_SUPERCELL_M 17
675 #define HT_PATSIZE_USER 18
676 #define HT_PATSIZE_MAX_INDEX HT_PATSIZE_USER
677 #define HT_PATSIZE_DEFAULT HT_PATSIZE_SUPERCELL_M
678 #define HT_USERPAT_CX_MIN 4
679 #define HT_USERPAT_CX_MAX 256
680 #define HT_USERPAT_CY_MIN 4
681 #define HT_USERPAT_CY_MAX 256
682
683 /* GDIINFO.ulHTOutputFormat constants */
684 #define HT_FORMAT_1BPP 0
685 #define HT_FORMAT_4BPP 2
686 #define HT_FORMAT_4BPP_IRGB 3
687 #define HT_FORMAT_8BPP 4
688 #define HT_FORMAT_16BPP 5
689 #define HT_FORMAT_24BPP 6
690 #define HT_FORMAT_32BPP 7
691
692 /* GDIINFO.flHTFlags */
693 #define HT_FLAG_SQUARE_DEVICE_PEL 0x00000001
694 #define HT_FLAG_HAS_BLACK_DYE 0x00000002
695 #define HT_FLAG_ADDITIVE_PRIMS 0x00000004
696 #define HT_FLAG_USE_8BPP_BITMASK 0x00000008
697 #define HT_FLAG_INK_HIGH_ABSORPTION 0x00000010
698 #define HT_FLAG_INK_ABSORPTION_INDICES 0x00000060
699 #define HT_FLAG_DO_DEVCLR_XFORM 0x00000080
700 #define HT_FLAG_OUTPUT_CMY 0x00000100
701 #define HT_FLAG_PRINT_DRAFT_MODE 0x00000200
702 #define HT_FLAG_INVERT_8BPP_BITMASK_IDX 0x00000400
703 #define HT_FLAG_8BPP_CMY332_MASK 0xFF000000
704
705 #define MAKE_CMYMASK_BYTE(c,m,y) ((BYTE)(((BYTE)(c) & 0x07) << 5) \
706 |(BYTE)(((BYTE)(m) & 0x07) << 2) \
707 |(BYTE)((BYTE)(y) & 0x03))
708
709 #define MAKE_CMY332_MASK(c,m,y) ((DWORD)(((DWORD)(c) & 0x07) << 29)\
710 |(DWORD)(((DWORD)(m) & 0x07) << 26)\
711 |(DWORD)(((DWORD)(y) & 0x03) << 24))
712
713 /* GDIINFO.flHTFlags constants */
714 #define HT_FLAG_INK_ABSORPTION_IDX0 0x00000000
715 #define HT_FLAG_INK_ABSORPTION_IDX1 0x00000020
716 #define HT_FLAG_INK_ABSORPTION_IDX2 0x00000040
717 #define HT_FLAG_INK_ABSORPTION_IDX3 0x00000060
718
719 #define HT_FLAG_HIGHEST_INK_ABSORPTION (HT_FLAG_INK_HIGH_ABSORPTION \
720 |HT_FLAG_INK_ABSORPTION_IDX3)
721 #define HT_FLAG_HIGHER_INK_ABSORPTION (HT_FLAG_INK_HIGH_ABSORPTION \
722 |HT_FLAG_INK_ABSORPTION_IDX2)
723 #define HT_FLAG_HIGH_INK_ABSORPTION (HT_FLAG_INK_HIGH_ABSORPTION \
724 |HT_FLAG_INK_ABSORPTION_IDX1)
725 #define HT_FLAG_NORMAL_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX0
726 #define HT_FLAG_LOW_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX1
727 #define HT_FLAG_LOWER_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX2
728 #define HT_FLAG_LOWEST_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX3
729
730 #define HT_BITMASKPALRGB (DWORD)'0BGR'
731 #define HT_SET_BITMASKPAL2RGB(pPal) (*((LPDWORD)(pPal)) = HT_BITMASKPALRGB)
732 #define HT_IS_BITMASKPALRGB(pPal) (*((LPDWORD)(pPal)) == (DWORD)0)
733
734 /* GDIINFO.ulPhysicalPixelCharacteristics constants */
735 #define PPC_DEFAULT 0x0
736 #define PPC_UNDEFINED 0x1
737 #define PPC_RGB_ORDER_VERTICAL_STRIPES 0x2
738 #define PPC_BGR_ORDER_VERTICAL_STRIPES 0x3
739 #define PPC_RGB_ORDER_HORIZONTAL_STRIPES 0x4
740 #define PPC_BGR_ORDER_HORIZONTAL_STRIPES 0x5
741
742 #define PPG_DEFAULT 0
743 #define PPG_SRGB 1
744
745 typedef struct _GDIINFO {
746 ULONG ulVersion;
747 ULONG ulTechnology;
748 ULONG ulHorzSize;
749 ULONG ulVertSize;
750 ULONG ulHorzRes;
751 ULONG ulVertRes;
752 ULONG cBitsPixel;
753 ULONG cPlanes;
754 ULONG ulNumColors;
755 ULONG flRaster;
756 ULONG ulLogPixelsX;
757 ULONG ulLogPixelsY;
758 ULONG flTextCaps;
759 ULONG ulDACRed;
760 ULONG ulDACGreen;
761 ULONG ulDACBlue;
762 ULONG ulAspectX;
763 ULONG ulAspectY;
764 ULONG ulAspectXY;
765 LONG xStyleStep;
766 LONG yStyleStep;
767 LONG denStyleStep;
768 POINTL ptlPhysOffset;
769 SIZEL szlPhysSize;
770 ULONG ulNumPalReg;
771 COLORINFO ciDevice;
772 ULONG ulDevicePelsDPI;
773 ULONG ulPrimaryOrder;
774 ULONG ulHTPatternSize;
775 ULONG ulHTOutputFormat;
776 ULONG flHTFlags;
777 ULONG ulVRefresh;
778 ULONG ulBltAlignment;
779 ULONG ulPanningHorzRes;
780 ULONG ulPanningVertRes;
781 ULONG xPanningAlignment;
782 ULONG yPanningAlignment;
783 ULONG cxHTPat;
784 ULONG cyHTPat;
785 LPBYTE pHTPatA;
786 LPBYTE pHTPatB;
787 LPBYTE pHTPatC;
788 ULONG flShadeBlend;
789 ULONG ulPhysicalPixelCharacteristics;
790 ULONG ulPhysicalPixelGamma;
791 } GDIINFO, *PGDIINFO;
792
793 /* PATHDATA.flags constants */
794 #define PD_BEGINSUBPATH 0x00000001
795 #define PD_ENDSUBPATH 0x00000002
796 #define PD_RESETSTYLE 0x00000004
797 #define PD_CLOSEFIGURE 0x00000008
798 #define PD_BEZIERS 0x00000010
799 #define PD_ALL (PD_BEGINSUBPATH \
800 |PD_ENDSUBPATH \
801 |PD_RESETSTYLE \
802 |PD_CLOSEFIGURE \
803 PD_BEZIERS)
804
805 typedef struct _PATHDATA {
806 FLONG flags;
807 ULONG count;
808 POINTFIX *glypptfx;
809 } PATHDATA, *PPATHDATA;
810
811 /* PATHOBJ.fl constants */
812 #define PO_BEZIERS 0x00000001
813 #define PO_ELLIPSE 0x00000002
814 #define PO_ALL_INTEGERS 0x00000004
815 #define PO_ENUM_AS_INTEGERS 0x00000008
816
817 typedef struct _PATHOBJ {
818 FLONG fl;
819 ULONG cCurves;
820 } PATHOBJ;
821
822 typedef struct _GLYPHBITS {
823 POINTL ptlOrigin;
824 SIZEL sizlBitmap;
825 BYTE aj[1];
826 } GLYPHBITS;
827
828 typedef union _GLYPHDEF {
829 GLYPHBITS *pgb;
830 PATHOBJ *ppo;
831 } GLYPHDEF;
832
833 typedef struct _GLYPHPOS {
834 HGLYPH hg;
835 GLYPHDEF *pgdf;
836 POINTL ptl;
837 } GLYPHPOS, *PGLYPHPOS;
838
839 typedef struct _GLYPHDATA {
840 GLYPHDEF gdf;
841 HGLYPH hg;
842 FIX fxD;
843 FIX fxA;
844 FIX fxAB;
845 FIX fxInkTop;
846 FIX fxInkBottom;
847 RECTL rclInk;
848 POINTQF ptqD;
849 } GLYPHDATA;
850
851 typedef struct _IFIEXTRA {
852 ULONG ulIdentifier;
853 PTRDIFF dpFontSig;
854 ULONG cig;
855 PTRDIFF dpDesignVector;
856 PTRDIFF dpAxesInfoW;
857 ULONG aulReserved[1];
858 } IFIEXTRA, *PIFIEXTRA;
859
860 /* IFIMETRICS constants */
861
862 #define FM_VERSION_NUMBER 0x0
863
864 /* IFIMETRICS.fsType constants */
865 #define FM_TYPE_LICENSED 0x2
866 #define FM_READONLY_EMBED 0x4
867 #define FM_EDITABLE_EMBED 0x8
868 #define FM_NO_EMBEDDING FM_TYPE_LICENSED
869
870 /* IFIMETRICS.flInfo constants */
871 #define FM_INFO_TECH_TRUETYPE 0x00000001
872 #define FM_INFO_TECH_BITMAP 0x00000002
873 #define FM_INFO_TECH_STROKE 0x00000004
874 #define FM_INFO_TECH_OUTLINE_NOT_TRUETYPE 0x00000008
875 #define FM_INFO_ARB_XFORMS 0x00000010
876 #define FM_INFO_1BPP 0x00000020
877 #define FM_INFO_4BPP 0x00000040
878 #define FM_INFO_8BPP 0x00000080
879 #define FM_INFO_16BPP 0x00000100
880 #define FM_INFO_24BPP 0x00000200
881 #define FM_INFO_32BPP 0x00000400
882 #define FM_INFO_INTEGER_WIDTH 0x00000800
883 #define FM_INFO_CONSTANT_WIDTH 0x00001000
884 #define FM_INFO_NOT_CONTIGUOUS 0x00002000
885 #define FM_INFO_TECH_MM 0x00004000
886 #define FM_INFO_RETURNS_OUTLINES 0x00008000
887 #define FM_INFO_RETURNS_STROKES 0x00010000
888 #define FM_INFO_RETURNS_BITMAPS 0x00020000
889 #define FM_INFO_DSIG 0x00040000
890 #define FM_INFO_RIGHT_HANDED 0x00080000
891 #define FM_INFO_INTEGRAL_SCALING 0x00100000
892 #define FM_INFO_90DEGREE_ROTATIONS 0x00200000
893 #define FM_INFO_OPTICALLY_FIXED_PITCH 0x00400000
894 #define FM_INFO_DO_NOT_ENUMERATE 0x00800000
895 #define FM_INFO_ISOTROPIC_SCALING_ONLY 0x01000000
896 #define FM_INFO_ANISOTROPIC_SCALING_ONLY 0x02000000
897 #define FM_INFO_TECH_CFF 0x04000000
898 #define FM_INFO_FAMILY_EQUIV 0x08000000
899 #define FM_INFO_DBCS_FIXED_PITCH 0x10000000
900 #define FM_INFO_NONNEGATIVE_AC 0x20000000
901 #define FM_INFO_IGNORE_TC_RA_ABLE 0x40000000
902 #define FM_INFO_TECH_TYPE1 0x80000000
903
904 #define MAXCHARSETS 16
905
906 /* IFIMETRICS.ulPanoseCulture constants */
907 #define FM_PANOSE_CULTURE_LATIN 0x0
908
909 typedef struct _IFIMETRICS {
910 ULONG cjThis;
911 ULONG cjIfiExtra;
912 PTRDIFF dpwszFamilyName;
913 PTRDIFF dpwszStyleName;
914 PTRDIFF dpwszFaceName;
915 PTRDIFF dpwszUniqueName;
916 PTRDIFF dpFontSim;
917 LONG lEmbedId;
918 LONG lItalicAngle;
919 LONG lCharBias;
920 PTRDIFF dpCharSets;
921 BYTE jWinCharSet;
922 BYTE jWinPitchAndFamily;
923 USHORT usWinWeight;
924 ULONG flInfo;
925 USHORT fsSelection;
926 USHORT fsType;
927 FWORD fwdUnitsPerEm;
928 FWORD fwdLowestPPEm;
929 FWORD fwdWinAscender;
930 FWORD fwdWinDescender;
931 FWORD fwdMacAscender;
932 FWORD fwdMacDescender;
933 FWORD fwdMacLineGap;
934 FWORD fwdTypoAscender;
935 FWORD fwdTypoDescender;
936 FWORD fwdTypoLineGap;
937 FWORD fwdAveCharWidth;
938 FWORD fwdMaxCharInc;
939 FWORD fwdCapHeight;
940 FWORD fwdXHeight;
941 FWORD fwdSubscriptXSize;
942 FWORD fwdSubscriptYSize;
943 FWORD fwdSubscriptXOffset;
944 FWORD fwdSubscriptYOffset;
945 FWORD fwdSuperscriptXSize;
946 FWORD fwdSuperscriptYSize;
947 FWORD fwdSuperscriptXOffset;
948 FWORD fwdSuperscriptYOffset;
949 FWORD fwdUnderscoreSize;
950 FWORD fwdUnderscorePosition;
951 FWORD fwdStrikeoutSize;
952 FWORD fwdStrikeoutPosition;
953 BYTE chFirstChar;
954 BYTE chLastChar;
955 BYTE chDefaultChar;
956 BYTE chBreakChar;
957 WCHAR wcFirstChar;
958 WCHAR wcLastChar;
959 WCHAR wcDefaultChar;
960 WCHAR wcBreakChar;
961 POINTL ptlBaseline;
962 POINTL ptlAspect;
963 POINTL ptlCaret;
964 RECTL rclFontBox;
965 BYTE achVendId[4];
966 ULONG cKerningPairs;
967 ULONG ulPanoseCulture;
968 PANOSE panose;
969 #if defined(_WIN64)
970 PVOID Align;
971 #endif
972 } IFIMETRICS, *PIFIMETRICS;
973
974 /* LINEATTRS.fl */
975 #define LA_GEOMETRIC 0x00000001
976 #define LA_ALTERNATE 0x00000002
977 #define LA_STARTGAP 0x00000004
978 #define LA_STYLED 0x00000008
979
980 /* LINEATTRS.iJoin */
981 #define JOIN_ROUND 0L
982 #define JOIN_BEVEL 1L
983 #define JOIN_MITER 2L
984
985 /* LINEATTRS.iEndCap */
986 #define ENDCAP_ROUND 0L
987 #define ENDCAP_SQUARE 1L
988 #define ENDCAP_BUTT 2L
989
990 typedef struct _LINEATTRS {
991 FLONG fl;
992 ULONG iJoin;
993 ULONG iEndCap;
994 FLOAT_LONG elWidth;
995 FLOATL eMiterLimit;
996 ULONG cstyle;
997 PFLOAT_LONG pstyle;
998 FLOAT_LONG elStyleState;
999 } LINEATTRS, *PLINEATTRS;
1000
1001 typedef struct _PALOBJ {
1002 ULONG ulReserved;
1003 } PALOBJ;
1004
1005 typedef struct _PERBANDINFO {
1006 BOOL bRepeatThisBand;
1007 SIZEL szlBand;
1008 ULONG ulHorzRes;
1009 ULONG ulVertRes;
1010 } PERBANDINFO, *PPERBANDINFO;
1011
1012 /* STROBJ.flAccel constants */
1013 #define SO_FLAG_DEFAULT_PLACEMENT 0x00000001
1014 #define SO_HORIZONTAL 0x00000002
1015 #define SO_VERTICAL 0x00000004
1016 #define SO_REVERSED 0x00000008
1017 #define SO_ZERO_BEARINGS 0x00000010
1018 #define SO_CHAR_INC_EQUAL_BM_BASE 0x00000020
1019 #define SO_MAXEXT_EQUAL_BM_SIDE 0x00000040
1020 #define SO_DO_NOT_SUBSTITUTE_DEVICE_FONT 0x00000080
1021 #define SO_GLYPHINDEX_TEXTOUT 0x00000100
1022 #define SO_ESC_NOT_ORIENT 0x00000200
1023 #define SO_DXDY 0x00000400
1024 #define SO_CHARACTER_EXTRA 0x00000800
1025 #define SO_BREAK_EXTRA 0x00001000
1026
1027 typedef struct _STROBJ {
1028 ULONG cGlyphs;
1029 FLONG flAccel;
1030 ULONG ulCharInc;
1031 RECTL rclBkGround;
1032 GLYPHPOS *pgp;
1033 LPWSTR pwszOrg;
1034 } STROBJ;
1035
1036
1037
1038 /* SURFOBJ.iType constants */
1039 #define STYPE_BITMAP 0L
1040 #define STYPE_DEVICE 1L
1041 #define STYPE_DEVBITMAP 3L
1042
1043 /* SURFOBJ.fjBitmap constants */
1044 #define BMF_TOPDOWN 0x0001
1045 #define BMF_NOZEROINIT 0x0002
1046 #define BMF_DONTCACHE 0x0004
1047 #define BMF_USERMEM 0x0008
1048 #define BMF_KMSECTION 0x0010
1049 #define BMF_NOTSYSMEM 0x0020
1050 #define BMF_WINDOW_BLT 0x0040
1051 #define BMF_UMPDMEM 0x0080
1052 #define BMF_RESERVED 0xFF00
1053
1054 typedef struct _SURFOBJ {
1055 DHSURF dhsurf;
1056 HSURF hsurf;
1057 DHPDEV dhpdev;
1058 HDEV hdev;
1059 SIZEL sizlBitmap;
1060 ULONG cjBits;
1061 PVOID pvBits;
1062 PVOID pvScan0;
1063 LONG lDelta;
1064 ULONG iUniq;
1065 ULONG iBitmapFormat;
1066 USHORT iType;
1067 USHORT fjBitmap;
1068 } SURFOBJ;
1069
1070 typedef struct _TYPE1_FONT {
1071 HANDLE hPFM;
1072 HANDLE hPFB;
1073 ULONG ulIdentifier;
1074 } TYPE1_FONT;
1075
1076 typedef struct _WNDOBJ {
1077 CLIPOBJ coClient;
1078 PVOID pvConsumer;
1079 RECTL rclClient;
1080 SURFOBJ *psoOwner;
1081 } WNDOBJ, *PWNDOBJ;
1082
1083 typedef struct _XFORML {
1084 FLOATL eM11;
1085 FLOATL eM12;
1086 FLOATL eM21;
1087 FLOATL eM22;
1088 FLOATL eDx;
1089 FLOATL eDy;
1090 } XFORML, *PXFORML;
1091
1092 typedef struct _XFORMOBJ {
1093 ULONG ulReserved;
1094 } XFORMOBJ;
1095
1096 /* XLATEOBJ.flXlate constants */
1097 #define XO_TRIVIAL 0x00000001
1098 #define XO_TABLE 0x00000002
1099 #define XO_TO_MONO 0x00000004
1100 #define XO_FROM_CMYK 0x00000008
1101 #define XO_DEVICE_ICM 0x00000010
1102 #define XO_HOST_ICM 0x00000020
1103
1104 typedef struct _XLATEOBJ {
1105 ULONG iUniq;
1106 FLONG flXlate;
1107 USHORT iSrcType;
1108 USHORT iDstType;
1109 ULONG cEntries;
1110 ULONG *pulXlate;
1111 } XLATEOBJ;
1112
1113 typedef VOID (APIENTRY CALLBACK *WNDOBJCHANGEPROC)(
1114 IN WNDOBJ *pwo,
1115 IN FLONG fl);
1116
1117
1118 WIN32KAPI
1119 HANDLE
1120 APIENTRY
1121 BRUSHOBJ_hGetColorTransform(
1122 IN BRUSHOBJ *pbo);
1123
1124 WIN32KAPI
1125 PVOID
1126 APIENTRY
1127 BRUSHOBJ_pvAllocRbrush(
1128 IN BRUSHOBJ *pbo,
1129 IN ULONG cj);
1130
1131 WIN32KAPI
1132 PVOID
1133 APIENTRY
1134 BRUSHOBJ_pvGetRbrush(
1135 IN BRUSHOBJ *pbo);
1136
1137 WIN32KAPI
1138 ULONG
1139 APIENTRY
1140 BRUSHOBJ_ulGetBrushColor(
1141 IN BRUSHOBJ *pbo);
1142
1143 WIN32KAPI
1144 BOOL
1145 APIENTRY
1146 CLIPOBJ_bEnum(
1147 IN CLIPOBJ *pco,
1148 IN ULONG cj,
1149 OUT ULONG *pv);
1150
1151 /* CLIPOBJ_cEnumStart.iType constants */
1152 #define CT_RECTANGLES 0L
1153
1154 /* CLIPOBJ_cEnumStart.iDirection constants */
1155 #define CD_RIGHTDOWN 0x00000000
1156 #define CD_LEFTDOWN 0x00000001
1157 #define CD_LEFTWARDS 0x00000001
1158 #define CD_RIGHTUP 0x00000002
1159 #define CD_UPWARDS 0x00000002
1160 #define CD_LEFTUP 0x00000003
1161 #define CD_ANY 0x00000004
1162
1163 WIN32KAPI
1164 ULONG
1165 APIENTRY
1166 CLIPOBJ_cEnumStart(
1167 IN CLIPOBJ *pco,
1168 IN BOOL bAll,
1169 IN ULONG iType,
1170 IN ULONG iDirection,
1171 IN ULONG cLimit);
1172
1173 WIN32KAPI
1174 PATHOBJ*
1175 APIENTRY
1176 CLIPOBJ_ppoGetPath(
1177 IN CLIPOBJ *pco);
1178
1179 WIN32KAPI
1180 VOID
1181 APIENTRY
1182 EngAcquireSemaphore(
1183 IN HSEMAPHORE hsem);
1184
1185 #define FL_ZERO_MEMORY 0x00000001
1186 #define FL_NONPAGED_MEMORY 0x00000002
1187
1188 WIN32KAPI
1189 PVOID
1190 APIENTRY
1191 EngAllocMem(
1192 IN ULONG Flags,
1193 IN ULONG MemSize,
1194 IN ULONG Tag);
1195
1196 WIN32KAPI
1197 PVOID
1198 APIENTRY
1199 EngAllocPrivateUserMem(
1200 IN PDD_SURFACE_LOCAL psl,
1201 IN SIZE_T cj,
1202 IN ULONG tag);
1203
1204 WIN32KAPI
1205 PVOID
1206 APIENTRY
1207 EngAllocUserMem(
1208 IN SIZE_T cj,
1209 IN ULONG tag);
1210
1211 WIN32KAPI
1212 BOOL
1213 APIENTRY
1214 EngAlphaBlend(
1215 IN SURFOBJ *psoDest,
1216 IN SURFOBJ *psoSrc,
1217 IN CLIPOBJ *pco,
1218 IN XLATEOBJ *pxlo,
1219 IN RECTL *prclDest,
1220 IN RECTL *prclSrc,
1221 IN BLENDOBJ *pBlendObj);
1222
1223 /* EngAssociateSurface.flHooks constants */
1224 #define HOOK_BITBLT 0x00000001
1225 #define HOOK_STRETCHBLT 0x00000002
1226 #define HOOK_PLGBLT 0x00000004
1227 #define HOOK_TEXTOUT 0x00000008
1228 #define HOOK_PAINT 0x00000010
1229 #define HOOK_STROKEPATH 0x00000020
1230 #define HOOK_FILLPATH 0x00000040
1231 #define HOOK_STROKEANDFILLPATH 0x00000080
1232 #define HOOK_LINETO 0x00000100
1233 #define HOOK_COPYBITS 0x00000400
1234 #define HOOK_MOVEPANNING 0x00000800
1235 #define HOOK_SYNCHRONIZE 0x00001000
1236 #define HOOK_STRETCHBLTROP 0x00002000
1237 #define HOOK_SYNCHRONIZEACCESS 0x00004000
1238 #define HOOK_TRANSPARENTBLT 0x00008000
1239 #define HOOK_ALPHABLEND 0x00010000
1240 #define HOOK_GRADIENTFILL 0x00020000
1241 #define HOOK_FLAGS 0x0003b5ff
1242
1243 WIN32KAPI
1244 BOOL
1245 APIENTRY
1246 EngAssociateSurface(
1247 IN HSURF hsurf,
1248 IN HDEV hdev,
1249 IN FLONG flHooks);
1250
1251 WIN32KAPI
1252 BOOL
1253 APIENTRY
1254 EngBitBlt(
1255 IN SURFOBJ *psoTrg,
1256 IN SURFOBJ *psoSrc,
1257 IN SURFOBJ *psoMask,
1258 IN CLIPOBJ *pco,
1259 IN XLATEOBJ *pxlo,
1260 IN RECTL *prclTrg,
1261 IN POINTL *pptlSrc,
1262 IN POINTL *pptlMask,
1263 IN BRUSHOBJ *pbo,
1264 IN POINTL *pptlBrush,
1265 IN ROP4 rop4);
1266
1267 WIN32KAPI
1268 BOOL
1269 APIENTRY
1270 EngCheckAbort(
1271 IN SURFOBJ *pso);
1272
1273 WIN32KAPI
1274 VOID
1275 APIENTRY
1276 EngClearEvent(
1277 IN PEVENT pEvent);
1278
1279 WIN32KAPI
1280 FD_GLYPHSET*
1281 APIENTRY
1282 EngComputeGlyphSet(
1283 IN INT nCodePage,
1284 IN INT nFirstChar,
1285 IN INT cChars);
1286
1287 /* EngControlSprites.fl constants */
1288 #define ECS_TEARDOWN 0x00000001
1289 #define ECS_REDRAW 0x00000002
1290
1291 WIN32KAPI
1292 BOOL
1293 APIENTRY
1294 EngControlSprites(
1295 IN WNDOBJ *pwo,
1296 IN FLONG fl);
1297
1298 WIN32KAPI
1299 BOOL
1300 APIENTRY
1301 EngCopyBits(
1302 OUT SURFOBJ *psoDest,
1303 IN SURFOBJ *psoSrc,
1304 IN CLIPOBJ *pco,
1305 IN XLATEOBJ *pxlo,
1306 IN RECTL *prclDest,
1307 IN POINTL *pptlSrc);
1308
1309 WIN32KAPI
1310 HBITMAP
1311 APIENTRY
1312 EngCreateBitmap(
1313 IN SIZEL sizl,
1314 IN LONG lWidth,
1315 IN ULONG iFormat,
1316 IN FLONG fl,
1317 IN PVOID pvBits);
1318
1319 WIN32KAPI
1320 CLIPOBJ*
1321 APIENTRY
1322 EngCreateClip(
1323 VOID);
1324
1325 WIN32KAPI
1326 HBITMAP
1327 APIENTRY
1328 EngCreateDeviceBitmap(
1329 IN DHSURF dhsurf,
1330 IN SIZEL sizl,
1331 IN ULONG iFormatCompat);
1332
1333 WIN32KAPI
1334 HSURF
1335 APIENTRY
1336 EngCreateDeviceSurface(
1337 DHSURF dhsurf,
1338 SIZEL sizl,
1339 ULONG iFormatCompat);
1340
1341 #if 0
1342 WIN32KAPI
1343 HDRVOBJ
1344 APIENTRY
1345 EngCreateDriverObj(
1346 PVOID pvObj,
1347 FREEOBJPROC pFreeObjProc,
1348 HDEV hdev);
1349 #endif
1350
1351 WIN32KAPI
1352 BOOL
1353 APIENTRY
1354 EngCreateEvent(
1355 OUT PEVENT *ppEvent);
1356
1357 /* EngCreatePalette.iMode constants */
1358 #define PAL_INDEXED 0x00000001
1359 #define PAL_BITFIELDS 0x00000002
1360 #define PAL_RGB 0x00000004
1361 #define PAL_BGR 0x00000008
1362 #define PAL_CMYK 0x00000010
1363
1364 WIN32KAPI
1365 HPALETTE
1366 APIENTRY
1367 EngCreatePalette(
1368 IN ULONG iMode,
1369 IN ULONG cColors,
1370 IN ULONG *pulColors,
1371 IN FLONG flRed,
1372 IN FLONG flGreen,
1373 IN FLONG flBlue);
1374
1375 WIN32KAPI
1376 PATHOBJ*
1377 APIENTRY
1378 EngCreatePath(
1379 VOID);
1380
1381 WIN32KAPI
1382 HSEMAPHORE
1383 APIENTRY
1384 EngCreateSemaphore(
1385 VOID);
1386
1387 /* EngCreateWnd.fl constants */
1388 #define WO_RGN_CLIENT_DELTA 0x00000001
1389 #define WO_RGN_CLIENT 0x00000002
1390 #define WO_RGN_SURFACE_DELTA 0x00000004
1391 #define WO_RGN_SURFACE 0x00000008
1392 #define WO_RGN_UPDATE_ALL 0x00000010
1393 #define WO_RGN_WINDOW 0x00000020
1394 #define WO_DRAW_NOTIFY 0x00000040
1395 #define WO_SPRITE_NOTIFY 0x00000080
1396 #define WO_RGN_DESKTOP_COORD 0x00000100
1397
1398 WIN32KAPI
1399 WNDOBJ*
1400 APIENTRY
1401 EngCreateWnd(
1402 SURFOBJ *pso,
1403 HWND hwnd,
1404 WNDOBJCHANGEPROC pfn,
1405 FLONG fl,
1406 int iPixelFormat);
1407
1408 WIN32KAPI
1409 VOID
1410 APIENTRY
1411 EngDebugBreak(
1412 VOID);
1413
1414 WIN32KAPI
1415 VOID
1416 APIENTRY
1417 EngDebugPrint(
1418 IN PCHAR StandardPrefix,
1419 IN PCHAR DebugMessage,
1420 IN va_list ap);
1421
1422 WIN32KAPI
1423 VOID
1424 APIENTRY
1425 EngDeleteClip(
1426 IN CLIPOBJ *pco);
1427
1428 WIN32KAPI
1429 BOOL
1430 APIENTRY
1431 EngDeleteDriverObj(
1432 IN HDRVOBJ hdo,
1433 IN BOOL bCallBack,
1434 IN BOOL bLocked);
1435
1436 WIN32KAPI
1437 BOOL
1438 APIENTRY
1439 EngDeleteEvent(
1440 IN PEVENT pEvent);
1441
1442 WIN32KAPI
1443 BOOL
1444 APIENTRY
1445 EngDeleteFile(
1446 IN LPWSTR pwszFileName);
1447
1448 WIN32KAPI
1449 BOOL
1450 APIENTRY
1451 EngDeletePalette(
1452 IN HPALETTE hpal);
1453
1454 WIN32KAPI
1455 VOID
1456 APIENTRY
1457 EngDeletePath(
1458 IN PATHOBJ *ppo);
1459
1460 WIN32KAPI
1461 VOID
1462 APIENTRY
1463 EngDeleteSafeSemaphore(
1464 IN OUT ENGSAFESEMAPHORE *pssem);
1465
1466 WIN32KAPI
1467 VOID
1468 APIENTRY
1469 EngDeleteSemaphore(
1470 IN OUT HSEMAPHORE hsem);
1471
1472 WIN32KAPI
1473 BOOL
1474 APIENTRY
1475 EngDeleteSurface(
1476 IN HSURF hsurf);
1477
1478 WIN32KAPI
1479 VOID
1480 APIENTRY
1481 EngDeleteWnd(
1482 IN WNDOBJ *pwo);
1483
1484 WIN32KAPI
1485 DWORD
1486 APIENTRY
1487 EngDeviceIoControl(
1488 IN HANDLE hDevice,
1489 IN DWORD dwIoControlCode,
1490 IN LPVOID lpInBuffer,
1491 IN DWORD nInBufferSize,
1492 IN OUT LPVOID lpOutBuffer,
1493 IN DWORD nOutBufferSize,
1494 OUT LPDWORD lpBytesReturned);
1495
1496 WIN32KAPI
1497 ULONG
1498 APIENTRY
1499 EngDitherColor(
1500 IN HDEV hdev,
1501 IN ULONG iMode,
1502 IN ULONG rgb,
1503 OUT ULONG *pul);
1504
1505 WIN32KAPI
1506 BOOL
1507 APIENTRY
1508 EngEnumForms(
1509 IN HANDLE hPrinter,
1510 IN DWORD Level,
1511 OUT LPBYTE pForm,
1512 IN DWORD cbBuf,
1513 OUT LPDWORD pcbNeeded,
1514 OUT LPDWORD pcReturned);
1515
1516 WIN32KAPI
1517 BOOL
1518 APIENTRY
1519 EngEraseSurface(
1520 IN SURFOBJ *pso,
1521 IN RECTL *prcl,
1522 IN ULONG iColor);
1523
1524 WIN32KAPI
1525 BOOL
1526 APIENTRY
1527 EngFillPath(
1528 IN SURFOBJ *pso,
1529 IN PATHOBJ *ppo,
1530 IN CLIPOBJ *pco,
1531 IN BRUSHOBJ *pbo,
1532 IN POINTL *pptlBrushOrg,
1533 IN MIX mix,
1534 IN FLONG flOptions);
1535
1536 WIN32KAPI
1537 PVOID
1538 APIENTRY
1539 EngFindImageProcAddress(
1540 IN HANDLE hModule,
1541 IN LPSTR lpProcName);
1542
1543 WIN32KAPI
1544 PVOID
1545 APIENTRY
1546 EngFindResource(
1547 IN HANDLE h,
1548 IN int iName,
1549 IN int iType,
1550 OUT PULONG pulSize);
1551
1552 WIN32KAPI
1553 PVOID
1554 APIENTRY
1555 EngFntCacheAlloc(
1556 IN ULONG FastCheckSum,
1557 IN ULONG ulSize);
1558
1559 /* EngFntCacheFault.iFaultMode constants */
1560 #define ENG_FNT_CACHE_READ_FAULT 0x00000001
1561 #define ENG_FNT_CACHE_WRITE_FAULT 0x00000002
1562
1563 WIN32KAPI
1564 VOID
1565 APIENTRY
1566 EngFntCacheFault(
1567 IN ULONG ulFastCheckSum,
1568 IN ULONG iFaultMode);
1569
1570 WIN32KAPI
1571 PVOID
1572 APIENTRY
1573 EngFntCacheLookUp(
1574 IN ULONG FastCheckSum,
1575 OUT ULONG *pulSize);
1576
1577 WIN32KAPI
1578 VOID
1579 APIENTRY
1580 EngFreeMem(
1581 IN PVOID Mem);
1582
1583 WIN32KAPI
1584 VOID
1585 APIENTRY
1586 EngFreeModule(
1587 IN HANDLE h);
1588
1589 WIN32KAPI
1590 VOID
1591 APIENTRY
1592 EngFreePrivateUserMem(
1593 IN PDD_SURFACE_LOCAL psl,
1594 IN PVOID pv);
1595
1596 WIN32KAPI
1597 VOID
1598 APIENTRY
1599 EngFreeUserMem(
1600 IN PVOID pv);
1601
1602 WIN32KAPI
1603 VOID
1604 APIENTRY
1605 EngGetCurrentCodePage(
1606 OUT PUSHORT OemCodePage,
1607 OUT PUSHORT AnsiCodePage);
1608
1609 WIN32KAPI
1610 HANDLE
1611 APIENTRY
1612 EngGetCurrentProcessId(
1613 VOID);
1614
1615 WIN32KAPI
1616 HANDLE
1617 APIENTRY
1618 EngGetCurrentThreadId(
1619 VOID);
1620
1621 WIN32KAPI
1622 LPWSTR
1623 APIENTRY
1624 EngGetDriverName(
1625 IN HDEV hdev);
1626
1627 WIN32KAPI
1628 BOOL
1629 APIENTRY
1630 EngGetFileChangeTime(
1631 IN HANDLE h,
1632 OUT LARGE_INTEGER *pChangeTime);
1633
1634 WIN32KAPI
1635 BOOL
1636 APIENTRY
1637 EngGetFilePath(
1638 IN HANDLE h,
1639 OUT WCHAR (*pDest)[MAX_PATH+1]);
1640
1641 WIN32KAPI
1642 BOOL
1643 APIENTRY
1644 EngGetForm(
1645 IN HANDLE hPrinter,
1646 IN LPWSTR pFormName,
1647 IN DWORD Level,
1648 OUT LPBYTE pForm,
1649 IN DWORD cbBuf,
1650 OUT LPDWORD pcbNeeded);
1651
1652 WIN32KAPI
1653 ULONG
1654 APIENTRY
1655 EngGetLastError(
1656 VOID);
1657
1658 WIN32KAPI
1659 BOOL
1660 APIENTRY
1661 EngGetPrinter(
1662 IN HANDLE hPrinter,
1663 IN DWORD dwLevel,
1664 OUT LPBYTE pPrinter,
1665 IN DWORD cbBuf,
1666 OUT LPDWORD pcbNeeded);
1667
1668 WIN32KAPI
1669 DWORD
1670 APIENTRY
1671 EngGetPrinterData(
1672 IN HANDLE hPrinter,
1673 IN LPWSTR pValueName,
1674 OUT LPDWORD pType,
1675 OUT LPBYTE pData,
1676 IN DWORD nSize,
1677 OUT LPDWORD pcbNeeded);
1678
1679 WIN32KAPI
1680 LPWSTR
1681 APIENTRY
1682 EngGetPrinterDataFileName(
1683 IN HDEV hdev);
1684
1685 WIN32KAPI
1686 BOOL
1687 APIENTRY
1688 EngGetPrinterDriver(
1689 IN HANDLE hPrinter,
1690 IN LPWSTR pEnvironment,
1691 IN DWORD dwLevel,
1692 OUT BYTE *lpbDrvInfo,
1693 IN DWORD cbBuf,
1694 OUT DWORD *pcbNeeded);
1695
1696 WIN32KAPI
1697 HANDLE
1698 APIENTRY
1699 EngGetProcessHandle(
1700 VOID);
1701
1702 WIN32KAPI
1703 BOOL
1704 APIENTRY
1705 EngGetType1FontList(
1706 IN HDEV hdev,
1707 OUT TYPE1_FONT *pType1Buffer,
1708 IN ULONG cjType1Buffer,
1709 OUT PULONG pulLocalFonts,
1710 OUT PULONG pulRemoteFonts,
1711 OUT LARGE_INTEGER *pLastModified);
1712
1713 WIN32KAPI
1714 BOOL
1715 APIENTRY
1716 EngGradientFill(
1717 IN SURFOBJ *psoDest,
1718 IN CLIPOBJ *pco,
1719 IN XLATEOBJ *pxlo,
1720 IN TRIVERTEX *pVertex,
1721 IN ULONG nVertex,
1722 IN PVOID pMesh,
1723 IN ULONG nMesh,
1724 IN RECTL *prclExtents,
1725 IN POINTL *pptlDitherOrg,
1726 IN ULONG ulMode);
1727
1728 /* EngHangNotification return values */
1729 #define EHN_RESTORED 0x00000000
1730 #define EHN_ERROR 0x00000001
1731
1732 WIN32KAPI
1733 ULONG
1734 APIENTRY
1735 EngHangNotification(
1736 IN HDEV hDev,
1737 IN PVOID Reserved);
1738
1739 WIN32KAPI
1740 BOOL
1741 APIENTRY
1742 EngInitializeSafeSemaphore(
1743 OUT ENGSAFESEMAPHORE *pssem);
1744
1745 WIN32KAPI
1746 BOOL
1747 APIENTRY
1748 EngIsSemaphoreOwned(
1749 IN HSEMAPHORE hsem);
1750
1751 WIN32KAPI
1752 BOOL
1753 APIENTRY
1754 EngIsSemaphoreOwnedByCurrentThread(
1755 IN HSEMAPHORE hsem);
1756
1757 WIN32KAPI
1758 BOOL
1759 APIENTRY
1760 EngLineTo(
1761 SURFOBJ *pso,
1762 CLIPOBJ *pco,
1763 BRUSHOBJ *pbo,
1764 LONG x1,
1765 LONG y1,
1766 LONG x2,
1767 LONG y2,
1768 RECTL *prclBounds,
1769 MIX mix);
1770
1771 WIN32KAPI
1772 HANDLE
1773 APIENTRY
1774 EngLoadImage(
1775 IN LPWSTR pwszDriver);
1776
1777 WIN32KAPI
1778 HANDLE
1779 APIENTRY
1780 EngLoadModule(
1781 IN LPWSTR pwsz);
1782
1783 WIN32KAPI
1784 HANDLE
1785 APIENTRY
1786 EngLoadModuleForWrite(
1787 IN LPWSTR pwsz,
1788 IN ULONG cjSizeOfModule);
1789
1790 WIN32KAPI
1791 PDD_SURFACE_LOCAL
1792 APIENTRY
1793 EngLockDirectDrawSurface(
1794 IN HANDLE hSurface);
1795
1796 WIN32KAPI
1797 DRIVEROBJ*
1798 APIENTRY
1799 EngLockDriverObj(
1800 IN HDRVOBJ hdo);
1801
1802 WIN32KAPI
1803 SURFOBJ*
1804 APIENTRY
1805 EngLockSurface(
1806 IN HSURF hsurf);
1807
1808 WIN32KAPI
1809 BOOL
1810 APIENTRY
1811 EngLpkInstalled(
1812 VOID);
1813
1814 WIN32KAPI
1815 PEVENT
1816 APIENTRY
1817 EngMapEvent(
1818 IN HDEV hDev,
1819 IN HANDLE hUserObject,
1820 IN PVOID Reserved1,
1821 IN PVOID Reserved2,
1822 IN PVOID Reserved3);
1823
1824 WIN32KAPI
1825 PVOID
1826 APIENTRY
1827 EngMapFile(
1828 IN LPWSTR pwsz,
1829 IN ULONG cjSize,
1830 OUT ULONG_PTR *piFile);
1831
1832 WIN32KAPI
1833 BOOL
1834 APIENTRY
1835 EngMapFontFile(
1836 ULONG_PTR iFile,
1837 PULONG *ppjBuf,
1838 ULONG *pcjBuf);
1839
1840 WIN32KAPI
1841 BOOL
1842 APIENTRY
1843 EngMapFontFileFD(
1844 IN ULONG_PTR iFile,
1845 OUT PULONG *ppjBuf,
1846 OUT ULONG *pcjBuf);
1847
1848 WIN32KAPI
1849 PVOID
1850 APIENTRY
1851 EngMapModule(
1852 IN HANDLE h,
1853 OUT PULONG pSize);
1854
1855 WIN32KAPI
1856 BOOL
1857 APIENTRY
1858 EngMarkBandingSurface(
1859 IN HSURF hsurf);
1860
1861 /* EngModifySurface.flSurface constants */
1862 #define MS_NOTSYSTEMMEMORY 0x00000001
1863 #define MS_SHAREDACCESS 0x00000002
1864
1865 WIN32KAPI
1866 BOOL
1867 APIENTRY
1868 EngModifySurface(
1869 IN HSURF hsurf,
1870 IN HDEV hdev,
1871 IN FLONG flHooks,
1872 IN FLONG flSurface,
1873 IN DHSURF dhsurf,
1874 IN VOID *pvScan0,
1875 IN LONG lDelta,
1876 IN VOID *pvReserved);
1877
1878 WIN32KAPI
1879 VOID
1880 APIENTRY
1881 EngMovePointer(
1882 IN SURFOBJ *pso,
1883 IN LONG x,
1884 IN LONG y,
1885 IN RECTL *prcl);
1886
1887 WIN32KAPI
1888 int
1889 APIENTRY
1890 EngMulDiv(
1891 IN int a,
1892 IN int b,
1893 IN int c);
1894
1895 WIN32KAPI
1896 VOID
1897 APIENTRY
1898 EngMultiByteToUnicodeN(
1899 OUT LPWSTR UnicodeString,
1900 IN ULONG MaxBytesInUnicodeString,
1901 OUT PULONG BytesInUnicodeString,
1902 IN PCHAR MultiByteString,
1903 IN ULONG BytesInMultiByteString);
1904
1905 WIN32KAPI
1906 INT
1907 APIENTRY
1908 EngMultiByteToWideChar(
1909 IN UINT CodePage,
1910 OUT LPWSTR WideCharString,
1911 IN INT BytesInWideCharString,
1912 IN LPSTR MultiByteString,
1913 IN INT BytesInMultiByteString);
1914
1915 WIN32KAPI
1916 BOOL
1917 APIENTRY
1918 EngPaint(
1919 IN SURFOBJ *pso,
1920 IN CLIPOBJ *pco,
1921 IN BRUSHOBJ *pbo,
1922 IN POINTL *pptlBrushOrg,
1923 IN MIX mix);
1924
1925 WIN32KAPI
1926 BOOL
1927 APIENTRY
1928 EngPlgBlt(
1929 IN SURFOBJ *psoTrg,
1930 IN SURFOBJ *psoSrc,
1931 IN SURFOBJ *psoMsk,
1932 IN CLIPOBJ *pco,
1933 IN XLATEOBJ *pxlo,
1934 IN COLORADJUSTMENT *pca,
1935 IN POINTL *pptlBrushOrg,
1936 IN POINTFIX *pptfx,
1937 IN RECTL *prcl,
1938 IN POINTL *pptl,
1939 IN ULONG iMode);
1940
1941 WIN32KAPI
1942 VOID
1943 APIENTRY
1944 EngProbeForRead(
1945 IN PVOID Address,
1946 IN ULONG Length,
1947 IN ULONG Alignment);
1948
1949 WIN32KAPI
1950 VOID
1951 APIENTRY
1952 EngProbeForReadAndWrite(
1953 IN PVOID Address,
1954 IN ULONG Length,
1955 IN ULONG Alignment);
1956
1957 typedef enum _ENG_DEVICE_ATTRIBUTE {
1958 QDA_RESERVED = 0,
1959 QDA_ACCELERATION_LEVEL
1960 } ENG_DEVICE_ATTRIBUTE;
1961
1962 WIN32KAPI
1963 BOOL
1964 APIENTRY
1965 EngQueryDeviceAttribute(
1966 IN HDEV hdev,
1967 IN ENG_DEVICE_ATTRIBUTE devAttr,
1968 IN VOID *pvIn,
1969 IN ULONG ulInSize,
1970 OUT VOID *pvOut,
1971 OUT ULONG ulOutSize);
1972
1973 WIN32KAPI
1974 LARGE_INTEGER
1975 APIENTRY
1976 EngQueryFileTimeStamp(
1977 IN LPWSTR pwsz);
1978
1979 WIN32KAPI
1980 VOID
1981 APIENTRY
1982 EngQueryLocalTime(
1983 OUT PENG_TIME_FIELDS ptf);
1984
1985 WIN32KAPI
1986 ULONG
1987 APIENTRY
1988 EngQueryPalette(
1989 IN HPALETTE hPal,
1990 OUT ULONG *piMode,
1991 IN ULONG cColors,
1992 OUT ULONG *pulColors);
1993
1994 WIN32KAPI
1995 VOID
1996 APIENTRY
1997 EngQueryPerformanceCounter(
1998 OUT LONGLONG *pPerformanceCount);
1999
2000 WIN32KAPI
2001 VOID
2002 APIENTRY
2003 EngQueryPerformanceFrequency(
2004 OUT LONGLONG *pFrequency);
2005
2006 typedef enum _ENG_SYSTEM_ATTRIBUTE {
2007 EngProcessorFeature = 1,
2008 EngNumberOfProcessors,
2009 EngOptimumAvailableUserMemory,
2010 EngOptimumAvailableSystemMemory,
2011 } ENG_SYSTEM_ATTRIBUTE;
2012
2013 #define QSA_MMX 0x00000100
2014 #define QSA_SSE 0x00002000
2015 #define QSA_3DNOW 0x00004000
2016
2017 WIN32KAPI
2018 BOOL
2019 APIENTRY
2020 EngQuerySystemAttribute(
2021 IN ENG_SYSTEM_ATTRIBUTE CapNum,
2022 OUT PDWORD pCapability);
2023
2024 WIN32KAPI
2025 LONG
2026 APIENTRY
2027 EngReadStateEvent(
2028 IN PEVENT pEvent);
2029
2030 WIN32KAPI
2031 VOID
2032 APIENTRY
2033 EngReleaseSemaphore(
2034 IN HSEMAPHORE hsem);
2035
2036 WIN32KAPI
2037 BOOL
2038 APIENTRY
2039 EngRestoreFloatingPointState(
2040 IN VOID *pBuffer);
2041
2042 WIN32KAPI
2043 ULONG
2044 APIENTRY
2045 EngSaveFloatingPointState(
2046 OUT VOID *pBuffer,
2047 IN ULONG cjBufferSize);
2048
2049 WIN32KAPI
2050 HANDLE
2051 APIENTRY
2052 EngSecureMem(
2053 IN PVOID Address,
2054 IN ULONG Length);
2055
2056 WIN32KAPI
2057 LONG
2058 APIENTRY
2059 EngSetEvent(
2060 IN PEVENT pEvent);
2061
2062 WIN32KAPI
2063 VOID
2064 APIENTRY
2065 EngSetLastError(
2066 IN ULONG iError);
2067
2068 WIN32KAPI
2069 ULONG
2070 APIENTRY
2071 EngSetPointerShape(
2072 IN SURFOBJ *pso,
2073 IN SURFOBJ *psoMask,
2074 IN SURFOBJ *psoColor,
2075 IN XLATEOBJ *pxlo,
2076 IN LONG xHot,
2077 IN LONG yHot,
2078 IN LONG x,
2079 IN LONG y,
2080 IN RECTL *prcl,
2081 IN FLONG fl);
2082
2083 WIN32KAPI
2084 BOOL
2085 APIENTRY
2086 EngSetPointerTag(
2087 IN HDEV hdev,
2088 IN SURFOBJ *psoMask,
2089 IN SURFOBJ *psoColor,
2090 IN XLATEOBJ *pxlo,
2091 IN FLONG fl);
2092
2093 WIN32KAPI
2094 DWORD
2095 APIENTRY
2096 EngSetPrinterData(
2097 IN HANDLE hPrinter,
2098 IN LPWSTR pType,
2099 IN DWORD dwType,
2100 IN LPBYTE lpbPrinterData,
2101 IN DWORD cjPrinterData);
2102
2103 typedef int (CDECL *SORTCOMP)(const void *pv1, const void *pv2);
2104
2105 WIN32KAPI
2106 VOID
2107 APIENTRY
2108 EngSort(
2109 IN OUT PBYTE pjBuf,
2110 IN ULONG c,
2111 IN ULONG cjElem,
2112 IN SORTCOMP pfnComp);
2113
2114 WIN32KAPI
2115 BOOL
2116 APIENTRY
2117 EngStretchBlt(
2118 IN SURFOBJ *psoDest,
2119 IN SURFOBJ *psoSrc,
2120 IN SURFOBJ *psoMask,
2121 IN CLIPOBJ *pco,
2122 IN XLATEOBJ *pxlo,
2123 IN COLORADJUSTMENT *pca,
2124 IN POINTL *pptlHTOrg,
2125 IN RECTL *prclDest,
2126 IN RECTL *prclSrc,
2127 IN POINTL *pptlMask,
2128 IN ULONG iMode);
2129
2130 WIN32KAPI
2131 BOOL
2132 APIENTRY
2133 EngStretchBltROP(
2134 IN SURFOBJ *psoDest,
2135 IN SURFOBJ *psoSrc,
2136 IN SURFOBJ *psoMask,
2137 IN CLIPOBJ *pco,
2138 IN XLATEOBJ *pxlo,
2139 IN COLORADJUSTMENT *pca,
2140 IN POINTL *pptlHTOrg,
2141 IN RECTL *prclDest,
2142 IN RECTL *prclSrc,
2143 IN POINTL *pptlMask,
2144 IN ULONG iMode,
2145 IN BRUSHOBJ *pbo,
2146 IN DWORD rop4);
2147
2148 WIN32KAPI
2149 BOOL
2150 APIENTRY
2151 EngStrokeAndFillPath(
2152 IN SURFOBJ *pso,
2153 IN PATHOBJ *ppo,
2154 IN CLIPOBJ *pco,
2155 IN XFORMOBJ *pxo,
2156 IN BRUSHOBJ *pboStroke,
2157 IN LINEATTRS *plineattrs,
2158 IN BRUSHOBJ *pboFill,
2159 IN POINTL *pptlBrushOrg,
2160 IN MIX mixFill,
2161 IN FLONG flOptions);
2162
2163 WIN32KAPI
2164 BOOL
2165 APIENTRY
2166 EngStrokePath(
2167 IN SURFOBJ *pso,
2168 IN PATHOBJ *ppo,
2169 IN CLIPOBJ *pco,
2170 IN XFORMOBJ *pxo,
2171 IN BRUSHOBJ *pbo,
2172 IN POINTL *pptlBrushOrg,
2173 IN LINEATTRS *plineattrs,
2174 IN MIX mix);
2175
2176 WIN32KAPI
2177 BOOL
2178 APIENTRY
2179 EngTextOut(
2180 IN SURFOBJ *pso,
2181 IN STROBJ *pstro,
2182 IN FONTOBJ *pfo,
2183 IN CLIPOBJ *pco,
2184 IN RECTL *prclExtra,
2185 IN RECTL *prclOpaque,
2186 IN BRUSHOBJ *pboFore,
2187 IN BRUSHOBJ *pboOpaque,
2188 IN POINTL *pptlOrg,
2189 IN MIX mix);
2190
2191 WIN32KAPI
2192 BOOL
2193 APIENTRY
2194 EngTransparentBlt(
2195 IN SURFOBJ *psoDst,
2196 IN SURFOBJ *psoSrc,
2197 IN CLIPOBJ *pco,
2198 IN XLATEOBJ *pxlo,
2199 IN RECTL *prclDst,
2200 IN RECTL *prclSrc,
2201 IN ULONG iTransColor,
2202 IN ULONG ulReserved);
2203
2204 WIN32KAPI
2205 VOID
2206 APIENTRY
2207 EngUnicodeToMultiByteN(
2208 OUT PCHAR MultiByteString,
2209 IN ULONG MaxBytesInMultiByteString,
2210 OUT PULONG BytesInMultiByteString,
2211 IN PWSTR UnicodeString,
2212 IN ULONG BytesInUnicodeString);
2213
2214 WIN32KAPI
2215 VOID
2216 APIENTRY
2217 EngUnloadImage(
2218 IN HANDLE hModule);
2219
2220 WIN32KAPI
2221 BOOL
2222 APIENTRY
2223 EngUnlockDirectDrawSurface(
2224 IN PDD_SURFACE_LOCAL pSurface);
2225
2226 WIN32KAPI
2227 BOOL
2228 APIENTRY
2229 EngUnlockDriverObj(
2230 IN HDRVOBJ hdo);
2231
2232 WIN32KAPI
2233 VOID
2234 APIENTRY
2235 EngUnlockSurface(
2236 IN SURFOBJ *pso);
2237
2238 WIN32KAPI
2239 BOOL
2240 APIENTRY
2241 EngUnmapEvent(
2242 IN PEVENT pEvent);
2243
2244 WIN32KAPI
2245 BOOL
2246 APIENTRY
2247 EngUnmapFile(
2248 IN ULONG_PTR iFile);
2249
2250 WIN32KAPI
2251 VOID
2252 APIENTRY
2253 EngUnmapFontFile(
2254 ULONG_PTR iFile);
2255
2256 WIN32KAPI
2257 VOID
2258 APIENTRY
2259 EngUnmapFontFileFD(
2260 IN ULONG_PTR iFile);
2261
2262 WIN32KAPI
2263 VOID
2264 APIENTRY
2265 EngUnsecureMem(
2266 IN HANDLE hSecure);
2267
2268 WIN32KAPI
2269 BOOL
2270 APIENTRY
2271 EngWaitForSingleObject(
2272 IN PEVENT pEvent,
2273 IN PLARGE_INTEGER pTimeOut);
2274
2275 WIN32KAPI
2276 INT
2277 APIENTRY
2278 EngWideCharToMultiByte(
2279 IN UINT CodePage,
2280 IN LPWSTR WideCharString,
2281 IN INT BytesInWideCharString,
2282 OUT LPSTR MultiByteString,
2283 IN INT BytesInMultiByteString);
2284
2285 WIN32KAPI
2286 BOOL
2287 APIENTRY
2288 EngWritePrinter(
2289 IN HANDLE hPrinter,
2290 IN LPVOID pBuf,
2291 IN DWORD cbBuf,
2292 OUT LPDWORD pcWritten);
2293
2294 #if defined(_X86_) && !defined(USERMODE_DRIVER)
2295 WIN32KAPI
2296 VOID
2297 APIENTRY
2298 FLOATOBJ_Add(
2299 IN OUT PFLOATOBJ pf,
2300 IN PFLOATOBJ pf1);
2301
2302 WIN32KAPI
2303 VOID
2304 APIENTRY
2305 FLOATOBJ_AddFloat(
2306 IN OUT PFLOATOBJ pf,
2307 IN FLOATL f);
2308
2309 WIN32KAPI
2310 VOID
2311 APIENTRY
2312 FLOATOBJ_AddLong(
2313 IN OUT PFLOATOBJ pf,
2314 IN LONG l);
2315
2316 WIN32KAPI
2317 VOID
2318 APIENTRY
2319 FLOATOBJ_Div(
2320 IN OUT PFLOATOBJ pf,
2321 IN PFLOATOBJ pf1);
2322
2323 WIN32KAPI
2324 VOID
2325 APIENTRY
2326 FLOATOBJ_DivFloat(
2327 IN OUT PFLOATOBJ pf,
2328 IN FLOATL f);
2329
2330 WIN32KAPI
2331 VOID
2332 APIENTRY
2333 FLOATOBJ_DivLong(
2334 IN OUT PFLOATOBJ pf,
2335 IN LONG l);
2336
2337 WIN32KAPI
2338 BOOL
2339 APIENTRY
2340 FLOATOBJ_Equal(
2341 IN PFLOATOBJ pf,
2342 IN PFLOATOBJ pf1);
2343
2344 WIN32KAPI
2345 BOOL
2346 APIENTRY
2347 FLOATOBJ_EqualLong(
2348 IN PFLOATOBJ pf,
2349 IN LONG l);
2350
2351 WIN32KAPI
2352 LONG
2353 APIENTRY
2354 FLOATOBJ_GetFloat(
2355 IN PFLOATOBJ pf);
2356
2357 WIN32KAPI
2358 LONG
2359 APIENTRY
2360 FLOATOBJ_GetLong(
2361 IN PFLOATOBJ pf);
2362
2363 WIN32KAPI
2364 BOOL
2365 APIENTRY
2366 FLOATOBJ_GreaterThan(
2367 IN PFLOATOBJ pf,
2368 IN PFLOATOBJ pf1);
2369
2370 WIN32KAPI
2371 BOOL
2372 APIENTRY
2373 FLOATOBJ_GreaterThanLong(
2374 IN PFLOATOBJ pf,
2375 IN LONG l);
2376
2377 WIN32KAPI
2378 BOOL
2379 APIENTRY
2380 FLOATOBJ_LessThan(
2381 IN PFLOATOBJ pf,
2382 IN PFLOATOBJ pf1);
2383
2384 WIN32KAPI
2385 BOOL
2386 APIENTRY
2387 FLOATOBJ_LessThanLong(
2388 IN PFLOATOBJ pf,
2389 IN LONG l);
2390
2391 WIN32KAPI
2392 VOID
2393 APIENTRY
2394 FLOATOBJ_Mul(
2395 IN OUT PFLOATOBJ pf,
2396 IN PFLOATOBJ pf1);
2397
2398 WIN32KAPI
2399 VOID
2400 APIENTRY
2401 FLOATOBJ_MulFloat(
2402 IN OUT PFLOATOBJ pf,
2403 IN FLOATL f);
2404
2405 WIN32KAPI
2406 VOID
2407 APIENTRY
2408 FLOATOBJ_MulLong(
2409 IN OUT PFLOATOBJ pf,
2410 IN LONG l);
2411
2412 WIN32KAPI
2413 VOID
2414 APIENTRY
2415 FLOATOBJ_Neg(
2416 IN OUT PFLOATOBJ pf);
2417
2418 WIN32KAPI
2419 VOID
2420 APIENTRY
2421 FLOATOBJ_SetFloat(
2422 OUT PFLOATOBJ pf,
2423 IN FLOATL f);
2424
2425 WIN32KAPI
2426 VOID
2427 APIENTRY
2428 FLOATOBJ_SetLong(
2429 OUT PFLOATOBJ pf,
2430 IN LONG l);
2431
2432 WIN32KAPI
2433 VOID
2434 APIENTRY
2435 FLOATOBJ_Sub(
2436 IN OUT PFLOATOBJ pf,
2437 IN PFLOATOBJ pf1);
2438
2439 WIN32KAPI
2440 VOID
2441 APIENTRY
2442 FLOATOBJ_SubFloat(
2443 IN OUT PFLOATOBJ pf,
2444 IN FLOATL f);
2445
2446 WIN32KAPI
2447 VOID
2448 APIENTRY
2449 FLOATOBJ_SubLong(
2450 IN OUT PFLOATOBJ pf,
2451 IN LONG l);
2452
2453 #else
2454
2455 #define FLOATOBJ_SetFloat(pf, f) {*(pf) = (f);}
2456 #define FLOATOBJ_SetLong(pf, l) {*(pf) = (FLOAT)(l);}
2457 #define FLOATOBJ_GetFloat(pf) (*(PULONG)(pf))
2458 #define FLOATOBJ_GetLong(pf) ((LONG)*(pf))
2459 #define FLOATOBJ_Add(pf, pf1) {*(pf) += *(pf1);}
2460 #define FLOATOBJ_AddFloat(pf, f) {*(pf) += (f);}
2461 #define FLOATOBJ_AddLong(pf, l) {*(pf) += (l);}
2462 #define FLOATOBJ_Sub(pf, pf1) {*(pf) -= *(pf1);}
2463 #define FLOATOBJ_SubFloat(pf, f) {*(pf) -= (f);}
2464 #define FLOATOBJ_SubLong(pf, l) {*(pf) -= (l);}
2465 #define FLOATOBJ_Mul(pf, pf1) {*(pf) *= *(pf1);}
2466 #define FLOATOBJ_MulFloat(pf, f) {*(pf) *= (f);}
2467 #define FLOATOBJ_MulLong(pf, l) {*(pf) *= (l);}
2468 #define FLOATOBJ_Div(pf, pf1) {*(pf) /= *(pf1);}
2469 #define FLOATOBJ_DivFloat(pf, f) {*(pf) /= (f);}
2470 #define FLOATOBJ_DivLong(pf, l) {*(pf) /= (l);}
2471 #define FLOATOBJ_Neg(pf) {*(pf) = -(*(pf));}
2472 #define FLOATOBJ_Equal(pf, pf1) (*(pf) == *(pf1))
2473 #define FLOATOBJ_GreaterThan(pf, pf1) (*(pf) > *(pf1))
2474 #define FLOATOBJ_LessThan(pf, pf1) (*(pf) < *(pf1))
2475 #define FLOATOBJ_EqualLong(pf, l) (*(pf) == (FLOAT)(l))
2476 #define FLOATOBJ_GreaterThanLong(pf, l) (*(pf) > (FLOAT)(l))
2477 #define FLOATOBJ_LessThanLong(pf, l) (*(pf) < (FLOAT)(l))
2478
2479 #endif
2480
2481 WIN32KAPI
2482 ULONG
2483 APIENTRY
2484 FONTOBJ_cGetAllGlyphHandles(
2485 IN FONTOBJ *pfo,
2486 OUT HGLYPH *phg);
2487
2488 WIN32KAPI
2489 ULONG
2490 APIENTRY
2491 FONTOBJ_cGetGlyphs(
2492 IN FONTOBJ *pfo,
2493 IN ULONG iMode,
2494 IN ULONG cGlyph,
2495 IN HGLYPH *phg,
2496 OUT PVOID *ppvGlyph);
2497
2498 WIN32KAPI
2499 FD_GLYPHSET*
2500 APIENTRY
2501 FONTOBJ_pfdg(
2502 IN FONTOBJ *pfo);
2503
2504 WIN32KAPI
2505 IFIMETRICS*
2506 APIENTRY
2507 FONTOBJ_pifi(
2508 IN FONTOBJ *pfo);
2509
2510 WIN32KAPI
2511 PBYTE
2512 APIENTRY
2513 FONTOBJ_pjOpenTypeTablePointer(
2514 IN FONTOBJ *pfo,
2515 IN ULONG ulTag,
2516 OUT ULONG *pcjTable);
2517
2518 WIN32KAPI
2519 PFD_GLYPHATTR
2520 APIENTRY
2521 FONTOBJ_pQueryGlyphAttrs(
2522 IN FONTOBJ *pfo,
2523 IN ULONG iMode);
2524
2525 WIN32KAPI
2526 PVOID
2527 APIENTRY
2528 FONTOBJ_pvTrueTypeFontFile(
2529 IN FONTOBJ *pfo,
2530 OUT ULONG *pcjFile);
2531
2532 WIN32KAPI
2533 LPWSTR
2534 APIENTRY
2535 FONTOBJ_pwszFontFilePaths(
2536 IN FONTOBJ *pfo,
2537 OUT ULONG *pcwc);
2538
2539 WIN32KAPI
2540 XFORMOBJ*
2541 APIENTRY
2542 FONTOBJ_pxoGetXform(
2543 IN FONTOBJ *pfo);
2544
2545 WIN32KAPI
2546 VOID
2547 APIENTRY
2548 FONTOBJ_vGetInfo(
2549 IN FONTOBJ *pfo,
2550 IN ULONG cjSize,
2551 OUT FONTINFO *pfi);
2552
2553
2554
2555 WIN32KAPI
2556 LONG
2557 APIENTRY
2558 HT_ComputeRGBGammaTable(
2559 IN USHORT GammaTableEntries,
2560 IN USHORT GammaTableType,
2561 IN USHORT RedGamma,
2562 IN USHORT GreenGamma,
2563 IN USHORT BlueGamma,
2564 OUT LPBYTE pGammaTable);
2565
2566 WIN32KAPI
2567 LONG
2568 APIENTRY
2569 HT_Get8BPPFormatPalette(
2570 OUT LPPALETTEENTRY pPaletteEntry,
2571 IN USHORT RedGamma,
2572 IN USHORT GreenGamma,
2573 IN USHORT BlueGamma);
2574
2575 WIN32KAPI
2576 LONG
2577 APIENTRY
2578 HT_Get8BPPMaskPalette(
2579 IN OUT LPPALETTEENTRY pPaletteEntry,
2580 IN BOOL Use8BPPMaskPal,
2581 IN BYTE CMYMask,
2582 IN USHORT RedGamma,
2583 IN USHORT GreenGamma,
2584 IN USHORT BlueGamma);
2585
2586 WIN32KAPI
2587 LONG
2588 APIENTRY
2589 HTUI_DeviceColorAdjustment(
2590 IN LPSTR pDeviceName,
2591 OUT PDEVHTADJDATA pDevHTAdjData);
2592
2593 WIN32KAPI
2594 ULONG
2595 APIENTRY
2596 PALOBJ_cGetColors(
2597 IN PALOBJ *ppalo,
2598 IN ULONG iStart,
2599 IN ULONG cColors,
2600 OUT ULONG *pulColors);
2601
2602 WIN32KAPI
2603 BOOL
2604 APIENTRY
2605 PATHOBJ_bCloseFigure(
2606 IN PATHOBJ *ppo);
2607
2608 WIN32KAPI
2609 BOOL
2610 APIENTRY
2611 PATHOBJ_bEnum(
2612 IN PATHOBJ *ppo,
2613 OUT PATHDATA *ppd);
2614
2615 WIN32KAPI
2616 BOOL
2617 APIENTRY
2618 PATHOBJ_bEnumClipLines(
2619 IN PATHOBJ *ppo,
2620 IN ULONG cb,
2621 OUT CLIPLINE *pcl);
2622
2623 WIN32KAPI
2624 BOOL
2625 APIENTRY
2626 PATHOBJ_bMoveTo(
2627 IN PATHOBJ *ppo,
2628 IN POINTFIX ptfx);
2629
2630 WIN32KAPI
2631 BOOL
2632 APIENTRY
2633 PATHOBJ_bPolyBezierTo(
2634 IN PATHOBJ *ppo,
2635 IN POINTFIX *pptfx,
2636 IN ULONG cptfx);
2637
2638 WIN32KAPI
2639 BOOL
2640 APIENTRY
2641 PATHOBJ_bPolyLineTo(
2642 IN PATHOBJ *ppo,
2643 IN POINTFIX *pptfx,
2644 IN ULONG cptfx);
2645
2646 WIN32KAPI
2647 VOID
2648 APIENTRY
2649 PATHOBJ_vEnumStart(
2650 IN PATHOBJ *ppo);
2651
2652 WIN32KAPI
2653 VOID
2654 APIENTRY
2655 PATHOBJ_vEnumStartClipLines(
2656 IN PATHOBJ *ppo,
2657 IN CLIPOBJ *pco,
2658 IN SURFOBJ *pso,
2659 IN LINEATTRS *pla);
2660
2661 WIN32KAPI
2662 VOID
2663 APIENTRY
2664 PATHOBJ_vGetBounds(
2665 IN PATHOBJ *ppo,
2666 OUT PRECTFX prectfx);
2667
2668 WIN32KAPI
2669 BOOL
2670 APIENTRY
2671 STROBJ_bEnum(
2672 IN STROBJ *pstro,
2673 OUT ULONG *pc,
2674 OUT PGLYPHPOS *ppgpos);
2675
2676 WIN32KAPI
2677 BOOL
2678 APIENTRY
2679 STROBJ_bEnumPositionsOnly(
2680 IN STROBJ *pstro,
2681 OUT ULONG *pc,
2682 OUT PGLYPHPOS *ppgpos);
2683
2684 WIN32KAPI
2685 BOOL
2686 APIENTRY
2687 STROBJ_bGetAdvanceWidths(
2688 IN STROBJ *pso,
2689 IN ULONG iFirst,
2690 IN ULONG c,
2691 OUT POINTQF *pptqD);
2692
2693 WIN32KAPI
2694 DWORD
2695 APIENTRY
2696 STROBJ_dwGetCodePage(
2697 IN STROBJ *pstro);
2698
2699 WIN32KAPI
2700 FIX
2701 APIENTRY
2702 STROBJ_fxBreakExtra(
2703 IN STROBJ *pstro);
2704
2705 WIN32KAPI
2706 FIX
2707 APIENTRY
2708 STROBJ_fxCharacterExtra(
2709 IN STROBJ *pstro);
2710
2711 WIN32KAPI
2712 VOID
2713 APIENTRY
2714 STROBJ_vEnumStart(
2715 IN STROBJ *pstro);
2716
2717 WIN32KAPI
2718 BOOL
2719 APIENTRY
2720 WNDOBJ_bEnum(
2721 IN WNDOBJ *pwo,
2722 IN ULONG cj,
2723 OUT ULONG *pul);
2724
2725 WIN32KAPI
2726 ULONG
2727 APIENTRY
2728 WNDOBJ_cEnumStart(
2729 IN WNDOBJ *pwo,
2730 IN ULONG iType,
2731 IN ULONG iDirection,
2732 IN ULONG cLimit);
2733
2734 WIN32KAPI
2735 VOID
2736 APIENTRY
2737 WNDOBJ_vSetConsumer(
2738 IN WNDOBJ *pwo,
2739 IN PVOID pvConsumer);
2740
2741 /* XFORMOBJ_bApplyXform.iMode constants */
2742 #define XF_LTOL 0L
2743 #define XF_INV_LTOL 1L
2744 #define XF_LTOFX 2L
2745 #define XF_INV_FXTOL 3L
2746
2747 WIN32KAPI
2748 BOOL
2749 APIENTRY
2750 XFORMOBJ_bApplyXform(
2751 IN XFORMOBJ *pxo,
2752 IN ULONG iMode,
2753 IN ULONG cPoints,
2754 IN PVOID pvIn,
2755 OUT PVOID pvOut);
2756
2757 WIN32KAPI
2758 ULONG
2759 APIENTRY
2760 XFORMOBJ_iGetFloatObjXform(
2761 IN XFORMOBJ *pxo,
2762 OUT FLOATOBJ_XFORM *pxfo);
2763
2764 WIN32KAPI
2765 ULONG
2766 APIENTRY
2767 XFORMOBJ_iGetXform(
2768 IN XFORMOBJ *pxo,
2769 OUT XFORML *pxform);
2770
2771 /* XLATEOBJ_cGetPalette.iPal constants */
2772 #define XO_SRCPALETTE 1
2773 #define XO_DESTPALETTE 2
2774 #define XO_DESTDCPALETTE 3
2775 #define XO_SRCBITFIELDS 4
2776 #define XO_DESTBITFIELDS 5
2777
2778 WIN32KAPI
2779 ULONG
2780 APIENTRY
2781 XLATEOBJ_cGetPalette(
2782 IN XLATEOBJ *pxlo,
2783 IN ULONG iPal,
2784 IN ULONG cPal,
2785 OUT ULONG *pPal);
2786
2787 WIN32KAPI
2788 HANDLE
2789 APIENTRY
2790 XLATEOBJ_hGetColorTransform(
2791 IN XLATEOBJ *pxlo);
2792
2793 WIN32KAPI
2794 ULONG
2795 APIENTRY
2796 XLATEOBJ_iXlate(
2797 IN XLATEOBJ *pxlo,
2798 IN ULONG iColor);
2799
2800 WIN32KAPI
2801 ULONG*
2802 APIENTRY
2803 XLATEOBJ_piVector(
2804 IN XLATEOBJ *pxlo);
2805
2806
2807
2808 /* Graphics Driver Functions */
2809
2810 BOOL
2811 APIENTRY
2812 DrvAlphaBlend(
2813 IN SURFOBJ *psoDest,
2814 IN SURFOBJ *psoSrc,
2815 IN CLIPOBJ *pco,
2816 IN XLATEOBJ *pxlo,
2817 IN RECTL *prclDest,
2818 IN RECTL *prclSrc,
2819 IN BLENDOBJ *pBlendObj);
2820
2821 BOOL
2822 APIENTRY
2823 DrvAssertMode(
2824 IN DHPDEV dhpdev,
2825 IN BOOL bEnable);
2826
2827 BOOL
2828 APIENTRY
2829 DrvBitBlt(
2830 IN SURFOBJ *psoTrg,
2831 IN SURFOBJ *psoSrc,
2832 IN SURFOBJ *psoMask,
2833 IN CLIPOBJ *pco,
2834 IN XLATEOBJ *pxlo,
2835 IN RECTL *prclTrg,
2836 IN POINTL *pptlSrc,
2837 IN POINTL *pptlMask,
2838 IN BRUSHOBJ *pbo,
2839 IN POINTL *pptlBrush,
2840 IN ROP4 rop4);
2841
2842 VOID
2843 APIENTRY
2844 DrvCompletePDEV(
2845 IN DHPDEV dhpdev,
2846 IN HDEV hdev);
2847
2848 BOOL
2849 APIENTRY
2850 DrvCopyBits(
2851 IN SURFOBJ *psoDest,
2852 IN SURFOBJ *psoSrc,
2853 IN CLIPOBJ *pco,
2854 IN XLATEOBJ *pxlo,
2855 IN RECTL *prclDest,
2856 IN POINTL *pptlSrc);
2857
2858 HBITMAP
2859 APIENTRY
2860 DrvCreateDeviceBitmap(
2861 IN DHPDEV dhpdev,
2862 IN SIZEL sizl,
2863 IN ULONG iFormat);
2864
2865 VOID
2866 APIENTRY
2867 DrvDeleteDeviceBitmap(
2868 IN DHSURF dhsurf);
2869
2870 HBITMAP
2871 APIENTRY
2872 DrvDeriveSurface(
2873 DD_DIRECTDRAW_GLOBAL *pDirectDraw,
2874 DD_SURFACE_LOCAL *pSurface);
2875
2876 LONG
2877 APIENTRY
2878 DrvDescribePixelFormat(
2879 IN DHPDEV dhpdev,
2880 IN LONG iPixelFormat,
2881 IN ULONG cjpfd,
2882 OUT PIXELFORMATDESCRIPTOR *ppfd);
2883
2884 VOID
2885 APIENTRY
2886 DrvDestroyFont(
2887 IN FONTOBJ *pfo);
2888
2889 VOID
2890 APIENTRY
2891 DrvDisableDriver(
2892 VOID);
2893
2894 VOID
2895 APIENTRY
2896 DrvDisablePDEV(
2897 IN DHPDEV dhpdev);
2898
2899 VOID
2900 APIENTRY
2901 DrvDisableSurface(
2902 IN DHPDEV dhpdev);
2903
2904 #define DM_DEFAULT 0x00000001
2905 #define DM_MONOCHROME 0x00000002
2906
2907 ULONG
2908 APIENTRY
2909 DrvDitherColor(
2910 IN DHPDEV dhpdev,
2911 IN ULONG iMode,
2912 IN ULONG rgb,
2913 OUT ULONG *pul);
2914
2915 ULONG
2916 APIENTRY
2917 DrvDrawEscape(
2918 IN SURFOBJ *pso,
2919 IN ULONG iEsc,
2920 IN CLIPOBJ *pco,
2921 IN RECTL *prcl,
2922 IN ULONG cjIn,
2923 IN PVOID pvIn);
2924
2925 BOOL
2926 APIENTRY
2927 DrvEnableDriver(
2928 IN ULONG iEngineVersion,
2929 IN ULONG cj,
2930 OUT DRVENABLEDATA *pded);
2931
2932 DHPDEV
2933 APIENTRY
2934 DrvEnablePDEV(
2935 IN DEVMODEW *pdm,
2936 IN LPWSTR pwszLogAddress,
2937 IN ULONG cPat,
2938 OUT HSURF *phsurfPatterns,
2939 IN ULONG cjCaps,
2940 OUT ULONG *pdevcaps,
2941 IN ULONG cjDevInfo,
2942 OUT DEVINFO *pdi,
2943 IN HDEV hdev,
2944 IN LPWSTR pwszDeviceName,
2945 IN HANDLE hDriver);
2946
2947 HSURF
2948 APIENTRY
2949 DrvEnableSurface(
2950 IN DHPDEV dhpdev);
2951
2952 /* DrvEndDoc.fl constants */
2953 #define ED_ABORTDOC 0x00000001
2954
2955 BOOL
2956 APIENTRY
2957 DrvEndDoc(
2958 IN SURFOBJ *pso,
2959 IN FLONG fl);
2960
2961 ULONG
2962 APIENTRY
2963 DrvEscape(
2964 IN SURFOBJ *pso,
2965 IN ULONG iEsc,
2966 IN ULONG cjIn,
2967 IN PVOID pvIn,
2968 IN ULONG cjOut,
2969 OUT PVOID pvOut);
2970
2971 BOOL
2972 APIENTRY
2973 DrvFillPath(
2974 IN SURFOBJ *pso,
2975 IN PATHOBJ *ppo,
2976 IN CLIPOBJ *pco,
2977 IN BRUSHOBJ *pbo,
2978 IN POINTL *pptlBrushOrg,
2979 IN MIX mix,
2980 IN FLONG flOptions);
2981
2982 ULONG
2983 APIENTRY
2984 DrvFontManagement(
2985 IN SURFOBJ *pso,
2986 IN FONTOBJ *pfo,
2987 IN ULONG iMode,
2988 IN ULONG cjIn,
2989 IN PVOID pvIn,
2990 IN ULONG cjOut,
2991 OUT PVOID pvOut);
2992
2993 VOID
2994 APIENTRY
2995 DrvFree(
2996 IN PVOID pv,
2997 IN ULONG_PTR id);
2998
2999 /* DrvGetGlyphMode return values */
3000 #define FO_HGLYPHS 0L
3001 #define FO_GLYPHBITS 1L
3002 #define FO_PATHOBJ 2L
3003
3004 ULONG
3005 APIENTRY
3006 DrvGetGlyphMode(
3007 IN DHPDEV dhpdev,
3008 IN FONTOBJ *pfo);
3009
3010 ULONG
3011 APIENTRY
3012 DrvGetModes(
3013 IN HANDLE hDriver,
3014 IN ULONG cjSize,
3015 OUT DEVMODEW *pdm);
3016
3017 PVOID
3018 APIENTRY
3019 DrvGetTrueTypeFile(
3020 IN ULONG_PTR iFile,
3021 IN ULONG *pcj);
3022
3023 BOOL
3024 APIENTRY
3025 DrvGradientFill(
3026 IN SURFOBJ *psoDest,
3027 IN CLIPOBJ *pco,
3028 IN XLATEOBJ *pxlo,
3029 IN TRIVERTEX *pVertex,
3030 IN ULONG nVertex,
3031 IN PVOID pMesh,
3032 IN ULONG nMesh,
3033 IN RECTL *prclExtents,
3034 IN POINTL *pptlDitherOrg,
3035 IN ULONG ulMode);
3036
3037 BOOL
3038 APIENTRY
3039 DrvIcmCheckBitmapBits(
3040 IN DHPDEV dhpdev,
3041 IN HANDLE hColorTransform,
3042 IN SURFOBJ *pso,
3043 OUT PBYTE paResults);
3044
3045 HANDLE
3046 APIENTRY
3047 DrvIcmCreateColorTransform(
3048 IN DHPDEV dhpdev,
3049 IN LPLOGCOLORSPACEW pLogColorSpace,
3050 IN PVOID pvSourceProfile,
3051 IN ULONG cjSourceProfile,
3052 IN PVOID pvDestProfile,
3053 IN ULONG cjDestProfile,
3054 IN PVOID pvTargetProfile,
3055 IN ULONG cjTargetProfile,
3056 IN DWORD dwReserved);
3057
3058 BOOL
3059 APIENTRY
3060 DrvIcmDeleteColorTransform(
3061 IN DHPDEV dhpdev,
3062 IN HANDLE hcmXform);
3063
3064 /* DrvIcmSetDeviceGammaRamp.iFormat constants */
3065 #define IGRF_RGB_256BYTES 0x00000000
3066 #define IGRF_RGB_256WORDS 0x00000001
3067
3068 BOOL
3069 APIENTRY
3070 DrvIcmSetDeviceGammaRamp(
3071 IN DHPDEV dhpdev,
3072 IN ULONG iFormat,
3073 IN LPVOID lpRamp);
3074
3075 BOOL
3076 APIENTRY
3077 DrvLineTo(
3078 SURFOBJ *pso,
3079 CLIPOBJ *pco,
3080 BRUSHOBJ *pbo,
3081 LONG x1,
3082 LONG y1,
3083 LONG x2,
3084 LONG y2,
3085 RECTL *prclBounds,
3086 MIX mix);
3087
3088 ULONG_PTR
3089 APIENTRY
3090 DrvLoadFontFile(
3091 ULONG cFiles,
3092 ULONG_PTR *piFile,
3093 PVOID *ppvView,
3094 ULONG *pcjView,
3095 DESIGNVECTOR *pdv,
3096 ULONG ulLangID,
3097 ULONG ulFastCheckSum);
3098
3099 VOID
3100 APIENTRY
3101 DrvMovePointer(
3102 IN SURFOBJ *pso,
3103 IN LONG x,
3104 IN LONG y,
3105 IN RECTL *prcl);
3106
3107 BOOL
3108 APIENTRY
3109 DrvNextBand(
3110 IN SURFOBJ *pso,
3111 IN POINTL *pptl);
3112
3113 VOID
3114 APIENTRY
3115 DrvNotify(
3116 IN SURFOBJ *pso,
3117 IN ULONG iType,
3118 IN PVOID pvData);
3119
3120 BOOL
3121 APIENTRY
3122 DrvOffset(
3123 IN SURFOBJ *pso,
3124 IN LONG x,
3125 IN LONG y,
3126 IN FLONG flReserved);
3127
3128 BOOL
3129 APIENTRY
3130 DrvPaint(
3131 IN SURFOBJ *pso,
3132 IN CLIPOBJ *pco,
3133 IN BRUSHOBJ *pbo,
3134 IN POINTL *pptlBrushOrg,
3135 IN MIX mix);
3136
3137 BOOL
3138 APIENTRY
3139 DrvPlgBlt(
3140 IN SURFOBJ *psoTrg,
3141 IN SURFOBJ *psoSrc,
3142 IN SURFOBJ *psoMsk,
3143 IN CLIPOBJ *pco,
3144 IN XLATEOBJ *pxlo,
3145 IN COLORADJUSTMENT *pca,
3146 IN POINTL *pptlBrushOrg,
3147 IN POINTFIX *pptfx,
3148 IN RECTL *prcl,
3149 IN POINTL *pptl,
3150 IN ULONG iMode);
3151
3152 /* DrvQueryAdvanceWidths.iMode constants */
3153 #define QAW_GETWIDTHS 0
3154 #define QAW_GETEASYWIDTHS 1
3155
3156 BOOL
3157 APIENTRY
3158 DrvQueryAdvanceWidths(
3159 IN DHPDEV dhpdev,
3160 IN FONTOBJ *pfo,
3161 IN ULONG iMode,
3162 IN HGLYPH *phg,
3163 OUT PVOID pvWidths,
3164 IN ULONG cGlyphs);
3165
3166 /* DrvQueryDeviceSupport.iType constants */
3167 #define QDS_CHECKJPEGFORMAT 0x00000000
3168 #define QDS_CHECKPNGFORMAT 0x00000001
3169
3170 BOOL
3171 APIENTRY
3172 DrvQueryDeviceSupport(
3173 SURFOBJ *pso,
3174 XLATEOBJ *pxlo,
3175 XFORMOBJ *pxo,
3176 ULONG iType,
3177 ULONG cjIn,
3178 PVOID pvIn,
3179 ULONG cjOut,
3180 PVOID pvOut);
3181
3182 /* DrvQueryDriverInfo.dwMode constants */
3183 #define DRVQUERY_USERMODE 0x00000001
3184
3185 BOOL
3186 APIENTRY
3187 DrvQueryDriverInfo(
3188 DWORD dwMode,
3189 PVOID pBuffer,
3190 DWORD cbBuf,
3191 PDWORD pcbNeeded);
3192
3193 PIFIMETRICS
3194 APIENTRY
3195 DrvQueryFont(
3196 IN DHPDEV dhpdev,
3197 IN ULONG_PTR iFile,
3198 IN ULONG iFace,
3199 IN ULONG_PTR *pid);
3200
3201 /* DrvQueryFontCaps.pulCaps constants */
3202 #define QC_OUTLINES 0x00000001
3203 #define QC_1BIT 0x00000002
3204 #define QC_4BIT 0x00000004
3205
3206 #define QC_FONTDRIVERCAPS (QC_OUTLINES | QC_1BIT | QC_4BIT)
3207
3208 LONG
3209 APIENTRY
3210 DrvQueryFontCaps(
3211 IN ULONG culCaps,
3212 OUT ULONG *pulCaps);
3213
3214 /* DrvQueryFontData.iMode constants */
3215 #define QFD_GLYPHANDBITMAP 1L
3216 #define QFD_GLYPHANDOUTLINE 2L
3217 #define QFD_MAXEXTENTS 3L
3218 #define QFD_TT_GLYPHANDBITMAP 4L
3219 #define QFD_TT_GRAY1_BITMAP 5L
3220 #define QFD_TT_GRAY2_BITMAP 6L
3221 #define QFD_TT_GRAY4_BITMAP 8L
3222 #define QFD_TT_GRAY8_BITMAP 9L
3223
3224 #define QFD_TT_MONO_BITMAP QFD_TT_GRAY1_BITMAP
3225
3226 LONG
3227 APIENTRY
3228 DrvQueryFontData(
3229 IN DHPDEV dhpdev,
3230 IN FONTOBJ *pfo,
3231 IN ULONG iMode,
3232 IN HGLYPH hg,
3233 IN OUT GLYPHDATA *pgd,
3234 IN OUT PVOID pv,
3235 IN ULONG cjSize);
3236
3237 /* DrvQueryFontFile.ulMode constants */
3238 #define QFF_DESCRIPTION 0x00000001
3239 #define QFF_NUMFACES 0x00000002
3240
3241 LONG
3242 APIENTRY
3243 DrvQueryFontFile(
3244 IN ULONG_PTR iFile,
3245 IN ULONG ulMode,
3246 IN ULONG cjBuf,
3247 IN ULONG *pulBuf);
3248
3249 /* DrvQueryFontTree.iMode constants */
3250 #define QFT_UNICODE 0L
3251 #define QFT_LIGATURES 1L
3252 #define QFT_KERNPAIRS 2L
3253 #define QFT_GLYPHSET 3L
3254
3255 PVOID
3256 APIENTRY
3257 DrvQueryFontTree(
3258 IN DHPDEV dhpdev,
3259 IN ULONG_PTR iFile,
3260 IN ULONG iFace,
3261 IN ULONG iMode,
3262 IN ULONG_PTR *pid);
3263
3264 PFD_GLYPHATTR
3265 APIENTRY
3266 DrvQueryGlyphAttrs(
3267 IN FONTOBJ *pfo,
3268 IN ULONG iMode);
3269
3270 ULONG
3271 APIENTRY
3272 DrvQueryPerBandInfo(
3273 IN SURFOBJ *pso,
3274 IN OUT PERBANDINFO *pbi);
3275
3276 /* DrvQueryTrueTypeOutline.bMetricsOnly constants */
3277 #define TTO_METRICS_ONLY 0x00000001
3278 #define TTO_QUBICS 0x00000002
3279 #define TTO_UNHINTED 0x00000004
3280
3281 LONG
3282 APIENTRY
3283 DrvQueryTrueTypeOutline(
3284 IN DHPDEV dhpdev,
3285 IN FONTOBJ *pfo,
3286 IN HGLYPH hglyph,
3287 IN BOOL bMetricsOnly,
3288 IN GLYPHDATA *pgldt,
3289 IN ULONG cjBuf,
3290 OUT TTPOLYGONHEADER *ppoly);
3291
3292 LONG
3293 APIENTRY
3294 DrvQueryTrueTypeTable(
3295 IN ULONG_PTR iFile,
3296 IN ULONG ulFont,
3297 IN ULONG ulTag,
3298 IN PTRDIFF dpStart,
3299 IN ULONG cjBuf,
3300 OUT BYTE *pjBuf,
3301 OUT PBYTE *ppjTable,
3302 OUT ULONG *pcjTable);
3303
3304 /* DrvRealizeBrush.iHatch constants */
3305 #define RB_DITHERCOLOR 0x80000000L
3306
3307 #define HS_DDI_MAX 6
3308
3309 BOOL
3310 APIENTRY
3311 DrvRealizeBrush(
3312 IN BRUSHOBJ *pbo,
3313 IN SURFOBJ *psoTarget,
3314 IN SURFOBJ *psoPattern,
3315 IN SURFOBJ *psoMask,
3316 IN XLATEOBJ *pxlo,
3317 IN ULONG iHatch);
3318
3319 /* DrvResetDevice return values */
3320 #define DRD_SUCCESS 0
3321 #define DRD_ERROR 1
3322
3323 ULONG
3324 APIENTRY
3325 DrvResetDevice(
3326 IN DHPDEV dhpdev,
3327 IN PVOID Reserved);
3328
3329 BOOL
3330 APIENTRY
3331 DrvResetPDEV(
3332 DHPDEV dhpdevOld,
3333 DHPDEV dhpdevNew);
3334
3335 /* DrvSaveScreenBits.iMode constants */
3336 #define SS_SAVE 0x00000000
3337 #define SS_RESTORE 0x00000001
3338 #define SS_FREE 0x00000002
3339
3340 ULONG_PTR
3341 APIENTRY
3342 DrvSaveScreenBits(
3343 IN SURFOBJ *pso,
3344 IN ULONG iMode,
3345 IN ULONG_PTR ident,
3346 IN RECTL *prcl);
3347
3348 BOOL
3349 APIENTRY
3350 DrvSendPage(
3351 IN SURFOBJ *pso);
3352
3353 BOOL
3354 APIENTRY
3355 DrvSetPalette(
3356 IN DHPDEV dhpdev,
3357 IN PALOBJ *ppalo,
3358 IN FLONG fl,
3359 IN ULONG iStart,
3360 IN ULONG cColors);
3361
3362 BOOL
3363 APIENTRY
3364 DrvSetPixelFormat(
3365 IN SURFOBJ *pso,
3366 IN LONG iPixelFormat,
3367 IN HWND hwnd);
3368
3369 /* DrvSetPointerShape return values */
3370 #define SPS_ERROR 0x00000000
3371 #define SPS_DECLINE 0x00000001
3372 #define SPS_ACCEPT_NOEXCLUDE 0x00000002
3373 #define SPS_ACCEPT_EXCLUDE 0x00000003
3374 #define SPS_ACCEPT_SYNCHRONOUS 0x00000004
3375
3376 /* DrvSetPointerShape.fl constants */
3377 #define SPS_CHANGE 0x00000001L
3378 #define SPS_ASYNCCHANGE 0x00000002L
3379 #define SPS_ANIMATESTART 0x00000004L
3380 #define SPS_ANIMATEUPDATE 0x00000008L
3381 #define SPS_ALPHA 0x00000010L
3382 #define SPS_LENGTHMASK 0x00000F00L
3383 #define SPS_FREQMASK 0x000FF000L
3384
3385 ULONG
3386 APIENTRY
3387 DrvSetPointerShape(
3388 IN SURFOBJ *pso,
3389 IN SURFOBJ *psoMask,
3390 IN SURFOBJ *psoColor,
3391 IN XLATEOBJ *pxlo,
3392 IN LONG xHot,
3393 IN LONG yHot,
3394 IN LONG x,
3395 IN LONG y,
3396 IN RECTL *prcl,
3397 IN FLONG fl);
3398
3399 BOOL
3400 APIENTRY
3401 DrvStartBanding(
3402 IN SURFOBJ *pso,
3403 IN POINTL *pptl);
3404
3405 BOOL
3406 APIENTRY
3407 DrvStartDoc(
3408 IN SURFOBJ *pso,
3409 IN LPWSTR pwszDocName,
3410 IN DWORD dwJobId);
3411
3412 BOOL
3413 APIENTRY
3414 DrvStartPage(
3415 IN SURFOBJ *pso);
3416
3417 BOOL
3418 APIENTRY
3419 DrvStretchBlt(
3420 IN SURFOBJ *psoDest,
3421 IN SURFOBJ *psoSrc,
3422 IN SURFOBJ *psoMask,
3423 IN CLIPOBJ *pco,
3424 IN XLATEOBJ *pxlo,
3425 IN COLORADJUSTMENT *pca,
3426 IN POINTL *pptlHTOrg,
3427 IN RECTL *prclDest,
3428 IN RECTL *prclSrc,
3429 IN POINTL *pptlMask,
3430 IN ULONG iMode);
3431
3432 BOOL
3433 APIENTRY
3434 DrvStretchBltROP(
3435 IN SURFOBJ *psoDest,
3436 IN SURFOBJ *psoSrc,
3437 IN SURFOBJ *psoMask,
3438 IN CLIPOBJ *pco,
3439 IN XLATEOBJ *pxlo,
3440 IN COLORADJUSTMENT *pca,
3441 IN POINTL *pptlHTOrg,
3442 IN RECTL *prclDest,
3443 IN RECTL *prclSrc,
3444 IN POINTL *pptlMask,
3445 IN ULONG iMode,
3446 IN BRUSHOBJ *pbo,
3447 IN DWORD rop4);
3448
3449 BOOL
3450 APIENTRY
3451 DrvStrokeAndFillPath(
3452 IN SURFOBJ *pso,
3453 IN PATHOBJ *ppo,
3454 IN CLIPOBJ *pco,
3455 IN XFORMOBJ *pxo,
3456 IN BRUSHOBJ *pboStroke,
3457 IN LINEATTRS *plineattrs,
3458 IN BRUSHOBJ *pboFill,
3459 IN POINTL *pptlBrushOrg,
3460 IN MIX mixFill,
3461 IN FLONG flOptions);
3462
3463 BOOL
3464 APIENTRY
3465 DrvStrokePath(
3466 IN SURFOBJ *pso,
3467 IN PATHOBJ *ppo,
3468 IN CLIPOBJ *pco,
3469 IN XFORMOBJ *pxo,
3470 IN BRUSHOBJ *pbo,
3471 IN POINTL *pptlBrushOrg,
3472 IN LINEATTRS *plineattrs,
3473 IN MIX mix);
3474
3475 BOOL
3476 APIENTRY
3477 DrvSwapBuffers(
3478 IN SURFOBJ *pso,
3479 IN WNDOBJ *pwo);
3480
3481 VOID
3482 APIENTRY
3483 DrvSynchronize(
3484 IN DHPDEV dhpdev,
3485 IN RECTL *prcl);
3486
3487 /* DrvSynchronizeSurface.fl constants */
3488 #define DSS_TIMER_EVENT 0x00000001
3489 #define DSS_FLUSH_EVENT 0x00000002
3490
3491 VOID
3492 APIENTRY
3493 DrvSynchronizeSurface(
3494 IN SURFOBJ *pso,
3495 IN RECTL *prcl,
3496 IN FLONG fl);
3497
3498 BOOL
3499 APIENTRY
3500 DrvTextOut(
3501 IN SURFOBJ *pso,
3502 IN STROBJ *pstro,
3503 IN FONTOBJ *pfo,
3504 IN CLIPOBJ *pco,
3505 IN RECTL *prclExtra,
3506 IN RECTL *prclOpaque,
3507 IN BRUSHOBJ *pboFore,
3508 IN BRUSHOBJ *pboOpaque,
3509 IN POINTL *pptlOrg,
3510 IN MIX mix);
3511
3512 BOOL
3513 APIENTRY
3514 DrvTransparentBlt(
3515 IN SURFOBJ *psoDst,
3516 IN SURFOBJ *psoSrc,
3517 IN CLIPOBJ *pco,
3518 IN XLATEOBJ *pxlo,
3519 IN RECTL *prclDst,
3520 IN RECTL *prclSrc,
3521 IN ULONG iTransColor,
3522 IN ULONG ulReserved);
3523
3524 BOOL
3525 APIENTRY
3526 DrvUnloadFontFile(
3527 IN ULONG_PTR iFile);
3528
3529 /* WNDOBJCHANGEPROC.fl constants */
3530 #define WOC_RGN_CLIENT_DELTA 0x00000001
3531 #define WOC_RGN_CLIENT 0x00000002
3532 #define WOC_RGN_SURFACE_DELTA 0x00000004
3533 #define WOC_RGN_SURFACE 0x00000008
3534 #define WOC_CHANGED 0x00000010
3535 #define WOC_DELETE 0x00000020
3536 #define WOC_DRAWN 0x00000040
3537 #define WOC_SPRITE_OVERLAP 0x00000080
3538 #define WOC_SPRITE_NO_OVERLAP 0x00000100
3539
3540 typedef VOID
3541 (APIENTRY CALLBACK * WNDOBJCHANGEPROC)(
3542 WNDOBJ *pwo,
3543 FLONG fl);
3544
3545
3546 typedef BOOL
3547 (APIENTRY *PFN_DrvAlphaBlend)(
3548 IN SURFOBJ *psoDest,
3549 IN SURFOBJ *psoSrc,
3550 IN CLIPOBJ *pco,
3551 IN XLATEOBJ *pxlo,
3552 IN RECTL *prclDest,
3553 IN RECTL *prclSrc,
3554 IN BLENDOBJ *pBlendObj);
3555
3556 typedef BOOL
3557 (APIENTRY *PFN_DrvAssertMode)(
3558 IN DHPDEV dhpdev,
3559 IN BOOL bEnable);
3560
3561 typedef BOOL
3562 (APIENTRY *PFN_DrvBitBlt)(
3563 IN SURFOBJ *psoTrg,
3564 IN SURFOBJ *psoSrc,
3565 IN SURFOBJ *psoMask,
3566 IN CLIPOBJ *pco,
3567 IN XLATEOBJ *pxlo,
3568 IN RECTL *prclTrg,
3569 IN POINTL *pptlSrc,
3570 IN POINTL *pptlMask,
3571 IN BRUSHOBJ *pbo,
3572 IN POINTL *pptlBrush,
3573 IN ROP4 rop4);
3574
3575 typedef VOID
3576 (APIENTRY *PFN_DrvCompletePDEV)(
3577 IN DHPDEV dhpdev,
3578 IN HDEV hdev);
3579
3580 typedef BOOL
3581 (APIENTRY *PFN_DrvCopyBits)(
3582 IN SURFOBJ *psoDest,
3583 IN SURFOBJ *psoSrc,
3584 IN CLIPOBJ *pco,
3585 IN XLATEOBJ *pxlo,
3586 IN RECTL *prclDest,
3587 IN POINTL *pptlSrc);
3588
3589 typedef HBITMAP
3590 (APIENTRY *PFN_DrvCreateDeviceBitmap)(
3591 IN DHPDEV dhpdev,
3592 IN SIZEL sizl,
3593 IN ULONG iFormat);
3594
3595 typedef VOID
3596 (APIENTRY *PFN_DrvDeleteDeviceBitmap)(
3597 IN DHSURF dhsurf);
3598
3599 typedef HBITMAP
3600 (APIENTRY *PFN_DrvDeriveSurface)(
3601 DD_DIRECTDRAW_GLOBAL *pDirectDraw,
3602 DD_SURFACE_LOCAL *pSurface);
3603
3604 typedef LONG
3605 (APIENTRY *PFN_DrvDescribePixelFormat)(
3606 IN DHPDEV dhpdev,
3607 IN LONG iPixelFormat,
3608 IN ULONG cjpfd,
3609 OUT PIXELFORMATDESCRIPTOR *ppfd);
3610
3611 typedef VOID
3612 (APIENTRY *PFN_DrvDestroyFont)(
3613 IN FONTOBJ *pfo);
3614
3615 typedef VOID
3616 (APIENTRY *PFN_DrvDisableDriver)(
3617 VOID);
3618
3619 typedef VOID
3620 (APIENTRY *PFN_DrvDisablePDEV)(
3621 IN DHPDEV dhpdev);
3622
3623 typedef VOID
3624 (APIENTRY *PFN_DrvDisableSurface)(
3625 IN DHPDEV dhpdev);
3626
3627 typedef ULONG
3628 (APIENTRY *PFN_DrvDitherColor)(
3629 IN DHPDEV dhpdev,
3630 IN ULONG iMode,
3631 IN ULONG rgb,
3632 OUT ULONG *pul);
3633
3634 typedef ULONG
3635 (APIENTRY *PFN_DrvDrawEscape)(
3636 IN SURFOBJ *pso,
3637 IN ULONG iEsc,
3638 IN CLIPOBJ *pco,
3639 IN RECTL *prcl,
3640 IN ULONG cjIn,
3641 IN PVOID pvIn);
3642
3643 typedef BOOL
3644 (APIENTRY *PFN_DrvEnableDriver)(
3645 IN ULONG iEngineVersion,
3646 IN ULONG cj,
3647 OUT DRVENABLEDATA *pded);
3648 #if 0
3649 typedef DHPDEV
3650 (APIENTRY *PFN_DrvEnablePDEV)(
3651 IN DEVMODEW *pdm,
3652 IN LPWSTR pwszLogAddress,
3653 IN ULONG cPat,
3654 OUT HSURF *phsurfPatterns,
3655 IN ULONG cjCaps,
3656 OUT ULONG *pdevcaps,
3657 IN ULONG cjDevInfo,
3658 OUT DEVINFO *pdi,
3659 IN HDEV hdev,
3660 IN LPWSTR pwszDeviceName,
3661 IN HANDLE hDriver);
3662 #endif
3663
3664 typedef HSURF
3665 (APIENTRY *PFN_DrvEnableSurface)(
3666 IN DHPDEV dhpdev);
3667
3668 typedef BOOL
3669 (APIENTRY *PFN_DrvEndDoc)(
3670 IN SURFOBJ *pso,
3671 IN FLONG fl);
3672
3673 typedef ULONG
3674 (APIENTRY *PFN_DrvEscape)(
3675 IN SURFOBJ *pso,
3676 IN ULONG iEsc,
3677 IN ULONG cjIn,
3678 IN PVOID pvIn,
3679 IN ULONG cjOut,
3680 OUT PVOID pvOut);
3681
3682 typedef BOOL
3683 (APIENTRY *PFN_DrvFillPath)(
3684 IN SURFOBJ *pso,
3685 IN PATHOBJ *ppo,
3686 IN CLIPOBJ *pco,
3687 IN BRUSHOBJ *pbo,
3688 IN POINTL *pptlBrushOrg,
3689 IN MIX mix,
3690 IN FLONG flOptions);
3691
3692 typedef ULONG
3693 (APIENTRY *PFN_DrvFontManagement)(
3694 IN SURFOBJ *pso,
3695 IN FONTOBJ *pfo,
3696 IN ULONG iMode,
3697 IN ULONG cjIn,
3698 IN PVOID pvIn,
3699 IN ULONG cjOut,
3700 OUT PVOID pvOut);
3701
3702 typedef VOID
3703 (APIENTRY *PFN_DrvFree)(
3704 IN PVOID pv,
3705 IN ULONG_PTR id);
3706
3707 typedef ULONG
3708 (APIENTRY *PFN_DrvGetGlyphMode)(
3709 IN DHPDEV dhpdev,
3710 IN FONTOBJ *pfo);
3711
3712 typedef ULONG
3713 (APIENTRY *PFN_DrvGetModes)(
3714 IN HANDLE hDriver,
3715 IN ULONG cjSize,
3716 OUT DEVMODEW *pdm);
3717
3718 typedef PVOID
3719 (APIENTRY *PFN_DrvGetTrueTypeFile)(
3720 IN ULONG_PTR iFile,
3721 IN ULONG *pcj);
3722
3723 typedef BOOL
3724 (APIENTRY *PFN_DrvGradientFill)(
3725 IN SURFOBJ *psoDest,
3726 IN CLIPOBJ *pco,
3727 IN XLATEOBJ *pxlo,
3728 IN TRIVERTEX *pVertex,
3729 IN ULONG nVertex,
3730 IN PVOID pMesh,
3731 IN ULONG nMesh,
3732 IN RECTL *prclExtents,
3733 IN POINTL *pptlDitherOrg,
3734 IN ULONG ulMode);
3735
3736 typedef BOOL
3737 (APIENTRY *PFN_DrvIcmCheckBitmapBits)(
3738 IN DHPDEV dhpdev,
3739 IN HANDLE hColorTransform,
3740 IN SURFOBJ *pso,
3741 OUT PBYTE paResults);
3742
3743 typedef HANDLE
3744 (APIENTRY *PFN_DrvIcmCreateColorTransform)(
3745 IN DHPDEV dhpdev,
3746 IN LPLOGCOLORSPACEW pLogColorSpace,
3747 IN PVOID pvSourceProfile,
3748 IN ULONG cjSourceProfile,
3749 IN PVOID pvDestProfile,
3750 IN ULONG cjDestProfile,
3751 IN PVOID pvTargetProfile,
3752 IN ULONG cjTargetProfile,
3753 IN DWORD dwReserved);
3754
3755 typedef BOOL
3756 (APIENTRY *PFN_DrvIcmDeleteColorTransform)(
3757 IN DHPDEV dhpdev,
3758 IN HANDLE hcmXform);
3759
3760 typedef BOOL
3761 (APIENTRY *PFN_DrvIcmSetDeviceGammaRamp)(
3762 IN DHPDEV dhpdev,
3763 IN ULONG iFormat,
3764 IN LPVOID lpRamp);
3765
3766 typedef BOOL
3767 (APIENTRY *PFN_DrvLineTo)(
3768 SURFOBJ *pso,
3769 CLIPOBJ *pco,
3770 BRUSHOBJ *pbo,
3771 LONG x1,
3772 LONG y1,
3773 LONG x2,
3774 LONG y2,
3775 RECTL *prclBounds,
3776 MIX mix);
3777
3778 typedef ULONG_PTR
3779 (APIENTRY *PFN_DrvLoadFontFile)(
3780 ULONG cFiles,
3781 ULONG_PTR *piFile,
3782 PVOID *ppvView,
3783 ULONG *pcjView,
3784 DESIGNVECTOR *pdv,
3785 ULONG ulLangID,
3786 ULONG ulFastCheckSum);
3787
3788 typedef VOID
3789 (APIENTRY *PFN_DrvMovePointer)(
3790 IN SURFOBJ *pso,
3791 IN LONG x,
3792 IN LONG y,
3793 IN RECTL *prcl);
3794
3795 typedef BOOL
3796 (APIENTRY *PFN_DrvNextBand)(
3797 IN SURFOBJ *pso,
3798 IN POINTL *pptl);
3799
3800 typedef VOID
3801 (APIENTRY *PFN_DrvNotify)(
3802 IN SURFOBJ *pso,
3803 IN ULONG iType,
3804 IN PVOID pvData);
3805
3806 typedef BOOL
3807 (APIENTRY *PFN_DrvOffset)(
3808 IN SURFOBJ *pso,
3809 IN LONG x,
3810 IN LONG y,
3811 IN FLONG flReserved);
3812
3813 typedef BOOL
3814 (APIENTRY *PFN_DrvPaint)(
3815 IN SURFOBJ *pso,
3816 IN CLIPOBJ *pco,
3817 IN BRUSHOBJ *pbo,
3818 IN POINTL *pptlBrushOrg,
3819 IN MIX mix);
3820
3821 typedef BOOL
3822 (APIENTRY *PFN_DrvPlgBlt)(
3823 IN SURFOBJ *psoTrg,
3824 IN SURFOBJ *psoSrc,
3825 IN SURFOBJ *psoMsk,
3826 IN CLIPOBJ *pco,
3827 IN XLATEOBJ *pxlo,
3828 IN COLORADJUSTMENT *pca,
3829 IN POINTL *pptlBrushOrg,
3830 IN POINTFIX *pptfx,
3831 IN RECTL *prcl,
3832 IN POINTL *pptl,
3833 IN ULONG iMode);
3834
3835 typedef BOOL
3836 (APIENTRY *PFN_DrvQueryAdvanceWidths)(
3837 IN DHPDEV dhpdev,
3838 IN FONTOBJ *pfo,
3839 IN ULONG iMode,
3840 IN HGLYPH *phg,
3841 OUT PVOID pvWidths,
3842 IN ULONG cGlyphs);
3843
3844 typedef BOOL
3845 (APIENTRY *PFN_DrvQueryDeviceSupport)(
3846 SURFOBJ *pso,
3847 XLATEOBJ *pxlo,
3848 XFORMOBJ *pxo,
3849 ULONG iType,
3850 ULONG cjIn,
3851 PVOID pvIn,
3852 ULONG cjOut,
3853 PVOID pvOut);
3854
3855 typedef BOOL
3856 (APIENTRY *PFN_DrvQueryDriverInfo)(
3857 DWORD dwMode,
3858 PVOID pBuffer,
3859 DWORD cbBuf,
3860 PDWORD pcbNeeded);
3861
3862 typedef PIFIMETRICS
3863 (APIENTRY *PFN_DrvQueryFont)(
3864 IN DHPDEV dhpdev,
3865 IN ULONG_PTR iFile,
3866 IN ULONG iFace,
3867 IN ULONG_PTR *pid);
3868
3869 typedef LONG
3870 (APIENTRY *PFN_DrvQueryFontCaps)(
3871 IN ULONG culCaps,
3872 OUT ULONG *pulCaps);
3873
3874 typedef LONG
3875 (APIENTRY *PFN_DrvQueryFontData)(
3876 IN DHPDEV dhpdev,
3877 IN FONTOBJ *pfo,
3878 IN ULONG iMode,
3879 IN HGLYPH hg,
3880 IN OUT GLYPHDATA *pgd,
3881 IN OUT PVOID pv,
3882 IN ULONG cjSize);
3883
3884 typedef LONG
3885 (APIENTRY *PFN_DrvQueryFontFile)(
3886 IN ULONG_PTR iFile,
3887 IN ULONG ulMode,
3888 IN ULONG cjBuf,
3889 IN ULONG *pulBuf);
3890
3891 typedef PVOID
3892 (APIENTRY *PFN_DrvQueryFontTree)(
3893 IN DHPDEV dhpdev,
3894 IN ULONG_PTR iFile,
3895 IN ULONG iFace,
3896 IN ULONG iMode,
3897 IN ULONG_PTR *pid);
3898
3899 typedef PFD_GLYPHATTR
3900 (APIENTRY *PFN_DrvQueryGlyphAttrs)(
3901 IN FONTOBJ *pfo,
3902 IN ULONG iMode);
3903
3904 typedef ULONG
3905 (APIENTRY *PFN_DrvQueryPerBandInfo)(
3906 IN SURFOBJ *pso,
3907 IN OUT PERBANDINFO *pbi);
3908
3909 typedef LONG
3910 (APIENTRY *PFN_DrvQueryTrueTypeOutline)(
3911 IN DHPDEV dhpdev,
3912 IN FONTOBJ *pfo,
3913 IN HGLYPH hglyph,
3914 IN BOOL bMetricsOnly,
3915 IN GLYPHDATA *pgldt,
3916 IN ULONG cjBuf,
3917 OUT TTPOLYGONHEADER *ppoly);
3918
3919 typedef LONG
3920 (APIENTRY *PFN_DrvQueryTrueTypeTable)(
3921 IN ULONG_PTR iFile,
3922 IN ULONG ulFont,
3923 IN ULONG ulTag,
3924 IN PTRDIFF dpStart,
3925 IN ULONG cjBuf,
3926 OUT BYTE *pjBuf,
3927 OUT PBYTE *ppjTable,
3928 OUT ULONG *pcjTable);
3929
3930 typedef BOOL
3931 (APIENTRY *PFN_DrvRealizeBrush)(
3932 IN BRUSHOBJ *pbo,
3933 IN SURFOBJ *psoTarget,
3934 IN SURFOBJ *psoPattern,
3935 IN SURFOBJ *psoMask,
3936 IN XLATEOBJ *pxlo,
3937 IN ULONG iHatch);
3938
3939 typedef ULONG
3940 (APIENTRY *PFN_DrvResetDevice)(
3941 IN DHPDEV dhpdev,
3942 IN PVOID Reserved);
3943
3944 typedef BOOL
3945 (APIENTRY *PFN_DrvResetPDEV)(
3946 DHPDEV dhpdevOld,
3947 DHPDEV dhpdevNew);
3948
3949 typedef ULONG_PTR
3950 (APIENTRY *PFN_DrvSaveScreenBits)(
3951 IN SURFOBJ *pso,
3952 IN ULONG iMode,
3953 IN ULONG_PTR ident,
3954 IN RECTL *prcl);
3955
3956 typedef BOOL
3957 (APIENTRY *PFN_DrvSendPage)(
3958 IN SURFOBJ *pso);
3959
3960 typedef BOOL
3961 (APIENTRY *PFN_DrvSetPalette)(
3962 IN DHPDEV dhpdev,
3963 IN PALOBJ *ppalo,
3964 IN FLONG fl,
3965 IN ULONG iStart,
3966 IN ULONG cColors);
3967
3968 typedef BOOL
3969 (APIENTRY *PFN_DrvSetPixelFormat)(
3970 IN SURFOBJ *pso,
3971 IN LONG iPixelFormat,
3972 IN HWND hwnd);
3973
3974 typedef ULONG
3975 (APIENTRY *PFN_DrvSetPointerShape)(
3976 IN SURFOBJ *pso,
3977 IN SURFOBJ *psoMask,
3978 IN SURFOBJ *psoColor,
3979 IN XLATEOBJ *pxlo,
3980 IN LONG xHot,
3981 IN LONG yHot,
3982 IN LONG x,
3983 IN LONG y,
3984 IN RECTL *prcl,
3985 IN FLONG fl);
3986
3987 typedef BOOL
3988 (APIENTRY *PFN_DrvStartBanding)(
3989 IN SURFOBJ *pso,
3990 IN POINTL *pptl);
3991
3992 typedef BOOL
3993 (APIENTRY *PFN_DrvStartDoc)(
3994 IN SURFOBJ *pso,
3995 IN LPWSTR pwszDocName,
3996 IN DWORD dwJobId);
3997
3998 typedef BOOL
3999 (APIENTRY *PFN_DrvStartPage)(
4000 IN SURFOBJ *pso);
4001
4002 typedef BOOL
4003 (APIENTRY *PFN_DrvStretchBlt)(
4004 IN SURFOBJ *psoDest,
4005 IN SURFOBJ *psoSrc,
4006 IN SURFOBJ *psoMask,
4007 IN CLIPOBJ *pco,
4008 IN XLATEOBJ *pxlo,
4009 IN COLORADJUSTMENT *pca,
4010 IN POINTL *pptlHTOrg,
4011 IN RECTL *prclDest,
4012 IN RECTL *prclSrc,
4013 IN POINTL *pptlMask,
4014 IN ULONG iMode);
4015
4016 typedef BOOL
4017 (APIENTRY *PFN_DrvStretchBltROP)(
4018 IN SURFOBJ *psoDest,
4019 IN SURFOBJ *psoSrc,
4020 IN SURFOBJ *psoMask,
4021 IN CLIPOBJ *pco,
4022 IN XLATEOBJ *pxlo,
4023 IN COLORADJUSTMENT *pca,
4024 IN POINTL *pptlHTOrg,
4025 IN RECTL *prclDest,
4026 IN RECTL *prclSrc,
4027 IN POINTL *pptlMask,
4028 IN ULONG iMode,
4029 IN BRUSHOBJ *pbo,
4030 IN DWORD rop4);
4031
4032 typedef BOOL
4033 (APIENTRY *PFN_DrvStrokeAndFillPath)(
4034 IN SURFOBJ *pso,
4035 IN PATHOBJ *ppo,
4036 IN CLIPOBJ *pco,
4037 IN XFORMOBJ *pxo,
4038 IN BRUSHOBJ *pboStroke,
4039 IN LINEATTRS *plineattrs,
4040 IN BRUSHOBJ *pboFill,
4041 IN POINTL *pptlBrushOrg,
4042 IN MIX mixFill,
4043 IN FLONG flOptions);
4044
4045 typedef BOOL
4046 (APIENTRY *PFN_DrvStrokePath)(
4047 IN SURFOBJ *pso,
4048 IN PATHOBJ *ppo,
4049 IN CLIPOBJ *pco,
4050 IN XFORMOBJ *pxo,
4051 IN BRUSHOBJ *pbo,
4052 IN POINTL *pptlBrushOrg,
4053 IN LINEATTRS *plineattrs,
4054 IN MIX mix);
4055
4056 typedef BOOL
4057 (APIENTRY *PFN_DrvSwapBuffers)(
4058 IN SURFOBJ *pso,
4059 IN WNDOBJ *pwo);
4060
4061 typedef VOID
4062 (APIENTRY *PFN_DrvSynchronize)(
4063 IN DHPDEV dhpdev,
4064 IN RECTL *prcl);
4065
4066 typedef VOID
4067 (APIENTRY *PFN_DrvSynchronizeSurface)(
4068 IN SURFOBJ *pso,
4069 IN RECTL *prcl,
4070 IN FLONG fl);
4071
4072 typedef BOOL
4073 (APIENTRY *PFN_DrvTextOut)(
4074 IN SURFOBJ *pso,
4075 IN STROBJ *pstro,
4076 IN FONTOBJ *pfo,
4077 IN CLIPOBJ *pco,
4078 IN RECTL *prclExtra,
4079 IN RECTL *prclOpaque,
4080 IN BRUSHOBJ *pboFore,
4081 IN BRUSHOBJ *pboOpaque,
4082 IN POINTL *pptlOrg,
4083 IN MIX mix);
4084
4085 typedef BOOL
4086 (APIENTRY *PFN_DrvTransparentBlt)(
4087 IN SURFOBJ *psoDst,
4088 IN SURFOBJ *psoSrc,
4089 IN CLIPOBJ *pco,
4090 IN XLATEOBJ *pxlo,
4091 IN RECTL *prclDst,
4092 IN RECTL *prclSrc,
4093 IN ULONG iTransColor,
4094 IN ULONG ulReserved);
4095
4096 typedef BOOL
4097 (APIENTRY *PFN_DrvUnloadFontFile)(
4098 IN ULONG_PTR iFile);
4099
4100
4101 WIN32KAPI
4102 VOID
4103 APIENTRY
4104 DrvDisableDirectDraw(
4105 IN DHPDEV dhpdev);
4106
4107 WIN32KAPI
4108 BOOL
4109 APIENTRY
4110 DrvEnableDirectDraw(
4111 IN DHPDEV dhpdev,
4112 OUT DD_CALLBACKS *pCallBacks,
4113 OUT DD_SURFACECALLBACKS *pSurfaceCallBacks,
4114 OUT DD_PALETTECALLBACKS *pPaletteCallBacks);
4115
4116 WIN32KAPI
4117 BOOL
4118 APIENTRY
4119 DrvGetDirectDrawInfo(
4120 IN DHPDEV dhpdev,
4121 OUT DD_HALINFO *pHalInfo,
4122 OUT DWORD *pdwNumHeaps,
4123 OUT VIDEOMEMORY *pvmList,
4124 OUT DWORD *pdwNumFourCCCodes,
4125 OUT DWORD *pdwFourCC);
4126
4127 #ifdef __cplusplus
4128 }
4129 #endif
4130
4131 #endif /* defined __VIDEO_H */
4132
4133 #endif /* __WINDDI_H */