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 DECLSPEC_ADDRSAFE
49 #define DDI_DRIVER_VERSION_NT4 0x00020000
50 #define DDI_DRIVER_VERSION_SP3 0x00020003
51 #define DDI_DRIVER_VERSION_NT5 0x00030000
52 #define DDI_DRIVER_VERSION_NT5_01 0x00030100
54 #define GDI_DRIVER_VERSION 0x4000
70 typedef ULONG_PTR HFF
;
71 typedef ULONG_PTR HFC
;
74 typedef PTRDIFF
*PPTRDIFF
;
80 typedef HGLYPH
*PHGLYPH
;
82 typedef LONG_PTR (APIENTRY
*PFN
)();
86 DECLARE_HANDLE(HSURF
);
87 DECLARE_HANDLE(DHSURF
);
88 DECLARE_HANDLE(DHPDEV
);
89 DECLARE_HANDLE(HDRVOBJ
);
91 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 typedef struct _POINTE
{
126 typedef union _FLOAT_LONG
{
129 } FLOAT_LONG
, *PFLOAT_LONG
;
131 typedef struct _POINTFIX
{
134 } POINTFIX
, *PPOINTFIX
;
136 typedef struct _RECTFX
{
143 typedef struct _POINTQF
{
146 } POINTQF
, *PPOINTQF
;
149 typedef struct _BLENDOBJ
{
150 BLENDFUNCTION BlendFunction
;
151 } BLENDOBJ
,*PBLENDOBJ
;
153 /* BRUSHOBJ.flColorType */
154 #define BR_DEVICE_ICM 0x01
155 #define BR_HOST_ICM 0x02
156 #define BR_CMYKCOLOR 0x04
157 #define BR_ORIGCOLOR 0x08
159 typedef struct _BRUSHOBJ
{
165 typedef struct _CIECHROMA
{
171 typedef struct _RUN
{
176 typedef struct _CLIPLINE
{
182 } CLIPLINE
, *PCLIPLINE
;
184 /* CLIPOBJ.iDComplexity constants */
189 /* CLIPOBJ.iFComplexity constants */
194 /* CLIPOBJ.iMode constants */
195 #define TC_RECTANGLES 0
198 /* CLIPOBJ.fjOptions constants */
199 #define OC_BANK_CLIP 1
201 typedef struct _CLIPOBJ
{
210 typedef struct _COLORINFO
{
217 CIECHROMA AlignmentWhite
;
221 LDECI4 MagentaInCyanDye
;
222 LDECI4 YellowInCyanDye
;
223 LDECI4 CyanInMagentaDye
;
224 LDECI4 YellowInMagentaDye
;
225 LDECI4 CyanInYellowDye
;
226 LDECI4 MagentaInYellowDye
;
227 } COLORINFO
, *PCOLORINFO
;
229 /* DEVHTADJDATA.DeviceFlags constants */
230 #define DEVHTADJF_COLOR_DEVICE 0x00000001
231 #define DEVHTADJF_ADDITIVE_DEVICE 0x00000002
233 typedef struct _DEVHTINFO
{
238 } DEVHTINFO
, *PDEVHTINFO
;
240 typedef struct _DEVHTADJDATA
{
244 PDEVHTINFO pDefHTInfo
;
245 PDEVHTINFO pAdjHTInfo
;
246 } DEVHTADJDATA
, *PDEVHTADJDATA
;
248 /* DEVINFO.flGraphicsCaps flags */
249 #define GCAPS_BEZIERS 0x00000001
250 #define GCAPS_GEOMETRICWIDE 0x00000002
251 #define GCAPS_ALTERNATEFILL 0x00000004
252 #define GCAPS_WINDINGFILL 0x00000008
253 #define GCAPS_HALFTONE 0x00000010
254 #define GCAPS_COLOR_DITHER 0x00000020
255 #define GCAPS_HORIZSTRIKE 0x00000040
256 #define GCAPS_VERTSTRIKE 0x00000080
257 #define GCAPS_OPAQUERECT 0x00000100
258 #define GCAPS_VECTORFONT 0x00000200
259 #define GCAPS_MONO_DITHER 0x00000400
260 #define GCAPS_ASYNCCHANGE 0x00000800
261 #define GCAPS_ASYNCMOVE 0x00001000
262 #define GCAPS_DONTJOURNAL 0x00002000
263 #define GCAPS_DIRECTDRAW 0x00004000
264 #define GCAPS_ARBRUSHOPAQUE 0x00008000
265 #define GCAPS_PANNING 0x00010000
266 #define GCAPS_HIGHRESTEXT 0x00040000
267 #define GCAPS_PALMANAGED 0x00080000
268 #define GCAPS_DITHERONREALIZE 0x00200000
269 #define GCAPS_NO64BITMEMACCESS 0x00400000
270 #define GCAPS_FORCEDITHER 0x00800000
271 #define GCAPS_GRAY16 0x01000000
272 #define GCAPS_ICM 0x02000000
273 #define GCAPS_CMYKCOLOR 0x04000000
274 #define GCAPS_LAYERED 0x08000000
275 #define GCAPS_ARBRUSHTEXT 0x10000000
276 #define GCAPS_SCREENPRECISION 0x20000000
277 #define GCAPS_FONT_RASTERIZER 0x40000000
278 #define GCAPS_NUP 0x80000000
280 /* DEVINFO.iDitherFormat constants */
292 /* DEVINFO.flGraphicsCaps2 flags */
293 #define GCAPS2_JPEGSRC 0x00000001
294 #define GCAPS2_xxxx 0x00000002
295 #define GCAPS2_PNGSRC 0x00000008
296 #define GCAPS2_CHANGEGAMMARAMP 0x00000010
297 #define GCAPS2_ALPHACURSOR 0x00000020
298 #define GCAPS2_SYNCFLUSH 0x00000040
299 #define GCAPS2_SYNCTIMER 0x00000080
300 #define GCAPS2_ICD_MULTIMON 0x00000100
301 #define GCAPS2_MOUSETRAILS 0x00000200
302 #define GCAPS2_RESERVED1 0x00000400
304 typedef struct _DEVINFO
{
305 FLONG flGraphicsCaps
;
306 LOGFONTW lfDefaultFont
;
307 LOGFONTW lfAnsiVarFont
;
308 LOGFONTW lfAnsiFixFont
;
313 HPALETTE hpalDefault
;
314 FLONG flGraphicsCaps2
;
315 } DEVINFO
, *PDEVINFO
;
317 typedef struct _DRIVEROBJ
*PDRIVEROBJ
;
320 (APIENTRY CALLBACK
*FREEOBJPROC
)(
321 IN PDRIVEROBJ pDriverObj
);
323 typedef struct _DRIVEROBJ
{
325 FREEOBJPROC pFreeProc
;
330 /* DRVFN.iFunc constants */
331 #define INDEX_DrvEnablePDEV 0L
332 #define INDEX_DrvCompletePDEV 1L
333 #define INDEX_DrvDisablePDEV 2L
334 #define INDEX_DrvEnableSurface 3L
335 #define INDEX_DrvDisableSurface 4L
336 #define INDEX_DrvAssertMode 5L
337 #define INDEX_DrvOffset 6L
338 #define INDEX_DrvResetPDEV 7L
339 #define INDEX_DrvDisableDriver 8L
340 #define INDEX_DrvUnknown1 9L
341 #define INDEX_DrvCreateDeviceBitmap 10L
342 #define INDEX_DrvDeleteDeviceBitmap 11L
343 #define INDEX_DrvRealizeBrush 12L
344 #define INDEX_DrvDitherColor 13L
345 #define INDEX_DrvStrokePath 14L
346 #define INDEX_DrvFillPath 15L
347 #define INDEX_DrvStrokeAndFillPath 16L
348 #define INDEX_DrvPaint 17L
349 #define INDEX_DrvBitBlt 18L
350 #define INDEX_DrvCopyBits 19L
351 #define INDEX_DrvStretchBlt 20L
352 #define INDEX_DrvUnknown2 21L
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_DrvUnknown3 36L
368 #define INDEX_DrvGetGlyphMode 37L
369 #define INDEX_DrvSynchronize 38L
370 #define INDEX_DrvUnknown4 39L
371 #define INDEX_DrvSaveScreenBits 40L
372 #define INDEX_DrvGetModes 41L
373 #define INDEX_DrvFree 42L
374 #define INDEX_DrvDestroyFont 43L
375 #define INDEX_DrvQueryFontCaps 44L
376 #define INDEX_DrvLoadFontFile 45L
377 #define INDEX_DrvUnloadFontFile 46L
378 #define INDEX_DrvFontManagement 47L
379 #define INDEX_DrvQueryTrueTypeTable 48L
380 #define INDEX_DrvQueryTrueTypeOutline 49L
381 #define INDEX_DrvGetTrueTypeFile 50L
382 #define INDEX_DrvQueryFontFile 51L
383 #define INDEX_DrvMovePanning 52L
384 #define INDEX_DrvQueryAdvanceWidths 53L
385 #define INDEX_DrvSetPixelFormat 54L
386 #define INDEX_DrvDescribePixelFormat 55L
387 #define INDEX_DrvSwapBuffers 56L
388 #define INDEX_DrvStartBanding 57L
389 #define INDEX_DrvNextBand 58L
390 #define INDEX_DrvGetDirectDrawInfo 59L
391 #define INDEX_DrvEnableDirectDraw 60L
392 #define INDEX_DrvDisableDirectDraw 61L
393 #define INDEX_DrvQuerySpoolType 62L
394 #define INDEX_DrvUnknown5 63L
395 #define INDEX_DrvIcmCreateColorTransform 64L
396 #define INDEX_DrvIcmDeleteColorTransform 65L
397 #define INDEX_DrvIcmCheckBitmapBits 66L
398 #define INDEX_DrvIcmSetDeviceGammaRamp 67L
399 #define INDEX_DrvGradientFill 68L
400 #define INDEX_DrvStretchBltROP 69L
401 #define INDEX_DrvPlgBlt 70L
402 #define INDEX_DrvAlphaBlend 71L
403 #define INDEX_DrvSynthesizeFont 72L
404 #define INDEX_DrvGetSynthesizedFontFiles 73L
405 #define INDEX_DrvTransparentBlt 74L
406 #define INDEX_DrvQueryPerBandInfo 75L
407 #define INDEX_DrvQueryDeviceSupport 76L
408 #define INDEX_DrvReserved1 77L
409 #define INDEX_DrvReserved2 78L
410 #define INDEX_DrvReserved3 79L
411 #define INDEX_DrvReserved4 80L
412 #define INDEX_DrvReserved5 81L
413 #define INDEX_DrvReserved6 82L
414 #define INDEX_DrvReserved7 83L
415 #define INDEX_DrvReserved8 84L
416 #define INDEX_DrvDeriveSurface 85L
417 #define INDEX_DrvQueryGlyphAttrs 86L
418 #define INDEX_DrvNotify 87L
419 #define INDEX_DrvSynchronizeSurface 88L
420 #define INDEX_DrvResetDevice 89L
421 #define INDEX_DrvReserved9 90L
422 #define INDEX_DrvReserved10 91L
423 #define INDEX_DrvReserved11 92L
424 #define INDEX_LAST 93L
426 typedef struct _DRVFN
{
431 /* DRVENABLEDATA.iDriverVersion constants */
432 #define DDI_DRIVER_VERSION_NT4 0x00020000
433 #define DDI_DRIVER_VERSION_SP3 0x00020003
434 #define DDI_DRIVER_VERSION_NT5 0x00030000
435 #define DDI_DRIVER_VERSION_NT5_01 0x00030100
437 typedef struct _DRVENABLEDATA
{
438 ULONG iDriverVersion
;
441 } DRVENABLEDATA
, *PDRVENABLEDATA
;
443 DECLARE_HANDLE(HSEMAPHORE
);
449 PBYTE pvCurrentRecord
;
450 } EMFINFO
, *PEMFINFO
;
452 typedef struct _ENGSAFESEMAPHORE
{
457 typedef struct _ENG_TIME_FIELDS
{
464 USHORT usMilliseconds
;
466 } ENG_TIME_FIELDS
, *PENG_TIME_FIELDS
;
468 typedef struct _ENUMRECTS
{
473 typedef struct _FD_XFORM
{
478 } FD_XFORM
, *PFD_XFORM
;
480 /* FD_DEVICEMETRICS.flRealizedType constants */
481 #define FDM_TYPE_BM_SIDE_CONST 0x00000001
482 #define FDM_TYPE_MAXEXT_EQUAL_BM_SIDE 0x00000002
483 #define FDM_TYPE_CHAR_INC_EQUAL_BM_BASE 0x00000004
484 #define FDM_TYPE_ZERO_BEARINGS 0x00000008
485 #define FDM_TYPE_CONST_BEARINGS 0x00000010
487 typedef struct _FD_DEVICEMETRICS
{
488 FLONG flRealizedType
;
494 POINTL ptlUnderline1
;
496 POINTL ptlULThickness
;
497 POINTL ptlSOThickness
;
501 FD_XFORM fdxQuantized
;
502 LONG lNonLinearExtLeading
;
503 LONG lNonLinearIntLeading
;
504 LONG lNonLinearMaxCharWidth
;
505 LONG lNonLinearAvgCharWidth
;
510 } FD_DEVICEMETRICS
, *PFD_DEVICEMETRICS
;
512 /* FD_GLYPHATTR.iMode constants */
513 #define FO_ATTR_MODE_ROTATE 1
515 typedef struct _FD_GLYPHATTR
{
520 } FD_GLYPHATTR
, *PFD_GLYPHATTR
;
522 /* FD_GLYPHSET.flAccel */
523 #define GS_UNICODE_HANDLES 0x00000001
524 #define GS_8BIT_HANDLES 0x00000002
525 #define GS_16BIT_HANDLES 0x00000004
527 typedef struct _WCRUN
{
533 typedef struct _FD_GLYPHSET
{
536 ULONG cGlyphsSupported
;
539 } FD_GLYPHSET
, *PFD_GLYPHSET
;
541 typedef struct _FD_KERNINGPAIR
{
547 #if defined(_X86_) && !defined(USERMODE_DRIVER)
548 typedef struct _FLOATOBJ
552 } FLOATOBJ
, *PFLOATOBJ
;
554 typedef FLOAT FLOATOBJ
, *PFLOATOBJ
;
557 typedef struct _FLOATOBJ_XFORM
{
564 } FLOATOBJ_XFORM
, *PFLOATOBJ_XFORM
, FAR
*LPFLOATOBJ_XFORM
;
566 /* FONTDIFF.fsSelection */
567 #define FM_SEL_ITALIC 0x0001
568 #define FM_SEL_UNDERSCORE 0x0002
569 #define FM_SEL_NEGATIVE 0x0004
570 #define FM_SEL_OUTLINED 0x0008
571 #define FM_SEL_STRIKEOUT 0x0010
572 #define FM_SEL_BOLD 0x0020
573 #define FM_SEL_REGULAR 0x0040
575 typedef struct _FONTDIFF
{
582 FWORD fwdAveCharWidth
;
587 typedef struct _FONTSIM
{
590 PTRDIFF dpBoldItalic
;
593 /* FONTINFO.flCaps constants */
594 #define FO_DEVICE_FONT 1L
595 #define FO_OUTLINE_CAPABLE 2L
597 typedef struct _FONTINFO
{
600 ULONG cGlyphsSupported
;
605 } FONTINFO
, *PFONTINFO
;
607 /* FONTOBJ.flFontType constants */
608 #define FO_TYPE_RASTER RASTER_FONTTYPE
609 #define FO_TYPE_DEVICE DEVICE_FONTTYPE
610 #define FO_TYPE_TRUETYPE TRUETYPE_FONTTYPE
611 #define FO_TYPE_OPENTYPE OPENTYPE_FONTTYPE
613 #define FO_SIM_BOLD 0x00002000
614 #define FO_SIM_ITALIC 0x00004000
615 #define FO_EM_HEIGHT 0x00008000
616 #define FO_GRAY16 0x00010000
617 #define FO_NOGRAY16 0x00020000
618 #define FO_NOHINTS 0x00040000
619 #define FO_NO_CHOICE 0x00080000
620 #define FO_CFF 0x00100000
621 #define FO_POSTSCRIPT 0x00200000
622 #define FO_MULTIPLEMASTER 0x00400000
623 #define FO_VERT_FACE 0x00800000
624 #define FO_DBCS_FONT 0X01000000
625 #define FO_NOCLEARTYPE 0x02000000
626 #define FO_CLEARTYPE_X 0x10000000
627 #define FO_CLEARTYPE_Y 0x20000000
629 typedef struct _FONTOBJ
{
642 typedef struct _GAMMARAMP
{
646 } GAMMARAMP
, *PGAMMARAMP
;
648 /* GDIINFO.ulPrimaryOrder constants */
649 #define PRIMARY_ORDER_ABC 0
650 #define PRIMARY_ORDER_ACB 1
651 #define PRIMARY_ORDER_BAC 2
652 #define PRIMARY_ORDER_BCA 3
653 #define PRIMARY_ORDER_CBA 4
654 #define PRIMARY_ORDER_CAB 5
656 /* GDIINFO.ulHTPatternSize constants */
657 #define HT_PATSIZE_2x2 0
658 #define HT_PATSIZE_2x2_M 1
659 #define HT_PATSIZE_4x4 2
660 #define HT_PATSIZE_4x4_M 3
661 #define HT_PATSIZE_6x6 4
662 #define HT_PATSIZE_6x6_M 5
663 #define HT_PATSIZE_8x8 6
664 #define HT_PATSIZE_8x8_M 7
665 #define HT_PATSIZE_10x10 8
666 #define HT_PATSIZE_10x10_M 9
667 #define HT_PATSIZE_12x12 10
668 #define HT_PATSIZE_12x12_M 11
669 #define HT_PATSIZE_14x14 12
670 #define HT_PATSIZE_14x14_M 13
671 #define HT_PATSIZE_16x16 14
672 #define HT_PATSIZE_16x16_M 15
673 #define HT_PATSIZE_SUPERCELL 16
674 #define HT_PATSIZE_SUPERCELL_M 17
675 #define HT_PATSIZE_USER 18
676 #define HT_PATSIZE_MAX_INDEX HT_PATSIZE_USER
677 #define HT_PATSIZE_DEFAULT HT_PATSIZE_SUPERCELL_M
678 #define HT_USERPAT_CX_MIN 4
679 #define HT_USERPAT_CX_MAX 256
680 #define HT_USERPAT_CY_MIN 4
681 #define HT_USERPAT_CY_MAX 256
683 /* GDIINFO.ulHTOutputFormat constants */
684 #define HT_FORMAT_1BPP 0
685 #define HT_FORMAT_4BPP 2
686 #define HT_FORMAT_4BPP_IRGB 3
687 #define HT_FORMAT_8BPP 4
688 #define HT_FORMAT_16BPP 5
689 #define HT_FORMAT_24BPP 6
690 #define HT_FORMAT_32BPP 7
692 /* GDIINFO.flHTFlags */
693 #define HT_FLAG_SQUARE_DEVICE_PEL 0x00000001
694 #define HT_FLAG_HAS_BLACK_DYE 0x00000002
695 #define HT_FLAG_ADDITIVE_PRIMS 0x00000004
696 #define HT_FLAG_USE_8BPP_BITMASK 0x00000008
697 #define HT_FLAG_INK_HIGH_ABSORPTION 0x00000010
698 #define HT_FLAG_INK_ABSORPTION_INDICES 0x00000060
699 #define HT_FLAG_DO_DEVCLR_XFORM 0x00000080
700 #define HT_FLAG_OUTPUT_CMY 0x00000100
701 #define HT_FLAG_PRINT_DRAFT_MODE 0x00000200
702 #define HT_FLAG_INVERT_8BPP_BITMASK_IDX 0x00000400
703 #define HT_FLAG_8BPP_CMY332_MASK 0xFF000000
705 #define MAKE_CMYMASK_BYTE(c,m,y) ((BYTE)(((BYTE)(c) & 0x07) << 5) \
706 |(BYTE)(((BYTE)(m) & 0x07) << 2) \
707 |(BYTE)((BYTE)(y) & 0x03))
709 #define MAKE_CMY332_MASK(c,m,y) ((DWORD)(((DWORD)(c) & 0x07) << 29)\
710 |(DWORD)(((DWORD)(m) & 0x07) << 26)\
711 |(DWORD)(((DWORD)(y) & 0x03) << 24))
713 /* GDIINFO.flHTFlags constants */
714 #define HT_FLAG_INK_ABSORPTION_IDX0 0x00000000
715 #define HT_FLAG_INK_ABSORPTION_IDX1 0x00000020
716 #define HT_FLAG_INK_ABSORPTION_IDX2 0x00000040
717 #define HT_FLAG_INK_ABSORPTION_IDX3 0x00000060
719 #define HT_FLAG_HIGHEST_INK_ABSORPTION (HT_FLAG_INK_HIGH_ABSORPTION \
720 |HT_FLAG_INK_ABSORPTION_IDX3)
721 #define HT_FLAG_HIGHER_INK_ABSORPTION (HT_FLAG_INK_HIGH_ABSORPTION \
722 |HT_FLAG_INK_ABSORPTION_IDX2)
723 #define HT_FLAG_HIGH_INK_ABSORPTION (HT_FLAG_INK_HIGH_ABSORPTION \
724 |HT_FLAG_INK_ABSORPTION_IDX1)
725 #define HT_FLAG_NORMAL_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX0
726 #define HT_FLAG_LOW_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX1
727 #define HT_FLAG_LOWER_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX2
728 #define HT_FLAG_LOWEST_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX3
730 #define HT_BITMASKPALRGB (DWORD)'0BGR'
731 #define HT_SET_BITMASKPAL2RGB(pPal) (*((LPDWORD)(pPal)) = HT_BITMASKPALRGB)
732 #define HT_IS_BITMASKPALRGB(pPal) (*((LPDWORD)(pPal)) == (DWORD)0)
734 /* GDIINFO.ulPhysicalPixelCharacteristics constants */
735 #define PPC_DEFAULT 0x0
736 #define PPC_UNDEFINED 0x1
737 #define PPC_RGB_ORDER_VERTICAL_STRIPES 0x2
738 #define PPC_BGR_ORDER_VERTICAL_STRIPES 0x3
739 #define PPC_RGB_ORDER_HORIZONTAL_STRIPES 0x4
740 #define PPC_BGR_ORDER_HORIZONTAL_STRIPES 0x5
742 #define PPG_DEFAULT 0
745 typedef struct _GDIINFO
{
768 POINTL ptlPhysOffset
;
772 ULONG ulDevicePelsDPI
;
773 ULONG ulPrimaryOrder
;
774 ULONG ulHTPatternSize
;
775 ULONG ulHTOutputFormat
;
778 ULONG ulBltAlignment
;
779 ULONG ulPanningHorzRes
;
780 ULONG ulPanningVertRes
;
781 ULONG xPanningAlignment
;
782 ULONG yPanningAlignment
;
789 ULONG ulPhysicalPixelCharacteristics
;
790 ULONG ulPhysicalPixelGamma
;
791 } GDIINFO
, *PGDIINFO
;
793 /* PATHDATA.flags constants */
794 #define PD_BEGINSUBPATH 0x00000001
795 #define PD_ENDSUBPATH 0x00000002
796 #define PD_RESETSTYLE 0x00000004
797 #define PD_CLOSEFIGURE 0x00000008
798 #define PD_BEZIERS 0x00000010
799 #define PD_ALL (PD_BEGINSUBPATH \
805 typedef struct _PATHDATA
{
809 } PATHDATA
, *PPATHDATA
;
811 /* PATHOBJ.fl constants */
812 #define PO_BEZIERS 0x00000001
813 #define PO_ELLIPSE 0x00000002
814 #define PO_ALL_INTEGERS 0x00000004
815 #define PO_ENUM_AS_INTEGERS 0x00000008
817 typedef struct _PATHOBJ
{
822 typedef struct _GLYPHBITS
{
828 typedef union _GLYPHDEF
{
833 typedef struct _GLYPHPOS
{
837 } GLYPHPOS
, *PGLYPHPOS
;
839 typedef struct _GLYPHDATA
{
851 typedef struct _IFIEXTRA
{
855 PTRDIFF dpDesignVector
;
857 ULONG aulReserved
[1];
858 } IFIEXTRA
, *PIFIEXTRA
;
860 /* IFIMETRICS constants */
862 #define FM_VERSION_NUMBER 0x0
864 /* IFIMETRICS.fsType constants */
865 #define FM_TYPE_LICENSED 0x2
866 #define FM_READONLY_EMBED 0x4
867 #define FM_EDITABLE_EMBED 0x8
868 #define FM_NO_EMBEDDING FM_TYPE_LICENSED
870 /* IFIMETRICS.flInfo constants */
871 #define FM_INFO_TECH_TRUETYPE 0x00000001
872 #define FM_INFO_TECH_BITMAP 0x00000002
873 #define FM_INFO_TECH_STROKE 0x00000004
874 #define FM_INFO_TECH_OUTLINE_NOT_TRUETYPE 0x00000008
875 #define FM_INFO_ARB_XFORMS 0x00000010
876 #define FM_INFO_1BPP 0x00000020
877 #define FM_INFO_4BPP 0x00000040
878 #define FM_INFO_8BPP 0x00000080
879 #define FM_INFO_16BPP 0x00000100
880 #define FM_INFO_24BPP 0x00000200
881 #define FM_INFO_32BPP 0x00000400
882 #define FM_INFO_INTEGER_WIDTH 0x00000800
883 #define FM_INFO_CONSTANT_WIDTH 0x00001000
884 #define FM_INFO_NOT_CONTIGUOUS 0x00002000
885 #define FM_INFO_TECH_MM 0x00004000
886 #define FM_INFO_RETURNS_OUTLINES 0x00008000
887 #define FM_INFO_RETURNS_STROKES 0x00010000
888 #define FM_INFO_RETURNS_BITMAPS 0x00020000
889 #define FM_INFO_DSIG 0x00040000
890 #define FM_INFO_RIGHT_HANDED 0x00080000
891 #define FM_INFO_INTEGRAL_SCALING 0x00100000
892 #define FM_INFO_90DEGREE_ROTATIONS 0x00200000
893 #define FM_INFO_OPTICALLY_FIXED_PITCH 0x00400000
894 #define FM_INFO_DO_NOT_ENUMERATE 0x00800000
895 #define FM_INFO_ISOTROPIC_SCALING_ONLY 0x01000000
896 #define FM_INFO_ANISOTROPIC_SCALING_ONLY 0x02000000
897 #define FM_INFO_TECH_CFF 0x04000000
898 #define FM_INFO_FAMILY_EQUIV 0x08000000
899 #define FM_INFO_DBCS_FIXED_PITCH 0x10000000
900 #define FM_INFO_NONNEGATIVE_AC 0x20000000
901 #define FM_INFO_IGNORE_TC_RA_ABLE 0x40000000
902 #define FM_INFO_TECH_TYPE1 0x80000000
904 #define MAXCHARSETS 16
906 /* IFIMETRICS.ulPanoseCulture constants */
907 #define FM_PANOSE_CULTURE_LATIN 0x0
909 typedef struct _IFIMETRICS
{
912 PTRDIFF dpwszFamilyName
;
913 PTRDIFF dpwszStyleName
;
914 PTRDIFF dpwszFaceName
;
915 PTRDIFF dpwszUniqueName
;
922 BYTE jWinPitchAndFamily
;
929 FWORD fwdWinAscender
;
930 FWORD fwdWinDescender
;
931 FWORD fwdMacAscender
;
932 FWORD fwdMacDescender
;
934 FWORD fwdTypoAscender
;
935 FWORD fwdTypoDescender
;
936 FWORD fwdTypoLineGap
;
937 FWORD fwdAveCharWidth
;
941 FWORD fwdSubscriptXSize
;
942 FWORD fwdSubscriptYSize
;
943 FWORD fwdSubscriptXOffset
;
944 FWORD fwdSubscriptYOffset
;
945 FWORD fwdSuperscriptXSize
;
946 FWORD fwdSuperscriptYSize
;
947 FWORD fwdSuperscriptXOffset
;
948 FWORD fwdSuperscriptYOffset
;
949 FWORD fwdUnderscoreSize
;
950 FWORD fwdUnderscorePosition
;
951 FWORD fwdStrikeoutSize
;
952 FWORD fwdStrikeoutPosition
;
967 ULONG ulPanoseCulture
;
972 } IFIMETRICS
, *PIFIMETRICS
;
975 #define LA_GEOMETRIC 0x00000001
976 #define LA_ALTERNATE 0x00000002
977 #define LA_STARTGAP 0x00000004
978 #define LA_STYLED 0x00000008
980 /* LINEATTRS.iJoin */
981 #define JOIN_ROUND 0L
982 #define JOIN_BEVEL 1L
983 #define JOIN_MITER 2L
985 /* LINEATTRS.iEndCap */
986 #define ENDCAP_ROUND 0L
987 #define ENDCAP_SQUARE 1L
988 #define ENDCAP_BUTT 2L
990 typedef struct _LINEATTRS
{
998 FLOAT_LONG elStyleState
;
999 } LINEATTRS
, *PLINEATTRS
;
1001 typedef struct _PALOBJ
{
1005 typedef struct _PERBANDINFO
{
1006 BOOL bRepeatThisBand
;
1010 } PERBANDINFO
, *PPERBANDINFO
;
1012 /* STROBJ.flAccel constants */
1013 #define SO_FLAG_DEFAULT_PLACEMENT 0x00000001
1014 #define SO_HORIZONTAL 0x00000002
1015 #define SO_VERTICAL 0x00000004
1016 #define SO_REVERSED 0x00000008
1017 #define SO_ZERO_BEARINGS 0x00000010
1018 #define SO_CHAR_INC_EQUAL_BM_BASE 0x00000020
1019 #define SO_MAXEXT_EQUAL_BM_SIDE 0x00000040
1020 #define SO_DO_NOT_SUBSTITUTE_DEVICE_FONT 0x00000080
1021 #define SO_GLYPHINDEX_TEXTOUT 0x00000100
1022 #define SO_ESC_NOT_ORIENT 0x00000200
1023 #define SO_DXDY 0x00000400
1024 #define SO_CHARACTER_EXTRA 0x00000800
1025 #define SO_BREAK_EXTRA 0x00001000
1027 typedef struct _STROBJ
{
1038 /* SURFOBJ.iType constants */
1039 #define STYPE_BITMAP 0L
1040 #define STYPE_DEVICE 1L
1041 #define STYPE_DEVBITMAP 3L
1043 /* SURFOBJ.fjBitmap constants */
1044 #define BMF_TOPDOWN 0x0001
1045 #define BMF_NOZEROINIT 0x0002
1046 #define BMF_DONTCACHE 0x0004
1047 #define BMF_USERMEM 0x0008
1048 #define BMF_KMSECTION 0x0010
1049 #define BMF_NOTSYSMEM 0x0020
1050 #define BMF_WINDOW_BLT 0x0040
1051 #define BMF_UMPDMEM 0x0080
1052 #define BMF_RESERVED 0xFF00
1054 typedef struct _SURFOBJ
{
1065 ULONG iBitmapFormat
;
1070 typedef struct _TYPE1_FONT
{
1076 typedef struct _WNDOBJ
{
1083 typedef struct _XFORML
{
1092 typedef struct _XFORMOBJ
{
1096 /* XLATEOBJ.flXlate constants */
1097 #define XO_TRIVIAL 0x00000001
1098 #define XO_TABLE 0x00000002
1099 #define XO_TO_MONO 0x00000004
1100 #define XO_FROM_CMYK 0x00000008
1101 #define XO_DEVICE_ICM 0x00000010
1102 #define XO_HOST_ICM 0x00000020
1104 typedef struct _XLATEOBJ
{
1113 typedef VOID (APIENTRY CALLBACK
*WNDOBJCHANGEPROC
)(
1121 BRUSHOBJ_hGetColorTransform(
1127 BRUSHOBJ_pvAllocRbrush(
1134 BRUSHOBJ_pvGetRbrush(
1140 BRUSHOBJ_ulGetBrushColor(
1151 /* CLIPOBJ_cEnumStart.iType constants */
1152 #define CT_RECTANGLES 0L
1154 /* CLIPOBJ_cEnumStart.iDirection constants */
1155 #define CD_RIGHTDOWN 0x00000000
1156 #define CD_LEFTDOWN 0x00000001
1157 #define CD_LEFTWARDS 0x00000001
1158 #define CD_RIGHTUP 0x00000002
1159 #define CD_UPWARDS 0x00000002
1160 #define CD_LEFTUP 0x00000003
1161 #define CD_ANY 0x00000004
1170 IN ULONG iDirection
,
1182 EngAcquireSemaphore(
1183 IN HSEMAPHORE hsem
);
1185 #define FL_ZERO_MEMORY 0x00000001
1186 #define FL_NONPAGED_MEMORY 0x00000002
1199 EngAllocPrivateUserMem(
1200 IN PDD_SURFACE_LOCAL psl
,
1215 IN SURFOBJ
*psoDest
,
1221 IN BLENDOBJ
*pBlendObj
);
1223 /* EngAssociateSurface.flHooks constants */
1224 #define HOOK_BITBLT 0x00000001
1225 #define HOOK_STRETCHBLT 0x00000002
1226 #define HOOK_PLGBLT 0x00000004
1227 #define HOOK_TEXTOUT 0x00000008
1228 #define HOOK_PAINT 0x00000010
1229 #define HOOK_STROKEPATH 0x00000020
1230 #define HOOK_FILLPATH 0x00000040
1231 #define HOOK_STROKEANDFILLPATH 0x00000080
1232 #define HOOK_LINETO 0x00000100
1233 #define HOOK_COPYBITS 0x00000400
1234 #define HOOK_MOVEPANNING 0x00000800
1235 #define HOOK_SYNCHRONIZE 0x00001000
1236 #define HOOK_STRETCHBLTROP 0x00002000
1237 #define HOOK_SYNCHRONIZEACCESS 0x00004000
1238 #define HOOK_TRANSPARENTBLT 0x00008000
1239 #define HOOK_ALPHABLEND 0x00010000
1240 #define HOOK_GRADIENTFILL 0x00020000
1241 #define HOOK_FLAGS 0x0003b5ff
1246 EngAssociateSurface(
1257 IN SURFOBJ
*psoMask
,
1262 IN POINTL
*pptlMask
,
1264 IN POINTL
*pptlBrush
,
1287 /* EngControlSprites.fl constants */
1288 #define ECS_TEARDOWN 0x00000001
1289 #define ECS_REDRAW 0x00000002
1302 OUT SURFOBJ
*psoDest
,
1307 IN POINTL
*pptlSrc
);
1328 EngCreateDeviceBitmap(
1331 IN ULONG iFormatCompat
);
1336 EngCreateDeviceSurface(
1339 ULONG iFormatCompat
);
1347 FREEOBJPROC pFreeObjProc
,
1355 OUT PEVENT
*ppEvent
);
1357 /* EngCreatePalette.iMode constants */
1358 #define PAL_INDEXED 0x00000001
1359 #define PAL_BITFIELDS 0x00000002
1360 #define PAL_RGB 0x00000004
1361 #define PAL_BGR 0x00000008
1362 #define PAL_CMYK 0x00000010
1370 IN ULONG
*pulColors
,
1387 /* EngCreateWnd.fl constants */
1388 #define WO_RGN_CLIENT_DELTA 0x00000001
1389 #define WO_RGN_CLIENT 0x00000002
1390 #define WO_RGN_SURFACE_DELTA 0x00000004
1391 #define WO_RGN_SURFACE 0x00000008
1392 #define WO_RGN_UPDATE_ALL 0x00000010
1393 #define WO_RGN_WINDOW 0x00000020
1394 #define WO_DRAW_NOTIFY 0x00000040
1395 #define WO_SPRITE_NOTIFY 0x00000080
1396 #define WO_RGN_DESKTOP_COORD 0x00000100
1404 WNDOBJCHANGEPROC pfn
,
1418 IN PCHAR StandardPrefix
,
1419 IN PCHAR DebugMessage
,
1446 IN LPWSTR pwszFileName
);
1463 EngDeleteSafeSemaphore(
1464 IN OUT ENGSAFESEMAPHORE
*pssem
);
1470 IN OUT HSEMAPHORE hsem
);
1489 IN DWORD dwIoControlCode
,
1490 IN LPVOID lpInBuffer
,
1491 IN DWORD nInBufferSize
,
1492 IN OUT LPVOID lpOutBuffer
,
1493 IN DWORD nOutBufferSize
,
1494 OUT LPDWORD lpBytesReturned
);
1513 OUT LPDWORD pcbNeeded
,
1514 OUT LPDWORD pcReturned
);
1532 IN POINTL
*pptlBrushOrg
,
1534 IN FLONG flOptions
);
1539 EngFindImageProcAddress(
1541 IN LPSTR lpProcName
);
1550 OUT PULONG pulSize
);
1556 IN ULONG FastCheckSum
,
1559 /* EngFntCacheFault.iFaultMode constants */
1560 #define ENG_FNT_CACHE_READ_FAULT 0x00000001
1561 #define ENG_FNT_CACHE_WRITE_FAULT 0x00000002
1567 IN ULONG ulFastCheckSum
,
1568 IN ULONG iFaultMode
);
1574 IN ULONG FastCheckSum
,
1575 OUT ULONG
*pulSize
);
1592 EngFreePrivateUserMem(
1593 IN PDD_SURFACE_LOCAL psl
,
1605 EngGetCurrentCodePage(
1606 OUT PUSHORT OemCodePage
,
1607 OUT PUSHORT AnsiCodePage
);
1612 EngGetCurrentProcessId(
1618 EngGetCurrentThreadId(
1630 EngGetFileChangeTime(
1632 OUT LARGE_INTEGER
*pChangeTime
);
1639 OUT
WCHAR (*pDest
)[MAX_PATH
+1]);
1646 IN LPWSTR pFormName
,
1650 OUT LPDWORD pcbNeeded
);
1664 OUT LPBYTE pPrinter
,
1666 OUT LPDWORD pcbNeeded
);
1673 IN LPWSTR pValueName
,
1677 OUT LPDWORD pcbNeeded
);
1682 EngGetPrinterDataFileName(
1688 EngGetPrinterDriver(
1690 IN LPWSTR pEnvironment
,
1692 OUT BYTE
*lpbDrvInfo
,
1694 OUT DWORD
*pcbNeeded
);
1699 EngGetProcessHandle(
1705 EngGetType1FontList(
1707 OUT TYPE1_FONT
*pType1Buffer
,
1708 IN ULONG cjType1Buffer
,
1709 OUT PULONG pulLocalFonts
,
1710 OUT PULONG pulRemoteFonts
,
1711 OUT LARGE_INTEGER
*pLastModified
);
1717 IN SURFOBJ
*psoDest
,
1720 IN TRIVERTEX
*pVertex
,
1724 IN RECTL
*prclExtents
,
1725 IN POINTL
*pptlDitherOrg
,
1728 /* EngHangNotification return values */
1729 #define EHN_RESTORED 0x00000000
1730 #define EHN_ERROR 0x00000001
1735 EngHangNotification(
1742 EngInitializeSafeSemaphore(
1743 OUT ENGSAFESEMAPHORE
*pssem
);
1748 EngIsSemaphoreOwned(
1749 IN HSEMAPHORE hsem
);
1754 EngIsSemaphoreOwnedByCurrentThread(
1755 IN HSEMAPHORE hsem
);
1775 IN LPWSTR pwszDriver
);
1786 EngLoadModuleForWrite(
1788 IN ULONG cjSizeOfModule
);
1793 EngLockDirectDrawSurface(
1794 IN HANDLE hSurface
);
1819 IN HANDLE hUserObject
,
1822 IN PVOID Reserved3
);
1830 OUT ULONG_PTR
*piFile
);
1858 EngMarkBandingSurface(
1861 /* EngModifySurface.flSurface constants */
1862 #define MS_NOTSYSTEMMEMORY 0x00000001
1863 #define MS_SHAREDACCESS 0x00000002
1876 IN VOID
*pvReserved
);
1898 EngMultiByteToUnicodeN(
1899 OUT LPWSTR UnicodeString
,
1900 IN ULONG MaxBytesInUnicodeString
,
1901 OUT PULONG BytesInUnicodeString
,
1902 IN PCHAR MultiByteString
,
1903 IN ULONG BytesInMultiByteString
);
1908 EngMultiByteToWideChar(
1910 OUT LPWSTR WideCharString
,
1911 IN INT BytesInWideCharString
,
1912 IN LPSTR MultiByteString
,
1913 IN INT BytesInMultiByteString
);
1922 IN POINTL
*pptlBrushOrg
,
1934 IN COLORADJUSTMENT
*pca
,
1935 IN POINTL
*pptlBrushOrg
,
1947 IN ULONG Alignment
);
1952 EngProbeForReadAndWrite(
1955 IN ULONG Alignment
);
1957 typedef enum _ENG_DEVICE_ATTRIBUTE
{
1959 QDA_ACCELERATION_LEVEL
1960 } ENG_DEVICE_ATTRIBUTE
;
1965 EngQueryDeviceAttribute(
1967 IN ENG_DEVICE_ATTRIBUTE devAttr
,
1971 OUT ULONG ulOutSize
);
1976 EngQueryFileTimeStamp(
1983 OUT PENG_TIME_FIELDS ptf
);
1992 OUT ULONG
*pulColors
);
1997 EngQueryPerformanceCounter(
1998 OUT LONGLONG
*pPerformanceCount
);
2003 EngQueryPerformanceFrequency(
2004 OUT LONGLONG
*pFrequency
);
2006 typedef enum _ENG_SYSTEM_ATTRIBUTE
{
2007 EngProcessorFeature
= 1,
2008 EngNumberOfProcessors
,
2009 EngOptimumAvailableUserMemory
,
2010 EngOptimumAvailableSystemMemory
,
2011 } ENG_SYSTEM_ATTRIBUTE
;
2013 #define QSA_MMX 0x00000100
2014 #define QSA_SSE 0x00002000
2015 #define QSA_3DNOW 0x00004000
2020 EngQuerySystemAttribute(
2021 IN ENG_SYSTEM_ATTRIBUTE CapNum
,
2022 OUT PDWORD pCapability
);
2033 EngReleaseSemaphore(
2034 IN HSEMAPHORE hsem
);
2039 EngRestoreFloatingPointState(
2045 EngSaveFloatingPointState(
2047 IN ULONG cjBufferSize
);
2073 IN SURFOBJ
*psoMask
,
2074 IN SURFOBJ
*psoColor
,
2088 IN SURFOBJ
*psoMask
,
2089 IN SURFOBJ
*psoColor
,
2100 IN LPBYTE lpbPrinterData
,
2101 IN DWORD cjPrinterData
);
2103 typedef int (CDECL
*SORTCOMP
)(const void *pv1
, const void *pv2
);
2112 IN SORTCOMP pfnComp
);
2118 IN SURFOBJ
*psoDest
,
2120 IN SURFOBJ
*psoMask
,
2123 IN COLORADJUSTMENT
*pca
,
2124 IN POINTL
*pptlHTOrg
,
2127 IN POINTL
*pptlMask
,
2134 IN SURFOBJ
*psoDest
,
2136 IN SURFOBJ
*psoMask
,
2139 IN COLORADJUSTMENT
*pca
,
2140 IN POINTL
*pptlHTOrg
,
2143 IN POINTL
*pptlMask
,
2151 EngStrokeAndFillPath(
2156 IN BRUSHOBJ
*pboStroke
,
2157 IN LINEATTRS
*plineattrs
,
2158 IN BRUSHOBJ
*pboFill
,
2159 IN POINTL
*pptlBrushOrg
,
2161 IN FLONG flOptions
);
2172 IN POINTL
*pptlBrushOrg
,
2173 IN LINEATTRS
*plineattrs
,
2184 IN RECTL
*prclExtra
,
2185 IN RECTL
*prclOpaque
,
2186 IN BRUSHOBJ
*pboFore
,
2187 IN BRUSHOBJ
*pboOpaque
,
2201 IN ULONG iTransColor
,
2202 IN ULONG ulReserved
);
2207 EngUnicodeToMultiByteN(
2208 OUT PCHAR MultiByteString
,
2209 IN ULONG MaxBytesInMultiByteString
,
2210 OUT PULONG BytesInMultiByteString
,
2211 IN PWSTR UnicodeString
,
2212 IN ULONG BytesInUnicodeString
);
2223 EngUnlockDirectDrawSurface(
2224 IN PDD_SURFACE_LOCAL pSurface
);
2248 IN ULONG_PTR iFile
);
2260 IN ULONG_PTR iFile
);
2271 EngWaitForSingleObject(
2273 IN PLARGE_INTEGER pTimeOut
);
2278 EngWideCharToMultiByte(
2280 IN LPWSTR WideCharString
,
2281 IN INT BytesInWideCharString
,
2282 OUT LPSTR MultiByteString
,
2283 IN INT BytesInMultiByteString
);
2292 OUT LPDWORD pcWritten
);
2294 #if defined(_X86_) && !defined(USERMODE_DRIVER)
2299 IN OUT PFLOATOBJ pf
,
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
,
2366 FLOATOBJ_GreaterThan(
2373 FLOATOBJ_GreaterThanLong(
2387 FLOATOBJ_LessThanLong(
2395 IN OUT PFLOATOBJ pf
,
2402 IN OUT PFLOATOBJ pf
,
2409 IN OUT PFLOATOBJ pf
,
2416 IN OUT PFLOATOBJ pf
);
2436 IN OUT PFLOATOBJ pf
,
2443 IN OUT PFLOATOBJ pf
,
2450 IN OUT PFLOATOBJ pf
,
2455 #define FLOATOBJ_SetFloat(pf, f) {*(pf) = (f);}
2456 #define FLOATOBJ_SetLong(pf, l) {*(pf) = (FLOAT)(l);}
2457 #define FLOATOBJ_GetFloat(pf) (*(PULONG)(pf))
2458 #define FLOATOBJ_GetLong(pf) ((LONG)*(pf))
2459 #define FLOATOBJ_Add(pf, pf1) {*(pf) += *(pf1);}
2460 #define FLOATOBJ_AddFloat(pf, f) {*(pf) += (f);}
2461 #define FLOATOBJ_AddLong(pf, l) {*(pf) += (l);}
2462 #define FLOATOBJ_Sub(pf, pf1) {*(pf) -= *(pf1);}
2463 #define FLOATOBJ_SubFloat(pf, f) {*(pf) -= (f);}
2464 #define FLOATOBJ_SubLong(pf, l) {*(pf) -= (l);}
2465 #define FLOATOBJ_Mul(pf, pf1) {*(pf) *= *(pf1);}
2466 #define FLOATOBJ_MulFloat(pf, f) {*(pf) *= (f);}
2467 #define FLOATOBJ_MulLong(pf, l) {*(pf) *= (l);}
2468 #define FLOATOBJ_Div(pf, pf1) {*(pf) /= *(pf1);}
2469 #define FLOATOBJ_DivFloat(pf, f) {*(pf) /= (f);}
2470 #define FLOATOBJ_DivLong(pf, l) {*(pf) /= (l);}
2471 #define FLOATOBJ_Neg(pf) {*(pf) = -(*(pf));}
2472 #define FLOATOBJ_Equal(pf, pf1) (*(pf) == *(pf1))
2473 #define FLOATOBJ_GreaterThan(pf, pf1) (*(pf) > *(pf1))
2474 #define FLOATOBJ_LessThan(pf, pf1) (*(pf) < *(pf1))
2475 #define FLOATOBJ_EqualLong(pf, l) (*(pf) == (FLOAT)(l))
2476 #define FLOATOBJ_GreaterThanLong(pf, l) (*(pf) > (FLOAT)(l))
2477 #define FLOATOBJ_LessThanLong(pf, l) (*(pf) < (FLOAT)(l))
2484 FONTOBJ_cGetAllGlyphHandles(
2496 OUT PVOID
*ppvGlyph
);
2513 FONTOBJ_pjOpenTypeTablePointer(
2516 OUT ULONG
*pcjTable
);
2521 FONTOBJ_pQueryGlyphAttrs(
2528 FONTOBJ_pvTrueTypeFontFile(
2530 OUT ULONG
*pcjFile
);
2535 FONTOBJ_pwszFontFilePaths(
2542 FONTOBJ_pxoGetXform(
2558 HT_ComputeRGBGammaTable(
2559 IN USHORT GammaTableEntries
,
2560 IN USHORT GammaTableType
,
2562 IN USHORT GreenGamma
,
2563 IN USHORT BlueGamma
,
2564 OUT LPBYTE pGammaTable
);
2569 HT_Get8BPPFormatPalette(
2570 OUT LPPALETTEENTRY pPaletteEntry
,
2572 IN USHORT GreenGamma
,
2573 IN USHORT BlueGamma
);
2578 HT_Get8BPPMaskPalette(
2579 IN OUT LPPALETTEENTRY pPaletteEntry
,
2580 IN BOOL Use8BPPMaskPal
,
2583 IN USHORT GreenGamma
,
2584 IN USHORT BlueGamma
);
2589 HTUI_DeviceColorAdjustment(
2590 IN LPSTR pDeviceName
,
2591 OUT PDEVHTADJDATA pDevHTAdjData
);
2600 OUT ULONG
*pulColors
);
2605 PATHOBJ_bCloseFigure(
2618 PATHOBJ_bEnumClipLines(
2633 PATHOBJ_bPolyBezierTo(
2641 PATHOBJ_bPolyLineTo(
2655 PATHOBJ_vEnumStartClipLines(
2666 OUT PRECTFX prectfx
);
2674 OUT PGLYPHPOS
*ppgpos
);
2679 STROBJ_bEnumPositionsOnly(
2682 OUT PGLYPHPOS
*ppgpos
);
2687 STROBJ_bGetAdvanceWidths(
2691 OUT POINTQF
*pptqD
);
2696 STROBJ_dwGetCodePage(
2702 STROBJ_fxBreakExtra(
2708 STROBJ_fxCharacterExtra(
2731 IN ULONG iDirection
,
2737 WNDOBJ_vSetConsumer(
2739 IN PVOID pvConsumer
);
2741 /* XFORMOBJ_bApplyXform.iMode constants */
2743 #define XF_INV_LTOL 1L
2745 #define XF_INV_FXTOL 3L
2750 XFORMOBJ_bApplyXform(
2760 XFORMOBJ_iGetFloatObjXform(
2762 OUT FLOATOBJ_XFORM
*pxfo
);
2769 OUT XFORML
*pxform
);
2771 /* XLATEOBJ_cGetPalette.iPal constants */
2772 #define XO_SRCPALETTE 1
2773 #define XO_DESTPALETTE 2
2774 #define XO_DESTDCPALETTE 3
2775 #define XO_SRCBITFIELDS 4
2776 #define XO_DESTBITFIELDS 5
2781 XLATEOBJ_cGetPalette(
2790 XLATEOBJ_hGetColorTransform(
2808 /* Graphics Driver Functions */
2813 IN SURFOBJ
*psoDest
,
2819 IN BLENDOBJ
*pBlendObj
);
2832 IN SURFOBJ
*psoMask
,
2837 IN POINTL
*pptlMask
,
2839 IN POINTL
*pptlBrush
,
2851 IN SURFOBJ
*psoDest
,
2856 IN POINTL
*pptlSrc
);
2860 DrvCreateDeviceBitmap(
2867 DrvDeleteDeviceBitmap(
2873 DD_DIRECTDRAW_GLOBAL
*pDirectDraw
,
2874 DD_SURFACE_LOCAL
*pSurface
);
2878 DrvDescribePixelFormat(
2880 IN LONG iPixelFormat
,
2882 OUT PIXELFORMATDESCRIPTOR
*ppfd
);
2904 #define DM_DEFAULT 0x00000001
2905 #define DM_MONOCHROME 0x00000002
2928 IN ULONG iEngineVersion
,
2930 OUT DRVENABLEDATA
*pded
);
2936 IN LPWSTR pwszLogAddress
,
2938 OUT HSURF
*phsurfPatterns
,
2940 OUT ULONG
*pdevcaps
,
2944 IN LPWSTR pwszDeviceName
,
2952 /* DrvEndDoc.fl constants */
2953 #define ED_ABORTDOC 0x00000001
2978 IN POINTL
*pptlBrushOrg
,
2980 IN FLONG flOptions
);
2999 /* DrvGetGlyphMode return values */
3000 #define FO_HGLYPHS 0L
3001 #define FO_GLYPHBITS 1L
3002 #define FO_PATHOBJ 2L
3026 IN SURFOBJ
*psoDest
,
3029 IN TRIVERTEX
*pVertex
,
3033 IN RECTL
*prclExtents
,
3034 IN POINTL
*pptlDitherOrg
,
3039 DrvIcmCheckBitmapBits(
3041 IN HANDLE hColorTransform
,
3043 OUT PBYTE paResults
);
3047 DrvIcmCreateColorTransform(
3049 IN LPLOGCOLORSPACEW pLogColorSpace
,
3050 IN PVOID pvSourceProfile
,
3051 IN ULONG cjSourceProfile
,
3052 IN PVOID pvDestProfile
,
3053 IN ULONG cjDestProfile
,
3054 IN PVOID pvTargetProfile
,
3055 IN ULONG cjTargetProfile
,
3056 IN DWORD dwReserved
);
3060 DrvIcmDeleteColorTransform(
3062 IN HANDLE hcmXform
);
3064 /* DrvIcmSetDeviceGammaRamp.iFormat constants */
3065 #define IGRF_RGB_256BYTES 0x00000000
3066 #define IGRF_RGB_256WORDS 0x00000001
3070 DrvIcmSetDeviceGammaRamp(
3097 ULONG ulFastCheckSum
);
3126 IN FLONG flReserved
);
3134 IN POINTL
*pptlBrushOrg
,
3145 IN COLORADJUSTMENT
*pca
,
3146 IN POINTL
*pptlBrushOrg
,
3152 /* DrvQueryAdvanceWidths.iMode constants */
3153 #define QAW_GETWIDTHS 0
3154 #define QAW_GETEASYWIDTHS 1
3158 DrvQueryAdvanceWidths(
3166 /* DrvQueryDeviceSupport.iType constants */
3167 #define QDS_CHECKJPEGFORMAT 0x00000000
3168 #define QDS_CHECKPNGFORMAT 0x00000001
3172 DrvQueryDeviceSupport(
3182 /* DrvQueryDriverInfo.dwMode constants */
3183 #define DRVQUERY_USERMODE 0x00000001
3201 /* DrvQueryFontCaps.pulCaps constants */
3202 #define QC_OUTLINES 0x00000001
3203 #define QC_1BIT 0x00000002
3204 #define QC_4BIT 0x00000004
3206 #define QC_FONTDRIVERCAPS (QC_OUTLINES | QC_1BIT | QC_4BIT)
3212 OUT ULONG
*pulCaps
);
3214 /* DrvQueryFontData.iMode constants */
3215 #define QFD_GLYPHANDBITMAP 1L
3216 #define QFD_GLYPHANDOUTLINE 2L
3217 #define QFD_MAXEXTENTS 3L
3218 #define QFD_TT_GLYPHANDBITMAP 4L
3219 #define QFD_TT_GRAY1_BITMAP 5L
3220 #define QFD_TT_GRAY2_BITMAP 6L
3221 #define QFD_TT_GRAY4_BITMAP 8L
3222 #define QFD_TT_GRAY8_BITMAP 9L
3224 #define QFD_TT_MONO_BITMAP QFD_TT_GRAY1_BITMAP
3233 IN OUT GLYPHDATA
*pgd
,
3237 /* DrvQueryFontFile.ulMode constants */
3238 #define QFF_DESCRIPTION 0x00000001
3239 #define QFF_NUMFACES 0x00000002
3249 /* DrvQueryFontTree.iMode constants */
3250 #define QFT_UNICODE 0L
3251 #define QFT_LIGATURES 1L
3252 #define QFT_KERNPAIRS 2L
3253 #define QFT_GLYPHSET 3L
3272 DrvQueryPerBandInfo(
3274 IN OUT PERBANDINFO
*pbi
);
3276 /* DrvQueryTrueTypeOutline.bMetricsOnly constants */
3277 #define TTO_METRICS_ONLY 0x00000001
3278 #define TTO_QUBICS 0x00000002
3279 #define TTO_UNHINTED 0x00000004
3283 DrvQueryTrueTypeOutline(
3287 IN BOOL bMetricsOnly
,
3288 IN GLYPHDATA
*pgldt
,
3290 OUT TTPOLYGONHEADER
*ppoly
);
3294 DrvQueryTrueTypeTable(
3301 OUT PBYTE
*ppjTable
,
3302 OUT ULONG
*pcjTable
);
3304 /* DrvRealizeBrush.iHatch constants */
3305 #define RB_DITHERCOLOR 0x80000000L
3307 #define HS_DDI_MAX 6
3313 IN SURFOBJ
*psoTarget
,
3314 IN SURFOBJ
*psoPattern
,
3315 IN SURFOBJ
*psoMask
,
3319 /* DrvResetDevice return values */
3320 #define DRD_SUCCESS 0
3335 /* DrvSaveScreenBits.iMode constants */
3336 #define SS_SAVE 0x00000000
3337 #define SS_RESTORE 0x00000001
3338 #define SS_FREE 0x00000002
3366 IN LONG iPixelFormat
,
3369 /* DrvSetPointerShape return values */
3370 #define SPS_ERROR 0x00000000
3371 #define SPS_DECLINE 0x00000001
3372 #define SPS_ACCEPT_NOEXCLUDE 0x00000002
3373 #define SPS_ACCEPT_EXCLUDE 0x00000003
3374 #define SPS_ACCEPT_SYNCHRONOUS 0x00000004
3376 /* DrvSetPointerShape.fl constants */
3377 #define SPS_CHANGE 0x00000001L
3378 #define SPS_ASYNCCHANGE 0x00000002L
3379 #define SPS_ANIMATESTART 0x00000004L
3380 #define SPS_ANIMATEUPDATE 0x00000008L
3381 #define SPS_ALPHA 0x00000010L
3382 #define SPS_LENGTHMASK 0x00000F00L
3383 #define SPS_FREQMASK 0x000FF000L
3389 IN SURFOBJ
*psoMask
,
3390 IN SURFOBJ
*psoColor
,
3409 IN LPWSTR pwszDocName
,
3420 IN SURFOBJ
*psoDest
,
3422 IN SURFOBJ
*psoMask
,
3425 IN COLORADJUSTMENT
*pca
,
3426 IN POINTL
*pptlHTOrg
,
3429 IN POINTL
*pptlMask
,
3435 IN SURFOBJ
*psoDest
,
3437 IN SURFOBJ
*psoMask
,
3440 IN COLORADJUSTMENT
*pca
,
3441 IN POINTL
*pptlHTOrg
,
3444 IN POINTL
*pptlMask
,
3451 DrvStrokeAndFillPath(
3456 IN BRUSHOBJ
*pboStroke
,
3457 IN LINEATTRS
*plineattrs
,
3458 IN BRUSHOBJ
*pboFill
,
3459 IN POINTL
*pptlBrushOrg
,
3461 IN FLONG flOptions
);
3471 IN POINTL
*pptlBrushOrg
,
3472 IN LINEATTRS
*plineattrs
,
3487 /* DrvSynchronizeSurface.fl constants */
3488 #define DSS_TIMER_EVENT 0x00000001
3489 #define DSS_FLUSH_EVENT 0x00000002
3493 DrvSynchronizeSurface(
3505 IN RECTL
*prclExtra
,
3506 IN RECTL
*prclOpaque
,
3507 IN BRUSHOBJ
*pboFore
,
3508 IN BRUSHOBJ
*pboOpaque
,
3521 IN ULONG iTransColor
,
3522 IN ULONG ulReserved
);
3527 IN ULONG_PTR iFile
);
3529 /* WNDOBJCHANGEPROC.fl constants */
3530 #define WOC_RGN_CLIENT_DELTA 0x00000001
3531 #define WOC_RGN_CLIENT 0x00000002
3532 #define WOC_RGN_SURFACE_DELTA 0x00000004
3533 #define WOC_RGN_SURFACE 0x00000008
3534 #define WOC_CHANGED 0x00000010
3535 #define WOC_DELETE 0x00000020
3536 #define WOC_DRAWN 0x00000040
3537 #define WOC_SPRITE_OVERLAP 0x00000080
3538 #define WOC_SPRITE_NO_OVERLAP 0x00000100
3541 (APIENTRY CALLBACK
* WNDOBJCHANGEPROC
)(
3547 (APIENTRY
*PFN_DrvAlphaBlend
)(
3548 IN SURFOBJ
*psoDest
,
3554 IN BLENDOBJ
*pBlendObj
);
3557 (APIENTRY
*PFN_DrvAssertMode
)(
3562 (APIENTRY
*PFN_DrvBitBlt
)(
3565 IN SURFOBJ
*psoMask
,
3570 IN POINTL
*pptlMask
,
3572 IN POINTL
*pptlBrush
,
3576 (APIENTRY
*PFN_DrvCompletePDEV
)(
3581 (APIENTRY
*PFN_DrvCopyBits
)(
3582 IN SURFOBJ
*psoDest
,
3587 IN POINTL
*pptlSrc
);
3590 (APIENTRY
*PFN_DrvCreateDeviceBitmap
)(
3596 (APIENTRY
*PFN_DrvDeleteDeviceBitmap
)(
3600 (APIENTRY
*PFN_DrvDeriveSurface
)(
3601 DD_DIRECTDRAW_GLOBAL
*pDirectDraw
,
3602 DD_SURFACE_LOCAL
*pSurface
);
3605 (APIENTRY
*PFN_DrvDescribePixelFormat
)(
3607 IN LONG iPixelFormat
,
3609 OUT PIXELFORMATDESCRIPTOR
*ppfd
);
3612 (APIENTRY
*PFN_DrvDestroyFont
)(
3616 (APIENTRY
*PFN_DrvDisableDriver
)(
3620 (APIENTRY
*PFN_DrvDisablePDEV
)(
3624 (APIENTRY
*PFN_DrvDisableSurface
)(
3628 (APIENTRY
*PFN_DrvDitherColor
)(
3635 (APIENTRY
*PFN_DrvDrawEscape
)(
3644 (APIENTRY
*PFN_DrvEnableDriver
)(
3645 IN ULONG iEngineVersion
,
3647 OUT DRVENABLEDATA
*pded
);
3650 (APIENTRY
*PFN_DrvEnablePDEV
)(
3652 IN LPWSTR pwszLogAddress
,
3654 OUT HSURF
*phsurfPatterns
,
3656 OUT ULONG
*pdevcaps
,
3660 IN LPWSTR pwszDeviceName
,
3665 (APIENTRY
*PFN_DrvEnableSurface
)(
3669 (APIENTRY
*PFN_DrvEndDoc
)(
3674 (APIENTRY
*PFN_DrvEscape
)(
3683 (APIENTRY
*PFN_DrvFillPath
)(
3688 IN POINTL
*pptlBrushOrg
,
3690 IN FLONG flOptions
);
3693 (APIENTRY
*PFN_DrvFontManagement
)(
3703 (APIENTRY
*PFN_DrvFree
)(
3708 (APIENTRY
*PFN_DrvGetGlyphMode
)(
3713 (APIENTRY
*PFN_DrvGetModes
)(
3719 (APIENTRY
*PFN_DrvGetTrueTypeFile
)(
3724 (APIENTRY
*PFN_DrvGradientFill
)(
3725 IN SURFOBJ
*psoDest
,
3728 IN TRIVERTEX
*pVertex
,
3732 IN RECTL
*prclExtents
,
3733 IN POINTL
*pptlDitherOrg
,
3737 (APIENTRY
*PFN_DrvIcmCheckBitmapBits
)(
3739 IN HANDLE hColorTransform
,
3741 OUT PBYTE paResults
);
3744 (APIENTRY
*PFN_DrvIcmCreateColorTransform
)(
3746 IN LPLOGCOLORSPACEW pLogColorSpace
,
3747 IN PVOID pvSourceProfile
,
3748 IN ULONG cjSourceProfile
,
3749 IN PVOID pvDestProfile
,
3750 IN ULONG cjDestProfile
,
3751 IN PVOID pvTargetProfile
,
3752 IN ULONG cjTargetProfile
,
3753 IN DWORD dwReserved
);
3756 (APIENTRY
*PFN_DrvIcmDeleteColorTransform
)(
3758 IN HANDLE hcmXform
);
3761 (APIENTRY
*PFN_DrvIcmSetDeviceGammaRamp
)(
3767 (APIENTRY
*PFN_DrvLineTo
)(
3779 (APIENTRY
*PFN_DrvLoadFontFile
)(
3786 ULONG ulFastCheckSum
);
3789 (APIENTRY
*PFN_DrvMovePointer
)(
3796 (APIENTRY
*PFN_DrvNextBand
)(
3801 (APIENTRY
*PFN_DrvNotify
)(
3807 (APIENTRY
*PFN_DrvOffset
)(
3811 IN FLONG flReserved
);
3814 (APIENTRY
*PFN_DrvPaint
)(
3818 IN POINTL
*pptlBrushOrg
,
3822 (APIENTRY
*PFN_DrvPlgBlt
)(
3828 IN COLORADJUSTMENT
*pca
,
3829 IN POINTL
*pptlBrushOrg
,
3836 (APIENTRY
*PFN_DrvQueryAdvanceWidths
)(
3845 (APIENTRY
*PFN_DrvQueryDeviceSupport
)(
3856 (APIENTRY
*PFN_DrvQueryDriverInfo
)(
3863 (APIENTRY
*PFN_DrvQueryFont
)(
3870 (APIENTRY
*PFN_DrvQueryFontCaps
)(
3872 OUT ULONG
*pulCaps
);
3875 (APIENTRY
*PFN_DrvQueryFontData
)(
3880 IN OUT GLYPHDATA
*pgd
,
3885 (APIENTRY
*PFN_DrvQueryFontFile
)(
3892 (APIENTRY
*PFN_DrvQueryFontTree
)(
3899 typedef PFD_GLYPHATTR
3900 (APIENTRY
*PFN_DrvQueryGlyphAttrs
)(
3905 (APIENTRY
*PFN_DrvQueryPerBandInfo
)(
3907 IN OUT PERBANDINFO
*pbi
);
3910 (APIENTRY
*PFN_DrvQueryTrueTypeOutline
)(
3914 IN BOOL bMetricsOnly
,
3915 IN GLYPHDATA
*pgldt
,
3917 OUT TTPOLYGONHEADER
*ppoly
);
3920 (APIENTRY
*PFN_DrvQueryTrueTypeTable
)(
3927 OUT PBYTE
*ppjTable
,
3928 OUT ULONG
*pcjTable
);
3931 (APIENTRY
*PFN_DrvRealizeBrush
)(
3933 IN SURFOBJ
*psoTarget
,
3934 IN SURFOBJ
*psoPattern
,
3935 IN SURFOBJ
*psoMask
,
3940 (APIENTRY
*PFN_DrvResetDevice
)(
3945 (APIENTRY
*PFN_DrvResetPDEV
)(
3950 (APIENTRY
*PFN_DrvSaveScreenBits
)(
3957 (APIENTRY
*PFN_DrvSendPage
)(
3961 (APIENTRY
*PFN_DrvSetPalette
)(
3969 (APIENTRY
*PFN_DrvSetPixelFormat
)(
3971 IN LONG iPixelFormat
,
3975 (APIENTRY
*PFN_DrvSetPointerShape
)(
3977 IN SURFOBJ
*psoMask
,
3978 IN SURFOBJ
*psoColor
,
3988 (APIENTRY
*PFN_DrvStartBanding
)(
3993 (APIENTRY
*PFN_DrvStartDoc
)(
3995 IN LPWSTR pwszDocName
,
3999 (APIENTRY
*PFN_DrvStartPage
)(
4003 (APIENTRY
*PFN_DrvStretchBlt
)(
4004 IN SURFOBJ
*psoDest
,
4006 IN SURFOBJ
*psoMask
,
4009 IN COLORADJUSTMENT
*pca
,
4010 IN POINTL
*pptlHTOrg
,
4013 IN POINTL
*pptlMask
,
4017 (APIENTRY
*PFN_DrvStretchBltROP
)(
4018 IN SURFOBJ
*psoDest
,
4020 IN SURFOBJ
*psoMask
,
4023 IN COLORADJUSTMENT
*pca
,
4024 IN POINTL
*pptlHTOrg
,
4027 IN POINTL
*pptlMask
,
4033 (APIENTRY
*PFN_DrvStrokeAndFillPath
)(
4038 IN BRUSHOBJ
*pboStroke
,
4039 IN LINEATTRS
*plineattrs
,
4040 IN BRUSHOBJ
*pboFill
,
4041 IN POINTL
*pptlBrushOrg
,
4043 IN FLONG flOptions
);
4046 (APIENTRY
*PFN_DrvStrokePath
)(
4052 IN POINTL
*pptlBrushOrg
,
4053 IN LINEATTRS
*plineattrs
,
4057 (APIENTRY
*PFN_DrvSwapBuffers
)(
4062 (APIENTRY
*PFN_DrvSynchronize
)(
4067 (APIENTRY
*PFN_DrvSynchronizeSurface
)(
4073 (APIENTRY
*PFN_DrvTextOut
)(
4078 IN RECTL
*prclExtra
,
4079 IN RECTL
*prclOpaque
,
4080 IN BRUSHOBJ
*pboFore
,
4081 IN BRUSHOBJ
*pboOpaque
,
4086 (APIENTRY
*PFN_DrvTransparentBlt
)(
4093 IN ULONG iTransColor
,
4094 IN ULONG ulReserved
);
4097 (APIENTRY
*PFN_DrvUnloadFontFile
)(
4098 IN ULONG_PTR iFile
);
4104 DrvDisableDirectDraw(
4110 DrvEnableDirectDraw(
4112 OUT DD_CALLBACKS
*pCallBacks
,
4113 OUT DD_SURFACECALLBACKS
*pSurfaceCallBacks
,
4114 OUT DD_PALETTECALLBACKS
*pPaletteCallBacks
);
4119 DrvGetDirectDrawInfo(
4121 OUT DD_HALINFO
*pHalInfo
,
4122 OUT DWORD
*pdwNumHeaps
,
4123 OUT VIDEOMEMORY
*pvmList
,
4124 OUT DWORD
*pdwNumFourCCCodes
,
4125 OUT DWORD
*pdwFourCC
);
4131 #endif /* defined __VIDEO_H */
4133 #endif /* __WINDDI_H */