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))
44 #if defined(_ENGINE_EXPORT_)
47 #define ENGAPI DECLSPEC_IMPORT
50 #define DDI_DRIVER_VERSION_NT4 0x00020000
51 #define DDI_DRIVER_VERSION_SP3 0x00020003
52 #define DDI_DRIVER_VERSION_NT5 0x00030000
53 #define DDI_DRIVER_VERSION_NT5_01 0x00030100
54 #define DDI_DRIVER_VERSION_NT5_01_SP1 0x00030101
56 #define GDI_DRIVER_VERSION 0x4000
58 #if defined(_X86_) && !defined(USERMODE_DRIVER) && !defined(BUILD_WOW6432)
68 typedef ULONG_PTR HFF
;
69 typedef ULONG_PTR HFC
;
72 typedef PTRDIFF
*PPTRDIFF
;
78 typedef HGLYPH
*PHGLYPH
;
80 typedef LONG_PTR (APIENTRY
*PFN
)();
84 DECLARE_HANDLE(HSURF
);
85 DECLARE_HANDLE(DHSURF
);
86 DECLARE_HANDLE(DHPDEV
);
87 DECLARE_HANDLE(HDRVOBJ
);
90 typedef struct _ENG_EVENT
*PEVENT
;
93 #define OPENGL_CMD 4352
94 #define OPENGL_GETINFO 4353
95 #define WNDOBJ_SETUP 4354
97 #define FD_ERROR 0xFFFFFFFF
98 #define DDI_ERROR 0xFFFFFFFF
100 #define HFF_INVALID ((HFF) 0)
101 #define HFC_INVALID ((HFC) 0)
102 #define HGLYPH_INVALID ((HGLYPH) -1)
104 #define FP_ALTERNATEMODE 1
105 #define FP_WINDINGMODE 2
107 #define DN_ACCELERATION_LEVEL 1
108 #define DN_DEVICE_ORIGIN 2
109 #define DN_SLEEP_MODE 3
110 #define DN_DRAWING_BEGIN 4
114 #define DCR_HALFTONE 2
116 #define GX_IDENTITY 0
121 #define LTOFX(x) ((x) << 4)
122 #define FXTOL(x) ((x) >> 4)
123 #define FXTOLFLOOR(x) ((x) >> 4)
124 #define FXTOLCEILING(x) ((x + 0x0F) >> 4)
125 #define FXTOLROUND(x) ((((x) >> 3) + 1) >> 1)
127 typedef struct _POINTE
{
132 typedef union _FLOAT_LONG
{
135 } FLOAT_LONG
, *PFLOAT_LONG
;
137 typedef struct _POINTFIX
{
140 } POINTFIX
, *PPOINTFIX
;
142 typedef struct _RECTFX
{
149 typedef struct _POINTQF
{
152 } POINTQF
, *PPOINTQF
;
155 typedef struct _BLENDOBJ
{
156 BLENDFUNCTION BlendFunction
;
157 } BLENDOBJ
,*PBLENDOBJ
;
159 /* BRUSHOBJ.flColorType */
160 #define BR_DEVICE_ICM 0x01
161 #define BR_HOST_ICM 0x02
162 #define BR_CMYKCOLOR 0x04
163 #define BR_ORIGCOLOR 0x08
165 typedef struct _BRUSHOBJ
{
171 typedef struct _CIECHROMA
{
177 typedef struct _RUN
{
182 typedef struct _CLIPLINE
{
187 _Field_size_(c
) RUN arun
[1];
188 } CLIPLINE
, *PCLIPLINE
;
190 /* CLIPOBJ.iDComplexity constants */
195 /* CLIPOBJ.iFComplexity constants */
200 /* CLIPOBJ.iMode constants */
201 #define TC_RECTANGLES 0
204 /* CLIPOBJ.fjOptions constants */
205 #define OC_BANK_CLIP 1
207 typedef struct _CLIPOBJ
{
216 typedef struct _COLORINFO
{
223 CIECHROMA AlignmentWhite
;
227 LDECI4 MagentaInCyanDye
;
228 LDECI4 YellowInCyanDye
;
229 LDECI4 CyanInMagentaDye
;
230 LDECI4 YellowInMagentaDye
;
231 LDECI4 CyanInYellowDye
;
232 LDECI4 MagentaInYellowDye
;
233 } COLORINFO
, *PCOLORINFO
;
235 /* DEVHTADJDATA.DeviceFlags constants */
236 #define DEVHTADJF_COLOR_DEVICE 0x00000001
237 #define DEVHTADJF_ADDITIVE_DEVICE 0x00000002
239 typedef struct _DEVHTINFO
{
244 } DEVHTINFO
, *PDEVHTINFO
;
246 typedef struct _DEVHTADJDATA
{
250 PDEVHTINFO pDefHTInfo
;
251 PDEVHTINFO pAdjHTInfo
;
252 } DEVHTADJDATA
, *PDEVHTADJDATA
;
254 /* DEVINFO.flGraphicsCaps flags */
255 #define GCAPS_BEZIERS 0x00000001
256 #define GCAPS_GEOMETRICWIDE 0x00000002
257 #define GCAPS_ALTERNATEFILL 0x00000004
258 #define GCAPS_WINDINGFILL 0x00000008
259 #define GCAPS_HALFTONE 0x00000010
260 #define GCAPS_COLOR_DITHER 0x00000020
261 #define GCAPS_HORIZSTRIKE 0x00000040
262 #define GCAPS_VERTSTRIKE 0x00000080
263 #define GCAPS_OPAQUERECT 0x00000100
264 #define GCAPS_VECTORFONT 0x00000200
265 #define GCAPS_MONO_DITHER 0x00000400
266 #define GCAPS_ASYNCCHANGE 0x00000800
267 #define GCAPS_ASYNCMOVE 0x00001000
268 #define GCAPS_DONTJOURNAL 0x00002000
269 #define GCAPS_DIRECTDRAW 0x00004000
270 #define GCAPS_ARBRUSHOPAQUE 0x00008000
271 #define GCAPS_PANNING 0x00010000
272 #define GCAPS_HIGHRESTEXT 0x00040000
273 #define GCAPS_PALMANAGED 0x00080000
274 #define GCAPS_DITHERONREALIZE 0x00200000
275 #define GCAPS_NO64BITMEMACCESS 0x00400000
276 #define GCAPS_FORCEDITHER 0x00800000
277 #define GCAPS_GRAY16 0x01000000
278 #define GCAPS_ICM 0x02000000
279 #define GCAPS_CMYKCOLOR 0x04000000
280 #define GCAPS_LAYERED 0x08000000
281 #define GCAPS_ARBRUSHTEXT 0x10000000
282 #define GCAPS_SCREENPRECISION 0x20000000
283 #define GCAPS_FONT_RASTERIZER 0x40000000
284 #define GCAPS_NUP 0x80000000
286 /* DEVINFO.iDitherFormat constants */
298 /* DEVINFO.flGraphicsCaps2 flags */
299 #define GCAPS2_JPEGSRC 0x00000001
300 #define GCAPS2_xxxx 0x00000002
301 #define GCAPS2_PNGSRC 0x00000008
302 #define GCAPS2_CHANGEGAMMARAMP 0x00000010
303 #define GCAPS2_ALPHACURSOR 0x00000020
304 #define GCAPS2_SYNCFLUSH 0x00000040
305 #define GCAPS2_SYNCTIMER 0x00000080
306 #define GCAPS2_ICD_MULTIMON 0x00000100
307 #define GCAPS2_MOUSETRAILS 0x00000200
308 #define GCAPS2_RESERVED1 0x00000400
310 typedef struct _DEVINFO
{
311 FLONG flGraphicsCaps
;
312 LOGFONTW lfDefaultFont
;
313 LOGFONTW lfAnsiVarFont
;
314 LOGFONTW lfAnsiFixFont
;
319 HPALETTE hpalDefault
;
320 FLONG flGraphicsCaps2
;
321 } DEVINFO
, *PDEVINFO
;
326 (APIENTRY CALLBACK
*FREEOBJPROC
)(
327 _In_
struct _DRIVEROBJ
*pDriverObj
);
329 typedef struct _DRIVEROBJ
{
331 FREEOBJPROC pFreeProc
;
336 /* DRVFN.iFunc constants */
337 #define INDEX_DrvEnablePDEV 0L
338 #define INDEX_DrvCompletePDEV 1L
339 #define INDEX_DrvDisablePDEV 2L
340 #define INDEX_DrvEnableSurface 3L
341 #define INDEX_DrvDisableSurface 4L
342 #define INDEX_DrvAssertMode 5L
343 #define INDEX_DrvOffset 6L
344 #define INDEX_DrvResetPDEV 7L
345 #define INDEX_DrvDisableDriver 8L
346 #define INDEX_DrvUnknown1 9L
347 #define INDEX_DrvCreateDeviceBitmap 10L
348 #define INDEX_DrvDeleteDeviceBitmap 11L
349 #define INDEX_DrvRealizeBrush 12L
350 #define INDEX_DrvDitherColor 13L
351 #define INDEX_DrvStrokePath 14L
352 #define INDEX_DrvFillPath 15L
353 #define INDEX_DrvStrokeAndFillPath 16L
354 #define INDEX_DrvPaint 17L
355 #define INDEX_DrvBitBlt 18L
356 #define INDEX_DrvCopyBits 19L
357 #define INDEX_DrvStretchBlt 20L
358 #define INDEX_DrvUnknown2 21L
359 #define INDEX_DrvSetPalette 22L
360 #define INDEX_DrvTextOut 23L
361 #define INDEX_DrvEscape 24L
362 #define INDEX_DrvDrawEscape 25L
363 #define INDEX_DrvQueryFont 26L
364 #define INDEX_DrvQueryFontTree 27L
365 #define INDEX_DrvQueryFontData 28L
366 #define INDEX_DrvSetPointerShape 29L
367 #define INDEX_DrvMovePointer 30L
368 #define INDEX_DrvLineTo 31L
369 #define INDEX_DrvSendPage 32L
370 #define INDEX_DrvStartPage 33L
371 #define INDEX_DrvEndDoc 34L
372 #define INDEX_DrvStartDoc 35L
373 #define INDEX_DrvUnknown3 36L
374 #define INDEX_DrvGetGlyphMode 37L
375 #define INDEX_DrvSynchronize 38L
376 #define INDEX_DrvUnknown4 39L
377 #define INDEX_DrvSaveScreenBits 40L
378 #define INDEX_DrvGetModes 41L
379 #define INDEX_DrvFree 42L
380 #define INDEX_DrvDestroyFont 43L
381 #define INDEX_DrvQueryFontCaps 44L
382 #define INDEX_DrvLoadFontFile 45L
383 #define INDEX_DrvUnloadFontFile 46L
384 #define INDEX_DrvFontManagement 47L
385 #define INDEX_DrvQueryTrueTypeTable 48L
386 #define INDEX_DrvQueryTrueTypeOutline 49L
387 #define INDEX_DrvGetTrueTypeFile 50L
388 #define INDEX_DrvQueryFontFile 51L
389 #define INDEX_DrvMovePanning 52L
390 #define INDEX_DrvQueryAdvanceWidths 53L
391 #define INDEX_DrvSetPixelFormat 54L
392 #define INDEX_DrvDescribePixelFormat 55L
393 #define INDEX_DrvSwapBuffers 56L
394 #define INDEX_DrvStartBanding 57L
395 #define INDEX_DrvNextBand 58L
396 #define INDEX_DrvGetDirectDrawInfo 59L
397 #define INDEX_DrvEnableDirectDraw 60L
398 #define INDEX_DrvDisableDirectDraw 61L
399 #define INDEX_DrvQuerySpoolType 62L
400 #define INDEX_DrvUnknown5 63L
401 #define INDEX_DrvIcmCreateColorTransform 64L
402 #define INDEX_DrvIcmDeleteColorTransform 65L
403 #define INDEX_DrvIcmCheckBitmapBits 66L
404 #define INDEX_DrvIcmSetDeviceGammaRamp 67L
405 #define INDEX_DrvGradientFill 68L
406 #define INDEX_DrvStretchBltROP 69L
407 #define INDEX_DrvPlgBlt 70L
408 #define INDEX_DrvAlphaBlend 71L
409 #define INDEX_DrvSynthesizeFont 72L
410 #define INDEX_DrvGetSynthesizedFontFiles 73L
411 #define INDEX_DrvTransparentBlt 74L
412 #define INDEX_DrvQueryPerBandInfo 75L
413 #define INDEX_DrvQueryDeviceSupport 76L
414 #define INDEX_DrvReserved1 77L
415 #define INDEX_DrvReserved2 78L
416 #define INDEX_DrvReserved3 79L
417 #define INDEX_DrvReserved4 80L
418 #define INDEX_DrvReserved5 81L
419 #define INDEX_DrvReserved6 82L
420 #define INDEX_DrvReserved7 83L
421 #define INDEX_DrvReserved8 84L
422 #define INDEX_DrvDeriveSurface 85L
423 #define INDEX_DrvQueryGlyphAttrs 86L
424 #define INDEX_DrvNotify 87L
425 #define INDEX_DrvSynchronizeSurface 88L
426 #define INDEX_DrvResetDevice 89L
427 #define INDEX_DrvReserved9 90L
428 #define INDEX_DrvReserved10 91L
429 #define INDEX_DrvReserved11 92L
430 #if (NTDDI_VERSION >= NTDDI_VISTA)
431 #define INDEX_DrvRenderHint 93L
432 #if (NTDDI_VERSION >= NTDDI_WIN7)
433 #define INDEX_DrvCreateDeviceBitmapEx 94L
434 #define INDEX_DrvDeleteDeviceBitmapEx 95L
435 #define INDEX_DrvAssociateSharedSurface 96L
436 #define INDEX_DrvSynchronizeRedirectionBitmaps 97L
437 #define INDEX_DrvAccumulateD3DDirtyRect 98L
438 #define INDEX_DrvStartDxInterop 99L
439 #define INDEX_DrvEndDxInterop 100L
440 #define INDEX_DrvLockDisplayArea 101L
441 #define INDEX_DrvUnlockDisplayArea 102L
442 #define INDEX_LAST 103L
443 #else /* (NTDDI_VERSION >= NTDDI_WIN7) */
444 #define INDEX_LAST 94L
445 #endif /* (NTDDI_VERSION >= NTDDI_WIN7) */
446 #else /* (NTDDI_VERSION >= NTDDI_VISTA) */
447 #define INDEX_LAST 93L
448 #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
450 typedef struct _DRVFN
{
455 /* DRVENABLEDATA.iDriverVersion constants */
456 #define DDI_DRIVER_VERSION_NT4 0x00020000
457 #define DDI_DRIVER_VERSION_SP3 0x00020003
458 #define DDI_DRIVER_VERSION_NT5 0x00030000
459 #define DDI_DRIVER_VERSION_NT5_01 0x00030100
460 #define DDI_DRIVER_VERSION_NT5_01_SP1 0x00030101
462 typedef struct _DRVENABLEDATA
{
463 ULONG iDriverVersion
;
466 } DRVENABLEDATA
, *PDRVENABLEDATA
;
468 DECLARE_HANDLE(HSEMAPHORE
);
474 PBYTE pvCurrentRecord
;
475 } EMFINFO
, *PEMFINFO
;
477 typedef struct _ENGSAFESEMAPHORE
{
482 typedef struct _ENG_TIME_FIELDS
{
483 _Field_range_(1601,MAXUSHORT
) USHORT usYear
;
484 _Field_range_(1,12) USHORT usMonth
;
485 _Field_range_(1,31) USHORT usDay
;
486 _Field_range_(0,23) USHORT usHour
;
487 _Field_range_(0,59) USHORT usMinute
;
488 _Field_range_(0,59) USHORT usSecond
;
489 _Field_range_(0,999) USHORT usMilliseconds
;
490 _Field_range_(0,6) USHORT usWeekday
; // 0 == Sunday
491 } ENG_TIME_FIELDS
, *PENG_TIME_FIELDS
;
493 typedef struct _ENUMRECTS
{
498 typedef struct _FD_XFORM
{
503 } FD_XFORM
, *PFD_XFORM
;
505 /* FD_DEVICEMETRICS.flRealizedType constants */
506 #define FDM_TYPE_BM_SIDE_CONST 0x00000001
507 #define FDM_TYPE_MAXEXT_EQUAL_BM_SIDE 0x00000002
508 #define FDM_TYPE_CHAR_INC_EQUAL_BM_BASE 0x00000004
509 #define FDM_TYPE_ZERO_BEARINGS 0x00000008
510 #define FDM_TYPE_CONST_BEARINGS 0x00000010
512 typedef struct _FD_DEVICEMETRICS
{
513 FLONG flRealizedType
;
519 POINTL ptlUnderline1
;
521 POINTL ptlULThickness
;
522 POINTL ptlSOThickness
;
526 FD_XFORM fdxQuantized
;
527 LONG lNonLinearExtLeading
;
528 LONG lNonLinearIntLeading
;
529 LONG lNonLinearMaxCharWidth
;
530 LONG lNonLinearAvgCharWidth
;
535 } FD_DEVICEMETRICS
, *PFD_DEVICEMETRICS
;
537 /* FD_GLYPHATTR.iMode constants */
538 #define FO_ATTR_MODE_ROTATE 1
540 typedef struct _FD_GLYPHATTR
{
544 _Field_size_((cGlyphs
+7)/8) BYTE aGlyphAttr
[1];
545 } FD_GLYPHATTR
, *PFD_GLYPHATTR
;
547 /* FD_GLYPHSET.flAccel */
548 #define GS_UNICODE_HANDLES 0x00000001
549 #define GS_8BIT_HANDLES 0x00000002
550 #define GS_16BIT_HANDLES 0x00000004
552 typedef struct _WCRUN
{
558 typedef struct _FD_GLYPHSET
{
561 ULONG cGlyphsSupported
;
563 _Field_size_(cRuns
) WCRUN awcrun
[1];
564 } FD_GLYPHSET
, *PFD_GLYPHSET
;
566 typedef struct _FD_KERNINGPAIR
{
572 #if defined(_X86_) && !defined(USERMODE_DRIVER)
573 typedef struct _FLOATOBJ
577 } FLOATOBJ
, *PFLOATOBJ
;
579 typedef FLOAT FLOATOBJ
, *PFLOATOBJ
;
582 #ifndef USERMODE_DRIVER
583 typedef struct tagFLOATOBJ_XFORM
{
590 } FLOATOBJ_XFORM
, *PFLOATOBJ_XFORM
, FAR
*LPFLOATOBJ_XFORM
;
592 typedef XFORML FLOATOBJ_XFORM
, *PFLOATOBJ_XFORM
, FAR
*LPFLOATOBJ_XFORM
;
595 /* FONTDIFF.fsSelection */
596 #define FM_SEL_ITALIC 0x0001
597 #define FM_SEL_UNDERSCORE 0x0002
598 #define FM_SEL_NEGATIVE 0x0004
599 #define FM_SEL_OUTLINED 0x0008
600 #define FM_SEL_STRIKEOUT 0x0010
601 #define FM_SEL_BOLD 0x0020
602 #define FM_SEL_REGULAR 0x0040
604 typedef struct _FONTDIFF
{
611 FWORD fwdAveCharWidth
;
616 typedef struct _FONTSIM
{
619 PTRDIFF dpBoldItalic
;
622 /* FONTINFO.flCaps constants */
623 #define FO_DEVICE_FONT 1L
624 #define FO_OUTLINE_CAPABLE 2L
626 typedef struct _FONTINFO
{
629 ULONG cGlyphsSupported
;
634 } FONTINFO
, *PFONTINFO
;
636 /* FONTOBJ.flFontType constants */
637 #define FO_TYPE_RASTER RASTER_FONTTYPE
638 #define FO_TYPE_DEVICE DEVICE_FONTTYPE
639 #define FO_TYPE_TRUETYPE TRUETYPE_FONTTYPE
640 #define FO_TYPE_OPENTYPE OPENTYPE_FONTTYPE
642 #define FO_SIM_BOLD 0x00002000
643 #define FO_SIM_ITALIC 0x00004000
644 #define FO_EM_HEIGHT 0x00008000
645 #define FO_GRAY16 0x00010000
646 #define FO_NOGRAY16 0x00020000
647 #define FO_NOHINTS 0x00040000
648 #define FO_NO_CHOICE 0x00080000
649 #define FO_CFF 0x00100000
650 #define FO_POSTSCRIPT 0x00200000
651 #define FO_MULTIPLEMASTER 0x00400000
652 #define FO_VERT_FACE 0x00800000
653 #define FO_DBCS_FONT 0X01000000
654 #define FO_NOCLEARTYPE 0x02000000
655 #define FO_CLEARTYPE_X 0x10000000
656 #define FO_CLEARTYPE_Y 0x20000000
658 typedef struct _FONTOBJ
{
671 typedef struct _GAMMARAMP
{
675 } GAMMARAMP
, *PGAMMARAMP
;
677 /* GDIINFO.ulPrimaryOrder constants */
678 #define PRIMARY_ORDER_ABC 0
679 #define PRIMARY_ORDER_ACB 1
680 #define PRIMARY_ORDER_BAC 2
681 #define PRIMARY_ORDER_BCA 3
682 #define PRIMARY_ORDER_CBA 4
683 #define PRIMARY_ORDER_CAB 5
685 /* GDIINFO.ulHTPatternSize constants */
686 #define HT_PATSIZE_2x2 0
687 #define HT_PATSIZE_2x2_M 1
688 #define HT_PATSIZE_4x4 2
689 #define HT_PATSIZE_4x4_M 3
690 #define HT_PATSIZE_6x6 4
691 #define HT_PATSIZE_6x6_M 5
692 #define HT_PATSIZE_8x8 6
693 #define HT_PATSIZE_8x8_M 7
694 #define HT_PATSIZE_10x10 8
695 #define HT_PATSIZE_10x10_M 9
696 #define HT_PATSIZE_12x12 10
697 #define HT_PATSIZE_12x12_M 11
698 #define HT_PATSIZE_14x14 12
699 #define HT_PATSIZE_14x14_M 13
700 #define HT_PATSIZE_16x16 14
701 #define HT_PATSIZE_16x16_M 15
702 #define HT_PATSIZE_SUPERCELL 16
703 #define HT_PATSIZE_SUPERCELL_M 17
704 #define HT_PATSIZE_USER 18
705 #define HT_PATSIZE_MAX_INDEX HT_PATSIZE_USER
706 #define HT_PATSIZE_DEFAULT HT_PATSIZE_SUPERCELL_M
707 #define HT_USERPAT_CX_MIN 4
708 #define HT_USERPAT_CX_MAX 256
709 #define HT_USERPAT_CY_MIN 4
710 #define HT_USERPAT_CY_MAX 256
712 /* GDIINFO.ulHTOutputFormat constants */
713 #define HT_FORMAT_1BPP 0
714 #define HT_FORMAT_4BPP 2
715 #define HT_FORMAT_4BPP_IRGB 3
716 #define HT_FORMAT_8BPP 4
717 #define HT_FORMAT_16BPP 5
718 #define HT_FORMAT_24BPP 6
719 #define HT_FORMAT_32BPP 7
721 /* GDIINFO.flHTFlags */
722 #define HT_FLAG_SQUARE_DEVICE_PEL 0x00000001
723 #define HT_FLAG_HAS_BLACK_DYE 0x00000002
724 #define HT_FLAG_ADDITIVE_PRIMS 0x00000004
725 #define HT_FLAG_USE_8BPP_BITMASK 0x00000008
726 #define HT_FLAG_INK_HIGH_ABSORPTION 0x00000010
727 #define HT_FLAG_INK_ABSORPTION_INDICES 0x00000060
728 #define HT_FLAG_DO_DEVCLR_XFORM 0x00000080
729 #define HT_FLAG_OUTPUT_CMY 0x00000100
730 #define HT_FLAG_PRINT_DRAFT_MODE 0x00000200
731 #define HT_FLAG_INVERT_8BPP_BITMASK_IDX 0x00000400
732 #define HT_FLAG_8BPP_CMY332_MASK 0xFF000000
734 #define MAKE_CMYMASK_BYTE(c,m,y) ((BYTE)(((BYTE)(c) & 0x07) << 5) \
735 |(BYTE)(((BYTE)(m) & 0x07) << 2) \
736 |(BYTE)((BYTE)(y) & 0x03))
738 #define MAKE_CMY332_MASK(c,m,y) ((DWORD)(((DWORD)(c) & 0x07) << 29)\
739 |(DWORD)(((DWORD)(m) & 0x07) << 26)\
740 |(DWORD)(((DWORD)(y) & 0x03) << 24))
742 /* GDIINFO.flHTFlags constants */
743 #define HT_FLAG_INK_ABSORPTION_IDX0 0x00000000
744 #define HT_FLAG_INK_ABSORPTION_IDX1 0x00000020
745 #define HT_FLAG_INK_ABSORPTION_IDX2 0x00000040
746 #define HT_FLAG_INK_ABSORPTION_IDX3 0x00000060
748 #define HT_FLAG_HIGHEST_INK_ABSORPTION (HT_FLAG_INK_HIGH_ABSORPTION \
749 |HT_FLAG_INK_ABSORPTION_IDX3)
750 #define HT_FLAG_HIGHER_INK_ABSORPTION (HT_FLAG_INK_HIGH_ABSORPTION \
751 |HT_FLAG_INK_ABSORPTION_IDX2)
752 #define HT_FLAG_HIGH_INK_ABSORPTION (HT_FLAG_INK_HIGH_ABSORPTION \
753 |HT_FLAG_INK_ABSORPTION_IDX1)
754 #define HT_FLAG_NORMAL_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX0
755 #define HT_FLAG_LOW_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX1
756 #define HT_FLAG_LOWER_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX2
757 #define HT_FLAG_LOWEST_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX3
759 #define HT_BITMASKPALRGB (DWORD)'0BGR'
760 #define HT_SET_BITMASKPAL2RGB(pPal) (*((LPDWORD)(pPal)) = HT_BITMASKPALRGB)
761 #define HT_IS_BITMASKPALRGB(pPal) (*((LPDWORD)(pPal)) == (DWORD)0)
763 /* GDIINFO.ulPhysicalPixelCharacteristics constants */
764 #define PPC_DEFAULT 0x0
765 #define PPC_UNDEFINED 0x1
766 #define PPC_RGB_ORDER_VERTICAL_STRIPES 0x2
767 #define PPC_BGR_ORDER_VERTICAL_STRIPES 0x3
768 #define PPC_RGB_ORDER_HORIZONTAL_STRIPES 0x4
769 #define PPC_BGR_ORDER_HORIZONTAL_STRIPES 0x5
771 #define PPG_DEFAULT 0
774 typedef struct _GDIINFO
{
797 POINTL ptlPhysOffset
;
801 ULONG ulDevicePelsDPI
;
802 ULONG ulPrimaryOrder
;
803 ULONG ulHTPatternSize
;
804 ULONG ulHTOutputFormat
;
807 ULONG ulBltAlignment
;
808 ULONG ulPanningHorzRes
;
809 ULONG ulPanningVertRes
;
810 ULONG xPanningAlignment
;
811 ULONG yPanningAlignment
;
818 ULONG ulPhysicalPixelCharacteristics
;
819 ULONG ulPhysicalPixelGamma
;
820 } GDIINFO
, *PGDIINFO
;
822 /* PATHDATA.flags constants */
823 #define PD_BEGINSUBPATH 0x00000001
824 #define PD_ENDSUBPATH 0x00000002
825 #define PD_RESETSTYLE 0x00000004
826 #define PD_CLOSEFIGURE 0x00000008
827 #define PD_BEZIERS 0x00000010
828 #define PD_ALL (PD_BEGINSUBPATH \
834 typedef struct _PATHDATA
{
838 } PATHDATA
, *PPATHDATA
;
840 /* PATHOBJ.fl constants */
841 #define PO_BEZIERS 0x00000001
842 #define PO_ELLIPSE 0x00000002
843 #define PO_ALL_INTEGERS 0x00000004
844 #define PO_ENUM_AS_INTEGERS 0x00000008
846 typedef struct _PATHOBJ
{
851 typedef BYTE GAMMA_TABLES
[2][256];
853 typedef struct _GLYPHBITS
{
859 typedef union _GLYPHDEF
{
864 typedef struct _GLYPHPOS
{
868 } GLYPHPOS
, *PGLYPHPOS
;
870 typedef struct _GLYPHDATA
{
882 typedef struct _IFIEXTRA
{
886 PTRDIFF dpDesignVector
;
888 ULONG aulReserved
[1];
889 } IFIEXTRA
, *PIFIEXTRA
;
891 /* IFIMETRICS constants */
893 #define FM_VERSION_NUMBER 0x0
895 /* IFIMETRICS.fsType constants */
896 #define FM_TYPE_LICENSED 0x2
897 #define FM_READONLY_EMBED 0x4
898 #define FM_EDITABLE_EMBED 0x8
899 #define FM_NO_EMBEDDING FM_TYPE_LICENSED
901 /* IFIMETRICS.flInfo constants */
902 #define FM_INFO_TECH_TRUETYPE 0x00000001
903 #define FM_INFO_TECH_BITMAP 0x00000002
904 #define FM_INFO_TECH_STROKE 0x00000004
905 #define FM_INFO_TECH_OUTLINE_NOT_TRUETYPE 0x00000008
906 #define FM_INFO_ARB_XFORMS 0x00000010
907 #define FM_INFO_1BPP 0x00000020
908 #define FM_INFO_4BPP 0x00000040
909 #define FM_INFO_8BPP 0x00000080
910 #define FM_INFO_16BPP 0x00000100
911 #define FM_INFO_24BPP 0x00000200
912 #define FM_INFO_32BPP 0x00000400
913 #define FM_INFO_INTEGER_WIDTH 0x00000800
914 #define FM_INFO_CONSTANT_WIDTH 0x00001000
915 #define FM_INFO_NOT_CONTIGUOUS 0x00002000
916 #define FM_INFO_TECH_MM 0x00004000
917 #define FM_INFO_RETURNS_OUTLINES 0x00008000
918 #define FM_INFO_RETURNS_STROKES 0x00010000
919 #define FM_INFO_RETURNS_BITMAPS 0x00020000
920 #define FM_INFO_DSIG 0x00040000
921 #define FM_INFO_RIGHT_HANDED 0x00080000
922 #define FM_INFO_INTEGRAL_SCALING 0x00100000
923 #define FM_INFO_90DEGREE_ROTATIONS 0x00200000
924 #define FM_INFO_OPTICALLY_FIXED_PITCH 0x00400000
925 #define FM_INFO_DO_NOT_ENUMERATE 0x00800000
926 #define FM_INFO_ISOTROPIC_SCALING_ONLY 0x01000000
927 #define FM_INFO_ANISOTROPIC_SCALING_ONLY 0x02000000
928 #define FM_INFO_TECH_CFF 0x04000000
929 #define FM_INFO_FAMILY_EQUIV 0x08000000
930 #define FM_INFO_DBCS_FIXED_PITCH 0x10000000
931 #define FM_INFO_NONNEGATIVE_AC 0x20000000
932 #define FM_INFO_IGNORE_TC_RA_ABLE 0x40000000
933 #define FM_INFO_TECH_TYPE1 0x80000000
935 #define MAXCHARSETS 16
937 /* IFIMETRICS.ulPanoseCulture constants */
938 #define FM_PANOSE_CULTURE_LATIN 0x0
940 typedef struct _IFIMETRICS
{
943 PTRDIFF dpwszFamilyName
;
944 PTRDIFF dpwszStyleName
;
945 PTRDIFF dpwszFaceName
;
946 PTRDIFF dpwszUniqueName
;
953 BYTE jWinPitchAndFamily
;
960 FWORD fwdWinAscender
;
961 FWORD fwdWinDescender
;
962 FWORD fwdMacAscender
;
963 FWORD fwdMacDescender
;
965 FWORD fwdTypoAscender
;
966 FWORD fwdTypoDescender
;
967 FWORD fwdTypoLineGap
;
968 FWORD fwdAveCharWidth
;
972 FWORD fwdSubscriptXSize
;
973 FWORD fwdSubscriptYSize
;
974 FWORD fwdSubscriptXOffset
;
975 FWORD fwdSubscriptYOffset
;
976 FWORD fwdSuperscriptXSize
;
977 FWORD fwdSuperscriptYSize
;
978 FWORD fwdSuperscriptXOffset
;
979 FWORD fwdSuperscriptYOffset
;
980 FWORD fwdUnderscoreSize
;
981 FWORD fwdUnderscorePosition
;
982 FWORD fwdStrikeoutSize
;
983 FWORD fwdStrikeoutPosition
;
998 ULONG ulPanoseCulture
;
1003 } IFIMETRICS
, *PIFIMETRICS
;
1006 #define LA_GEOMETRIC 0x00000001
1007 #define LA_ALTERNATE 0x00000002
1008 #define LA_STARTGAP 0x00000004
1009 #define LA_STYLED 0x00000008
1011 /* LINEATTRS.iJoin */
1012 #define JOIN_ROUND 0L
1013 #define JOIN_BEVEL 1L
1014 #define JOIN_MITER 2L
1016 /* LINEATTRS.iEndCap */
1017 #define ENDCAP_ROUND 0L
1018 #define ENDCAP_SQUARE 1L
1019 #define ENDCAP_BUTT 2L
1021 typedef struct _LINEATTRS
{
1029 FLOAT_LONG elStyleState
;
1030 } LINEATTRS
, *PLINEATTRS
;
1032 typedef struct _PALOBJ
{
1036 typedef struct _PERBANDINFO
{
1037 BOOL bRepeatThisBand
;
1041 } PERBANDINFO
, *PPERBANDINFO
;
1043 /* STROBJ.flAccel constants */
1044 #define SO_FLAG_DEFAULT_PLACEMENT 0x00000001
1045 #define SO_HORIZONTAL 0x00000002
1046 #define SO_VERTICAL 0x00000004
1047 #define SO_REVERSED 0x00000008
1048 #define SO_ZERO_BEARINGS 0x00000010
1049 #define SO_CHAR_INC_EQUAL_BM_BASE 0x00000020
1050 #define SO_MAXEXT_EQUAL_BM_SIDE 0x00000040
1051 #define SO_DO_NOT_SUBSTITUTE_DEVICE_FONT 0x00000080
1052 #define SO_GLYPHINDEX_TEXTOUT 0x00000100
1053 #define SO_ESC_NOT_ORIENT 0x00000200
1054 #define SO_DXDY 0x00000400
1055 #define SO_CHARACTER_EXTRA 0x00000800
1056 #define SO_BREAK_EXTRA 0x00001000
1058 typedef struct _STROBJ
{
1068 /* SURFOBJ.iType constants */
1069 #define STYPE_BITMAP 0L
1070 #define STYPE_DEVICE 1L
1071 #define STYPE_DEVBITMAP 3L
1073 /* SURFOBJ.fjBitmap constants */
1074 #define BMF_TOPDOWN 0x0001
1075 #define BMF_NOZEROINIT 0x0002
1076 #define BMF_DONTCACHE 0x0004
1077 #define BMF_USERMEM 0x0008
1078 #define BMF_KMSECTION 0x0010
1079 #define BMF_NOTSYSMEM 0x0020
1080 #define BMF_WINDOW_BLT 0x0040
1081 #define BMF_UMPDMEM 0x0080
1082 #define BMF_RESERVED 0xFF00
1084 typedef struct _SURFOBJ
{
1095 ULONG iBitmapFormat
;
1100 typedef struct _TYPE1_FONT
{
1106 typedef struct _WNDOBJ
{
1113 typedef struct _XFORML
{
1122 typedef struct _XFORMOBJ
{
1126 /* XLATEOBJ.flXlate constants */
1127 #define XO_TRIVIAL 0x00000001
1128 #define XO_TABLE 0x00000002
1129 #define XO_TO_MONO 0x00000004
1130 #define XO_FROM_CMYK 0x00000008
1131 #define XO_DEVICE_ICM 0x00000010
1132 #define XO_HOST_ICM 0x00000020
1134 typedef struct _XLATEOBJ
{
1143 /* WNDOBJCHANGEPROC.fl constants */
1144 #define WOC_RGN_CLIENT_DELTA 0x00000001
1145 #define WOC_RGN_CLIENT 0x00000002
1146 #define WOC_RGN_SURFACE_DELTA 0x00000004
1147 #define WOC_RGN_SURFACE 0x00000008
1148 #define WOC_CHANGED 0x00000010
1149 #define WOC_DELETE 0x00000020
1150 #define WOC_DRAWN 0x00000040
1151 #define WOC_SPRITE_OVERLAP 0x00000080
1152 #define WOC_SPRITE_NO_OVERLAP 0x00000100
1153 #if (NTDDI_VERSION >= NTDDI_VISTA)
1154 #define WOC_RGN_SPRITE 0x00000200
1155 #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
1157 typedef VOID (APIENTRY CALLBACK
*WNDOBJCHANGEPROC
)(
1165 BRUSHOBJ_hGetColorTransform(
1166 _In_ BRUSHOBJ
*pbo
);
1168 _Ret_opt_bytecount_(cj
)
1172 BRUSHOBJ_pvAllocRbrush(
1179 BRUSHOBJ_pvGetRbrush(
1180 _In_ BRUSHOBJ
*pbo
);
1185 BRUSHOBJ_ulGetBrushColor(
1186 _In_ BRUSHOBJ
*pbo
);
1194 _Out_bytecap_(cj
) ULONG
*pul
);
1196 /* CLIPOBJ_cEnumStart.iType constants */
1197 #define CT_RECTANGLES 0L
1199 /* CLIPOBJ_cEnumStart.iDirection constants */
1200 #define CD_RIGHTDOWN 0x00000000
1201 #define CD_LEFTDOWN 0x00000001
1202 #define CD_LEFTWARDS 0x00000001
1203 #define CD_RIGHTUP 0x00000002
1204 #define CD_UPWARDS 0x00000002
1205 #define CD_LEFTUP 0x00000003
1206 #define CD_ANY 0x00000004
1212 _Inout_ CLIPOBJ
*pco
,
1215 _In_ ULONG iDirection
,
1224 #if (NTDDI_VERSION >= NTDDI_VISTA)
1235 EngAcquireSemaphore(
1236 _Inout_ HSEMAPHORE hsem
);
1238 #define FL_ZERO_MEMORY 0x00000001
1239 #define FL_NONPAGED_MEMORY 0x00000002
1241 #ifdef USERMODE_DRIVER
1243 #define EngAllocMem(fl, cj, tag) ((PVOID)GlobalAlloc(((fl) & FL_ZERO_MEMORY) ? GPTR : GMEM_FIXED, cj))
1244 #define EngAllocPrivateUserMem(psl, cj, tag) ((PVOID)GlobalAlloc(GMEM_FIXED, cj))
1245 #define EngAllocUserMem(cj, tag) ((PVOID)GlobalAlloc(GMEM_FIXED, cj))
1249 _Must_inspect_result_
1250 _When_(fl
& FL_ZERO_MEMORY
, _Ret_opt_bytecount_(cjMemSize
))
1251 _When_(!(fl
& FL_ZERO_MEMORY
), _Ret_opt_bytecap_(cjMemSize
))
1257 _In_ ULONG cjMemSize
,
1260 _Must_inspect_result_
1261 _Ret_opt_bytecount_(cjMemSize
)
1265 EngAllocPrivateUserMem(
1266 _In_ PDD_SURFACE_LOCAL psl
,
1267 _In_ SIZE_T cjMemSize
,
1270 _Must_inspect_result_
1271 _Ret_opt_bytecount_(cjMemSize
)
1276 _In_ SIZE_T cjMemSize
,
1279 #endif /* USERMODE_DRIVER */
1285 _Inout_ SURFOBJ
*psoDest
,
1286 _In_ SURFOBJ
*psoSrc
,
1287 _In_opt_ CLIPOBJ
*pco
,
1288 _In_opt_ XLATEOBJ
*pxlo
,
1289 _In_ RECTL
*prclDest
,
1290 _In_ RECTL
*prclSrc
,
1291 _In_ BLENDOBJ
*pBlendObj
);
1293 /* EngAssociateSurface.flHooks constants */
1294 #define HOOK_BITBLT 0x00000001
1295 #define HOOK_STRETCHBLT 0x00000002
1296 #define HOOK_PLGBLT 0x00000004
1297 #define HOOK_TEXTOUT 0x00000008
1298 #define HOOK_PAINT 0x00000010
1299 #define HOOK_STROKEPATH 0x00000020
1300 #define HOOK_FILLPATH 0x00000040
1301 #define HOOK_STROKEANDFILLPATH 0x00000080
1302 #define HOOK_LINETO 0x00000100
1303 #define HOOK_COPYBITS 0x00000400
1304 #define HOOK_MOVEPANNING 0x00000800
1305 #define HOOK_SYNCHRONIZE 0x00001000
1306 #define HOOK_STRETCHBLTROP 0x00002000
1307 #define HOOK_SYNCHRONIZEACCESS 0x00004000
1308 #define HOOK_TRANSPARENTBLT 0x00008000
1309 #define HOOK_ALPHABLEND 0x00010000
1310 #define HOOK_GRADIENTFILL 0x00020000
1311 #if (NTDDI_VERSION >= NTDDI_VISTA)
1312 #define HOOK_FLAGS 0x0003b5ef
1314 #define HOOK_FLAGS 0x0003b5ff
1320 EngAssociateSurface(
1323 _In_ FLONG flHooks
);
1329 _Inout_ SURFOBJ
*psoTrg
,
1330 _In_opt_ SURFOBJ
*psoSrc
,
1331 _In_opt_ SURFOBJ
*psoMask
,
1332 _In_opt_ CLIPOBJ
*pco
,
1333 _In_opt_ XLATEOBJ
*pxlo
,
1334 _In_ RECTL
*prclTrg
,
1335 _In_opt_ POINTL
*pptlSrc
,
1336 _In_opt_ POINTL
*pptlMask
,
1337 _In_opt_ BRUSHOBJ
*pbo
,
1338 _In_opt_ POINTL
*pptlBrush
,
1351 _In_ PEVENT pEvent
);
1358 _In_ INT nFirstChar
,
1361 /* EngControlSprites.fl constants */
1362 #define ECS_TEARDOWN 0x00000001
1363 #define ECS_REDRAW 0x00000002
1369 _Inout_ WNDOBJ
*pwo
,
1376 _In_ SURFOBJ
*psoDest
,
1377 _In_ SURFOBJ
*psoSrc
,
1378 _In_opt_ CLIPOBJ
*pco
,
1379 _In_opt_ XLATEOBJ
*pxlo
,
1380 _In_ RECTL
*prclDest
,
1381 _In_ POINTL
*pptlSrc
);
1391 _In_opt_ PVOID pvBits
);
1396 EngCreateClip(VOID
);
1398 _Must_inspect_result_
1402 EngCreateDeviceBitmap(
1405 _In_ ULONG iFormatCompat
);
1407 _Must_inspect_result_
1411 EngCreateDeviceSurface(
1414 _In_ ULONG iFormatCompat
);
1416 _Must_inspect_result_
1422 _In_opt_ FREEOBJPROC pFreeObjProc
,
1425 _Must_inspect_result_
1426 _Success_(return != FALSE
)
1431 _Outptr_ PEVENT
*ppEvent
);
1433 /* EngCreatePalette.iMode constants */
1434 #define PAL_INDEXED 0x00000001
1435 #define PAL_BITFIELDS 0x00000002
1436 #define PAL_RGB 0x00000004
1437 #define PAL_BGR 0x00000008
1438 #define PAL_CMYK 0x00000010
1440 _Must_inspect_result_
1447 _In_ ULONG
*pulColors
,
1455 EngCreatePath(VOID
);
1460 EngCreateSemaphore(VOID
);
1462 /* EngCreateWnd.fl constants */
1463 #define WO_RGN_CLIENT_DELTA 0x00000001
1464 #define WO_RGN_CLIENT 0x00000002
1465 #define WO_RGN_SURFACE_DELTA 0x00000004
1466 #define WO_RGN_SURFACE 0x00000008
1467 #define WO_RGN_UPDATE_ALL 0x00000010
1468 #define WO_RGN_WINDOW 0x00000020
1469 #define WO_DRAW_NOTIFY 0x00000040
1470 #define WO_SPRITE_NOTIFY 0x00000080
1471 #define WO_RGN_DESKTOP_COORD 0x00000100
1472 #if (NTDDI_VERSION >= NTDDI_VISTA)
1473 #define WO_RGN_SPRITE 0x00000200
1474 #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
1476 _Must_inspect_result_
1483 _In_ WNDOBJCHANGEPROC pfn
,
1485 _In_ INT iPixelFormat
);
1491 EngDebugBreak(VOID
);
1497 _In_z_ PCHAR StandardPrefix
,
1498 _In_z_ PCHAR DebugMessage
,
1505 _In_ _Post_ptr_invalid_ CLIPOBJ
*pco
);
1511 _In_ _Post_ptr_invalid_ HDRVOBJ hdo
,
1512 _In_ BOOL bCallBack
,
1519 _In_ _Post_ptr_invalid_ PEVENT pEvent
);
1525 _In_ LPWSTR pwszFileName
);
1531 _In_ _Post_ptr_invalid_ HPALETTE hpal
);
1537 _In_ _Post_ptr_invalid_ PATHOBJ
*ppo
);
1542 EngDeleteSafeSemaphore(
1543 _Inout_ ENGSAFESEMAPHORE
*pssem
);
1549 _In_ _Post_ptr_invalid_ HSEMAPHORE hsem
);
1555 _In_ _Post_ptr_invalid_ HSURF hsurf
);
1561 _In_ _Post_ptr_invalid_ WNDOBJ
*pwo
);
1563 _Success_(return==0)
1568 _In_ HANDLE hDevice
,
1569 _In_ DWORD dwIoControlCode
,
1570 _In_opt_bytecount_(cjInBufferSize
) LPVOID lpInBuffer
,
1571 _In_ DWORD cjInBufferSize
,
1572 _Out_opt_bytecap_(cjOutBufferSize
) LPVOID lpOutBuffer
,
1573 _In_ DWORD cjOutBufferSize
,
1574 _Out_ LPDWORD lpBytesReturned
);
1576 #define DM_DEFAULT 0x00000001
1577 #define DM_MONOCHROME 0x00000002
1586 _When_(iMode
== DM_DEFAULT
, _Out_writes_bytes_(16*8))
1587 _When_(iMode
== DM_MONOCHROME
, _Out_writes_bytes_(8))
1594 _In_ HANDLE hPrinter
,
1596 _Out_writes_bytes_opt_(cbBuf
) LPBYTE pForm
,
1598 _Out_ LPDWORD pcbNeeded
,
1599 _Out_ LPDWORD pcReturned
);
1613 _Inout_ SURFOBJ
*pso
,
1617 _In_ POINTL
*pptlBrushOrg
,
1619 _In_ FLONG flOptions
);
1624 EngFindImageProcAddress(
1625 _In_ HANDLE hModule
,
1626 _In_ LPSTR lpProcName
);
1635 _Out_ PULONG pulSize
);
1637 _Must_inspect_result_
1638 _Ret_opt_bytecap_(cjSize
)
1643 _In_ ULONG ulFastCheckSum
,
1646 /* EngFntCacheFault.iFaultMode constants */
1647 #define ENG_FNT_CACHE_READ_FAULT 0x00000001
1648 #define ENG_FNT_CACHE_WRITE_FAULT 0x00000002
1654 _In_ ULONG ulFastCheckSum
,
1655 _In_ ULONG iFaultMode
);
1661 _In_ ULONG FastCheckSum
,
1662 _Out_ ULONG
*pulSize
);
1664 #ifdef USERMODE_DRIVER
1666 #define EngFreeMem(p) GlobalFree((HGLOBAL) (p))
1667 #define EngFreePrivateUserMem( psl, p) GlobalFree((HGLOBAL) (p))
1668 #define EngFreeUserMem(p) GlobalFree((HGLOBAL) (p))
1670 #else /* !USERMODE_DRIVER */
1676 _In_ _Post_ptr_invalid_ PVOID pv
);
1681 EngFreePrivateUserMem(
1682 _In_ PDD_SURFACE_LOCAL psl
,
1683 _In_ _Post_ptr_invalid_ PVOID pv
);
1689 _In_ _Post_ptr_invalid_ PVOID pv
);
1691 #endif /* !USERMODE_DRIVER */
1703 EngGetCurrentCodePage(
1704 _Out_ PUSHORT OemCodePage
,
1705 _Out_ PUSHORT AnsiCodePage
);
1710 EngGetCurrentProcessId(VOID
);
1715 EngGetCurrentThreadId(VOID
);
1717 _Must_inspect_result_ _Ret_z_
1727 EngGetFileChangeTime(
1729 _Out_ LARGE_INTEGER
*pChangeTime
);
1736 _Out_
WCHAR (*pDest
)[MAX_PATH
+1]);
1742 _In_ HANDLE hPrinter
,
1743 _In_ LPWSTR pFormName
,
1745 _In_reads_bytes_opt_(cbBuf
) LPBYTE pForm
,
1747 _Out_ LPDWORD pcbNeeded
);
1749 #ifdef USERMODE_DRIVER
1750 #define EngGetLastError GetLastError
1755 EngGetLastError(VOID
);
1762 _In_ HANDLE hPrinter
,
1764 _Out_writes_bytes_opt_(cbBuf
) LPBYTE pPrinter
,
1766 _Out_ LPDWORD pcbNeeded
);
1772 _In_ HANDLE hPrinter
,
1773 _In_ LPWSTR pValueName
,
1774 _Out_opt_ LPDWORD pType
,
1775 _Out_writes_bytes_opt_(cjSize
) LPBYTE pData
,
1777 _Out_ LPDWORD pcjNeeded
);
1782 EngGetPrinterDataFileName(
1788 EngGetPrinterDriver(
1789 _In_ HANDLE hPrinter
,
1790 _In_opt_ LPWSTR pEnvironment
,
1792 _Out_writes_bytes_opt_(cjBufSize
) BYTE
*lpbDrvInfo
,
1793 _In_ DWORD cjBufSize
,
1794 _Out_ DWORD
*pcjNeeded
);
1799 EngGetProcessHandle(VOID
);
1804 EngGetType1FontList(
1806 _Out_writes_bytes_opt_(cjType1Buffer
) TYPE1_FONT
*pType1Buffer
,
1807 _In_ ULONG cjType1Buffer
,
1808 _Out_ PULONG pulLocalFonts
,
1809 _Out_ PULONG pulRemoteFonts
,
1810 _Out_ LARGE_INTEGER
*pLastModified
);
1816 _Inout_ SURFOBJ
*psoDest
,
1818 _In_opt_ XLATEOBJ
*pxlo
,
1819 _In_ TRIVERTEX
*pVertex
,
1823 _In_ RECTL
*prclExtents
,
1824 _In_ POINTL
*pptlDitherOrg
,
1827 /* EngHangNotification return values */
1828 #define EHN_RESTORED 0x00000000
1829 #define EHN_ERROR 0x00000001
1834 EngHangNotification(
1836 _Reserved_ PVOID Reserved
);
1841 EngInitializeSafeSemaphore(
1842 _Out_ ENGSAFESEMAPHORE
*pssem
);
1847 EngIsSemaphoreOwned(
1848 _In_ HSEMAPHORE hsem
);
1853 EngIsSemaphoreOwnedByCurrentThread(
1854 _In_ HSEMAPHORE hsem
);
1860 _Inout_ SURFOBJ
*pso
,
1867 _In_opt_ RECTL
*prclBounds
,
1874 _In_ LPWSTR pwszDriver
);
1885 EngLoadModuleForWrite(
1887 _In_ ULONG cjSizeOfModule
);
1892 EngLockDirectDrawSurface(
1893 _In_ HANDLE hSurface
);
1910 EngLpkInstalled(VOID
);
1917 _In_ HANDLE hUserObject
,
1918 _Reserved_ PVOID Reserved1
,
1919 _Reserved_ PVOID Reserved2
,
1920 _Reserved_ PVOID Reserved3
);
1922 _Success_(return != 0)
1923 _When_(cjSize
!= 0, _At_(return, _Out_writes_bytes_(cjSize
)))
1930 _Out_ ULONG_PTR
*piFile
);
1936 _In_ ULONG_PTR iFile
,
1937 _Outptr_result_bytebuffer_(*pcjBuf
) PULONG
*ppjBuf
,
1938 _Out_ ULONG
*pcjBuf
);
1944 _In_ ULONG_PTR iFile
,
1945 _Outptr_result_bytebuffer_(*pcjBuf
) PULONG
*ppjBuf
,
1946 _Out_ ULONG
*pcjBuf
);
1953 _Out_ PULONG pSize
);
1958 EngMarkBandingSurface(
1961 /* EngModifySurface.flSurface constants */
1962 #define MS_NOTSYSTEMMEMORY 0x00000001
1963 #define MS_SHAREDACCESS 0x00000002
1972 _In_ FLONG flSurface
,
1976 _Reserved_ PVOID pvReserved
);
1987 #ifdef USERMODE_DRIVER
1988 #define EngMulDiv MulDiv
1989 #else /* !USERMODE_DRIVER */
1997 #endif /* !USERMODE_DRIVER */
2002 EngMultiByteToUnicodeN(
2003 _Out_writes_bytes_to_(MaxBytesInUnicodeString
, *BytesInUnicodeString
) LPWSTR UnicodeString
,
2004 _In_ ULONG MaxBytesInUnicodeString
,
2005 _Out_opt_ PULONG BytesInUnicodeString
,
2006 _In_reads_bytes_(BytesInMultiByteString
) PCHAR MultiByteString
,
2007 _In_ ULONG BytesInMultiByteString
);
2012 EngMultiByteToWideChar(
2014 _Out_writes_bytes_opt_(cjWideCharString
) LPWSTR WideCharString
,
2015 _In_ INT cjWideCharString
,
2016 _In_reads_bytes_opt_(cjMultiByteString
) LPSTR MultiByteString
,
2017 _In_ INT cjMultiByteString
);
2026 _In_ POINTL
*pptlBrushOrg
,
2033 _In_ SURFOBJ
*psoTrg
,
2034 _In_ SURFOBJ
*psoSrc
,
2035 _In_opt_ SURFOBJ
*psoMsk
,
2037 _In_opt_ XLATEOBJ
*pxlo
,
2038 _In_ COLORADJUSTMENT
*pca
,
2039 _In_ POINTL
*pptlBrushOrg
,
2040 _In_ POINTFIX
*pptfx
,
2042 _When_(psoMsk
, _In_
) POINTL
*pptl
,
2049 _In_reads_bytes_(Length
) PVOID Address
,
2050 #if (NTDDI_VERSION <= NTDDI_WINXP)
2055 _In_ ULONG Alignment
);
2060 EngProbeForReadAndWrite(
2061 _Inout_updates_bytes_(Length
) PVOID Address
,
2062 #if (NTDDI_VERSION <= NTDDI_WINXP)
2067 _In_ ULONG Alignment
);
2069 typedef enum _ENG_DEVICE_ATTRIBUTE
{
2071 QDA_ACCELERATION_LEVEL
2072 } ENG_DEVICE_ATTRIBUTE
;
2077 EngQueryDeviceAttribute(
2079 _In_ ENG_DEVICE_ATTRIBUTE devAttr
,
2080 _In_reads_bytes_(cjInSize
) PVOID pvIn
,
2081 _In_ ULONG cjInSize
,
2082 _Out_writes_bytes_(cjOutSize
) PVOID pvOut
,
2083 _In_ ULONG cjOutSize
);
2088 EngQueryFileTimeStamp(
2095 _Out_ PENG_TIME_FIELDS ptf
);
2102 _Out_ ULONG
*piMode
,
2104 _Out_writes_opt_(cColors
) ULONG
*pulColors
);
2109 EngQueryPerformanceCounter(
2110 _Out_ LONGLONG
*pPerformanceCount
);
2115 EngQueryPerformanceFrequency(
2116 _Out_ LONGLONG
*pFrequency
);
2118 typedef enum _ENG_SYSTEM_ATTRIBUTE
{
2119 EngProcessorFeature
= 1,
2120 EngNumberOfProcessors
,
2121 EngOptimumAvailableUserMemory
,
2122 EngOptimumAvailableSystemMemory
,
2123 } ENG_SYSTEM_ATTRIBUTE
;
2125 #define QSA_MMX 0x00000100
2126 #define QSA_SSE 0x00002000
2127 #define QSA_3DNOW 0x00004000
2134 EngQuerySystemAttribute(
2135 _In_ ENG_SYSTEM_ATTRIBUTE CapNum
,
2136 _Out_ PDWORD pCapability
);
2142 _In_ PEVENT pEvent
);
2147 EngReleaseSemaphore(
2148 _In_ HSEMAPHORE hsem
);
2152 _Kernel_float_restored_
2153 _At_(*pBuffer
, _Kernel_requires_resource_held_(EngFloatState
)
2154 _Kernel_releases_resource_(EngFloatState
))
2158 EngRestoreFloatingPointState(
2159 _In_reads_(_Inexpressible_(statesize
))
2163 _Success_(((pBuffer
!= NULL
&& cjBufferSize
!= 0) && return == 1) ||
2164 ((pBuffer
== NULL
|| cjBufferSize
== 0) && return > 0))
2165 _When_(pBuffer
!= NULL
&& cjBufferSize
!= 0 && return == 1, _Kernel_float_saved_
2166 _At_(*pBuffer
, _Post_valid_
_Kernel_acquires_resource_(EngFloatState
)))
2167 _On_failure_(_Post_satisfies_(return == 0))
2171 EngSaveFloatingPointState(
2172 _At_(*pBuffer
, _Kernel_requires_resource_not_held_(EngFloatState
))
2173 _Out_writes_bytes_opt_(cjBufferSize
) PVOID pBuffer
,
2174 _Inout_ ULONG cjBufferSize
);
2180 _In_reads_bytes_(cjLength
) PVOID Address
,
2181 _In_ ULONG cjLength
);
2187 _In_ PEVENT pEvent
);
2189 #ifdef USERMODE_DRIVER
2190 #define EngSetLastError SetLastError
2204 _In_opt_ SURFOBJ
*psoMask
,
2205 _In_opt_ SURFOBJ
*psoColor
,
2206 _In_opt_ XLATEOBJ
*pxlo
,
2219 _In_opt_ SURFOBJ
*psoMask
,
2220 _In_opt_ SURFOBJ
*psoColor
,
2221 _Reserved_ XLATEOBJ
*pxlo
,
2228 _In_ HANDLE hPrinter
,
2231 _In_reads_bytes_(cjPrinterData
) LPBYTE lpbPrinterData
,
2232 _In_ DWORD cjPrinterData
);
2234 typedef int (CDECL
*SORTCOMP
)(const void *pv1
, const void *pv2
);
2240 _Inout_updates_bytes_(c
* cjElem
) PBYTE pjBuf
,
2243 _In_ SORTCOMP pfnComp
);
2249 _In_ SURFOBJ
*psoDest
,
2250 _In_ SURFOBJ
*psoSrc
,
2251 _In_opt_ SURFOBJ
*psoMask
,
2252 _In_opt_ CLIPOBJ
*pco
,
2253 _In_opt_ XLATEOBJ
*pxlo
,
2254 _In_opt_ COLORADJUSTMENT
*pca
,
2255 _In_ POINTL
*pptlHTOrg
,
2256 _In_ RECTL
*prclDest
,
2257 _In_ RECTL
*prclSrc
,
2258 _When_(psoMask
, _In_
) POINTL
*pptlMask
,
2265 _In_ SURFOBJ
*psoDest
,
2266 _In_ SURFOBJ
*psoSrc
,
2267 _In_opt_ SURFOBJ
*psoMask
,
2268 _In_opt_ CLIPOBJ
*pco
,
2269 _In_opt_ XLATEOBJ
*pxlo
,
2270 _In_opt_ COLORADJUSTMENT
*pca
,
2271 _In_ POINTL
*pptlHTOrg
,
2272 _In_ RECTL
*prclDest
,
2273 _In_ RECTL
*prclSrc
,
2274 _When_(psoMask
, _In_
) POINTL
*pptlMask
,
2276 _In_opt_ BRUSHOBJ
*pbo
,
2282 EngStrokeAndFillPath(
2283 _Inout_ SURFOBJ
*pso
,
2287 _In_ BRUSHOBJ
*pboStroke
,
2288 _In_ LINEATTRS
*plineattrs
,
2289 _In_ BRUSHOBJ
*pboFill
,
2290 _In_ POINTL
*pptlBrushOrg
,
2292 _In_ FLONG flOptions
);
2303 _In_ POINTL
*pptlBrushOrg
,
2304 _In_ LINEATTRS
*plineattrs
,
2315 _Null_ RECTL
*prclExtra
,
2316 _In_opt_ RECTL
*prclOpaque
,
2317 _In_ BRUSHOBJ
*pboFore
,
2318 _In_ BRUSHOBJ
*pboOpaque
,
2319 _In_ POINTL
*pptlOrg
,
2326 _In_ SURFOBJ
*psoDst
,
2327 _In_ SURFOBJ
*psoSrc
,
2328 _In_opt_ CLIPOBJ
*pco
,
2329 _In_opt_ XLATEOBJ
*pxlo
,
2330 _In_ RECTL
*prclDst
,
2331 _In_ RECTL
*prclSrc
,
2332 _In_ ULONG iTransColor
,
2333 _In_ ULONG ulReserved
);
2338 EngUnicodeToMultiByteN(
2339 _Out_writes_bytes_to_(cjMultiByteBuf
, *pcjMultiByteString
) PCHAR pchMultiByteString
,
2340 _In_ ULONG cjMultiByteBuf
,
2341 _Out_opt_ PULONG pcjMultiByteString
,
2342 _In_reads_bytes_(cjUnicodeString
) PWSTR pwszUnicodeString
,
2343 _In_ ULONG cjUnicodeString
);
2349 _In_ HANDLE hModule
);
2354 EngUnlockDirectDrawSurface(
2355 _In_ PDD_SURFACE_LOCAL pSurface
);
2361 _In_ _Post_ptr_invalid_ HDRVOBJ hdo
);
2367 _In_ _Post_ptr_invalid_ SURFOBJ
*pso
);
2373 _In_ PEVENT pEvent
);
2379 _In_ ULONG_PTR iFile
);
2385 _In_ ULONG_PTR iFile
);
2391 _In_ ULONG_PTR iFile
);
2397 _In_ HANDLE hSecure
);
2402 EngWaitForSingleObject(
2404 _In_opt_ PLARGE_INTEGER pTimeOut
);
2409 EngWideCharToMultiByte(
2411 _In_reads_bytes_opt_(cjWideCharString
) LPWSTR pwszWideCharString
,
2412 _In_ INT cjWideCharString
,
2413 _Out_z_bytecap_(cjMultiByteString
) LPSTR pszMultiByteString
,
2414 _In_ INT cjMultiByteString
);
2420 _In_ HANDLE hPrinter
,
2421 _In_reads_bytes_(cjBuf
) LPVOID pvBuf
,
2423 _Out_ LPDWORD pcWritten
);
2425 #if defined(_X86_) && !defined(USERMODE_DRIVER)
2430 _Inout_ PFLOATOBJ pf
,
2431 _In_ PFLOATOBJ pf1
);
2437 _Inout_ PFLOATOBJ pf
,
2444 _Inout_ PFLOATOBJ pf
,
2451 _Inout_ PFLOATOBJ pf
,
2452 _In_ PFLOATOBJ pf1
);
2458 _Inout_ PFLOATOBJ pf
,
2465 _Inout_ PFLOATOBJ pf
,
2473 _In_ PFLOATOBJ pf1
);
2497 FLOATOBJ_GreaterThan(
2499 _In_ PFLOATOBJ pf1
);
2504 FLOATOBJ_GreaterThanLong(
2513 _In_ PFLOATOBJ pf1
);
2518 FLOATOBJ_LessThanLong(
2526 _Inout_ PFLOATOBJ pf
,
2527 _In_ PFLOATOBJ pf1
);
2533 _Inout_ PFLOATOBJ pf
,
2540 _Inout_ PFLOATOBJ pf
,
2547 _Inout_ PFLOATOBJ pf
);
2567 _Inout_ PFLOATOBJ pf
,
2568 _In_ PFLOATOBJ pf1
);
2574 _Inout_ PFLOATOBJ pf
,
2581 _Inout_ PFLOATOBJ pf
,
2586 #define FLOATOBJ_SetFloat(pf, f) {*(pf) = (f);}
2587 #define FLOATOBJ_SetLong(pf, l) {*(pf) = (FLOAT)(l);}
2588 #define FLOATOBJ_GetFloat(pf) (*(PULONG)(pf))
2589 #define FLOATOBJ_GetLong(pf) ((LONG)*(pf))
2590 #define FLOATOBJ_Add(pf, pf1) {*(pf) += *(pf1);}
2591 #define FLOATOBJ_AddFloat(pf, f) {*(pf) += (f);}
2592 #define FLOATOBJ_AddLong(pf, l) {*(pf) += (l);}
2593 #define FLOATOBJ_Sub(pf, pf1) {*(pf) -= *(pf1);}
2594 #define FLOATOBJ_SubFloat(pf, f) {*(pf) -= (f);}
2595 #define FLOATOBJ_SubLong(pf, l) {*(pf) -= (l);}
2596 #define FLOATOBJ_Mul(pf, pf1) {*(pf) *= *(pf1);}
2597 #define FLOATOBJ_MulFloat(pf, f) {*(pf) *= (f);}
2598 #define FLOATOBJ_MulLong(pf, l) {*(pf) *= (l);}
2599 #define FLOATOBJ_Div(pf, pf1) {*(pf) /= *(pf1);}
2600 #define FLOATOBJ_DivFloat(pf, f) {*(pf) /= (f);}
2601 #define FLOATOBJ_DivLong(pf, l) {*(pf) /= (l);}
2602 #define FLOATOBJ_Neg(pf) {*(pf) = -(*(pf));}
2603 #define FLOATOBJ_Equal(pf, pf1) (*(pf) == *(pf1))
2604 #define FLOATOBJ_GreaterThan(pf, pf1) (*(pf) > *(pf1))
2605 #define FLOATOBJ_LessThan(pf, pf1) (*(pf) < *(pf1))
2606 #define FLOATOBJ_EqualLong(pf, l) (*(pf) == (FLOAT)(l))
2607 #define FLOATOBJ_GreaterThanLong(pf, l) (*(pf) > (FLOAT)(l))
2608 #define FLOATOBJ_LessThanLong(pf, l) (*(pf) < (FLOAT)(l))
2615 FONTOBJ_cGetAllGlyphHandles(
2617 _Out_opt_ HGLYPH
*phg
);
2626 _In_count_(cGlyph
) HGLYPH
*phg
,
2627 _Out_ PVOID
*ppvGlyph
);
2641 _Ret_opt_bytecount_(*pcjTable
)
2645 FONTOBJ_pjOpenTypeTablePointer(
2648 _Out_ ULONG
*pcjTable
);
2653 FONTOBJ_pQueryGlyphAttrs(
2657 _Ret_opt_bytecount_(*pcjFile
)
2661 FONTOBJ_pvTrueTypeFontFile(
2663 _Out_ ULONG
*pcjFile
);
2668 FONTOBJ_pwszFontFilePaths(
2675 FONTOBJ_pxoGetXform(
2684 _Out_bytecap_(cjSize
) FONTINFO
*pfi
);
2686 #if (NTDDI_VERSION <= NTDDI_WINXP)
2689 FONTOBJ_pGetGammaTables(
2696 HT_ComputeRGBGammaTable(
2697 _In_ USHORT GammaTableEntries
,
2698 _In_ USHORT GammaTableType
,
2699 _In_ USHORT RedGamma
,
2700 _In_ USHORT GreenGamma
,
2701 _In_ USHORT BlueGamma
,
2702 _Out_writes_bytes_(GammaTableEntries
* 3) LPBYTE pGammaTable
);
2707 HT_Get8BPPFormatPalette(
2708 _Out_opt_ LPPALETTEENTRY pPaletteEntry
,
2709 _In_ USHORT RedGamma
,
2710 _In_ USHORT GreenGamma
,
2711 _In_ USHORT BlueGamma
);
2716 HT_Get8BPPMaskPalette(
2717 _Out_opt_ LPPALETTEENTRY pPaletteEntry
,
2718 _In_ BOOL Use8BPPMaskPal
,
2720 _In_ USHORT RedGamma
,
2721 _In_ USHORT GreenGamma
,
2722 _In_ USHORT BlueGamma
);
2727 HTUI_DeviceColorAdjustment(
2728 _In_ LPSTR pDeviceName
,
2729 _Out_ PDEVHTADJDATA pDevHTAdjData
);
2738 _Out_writes_(cColors
) ULONG
*pulColors
);
2743 PATHOBJ_bCloseFigure(
2751 _Out_ PATHDATA
*ppd
);
2756 PATHOBJ_bEnumClipLines(
2759 _Out_bytecap_(cj
) CLIPLINE
*pcl
);
2766 _In_ POINTFIX ptfx
);
2771 PATHOBJ_bPolyBezierTo(
2773 _In_count_(cptfx
) POINTFIX
*pptfx
,
2779 PATHOBJ_bPolyLineTo(
2781 _In_count_(cptfx
) POINTFIX
*pptfx
,
2788 _Inout_ PATHOBJ
*ppo
);
2793 PATHOBJ_vEnumStartClipLines(
2794 _Inout_ PATHOBJ
*ppo
,
2797 _In_ LINEATTRS
*pla
);
2804 _Out_ PRECTFX prectfx
);
2810 _Inout_ STROBJ
*pstro
,
2812 _Out_ PGLYPHPOS
*ppgpos
); // FIXME_ size?
2817 STROBJ_bEnumPositionsOnly(
2820 _Out_ PGLYPHPOS
*ppgpos
); // FIXME_ size?
2825 STROBJ_bGetAdvanceWidths(
2829 _Out_cap_(c
) POINTQF
*pptqD
);
2834 STROBJ_dwGetCodePage(
2835 _In_ STROBJ
*pstro
);
2840 STROBJ_fxBreakExtra(
2841 _In_ STROBJ
*pstro
);
2846 STROBJ_fxCharacterExtra(
2847 _In_ STROBJ
*pstro
);
2853 _Inout_ STROBJ
*pstro
);
2859 _Inout_ WNDOBJ
*pwo
,
2861 _Out_bytecap_(cj
) ULONG
*pul
);
2867 _Inout_ WNDOBJ
*pwo
,
2869 _In_ ULONG iDirection
,
2875 WNDOBJ_vSetConsumer(
2876 _Inout_ WNDOBJ
*pwo
,
2877 _In_ PVOID pvConsumer
);
2879 /* XFORMOBJ_bApplyXform.iMode constants */
2881 #define XF_INV_LTOL 1L
2883 #define XF_INV_FXTOL 3L
2888 XFORMOBJ_bApplyXform(
2892 _In_reads_bytes_(cPoints
* sizeof(POINTL
)) PVOID pvIn
,
2893 _Out_writes_bytes_(cPoints
* sizeof(POINTL
)) PVOID pvOut
);
2895 #if !defined(USERMODE_DRIVER)
2899 XFORMOBJ_iGetFloatObjXform(
2901 _Out_ FLOATOBJ_XFORM
*pxfo
);
2903 #define XFORMOBJ_iGetFloatObjXform XFORMOBJ_iGetXform
2911 _Out_ XFORML
*pxform
);
2913 /* XLATEOBJ_cGetPalette.iPal constants */
2914 #define XO_SRCPALETTE 1
2915 #define XO_DESTPALETTE 2
2916 #define XO_DESTDCPALETTE 3
2917 #define XO_SRCBITFIELDS 4
2918 #define XO_DESTBITFIELDS 5
2923 XLATEOBJ_cGetPalette(
2924 _In_ XLATEOBJ
*pxlo
,
2927 _Out_cap_(cPal
) ULONG
*pPal
);
2932 XLATEOBJ_hGetColorTransform(
2933 _In_ XLATEOBJ
*pxlo
);
2939 _In_ XLATEOBJ
*pxlo
,
2946 _In_ XLATEOBJ
*pxlo
);
2949 /* Graphics Driver Functions */
2952 (APIENTRY FN_DrvAlphaBlend
)(
2953 _Inout_ SURFOBJ
*psoDest
,
2954 _In_ SURFOBJ
*psoSrc
,
2956 _In_opt_ XLATEOBJ
*pxlo
,
2957 _In_ RECTL
*prclDest
,
2958 _In_ RECTL
*prclSrc
,
2959 _In_ BLENDOBJ
*pBlendObj
);
2960 typedef FN_DrvAlphaBlend
*PFN_DrvAlphaBlend
;
2961 extern FN_DrvAlphaBlend DrvAlphaBlend
;
2964 (APIENTRY FN_DrvAssertMode
)(
2967 typedef FN_DrvAssertMode
*PFN_DrvAssertMode
;
2968 extern FN_DrvAssertMode DrvAssertMode
;
2971 (APIENTRY FN_DrvBitBlt
)(
2972 _Inout_ SURFOBJ
*psoTrg
,
2973 _In_opt_ SURFOBJ
*psoSrc
,
2974 _In_opt_ SURFOBJ
*psoMask
,
2976 _In_opt_ XLATEOBJ
*pxlo
,
2977 _In_ RECTL
*prclTrg
,
2978 _In_opt_ POINTL
*pptlSrc
,
2979 _In_opt_ POINTL
*pptlMask
,
2980 _In_opt_ BRUSHOBJ
*pbo
,
2981 _In_opt_ POINTL
*pptlBrush
,
2983 typedef FN_DrvBitBlt
*PFN_DrvBitBlt
;
2984 extern FN_DrvBitBlt DrvBitBlt
;
2987 (APIENTRY FN_DrvCompletePDEV
)(
2990 typedef FN_DrvCompletePDEV
*PFN_DrvCompletePDEV
;
2991 extern FN_DrvCompletePDEV DrvCompletePDEV
;
2994 (APIENTRY FN_DrvCopyBits
)(
2995 _In_ SURFOBJ
*psoDest
,
2996 _In_ SURFOBJ
*psoSrc
,
2998 _In_opt_ XLATEOBJ
*pxlo
,
2999 _In_ RECTL
*prclDest
,
3000 _In_ POINTL
*pptlSrc
);
3001 typedef FN_DrvCopyBits
*PFN_DrvCopyBits
;
3002 extern FN_DrvCopyBits DrvCopyBits
;
3005 (APIENTRY FN_DrvCreateDeviceBitmap
)(
3008 _In_ ULONG iFormat
);
3009 typedef FN_DrvCreateDeviceBitmap
*PFN_DrvCreateDeviceBitmap
;
3010 extern FN_DrvCreateDeviceBitmap DrvCreateDeviceBitmap
;
3013 (APIENTRY FN_DrvDeleteDeviceBitmap
)(
3014 _In_ _Post_ptr_invalid_ DHSURF dhsurf
);
3015 typedef FN_DrvDeleteDeviceBitmap
*PFN_DrvDeleteDeviceBitmap
;
3016 extern FN_DrvDeleteDeviceBitmap DrvDeleteDeviceBitmap
;
3019 (APIENTRY FN_DrvDeriveSurface
)(
3020 _In_ DD_DIRECTDRAW_GLOBAL
*pDirectDraw
,
3021 _In_ DD_SURFACE_LOCAL
*pSurface
);
3022 typedef FN_DrvDeriveSurface
*PFN_DrvDeriveSurface
;
3023 extern FN_DrvDeriveSurface DrvDeriveSurface
;
3026 (APIENTRY FN_DrvDescribePixelFormat
)(
3028 _In_ LONG iPixelFormat
,
3030 _Out_opt_ PIXELFORMATDESCRIPTOR
*ppfd
);
3031 typedef FN_DrvDescribePixelFormat
*PFN_DrvDescribePixelFormat
;
3032 extern FN_DrvDescribePixelFormat DrvDescribePixelFormat
;
3035 (APIENTRY FN_DrvDestroyFont
)(
3037 typedef FN_DrvDestroyFont
*PFN_DrvDestroyFont
;
3038 extern FN_DrvDestroyFont DrvDestroyFont
;
3041 (APIENTRY FN_DrvDisableDriver
)(VOID
);
3042 typedef FN_DrvDisableDriver
*PFN_DrvDisableDriver
;
3043 extern FN_DrvDisableDriver DrvDisableDriver
;
3046 (APIENTRY FN_DrvDisablePDEV
)(
3047 _In_ DHPDEV dhpdev
);
3048 typedef FN_DrvDisablePDEV
*PFN_DrvDisablePDEV
;
3049 extern FN_DrvDisablePDEV DrvDisablePDEV
;
3052 (APIENTRY FN_DrvDisableSurface
)(
3053 _In_ DHPDEV dhpdev
);
3054 typedef FN_DrvDisableSurface
*PFN_DrvDisableSurface
;
3055 extern FN_DrvDisableSurface DrvDisableSurface
;
3058 (APIENTRY FN_DrvDitherColor
)(
3062 _Inout_updates_(8 * 8) ULONG
*pul
); // FIXME: compare EngDitherColor
3063 typedef FN_DrvDitherColor
*PFN_DrvDitherColor
;
3064 extern FN_DrvDitherColor DrvDitherColor
;
3067 (APIENTRY FN_DrvDrawEscape
)(
3073 _In_reads_bytes_(cjIn
) PVOID pvIn
);
3074 typedef FN_DrvDrawEscape
*PFN_DrvDrawEscape
;
3075 extern FN_DrvDrawEscape DrvDrawEscape
;
3078 (APIENTRY FN_DrvEnableDriver
)(
3079 _In_ ULONG iEngineVersion
,
3081 _Inout_bytecount_(cj
) DRVENABLEDATA
*pded
); // Zero initialized
3082 typedef FN_DrvEnableDriver
*PFN_DrvEnableDriver
;
3083 extern FN_DrvEnableDriver DrvEnableDriver
;
3086 (APIENTRY FN_DrvEnablePDEV
)(
3088 _In_ LPWSTR pwszLogAddress
,
3090 _Out_opt_cap_(cPat
) HSURF
*phsurfPatterns
,
3092 _Out_bytecap_(cjCaps
) ULONG
*pdevcaps
,
3093 _In_ ULONG cjDevInfo
,
3096 _In_ LPWSTR pwszDeviceName
,
3097 _In_ HANDLE hDriver
);
3098 typedef FN_DrvEnablePDEV
*PFN_DrvEnablePDEV
;
3099 extern FN_DrvEnablePDEV DrvEnablePDEV
;
3102 (APIENTRY FN_DrvEnableSurface
)(
3103 _In_ DHPDEV dhpdev
);
3104 typedef FN_DrvEnableSurface
*PFN_DrvEnableSurface
;
3105 extern FN_DrvEnableSurface DrvEnableSurface
;
3107 /* DrvEndDoc.fl constants */
3108 #define ED_ABORTDOC 0x00000001
3111 (APIENTRY FN_DrvEndDoc
)(
3114 typedef FN_DrvEndDoc
*PFN_DrvEndDoc
;
3115 extern FN_DrvEndDoc DrvEndDoc
;
3118 (APIENTRY FN_DrvEscape
)(
3122 _In_bytecount_(cjIn
) PVOID pvIn
,
3124 _Out_bytecap_(cjOut
) PVOID pvOut
);
3125 typedef FN_DrvEscape
*PFN_DrvEscape
;
3126 extern FN_DrvEscape DrvEscape
;
3129 (APIENTRY FN_DrvFillPath
)(
3130 _Inout_ SURFOBJ
*pso
,
3134 _In_ POINTL
*pptlBrushOrg
,
3136 _In_ FLONG flOptions
);
3137 typedef FN_DrvFillPath
*PFN_DrvFillPath
;
3138 extern FN_DrvFillPath DrvFillPath
;
3141 (APIENTRY FN_DrvFontManagement
)(
3143 _In_opt_ FONTOBJ
*pfo
,
3146 _In_bytecount_(cjIn
) PVOID pvIn
,
3148 _Out_bytecap_(cjOut
) PVOID pvOut
);
3149 typedef FN_DrvFontManagement
*PFN_DrvFontManagement
;
3150 extern FN_DrvFontManagement DrvFontManagement
;
3153 (APIENTRY FN_DrvFree
)(
3154 _In_ _Post_ptr_invalid_ PVOID pv
,
3156 typedef FN_DrvFree
*PFN_DrvFree
;
3157 extern FN_DrvFree DrvFree
;
3159 /* DrvGetGlyphMode return values */
3160 #define FO_HGLYPHS 0L
3161 #define FO_GLYPHBITS 1L
3162 #define FO_PATHOBJ 2L
3165 (APIENTRY FN_DrvGetGlyphMode
)(
3168 typedef FN_DrvGetGlyphMode
*PFN_DrvGetGlyphMode
;
3169 extern FN_DrvGetGlyphMode DrvGetGlyphMode
;
3172 (APIENTRY FN_DrvGetModes
)(
3173 _In_ HANDLE hDriver
,
3175 _Out_opt_bytecap_(cjSize
) DEVMODEW
*pdm
);
3176 typedef FN_DrvGetModes
*PFN_DrvGetModes
;
3177 extern FN_DrvGetModes DrvGetModes
;
3180 (APIENTRY FN_DrvGetTrueTypeFile
)(
3181 _In_ ULONG_PTR iFile
,
3183 typedef FN_DrvGetTrueTypeFile
*PFN_DrvGetTrueTypeFile
;
3184 extern FN_DrvGetTrueTypeFile DrvGetTrueTypeFile
;
3187 (APIENTRY FN_DrvGradientFill
)(
3188 _Inout_ SURFOBJ
*psoDest
,
3190 _In_opt_ XLATEOBJ
*pxlo
,
3191 _In_ TRIVERTEX
*pVertex
,
3195 _In_ RECTL
*prclExtents
,
3196 _In_ POINTL
*pptlDitherOrg
,
3198 typedef FN_DrvGradientFill
*PFN_DrvGradientFill
;
3199 extern FN_DrvGradientFill DrvGradientFill
;
3202 (APIENTRY FN_DrvIcmCheckBitmapBits
)(
3204 _In_ HANDLE hColorTransform
,
3206 _Out_bytecap_(pso
->sizlBitmap
.cx
* pso
->sizlBitmap
.cy
) PBYTE paResults
);
3207 typedef FN_DrvIcmCheckBitmapBits
*PFN_DrvIcmCheckBitmapBits
;
3208 extern FN_DrvIcmCheckBitmapBits DrvIcmCheckBitmapBits
;
3211 (APIENTRY FN_DrvIcmCreateColorTransform
)(
3213 _In_ LPLOGCOLORSPACEW pLogColorSpace
,
3214 _In_reads_bytes_opt_(cjSourceProfile
) PVOID pvSourceProfile
,
3215 _In_ ULONG cjSourceProfile
,
3216 _In_reads_bytes_(cjDestProfile
) PVOID pvDestProfile
,
3217 _In_ ULONG cjDestProfile
,
3218 _In_reads_bytes_opt_(cjTargetProfile
) PVOID pvTargetProfile
,
3219 _In_ ULONG cjTargetProfile
,
3220 _In_ DWORD dwReserved
);
3221 typedef FN_DrvIcmCreateColorTransform
*PFN_DrvIcmCreateColorTransform
;
3222 extern FN_DrvIcmCreateColorTransform DrvIcmCreateColorTransform
;
3225 (APIENTRY FN_DrvIcmDeleteColorTransform
)(
3227 _In_ HANDLE hcmXform
);
3228 typedef FN_DrvIcmDeleteColorTransform
*PFN_DrvIcmDeleteColorTransform
;
3229 extern FN_DrvIcmDeleteColorTransform DrvIcmDeleteColorTransform
;
3231 /* DrvIcmSetDeviceGammaRamp.iFormat constants */
3232 #define IGRF_RGB_256BYTES 0x00000000
3233 #define IGRF_RGB_256WORDS 0x00000001
3236 (APIENTRY FN_DrvIcmSetDeviceGammaRamp
)(
3239 _In_bytecount_(sizeof(GAMMARAMP
)) LPVOID lpRamp
);
3240 typedef FN_DrvIcmSetDeviceGammaRamp
*PFN_DrvIcmSetDeviceGammaRamp
;
3241 extern FN_DrvIcmSetDeviceGammaRamp DrvIcmSetDeviceGammaRamp
;
3244 (APIENTRY FN_DrvLineTo
)(
3245 _Inout_ SURFOBJ
*pso
,
3252 _In_opt_ RECTL
*prclBounds
,
3254 typedef FN_DrvLineTo
*PFN_DrvLineTo
;
3255 extern FN_DrvLineTo DrvLineTo
;
3258 (APIENTRY FN_DrvLoadFontFile
)(
3260 _In_ ULONG_PTR
*piFile
,
3261 _In_count_(cFiles
) PVOID
*ppvView
,
3262 _In_count_(cFiles
) ULONG
*pcjView
,
3263 _In_opt_ DESIGNVECTOR
*pdv
,
3264 _In_ ULONG ulLangID
,
3265 _In_ ULONG ulFastCheckSum
);
3266 typedef FN_DrvLoadFontFile
*PFN_DrvLoadFontFile
;
3267 extern FN_DrvLoadFontFile DrvLoadFontFile
;
3270 (APIENTRY FN_DrvMovePointer
)(
3274 _In_opt_ RECTL
*prcl
);
3275 typedef FN_DrvMovePointer
*PFN_DrvMovePointer
;
3276 extern FN_DrvMovePointer DrvMovePointer
;
3279 (APIENTRY FN_DrvNextBand
)(
3282 typedef FN_DrvNextBand
*PFN_DrvNextBand
;
3283 extern FN_DrvNextBand DrvNextBand
;
3286 (APIENTRY FN_DrvNotify
)(
3289 _In_opt_ PVOID pvData
);
3290 typedef FN_DrvNotify
*PFN_DrvNotify
;
3291 extern FN_DrvNotify DrvNotify
;
3294 (APIENTRY FN_DrvOffset
)(
3298 _In_ FLONG flReserved
);
3299 typedef FN_DrvOffset
*PFN_DrvOffset
;
3300 extern FN_DrvOffset DrvOffset
;
3303 (APIENTRY FN_DrvPaint
)(
3304 _Inout_ SURFOBJ
*pso
,
3307 _In_ POINTL
*pptlBrushOrg
,
3309 typedef FN_DrvPaint
*PFN_DrvPaint
;
3310 extern FN_DrvPaint DrvPaint
;
3313 (APIENTRY FN_DrvPlgBlt
)(
3314 _Inout_ SURFOBJ
*psoTrg
,
3315 _Inout_ SURFOBJ
*psoSrc
,
3316 _In_opt_ SURFOBJ
*psoMsk
,
3318 _In_opt_ XLATEOBJ
*pxlo
,
3319 _In_opt_ COLORADJUSTMENT
*pca
,
3320 _In_opt_ POINTL
*pptlBrushOrg
,
3321 _In_ POINTFIX
*pptfx
,
3323 _In_opt_ POINTL
*pptl
,
3325 typedef FN_DrvPlgBlt
*PFN_DrvPlgBlt
;
3326 extern FN_DrvPlgBlt DrvPlgBlt
;
3328 /* DrvQueryAdvanceWidths.iMode constants */
3329 #define QAW_GETWIDTHS 0
3330 #define QAW_GETEASYWIDTHS 1
3333 (APIENTRY FN_DrvQueryAdvanceWidths
)(
3337 _In_reads_(cGlyphs
) HGLYPH
*phg
,
3338 _Out_writes_bytes_(cGlyphs
* sizeof(USHORT
)) PVOID pvWidths
,
3339 _In_ ULONG cGlyphs
);
3340 typedef FN_DrvQueryAdvanceWidths
*PFN_DrvQueryAdvanceWidths
;
3341 extern FN_DrvQueryAdvanceWidths DrvQueryAdvanceWidths
;
3343 /* DrvQueryDeviceSupport.iType constants */
3344 #define QDS_CHECKJPEGFORMAT 0x00000000
3345 #define QDS_CHECKPNGFORMAT 0x00000001
3348 (APIENTRY FN_DrvQueryDeviceSupport
)(
3350 _In_ XLATEOBJ
*pxlo
,
3354 _In_bytecount_(cjIn
) PVOID pvIn
,
3356 _Out_bytecap_(cjOut
) PVOID pvOut
);
3357 typedef FN_DrvQueryDeviceSupport
*PFN_DrvQueryDeviceSupport
;
3358 extern FN_DrvQueryDeviceSupport DrvQueryDeviceSupport
;
3360 /* DrvQueryDriverInfo.dwMode constants */
3361 #define DRVQUERY_USERMODE 0x00000001
3364 (APIENTRY FN_DrvQueryDriverInfo
)(
3366 _Out_bytecap_(cjBuf
) PVOID pBuffer
,
3368 _Out_ PDWORD pcbNeeded
);
3369 typedef FN_DrvQueryDriverInfo
*PFN_DrvQueryDriverInfo
;
3370 extern FN_DrvQueryDriverInfo DrvQueryDriverInfo
;
3373 (APIENTRY FN_DrvQueryFont
)(
3375 _In_ ULONG_PTR iFile
,
3377 _Out_ ULONG_PTR
*pid
);
3378 typedef FN_DrvQueryFont
*PFN_DrvQueryFont
;
3379 extern FN_DrvQueryFont DrvQueryFont
;
3381 /* DrvQueryFontCaps.pulCaps constants */
3382 #define QC_OUTLINES 0x00000001
3383 #define QC_1BIT 0x00000002
3384 #define QC_4BIT 0x00000004
3386 #define QC_FONTDRIVERCAPS (QC_OUTLINES | QC_1BIT | QC_4BIT)
3389 (APIENTRY FN_DrvQueryFontCaps
)(
3391 _Out_cap_(culCaps
) ULONG
*pulCaps
);
3392 typedef FN_DrvQueryFontCaps
*PFN_DrvQueryFontCaps
;
3393 extern FN_DrvQueryFontCaps DrvQueryFontCaps
;
3395 /* DrvQueryFontData.iMode constants */
3396 #define QFD_GLYPHANDBITMAP 1L
3397 #define QFD_GLYPHANDOUTLINE 2L
3398 #define QFD_MAXEXTENTS 3L
3399 #define QFD_TT_GLYPHANDBITMAP 4L
3400 #define QFD_TT_GRAY1_BITMAP 5L
3401 #define QFD_TT_GRAY2_BITMAP 6L
3402 #define QFD_TT_GRAY4_BITMAP 8L
3403 #define QFD_TT_GRAY8_BITMAP 9L
3405 #define QFD_TT_MONO_BITMAP QFD_TT_GRAY1_BITMAP
3408 (APIENTRY FN_DrvQueryFontData
)(
3413 _In_opt_ GLYPHDATA
*pgd
,
3414 _Out_bytecap_(cjSize
) PVOID pv
,
3416 typedef FN_DrvQueryFontData
*PFN_DrvQueryFontData
;
3417 extern FN_DrvQueryFontData DrvQueryFontData
;
3419 /* DrvQueryFontFile.ulMode constants */
3420 #define QFF_DESCRIPTION 0x00000001
3421 #define QFF_NUMFACES 0x00000002
3424 (APIENTRY FN_DrvQueryFontFile
)(
3425 _In_ ULONG_PTR iFile
,
3428 _Out_bytecap_(cjBuf
) ULONG
*pulBuf
);
3429 typedef FN_DrvQueryFontFile
*PFN_DrvQueryFontFile
;
3430 extern FN_DrvQueryFontFile DrvQueryFontFile
;
3432 /* DrvQueryFontTree.iMode constants */
3433 #define QFT_UNICODE 0L
3434 #define QFT_LIGATURES 1L
3435 #define QFT_KERNPAIRS 2L
3436 #define QFT_GLYPHSET 3L
3439 (APIENTRY FN_DrvQueryFontTree
)(
3441 _In_ ULONG_PTR iFile
,
3444 _Out_ ULONG_PTR
*pid
);
3445 typedef FN_DrvQueryFontTree
*PFN_DrvQueryFontTree
;
3446 extern FN_DrvQueryFontTree DrvQueryFontTree
;
3448 typedef PFD_GLYPHATTR
3449 (APIENTRY FN_DrvQueryGlyphAttrs
)(
3452 typedef FN_DrvQueryGlyphAttrs
*PFN_DrvQueryGlyphAttrs
;
3453 extern FN_DrvQueryGlyphAttrs DrvQueryGlyphAttrs
;
3456 (APIENTRY FN_DrvQueryPerBandInfo
)(
3458 _Inout_ PERBANDINFO
*pbi
);
3459 typedef FN_DrvQueryPerBandInfo
*PFN_DrvQueryPerBandInfo
;
3460 extern FN_DrvQueryPerBandInfo DrvQueryPerBandInfo
;
3462 /* DrvQueryTrueTypeOutline.bMetricsOnly constants */
3463 #define TTO_METRICS_ONLY 0x00000001
3464 #define TTO_QUBICS 0x00000002
3465 #define TTO_UNHINTED 0x00000004
3468 (APIENTRY FN_DrvQueryTrueTypeOutline
)(
3472 _In_ BOOL bMetricsOnly
,
3473 _Out_opt_ GLYPHDATA
*pgldt
,
3475 _Out_bytecap_(cjBuf
) TTPOLYGONHEADER
*ppoly
);
3476 typedef FN_DrvQueryTrueTypeOutline
*PFN_DrvQueryTrueTypeOutline
;
3477 extern FN_DrvQueryTrueTypeOutline DrvQueryTrueTypeOutline
;
3480 (APIENTRY FN_DrvQueryTrueTypeTable
)(
3481 _In_ ULONG_PTR iFile
,
3484 _In_ PTRDIFF dpStart
,
3486 _Out_opt_bytecap_(cjBuf
) BYTE
*pjBuf
,
3487 _Outptr_opt_result_bytebuffer_all_maybenull_(*pcjTable
) PBYTE
*ppjTable
,
3488 _Out_opt_ ULONG
*pcjTable
);
3489 typedef FN_DrvQueryTrueTypeTable
*PFN_DrvQueryTrueTypeTable
;
3490 extern FN_DrvQueryTrueTypeTable DrvQueryTrueTypeTable
;
3492 /* DrvRealizeBrush.iHatch constants */
3493 #define RB_DITHERCOLOR 0x80000000L
3495 #define HS_DDI_MAX 6
3498 (APIENTRY FN_DrvRealizeBrush
)(
3500 _Inout_ SURFOBJ
*psoTarget
, // CHECKME
3501 _In_opt_ SURFOBJ
*psoPattern
,
3502 _In_opt_ SURFOBJ
*psoMask
,
3503 _In_opt_ XLATEOBJ
*pxlo
,
3505 typedef FN_DrvRealizeBrush
*PFN_DrvRealizeBrush
;
3506 extern FN_DrvRealizeBrush DrvRealizeBrush
;
3508 /* DrvResetDevice return values */
3509 #define DRD_SUCCESS 0
3513 (APIENTRY FN_DrvResetDevice
)(
3515 _Reserved_ PVOID Reserved
);
3516 typedef FN_DrvResetDevice
*PFN_DrvResetDevice
;
3517 extern FN_DrvResetDevice DrvResetDevice
;
3520 (APIENTRY FN_DrvResetPDEV
)(
3521 _In_ DHPDEV dhpdevOld
,
3522 _In_ DHPDEV dhpdevNew
);
3523 typedef FN_DrvResetPDEV
*PFN_DrvResetPDEV
;
3524 extern FN_DrvResetPDEV DrvResetPDEV
;
3526 /* DrvSaveScreenBits.iMode constants */
3527 #define SS_SAVE 0x00000000
3528 #define SS_RESTORE 0x00000001
3529 #define SS_FREE 0x00000002
3532 (APIENTRY FN_DrvSaveScreenBits
)(
3535 _In_ ULONG_PTR ident
,
3537 typedef FN_DrvSaveScreenBits
*PFN_DrvSaveScreenBits
;
3538 extern FN_DrvSaveScreenBits DrvSaveScreenBits
;
3541 (APIENTRY FN_DrvSendPage
)(
3543 typedef FN_DrvSendPage
*PFN_DrvSendPage
;
3544 extern FN_DrvSendPage DrvSendPage
;
3546 /* DrvSetPalette range */
3547 #define WINDDI_MAXSETPALETTECOLORS 256
3548 #define WINDDI_MAXSETPALETTECOLORINDEX 255
3551 (APIENTRY FN_DrvSetPalette
)(
3555 _In_range_(0, WINDDI_MAXSETPALETTECOLORINDEX
) ULONG iStart
,
3556 _In_range_(0, WINDDI_MAXSETPALETTECOLORS
- iStart
) ULONG cColors
);
3557 typedef FN_DrvSetPalette
*PFN_DrvSetPalette
;
3558 extern FN_DrvSetPalette DrvSetPalette
;
3561 (APIENTRY FN_DrvSetPixelFormat
)(
3563 _In_ LONG iPixelFormat
,
3565 typedef FN_DrvSetPixelFormat
*PFN_DrvSetPixelFormat
;
3566 extern FN_DrvSetPixelFormat DrvSetPixelFormat
;
3568 /* DrvSetPointerShape return values */
3569 #define SPS_ERROR 0x00000000
3570 #define SPS_DECLINE 0x00000001
3571 #define SPS_ACCEPT_NOEXCLUDE 0x00000002
3572 #define SPS_ACCEPT_EXCLUDE 0x00000003
3573 #define SPS_ACCEPT_SYNCHRONOUS 0x00000004
3575 /* DrvSetPointerShape.fl constants */
3576 #define SPS_CHANGE 0x00000001L
3577 #define SPS_ASYNCCHANGE 0x00000002L
3578 #define SPS_ANIMATESTART 0x00000004L
3579 #define SPS_ANIMATEUPDATE 0x00000008L
3580 #define SPS_ALPHA 0x00000010L
3581 #define SPS_LENGTHMASK 0x00000F00L
3582 #define SPS_FREQMASK 0x000FF000L
3585 (APIENTRY FN_DrvSetPointerShape
)(
3587 _In_opt_ SURFOBJ
*psoMask
,
3588 _In_opt_ SURFOBJ
*psoColor
,
3589 _In_ XLATEOBJ
*pxlo
,
3596 typedef FN_DrvSetPointerShape
*PFN_DrvSetPointerShape
;
3597 extern FN_DrvSetPointerShape DrvSetPointerShape
;
3600 (APIENTRY FN_DrvStartBanding
)(
3603 typedef FN_DrvStartBanding
*PFN_DrvStartBanding
;
3604 extern FN_DrvStartBanding DrvStartBanding
;
3607 (APIENTRY FN_DrvStartDoc
)(
3609 _In_ LPWSTR pwszDocName
,
3610 _In_ DWORD dwJobId
);
3611 typedef FN_DrvStartDoc
*PFN_DrvStartDoc
;
3612 extern FN_DrvStartDoc DrvStartDoc
;
3615 (APIENTRY FN_DrvStartPage
)(
3617 typedef FN_DrvStartPage
*PFN_DrvStartPage
;
3618 extern FN_DrvStartPage DrvStartPage
;
3621 (APIENTRY FN_DrvStretchBlt
)(
3622 _Inout_ SURFOBJ
*psoDest
,
3623 _Inout_ SURFOBJ
*psoSrc
,
3624 _In_opt_ SURFOBJ
*psoMask
,
3626 _In_opt_ XLATEOBJ
*pxlo
,
3627 _In_opt_ COLORADJUSTMENT
*pca
,
3628 _In_ POINTL
*pptlHTOrg
,
3629 _In_ RECTL
*prclDest
,
3630 _In_ RECTL
*prclSrc
,
3631 _When_(psoMask
, _In_
) POINTL
*pptlMask
,
3633 typedef FN_DrvStretchBlt
*PFN_DrvStretchBlt
;
3634 extern FN_DrvStretchBlt DrvStretchBlt
;
3637 (APIENTRY FN_DrvStretchBltROP
)(
3638 _Inout_ SURFOBJ
*psoDest
,
3639 _Inout_ SURFOBJ
*psoSrc
,
3640 _In_opt_ SURFOBJ
*psoMask
,
3642 _In_opt_ XLATEOBJ
*pxlo
,
3643 _In_opt_ COLORADJUSTMENT
*pca
,
3644 _In_ POINTL
*pptlHTOrg
,
3645 _In_ RECTL
*prclDest
,
3646 _In_ RECTL
*prclSrc
,
3647 _When_(psoMask
, _In_
) POINTL
*pptlMask
,
3651 typedef FN_DrvStretchBltROP
*PFN_DrvStretchBltROP
;
3652 extern FN_DrvStretchBltROP DrvStretchBltROP
;
3655 (APIENTRY FN_DrvStrokeAndFillPath
)(
3656 _Inout_ SURFOBJ
*pso
,
3657 _Inout_ PATHOBJ
*ppo
,
3659 _In_opt_ XFORMOBJ
*pxo
,
3660 _In_ BRUSHOBJ
*pboStroke
,
3661 _In_ LINEATTRS
*plineattrs
,
3662 _In_ BRUSHOBJ
*pboFill
,
3663 _In_ POINTL
*pptlBrushOrg
,
3665 _In_ FLONG flOptions
);
3666 typedef FN_DrvStrokeAndFillPath
*PFN_DrvStrokeAndFillPath
;
3667 extern FN_DrvStrokeAndFillPath DrvStrokeAndFillPath
;
3670 (APIENTRY FN_DrvStrokePath
)(
3671 _Inout_ SURFOBJ
*pso
,
3674 _In_opt_ XFORMOBJ
*pxo
,
3676 _In_ POINTL
*pptlBrushOrg
,
3677 _In_ LINEATTRS
*plineattrs
,
3679 typedef FN_DrvStrokePath
*PFN_DrvStrokePath
;
3680 extern FN_DrvStrokePath DrvStrokePath
;
3683 (APIENTRY FN_DrvSwapBuffers
)(
3686 typedef FN_DrvSwapBuffers
*PFN_DrvSwapBuffers
;
3687 extern FN_DrvSwapBuffers DrvSwapBuffers
;
3690 (APIENTRY FN_DrvSynchronize
)(
3692 _In_count_c_(0) RECTL
*prcl
); // should be ignored
3693 typedef FN_DrvSynchronize
*PFN_DrvSynchronize
;
3694 extern FN_DrvSynchronize DrvSynchronize
;
3696 /* DrvSynchronizeSurface.fl constants */
3697 #define DSS_TIMER_EVENT 0x00000001
3698 #define DSS_FLUSH_EVENT 0x00000002
3699 #define DSS_RESERVED 0x00000004
3700 #define DSS_RESERVED1 0x00000008
3703 (APIENTRY FN_DrvSynchronizeSurface
)(
3705 _In_opt_ RECTL
*prcl
,
3707 typedef FN_DrvSynchronizeSurface
*PFN_DrvSynchronizeSurface
;
3708 extern FN_DrvSynchronizeSurface DrvSynchronizeSurface
;
3711 (APIENTRY FN_DrvTextOut
)(
3716 _Null_ RECTL
*prclExtra
,
3717 _In_opt_ RECTL
*prclOpaque
,
3718 _In_ BRUSHOBJ
*pboFore
,
3719 _In_ BRUSHOBJ
*pboOpaque
,
3720 _In_ POINTL
*pptlOrg
,
3722 typedef FN_DrvTextOut
*PFN_DrvTextOut
;
3723 extern FN_DrvTextOut DrvTextOut
;
3726 (APIENTRY FN_DrvTransparentBlt
)(
3727 _Inout_ SURFOBJ
*psoDst
,
3728 _In_ SURFOBJ
*psoSrc
,
3730 _In_opt_ XLATEOBJ
*pxlo
,
3731 _In_ RECTL
*prclDst
,
3732 _In_ RECTL
*prclSrc
,
3733 _In_ ULONG iTransColor
,
3734 _In_ ULONG ulReserved
);
3735 typedef FN_DrvTransparentBlt
*PFN_DrvTransparentBlt
;
3736 extern FN_DrvTransparentBlt DrvTransparentBlt
;
3739 (APIENTRY FN_DrvUnloadFontFile
)(
3740 _In_ ULONG_PTR iFile
);
3741 typedef FN_DrvUnloadFontFile
*PFN_DrvUnloadFontFile
;
3742 extern FN_DrvUnloadFontFile DrvUnloadFontFile
;
3747 (APIENTRY FN_DrvDisableDirectDraw
)(
3748 _In_ DHPDEV dhpdev
);
3749 typedef FN_DrvDisableDirectDraw
*PFN_DrvDisableDirectDraw
;
3750 extern FN_DrvDisableDirectDraw DrvDisableDirectDraw
;
3753 (APIENTRY FN_DrvEnableDirectDraw
)(
3755 _Out_ DD_CALLBACKS
*pCallBacks
,
3756 _Out_ DD_SURFACECALLBACKS
*pSurfaceCallBacks
,
3757 _Out_ DD_PALETTECALLBACKS
*pPaletteCallBacks
);
3758 typedef FN_DrvEnableDirectDraw
*PFN_DrvEnableDirectDraw
;
3759 extern FN_DrvEnableDirectDraw DrvEnableDirectDraw
;
3762 (APIENTRY FN_DrvGetDirectDrawInfo
)(
3764 _Out_ DD_HALINFO
*pHalInfo
,
3765 _Out_ DWORD
*pdwNumHeaps
,
3766 _Out_ VIDEOMEMORY
*pvmList
,
3767 _Out_ DWORD
*pdwNumFourCCCodes
,
3768 _Out_ DWORD
*pdwFourCC
);
3769 typedef FN_DrvGetDirectDrawInfo
*PFN_DrvGetDirectDrawInfo
;
3770 extern FN_DrvGetDirectDrawInfo DrvGetDirectDrawInfo
;
3772 typedef BOOL
//DECLSPEC_DEPRECATED_DDK
3773 (APIENTRY FN_DrvQuerySpoolType
)(
3775 _In_ LPWSTR pwchType
);
3776 typedef FN_DrvQuerySpoolType
*PFN_DrvQuerySpoolType
;
3777 extern FN_DrvQuerySpoolType DrvQuerySpoolType
;
3784 #endif /* defined __VIDEO_H__ */
3786 #endif /* _WINDDI_ */