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