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