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