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