4 * GDI device driver interface
6 * This file is part of the w32api package.
9 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
10 * Annotations by Timo Kreuzer <timo.kreuzer@reactos.org>
12 * THIS SOFTWARE IS NOT COPYRIGHTED
14 * This source code is offered for use in the public domain. You may
15 * use, modify or distribute it freely.
17 * This code is distributed in the hope that it will be useful but
18 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
19 * DISCLAIMED. This includes but is not limited to warranties of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
29 #error video.h cannot be included with winddi.h
34 #include <specstrings.h>
40 #ifndef DECLSPEC_IMPORT
41 #define DECLSPEC_IMPORT __attribute__((dllimport))
45 #define WIN32KAPI DECLSPEC_ADDRSAFE
48 #define DDI_DRIVER_VERSION_NT4 0x00020000
49 #define DDI_DRIVER_VERSION_SP3 0x00020003
50 #define DDI_DRIVER_VERSION_NT5 0x00030000
51 #define DDI_DRIVER_VERSION_NT5_01 0x00030100
52 #define DDI_DRIVER_VERSION_NT5_01_SP1 0x00030101
54 #define GDI_DRIVER_VERSION 0x4000
56 #if defined(_X86_) && !defined(USERMODE_DRIVER) && !defined(BUILD_WOW6432)
66 typedef ULONG_PTR HFF
;
67 typedef ULONG_PTR HFC
;
70 typedef PTRDIFF
*PPTRDIFF
;
76 typedef HGLYPH
*PHGLYPH
;
78 typedef LONG_PTR (APIENTRY
*PFN
)();
82 DECLARE_HANDLE(HSURF
);
83 DECLARE_HANDLE(DHSURF
);
84 DECLARE_HANDLE(DHPDEV
);
85 DECLARE_HANDLE(HDRVOBJ
);
88 typedef struct _ENG_EVENT
*PEVENT
;
91 #define OPENGL_CMD 4352
92 #define OPENGL_GETINFO 4353
93 #define WNDOBJ_SETUP 4354
95 #define FD_ERROR 0xFFFFFFFF
96 #define DDI_ERROR 0xFFFFFFFF
98 #define HFF_INVALID ((HFF) 0)
99 #define HFC_INVALID ((HFC) 0)
100 #define HGLYPH_INVALID ((HGLYPH) -1)
102 #define FP_ALTERNATEMODE 1
103 #define FP_WINDINGMODE 2
105 #define DN_ACCELERATION_LEVEL 1
106 #define DN_DEVICE_ORIGIN 2
107 #define DN_SLEEP_MODE 3
108 #define DN_DRAWING_BEGIN 4
112 #define DCR_HALFTONE 2
114 #define GX_IDENTITY 0
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)
125 typedef struct _POINTE
{
130 typedef union _FLOAT_LONG
{
133 } FLOAT_LONG
, *PFLOAT_LONG
;
135 typedef struct _POINTFIX
{
138 } POINTFIX
, *PPOINTFIX
;
140 typedef struct _RECTFX
{
147 typedef struct _POINTQF
{
150 } POINTQF
, *PPOINTQF
;
153 typedef struct _BLENDOBJ
{
154 BLENDFUNCTION BlendFunction
;
155 } BLENDOBJ
,*PBLENDOBJ
;
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
163 typedef struct _BRUSHOBJ
{
169 typedef struct _CIECHROMA
{
175 typedef struct _RUN
{
180 typedef struct _CLIPLINE
{
185 _Field_size_(c
) RUN arun
[1];
186 } CLIPLINE
, *PCLIPLINE
;
188 /* CLIPOBJ.iDComplexity constants */
193 /* CLIPOBJ.iFComplexity constants */
198 /* CLIPOBJ.iMode constants */
199 #define TC_RECTANGLES 0
202 /* CLIPOBJ.fjOptions constants */
203 #define OC_BANK_CLIP 1
205 typedef struct _CLIPOBJ
{
214 typedef struct _COLORINFO
{
221 CIECHROMA AlignmentWhite
;
225 LDECI4 MagentaInCyanDye
;
226 LDECI4 YellowInCyanDye
;
227 LDECI4 CyanInMagentaDye
;
228 LDECI4 YellowInMagentaDye
;
229 LDECI4 CyanInYellowDye
;
230 LDECI4 MagentaInYellowDye
;
231 } COLORINFO
, *PCOLORINFO
;
233 /* DEVHTADJDATA.DeviceFlags constants */
234 #define DEVHTADJF_COLOR_DEVICE 0x00000001
235 #define DEVHTADJF_ADDITIVE_DEVICE 0x00000002
237 typedef struct _DEVHTINFO
{
242 } DEVHTINFO
, *PDEVHTINFO
;
244 typedef struct _DEVHTADJDATA
{
248 PDEVHTINFO pDefHTInfo
;
249 PDEVHTINFO pAdjHTInfo
;
250 } DEVHTADJDATA
, *PDEVHTADJDATA
;
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
284 /* DEVINFO.iDitherFormat constants */
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
308 typedef struct _DEVINFO
{
309 FLONG flGraphicsCaps
;
310 LOGFONTW lfDefaultFont
;
311 LOGFONTW lfAnsiVarFont
;
312 LOGFONTW lfAnsiFixFont
;
317 HPALETTE hpalDefault
;
318 FLONG flGraphicsCaps2
;
319 } DEVINFO
, *PDEVINFO
;
324 (APIENTRY CALLBACK
*FREEOBJPROC
)(
325 _In_
struct _DRIVEROBJ
*pDriverObj
);
327 typedef struct _DRIVEROBJ
{
329 FREEOBJPROC pFreeProc
;
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 #if (NTDDI_VERSION >= NTDDI_VISTA)
429 #define INDEX_DrvRenderHint 93L
430 #if (NTDDI_VERSION >= NTDDI_WIN7)
431 #define INDEX_DrvCreateDeviceBitmapEx 94L
432 #define INDEX_DrvDeleteDeviceBitmapEx 95L
433 #define INDEX_DrvAssociateSharedSurface 96L
434 #define INDEX_DrvSynchronizeRedirectionBitmaps 97L
435 #define INDEX_DrvAccumulateD3DDirtyRect 98L
436 #define INDEX_DrvStartDxInterop 99L
437 #define INDEX_DrvEndDxInterop 100L
438 #define INDEX_DrvLockDisplayArea 101L
439 #define INDEX_DrvUnlockDisplayArea 102L
440 #define INDEX_LAST 103L
441 #else /* (NTDDI_VERSION >= NTDDI_WIN7) */
442 #define INDEX_LAST 94L
443 #endif /* (NTDDI_VERSION >= NTDDI_WIN7) */
444 #else /* (NTDDI_VERSION >= NTDDI_VISTA) */
445 #define INDEX_LAST 93L
446 #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
448 typedef struct _DRVFN
{
453 /* DRVENABLEDATA.iDriverVersion constants */
454 #define DDI_DRIVER_VERSION_NT4 0x00020000
455 #define DDI_DRIVER_VERSION_SP3 0x00020003
456 #define DDI_DRIVER_VERSION_NT5 0x00030000
457 #define DDI_DRIVER_VERSION_NT5_01 0x00030100
458 #define DDI_DRIVER_VERSION_NT5_01_SP1 0x00030101
460 typedef struct _DRVENABLEDATA
{
461 ULONG iDriverVersion
;
464 } DRVENABLEDATA
, *PDRVENABLEDATA
;
466 DECLARE_HANDLE(HSEMAPHORE
);
472 PBYTE pvCurrentRecord
;
473 } EMFINFO
, *PEMFINFO
;
475 typedef struct _ENGSAFESEMAPHORE
{
480 typedef struct _ENG_TIME_FIELDS
{
481 _Field_range_(1601,MAXUSHORT
) USHORT usYear
;
482 _Field_range_(1,12) USHORT usMonth
;
483 _Field_range_(1,31) USHORT usDay
;
484 _Field_range_(0,23) USHORT usHour
;
485 _Field_range_(0,59) USHORT usMinute
;
486 _Field_range_(0,59) USHORT usSecond
;
487 _Field_range_(0,999) USHORT usMilliseconds
;
488 _Field_range_(0,6) USHORT usWeekday
; // 0 == Sunday
489 } ENG_TIME_FIELDS
, *PENG_TIME_FIELDS
;
491 typedef struct _ENUMRECTS
{
496 typedef struct _FD_XFORM
{
501 } FD_XFORM
, *PFD_XFORM
;
503 /* FD_DEVICEMETRICS.flRealizedType constants */
504 #define FDM_TYPE_BM_SIDE_CONST 0x00000001
505 #define FDM_TYPE_MAXEXT_EQUAL_BM_SIDE 0x00000002
506 #define FDM_TYPE_CHAR_INC_EQUAL_BM_BASE 0x00000004
507 #define FDM_TYPE_ZERO_BEARINGS 0x00000008
508 #define FDM_TYPE_CONST_BEARINGS 0x00000010
510 typedef struct _FD_DEVICEMETRICS
{
511 FLONG flRealizedType
;
517 POINTL ptlUnderline1
;
519 POINTL ptlULThickness
;
520 POINTL ptlSOThickness
;
524 FD_XFORM fdxQuantized
;
525 LONG lNonLinearExtLeading
;
526 LONG lNonLinearIntLeading
;
527 LONG lNonLinearMaxCharWidth
;
528 LONG lNonLinearAvgCharWidth
;
533 } FD_DEVICEMETRICS
, *PFD_DEVICEMETRICS
;
535 /* FD_GLYPHATTR.iMode constants */
536 #define FO_ATTR_MODE_ROTATE 1
538 typedef struct _FD_GLYPHATTR
{
542 _Field_size_((cGlyphs
+7)/8) BYTE aGlyphAttr
[1];
543 } FD_GLYPHATTR
, *PFD_GLYPHATTR
;
545 /* FD_GLYPHSET.flAccel */
546 #define GS_UNICODE_HANDLES 0x00000001
547 #define GS_8BIT_HANDLES 0x00000002
548 #define GS_16BIT_HANDLES 0x00000004
550 typedef struct _WCRUN
{
556 typedef struct _FD_GLYPHSET
{
559 ULONG cGlyphsSupported
;
561 _Field_size_(cRuns
) WCRUN awcrun
[1];
562 } FD_GLYPHSET
, *PFD_GLYPHSET
;
564 typedef struct _FD_KERNINGPAIR
{
570 #if defined(_X86_) && !defined(USERMODE_DRIVER)
571 typedef struct _FLOATOBJ
575 } FLOATOBJ
, *PFLOATOBJ
;
577 typedef FLOAT FLOATOBJ
, *PFLOATOBJ
;
580 #ifndef USERMODE_DRIVER
581 typedef struct tagFLOATOBJ_XFORM
{
588 } FLOATOBJ_XFORM
, *PFLOATOBJ_XFORM
, FAR
*LPFLOATOBJ_XFORM
;
590 typedef XFORML FLOATOBJ_XFORM
, *PFLOATOBJ_XFORM
, FAR
*LPFLOATOBJ_XFORM
;
593 /* FONTDIFF.fsSelection */
594 #define FM_SEL_ITALIC 0x0001
595 #define FM_SEL_UNDERSCORE 0x0002
596 #define FM_SEL_NEGATIVE 0x0004
597 #define FM_SEL_OUTLINED 0x0008
598 #define FM_SEL_STRIKEOUT 0x0010
599 #define FM_SEL_BOLD 0x0020
600 #define FM_SEL_REGULAR 0x0040
602 typedef struct _FONTDIFF
{
609 FWORD fwdAveCharWidth
;
614 typedef struct _FONTSIM
{
617 PTRDIFF dpBoldItalic
;
620 /* FONTINFO.flCaps constants */
621 #define FO_DEVICE_FONT 1L
622 #define FO_OUTLINE_CAPABLE 2L
624 typedef struct _FONTINFO
{
627 ULONG cGlyphsSupported
;
632 } FONTINFO
, *PFONTINFO
;
634 /* FONTOBJ.flFontType constants */
635 #define FO_TYPE_RASTER RASTER_FONTTYPE
636 #define FO_TYPE_DEVICE DEVICE_FONTTYPE
637 #define FO_TYPE_TRUETYPE TRUETYPE_FONTTYPE
638 #define FO_TYPE_OPENTYPE OPENTYPE_FONTTYPE
640 #define FO_SIM_BOLD 0x00002000
641 #define FO_SIM_ITALIC 0x00004000
642 #define FO_EM_HEIGHT 0x00008000
643 #define FO_GRAY16 0x00010000
644 #define FO_NOGRAY16 0x00020000
645 #define FO_NOHINTS 0x00040000
646 #define FO_NO_CHOICE 0x00080000
647 #define FO_CFF 0x00100000
648 #define FO_POSTSCRIPT 0x00200000
649 #define FO_MULTIPLEMASTER 0x00400000
650 #define FO_VERT_FACE 0x00800000
651 #define FO_DBCS_FONT 0X01000000
652 #define FO_NOCLEARTYPE 0x02000000
653 #define FO_CLEARTYPE_X 0x10000000
654 #define FO_CLEARTYPE_Y 0x20000000
656 typedef struct _FONTOBJ
{
669 typedef struct _GAMMARAMP
{
673 } GAMMARAMP
, *PGAMMARAMP
;
675 /* GDIINFO.ulPrimaryOrder constants */
676 #define PRIMARY_ORDER_ABC 0
677 #define PRIMARY_ORDER_ACB 1
678 #define PRIMARY_ORDER_BAC 2
679 #define PRIMARY_ORDER_BCA 3
680 #define PRIMARY_ORDER_CBA 4
681 #define PRIMARY_ORDER_CAB 5
683 /* GDIINFO.ulHTPatternSize constants */
684 #define HT_PATSIZE_2x2 0
685 #define HT_PATSIZE_2x2_M 1
686 #define HT_PATSIZE_4x4 2
687 #define HT_PATSIZE_4x4_M 3
688 #define HT_PATSIZE_6x6 4
689 #define HT_PATSIZE_6x6_M 5
690 #define HT_PATSIZE_8x8 6
691 #define HT_PATSIZE_8x8_M 7
692 #define HT_PATSIZE_10x10 8
693 #define HT_PATSIZE_10x10_M 9
694 #define HT_PATSIZE_12x12 10
695 #define HT_PATSIZE_12x12_M 11
696 #define HT_PATSIZE_14x14 12
697 #define HT_PATSIZE_14x14_M 13
698 #define HT_PATSIZE_16x16 14
699 #define HT_PATSIZE_16x16_M 15
700 #define HT_PATSIZE_SUPERCELL 16
701 #define HT_PATSIZE_SUPERCELL_M 17
702 #define HT_PATSIZE_USER 18
703 #define HT_PATSIZE_MAX_INDEX HT_PATSIZE_USER
704 #define HT_PATSIZE_DEFAULT HT_PATSIZE_SUPERCELL_M
705 #define HT_USERPAT_CX_MIN 4
706 #define HT_USERPAT_CX_MAX 256
707 #define HT_USERPAT_CY_MIN 4
708 #define HT_USERPAT_CY_MAX 256
710 /* GDIINFO.ulHTOutputFormat constants */
711 #define HT_FORMAT_1BPP 0
712 #define HT_FORMAT_4BPP 2
713 #define HT_FORMAT_4BPP_IRGB 3
714 #define HT_FORMAT_8BPP 4
715 #define HT_FORMAT_16BPP 5
716 #define HT_FORMAT_24BPP 6
717 #define HT_FORMAT_32BPP 7
719 /* GDIINFO.flHTFlags */
720 #define HT_FLAG_SQUARE_DEVICE_PEL 0x00000001
721 #define HT_FLAG_HAS_BLACK_DYE 0x00000002
722 #define HT_FLAG_ADDITIVE_PRIMS 0x00000004
723 #define HT_FLAG_USE_8BPP_BITMASK 0x00000008
724 #define HT_FLAG_INK_HIGH_ABSORPTION 0x00000010
725 #define HT_FLAG_INK_ABSORPTION_INDICES 0x00000060
726 #define HT_FLAG_DO_DEVCLR_XFORM 0x00000080
727 #define HT_FLAG_OUTPUT_CMY 0x00000100
728 #define HT_FLAG_PRINT_DRAFT_MODE 0x00000200
729 #define HT_FLAG_INVERT_8BPP_BITMASK_IDX 0x00000400
730 #define HT_FLAG_8BPP_CMY332_MASK 0xFF000000
732 #define MAKE_CMYMASK_BYTE(c,m,y) ((BYTE)(((BYTE)(c) & 0x07) << 5) \
733 |(BYTE)(((BYTE)(m) & 0x07) << 2) \
734 |(BYTE)((BYTE)(y) & 0x03))
736 #define MAKE_CMY332_MASK(c,m,y) ((DWORD)(((DWORD)(c) & 0x07) << 29)\
737 |(DWORD)(((DWORD)(m) & 0x07) << 26)\
738 |(DWORD)(((DWORD)(y) & 0x03) << 24))
740 /* GDIINFO.flHTFlags constants */
741 #define HT_FLAG_INK_ABSORPTION_IDX0 0x00000000
742 #define HT_FLAG_INK_ABSORPTION_IDX1 0x00000020
743 #define HT_FLAG_INK_ABSORPTION_IDX2 0x00000040
744 #define HT_FLAG_INK_ABSORPTION_IDX3 0x00000060
746 #define HT_FLAG_HIGHEST_INK_ABSORPTION (HT_FLAG_INK_HIGH_ABSORPTION \
747 |HT_FLAG_INK_ABSORPTION_IDX3)
748 #define HT_FLAG_HIGHER_INK_ABSORPTION (HT_FLAG_INK_HIGH_ABSORPTION \
749 |HT_FLAG_INK_ABSORPTION_IDX2)
750 #define HT_FLAG_HIGH_INK_ABSORPTION (HT_FLAG_INK_HIGH_ABSORPTION \
751 |HT_FLAG_INK_ABSORPTION_IDX1)
752 #define HT_FLAG_NORMAL_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX0
753 #define HT_FLAG_LOW_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX1
754 #define HT_FLAG_LOWER_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX2
755 #define HT_FLAG_LOWEST_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX3
757 #define HT_BITMASKPALRGB (DWORD)'0BGR'
758 #define HT_SET_BITMASKPAL2RGB(pPal) (*((LPDWORD)(pPal)) = HT_BITMASKPALRGB)
759 #define HT_IS_BITMASKPALRGB(pPal) (*((LPDWORD)(pPal)) == (DWORD)0)
761 /* GDIINFO.ulPhysicalPixelCharacteristics constants */
762 #define PPC_DEFAULT 0x0
763 #define PPC_UNDEFINED 0x1
764 #define PPC_RGB_ORDER_VERTICAL_STRIPES 0x2
765 #define PPC_BGR_ORDER_VERTICAL_STRIPES 0x3
766 #define PPC_RGB_ORDER_HORIZONTAL_STRIPES 0x4
767 #define PPC_BGR_ORDER_HORIZONTAL_STRIPES 0x5
769 #define PPG_DEFAULT 0
772 typedef struct _GDIINFO
{
795 POINTL ptlPhysOffset
;
799 ULONG ulDevicePelsDPI
;
800 ULONG ulPrimaryOrder
;
801 ULONG ulHTPatternSize
;
802 ULONG ulHTOutputFormat
;
805 ULONG ulBltAlignment
;
806 ULONG ulPanningHorzRes
;
807 ULONG ulPanningVertRes
;
808 ULONG xPanningAlignment
;
809 ULONG yPanningAlignment
;
816 ULONG ulPhysicalPixelCharacteristics
;
817 ULONG ulPhysicalPixelGamma
;
818 } GDIINFO
, *PGDIINFO
;
820 /* PATHDATA.flags constants */
821 #define PD_BEGINSUBPATH 0x00000001
822 #define PD_ENDSUBPATH 0x00000002
823 #define PD_RESETSTYLE 0x00000004
824 #define PD_CLOSEFIGURE 0x00000008
825 #define PD_BEZIERS 0x00000010
826 #define PD_ALL (PD_BEGINSUBPATH \
832 typedef struct _PATHDATA
{
836 } PATHDATA
, *PPATHDATA
;
838 /* PATHOBJ.fl constants */
839 #define PO_BEZIERS 0x00000001
840 #define PO_ELLIPSE 0x00000002
841 #define PO_ALL_INTEGERS 0x00000004
842 #define PO_ENUM_AS_INTEGERS 0x00000008
844 typedef struct _PATHOBJ
{
849 typedef BYTE GAMMA_TABLES
[2][256];
851 typedef struct _GLYPHBITS
{
857 typedef union _GLYPHDEF
{
862 typedef struct _GLYPHPOS
{
866 } GLYPHPOS
, *PGLYPHPOS
;
868 typedef struct _GLYPHDATA
{
880 typedef struct _IFIEXTRA
{
884 PTRDIFF dpDesignVector
;
886 ULONG aulReserved
[1];
887 } IFIEXTRA
, *PIFIEXTRA
;
889 /* IFIMETRICS constants */
891 #define FM_VERSION_NUMBER 0x0
893 /* IFIMETRICS.fsType constants */
894 #define FM_TYPE_LICENSED 0x2
895 #define FM_READONLY_EMBED 0x4
896 #define FM_EDITABLE_EMBED 0x8
897 #define FM_NO_EMBEDDING FM_TYPE_LICENSED
899 /* IFIMETRICS.flInfo constants */
900 #define FM_INFO_TECH_TRUETYPE 0x00000001
901 #define FM_INFO_TECH_BITMAP 0x00000002
902 #define FM_INFO_TECH_STROKE 0x00000004
903 #define FM_INFO_TECH_OUTLINE_NOT_TRUETYPE 0x00000008
904 #define FM_INFO_ARB_XFORMS 0x00000010
905 #define FM_INFO_1BPP 0x00000020
906 #define FM_INFO_4BPP 0x00000040
907 #define FM_INFO_8BPP 0x00000080
908 #define FM_INFO_16BPP 0x00000100
909 #define FM_INFO_24BPP 0x00000200
910 #define FM_INFO_32BPP 0x00000400
911 #define FM_INFO_INTEGER_WIDTH 0x00000800
912 #define FM_INFO_CONSTANT_WIDTH 0x00001000
913 #define FM_INFO_NOT_CONTIGUOUS 0x00002000
914 #define FM_INFO_TECH_MM 0x00004000
915 #define FM_INFO_RETURNS_OUTLINES 0x00008000
916 #define FM_INFO_RETURNS_STROKES 0x00010000
917 #define FM_INFO_RETURNS_BITMAPS 0x00020000
918 #define FM_INFO_DSIG 0x00040000
919 #define FM_INFO_RIGHT_HANDED 0x00080000
920 #define FM_INFO_INTEGRAL_SCALING 0x00100000
921 #define FM_INFO_90DEGREE_ROTATIONS 0x00200000
922 #define FM_INFO_OPTICALLY_FIXED_PITCH 0x00400000
923 #define FM_INFO_DO_NOT_ENUMERATE 0x00800000
924 #define FM_INFO_ISOTROPIC_SCALING_ONLY 0x01000000
925 #define FM_INFO_ANISOTROPIC_SCALING_ONLY 0x02000000
926 #define FM_INFO_TECH_CFF 0x04000000
927 #define FM_INFO_FAMILY_EQUIV 0x08000000
928 #define FM_INFO_DBCS_FIXED_PITCH 0x10000000
929 #define FM_INFO_NONNEGATIVE_AC 0x20000000
930 #define FM_INFO_IGNORE_TC_RA_ABLE 0x40000000
931 #define FM_INFO_TECH_TYPE1 0x80000000
933 #define MAXCHARSETS 16
935 /* IFIMETRICS.ulPanoseCulture constants */
936 #define FM_PANOSE_CULTURE_LATIN 0x0
938 typedef struct _IFIMETRICS
{
941 PTRDIFF dpwszFamilyName
;
942 PTRDIFF dpwszStyleName
;
943 PTRDIFF dpwszFaceName
;
944 PTRDIFF dpwszUniqueName
;
951 BYTE jWinPitchAndFamily
;
958 FWORD fwdWinAscender
;
959 FWORD fwdWinDescender
;
960 FWORD fwdMacAscender
;
961 FWORD fwdMacDescender
;
963 FWORD fwdTypoAscender
;
964 FWORD fwdTypoDescender
;
965 FWORD fwdTypoLineGap
;
966 FWORD fwdAveCharWidth
;
970 FWORD fwdSubscriptXSize
;
971 FWORD fwdSubscriptYSize
;
972 FWORD fwdSubscriptXOffset
;
973 FWORD fwdSubscriptYOffset
;
974 FWORD fwdSuperscriptXSize
;
975 FWORD fwdSuperscriptYSize
;
976 FWORD fwdSuperscriptXOffset
;
977 FWORD fwdSuperscriptYOffset
;
978 FWORD fwdUnderscoreSize
;
979 FWORD fwdUnderscorePosition
;
980 FWORD fwdStrikeoutSize
;
981 FWORD fwdStrikeoutPosition
;
996 ULONG ulPanoseCulture
;
1001 } IFIMETRICS
, *PIFIMETRICS
;
1004 #define LA_GEOMETRIC 0x00000001
1005 #define LA_ALTERNATE 0x00000002
1006 #define LA_STARTGAP 0x00000004
1007 #define LA_STYLED 0x00000008
1009 /* LINEATTRS.iJoin */
1010 #define JOIN_ROUND 0L
1011 #define JOIN_BEVEL 1L
1012 #define JOIN_MITER 2L
1014 /* LINEATTRS.iEndCap */
1015 #define ENDCAP_ROUND 0L
1016 #define ENDCAP_SQUARE 1L
1017 #define ENDCAP_BUTT 2L
1019 typedef struct _LINEATTRS
{
1027 FLOAT_LONG elStyleState
;
1028 } LINEATTRS
, *PLINEATTRS
;
1030 typedef struct _PALOBJ
{
1034 typedef struct _PERBANDINFO
{
1035 BOOL bRepeatThisBand
;
1039 } PERBANDINFO
, *PPERBANDINFO
;
1041 /* STROBJ.flAccel constants */
1042 #define SO_FLAG_DEFAULT_PLACEMENT 0x00000001
1043 #define SO_HORIZONTAL 0x00000002
1044 #define SO_VERTICAL 0x00000004
1045 #define SO_REVERSED 0x00000008
1046 #define SO_ZERO_BEARINGS 0x00000010
1047 #define SO_CHAR_INC_EQUAL_BM_BASE 0x00000020
1048 #define SO_MAXEXT_EQUAL_BM_SIDE 0x00000040
1049 #define SO_DO_NOT_SUBSTITUTE_DEVICE_FONT 0x00000080
1050 #define SO_GLYPHINDEX_TEXTOUT 0x00000100
1051 #define SO_ESC_NOT_ORIENT 0x00000200
1052 #define SO_DXDY 0x00000400
1053 #define SO_CHARACTER_EXTRA 0x00000800
1054 #define SO_BREAK_EXTRA 0x00001000
1056 typedef struct _STROBJ
{
1066 /* SURFOBJ.iType constants */
1067 #define STYPE_BITMAP 0L
1068 #define STYPE_DEVICE 1L
1069 #define STYPE_DEVBITMAP 3L
1071 /* SURFOBJ.fjBitmap constants */
1072 #define BMF_TOPDOWN 0x0001
1073 #define BMF_NOZEROINIT 0x0002
1074 #define BMF_DONTCACHE 0x0004
1075 #define BMF_USERMEM 0x0008
1076 #define BMF_KMSECTION 0x0010
1077 #define BMF_NOTSYSMEM 0x0020
1078 #define BMF_WINDOW_BLT 0x0040
1079 #define BMF_UMPDMEM 0x0080
1080 #define BMF_RESERVED 0xFF00
1082 typedef struct _SURFOBJ
{
1093 ULONG iBitmapFormat
;
1098 typedef struct _TYPE1_FONT
{
1104 typedef struct _WNDOBJ
{
1111 typedef struct _XFORML
{
1120 typedef struct _XFORMOBJ
{
1124 /* XLATEOBJ.flXlate constants */
1125 #define XO_TRIVIAL 0x00000001
1126 #define XO_TABLE 0x00000002
1127 #define XO_TO_MONO 0x00000004
1128 #define XO_FROM_CMYK 0x00000008
1129 #define XO_DEVICE_ICM 0x00000010
1130 #define XO_HOST_ICM 0x00000020
1132 typedef struct _XLATEOBJ
{
1141 /* WNDOBJCHANGEPROC.fl constants */
1142 #define WOC_RGN_CLIENT_DELTA 0x00000001
1143 #define WOC_RGN_CLIENT 0x00000002
1144 #define WOC_RGN_SURFACE_DELTA 0x00000004
1145 #define WOC_RGN_SURFACE 0x00000008
1146 #define WOC_CHANGED 0x00000010
1147 #define WOC_DELETE 0x00000020
1148 #define WOC_DRAWN 0x00000040
1149 #define WOC_SPRITE_OVERLAP 0x00000080
1150 #define WOC_SPRITE_NO_OVERLAP 0x00000100
1151 #if (NTDDI_VERSION >= NTDDI_VISTA)
1152 #define WOC_RGN_SPRITE 0x00000200
1153 #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
1155 typedef VOID (APIENTRY CALLBACK
*WNDOBJCHANGEPROC
)(
1163 BRUSHOBJ_hGetColorTransform(
1164 _In_ BRUSHOBJ
*pbo
);
1166 _Ret_opt_bytecount_(cj
)
1170 BRUSHOBJ_pvAllocRbrush(
1177 BRUSHOBJ_pvGetRbrush(
1178 _In_ BRUSHOBJ
*pbo
);
1183 BRUSHOBJ_ulGetBrushColor(
1184 _In_ BRUSHOBJ
*pbo
);
1192 _Out_bytecap_(cj
) ULONG
*pul
);
1194 /* CLIPOBJ_cEnumStart.iType constants */
1195 #define CT_RECTANGLES 0L
1197 /* CLIPOBJ_cEnumStart.iDirection constants */
1198 #define CD_RIGHTDOWN 0x00000000
1199 #define CD_LEFTDOWN 0x00000001
1200 #define CD_LEFTWARDS 0x00000001
1201 #define CD_RIGHTUP 0x00000002
1202 #define CD_UPWARDS 0x00000002
1203 #define CD_LEFTUP 0x00000003
1204 #define CD_ANY 0x00000004
1210 _Inout_ CLIPOBJ
*pco
,
1213 _In_ ULONG iDirection
,
1222 #if (NTDDI_VERSION >= NTDDI_VISTA)
1233 EngAcquireSemaphore(
1234 _Inout_ HSEMAPHORE hsem
);
1236 #define FL_ZERO_MEMORY 0x00000001
1237 #define FL_NONPAGED_MEMORY 0x00000002
1239 #ifdef USERMODE_DRIVER
1241 #define EngAllocMem(fl, cj, tag) ((PVOID)GlobalAlloc(((fl) & FL_ZERO_MEMORY) ? GPTR : GMEM_FIXED, cj))
1242 #define EngAllocPrivateUserMem(psl, cj, tag) ((PVOID)GlobalAlloc(GMEM_FIXED, cj))
1243 #define EngAllocUserMem(cj, tag) ((PVOID)GlobalAlloc(GMEM_FIXED, cj))
1247 _Must_inspect_result_
1248 _When_(fl
& FL_ZERO_MEMORY
, _Ret_opt_bytecount_(cjMemSize
))
1249 _When_(!(fl
& FL_ZERO_MEMORY
), _Ret_opt_bytecap_(cjMemSize
))
1255 _In_ ULONG cjMemSize
,
1258 _Must_inspect_result_
1259 _Ret_opt_bytecount_(cjMemSize
)
1263 EngAllocPrivateUserMem(
1264 _In_ PDD_SURFACE_LOCAL psl
,
1265 _In_ SIZE_T cjMemSize
,
1268 _Must_inspect_result_
1269 _Ret_opt_bytecount_(cjMemSize
)
1274 _In_ SIZE_T cjMemSize
,
1277 #endif /* USERMODE_DRIVER */
1283 _Inout_ SURFOBJ
*psoDest
,
1284 _In_ SURFOBJ
*psoSrc
,
1285 _In_opt_ CLIPOBJ
*pco
,
1286 _In_opt_ XLATEOBJ
*pxlo
,
1287 _In_ RECTL
*prclDest
,
1288 _In_ RECTL
*prclSrc
,
1289 _In_ BLENDOBJ
*pBlendObj
);
1291 /* EngAssociateSurface.flHooks constants */
1292 #define HOOK_BITBLT 0x00000001
1293 #define HOOK_STRETCHBLT 0x00000002
1294 #define HOOK_PLGBLT 0x00000004
1295 #define HOOK_TEXTOUT 0x00000008
1296 #define HOOK_PAINT 0x00000010
1297 #define HOOK_STROKEPATH 0x00000020
1298 #define HOOK_FILLPATH 0x00000040
1299 #define HOOK_STROKEANDFILLPATH 0x00000080
1300 #define HOOK_LINETO 0x00000100
1301 #define HOOK_COPYBITS 0x00000400
1302 #define HOOK_MOVEPANNING 0x00000800
1303 #define HOOK_SYNCHRONIZE 0x00001000
1304 #define HOOK_STRETCHBLTROP 0x00002000
1305 #define HOOK_SYNCHRONIZEACCESS 0x00004000
1306 #define HOOK_TRANSPARENTBLT 0x00008000
1307 #define HOOK_ALPHABLEND 0x00010000
1308 #define HOOK_GRADIENTFILL 0x00020000
1309 #if (NTDDI_VERSION >= NTDDI_VISTA)
1310 #define HOOK_FLAGS 0x0003b5ef
1312 #define HOOK_FLAGS 0x0003b5ff
1318 EngAssociateSurface(
1321 _In_ FLONG flHooks
);
1327 _In_ SURFOBJ
*psoTrg
,
1328 _In_opt_ SURFOBJ
*psoSrc
,
1329 _In_opt_ SURFOBJ
*psoMask
,
1330 _In_opt_ CLIPOBJ
*pco
,
1331 _In_opt_ XLATEOBJ
*pxlo
,
1332 _In_ RECTL
*prclTrg
,
1333 _In_opt_ POINTL
*pptlSrc
,
1334 _In_opt_ POINTL
*pptlMask
,
1335 _In_opt_ BRUSHOBJ
*pbo
,
1336 _In_opt_ POINTL
*pptlBrush
,
1349 _In_ PEVENT pEvent
);
1356 _In_ INT nFirstChar
,
1359 /* EngControlSprites.fl constants */
1360 #define ECS_TEARDOWN 0x00000001
1361 #define ECS_REDRAW 0x00000002
1367 _Inout_ WNDOBJ
*pwo
,
1374 _In_ SURFOBJ
*psoDest
,
1375 _In_ SURFOBJ
*psoSrc
,
1376 _In_opt_ CLIPOBJ
*pco
,
1377 _In_opt_ XLATEOBJ
*pxlo
,
1378 _In_ RECTL
*prclDest
,
1379 _In_ POINTL
*pptlSrc
);
1389 _In_opt_ PVOID pvBits
);
1394 EngCreateClip(VOID
);
1396 _Must_inspect_result_
1400 EngCreateDeviceBitmap(
1403 _In_ ULONG iFormatCompat
);
1405 _Must_inspect_result_
1409 EngCreateDeviceSurface(
1412 _In_ ULONG iFormatCompat
);
1414 _Must_inspect_result_
1420 _In_opt_ FREEOBJPROC pFreeObjProc
,
1423 _Must_inspect_result_
1424 _Success_(return != FALSE
)
1429 _When_(return != FALSE
, _Outptr_
) PEVENT
*ppEvent
);
1431 /* EngCreatePalette.iMode constants */
1432 #define PAL_INDEXED 0x00000001
1433 #define PAL_BITFIELDS 0x00000002
1434 #define PAL_RGB 0x00000004
1435 #define PAL_BGR 0x00000008
1436 #define PAL_CMYK 0x00000010
1438 _Must_inspect_result_
1445 _In_ ULONG
*pulColors
,
1453 EngCreatePath(VOID
);
1458 EngCreateSemaphore(VOID
);
1460 /* EngCreateWnd.fl constants */
1461 #define WO_RGN_CLIENT_DELTA 0x00000001
1462 #define WO_RGN_CLIENT 0x00000002
1463 #define WO_RGN_SURFACE_DELTA 0x00000004
1464 #define WO_RGN_SURFACE 0x00000008
1465 #define WO_RGN_UPDATE_ALL 0x00000010
1466 #define WO_RGN_WINDOW 0x00000020
1467 #define WO_DRAW_NOTIFY 0x00000040
1468 #define WO_SPRITE_NOTIFY 0x00000080
1469 #define WO_RGN_DESKTOP_COORD 0x00000100
1470 #if (NTDDI_VERSION >= NTDDI_VISTA)
1471 #define WO_RGN_SPRITE 0x00000200
1472 #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
1474 _Must_inspect_result_
1481 _In_ WNDOBJCHANGEPROC pfn
,
1483 _In_ INT iPixelFormat
);
1489 EngDebugBreak(VOID
);
1495 _In_z_ PCHAR StandardPrefix
,
1496 _In_z_ PCHAR DebugMessage
,
1503 _In_ _Post_ptr_invalid_ CLIPOBJ
*pco
);
1509 _In_ _Post_ptr_invalid_ HDRVOBJ hdo
,
1510 _In_ BOOL bCallBack
,
1517 _In_ _Post_ptr_invalid_ PEVENT pEvent
);
1523 _In_ LPWSTR pwszFileName
);
1529 _In_ _Post_ptr_invalid_ HPALETTE hpal
);
1535 _In_ _Post_ptr_invalid_ PATHOBJ
*ppo
);
1540 EngDeleteSafeSemaphore(
1541 _Inout_ ENGSAFESEMAPHORE
*pssem
);
1547 _In_ _Post_ptr_invalid_ HSEMAPHORE hsem
);
1553 _In_ _Post_ptr_invalid_ HSURF hsurf
);
1559 _In_ _Post_ptr_invalid_ WNDOBJ
*pwo
);
1561 _Success_(return==0)
1566 _In_ HANDLE hDevice
,
1567 _In_ DWORD dwIoControlCode
,
1568 _In_opt_bytecount_(cjInBufferSize
) LPVOID lpInBuffer
,
1569 _In_ DWORD cjInBufferSize
,
1570 _Out_opt_bytecap_(cjOutBufferSize
) LPVOID lpOutBuffer
,
1571 _In_ DWORD cjOutBufferSize
,
1572 _Out_ LPDWORD lpBytesReturned
);
1574 #define DM_DEFAULT 0x00000001
1575 #define DM_MONOCHROME 0x00000002
1584 _When_(iMode
== DM_DEFAULT
, _Out_writes_bytes_(16*8))
1585 _When_(iMode
== DM_MONOCHROME
, _Out_writes_bytes_(8))
1592 _In_ HANDLE hPrinter
,
1594 _Out_writes_bytes_opt_(cbBuf
) LPBYTE pForm
,
1596 _Out_ LPDWORD pcbNeeded
,
1597 _Out_ LPDWORD pcReturned
);
1611 _Inout_ SURFOBJ
*pso
,
1615 _In_ POINTL
*pptlBrushOrg
,
1617 _In_ FLONG flOptions
);
1622 EngFindImageProcAddress(
1623 _In_ HANDLE hModule
,
1624 _In_ LPSTR lpProcName
);
1633 _Out_ PULONG pulSize
);
1635 _Must_inspect_result_
1636 _Ret_opt_bytecap_(cjSize
)
1641 _In_ ULONG ulFastCheckSum
,
1644 /* EngFntCacheFault.iFaultMode constants */
1645 #define ENG_FNT_CACHE_READ_FAULT 0x00000001
1646 #define ENG_FNT_CACHE_WRITE_FAULT 0x00000002
1652 _In_ ULONG ulFastCheckSum
,
1653 _In_ ULONG iFaultMode
);
1659 _In_ ULONG FastCheckSum
,
1660 _Out_ ULONG
*pulSize
);
1662 #ifdef USERMODE_DRIVER
1664 #define EngFreeMem(p) GlobalFree((HGLOBAL) (p))
1665 #define EngFreePrivateUserMem( psl, p) GlobalFree((HGLOBAL) (p))
1666 #define EngFreeUserMem(p) GlobalFree((HGLOBAL) (p))
1668 #else /* !USERMODE_DRIVER */
1674 _In_ _Post_ptr_invalid_ PVOID pv
);
1679 EngFreePrivateUserMem(
1680 _In_ PDD_SURFACE_LOCAL psl
,
1681 _In_ _Post_ptr_invalid_ PVOID pv
);
1687 _In_ _Post_ptr_invalid_ PVOID pv
);
1689 #endif /* !USERMODE_DRIVER */
1701 EngGetCurrentCodePage(
1702 _Out_ PUSHORT OemCodePage
,
1703 _Out_ PUSHORT AnsiCodePage
);
1708 EngGetCurrentProcessId(VOID
);
1713 EngGetCurrentThreadId(VOID
);
1715 _Must_inspect_result_ _Ret_z_
1725 EngGetFileChangeTime(
1727 _Out_ LARGE_INTEGER
*pChangeTime
);
1734 _Out_
WCHAR (*pDest
)[MAX_PATH
+1]);
1740 _In_ HANDLE hPrinter
,
1741 _In_ LPWSTR pFormName
,
1743 _In_reads_bytes_opt_(cbBuf
) LPBYTE pForm
,
1745 _Out_ LPDWORD pcbNeeded
);
1747 #ifdef USERMODE_DRIVER
1748 #define EngGetLastError GetLastError
1753 EngGetLastError(VOID
);
1760 _In_ HANDLE hPrinter
,
1762 _Out_writes_bytes_opt_(cbBuf
) LPBYTE pPrinter
,
1764 _Out_ LPDWORD pcbNeeded
);
1770 _In_ HANDLE hPrinter
,
1771 _In_ LPWSTR pValueName
,
1772 _Out_opt_ LPDWORD pType
,
1773 _Out_writes_bytes_opt_(cjSize
) LPBYTE pData
,
1775 _Out_ LPDWORD pcjNeeded
);
1780 EngGetPrinterDataFileName(
1786 EngGetPrinterDriver(
1787 _In_ HANDLE hPrinter
,
1788 _In_opt_ LPWSTR pEnvironment
,
1790 _Out_writes_bytes_opt_(cjBufSize
) BYTE
*lpbDrvInfo
,
1791 _In_ DWORD cjBufSize
,
1792 _Out_ DWORD
*pcjNeeded
);
1797 EngGetProcessHandle(VOID
);
1802 EngGetType1FontList(
1804 _Out_writes_bytes_opt_(cjType1Buffer
) TYPE1_FONT
*pType1Buffer
,
1805 _In_ ULONG cjType1Buffer
,
1806 _Out_ PULONG pulLocalFonts
,
1807 _Out_ PULONG pulRemoteFonts
,
1808 _Out_ LARGE_INTEGER
*pLastModified
);
1814 _Inout_ SURFOBJ
*psoDest
,
1816 _In_opt_ XLATEOBJ
*pxlo
,
1817 _In_ TRIVERTEX
*pVertex
,
1821 _In_ RECTL
*prclExtents
,
1822 _In_ POINTL
*pptlDitherOrg
,
1825 /* EngHangNotification return values */
1826 #define EHN_RESTORED 0x00000000
1827 #define EHN_ERROR 0x00000001
1832 EngHangNotification(
1834 _Reserved_ PVOID Reserved
);
1839 EngInitializeSafeSemaphore(
1840 _Out_ ENGSAFESEMAPHORE
*pssem
);
1845 EngIsSemaphoreOwned(
1846 _In_ HSEMAPHORE hsem
);
1851 EngIsSemaphoreOwnedByCurrentThread(
1852 _In_ HSEMAPHORE hsem
);
1858 _Inout_ SURFOBJ
*pso
,
1865 _In_opt_ RECTL
*prclBounds
,
1872 _In_ LPWSTR pwszDriver
);
1883 EngLoadModuleForWrite(
1885 _In_ ULONG cjSizeOfModule
);
1890 EngLockDirectDrawSurface(
1891 _In_ HANDLE hSurface
);
1908 EngLpkInstalled(VOID
);
1915 _In_ HANDLE hUserObject
,
1916 _Reserved_ PVOID Reserved1
,
1917 _Reserved_ PVOID Reserved2
,
1918 _Reserved_ PVOID Reserved3
);
1920 _Success_(return != 0)
1921 _When_(cjSize
!= 0, _At_(return, _Out_writes_bytes_(cjSize
)))
1928 _Out_ ULONG_PTR
*piFile
);
1934 _In_ ULONG_PTR iFile
,
1935 _Outptr_result_bytebuffer_(*pcjBuf
) PULONG
*ppjBuf
,
1936 _Out_ ULONG
*pcjBuf
);
1942 _In_ ULONG_PTR iFile
,
1943 _Outptr_result_bytebuffer_(*pcjBuf
) PULONG
*ppjBuf
,
1944 _Out_ ULONG
*pcjBuf
);
1951 _Out_ PULONG pSize
);
1956 EngMarkBandingSurface(
1959 /* EngModifySurface.flSurface constants */
1960 #define MS_NOTSYSTEMMEMORY 0x00000001
1961 #define MS_SHAREDACCESS 0x00000002
1970 _In_ FLONG flSurface
,
1974 _Reserved_ PVOID pvReserved
);
1985 #ifdef USERMODE_DRIVER
1986 #define EngMulDiv MulDiv
1987 #else /* !USERMODE_DRIVER */
1995 #endif /* !USERMODE_DRIVER */
2000 EngMultiByteToUnicodeN(
2001 _Out_writes_bytes_to_(MaxBytesInUnicodeString
, *BytesInUnicodeString
) LPWSTR UnicodeString
,
2002 _In_ ULONG MaxBytesInUnicodeString
,
2003 _Out_opt_ PULONG BytesInUnicodeString
,
2004 _In_reads_bytes_(BytesInMultiByteString
) PCHAR MultiByteString
,
2005 _In_ ULONG BytesInMultiByteString
);
2010 EngMultiByteToWideChar(
2012 _Out_writes_bytes_opt_(cjWideCharString
) LPWSTR WideCharString
,
2013 _In_ INT cjWideCharString
,
2014 _In_reads_bytes_opt_(cjMultiByteString
) LPSTR MultiByteString
,
2015 _In_ INT cjMultiByteString
);
2024 _In_ POINTL
*pptlBrushOrg
,
2031 _In_ SURFOBJ
*psoTrg
,
2032 _In_ SURFOBJ
*psoSrc
,
2033 _In_opt_ SURFOBJ
*psoMsk
,
2035 _In_opt_ XLATEOBJ
*pxlo
,
2036 _In_ COLORADJUSTMENT
*pca
,
2037 _In_ POINTL
*pptlBrushOrg
,
2038 _In_ POINTFIX
*pptfx
,
2040 _When_(psoMsk
, _In_
) POINTL
*pptl
,
2047 _In_reads_bytes_(Length
) PVOID Address
,
2048 #if (NTDDI_VERSION <= NTDDI_WINXP)
2053 _In_ ULONG Alignment
);
2058 EngProbeForReadAndWrite(
2059 _Inout_updates_bytes_(Length
) PVOID Address
,
2060 #if (NTDDI_VERSION <= NTDDI_WINXP)
2065 _In_ ULONG Alignment
);
2067 typedef enum _ENG_DEVICE_ATTRIBUTE
{
2069 QDA_ACCELERATION_LEVEL
2070 } ENG_DEVICE_ATTRIBUTE
;
2075 EngQueryDeviceAttribute(
2077 _In_ ENG_DEVICE_ATTRIBUTE devAttr
,
2078 _In_reads_bytes_(cjInSize
) PVOID pvIn
,
2079 _In_ ULONG cjInSize
,
2080 _Out_writes_bytes_(cjOutSize
) PVOID pvOut
,
2081 _In_ ULONG cjOutSize
);
2086 EngQueryFileTimeStamp(
2093 _Out_ PENG_TIME_FIELDS ptf
);
2100 _Out_ ULONG
*piMode
,
2102 _Out_writes_opt_(cColors
) ULONG
*pulColors
);
2107 EngQueryPerformanceCounter(
2108 _Out_ LONGLONG
*pPerformanceCount
);
2113 EngQueryPerformanceFrequency(
2114 _Out_ LONGLONG
*pFrequency
);
2116 typedef enum _ENG_SYSTEM_ATTRIBUTE
{
2117 EngProcessorFeature
= 1,
2118 EngNumberOfProcessors
,
2119 EngOptimumAvailableUserMemory
,
2120 EngOptimumAvailableSystemMemory
,
2121 } ENG_SYSTEM_ATTRIBUTE
;
2123 #define QSA_MMX 0x00000100
2124 #define QSA_SSE 0x00002000
2125 #define QSA_3DNOW 0x00004000
2130 EngQuerySystemAttribute(
2131 _In_ ENG_SYSTEM_ATTRIBUTE CapNum
,
2132 _When_(return != FALSE
, _Out_
) PDWORD pCapability
);
2138 _In_ PEVENT pEvent
);
2143 EngReleaseSemaphore(
2144 _In_ HSEMAPHORE hsem
);
2149 EngRestoreFloatingPointState(
2150 _In_ VOID
*pBuffer
);
2155 EngSaveFloatingPointState(
2156 _Inout_ VOID
*pBuffer
,
2157 _In_ ULONG cjBufferSize
);
2163 _In_reads_bytes_(cjLength
) PVOID Address
,
2164 _In_ ULONG cjLength
);
2170 _In_ PEVENT pEvent
);
2172 #ifdef USERMODE_DRIVER
2173 #define EngSetLastError SetLastError
2187 _In_opt_ SURFOBJ
*psoMask
,
2188 _In_opt_ SURFOBJ
*psoColor
,
2189 _In_opt_ XLATEOBJ
*pxlo
,
2202 _In_opt_ SURFOBJ
*psoMask
,
2203 _In_opt_ SURFOBJ
*psoColor
,
2204 _Reserved_ XLATEOBJ
*pxlo
,
2211 _In_ HANDLE hPrinter
,
2214 _In_reads_bytes_(cjPrinterData
) LPBYTE lpbPrinterData
,
2215 _In_ DWORD cjPrinterData
);
2217 typedef int (CDECL
*SORTCOMP
)(const void *pv1
, const void *pv2
);
2223 _Inout_updates_bytes_(c
* cjElem
) PBYTE pjBuf
,
2226 _In_ SORTCOMP pfnComp
);
2232 _In_ SURFOBJ
*psoDest
,
2233 _In_ SURFOBJ
*psoSrc
,
2234 _In_opt_ SURFOBJ
*psoMask
,
2235 _In_opt_ CLIPOBJ
*pco
,
2236 _In_opt_ XLATEOBJ
*pxlo
,
2237 _In_opt_ COLORADJUSTMENT
*pca
,
2238 _In_ POINTL
*pptlHTOrg
,
2239 _In_ RECTL
*prclDest
,
2240 _In_ RECTL
*prclSrc
,
2241 _When_(psoMask
, _In_
) POINTL
*pptlMask
,
2248 _In_ SURFOBJ
*psoDest
,
2249 _In_ SURFOBJ
*psoSrc
,
2250 _In_opt_ SURFOBJ
*psoMask
,
2251 _In_opt_ CLIPOBJ
*pco
,
2252 _In_opt_ XLATEOBJ
*pxlo
,
2253 _In_opt_ COLORADJUSTMENT
*pca
,
2254 _In_ POINTL
*pptlHTOrg
,
2255 _In_ RECTL
*prclDest
,
2256 _In_ RECTL
*prclSrc
,
2257 _When_(psoMask
, _In_
) POINTL
*pptlMask
,
2259 _In_opt_ BRUSHOBJ
*pbo
,
2265 EngStrokeAndFillPath(
2266 _Inout_ SURFOBJ
*pso
,
2270 _In_ BRUSHOBJ
*pboStroke
,
2271 _In_ LINEATTRS
*plineattrs
,
2272 _In_ BRUSHOBJ
*pboFill
,
2273 _In_ POINTL
*pptlBrushOrg
,
2275 _In_ FLONG flOptions
);
2286 _In_ POINTL
*pptlBrushOrg
,
2287 _In_ LINEATTRS
*plineattrs
,
2298 _Null_ RECTL
*prclExtra
,
2299 _In_opt_ RECTL
*prclOpaque
,
2300 _In_ BRUSHOBJ
*pboFore
,
2301 _In_ BRUSHOBJ
*pboOpaque
,
2302 _In_ POINTL
*pptlOrg
,
2309 _In_ SURFOBJ
*psoDst
,
2310 _In_ SURFOBJ
*psoSrc
,
2311 _In_opt_ CLIPOBJ
*pco
,
2312 _In_opt_ XLATEOBJ
*pxlo
,
2313 _In_ RECTL
*prclDst
,
2314 _In_ RECTL
*prclSrc
,
2315 _In_ ULONG iTransColor
,
2316 _In_ ULONG ulReserved
);
2321 EngUnicodeToMultiByteN(
2322 _Out_writes_bytes_to_(cjMultiByteBuf
, *pcjMultiByteString
) PCHAR pchMultiByteString
,
2323 _In_ ULONG cjMultiByteBuf
,
2324 _Out_opt_ PULONG pcjMultiByteString
,
2325 _In_reads_bytes_(cjUnicodeString
) PWSTR pwszUnicodeString
,
2326 _In_ ULONG cjUnicodeString
);
2332 _In_ HANDLE hModule
);
2337 EngUnlockDirectDrawSurface(
2338 _In_ PDD_SURFACE_LOCAL pSurface
);
2344 _In_ _Post_ptr_invalid_ HDRVOBJ hdo
);
2350 _In_ _Post_ptr_invalid_ SURFOBJ
*pso
);
2356 _In_ PEVENT pEvent
);
2362 _In_ ULONG_PTR iFile
);
2368 _In_ ULONG_PTR iFile
);
2374 _In_ ULONG_PTR iFile
);
2380 _In_ HANDLE hSecure
);
2385 EngWaitForSingleObject(
2387 _In_opt_ PLARGE_INTEGER pTimeOut
);
2392 EngWideCharToMultiByte(
2394 _In_reads_bytes_opt_(cjWideCharString
) LPWSTR pwszWideCharString
,
2395 _In_ INT cjWideCharString
,
2396 _Out_z_bytecap_(cjMultiByteString
) LPSTR pszMultiByteString
,
2397 _In_ INT cjMultiByteString
);
2403 _In_ HANDLE hPrinter
,
2404 _In_reads_bytes_(cjBuf
) LPVOID pvBuf
,
2406 _Out_ LPDWORD pcWritten
);
2408 #if defined(_X86_) && !defined(USERMODE_DRIVER)
2413 _Inout_ PFLOATOBJ pf
,
2414 _In_ PFLOATOBJ pf1
);
2420 _Inout_ PFLOATOBJ pf
,
2427 _Inout_ PFLOATOBJ pf
,
2434 _Inout_ PFLOATOBJ pf
,
2435 _In_ PFLOATOBJ pf1
);
2441 _Inout_ PFLOATOBJ pf
,
2448 _Inout_ PFLOATOBJ pf
,
2456 _In_ PFLOATOBJ pf1
);
2480 FLOATOBJ_GreaterThan(
2482 _In_ PFLOATOBJ pf1
);
2487 FLOATOBJ_GreaterThanLong(
2496 _In_ PFLOATOBJ pf1
);
2501 FLOATOBJ_LessThanLong(
2509 _Inout_ PFLOATOBJ pf
,
2510 _In_ PFLOATOBJ pf1
);
2516 _Inout_ PFLOATOBJ pf
,
2523 _Inout_ PFLOATOBJ pf
,
2530 _Inout_ PFLOATOBJ pf
);
2550 _Inout_ PFLOATOBJ pf
,
2551 _In_ PFLOATOBJ pf1
);
2557 _Inout_ PFLOATOBJ pf
,
2564 _Inout_ PFLOATOBJ pf
,
2569 #define FLOATOBJ_SetFloat(pf, f) {*(pf) = (f);}
2570 #define FLOATOBJ_SetLong(pf, l) {*(pf) = (FLOAT)(l);}
2571 #define FLOATOBJ_GetFloat(pf) (*(PULONG)(pf))
2572 #define FLOATOBJ_GetLong(pf) ((LONG)*(pf))
2573 #define FLOATOBJ_Add(pf, pf1) {*(pf) += *(pf1);}
2574 #define FLOATOBJ_AddFloat(pf, f) {*(pf) += (f);}
2575 #define FLOATOBJ_AddLong(pf, l) {*(pf) += (l);}
2576 #define FLOATOBJ_Sub(pf, pf1) {*(pf) -= *(pf1);}
2577 #define FLOATOBJ_SubFloat(pf, f) {*(pf) -= (f);}
2578 #define FLOATOBJ_SubLong(pf, l) {*(pf) -= (l);}
2579 #define FLOATOBJ_Mul(pf, pf1) {*(pf) *= *(pf1);}
2580 #define FLOATOBJ_MulFloat(pf, f) {*(pf) *= (f);}
2581 #define FLOATOBJ_MulLong(pf, l) {*(pf) *= (l);}
2582 #define FLOATOBJ_Div(pf, pf1) {*(pf) /= *(pf1);}
2583 #define FLOATOBJ_DivFloat(pf, f) {*(pf) /= (f);}
2584 #define FLOATOBJ_DivLong(pf, l) {*(pf) /= (l);}
2585 #define FLOATOBJ_Neg(pf) {*(pf) = -(*(pf));}
2586 #define FLOATOBJ_Equal(pf, pf1) (*(pf) == *(pf1))
2587 #define FLOATOBJ_GreaterThan(pf, pf1) (*(pf) > *(pf1))
2588 #define FLOATOBJ_LessThan(pf, pf1) (*(pf) < *(pf1))
2589 #define FLOATOBJ_EqualLong(pf, l) (*(pf) == (FLOAT)(l))
2590 #define FLOATOBJ_GreaterThanLong(pf, l) (*(pf) > (FLOAT)(l))
2591 #define FLOATOBJ_LessThanLong(pf, l) (*(pf) < (FLOAT)(l))
2598 FONTOBJ_cGetAllGlyphHandles(
2600 _Out_opt_ HGLYPH
*phg
);
2609 _In_count_(cGlyph
) HGLYPH
*phg
,
2610 _Out_ PVOID
*ppvGlyph
);
2624 _Ret_opt_bytecount_(*pcjTable
)
2628 FONTOBJ_pjOpenTypeTablePointer(
2631 _Out_ ULONG
*pcjTable
);
2636 FONTOBJ_pQueryGlyphAttrs(
2640 _Ret_opt_bytecount_(*pcjFile
)
2644 FONTOBJ_pvTrueTypeFontFile(
2646 _Out_ ULONG
*pcjFile
);
2651 FONTOBJ_pwszFontFilePaths(
2658 FONTOBJ_pxoGetXform(
2667 _Out_bytecap_(cjSize
) FONTINFO
*pfi
);
2669 #if (NTDDI_VERSION <= NTDDI_WINXP)
2672 FONTOBJ_pGetGammaTables(
2679 HT_ComputeRGBGammaTable(
2680 _In_ USHORT GammaTableEntries
,
2681 _In_ USHORT GammaTableType
,
2682 _In_ USHORT RedGamma
,
2683 _In_ USHORT GreenGamma
,
2684 _In_ USHORT BlueGamma
,
2685 _Out_writes_bytes_(GammaTableEntries
* 3) LPBYTE pGammaTable
);
2690 HT_Get8BPPFormatPalette(
2691 _Out_opt_ LPPALETTEENTRY pPaletteEntry
,
2692 _In_ USHORT RedGamma
,
2693 _In_ USHORT GreenGamma
,
2694 _In_ USHORT BlueGamma
);
2699 HT_Get8BPPMaskPalette(
2700 _Out_opt_ LPPALETTEENTRY pPaletteEntry
,
2701 _In_ BOOL Use8BPPMaskPal
,
2703 _In_ USHORT RedGamma
,
2704 _In_ USHORT GreenGamma
,
2705 _In_ USHORT BlueGamma
);
2710 HTUI_DeviceColorAdjustment(
2711 _In_ LPSTR pDeviceName
,
2712 _Out_ PDEVHTADJDATA pDevHTAdjData
);
2721 _Out_writes_(cColors
) ULONG
*pulColors
);
2726 PATHOBJ_bCloseFigure(
2734 _Out_ PATHDATA
*ppd
);
2739 PATHOBJ_bEnumClipLines(
2742 _Out_bytecap_(cj
) CLIPLINE
*pcl
);
2749 _In_ POINTFIX ptfx
);
2754 PATHOBJ_bPolyBezierTo(
2756 _In_count_(cptfx
) POINTFIX
*pptfx
,
2762 PATHOBJ_bPolyLineTo(
2764 _In_count_(cptfx
) POINTFIX
*pptfx
,
2771 _Inout_ PATHOBJ
*ppo
);
2776 PATHOBJ_vEnumStartClipLines(
2777 _Inout_ PATHOBJ
*ppo
,
2780 _In_ LINEATTRS
*pla
);
2787 _Out_ PRECTFX prectfx
);
2793 _Inout_ STROBJ
*pstro
,
2795 _Out_ PGLYPHPOS
*ppgpos
); // FIXME_ size?
2800 STROBJ_bEnumPositionsOnly(
2803 _Out_ PGLYPHPOS
*ppgpos
); // FIXME_ size?
2808 STROBJ_bGetAdvanceWidths(
2812 _Out_cap_(c
) POINTQF
*pptqD
);
2817 STROBJ_dwGetCodePage(
2818 _In_ STROBJ
*pstro
);
2823 STROBJ_fxBreakExtra(
2824 _In_ STROBJ
*pstro
);
2829 STROBJ_fxCharacterExtra(
2830 _In_ STROBJ
*pstro
);
2836 _Inout_ STROBJ
*pstro
);
2842 _Inout_ WNDOBJ
*pwo
,
2844 _Out_bytecap_(cj
) ULONG
*pul
);
2850 _Inout_ WNDOBJ
*pwo
,
2852 _In_ ULONG iDirection
,
2858 WNDOBJ_vSetConsumer(
2859 _Inout_ WNDOBJ
*pwo
,
2860 _In_ PVOID pvConsumer
);
2862 /* XFORMOBJ_bApplyXform.iMode constants */
2864 #define XF_INV_LTOL 1L
2866 #define XF_INV_FXTOL 3L
2871 XFORMOBJ_bApplyXform(
2875 _In_reads_bytes_(cPoints
* sizeof(POINTL
)) PVOID pvIn
,
2876 _Out_writes_bytes_(cPoints
* sizeof(POINTL
)) PVOID pvOut
);
2878 #if !defined(USERMODE_DRIVER)
2882 XFORMOBJ_iGetFloatObjXform(
2884 _Out_ FLOATOBJ_XFORM
*pxfo
);
2886 #define XFORMOBJ_iGetFloatObjXform XFORMOBJ_iGetXform
2894 _Out_ XFORML
*pxform
);
2896 /* XLATEOBJ_cGetPalette.iPal constants */
2897 #define XO_SRCPALETTE 1
2898 #define XO_DESTPALETTE 2
2899 #define XO_DESTDCPALETTE 3
2900 #define XO_SRCBITFIELDS 4
2901 #define XO_DESTBITFIELDS 5
2906 XLATEOBJ_cGetPalette(
2907 _In_ XLATEOBJ
*pxlo
,
2910 _Out_cap_(cPal
) ULONG
*pPal
);
2915 XLATEOBJ_hGetColorTransform(
2916 _In_ XLATEOBJ
*pxlo
);
2922 _In_ XLATEOBJ
*pxlo
,
2929 _In_ XLATEOBJ
*pxlo
);
2932 /* Graphics Driver Functions */
2935 (APIENTRY FN_DrvAlphaBlend
)(
2936 _Inout_ SURFOBJ
*psoDest
,
2937 _In_ SURFOBJ
*psoSrc
,
2939 _In_opt_ XLATEOBJ
*pxlo
,
2940 _In_ RECTL
*prclDest
,
2941 _In_ RECTL
*prclSrc
,
2942 _In_ BLENDOBJ
*pBlendObj
);
2943 typedef FN_DrvAlphaBlend
*PFN_DrvAlphaBlend
;
2944 extern FN_DrvAlphaBlend DrvAlphaBlend
;
2947 (APIENTRY FN_DrvAssertMode
)(
2950 typedef FN_DrvAssertMode
*PFN_DrvAssertMode
;
2951 extern FN_DrvAssertMode DrvAssertMode
;
2954 (APIENTRY FN_DrvBitBlt
)(
2955 _Inout_ SURFOBJ
*psoTrg
,
2956 _In_opt_ SURFOBJ
*psoSrc
,
2957 _In_opt_ SURFOBJ
*psoMask
,
2959 _In_opt_ XLATEOBJ
*pxlo
,
2960 _In_ RECTL
*prclTrg
,
2961 _In_opt_ POINTL
*pptlSrc
,
2962 _In_opt_ POINTL
*pptlMask
,
2963 _In_opt_ BRUSHOBJ
*pbo
,
2964 _In_opt_ POINTL
*pptlBrush
,
2966 typedef FN_DrvBitBlt
*PFN_DrvBitBlt
;
2967 extern FN_DrvBitBlt DrvBitBlt
;
2970 (APIENTRY FN_DrvCompletePDEV
)(
2973 typedef FN_DrvCompletePDEV
*PFN_DrvCompletePDEV
;
2974 extern FN_DrvCompletePDEV DrvCompletePDEV
;
2977 (APIENTRY FN_DrvCopyBits
)(
2978 _In_ SURFOBJ
*psoDest
,
2979 _In_ SURFOBJ
*psoSrc
,
2981 _In_opt_ XLATEOBJ
*pxlo
,
2982 _In_ RECTL
*prclDest
,
2983 _In_ POINTL
*pptlSrc
);
2984 typedef FN_DrvCopyBits
*PFN_DrvCopyBits
;
2985 extern FN_DrvCopyBits DrvCopyBits
;
2988 (APIENTRY FN_DrvCreateDeviceBitmap
)(
2991 _In_ ULONG iFormat
);
2992 typedef FN_DrvCreateDeviceBitmap
*PFN_DrvCreateDeviceBitmap
;
2993 extern FN_DrvCreateDeviceBitmap DrvCreateDeviceBitmap
;
2996 (APIENTRY FN_DrvDeleteDeviceBitmap
)(
2997 _In_ _Post_ptr_invalid_ DHSURF dhsurf
);
2998 typedef FN_DrvDeleteDeviceBitmap
*PFN_DrvDeleteDeviceBitmap
;
2999 extern FN_DrvDeleteDeviceBitmap DrvDeleteDeviceBitmap
;
3002 (APIENTRY FN_DrvDeriveSurface
)(
3003 _In_ DD_DIRECTDRAW_GLOBAL
*pDirectDraw
,
3004 _In_ DD_SURFACE_LOCAL
*pSurface
);
3005 typedef FN_DrvDeriveSurface
*PFN_DrvDeriveSurface
;
3006 extern FN_DrvDeriveSurface DrvDeriveSurface
;
3009 (APIENTRY FN_DrvDescribePixelFormat
)(
3011 _In_ LONG iPixelFormat
,
3013 _Out_opt_ PIXELFORMATDESCRIPTOR
*ppfd
);
3014 typedef FN_DrvDescribePixelFormat
*PFN_DrvDescribePixelFormat
;
3015 extern FN_DrvDescribePixelFormat DrvDescribePixelFormat
;
3018 (APIENTRY FN_DrvDestroyFont
)(
3020 typedef FN_DrvDestroyFont
*PFN_DrvDestroyFont
;
3021 extern FN_DrvDestroyFont DrvDestroyFont
;
3024 (APIENTRY FN_DrvDisableDriver
)(VOID
);
3025 typedef FN_DrvDisableDriver
*PFN_DrvDisableDriver
;
3026 extern FN_DrvDisableDriver DrvDisableDriver
;
3029 (APIENTRY FN_DrvDisablePDEV
)(
3030 _In_ DHPDEV dhpdev
);
3031 typedef FN_DrvDisablePDEV
*PFN_DrvDisablePDEV
;
3032 extern FN_DrvDisablePDEV DrvDisablePDEV
;
3035 (APIENTRY FN_DrvDisableSurface
)(
3036 _In_ DHPDEV dhpdev
);
3037 typedef FN_DrvDisableSurface
*PFN_DrvDisableSurface
;
3038 extern FN_DrvDisableSurface DrvDisableSurface
;
3041 (APIENTRY FN_DrvDitherColor
)(
3045 _Inout_updates_(8 * 8) ULONG
*pul
); // FIXME: compare EngDitherColor
3046 typedef FN_DrvDitherColor
*PFN_DrvDitherColor
;
3047 extern FN_DrvDitherColor DrvDitherColor
;
3050 (APIENTRY FN_DrvDrawEscape
)(
3056 _In_reads_bytes_(cjIn
) PVOID pvIn
);
3057 typedef FN_DrvDrawEscape
*PFN_DrvDrawEscape
;
3058 extern FN_DrvDrawEscape DrvDrawEscape
;
3061 (APIENTRY FN_DrvEnableDriver
)(
3062 _In_ ULONG iEngineVersion
,
3064 _Inout_bytecount_(cj
) DRVENABLEDATA
*pded
); // Zero initialized
3065 typedef FN_DrvEnableDriver
*PFN_DrvEnableDriver
;
3066 extern FN_DrvEnableDriver DrvEnableDriver
;
3069 (APIENTRY FN_DrvEnablePDEV
)(
3071 _In_ LPWSTR pwszLogAddress
,
3073 _Out_opt_cap_(cPat
) HSURF
*phsurfPatterns
,
3075 _Out_bytecap_(cjCaps
) ULONG
*pdevcaps
,
3076 _In_ ULONG cjDevInfo
,
3079 _In_ LPWSTR pwszDeviceName
,
3080 _In_ HANDLE hDriver
);
3081 typedef FN_DrvEnablePDEV
*PFN_DrvEnablePDEV
;
3082 extern FN_DrvEnablePDEV DrvEnablePDEV
;
3085 (APIENTRY FN_DrvEnableSurface
)(
3086 _In_ DHPDEV dhpdev
);
3087 typedef FN_DrvEnableSurface
*PFN_DrvEnableSurface
;
3088 extern FN_DrvEnableSurface DrvEnableSurface
;
3090 /* DrvEndDoc.fl constants */
3091 #define ED_ABORTDOC 0x00000001
3094 (APIENTRY FN_DrvEndDoc
)(
3097 typedef FN_DrvEndDoc
*PFN_DrvEndDoc
;
3098 extern FN_DrvEndDoc DrvEndDoc
;
3101 (APIENTRY FN_DrvEscape
)(
3105 _In_bytecount_(cjIn
) PVOID pvIn
,
3107 _Out_bytecap_(cjOut
) PVOID pvOut
);
3108 typedef FN_DrvEscape
*PFN_DrvEscape
;
3109 extern FN_DrvEscape DrvEscape
;
3112 (APIENTRY FN_DrvFillPath
)(
3113 _Inout_ SURFOBJ
*pso
,
3117 _In_ POINTL
*pptlBrushOrg
,
3119 _In_ FLONG flOptions
);
3120 typedef FN_DrvFillPath
*PFN_DrvFillPath
;
3121 extern FN_DrvFillPath DrvFillPath
;
3124 (APIENTRY FN_DrvFontManagement
)(
3126 _In_opt_ FONTOBJ
*pfo
,
3129 _In_bytecount_(cjIn
) PVOID pvIn
,
3131 _Out_bytecap_(cjOut
) PVOID pvOut
);
3132 typedef FN_DrvFontManagement
*PFN_DrvFontManagement
;
3133 extern FN_DrvFontManagement DrvFontManagement
;
3136 (APIENTRY FN_DrvFree
)(
3137 _In_ _Post_ptr_invalid_ PVOID pv
,
3139 typedef FN_DrvFree
*PFN_DrvFree
;
3140 extern FN_DrvFree DrvFree
;
3142 /* DrvGetGlyphMode return values */
3143 #define FO_HGLYPHS 0L
3144 #define FO_GLYPHBITS 1L
3145 #define FO_PATHOBJ 2L
3148 (APIENTRY FN_DrvGetGlyphMode
)(
3151 typedef FN_DrvGetGlyphMode
*PFN_DrvGetGlyphMode
;
3152 extern FN_DrvGetGlyphMode DrvGetGlyphMode
;
3155 (APIENTRY FN_DrvGetModes
)(
3156 _In_ HANDLE hDriver
,
3158 _Out_opt_bytecap_(cjSize
) DEVMODEW
*pdm
);
3159 typedef FN_DrvGetModes
*PFN_DrvGetModes
;
3160 extern FN_DrvGetModes DrvGetModes
;
3163 (APIENTRY FN_DrvGetTrueTypeFile
)(
3164 _In_ ULONG_PTR iFile
,
3166 typedef FN_DrvGetTrueTypeFile
*PFN_DrvGetTrueTypeFile
;
3167 extern FN_DrvGetTrueTypeFile DrvGetTrueTypeFile
;
3170 (APIENTRY FN_DrvGradientFill
)(
3171 _Inout_ SURFOBJ
*psoDest
,
3173 _In_opt_ XLATEOBJ
*pxlo
,
3174 _In_ TRIVERTEX
*pVertex
,
3178 _In_ RECTL
*prclExtents
,
3179 _In_ POINTL
*pptlDitherOrg
,
3181 typedef FN_DrvGradientFill
*PFN_DrvGradientFill
;
3182 extern FN_DrvGradientFill DrvGradientFill
;
3185 (APIENTRY FN_DrvIcmCheckBitmapBits
)(
3187 _In_ HANDLE hColorTransform
,
3189 _Out_bytecap_(pso
->sizlBitmap
.cx
* pso
->sizlBitmap
.cy
) PBYTE paResults
);
3190 typedef FN_DrvIcmCheckBitmapBits
*PFN_DrvIcmCheckBitmapBits
;
3191 extern FN_DrvIcmCheckBitmapBits DrvIcmCheckBitmapBits
;
3194 (APIENTRY FN_DrvIcmCreateColorTransform
)(
3196 _In_ LPLOGCOLORSPACEW pLogColorSpace
,
3197 _In_reads_bytes_opt_(cjSourceProfile
) PVOID pvSourceProfile
,
3198 _In_ ULONG cjSourceProfile
,
3199 _In_reads_bytes_(cjDestProfile
) PVOID pvDestProfile
,
3200 _In_ ULONG cjDestProfile
,
3201 _In_reads_bytes_opt_(cjTargetProfile
) PVOID pvTargetProfile
,
3202 _In_ ULONG cjTargetProfile
,
3203 _In_ DWORD dwReserved
);
3204 typedef FN_DrvIcmCreateColorTransform
*PFN_DrvIcmCreateColorTransform
;
3205 extern FN_DrvIcmCreateColorTransform DrvIcmCreateColorTransform
;
3208 (APIENTRY FN_DrvIcmDeleteColorTransform
)(
3210 _In_ HANDLE hcmXform
);
3211 typedef FN_DrvIcmDeleteColorTransform
*PFN_DrvIcmDeleteColorTransform
;
3212 extern FN_DrvIcmDeleteColorTransform DrvIcmDeleteColorTransform
;
3214 /* DrvIcmSetDeviceGammaRamp.iFormat constants */
3215 #define IGRF_RGB_256BYTES 0x00000000
3216 #define IGRF_RGB_256WORDS 0x00000001
3219 (APIENTRY FN_DrvIcmSetDeviceGammaRamp
)(
3222 _In_bytecount_(sizeof(GAMMARAMP
)) LPVOID lpRamp
);
3223 typedef FN_DrvIcmSetDeviceGammaRamp
*PFN_DrvIcmSetDeviceGammaRamp
;
3224 extern FN_DrvIcmSetDeviceGammaRamp DrvIcmSetDeviceGammaRamp
;
3227 (APIENTRY FN_DrvLineTo
)(
3228 _Inout_ SURFOBJ
*pso
,
3235 _In_opt_ RECTL
*prclBounds
,
3237 typedef FN_DrvLineTo
*PFN_DrvLineTo
;
3238 extern FN_DrvLineTo DrvLineTo
;
3241 (APIENTRY FN_DrvLoadFontFile
)(
3243 _In_ ULONG_PTR
*piFile
,
3244 _In_count_(cFiles
) PVOID
*ppvView
,
3245 _In_count_(cFiles
) ULONG
*pcjView
,
3246 _In_opt_ DESIGNVECTOR
*pdv
,
3247 _In_ ULONG ulLangID
,
3248 _In_ ULONG ulFastCheckSum
);
3249 typedef FN_DrvLoadFontFile
*PFN_DrvLoadFontFile
;
3250 extern FN_DrvLoadFontFile DrvLoadFontFile
;
3253 (APIENTRY FN_DrvMovePointer
)(
3257 _In_opt_ RECTL
*prcl
);
3258 typedef FN_DrvMovePointer
*PFN_DrvMovePointer
;
3259 extern FN_DrvMovePointer DrvMovePointer
;
3262 (APIENTRY FN_DrvNextBand
)(
3265 typedef FN_DrvNextBand
*PFN_DrvNextBand
;
3266 extern FN_DrvNextBand DrvNextBand
;
3269 (APIENTRY FN_DrvNotify
)(
3272 _In_opt_ PVOID pvData
);
3273 typedef FN_DrvNotify
*PFN_DrvNotify
;
3274 extern FN_DrvNotify DrvNotify
;
3277 (APIENTRY FN_DrvOffset
)(
3281 _In_ FLONG flReserved
);
3282 typedef FN_DrvOffset
*PFN_DrvOffset
;
3283 extern FN_DrvOffset DrvOffset
;
3286 (APIENTRY FN_DrvPaint
)(
3287 _Inout_ SURFOBJ
*pso
,
3290 _In_ POINTL
*pptlBrushOrg
,
3292 typedef FN_DrvPaint
*PFN_DrvPaint
;
3293 extern FN_DrvPaint DrvPaint
;
3296 (APIENTRY FN_DrvPlgBlt
)(
3297 _Inout_ SURFOBJ
*psoTrg
,
3298 _Inout_ SURFOBJ
*psoSrc
,
3299 _In_opt_ SURFOBJ
*psoMsk
,
3301 _In_opt_ XLATEOBJ
*pxlo
,
3302 _In_opt_ COLORADJUSTMENT
*pca
,
3303 _In_opt_ POINTL
*pptlBrushOrg
,
3304 _In_ POINTFIX
*pptfx
,
3306 _In_opt_ POINTL
*pptl
,
3308 typedef FN_DrvPlgBlt
*PFN_DrvPlgBlt
;
3309 extern FN_DrvPlgBlt DrvPlgBlt
;
3311 /* DrvQueryAdvanceWidths.iMode constants */
3312 #define QAW_GETWIDTHS 0
3313 #define QAW_GETEASYWIDTHS 1
3316 (APIENTRY FN_DrvQueryAdvanceWidths
)(
3320 _In_reads_(cGlyphs
) HGLYPH
*phg
,
3321 _Out_writes_bytes_(cGlyphs
* sizeof(USHORT
)) PVOID pvWidths
,
3322 _In_ ULONG cGlyphs
);
3323 typedef FN_DrvQueryAdvanceWidths
*PFN_DrvQueryAdvanceWidths
;
3324 extern FN_DrvQueryAdvanceWidths DrvQueryAdvanceWidths
;
3326 /* DrvQueryDeviceSupport.iType constants */
3327 #define QDS_CHECKJPEGFORMAT 0x00000000
3328 #define QDS_CHECKPNGFORMAT 0x00000001
3331 (APIENTRY FN_DrvQueryDeviceSupport
)(
3333 _In_ XLATEOBJ
*pxlo
,
3337 _In_bytecount_(cjIn
) PVOID pvIn
,
3339 _Out_bytecap_(cjOut
) PVOID pvOut
);
3340 typedef FN_DrvQueryDeviceSupport
*PFN_DrvQueryDeviceSupport
;
3341 extern FN_DrvQueryDeviceSupport DrvQueryDeviceSupport
;
3343 /* DrvQueryDriverInfo.dwMode constants */
3344 #define DRVQUERY_USERMODE 0x00000001
3347 (APIENTRY FN_DrvQueryDriverInfo
)(
3349 _Out_bytecap_(cjBuf
) PVOID pBuffer
,
3351 _Out_ PDWORD pcbNeeded
);
3352 typedef FN_DrvQueryDriverInfo
*PFN_DrvQueryDriverInfo
;
3353 extern FN_DrvQueryDriverInfo DrvQueryDriverInfo
;
3356 (APIENTRY FN_DrvQueryFont
)(
3358 _In_ ULONG_PTR iFile
,
3360 _Out_ ULONG_PTR
*pid
);
3361 typedef FN_DrvQueryFont
*PFN_DrvQueryFont
;
3362 extern FN_DrvQueryFont DrvQueryFont
;
3364 /* DrvQueryFontCaps.pulCaps constants */
3365 #define QC_OUTLINES 0x00000001
3366 #define QC_1BIT 0x00000002
3367 #define QC_4BIT 0x00000004
3369 #define QC_FONTDRIVERCAPS (QC_OUTLINES | QC_1BIT | QC_4BIT)
3372 (APIENTRY FN_DrvQueryFontCaps
)(
3374 _Out_cap_(culCaps
) ULONG
*pulCaps
);
3375 typedef FN_DrvQueryFontCaps
*PFN_DrvQueryFontCaps
;
3376 extern FN_DrvQueryFontCaps DrvQueryFontCaps
;
3378 /* DrvQueryFontData.iMode constants */
3379 #define QFD_GLYPHANDBITMAP 1L
3380 #define QFD_GLYPHANDOUTLINE 2L
3381 #define QFD_MAXEXTENTS 3L
3382 #define QFD_TT_GLYPHANDBITMAP 4L
3383 #define QFD_TT_GRAY1_BITMAP 5L
3384 #define QFD_TT_GRAY2_BITMAP 6L
3385 #define QFD_TT_GRAY4_BITMAP 8L
3386 #define QFD_TT_GRAY8_BITMAP 9L
3388 #define QFD_TT_MONO_BITMAP QFD_TT_GRAY1_BITMAP
3391 (APIENTRY FN_DrvQueryFontData
)(
3396 _In_opt_ GLYPHDATA
*pgd
,
3397 _Out_bytecap_(cjSize
) PVOID pv
,
3399 typedef FN_DrvQueryFontData
*PFN_DrvQueryFontData
;
3400 extern FN_DrvQueryFontData DrvQueryFontData
;
3402 /* DrvQueryFontFile.ulMode constants */
3403 #define QFF_DESCRIPTION 0x00000001
3404 #define QFF_NUMFACES 0x00000002
3407 (APIENTRY FN_DrvQueryFontFile
)(
3408 _In_ ULONG_PTR iFile
,
3411 _Out_bytecap_(cjBuf
) ULONG
*pulBuf
);
3412 typedef FN_DrvQueryFontFile
*PFN_DrvQueryFontFile
;
3413 extern FN_DrvQueryFontFile DrvQueryFontFile
;
3415 /* DrvQueryFontTree.iMode constants */
3416 #define QFT_UNICODE 0L
3417 #define QFT_LIGATURES 1L
3418 #define QFT_KERNPAIRS 2L
3419 #define QFT_GLYPHSET 3L
3422 (APIENTRY FN_DrvQueryFontTree
)(
3424 _In_ ULONG_PTR iFile
,
3427 _Out_ ULONG_PTR
*pid
);
3428 typedef FN_DrvQueryFontTree
*PFN_DrvQueryFontTree
;
3429 extern FN_DrvQueryFontTree DrvQueryFontTree
;
3431 typedef PFD_GLYPHATTR
3432 (APIENTRY FN_DrvQueryGlyphAttrs
)(
3435 typedef FN_DrvQueryGlyphAttrs
*PFN_DrvQueryGlyphAttrs
;
3436 extern FN_DrvQueryGlyphAttrs DrvQueryGlyphAttrs
;
3439 (APIENTRY FN_DrvQueryPerBandInfo
)(
3441 _Inout_ PERBANDINFO
*pbi
);
3442 typedef FN_DrvQueryPerBandInfo
*PFN_DrvQueryPerBandInfo
;
3443 extern FN_DrvQueryPerBandInfo DrvQueryPerBandInfo
;
3445 /* DrvQueryTrueTypeOutline.bMetricsOnly constants */
3446 #define TTO_METRICS_ONLY 0x00000001
3447 #define TTO_QUBICS 0x00000002
3448 #define TTO_UNHINTED 0x00000004
3451 (APIENTRY FN_DrvQueryTrueTypeOutline
)(
3455 _In_ BOOL bMetricsOnly
,
3456 _Out_opt_ GLYPHDATA
*pgldt
,
3458 _Out_bytecap_(cjBuf
) TTPOLYGONHEADER
*ppoly
);
3459 typedef FN_DrvQueryTrueTypeOutline
*PFN_DrvQueryTrueTypeOutline
;
3460 extern FN_DrvQueryTrueTypeOutline DrvQueryTrueTypeOutline
;
3463 (APIENTRY FN_DrvQueryTrueTypeTable
)(
3464 _In_ ULONG_PTR iFile
,
3467 _In_ PTRDIFF dpStart
,
3469 _Out_opt_bytecap_(cjBuf
) BYTE
*pjBuf
,
3470 _Outptr_opt_result_bytebuffer_all_maybenull_(*pcjTable
) PBYTE
*ppjTable
,
3471 _Out_opt_ ULONG
*pcjTable
);
3472 typedef FN_DrvQueryTrueTypeTable
*PFN_DrvQueryTrueTypeTable
;
3473 extern FN_DrvQueryTrueTypeTable DrvQueryTrueTypeTable
;
3475 /* DrvRealizeBrush.iHatch constants */
3476 #define RB_DITHERCOLOR 0x80000000L
3478 #define HS_DDI_MAX 6
3481 (APIENTRY FN_DrvRealizeBrush
)(
3483 _Inout_ SURFOBJ
*psoTarget
, // CHECKME
3484 _In_opt_ SURFOBJ
*psoPattern
,
3485 _In_opt_ SURFOBJ
*psoMask
,
3486 _In_opt_ XLATEOBJ
*pxlo
,
3488 typedef FN_DrvRealizeBrush
*PFN_DrvRealizeBrush
;
3489 extern FN_DrvRealizeBrush DrvRealizeBrush
;
3491 /* DrvResetDevice return values */
3492 #define DRD_SUCCESS 0
3496 (APIENTRY FN_DrvResetDevice
)(
3498 _Reserved_ PVOID Reserved
);
3499 typedef FN_DrvResetDevice
*PFN_DrvResetDevice
;
3500 extern FN_DrvResetDevice DrvResetDevice
;
3503 (APIENTRY FN_DrvResetPDEV
)(
3504 _In_ DHPDEV dhpdevOld
,
3505 _In_ DHPDEV dhpdevNew
);
3506 typedef FN_DrvResetPDEV
*PFN_DrvResetPDEV
;
3507 extern FN_DrvResetPDEV DrvResetPDEV
;
3509 /* DrvSaveScreenBits.iMode constants */
3510 #define SS_SAVE 0x00000000
3511 #define SS_RESTORE 0x00000001
3512 #define SS_FREE 0x00000002
3515 (APIENTRY FN_DrvSaveScreenBits
)(
3518 _In_ ULONG_PTR ident
,
3520 typedef FN_DrvSaveScreenBits
*PFN_DrvSaveScreenBits
;
3521 extern FN_DrvSaveScreenBits DrvSaveScreenBits
;
3524 (APIENTRY FN_DrvSendPage
)(
3526 typedef FN_DrvSendPage
*PFN_DrvSendPage
;
3527 extern FN_DrvSendPage DrvSendPage
;
3529 /* DrvSetPalette range */
3530 #define WINDDI_MAXSETPALETTECOLORS 256
3531 #define WINDDI_MAXSETPALETTECOLORINDEX 255
3534 (APIENTRY FN_DrvSetPalette
)(
3538 _In_range_(0, WINDDI_MAXSETPALETTECOLORINDEX
) ULONG iStart
,
3539 _In_range_(0, WINDDI_MAXSETPALETTECOLORS
- iStart
) ULONG cColors
);
3540 typedef FN_DrvSetPalette
*PFN_DrvSetPalette
;
3541 extern FN_DrvSetPalette DrvSetPalette
;
3544 (APIENTRY FN_DrvSetPixelFormat
)(
3546 _In_ LONG iPixelFormat
,
3548 typedef FN_DrvSetPixelFormat
*PFN_DrvSetPixelFormat
;
3549 extern FN_DrvSetPixelFormat DrvSetPixelFormat
;
3551 /* DrvSetPointerShape return values */
3552 #define SPS_ERROR 0x00000000
3553 #define SPS_DECLINE 0x00000001
3554 #define SPS_ACCEPT_NOEXCLUDE 0x00000002
3555 #define SPS_ACCEPT_EXCLUDE 0x00000003
3556 #define SPS_ACCEPT_SYNCHRONOUS 0x00000004
3558 /* DrvSetPointerShape.fl constants */
3559 #define SPS_CHANGE 0x00000001L
3560 #define SPS_ASYNCCHANGE 0x00000002L
3561 #define SPS_ANIMATESTART 0x00000004L
3562 #define SPS_ANIMATEUPDATE 0x00000008L
3563 #define SPS_ALPHA 0x00000010L
3564 #define SPS_LENGTHMASK 0x00000F00L
3565 #define SPS_FREQMASK 0x000FF000L
3568 (APIENTRY FN_DrvSetPointerShape
)(
3570 _In_opt_ SURFOBJ
*psoMask
,
3571 _In_opt_ SURFOBJ
*psoColor
,
3572 _In_ XLATEOBJ
*pxlo
,
3579 typedef FN_DrvSetPointerShape
*PFN_DrvSetPointerShape
;
3580 extern FN_DrvSetPointerShape DrvSetPointerShape
;
3583 (APIENTRY FN_DrvStartBanding
)(
3586 typedef FN_DrvStartBanding
*PFN_DrvStartBanding
;
3587 extern FN_DrvStartBanding DrvStartBanding
;
3590 (APIENTRY FN_DrvStartDoc
)(
3592 _In_ LPWSTR pwszDocName
,
3593 _In_ DWORD dwJobId
);
3594 typedef FN_DrvStartDoc
*PFN_DrvStartDoc
;
3595 extern FN_DrvStartDoc DrvStartDoc
;
3598 (APIENTRY FN_DrvStartPage
)(
3600 typedef FN_DrvStartPage
*PFN_DrvStartPage
;
3601 extern FN_DrvStartPage DrvStartPage
;
3604 (APIENTRY FN_DrvStretchBlt
)(
3605 _Inout_ SURFOBJ
*psoDest
,
3606 _Inout_ SURFOBJ
*psoSrc
,
3607 _In_opt_ SURFOBJ
*psoMask
,
3609 _In_opt_ XLATEOBJ
*pxlo
,
3610 _In_opt_ COLORADJUSTMENT
*pca
,
3611 _In_ POINTL
*pptlHTOrg
,
3612 _In_ RECTL
*prclDest
,
3613 _In_ RECTL
*prclSrc
,
3614 _When_(psoMask
, _In_
) POINTL
*pptlMask
,
3616 typedef FN_DrvStretchBlt
*PFN_DrvStretchBlt
;
3617 extern FN_DrvStretchBlt DrvStretchBlt
;
3620 (APIENTRY FN_DrvStretchBltROP
)(
3621 _Inout_ SURFOBJ
*psoDest
,
3622 _Inout_ SURFOBJ
*psoSrc
,
3623 _In_opt_ SURFOBJ
*psoMask
,
3625 _In_opt_ XLATEOBJ
*pxlo
,
3626 _In_opt_ COLORADJUSTMENT
*pca
,
3627 _In_ POINTL
*pptlHTOrg
,
3628 _In_ RECTL
*prclDest
,
3629 _In_ RECTL
*prclSrc
,
3630 _When_(psoMask
, _In_
) POINTL
*pptlMask
,
3634 typedef FN_DrvStretchBltROP
*PFN_DrvStretchBltROP
;
3635 extern FN_DrvStretchBltROP DrvStretchBltROP
;
3638 (APIENTRY FN_DrvStrokeAndFillPath
)(
3639 _Inout_ SURFOBJ
*pso
,
3640 _Inout_ PATHOBJ
*ppo
,
3642 _In_opt_ XFORMOBJ
*pxo
,
3643 _In_ BRUSHOBJ
*pboStroke
,
3644 _In_ LINEATTRS
*plineattrs
,
3645 _In_ BRUSHOBJ
*pboFill
,
3646 _In_ POINTL
*pptlBrushOrg
,
3648 _In_ FLONG flOptions
);
3649 typedef FN_DrvStrokeAndFillPath
*PFN_DrvStrokeAndFillPath
;
3650 extern FN_DrvStrokeAndFillPath DrvStrokeAndFillPath
;
3653 (APIENTRY FN_DrvStrokePath
)(
3654 _Inout_ SURFOBJ
*pso
,
3657 _In_opt_ XFORMOBJ
*pxo
,
3659 _In_ POINTL
*pptlBrushOrg
,
3660 _In_ LINEATTRS
*plineattrs
,
3662 typedef FN_DrvStrokePath
*PFN_DrvStrokePath
;
3663 extern FN_DrvStrokePath DrvStrokePath
;
3666 (APIENTRY FN_DrvSwapBuffers
)(
3669 typedef FN_DrvSwapBuffers
*PFN_DrvSwapBuffers
;
3670 extern FN_DrvSwapBuffers DrvSwapBuffers
;
3673 (APIENTRY FN_DrvSynchronize
)(
3675 _In_count_c_(0) RECTL
*prcl
); // should be ignored
3676 typedef FN_DrvSynchronize
*PFN_DrvSynchronize
;
3677 extern FN_DrvSynchronize DrvSynchronize
;
3679 /* DrvSynchronizeSurface.fl constants */
3680 #define DSS_TIMER_EVENT 0x00000001
3681 #define DSS_FLUSH_EVENT 0x00000002
3682 #define DSS_RESERVED 0x00000004
3683 #define DSS_RESERVED1 0x00000008
3686 (APIENTRY FN_DrvSynchronizeSurface
)(
3688 _In_opt_ RECTL
*prcl
,
3690 typedef FN_DrvSynchronizeSurface
*PFN_DrvSynchronizeSurface
;
3691 extern FN_DrvSynchronizeSurface DrvSynchronizeSurface
;
3694 (APIENTRY FN_DrvTextOut
)(
3699 _Null_ RECTL
*prclExtra
,
3700 _In_opt_ RECTL
*prclOpaque
,
3701 _In_ BRUSHOBJ
*pboFore
,
3702 _In_ BRUSHOBJ
*pboOpaque
,
3703 _In_ POINTL
*pptlOrg
,
3705 typedef FN_DrvTextOut
*PFN_DrvTextOut
;
3706 extern FN_DrvTextOut DrvTextOut
;
3709 (APIENTRY FN_DrvTransparentBlt
)(
3710 _Inout_ SURFOBJ
*psoDst
,
3711 _In_ SURFOBJ
*psoSrc
,
3713 _In_opt_ XLATEOBJ
*pxlo
,
3714 _In_ RECTL
*prclDst
,
3715 _In_ RECTL
*prclSrc
,
3716 _In_ ULONG iTransColor
,
3717 _In_ ULONG ulReserved
);
3718 typedef FN_DrvTransparentBlt
*PFN_DrvTransparentBlt
;
3719 extern FN_DrvTransparentBlt DrvTransparentBlt
;
3722 (APIENTRY FN_DrvUnloadFontFile
)(
3723 _In_ ULONG_PTR iFile
);
3724 typedef FN_DrvUnloadFontFile
*PFN_DrvUnloadFontFile
;
3725 extern FN_DrvUnloadFontFile DrvUnloadFontFile
;
3730 (APIENTRY FN_DrvDisableDirectDraw
)(
3731 _In_ DHPDEV dhpdev
);
3732 typedef FN_DrvDisableDirectDraw
*PFN_DrvDisableDirectDraw
;
3733 extern FN_DrvDisableDirectDraw DrvDisableDirectDraw
;
3736 (APIENTRY FN_DrvEnableDirectDraw
)(
3738 _Out_ DD_CALLBACKS
*pCallBacks
,
3739 _Out_ DD_SURFACECALLBACKS
*pSurfaceCallBacks
,
3740 _Out_ DD_PALETTECALLBACKS
*pPaletteCallBacks
);
3741 typedef FN_DrvEnableDirectDraw
*PFN_DrvEnableDirectDraw
;
3742 extern FN_DrvEnableDirectDraw DrvEnableDirectDraw
;
3745 (APIENTRY FN_DrvGetDirectDrawInfo
)(
3747 _Out_ DD_HALINFO
*pHalInfo
,
3748 _Out_ DWORD
*pdwNumHeaps
,
3749 _Out_ VIDEOMEMORY
*pvmList
,
3750 _Out_ DWORD
*pdwNumFourCCCodes
,
3751 _Out_ DWORD
*pdwFourCC
);
3752 typedef FN_DrvGetDirectDrawInfo
*PFN_DrvGetDirectDrawInfo
;
3753 extern FN_DrvGetDirectDrawInfo DrvGetDirectDrawInfo
;
3755 typedef BOOL
//DECLSPEC_DEPRECATED_DDK
3756 (APIENTRY FN_DrvQuerySpoolType
)(
3758 _In_ LPWSTR pwchType
);
3759 typedef FN_DrvQuerySpoolType
*PFN_DrvQuerySpoolType
;
3760 extern FN_DrvQuerySpoolType DrvQuerySpoolType
;
3767 #endif /* defined __VIDEO_H__ */
3769 #endif /* _WINDDI_ */