4 * GDI device driver interface
6 * This file is part of the w32api package.
9 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
11 * THIS SOFTWARE IS NOT COPYRIGHTED
13 * This source code is offered for use in the public domain. You may
14 * use, modify or distribute it freely.
16 * This code is distributed in the hope that it will be useful but
17 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
18 * DISCLAIMED. This includes but is not limited to warranties of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
27 #pragma GCC system_header
31 #error video.h cannot be included with winddi.h
42 #define DECL_IMPORT __attribute__((dllimport))
46 #define WIN32KAPI DECL_EXPORT
48 #define WIN32KAPI DECL_IMPORT
51 #define DDI_DRIVER_VERSION_NT4 0x00020000
52 #define DDI_DRIVER_VERSION_SP3 0x00020003
53 #define DDI_DRIVER_VERSION_NT5 0x00030000
54 #define DDI_DRIVER_VERSION_NT5_01 0x00030100
56 #define GDI_DRIVER_VERSION 0x4000
72 typedef ULONG_PTR HFF
;
73 typedef ULONG_PTR HFC
;
76 typedef PTRDIFF
*PPTRDIFF
;
82 typedef HGLYPH
*PHGLYPH
;
84 typedef LONG_PTR (APIENTRY
*PFN
)();
88 DECLARE_HANDLE(HSURF
);
89 DECLARE_HANDLE(DHSURF
);
90 DECLARE_HANDLE(DHPDEV
);
91 DECLARE_HANDLE(HDRVOBJ
);
93 typedef struct _ENG_EVENT
*PEVENT
;
95 #define OPENGL_CMD 4352
96 #define OPENGL_GETINFO 4353
97 #define WNDOBJ_SETUP 4354
99 #define FD_ERROR 0xFFFFFFFF
100 #define DDI_ERROR 0xFFFFFFFF
102 #define HFF_INVALID ((HFF) 0)
103 #define HFC_INVALID ((HFC) 0)
104 #define HGLYPH_INVALID ((HGLYPH) -1)
106 #define FP_ALTERNATEMODE 1
107 #define FP_WINDINGMODE 2
109 #define DN_ACCELERATION_LEVEL 1
110 #define DN_DEVICE_ORIGIN 2
111 #define DN_SLEEP_MODE 3
112 #define DN_DRAWING_BEGIN 4
116 #define DCR_HALFTONE 2
118 #define GX_IDENTITY 0
123 typedef struct _POINTE
{
128 typedef union _FLOAT_LONG
{
131 } FLOAT_LONG
, *PFLOAT_LONG
;
133 typedef struct _POINTFIX
{
136 } POINTFIX
, *PPOINTFIX
;
138 typedef struct _RECTFX
{
145 typedef struct _POINTQF
{
148 } POINTQF
, *PPOINTQF
;
151 typedef struct _BLENDOBJ
{
152 BLENDFUNCTION BlendFunction
;
153 } BLENDOBJ
,*PBLENDOBJ
;
155 /* BRUSHOBJ.flColorType */
156 #define BR_DEVICE_ICM 0x01
157 #define BR_HOST_ICM 0x02
158 #define BR_CMYKCOLOR 0x04
159 #define BR_ORIGCOLOR 0x08
161 typedef struct _BRUSHOBJ
{
167 typedef struct _CIECHROMA
{
173 typedef struct _RUN
{
178 typedef struct _CLIPLINE
{
184 } CLIPLINE
, *PCLIPLINE
;
186 /* CLIPOBJ.iDComplexity constants */
191 /* CLIPOBJ.iFComplexity constants */
196 /* CLIPOBJ.iMode constants */
197 #define TC_RECTANGLES 0
200 /* CLIPOBJ.fjOptions constants */
201 #define OC_BANK_CLIP 1
203 typedef struct _CLIPOBJ
{
212 typedef struct _COLORINFO
{
219 CIECHROMA AlignmentWhite
;
223 LDECI4 MagentaInCyanDye
;
224 LDECI4 YellowInCyanDye
;
225 LDECI4 CyanInMagentaDye
;
226 LDECI4 YellowInMagentaDye
;
227 LDECI4 CyanInYellowDye
;
228 LDECI4 MagentaInYellowDye
;
229 } COLORINFO
, *PCOLORINFO
;
231 /* DEVHTADJDATA.DeviceFlags constants */
232 #define DEVHTADJF_COLOR_DEVICE 0x00000001
233 #define DEVHTADJF_ADDITIVE_DEVICE 0x00000002
235 typedef struct _DEVHTINFO
{
240 } DEVHTINFO
, *PDEVHTINFO
;
242 typedef struct _DEVHTADJDATA
{
246 PDEVHTINFO pDefHTInfo
;
247 PDEVHTINFO pAdjHTInfo
;
248 } DEVHTADJDATA
, *PDEVHTADJDATA
;
250 /* DEVINFO.flGraphicsCaps flags */
251 #define GCAPS_BEZIERS 0x00000001
252 #define GCAPS_GEOMETRICWIDE 0x00000002
253 #define GCAPS_ALTERNATEFILL 0x00000004
254 #define GCAPS_WINDINGFILL 0x00000008
255 #define GCAPS_HALFTONE 0x00000010
256 #define GCAPS_COLOR_DITHER 0x00000020
257 #define GCAPS_HORIZSTRIKE 0x00000040
258 #define GCAPS_VERTSTRIKE 0x00000080
259 #define GCAPS_OPAQUERECT 0x00000100
260 #define GCAPS_VECTORFONT 0x00000200
261 #define GCAPS_MONO_DITHER 0x00000400
262 #define GCAPS_ASYNCCHANGE 0x00000800
263 #define GCAPS_ASYNCMOVE 0x00001000
264 #define GCAPS_DONTJOURNAL 0x00002000
265 #define GCAPS_DIRECTDRAW 0x00004000
266 #define GCAPS_ARBRUSHOPAQUE 0x00008000
267 #define GCAPS_PANNING 0x00010000
268 #define GCAPS_HIGHRESTEXT 0x00040000
269 #define GCAPS_PALMANAGED 0x00080000
270 #define GCAPS_DITHERONREALIZE 0x00200000
271 #define GCAPS_NO64BITMEMACCESS 0x00400000
272 #define GCAPS_FORCEDITHER 0x00800000
273 #define GCAPS_GRAY16 0x01000000
274 #define GCAPS_ICM 0x02000000
275 #define GCAPS_CMYKCOLOR 0x04000000
276 #define GCAPS_LAYERED 0x08000000
277 #define GCAPS_ARBRUSHTEXT 0x10000000
278 #define GCAPS_SCREENPRECISION 0x20000000
279 #define GCAPS_FONT_RASTERIZER 0x40000000
280 #define GCAPS_NUP 0x80000000
282 /* DEVINFO.iDitherFormat constants */
294 /* DEVINFO.flGraphicsCaps2 flags */
295 #define GCAPS2_JPEGSRC 0x00000001
296 #define GCAPS2_xxxx 0x00000002
297 #define GCAPS2_PNGSRC 0x00000008
298 #define GCAPS2_CHANGEGAMMARAMP 0x00000010
299 #define GCAPS2_ALPHACURSOR 0x00000020
300 #define GCAPS2_SYNCFLUSH 0x00000040
301 #define GCAPS2_SYNCTIMER 0x00000080
302 #define GCAPS2_ICD_MULTIMON 0x00000100
303 #define GCAPS2_MOUSETRAILS 0x00000200
304 #define GCAPS2_RESERVED1 0x00000400
306 typedef struct _DEVINFO
{
307 FLONG flGraphicsCaps
;
308 LOGFONTW lfDefaultFont
;
309 LOGFONTW lfAnsiVarFont
;
310 LOGFONTW lfAnsiFixFont
;
315 HPALETTE hpalDefault
;
316 FLONG flGraphicsCaps2
;
317 } DEVINFO
, *PDEVINFO
;
319 typedef struct _DRIVEROBJ
*PDRIVEROBJ
;
321 typedef BOOL APIENTRY CALLBACK
323 IN PDRIVEROBJ pDriverObj
);
325 typedef struct _DRIVEROBJ
{
327 FREEOBJPROC pFreeProc
;
332 /* DRVFN.iFunc constants */
333 #define INDEX_DrvEnablePDEV 0L
334 #define INDEX_DrvCompletePDEV 1L
335 #define INDEX_DrvDisablePDEV 2L
336 #define INDEX_DrvEnableSurface 3L
337 #define INDEX_DrvDisableSurface 4L
338 #define INDEX_DrvAssertMode 5L
339 #define INDEX_DrvOffset 6L
340 #define INDEX_DrvResetPDEV 7L
341 #define INDEX_DrvDisableDriver 8L
342 #define INDEX_DrvCreateDeviceBitmap 10L
343 #define INDEX_DrvDeleteDeviceBitmap 11L
344 #define INDEX_DrvRealizeBrush 12L
345 #define INDEX_DrvDitherColor 13L
346 #define INDEX_DrvStrokePath 14L
347 #define INDEX_DrvFillPath 15L
348 #define INDEX_DrvStrokeAndFillPath 16L
349 #define INDEX_DrvPaint 17L
350 #define INDEX_DrvBitBlt 18L
351 #define INDEX_DrvCopyBits 19L
352 #define INDEX_DrvStretchBlt 20L
353 #define INDEX_DrvSetPalette 22L
354 #define INDEX_DrvTextOut 23L
355 #define INDEX_DrvEscape 24L
356 #define INDEX_DrvDrawEscape 25L
357 #define INDEX_DrvQueryFont 26L
358 #define INDEX_DrvQueryFontTree 27L
359 #define INDEX_DrvQueryFontData 28L
360 #define INDEX_DrvSetPointerShape 29L
361 #define INDEX_DrvMovePointer 30L
362 #define INDEX_DrvLineTo 31L
363 #define INDEX_DrvSendPage 32L
364 #define INDEX_DrvStartPage 33L
365 #define INDEX_DrvEndDoc 34L
366 #define INDEX_DrvStartDoc 35L
367 #define INDEX_DrvGetGlyphMode 37L
368 #define INDEX_DrvSynchronize 38L
369 #define INDEX_DrvSaveScreenBits 40L
370 #define INDEX_DrvGetModes 41L
371 #define INDEX_DrvFree 42L
372 #define INDEX_DrvDestroyFont 43L
373 #define INDEX_DrvQueryFontCaps 44L
374 #define INDEX_DrvLoadFontFile 45L
375 #define INDEX_DrvUnloadFontFile 46L
376 #define INDEX_DrvFontManagement 47L
377 #define INDEX_DrvQueryTrueTypeTable 48L
378 #define INDEX_DrvQueryTrueTypeOutline 49L
379 #define INDEX_DrvGetTrueTypeFile 50L
380 #define INDEX_DrvQueryFontFile 51L
381 #define INDEX_DrvMovePanning 52L
382 #define INDEX_DrvQueryAdvanceWidths 53L
383 #define INDEX_DrvSetPixelFormat 54L
384 #define INDEX_DrvDescribePixelFormat 55L
385 #define INDEX_DrvSwapBuffers 56L
386 #define INDEX_DrvStartBanding 57L
387 #define INDEX_DrvNextBand 58L
388 #define INDEX_DrvGetDirectDrawInfo 59L
389 #define INDEX_DrvEnableDirectDraw 60L
390 #define INDEX_DrvDisableDirectDraw 61L
391 #define INDEX_DrvQuerySpoolType 62L
392 #define INDEX_DrvIcmCreateColorTransform 64L
393 #define INDEX_DrvIcmDeleteColorTransform 65L
394 #define INDEX_DrvIcmCheckBitmapBits 66L
395 #define INDEX_DrvIcmSetDeviceGammaRamp 67L
396 #define INDEX_DrvGradientFill 68L
397 #define INDEX_DrvStretchBltROP 69L
398 #define INDEX_DrvPlgBlt 70L
399 #define INDEX_DrvAlphaBlend 71L
400 #define INDEX_DrvSynthesizeFont 72L
401 #define INDEX_DrvGetSynthesizedFontFiles 73L
402 #define INDEX_DrvTransparentBlt 74L
403 #define INDEX_DrvQueryPerBandInfo 75L
404 #define INDEX_DrvQueryDeviceSupport 76L
405 #define INDEX_DrvReserved1 77L
406 #define INDEX_DrvReserved2 78L
407 #define INDEX_DrvReserved3 79L
408 #define INDEX_DrvReserved4 80L
409 #define INDEX_DrvReserved5 81L
410 #define INDEX_DrvReserved6 82L
411 #define INDEX_DrvReserved7 83L
412 #define INDEX_DrvReserved8 84L
413 #define INDEX_DrvDeriveSurface 85L
414 #define INDEX_DrvQueryGlyphAttrs 86L
415 #define INDEX_DrvNotify 87L
416 #define INDEX_DrvSynchronizeSurface 88L
417 #define INDEX_DrvResetDevice 89L
418 #define INDEX_DrvReserved9 90L
419 #define INDEX_DrvReserved10 91L
420 #define INDEX_DrvReserved11 92L
421 #define INDEX_LAST 93L
423 typedef struct _DRVFN
{
428 /* DRVENABLEDATA.iDriverVersion constants */
429 #define DDI_DRIVER_VERSION_NT4 0x00020000
430 #define DDI_DRIVER_VERSION_SP3 0x00020003
431 #define DDI_DRIVER_VERSION_NT5 0x00030000
432 #define DDI_DRIVER_VERSION_NT5_01 0x00030100
434 typedef struct _DRVENABLEDATA
{
435 ULONG iDriverVersion
;
438 } DRVENABLEDATA
, *PDRVENABLEDATA
;
440 DECLARE_HANDLE(HSEMAPHORE
);
446 PBYTE pvCurrentRecord
;
447 } EMFINFO
, *PEMFINFO
;
449 typedef struct _ENGSAFESEMAPHORE
{
454 typedef struct _ENG_TIME_FIELDS
{
461 USHORT usMilliseconds
;
463 } ENG_TIME_FIELDS
, *PENG_TIME_FIELDS
;
465 typedef struct _ENUMRECTS
{
470 typedef struct _FD_XFORM
{
475 } FD_XFORM
, *PFD_XFORM
;
477 /* FD_DEVICEMETRICS.flRealizedType constants */
478 #define FDM_TYPE_BM_SIDE_CONST 0x00000001
479 #define FDM_TYPE_MAXEXT_EQUAL_BM_SIDE 0x00000002
480 #define FDM_TYPE_CHAR_INC_EQUAL_BM_BASE 0x00000004
481 #define FDM_TYPE_ZERO_BEARINGS 0x00000008
482 #define FDM_TYPE_CONST_BEARINGS 0x00000010
484 typedef struct _FD_DEVICEMETRICS
{
485 FLONG flRealizedType
;
491 POINTL ptlUnderline1
;
493 POINTL ptlULThickness
;
494 POINTL ptlSOThickness
;
498 FD_XFORM fdxQuantized
;
499 LONG lNonLinearExtLeading
;
500 LONG lNonLinearIntLeading
;
501 LONG lNonLinearMaxCharWidth
;
502 LONG lNonLinearAvgCharWidth
;
507 } FD_DEVICEMETRICS
, *PFD_DEVICEMETRICS
;
509 /* FD_GLYPHATTR.iMode constants */
510 #define FO_ATTR_MODE_ROTATE 1
512 typedef struct _FD_GLYPHATTR
{
517 } FD_GLYPHATTR
, *PFD_GLYPHATTR
;
519 /* FD_GLYPHSET.flAccel */
520 #define GS_UNICODE_HANDLES 0x00000001
521 #define GS_8BIT_HANDLES 0x00000002
522 #define GS_16BIT_HANDLES 0x00000004
524 typedef struct _WCRUN
{
530 typedef struct _FD_GLYPHSET
{
533 ULONG cGlyphsSupported
;
536 } FD_GLYPHSET
, *PFD_GLYPHSET
;
538 typedef struct _FD_KERNINGPAIR
{
544 typedef struct _FLOATOBJ
548 } FLOATOBJ
, *PFLOATOBJ
;
550 typedef struct _FLOATOBJ_XFORM
{
557 } FLOATOBJ_XFORM
, *PFLOATOBJ_XFORM
, FAR
*LPFLOATOBJ_XFORM
;
559 /* FONTDIFF.fsSelection */
560 #define FM_SEL_ITALIC 0x0001
561 #define FM_SEL_UNDERSCORE 0x0002
562 #define FM_SEL_NEGATIVE 0x0004
563 #define FM_SEL_OUTLINED 0x0008
564 #define FM_SEL_STRIKEOUT 0x0010
565 #define FM_SEL_BOLD 0x0020
566 #define FM_SEL_REGULAR 0x0040
568 typedef struct _FONTDIFF
{
575 FWORD fwdAveCharWidth
;
580 typedef struct _FONTSIM
{
583 PTRDIFF dpBoldItalic
;
586 /* FONTINFO.flCaps constants */
587 #define FO_DEVICE_FONT 1L
588 #define FO_OUTLINE_CAPABLE 2L
590 typedef struct _FONTINFO
{
593 ULONG cGlyphsSupported
;
598 } FONTINFO
, *PFONTINFO
;
600 /* FONTOBJ.flFontType constants */
601 #define FO_TYPE_RASTER RASTER_FONTTYPE
602 #define FO_TYPE_DEVICE DEVICE_FONTTYPE
603 #define FO_TYPE_TRUETYPE TRUETYPE_FONTTYPE
604 #define FO_TYPE_OPENTYPE OPENTYPE_FONTTYPE
606 #define FO_SIM_BOLD 0x00002000
607 #define FO_SIM_ITALIC 0x00004000
608 #define FO_EM_HEIGHT 0x00008000
609 #define FO_GRAY16 0x00010000
610 #define FO_NOGRAY16 0x00020000
611 #define FO_NOHINTS 0x00040000
612 #define FO_NO_CHOICE 0x00080000
613 #define FO_CFF 0x00100000
614 #define FO_POSTSCRIPT 0x00200000
615 #define FO_MULTIPLEMASTER 0x00400000
616 #define FO_VERT_FACE 0x00800000
617 #define FO_DBCS_FONT 0X01000000
618 #define FO_NOCLEARTYPE 0x02000000
619 #define FO_CLEARTYPE_X 0x10000000
620 #define FO_CLEARTYPE_Y 0x20000000
622 typedef struct _FONTOBJ
{
635 typedef struct _GAMMARAMP
{
639 } GAMMARAMP
, *PGAMMARAMP
;
641 /* GDIINFO.ulPrimaryOrder constants */
642 #define PRIMARY_ORDER_ABC 0
643 #define PRIMARY_ORDER_ACB 1
644 #define PRIMARY_ORDER_BAC 2
645 #define PRIMARY_ORDER_BCA 3
646 #define PRIMARY_ORDER_CBA 4
647 #define PRIMARY_ORDER_CAB 5
649 /* GDIINFO.ulHTPatternSize constants */
650 #define HT_PATSIZE_2x2 0
651 #define HT_PATSIZE_2x2_M 1
652 #define HT_PATSIZE_4x4 2
653 #define HT_PATSIZE_4x4_M 3
654 #define HT_PATSIZE_6x6 4
655 #define HT_PATSIZE_6x6_M 5
656 #define HT_PATSIZE_8x8 6
657 #define HT_PATSIZE_8x8_M 7
658 #define HT_PATSIZE_10x10 8
659 #define HT_PATSIZE_10x10_M 9
660 #define HT_PATSIZE_12x12 10
661 #define HT_PATSIZE_12x12_M 11
662 #define HT_PATSIZE_14x14 12
663 #define HT_PATSIZE_14x14_M 13
664 #define HT_PATSIZE_16x16 14
665 #define HT_PATSIZE_16x16_M 15
666 #define HT_PATSIZE_SUPERCELL 16
667 #define HT_PATSIZE_SUPERCELL_M 17
668 #define HT_PATSIZE_USER 18
669 #define HT_PATSIZE_MAX_INDEX HT_PATSIZE_USER
670 #define HT_PATSIZE_DEFAULT HT_PATSIZE_SUPERCELL_M
671 #define HT_USERPAT_CX_MIN 4
672 #define HT_USERPAT_CX_MAX 256
673 #define HT_USERPAT_CY_MIN 4
674 #define HT_USERPAT_CY_MAX 256
676 /* GDIINFO.ulHTOutputFormat constants */
677 #define HT_FORMAT_1BPP 0
678 #define HT_FORMAT_4BPP 2
679 #define HT_FORMAT_4BPP_IRGB 3
680 #define HT_FORMAT_8BPP 4
681 #define HT_FORMAT_16BPP 5
682 #define HT_FORMAT_24BPP 6
683 #define HT_FORMAT_32BPP 7
685 /* GDIINFO.flHTFlags */
686 #define HT_FLAG_SQUARE_DEVICE_PEL 0x00000001
687 #define HT_FLAG_HAS_BLACK_DYE 0x00000002
688 #define HT_FLAG_ADDITIVE_PRIMS 0x00000004
689 #define HT_FLAG_USE_8BPP_BITMASK 0x00000008
690 #define HT_FLAG_INK_HIGH_ABSORPTION 0x00000010
691 #define HT_FLAG_INK_ABSORPTION_INDICES 0x00000060
692 #define HT_FLAG_DO_DEVCLR_XFORM 0x00000080
693 #define HT_FLAG_OUTPUT_CMY 0x00000100
694 #define HT_FLAG_PRINT_DRAFT_MODE 0x00000200
695 #define HT_FLAG_INVERT_8BPP_BITMASK_IDX 0x00000400
696 #define HT_FLAG_8BPP_CMY332_MASK 0xFF000000
698 #define MAKE_CMYMASK_BYTE(c,m,y) ((BYTE)(((BYTE)(c) & 0x07) << 5) \
699 |(BYTE)(((BYTE)(m) & 0x07) << 2) \
700 |(BYTE)((BYTE)(y) & 0x03))
702 #define MAKE_CMY332_MASK(c,m,y) ((DWORD)(((DWORD)(c) & 0x07) << 29)\
703 |(DWORD)(((DWORD)(m) & 0x07) << 26)\
704 |(DWORD)(((DWORD)(y) & 0x03) << 24))
706 /* GDIINFO.flHTFlags constants */
707 #define HT_FLAG_INK_ABSORPTION_IDX0 0x00000000
708 #define HT_FLAG_INK_ABSORPTION_IDX1 0x00000020
709 #define HT_FLAG_INK_ABSORPTION_IDX2 0x00000040
710 #define HT_FLAG_INK_ABSORPTION_IDX3 0x00000060
712 #define HT_FLAG_HIGHEST_INK_ABSORPTION (HT_FLAG_INK_HIGH_ABSORPTION \
713 |HT_FLAG_INK_ABSORPTION_IDX3)
714 #define HT_FLAG_HIGHER_INK_ABSORPTION (HT_FLAG_INK_HIGH_ABSORPTION \
715 |HT_FLAG_INK_ABSORPTION_IDX2)
716 #define HT_FLAG_HIGH_INK_ABSORPTION (HT_FLAG_INK_HIGH_ABSORPTION \
717 |HT_FLAG_INK_ABSORPTION_IDX1)
718 #define HT_FLAG_NORMAL_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX0
719 #define HT_FLAG_LOW_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX1
720 #define HT_FLAG_LOWER_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX2
721 #define HT_FLAG_LOWEST_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX3
723 #define HT_BITMASKPALRGB (DWORD)'0BGR'
724 #define HT_SET_BITMASKPAL2RGB(pPal) (*((LPDWORD)(pPal)) = HT_BITMASKPALRGB)
725 #define HT_IS_BITMASKPALRGB(pPal) (*((LPDWORD)(pPal)) == (DWORD)0)
727 /* GDIINFO.ulPhysicalPixelCharacteristics constants */
728 #define PPC_DEFAULT 0x0
729 #define PPC_UNDEFINED 0x1
730 #define PPC_RGB_ORDER_VERTICAL_STRIPES 0x2
731 #define PPC_BGR_ORDER_VERTICAL_STRIPES 0x3
732 #define PPC_RGB_ORDER_HORIZONTAL_STRIPES 0x4
733 #define PPC_BGR_ORDER_HORIZONTAL_STRIPES 0x5
735 #define PPG_DEFAULT 0
738 typedef struct _GDIINFO
{
761 POINTL ptlPhysOffset
;
765 ULONG ulDevicePelsDPI
;
766 ULONG ulPrimaryOrder
;
767 ULONG ulHTPatternSize
;
768 ULONG ulHTOutputFormat
;
771 ULONG ulBltAlignment
;
772 ULONG ulPanningHorzRes
;
773 ULONG ulPanningVertRes
;
774 ULONG xPanningAlignment
;
775 ULONG yPanningAlignment
;
782 ULONG ulPhysicalPixelCharacteristics
;
783 ULONG ulPhysicalPixelGamma
;
784 } GDIINFO
, *PGDIINFO
;
786 /* PATHDATA.flags constants */
787 #define PD_BEGINSUBPATH 0x00000001
788 #define PD_ENDSUBPATH 0x00000002
789 #define PD_RESETSTYLE 0x00000004
790 #define PD_CLOSEFIGURE 0x00000008
791 #define PD_BEZIERS 0x00000010
792 #define PD_ALL (PD_BEGINSUBPATH \
798 typedef struct _PATHDATA
{
802 } PATHDATA
, *PPATHDATA
;
804 /* PATHOBJ.fl constants */
805 #define PO_BEZIERS 0x00000001
806 #define PO_ELLIPSE 0x00000002
807 #define PO_ALL_INTEGERS 0x00000004
808 #define PO_ENUM_AS_INTEGERS 0x00000008
810 typedef struct _PATHOBJ
{
815 typedef struct _GLYPHBITS
{
821 typedef union _GLYPHDEF
{
826 typedef struct _GLYPHPOS
{
830 } GLYPHPOS
, *PGLYPHPOS
;
832 typedef struct _GLYPHDATA
{
844 typedef struct _IFIEXTRA
{
848 PTRDIFF dpDesignVector
;
850 ULONG aulReserved
[1];
851 } IFIEXTRA
, *PIFIEXTRA
;
853 /* IFIMETRICS constants */
855 #define FM_VERSION_NUMBER 0x0
857 /* IFIMETRICS.fsType constants */
858 #define FM_TYPE_LICENSED 0x2
859 #define FM_READONLY_EMBED 0x4
860 #define FM_EDITABLE_EMBED 0x8
861 #define FM_NO_EMBEDDING FM_TYPE_LICENSED
863 /* IFIMETRICS.flInfo constants */
864 #define FM_INFO_TECH_TRUETYPE 0x00000001
865 #define FM_INFO_TECH_BITMAP 0x00000002
866 #define FM_INFO_TECH_STROKE 0x00000004
867 #define FM_INFO_TECH_OUTLINE_NOT_TRUETYPE 0x00000008
868 #define FM_INFO_ARB_XFORMS 0x00000010
869 #define FM_INFO_1BPP 0x00000020
870 #define FM_INFO_4BPP 0x00000040
871 #define FM_INFO_8BPP 0x00000080
872 #define FM_INFO_16BPP 0x00000100
873 #define FM_INFO_24BPP 0x00000200
874 #define FM_INFO_32BPP 0x00000400
875 #define FM_INFO_INTEGER_WIDTH 0x00000800
876 #define FM_INFO_CONSTANT_WIDTH 0x00001000
877 #define FM_INFO_NOT_CONTIGUOUS 0x00002000
878 #define FM_INFO_TECH_MM 0x00004000
879 #define FM_INFO_RETURNS_OUTLINES 0x00008000
880 #define FM_INFO_RETURNS_STROKES 0x00010000
881 #define FM_INFO_RETURNS_BITMAPS 0x00020000
882 #define FM_INFO_DSIG 0x00040000
883 #define FM_INFO_RIGHT_HANDED 0x00080000
884 #define FM_INFO_INTEGRAL_SCALING 0x00100000
885 #define FM_INFO_90DEGREE_ROTATIONS 0x00200000
886 #define FM_INFO_OPTICALLY_FIXED_PITCH 0x00400000
887 #define FM_INFO_DO_NOT_ENUMERATE 0x00800000
888 #define FM_INFO_ISOTROPIC_SCALING_ONLY 0x01000000
889 #define FM_INFO_ANISOTROPIC_SCALING_ONLY 0x02000000
890 #define FM_INFO_TECH_CFF 0x04000000
891 #define FM_INFO_FAMILY_EQUIV 0x08000000
892 #define FM_INFO_DBCS_FIXED_PITCH 0x10000000
893 #define FM_INFO_NONNEGATIVE_AC 0x20000000
894 #define FM_INFO_IGNORE_TC_RA_ABLE 0x40000000
895 #define FM_INFO_TECH_TYPE1 0x80000000
897 #define MAXCHARSETS 16
899 /* IFIMETRICS.ulPanoseCulture constants */
900 #define FM_PANOSE_CULTURE_LATIN 0x0
902 typedef struct _IFIMETRICS
{
905 PTRDIFF dpwszFamilyName
;
906 PTRDIFF dpwszStyleName
;
907 PTRDIFF dpwszFaceName
;
908 PTRDIFF dpwszUniqueName
;
915 BYTE jWinPitchAndFamily
;
922 FWORD fwdWinAscender
;
923 FWORD fwdWinDescender
;
924 FWORD fwdMacAscender
;
925 FWORD fwdMacDescender
;
927 FWORD fwdTypoAscender
;
928 FWORD fwdTypoDescender
;
929 FWORD fwdTypoLineGap
;
930 FWORD fwdAveCharWidth
;
934 FWORD fwdSubscriptXSize
;
935 FWORD fwdSubscriptYSize
;
936 FWORD fwdSubscriptXOffset
;
937 FWORD fwdSubscriptYOffset
;
938 FWORD fwdSuperscriptXSize
;
939 FWORD fwdSuperscriptYSize
;
940 FWORD fwdSuperscriptXOffset
;
941 FWORD fwdSuperscriptYOffset
;
942 FWORD fwdUnderscoreSize
;
943 FWORD fwdUnderscorePosition
;
944 FWORD fwdStrikeoutSize
;
945 FWORD fwdStrikeoutPosition
;
960 ULONG ulPanoseCulture
;
965 } IFIMETRICS
, *PIFIMETRICS
;
968 #define LA_GEOMETRIC 0x00000001
969 #define LA_ALTERNATE 0x00000002
970 #define LA_STARTGAP 0x00000004
971 #define LA_STYLED 0x00000008
973 /* LINEATTRS.iJoin */
974 #define JOIN_ROUND 0L
975 #define JOIN_BEVEL 1L
976 #define JOIN_MITER 2L
978 /* LINEATTRS.iEndCap */
979 #define ENDCAP_ROUND 0L
980 #define ENDCAP_SQUARE 1L
981 #define ENDCAP_BUTT 2L
983 typedef struct _LINEATTRS
{
991 FLOAT_LONG elStyleState
;
992 } LINEATTRS
, *PLINEATTRS
;
994 typedef struct _PALOBJ
{
998 typedef struct _PERBANDINFO
{
999 BOOL bRepeatThisBand
;
1003 } PERBANDINFO
, *PPERBANDINFO
;
1005 /* STROBJ.flAccel constants */
1006 #define SO_FLAG_DEFAULT_PLACEMENT 0x00000001
1007 #define SO_HORIZONTAL 0x00000002
1008 #define SO_VERTICAL 0x00000004
1009 #define SO_REVERSED 0x00000008
1010 #define SO_ZERO_BEARINGS 0x00000010
1011 #define SO_CHAR_INC_EQUAL_BM_BASE 0x00000020
1012 #define SO_MAXEXT_EQUAL_BM_SIDE 0x00000040
1013 #define SO_DO_NOT_SUBSTITUTE_DEVICE_FONT 0x00000080
1014 #define SO_GLYPHINDEX_TEXTOUT 0x00000100
1015 #define SO_ESC_NOT_ORIENT 0x00000200
1016 #define SO_DXDY 0x00000400
1017 #define SO_CHARACTER_EXTRA 0x00000800
1018 #define SO_BREAK_EXTRA 0x00001000
1020 typedef struct _STROBJ
{
1029 typedef struct _SURFACEALIGNMENT
{
1032 DWORD dwStartAlignment
;
1033 DWORD dwPitchAlignment
;
1044 } SURFACEALIGNMENT
, *LPSURFACEALIGNMENT
;
1046 /* SURFOBJ.iType constants */
1047 #define STYPE_BITMAP 0L
1048 #define STYPE_DEVICE 1L
1049 #define STYPE_DEVBITMAP 3L
1051 /* SURFOBJ.fjBitmap constants */
1052 #define BMF_TOPDOWN 0x0001
1053 #define BMF_NOZEROINIT 0x0002
1054 #define BMF_DONTCACHE 0x0004
1055 #define BMF_USERMEM 0x0008
1056 #define BMF_KMSECTION 0x0010
1057 #define BMF_NOTSYSMEM 0x0020
1058 #define BMF_WINDOW_BLT 0x0040
1059 #define BMF_UMPDMEM 0x0080
1060 #define BMF_RESERVED 0xFF00
1062 typedef struct _SURFOBJ
{
1073 ULONG iBitmapFormat
;
1078 typedef struct _TYPE1_FONT
{
1084 typedef struct _WNDOBJ
{
1091 typedef struct _XFORML
{
1100 typedef struct _XFORMOBJ
{
1104 /* XLATEOBJ.flXlate constants */
1105 #define XO_TRIVIAL 0x00000001
1106 #define XO_TABLE 0x00000002
1107 #define XO_TO_MONO 0x00000004
1108 #define XO_FROM_CMYK 0x00000008
1109 #define XO_DEVICE_ICM 0x00000010
1110 #define XO_HOST_ICM 0x00000020
1112 typedef struct _XLATEOBJ
{
1121 typedef VOID
APIENTRY (CALLBACK
*WNDOBJCHANGEPROC
)(
1129 BRUSHOBJ_hGetColorTransform(
1135 BRUSHOBJ_pvAllocRbrush(
1142 BRUSHOBJ_pvGetRbrush(
1148 BRUSHOBJ_ulGetBrushColor(
1159 /* CLIPOBJ_cEnumStart.iType constants */
1160 #define CT_RECTANGLES 0L
1162 /* CLIPOBJ_cEnumStart.iDirection constants */
1163 #define CD_RIGHTDOWN 0x00000000
1164 #define CD_LEFTDOWN 0x00000001
1165 #define CD_LEFTWARDS 0x00000001
1166 #define CD_RIGHTUP 0x00000002
1167 #define CD_UPWARDS 0x00000002
1168 #define CD_LEFTUP 0x00000003
1169 #define CD_ANY 0x00000004
1178 IN ULONG iDirection
,
1190 EngAcquireSemaphore(
1191 IN HSEMAPHORE hsem
);
1193 #define FL_ZERO_MEMORY 0x00000001
1194 #define FL_NONPAGED_MEMORY 0x00000002
1207 EngAllocPrivateUserMem(
1208 IN PDD_SURFACE_LOCAL psl
,
1223 IN SURFOBJ
*psoDest
,
1229 IN BLENDOBJ
*pBlendObj
);
1231 /* EngAssociateSurface.flHooks constants */
1232 #define HOOK_BITBLT 0x00000001
1233 #define HOOK_STRETCHBLT 0x00000002
1234 #define HOOK_PLGBLT 0x00000004
1235 #define HOOK_TEXTOUT 0x00000008
1236 #define HOOK_PAINT 0x00000010
1237 #define HOOK_STROKEPATH 0x00000020
1238 #define HOOK_FILLPATH 0x00000040
1239 #define HOOK_STROKEANDFILLPATH 0x00000080
1240 #define HOOK_LINETO 0x00000100
1241 #define HOOK_COPYBITS 0x00000400
1242 #define HOOK_MOVEPANNING 0x00000800
1243 #define HOOK_SYNCHRONIZE 0x00001000
1244 #define HOOK_STRETCHBLTROP 0x00002000
1245 #define HOOK_SYNCHRONIZEACCESS 0x00004000
1246 #define HOOK_TRANSPARENTBLT 0x00008000
1247 #define HOOK_ALPHABLEND 0x00010000
1248 #define HOOK_GRADIENTFILL 0x00020000
1249 #define HOOK_FLAGS 0x0003b5ff
1254 EngAssociateSurface(
1265 IN SURFOBJ
*psoMask
,
1270 IN POINTL
*pptlMask
,
1272 IN POINTL
*pptlBrush
,
1295 /* EngControlSprites.fl constants */
1296 #define ECS_TEARDOWN 0x00000001
1297 #define ECS_REDRAW 0x00000002
1310 OUT SURFOBJ
*psoDest
,
1315 IN POINTL
*pptlSrc
);
1336 EngCreateDeviceBitmap(
1339 IN ULONG iFormatCompat
);
1344 EngCreateDeviceSurface(
1347 ULONG iFormatCompat
);
1355 FREEOBJPROC pFreeObjProc
,
1363 OUT PEVENT
*ppEvent
);
1365 /* EngCreatePalette.iMode constants */
1366 #define PAL_INDEXED 0x00000001
1367 #define PAL_BITFIELDS 0x00000002
1368 #define PAL_RGB 0x00000004
1369 #define PAL_BGR 0x00000008
1370 #define PAL_CMYK 0x00000010
1378 IN ULONG
*pulColors
,
1395 /* EngCreateWnd.fl constants */
1396 #define WO_RGN_CLIENT_DELTA 0x00000001
1397 #define WO_RGN_CLIENT 0x00000002
1398 #define WO_RGN_SURFACE_DELTA 0x00000004
1399 #define WO_RGN_SURFACE 0x00000008
1400 #define WO_RGN_UPDATE_ALL 0x00000010
1401 #define WO_RGN_WINDOW 0x00000020
1402 #define WO_DRAW_NOTIFY 0x00000040
1403 #define WO_SPRITE_NOTIFY 0x00000080
1404 #define WO_RGN_DESKTOP_COORD 0x00000100
1412 WNDOBJCHANGEPROC pfn
,
1426 IN PCHAR StandardPrefix
,
1427 IN PCHAR DebugMessage
,
1454 IN LPWSTR pwszFileName
);
1471 EngDeleteSafeSemaphore(
1472 IN OUT ENGSAFESEMAPHORE
*pssem
);
1478 IN OUT HSEMAPHORE hsem
);
1497 IN DWORD dwIoControlCode
,
1498 IN LPVOID lpInBuffer
,
1499 IN DWORD nInBufferSize
,
1500 IN OUT LPVOID lpOutBuffer
,
1501 IN DWORD nOutBufferSize
,
1502 OUT LPDWORD lpBytesReturned
);
1521 OUT LPDWORD pcbNeeded
,
1522 OUT LPDWORD pcReturned
);
1540 IN POINTL
*pptlBrushOrg
,
1542 IN FLONG flOptions
);
1547 EngFindImageProcAddress(
1549 IN LPSTR lpProcName
);
1558 OUT PULONG pulSize
);
1564 IN ULONG FastCheckSum
,
1567 /* EngFntCacheFault.iFaultMode constants */
1568 #define ENG_FNT_CACHE_READ_FAULT 0x00000001
1569 #define ENG_FNT_CACHE_WRITE_FAULT 0x00000002
1575 IN ULONG ulFastCheckSum
,
1576 IN ULONG iFaultMode
);
1582 IN ULONG FastCheckSum
,
1583 OUT ULONG
*pulSize
);
1600 EngFreePrivateUserMem(
1601 IN PDD_SURFACE_LOCAL psl
,
1613 EngGetCurrentCodePage(
1614 OUT PUSHORT OemCodePage
,
1615 OUT PUSHORT AnsiCodePage
);
1620 EngGetCurrentProcessId(
1626 EngGetCurrentThreadId(
1638 EngGetFileChangeTime(
1640 OUT LARGE_INTEGER
*pChangeTime
);
1647 OUT
WCHAR (*pDest
)[MAX_PATH
+1]);
1654 IN LPWSTR pFormName
,
1658 OUT LPDWORD pcbNeeded
);
1672 OUT LPBYTE pPrinter
,
1674 OUT LPDWORD pcbNeeded
);
1681 IN LPWSTR pValueName
,
1685 OUT LPDWORD pcbNeeded
);
1690 EngGetPrinterDataFileName(
1696 EngGetPrinterDriver(
1698 IN LPWSTR pEnvironment
,
1700 OUT BYTE
*lpbDrvInfo
,
1702 OUT DWORD
*pcbNeeded
);
1707 EngGetProcessHandle(
1713 EngGetType1FontList(
1715 OUT TYPE1_FONT
*pType1Buffer
,
1716 IN ULONG cjType1Buffer
,
1717 OUT PULONG pulLocalFonts
,
1718 OUT PULONG pulRemoteFonts
,
1719 OUT LARGE_INTEGER
*pLastModified
);
1725 IN SURFOBJ
*psoDest
,
1728 IN TRIVERTEX
*pVertex
,
1732 IN RECTL
*prclExtents
,
1733 IN POINTL
*pptlDitherOrg
,
1736 /* EngHangNotification return values */
1737 #define EHN_RESTORED 0x00000000
1738 #define EHN_ERROR 0x00000001
1743 EngHangNotification(
1750 EngInitializeSafeSemaphore(
1751 OUT ENGSAFESEMAPHORE
*pssem
);
1756 EngIsSemaphoreOwned(
1757 IN HSEMAPHORE hsem
);
1762 EngIsSemaphoreOwnedByCurrentThread(
1763 IN HSEMAPHORE hsem
);
1783 IN LPWSTR pwszDriver
);
1794 EngLoadModuleForWrite(
1796 IN ULONG cjSizeOfModule
);
1801 EngLockDirectDrawSurface(
1802 IN HANDLE hSurface
);
1827 IN HANDLE hUserObject
,
1830 IN PVOID Reserved3
);
1838 OUT ULONG_PTR
*piFile
);
1866 EngMarkBandingSurface(
1869 /* EngModifySurface.flSurface constants */
1870 #define MS_NOTSYSTEMMEMORY 0x00000001
1871 #define MS_SHAREDACCESS 0x00000002
1884 IN VOID
*pvReserved
);
1906 EngMultiByteToUnicodeN(
1907 OUT LPWSTR UnicodeString
,
1908 IN ULONG MaxBytesInUnicodeString
,
1909 OUT PULONG BytesInUnicodeString
,
1910 IN PCHAR MultiByteString
,
1911 IN ULONG BytesInMultiByteString
);
1916 EngMultiByteToWideChar(
1918 OUT LPWSTR WideCharString
,
1919 IN INT BytesInWideCharString
,
1920 IN LPSTR MultiByteString
,
1921 IN INT BytesInMultiByteString
);
1930 IN POINTL
*pptlBrushOrg
,
1942 IN COLORADJUSTMENT
*pca
,
1943 IN POINTL
*pptlBrushOrg
,
1955 IN ULONG Alignment
);
1960 EngProbeForReadAndWrite(
1963 IN ULONG Alignment
);
1965 typedef enum _ENG_DEVICE_ATTRIBUTE
{
1967 QDA_ACCELERATION_LEVEL
1968 } ENG_DEVICE_ATTRIBUTE
;
1973 EngQueryDeviceAttribute(
1975 IN ENG_DEVICE_ATTRIBUTE devAttr
,
1979 OUT ULONG ulOutSize
);
1984 EngQueryFileTimeStamp(
1991 OUT PENG_TIME_FIELDS ptf
);
2000 OUT ULONG
*pulColors
);
2005 EngQueryPerformanceCounter(
2006 OUT LONGLONG
*pPerformanceCount
);
2011 EngQueryPerformanceFrequency(
2012 OUT LONGLONG
*pFrequency
);
2014 typedef enum _ENG_SYSTEM_ATTRIBUTE
{
2015 EngProcessorFeature
= 1,
2016 EngNumberOfProcessors
,
2017 EngOptimumAvailableUserMemory
,
2018 EngOptimumAvailableSystemMemory
,
2019 } ENG_SYSTEM_ATTRIBUTE
;
2021 #define QSA_MMX 0x00000100
2022 #define QSA_SSE 0x00002000
2023 #define QSA_3DNOW 0x00004000
2028 EngQuerySystemAttribute(
2029 IN ENG_SYSTEM_ATTRIBUTE CapNum
,
2030 OUT PDWORD pCapability
);
2041 EngReleaseSemaphore(
2042 IN HSEMAPHORE hsem
);
2047 EngRestoreFloatingPointState(
2053 EngSaveFloatingPointState(
2055 IN ULONG cjBufferSize
);
2081 IN SURFOBJ
*psoMask
,
2082 IN SURFOBJ
*psoColor
,
2096 IN SURFOBJ
*psoMask
,
2097 IN SURFOBJ
*psoColor
,
2108 IN LPBYTE lpbPrinterData
,
2109 IN DWORD cjPrinterData
);
2111 typedef int (CDECL
*SORTCOMP
)(const void *pv1
, const void *pv2
);
2120 IN SORTCOMP pfnComp
);
2126 IN SURFOBJ
*psoDest
,
2128 IN SURFOBJ
*psoMask
,
2131 IN COLORADJUSTMENT
*pca
,
2132 IN POINTL
*pptlHTOrg
,
2135 IN POINTL
*pptlMask
,
2142 IN SURFOBJ
*psoDest
,
2144 IN SURFOBJ
*psoMask
,
2147 IN COLORADJUSTMENT
*pca
,
2148 IN POINTL
*pptlHTOrg
,
2151 IN POINTL
*pptlMask
,
2159 EngStrokeAndFillPath(
2164 IN BRUSHOBJ
*pboStroke
,
2165 IN LINEATTRS
*plineattrs
,
2166 IN BRUSHOBJ
*pboFill
,
2167 IN POINTL
*pptlBrushOrg
,
2169 IN FLONG flOptions
);
2180 IN POINTL
*pptlBrushOrg
,
2181 IN LINEATTRS
*plineattrs
,
2192 IN RECTL
*prclExtra
,
2193 IN RECTL
*prclOpaque
,
2194 IN BRUSHOBJ
*pboFore
,
2195 IN BRUSHOBJ
*pboOpaque
,
2209 IN ULONG iTransColor
,
2210 IN ULONG ulReserved
);
2215 EngUnicodeToMultiByteN(
2216 OUT PCHAR MultiByteString
,
2217 IN ULONG MaxBytesInMultiByteString
,
2218 OUT PULONG BytesInMultiByteString
,
2219 IN PWSTR UnicodeString
,
2220 IN ULONG BytesInUnicodeString
);
2231 EngUnlockDirectDrawSurface(
2232 IN PDD_SURFACE_LOCAL pSurface
);
2256 IN ULONG_PTR iFile
);
2268 IN ULONG_PTR iFile
);
2279 EngWaitForSingleObject(
2281 IN PLARGE_INTEGER pTimeOut
);
2286 EngWideCharToMultiByte(
2288 IN LPWSTR WideCharString
,
2289 IN INT BytesInWideCharString
,
2290 OUT LPSTR MultiByteString
,
2291 IN INT BytesInMultiByteString
);
2300 OUT LPDWORD pcWritten
);
2306 IN OUT PFLOATOBJ pf
,
2313 IN OUT PFLOATOBJ pf
,
2320 IN OUT PFLOATOBJ pf
,
2327 IN OUT PFLOATOBJ pf
,
2334 IN OUT PFLOATOBJ pf
,
2341 IN OUT PFLOATOBJ pf
,
2373 FLOATOBJ_GreaterThan(
2380 FLOATOBJ_GreaterThanLong(
2394 FLOATOBJ_LessThanLong(
2402 IN OUT PFLOATOBJ pf
,
2409 IN OUT PFLOATOBJ pf
,
2416 IN OUT PFLOATOBJ pf
,
2423 IN OUT PFLOATOBJ pf
);
2443 IN OUT PFLOATOBJ pf
,
2450 IN OUT PFLOATOBJ pf
,
2457 IN OUT PFLOATOBJ pf
,
2463 FONTOBJ_cGetAllGlyphHandles(
2475 OUT PVOID
*ppvGlyph
);
2492 FONTOBJ_pjOpenTypeTablePointer(
2495 OUT ULONG
*pcjTable
);
2500 FONTOBJ_pQueryGlyphAttrs(
2507 FONTOBJ_pvTrueTypeFontFile(
2509 OUT ULONG
*pcjFile
);
2514 FONTOBJ_pwszFontFilePaths(
2521 FONTOBJ_pxoGetXform(
2535 HeapVidMemAllocAligned(
2536 IN LPVIDMEM lpVidMem
,
2539 IN LPSURFACEALIGNMENT lpAlignment
,
2540 OUT LPLONG lpNewPitch
);
2545 HT_ComputeRGBGammaTable(
2546 IN USHORT GammaTableEntries
,
2547 IN USHORT GammaTableType
,
2549 IN USHORT GreenGamma
,
2550 IN USHORT BlueGamma
,
2551 OUT LPBYTE pGammaTable
);
2556 HT_Get8BPPFormatPalette(
2557 OUT LPPALETTEENTRY pPaletteEntry
,
2559 IN USHORT GreenGamma
,
2560 IN USHORT BlueGamma
);
2565 HT_Get8BPPMaskPalette(
2566 IN OUT LPPALETTEENTRY pPaletteEntry
,
2567 IN BOOL Use8BPPMaskPal
,
2570 IN USHORT GreenGamma
,
2571 IN USHORT BlueGamma
);
2576 HTUI_DeviceColorAdjustment(
2577 IN LPSTR pDeviceName
,
2578 OUT PDEVHTADJDATA pDevHTAdjData
);
2587 OUT ULONG
*pulColors
);
2592 PATHOBJ_bCloseFigure(
2605 PATHOBJ_bEnumClipLines(
2620 PATHOBJ_bPolyBezierTo(
2628 PATHOBJ_bPolyLineTo(
2642 PATHOBJ_vEnumStartClipLines(
2653 OUT PRECTFX prectfx
);
2661 OUT PGLYPHPOS
*ppgpos
);
2666 STROBJ_bEnumPositionsOnly(
2669 OUT PGLYPHPOS
*ppgpos
);
2674 STROBJ_bGetAdvanceWidths(
2678 OUT POINTQF
*pptqD
);
2683 STROBJ_dwGetCodePage(
2689 STROBJ_fxBreakExtra(
2695 STROBJ_fxCharacterExtra(
2725 IN ULONG iDirection
,
2731 WNDOBJ_vSetConsumer(
2733 IN PVOID pvConsumer
);
2735 /* XFORMOBJ_bApplyXform.iMode constants */
2737 #define XF_INV_LTOL 1L
2739 #define XF_INV_FXTOL 3L
2744 XFORMOBJ_bApplyXform(
2754 XFORMOBJ_iGetFloatObjXform(
2756 OUT FLOATOBJ_XFORM
*pxfo
);
2763 OUT XFORML
*pxform
);
2765 /* XLATEOBJ_cGetPalette.iPal constants */
2766 #define XO_SRCPALETTE 1
2767 #define XO_DESTPALETTE 2
2768 #define XO_DESTDCPALETTE 3
2769 #define XO_SRCBITFIELDS 4
2770 #define XO_DESTBITFIELDS 5
2775 XLATEOBJ_cGetPalette(
2784 XLATEOBJ_hGetColorTransform(
2802 /* Graphics Driver Functions */
2807 IN SURFOBJ
*psoDest
,
2813 IN BLENDOBJ
*pBlendObj
);
2826 IN SURFOBJ
*psoMask
,
2831 IN POINTL
*pptlMask
,
2833 IN POINTL
*pptlBrush
,
2845 IN SURFOBJ
*psoDest
,
2850 IN POINTL
*pptlSrc
);
2854 DrvCreateDeviceBitmap(
2861 DrvDeleteDeviceBitmap(
2867 DD_DIRECTDRAW_GLOBAL
*pDirectDraw
,
2868 DD_SURFACE_LOCAL
*pSurface
);
2872 DrvDescribePixelFormat(
2874 IN LONG iPixelFormat
,
2876 OUT PIXELFORMATDESCRIPTOR
*ppfd
);
2898 #define DM_DEFAULT 0x00000001
2899 #define DM_MONOCHROME 0x00000002
2922 IN ULONG iEngineVersion
,
2924 OUT DRVENABLEDATA
*pded
);
2930 IN LPWSTR pwszLogAddress
,
2932 OUT HSURF
*phsurfPatterns
,
2934 OUT ULONG
*pdevcaps
,
2938 IN LPWSTR pwszDeviceName
,
2946 /* DrvEndDoc.fl constants */
2947 #define ED_ABORTDOC 0x00000001
2972 IN POINTL
*pptlBrushOrg
,
2974 IN FLONG flOptions
);
2993 /* DrvGetGlyphMode return values */
2994 #define FO_HGLYPHS 0L
2995 #define FO_GLYPHBITS 1L
2996 #define FO_PATHOBJ 2L
3020 IN SURFOBJ
*psoDest
,
3023 IN TRIVERTEX
*pVertex
,
3027 IN RECTL
*prclExtents
,
3028 IN POINTL
*pptlDitherOrg
,
3033 DrvIcmCheckBitmapBits(
3035 IN HANDLE hColorTransform
,
3037 OUT PBYTE paResults
);
3041 DrvIcmCreateColorTransform(
3043 IN LPLOGCOLORSPACEW pLogColorSpace
,
3044 IN PVOID pvSourceProfile
,
3045 IN ULONG cjSourceProfile
,
3046 IN PVOID pvDestProfile
,
3047 IN ULONG cjDestProfile
,
3048 IN PVOID pvTargetProfile
,
3049 IN ULONG cjTargetProfile
,
3050 IN DWORD dwReserved
);
3054 DrvIcmDeleteColorTransform(
3056 IN HANDLE hcmXform
);
3058 /* DrvIcmSetDeviceGammaRamp.iFormat constants */
3059 #define IGRF_RGB_256BYTES 0x00000000
3060 #define IGRF_RGB_256WORDS 0x00000001
3064 DrvIcmSetDeviceGammaRamp(
3091 ULONG ulFastCheckSum
);
3120 IN FLONG flReserved
);
3128 IN POINTL
*pptlBrushOrg
,
3139 IN COLORADJUSTMENT
*pca
,
3140 IN POINTL
*pptlBrushOrg
,
3146 /* DrvQueryAdvanceWidths.iMode constants */
3147 #define QAW_GETWIDTHS 0
3148 #define QAW_GETEASYWIDTHS 1
3152 DrvQueryAdvanceWidths(
3160 /* DrvQueryDeviceSupport.iType constants */
3161 #define QDS_CHECKJPEGFORMAT 0x00000000
3162 #define QDS_CHECKPNGFORMAT 0x00000001
3166 DrvQueryDeviceSupport(
3176 /* DrvQueryDriverInfo.dwMode constants */
3177 #define DRVQUERY_USERMODE 0x00000001
3195 /* DrvQueryFontCaps.pulCaps constants */
3196 #define QC_OUTLINES 0x00000001
3197 #define QC_1BIT 0x00000002
3198 #define QC_4BIT 0x00000004
3200 #define QC_FONTDRIVERCAPS (QC_OUTLINES | QC_1BIT | QC_4BIT)
3206 OUT ULONG
*pulCaps
);
3208 /* DrvQueryFontData.iMode constants */
3209 #define QFD_GLYPHANDBITMAP 1L
3210 #define QFD_GLYPHANDOUTLINE 2L
3211 #define QFD_MAXEXTENTS 3L
3212 #define QFD_TT_GLYPHANDBITMAP 4L
3213 #define QFD_TT_GRAY1_BITMAP 5L
3214 #define QFD_TT_GRAY2_BITMAP 6L
3215 #define QFD_TT_GRAY4_BITMAP 8L
3216 #define QFD_TT_GRAY8_BITMAP 9L
3218 #define QFD_TT_MONO_BITMAP QFD_TT_GRAY1_BITMAP
3227 IN OUT GLYPHDATA
*pgd
,
3231 /* DrvQueryFontFile.ulMode constants */
3232 #define QFF_DESCRIPTION 0x00000001
3233 #define QFF_NUMFACES 0x00000002
3243 /* DrvQueryFontTree.iMode constants */
3244 #define QFT_UNICODE 0L
3245 #define QFT_LIGATURES 1L
3246 #define QFT_KERNPAIRS 2L
3247 #define QFT_GLYPHSET 3L
3266 DrvQueryPerBandInfo(
3268 IN OUT PERBANDINFO
*pbi
);
3270 /* DrvQueryTrueTypeOutline.bMetricsOnly constants */
3271 #define TTO_METRICS_ONLY 0x00000001
3272 #define TTO_QUBICS 0x00000002
3273 #define TTO_UNHINTED 0x00000004
3277 DrvQueryTrueTypeOutline(
3281 IN BOOL bMetricsOnly
,
3282 IN GLYPHDATA
*pgldt
,
3284 OUT TTPOLYGONHEADER
*ppoly
);
3288 DrvQueryTrueTypeTable(
3295 OUT PBYTE
*ppjTable
,
3296 OUT ULONG
*pcjTable
);
3298 /* DrvRealizeBrush.iHatch constants */
3299 #define RB_DITHERCOLOR 0x80000000L
3301 #define HS_DDI_MAX 6
3307 IN SURFOBJ
*psoTarget
,
3308 IN SURFOBJ
*psoPattern
,
3309 IN SURFOBJ
*psoMask
,
3313 /* DrvResetDevice return values */
3314 #define DRD_SUCCESS 0
3329 /* DrvSaveScreenBits.iMode constants */
3330 #define SS_SAVE 0x00000000
3331 #define SS_RESTORE 0x00000001
3332 #define SS_FREE 0x00000002
3360 IN LONG iPixelFormat
,
3363 /* DrvSetPointerShape return values */
3364 #define SPS_ERROR 0x00000000
3365 #define SPS_DECLINE 0x00000001
3366 #define SPS_ACCEPT_NOEXCLUDE 0x00000002
3367 #define SPS_ACCEPT_EXCLUDE 0x00000003
3368 #define SPS_ACCEPT_SYNCHRONOUS 0x00000004
3370 /* DrvSetPointerShape.fl constants */
3371 #define SPS_CHANGE 0x00000001L
3372 #define SPS_ASYNCCHANGE 0x00000002L
3373 #define SPS_ANIMATESTART 0x00000004L
3374 #define SPS_ANIMATEUPDATE 0x00000008L
3375 #define SPS_ALPHA 0x00000010L
3376 #define SPS_LENGTHMASK 0x00000F00L
3377 #define SPS_FREQMASK 0x000FF000L
3383 IN SURFOBJ
*psoMask
,
3384 IN SURFOBJ
*psoColor
,
3403 IN LPWSTR pwszDocName
,
3414 IN SURFOBJ
*psoDest
,
3416 IN SURFOBJ
*psoMask
,
3419 IN COLORADJUSTMENT
*pca
,
3420 IN POINTL
*pptlHTOrg
,
3423 IN POINTL
*pptlMask
,
3429 IN SURFOBJ
*psoDest
,
3431 IN SURFOBJ
*psoMask
,
3434 IN COLORADJUSTMENT
*pca
,
3435 IN POINTL
*pptlHTOrg
,
3438 IN POINTL
*pptlMask
,
3445 DrvStrokeAndFillPath(
3450 IN BRUSHOBJ
*pboStroke
,
3451 IN LINEATTRS
*plineattrs
,
3452 IN BRUSHOBJ
*pboFill
,
3453 IN POINTL
*pptlBrushOrg
,
3455 IN FLONG flOptions
);
3465 IN POINTL
*pptlBrushOrg
,
3466 IN LINEATTRS
*plineattrs
,
3481 /* DrvSynchronizeSurface.fl constants */
3482 #define DSS_TIMER_EVENT 0x00000001
3483 #define DSS_FLUSH_EVENT 0x00000002
3487 DrvSynchronizeSurface(
3499 IN RECTL
*prclExtra
,
3500 IN RECTL
*prclOpaque
,
3501 IN BRUSHOBJ
*pboFore
,
3502 IN BRUSHOBJ
*pboOpaque
,
3515 IN ULONG iTransColor
,
3516 IN ULONG ulReserved
);
3521 IN ULONG_PTR iFile
);
3523 /* WNDOBJCHANGEPROC.fl constants */
3524 #define WOC_RGN_CLIENT_DELTA 0x00000001
3525 #define WOC_RGN_CLIENT 0x00000002
3526 #define WOC_RGN_SURFACE_DELTA 0x00000004
3527 #define WOC_RGN_SURFACE 0x00000008
3528 #define WOC_CHANGED 0x00000010
3529 #define WOC_DELETE 0x00000020
3530 #define WOC_DRAWN 0x00000040
3531 #define WOC_SPRITE_OVERLAP 0x00000080
3532 #define WOC_SPRITE_NO_OVERLAP 0x00000100
3534 typedef VOID APIENTRY
3535 (CALLBACK
* WNDOBJCHANGEPROC
)(
3540 typedef BOOL APIENTRY
3541 (*PFN_DrvAlphaBlend
)(
3542 IN SURFOBJ
*psoDest
,
3548 IN BLENDOBJ
*pBlendObj
);
3550 typedef BOOL APIENTRY
3551 (*PFN_DrvAssertMode
)(
3555 typedef BOOL APIENTRY
3559 IN SURFOBJ
*psoMask
,
3564 IN POINTL
*pptlMask
,
3566 IN POINTL
*pptlBrush
,
3569 typedef VOID APIENTRY
3570 (*PFN_DrvCompletePDEV
)(
3574 typedef BOOL APIENTRY
3576 IN SURFOBJ
*psoDest
,
3581 IN POINTL
*pptlSrc
);
3583 typedef HBITMAP APIENTRY
3584 (*PFN_DrvCreateDeviceBitmap
)(
3589 typedef VOID APIENTRY
3590 (*PFN_DrvDeleteDeviceBitmap
)(
3593 typedef HBITMAP APIENTRY
3594 (*PFN_DrvDeriveSurface
)(
3595 DD_DIRECTDRAW_GLOBAL
*pDirectDraw
,
3596 DD_SURFACE_LOCAL
*pSurface
);
3598 typedef LONG APIENTRY
3599 (*PFN_DrvDescribePixelFormat
)(
3601 IN LONG iPixelFormat
,
3603 OUT PIXELFORMATDESCRIPTOR
*ppfd
);
3605 typedef VOID APIENTRY
3606 (*PFN_DrvDestroyFont
)(
3609 typedef VOID APIENTRY
3610 (*PFN_DrvDisableDriver
)(
3613 typedef VOID APIENTRY
3614 (*PFN_DrvDisablePDEV
)(
3617 typedef VOID APIENTRY
3618 (*PFN_DrvDisableSurface
)(
3621 typedef ULONG APIENTRY
3622 (*PFN_DrvDitherColor
)(
3628 typedef ULONG APIENTRY
3629 (*PFN_DrvDrawEscape
)(
3637 typedef BOOL APIENTRY
3638 (*PFN_DrvEnableDriver
)(
3639 IN ULONG iEngineVersion
,
3641 OUT DRVENABLEDATA
*pded
);
3643 typedef DHPDEV APIENTRY
3644 (*PFN_DrvEnablePDEV
)(
3646 IN LPWSTR pwszLogAddress
,
3648 OUT HSURF
*phsurfPatterns
,
3650 OUT ULONG
*pdevcaps
,
3654 IN LPWSTR pwszDeviceName
,
3657 typedef HSURF APIENTRY
3658 (*PFN_DrvEnableSurface
)(
3661 typedef BOOL APIENTRY
3666 typedef ULONG APIENTRY
3675 typedef BOOL APIENTRY
3681 IN POINTL
*pptlBrushOrg
,
3683 IN FLONG flOptions
);
3685 typedef ULONG APIENTRY
3686 (*PFN_DrvFontManagement
)(
3695 typedef VOID APIENTRY
3700 typedef ULONG APIENTRY
3701 (*PFN_DrvGetGlyphMode
)(
3705 typedef ULONG APIENTRY
3711 typedef PVOID APIENTRY
3712 (*PFN_DrvGetTrueTypeFile
)(
3716 typedef BOOL APIENTRY
3717 (*PFN_DrvGradientFill
)(
3718 IN SURFOBJ
*psoDest
,
3721 IN TRIVERTEX
*pVertex
,
3725 IN RECTL
*prclExtents
,
3726 IN POINTL
*pptlDitherOrg
,
3729 typedef BOOL APIENTRY
3730 (*PFN_DrvIcmCheckBitmapBits
)(
3732 IN HANDLE hColorTransform
,
3734 OUT PBYTE paResults
);
3736 typedef HANDLE APIENTRY
3737 (*PFN_DrvIcmCreateColorTransform
)(
3739 IN LPLOGCOLORSPACEW pLogColorSpace
,
3740 IN PVOID pvSourceProfile
,
3741 IN ULONG cjSourceProfile
,
3742 IN PVOID pvDestProfile
,
3743 IN ULONG cjDestProfile
,
3744 IN PVOID pvTargetProfile
,
3745 IN ULONG cjTargetProfile
,
3746 IN DWORD dwReserved
);
3748 typedef BOOL APIENTRY
3749 (*PFN_DrvIcmDeleteColorTransform
)(
3751 IN HANDLE hcmXform
);
3753 typedef BOOL APIENTRY
3754 (*PFN_DrvIcmSetDeviceGammaRamp
)(
3759 typedef BOOL APIENTRY
3771 typedef ULONG_PTR APIENTRY
3772 (*PFN_DrvLoadFontFile
)(
3779 ULONG ulFastCheckSum
);
3781 typedef VOID APIENTRY
3782 (*PFN_DrvMovePointer
)(
3788 typedef BOOL APIENTRY
3793 typedef VOID APIENTRY
3799 typedef BOOL APIENTRY
3804 IN FLONG flReserved
);
3806 typedef BOOL APIENTRY
3811 IN POINTL
*pptlBrushOrg
,
3814 typedef BOOL APIENTRY
3821 IN COLORADJUSTMENT
*pca
,
3822 IN POINTL
*pptlBrushOrg
,
3828 typedef BOOL APIENTRY
3829 (*PFN_DrvQueryAdvanceWidths
)(
3837 typedef BOOL APIENTRY
3838 (*PFN_DrvQueryDeviceSupport
)(
3848 typedef BOOL APIENTRY
3849 (*PFN_DrvQueryDriverInfo
)(
3855 typedef PIFIMETRICS APIENTRY
3856 (*PFN_DrvQueryFont
)(
3862 typedef LONG APIENTRY
3863 (*PFN_DrvQueryFontCaps
)(
3865 OUT ULONG
*pulCaps
);
3867 typedef LONG APIENTRY
3868 (*PFN_DrvQueryFontData
)(
3873 IN OUT GLYPHDATA
*pgd
,
3877 typedef LONG APIENTRY
3878 (*PFN_DrvQueryFontFile
)(
3884 typedef PVOID APIENTRY
3885 (*PFN_DrvQueryFontTree
)(
3892 typedef PFD_GLYPHATTR APIENTRY
3893 (*PFN_DrvQueryGlyphAttrs
)(
3897 typedef ULONG APIENTRY
3898 (*PFN_DrvQueryPerBandInfo
)(
3900 IN OUT PERBANDINFO
*pbi
);
3902 typedef LONG APIENTRY
3903 (*PFN_DrvQueryTrueTypeOutline
)(
3907 IN BOOL bMetricsOnly
,
3908 IN GLYPHDATA
*pgldt
,
3910 OUT TTPOLYGONHEADER
*ppoly
);
3912 typedef LONG APIENTRY
3913 (*PFN_DrvQueryTrueTypeTable
)(
3920 OUT PBYTE
*ppjTable
,
3921 OUT ULONG
*pcjTable
);
3923 typedef BOOL APIENTRY
3924 (*PFN_DrvRealizeBrush
)(
3926 IN SURFOBJ
*psoTarget
,
3927 IN SURFOBJ
*psoPattern
,
3928 IN SURFOBJ
*psoMask
,
3932 typedef ULONG APIENTRY
3933 (*PFN_DrvResetDevice
)(
3937 typedef BOOL APIENTRY
3938 (*PFN_DrvResetPDEV
)(
3942 typedef ULONG_PTR APIENTRY
3943 (*PFN_DrvSaveScreenBits
)(
3949 typedef BOOL APIENTRY
3953 typedef BOOL APIENTRY
3954 (*PFN_DrvSetPalette
)(
3961 typedef BOOL APIENTRY
3962 (*PFN_DrvSetPixelFormat
)(
3964 IN LONG iPixelFormat
,
3967 typedef ULONG APIENTRY
3968 (*PFN_DrvSetPointerShape
)(
3970 IN SURFOBJ
*psoMask
,
3971 IN SURFOBJ
*psoColor
,
3980 typedef BOOL APIENTRY
3981 (*PFN_DrvStartBanding
)(
3985 typedef BOOL APIENTRY
3988 IN LPWSTR pwszDocName
,
3991 typedef BOOL APIENTRY
3992 (*PFN_DrvStartPage
)(
3995 typedef BOOL APIENTRY
3996 (*PFN_DrvStretchBlt
)(
3997 IN SURFOBJ
*psoDest
,
3999 IN SURFOBJ
*psoMask
,
4002 IN COLORADJUSTMENT
*pca
,
4003 IN POINTL
*pptlHTOrg
,
4006 IN POINTL
*pptlMask
,
4009 typedef BOOL APIENTRY
4010 (*PFN_DrvStretchBltROP
)(
4011 IN SURFOBJ
*psoDest
,
4013 IN SURFOBJ
*psoMask
,
4016 IN COLORADJUSTMENT
*pca
,
4017 IN POINTL
*pptlHTOrg
,
4020 IN POINTL
*pptlMask
,
4025 typedef BOOL APIENTRY
4026 (*PFN_DrvStrokeAndFillPath
)(
4031 IN BRUSHOBJ
*pboStroke
,
4032 IN LINEATTRS
*plineattrs
,
4033 IN BRUSHOBJ
*pboFill
,
4034 IN POINTL
*pptlBrushOrg
,
4036 IN FLONG flOptions
);
4038 typedef BOOL APIENTRY
4039 (*PFN_DrvStrokePath
)(
4045 IN POINTL
*pptlBrushOrg
,
4046 IN LINEATTRS
*plineattrs
,
4049 typedef BOOL APIENTRY
4050 (*PFN_DrvSwapBuffers
)(
4054 typedef VOID APIENTRY
4055 (*PFN_DrvSynchronize
)(
4059 typedef VOID APIENTRY
4060 (*PFN_DrvSynchronizeSurface
)(
4065 typedef BOOL APIENTRY
4071 IN RECTL
*prclExtra
,
4072 IN RECTL
*prclOpaque
,
4073 IN BRUSHOBJ
*pboFore
,
4074 IN BRUSHOBJ
*pboOpaque
,
4078 typedef BOOL APIENTRY
4079 (*PFN_DrvTransparentBlt
)(
4086 IN ULONG iTransColor
,
4087 IN ULONG ulReserved
);
4089 typedef BOOL APIENTRY
4090 (*PFN_DrvUnloadFontFile
)(
4091 IN ULONG_PTR iFile
);
4097 DrvDisableDirectDraw(
4103 DrvEnableDirectDraw(
4105 OUT DD_CALLBACKS
*pCallBacks
,
4106 OUT DD_SURFACECALLBACKS
*pSurfaceCallBacks
,
4107 OUT DD_PALETTECALLBACKS
*pPaletteCallBacks
);
4112 DrvGetDirectDrawInfo(
4114 OUT DD_HALINFO
*pHalInfo
,
4115 OUT DWORD
*pdwNumHeaps
,
4116 OUT VIDEOMEMORY
*pvmList
,
4117 OUT DWORD
*pdwNumFourCCCodes
,
4118 OUT DWORD
*pdwFourCC
);
4124 #endif /* defined __VIDEO_H */
4126 #endif /* __WINDDI_H */