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 /* FIXME: Some DirectDraw structures not added yet */
43 typedef ULONG_PTR FLATPTR
;
44 typedef PVOID LPVIDMEM
;
45 typedef PVOID LPVMEMHEAP
;
46 typedef PVOID PGLYPHOS
;
47 typedef struct _DD_SURFACECALLBACKS
{
48 } DD_SURFACECALLBACKS
, *PDD_SURFACECALLBACKS
;
49 typedef struct _DD_PALETTECALLBACKS
{
50 } DD_PALETTECALLBACKS
, *PDD_PALETTECALLBACKS
;
51 typedef struct _DD_CALLBACKS
{
52 } DD_CALLBACKS
, *PDD_CALLBACKS
;
53 typedef struct _DD_HALINFO
{
54 } DD_HALINFO
, *PDD_HALINFO
;
55 typedef struct _DDSCAPS
{
57 typedef struct _DDSCAPSEX
{
58 } DDSCAPSEX
, *PDDSCAPSEX
;
59 typedef struct _VIDEOMEMORY
{
60 } VIDEOMEMORY
, *LPVIDEOMEMORY
;
61 typedef struct _DD_DIRECTDRAW_GLOBAL
{
62 } DD_DIRECTDRAW_GLOBAL
, *LPDD_DIRECTDRAW_GLOBAL
;
63 typedef struct _DD_SURFACE_LOCAL
{
64 } DD_SURFACE_LOCAL
, *PDD_SURFACE_LOCAL
, *LPDD_SURFACE_LOCAL
;
68 #define WIN32KAPI DECL_EXPORT
70 #define WIN32KAPI DECL_IMPORT
73 #define DDI_DRIVER_VERSION_NT4 0x00020000
74 #define DDI_DRIVER_VERSION_SP3 0x00020003
75 #define DDI_DRIVER_VERSION_NT5 0x00030000
76 #define DDI_DRIVER_VERSION_NT5_01 0x00030100
78 #define GDI_DRIVER_VERSION 0x4000
94 typedef ULONG_PTR HFF
;
95 typedef ULONG_PTR HFC
;
98 typedef PTRDIFF
*PPTRDIFF
;
103 typedef ULONG HGLYPH
;
104 typedef HGLYPH
*PHGLYPH
;
106 typedef LONG_PTR (DDKAPI
*PFN
)();
109 DECLARE_HANDLE(HDEV
);
110 DECLARE_HANDLE(HSURF
);
111 DECLARE_HANDLE(DHSURF
);
112 DECLARE_HANDLE(DHPDEV
);
113 DECLARE_HANDLE(HDRVOBJ
);
116 #define GDI_DRIVER_VERSION 0x4000
118 typedef struct _ENG_EVENT
*PEVENT
;
120 #define OPENGL_CMD 4352
121 #define OPENGL_GETINFO 4353
122 #define WNDOBJ_SETUP 4354
124 #define FD_ERROR 0xFFFFFFFF
125 #define DDI_ERROR 0xFFFFFFFF
127 #define HFF_INVALID ((HFF) 0)
128 #define HFC_INVALID ((HFC) 0)
129 #define HGLYPH_INVALID ((HGLYPH) -1)
131 #define FP_ALTERNATEMODE 1
132 #define FP_WINDINGMODE 2
134 #define DN_ACCELERATION_LEVEL 1
135 #define DN_DEVICE_ORIGIN 2
136 #define DN_SLEEP_MODE 3
137 #define DN_DRAWING_BEGIN 4
141 #define DCR_HALFTONE 2
143 #define GX_IDENTITY 0
148 typedef struct _POINTE
{
153 typedef union _FLOAT_LONG
{
156 } FLOAT_LONG
, *PFLOAT_LONG
;
158 typedef struct _POINTFIX
{
161 } POINTFIX
, *PPOINTFIX
;
163 typedef struct _RECTFX
{
170 typedef struct _POINTQF
{
173 } POINTQF
, *PPOINTQF
;
176 typedef struct _BLENDOBJ
{
177 BLENDFUNCTION BlendFunction
;
178 } BLENDOBJ
,*PBLENDOBJ
;
180 /* BRUSHOBJ.flColorType */
181 #define BR_DEVICE_ICM 0x01
182 #define BR_HOST_ICM 0x02
183 #define BR_CMYKCOLOR 0x04
184 #define BR_ORIGCOLOR 0x08
186 typedef struct _BRUSHOBJ
{
192 typedef struct _CIECHROMA
{
198 typedef struct _RUN
{
203 typedef struct _CLIPLINE
{
209 } CLIPLINE
, *PCLIPLINE
;
211 /* CLIPOBJ.iDComplexity constants */
216 /* CLIPOBJ.iFComplexity constants */
221 /* CLIPOBJ.iMode constants */
222 #define TC_RECTANGLES 0
225 /* CLIPOBJ.fjOptions constants */
226 #define OC_BANK_CLIP 1
228 typedef struct _CLIPOBJ
{
237 typedef struct _COLORINFO
{
244 CIECHROMA AlignmentWhite
;
248 LDECI4 MagentaInCyanDye
;
249 LDECI4 YellowInCyanDye
;
250 LDECI4 CyanInMagentaDye
;
251 LDECI4 YellowInMagentaDye
;
252 LDECI4 CyanInYellowDye
;
253 LDECI4 MagentaInYellowDye
;
254 } COLORINFO
, *PCOLORINFO
;
256 /* DEVHTADJDATA.DeviceFlags constants */
257 #define DEVHTADJF_COLOR_DEVICE 0x00000001
258 #define DEVHTADJF_ADDITIVE_DEVICE 0x00000002
260 typedef struct _DEVHTINFO
{
265 } DEVHTINFO
, *PDEVHTINFO
;
267 typedef struct _DEVHTADJDATA
{
271 PDEVHTINFO pDefHTInfo
;
272 PDEVHTINFO pAdjHTInfo
;
273 } DEVHTADJDATA
, *PDEVHTADJDATA
;
275 /* DEVINFO.flGraphicsCaps flags */
276 #define GCAPS_BEZIERS 0x00000001
277 #define GCAPS_GEOMETRICWIDE 0x00000002
278 #define GCAPS_ALTERNATEFILL 0x00000004
279 #define GCAPS_WINDINGFILL 0x00000008
280 #define GCAPS_HALFTONE 0x00000010
281 #define GCAPS_COLOR_DITHER 0x00000020
282 #define GCAPS_HORIZSTRIKE 0x00000040
283 #define GCAPS_VERTSTRIKE 0x00000080
284 #define GCAPS_OPAQUERECT 0x00000100
285 #define GCAPS_VECTORFONT 0x00000200
286 #define GCAPS_MONO_DITHER 0x00000400
287 #define GCAPS_ASYNCCHANGE 0x00000800
288 #define GCAPS_ASYNCMOVE 0x00001000
289 #define GCAPS_DONTJOURNAL 0x00002000
290 #define GCAPS_DIRECTDRAW 0x00004000
291 #define GCAPS_ARBRUSHOPAQUE 0x00008000
292 #define GCAPS_PANNING 0x00010000
293 #define GCAPS_HIGHRESTEXT 0x00040000
294 #define GCAPS_PALMANAGED 0x00080000
295 #define GCAPS_DITHERONREALIZE 0x00200000
296 #define GCAPS_NO64BITMEMACCESS 0x00400000
297 #define GCAPS_FORCEDITHER 0x00800000
298 #define GCAPS_GRAY16 0x01000000
299 #define GCAPS_ICM 0x02000000
300 #define GCAPS_CMYKCOLOR 0x04000000
301 #define GCAPS_LAYERED 0x08000000
302 #define GCAPS_ARBRUSHTEXT 0x10000000
303 #define GCAPS_SCREENPRECISION 0x20000000
304 #define GCAPS_FONT_RASTERIZER 0x40000000
305 #define GCAPS_NUP 0x80000000
307 /* DEVINFO.iDitherFormat constants */
319 /* DEVINFO.flGraphicsCaps2 flags */
320 #define GCAPS2_JPEGSRC 0x00000001
321 #define GCAPS2_xxxx 0x00000002
322 #define GCAPS2_PNGSRC 0x00000008
323 #define GCAPS2_CHANGEGAMMARAMP 0x00000010
324 #define GCAPS2_ALPHACURSOR 0x00000020
325 #define GCAPS2_SYNCFLUSH 0x00000040
326 #define GCAPS2_SYNCTIMER 0x00000080
327 #define GCAPS2_ICD_MULTIMON 0x00000100
328 #define GCAPS2_MOUSETRAILS 0x00000200
329 #define GCAPS2_RESERVED1 0x00000400
331 typedef struct _DEVINFO
{
332 FLONG flGraphicsCaps
;
333 LOGFONTW lfDefaultFont
;
334 LOGFONTW lfAnsiVarFont
;
335 LOGFONTW lfAnsiFixFont
;
340 HPALETTE hpalDefault
;
341 FLONG flGraphicsCaps2
;
342 } DEVINFO
, *PDEVINFO
;
344 typedef struct _DRIVEROBJ
*PDRIVEROBJ
;
346 typedef BOOL DDKAPI CALLBACK
348 IN PDRIVEROBJ pDriverObj
);
350 typedef struct _DRIVEROBJ
{
352 FREEOBJPROC pFreeProc
;
357 /* DRVFN.iFunc constants */
358 #define INDEX_DrvEnablePDEV 0L
359 #define INDEX_DrvCompletePDEV 1L
360 #define INDEX_DrvDisablePDEV 2L
361 #define INDEX_DrvEnableSurface 3L
362 #define INDEX_DrvDisableSurface 4L
363 #define INDEX_DrvAssertMode 5L
364 #define INDEX_DrvOffset 6L
365 #define INDEX_DrvResetPDEV 7L
366 #define INDEX_DrvDisableDriver 8L
367 #define INDEX_DrvCreateDeviceBitmap 10L
368 #define INDEX_DrvDeleteDeviceBitmap 11L
369 #define INDEX_DrvRealizeBrush 12L
370 #define INDEX_DrvDitherColor 13L
371 #define INDEX_DrvStrokePath 14L
372 #define INDEX_DrvFillPath 15L
373 #define INDEX_DrvStrokeAndFillPath 16L
374 #define INDEX_DrvPaint 17L
375 #define INDEX_DrvBitBlt 18L
376 #define INDEX_DrvCopyBits 19L
377 #define INDEX_DrvStretchBlt 20L
378 #define INDEX_DrvSetPalette 22L
379 #define INDEX_DrvTextOut 23L
380 #define INDEX_DrvEscape 24L
381 #define INDEX_DrvDrawEscape 25L
382 #define INDEX_DrvQueryFont 26L
383 #define INDEX_DrvQueryFontTree 27L
384 #define INDEX_DrvQueryFontData 28L
385 #define INDEX_DrvSetPointerShape 29L
386 #define INDEX_DrvMovePointer 30L
387 #define INDEX_DrvLineTo 31L
388 #define INDEX_DrvSendPage 32L
389 #define INDEX_DrvStartPage 33L
390 #define INDEX_DrvEndDoc 34L
391 #define INDEX_DrvStartDoc 35L
392 #define INDEX_DrvGetGlyphMode 37L
393 #define INDEX_DrvSynchronize 38L
394 #define INDEX_DrvSaveScreenBits 40L
395 #define INDEX_DrvGetModes 41L
396 #define INDEX_DrvFree 42L
397 #define INDEX_DrvDestroyFont 43L
398 #define INDEX_DrvQueryFontCaps 44L
399 #define INDEX_DrvLoadFontFile 45L
400 #define INDEX_DrvUnloadFontFile 46L
401 #define INDEX_DrvFontManagement 47L
402 #define INDEX_DrvQueryTrueTypeTable 48L
403 #define INDEX_DrvQueryTrueTypeOutline 49L
404 #define INDEX_DrvGetTrueTypeFile 50L
405 #define INDEX_DrvQueryFontFile 51L
406 #define INDEX_DrvMovePanning 52L
407 #define INDEX_DrvQueryAdvanceWidths 53L
408 #define INDEX_DrvSetPixelFormat 54L
409 #define INDEX_DrvDescribePixelFormat 55L
410 #define INDEX_DrvSwapBuffers 56L
411 #define INDEX_DrvStartBanding 57L
412 #define INDEX_DrvNextBand 58L
413 #define INDEX_DrvGetDirectDrawInfo 59L
414 #define INDEX_DrvEnableDirectDraw 60L
415 #define INDEX_DrvDisableDirectDraw 61L
416 #define INDEX_DrvQuerySpoolType 62L
417 #define INDEX_DrvIcmCreateColorTransform 64L
418 #define INDEX_DrvIcmDeleteColorTransform 65L
419 #define INDEX_DrvIcmCheckBitmapBits 66L
420 #define INDEX_DrvIcmSetDeviceGammaRamp 67L
421 #define INDEX_DrvGradientFill 68L
422 #define INDEX_DrvStretchBltROP 69L
423 #define INDEX_DrvPlgBlt 70L
424 #define INDEX_DrvAlphaBlend 71L
425 #define INDEX_DrvSynthesizeFont 72L
426 #define INDEX_DrvGetSynthesizedFontFiles 73L
427 #define INDEX_DrvTransparentBlt 74L
428 #define INDEX_DrvQueryPerBandInfo 75L
429 #define INDEX_DrvQueryDeviceSupport 76L
430 #define INDEX_DrvReserved1 77L
431 #define INDEX_DrvReserved2 78L
432 #define INDEX_DrvReserved3 79L
433 #define INDEX_DrvReserved4 80L
434 #define INDEX_DrvReserved5 81L
435 #define INDEX_DrvReserved6 82L
436 #define INDEX_DrvReserved7 83L
437 #define INDEX_DrvReserved8 84L
438 #define INDEX_DrvDeriveSurface 85L
439 #define INDEX_DrvQueryGlyphAttrs 86L
440 #define INDEX_DrvNotify 87L
441 #define INDEX_DrvSynchronizeSurface 88L
442 #define INDEX_DrvResetDevice 89L
443 #define INDEX_DrvReserved9 90L
444 #define INDEX_DrvReserved10 91L
445 #define INDEX_DrvReserved11 92L
446 #define INDEX_LAST 93L
448 typedef struct _DRVFN
{
453 /* DRVENABLEDATA.iDriverVersion constants */
454 #define DDI_DRIVER_VERSION_NT4 0x00020000
455 #define DDI_DRIVER_VERSION_SP3 0x00020003
456 #define DDI_DRIVER_VERSION_NT5 0x00030000
457 #define DDI_DRIVER_VERSION_NT5_01 0x00030100
459 typedef struct _DRVENABLEDATA
{
460 ULONG iDriverVersion
;
463 } DRVENABLEDATA
, *PDRVENABLEDATA
;
465 DECLARE_HANDLE(HSEMAPHORE
);
467 typedef struct _ENGSAFESEMAPHORE
{
472 typedef struct _ENG_TIME_FIELDS
{
479 USHORT usMilliseconds
;
481 } ENG_TIME_FIELDS
, *PENG_TIME_FIELDS
;
483 typedef struct _ENUMRECTS
{
488 typedef struct _FD_XFORM
{
493 } FD_XFORM
, *PFD_XFORM
;
495 /* FD_DEVICEMETRICS.flRealizedType constants */
496 #define FDM_TYPE_BM_SIDE_CONST 0x00000001
497 #define FDM_TYPE_MAXEXT_EQUAL_BM_SIDE 0x00000002
498 #define FDM_TYPE_CHAR_INC_EQUAL_BM_BASE 0x00000004
499 #define FDM_TYPE_ZERO_BEARINGS 0x00000008
500 #define FDM_TYPE_CONST_BEARINGS 0x00000010
502 typedef struct _FD_DEVICEMETRICS
{
503 FLONG flRealizedType
;
509 POINTL ptlUnderline1
;
511 POINTL ptlULThickness
;
512 POINTL ptlSOThickness
;
516 FD_XFORM fdxQuantized
;
517 LONG lNonLinearExtLeading
;
518 LONG lNonLinearIntLeading
;
519 LONG lNonLinearMaxCharWidth
;
520 LONG lNonLinearAvgCharWidth
;
525 } FD_DEVICEMETRICS
, *PFD_DEVICEMETRICS
;
527 /* FD_GLYPHATTR.iMode constants */
528 #define FO_ATTR_MODE_ROTATE 1
530 typedef struct _FD_GLYPHATTR
{
535 } FD_GLYPHATTR
, *PFD_GLYPHATTR
;
537 /* FD_GLYPHSET.flAccel */
538 #define GS_UNICODE_HANDLES 0x00000001
539 #define GS_8BIT_HANDLES 0x00000002
540 #define GS_16BIT_HANDLES 0x00000004
542 typedef struct _WCRUN
{
548 typedef struct _FD_GLYPHSET
{
551 ULONG cGlyphsSupported
;
554 } FD_GLYPHSET
, *PFD_GLYPHSET
;
556 typedef struct _FD_KERNINGPAIR
{
562 typedef struct _FLOATOBJ
566 } FLOATOBJ
, *PFLOATOBJ
;
568 typedef struct _FLOATOBJ_XFORM
{
575 } FLOATOBJ_XFORM
, *PFLOATOBJ_XFORM
, FAR
*LPFLOATOBJ_XFORM
;
577 /* FONTDIFF.fsSelection */
578 #define FM_SEL_ITALIC 0x0001
579 #define FM_SEL_UNDERSCORE 0x0002
580 #define FM_SEL_NEGATIVE 0x0004
581 #define FM_SEL_OUTLINED 0x0008
582 #define FM_SEL_STRIKEOUT 0x0010
583 #define FM_SEL_BOLD 0x0020
584 #define FM_SEL_REGULAR 0x0040
586 typedef struct _FONTDIFF
{
593 FWORD fwdAveCharWidth
;
598 typedef struct _FONTSIM
{
601 PTRDIFF dpBoldItalic
;
604 /* FONTINFO.flCaps constants */
605 #define FO_DEVICE_FONT 1L
606 #define FO_OUTLINE_CAPABLE 2L
608 typedef struct _FONTINFO
{
611 ULONG cGlyphsSupported
;
616 } FONTINFO
, *PFONTINFO
;
618 /* FONTOBJ.flFontType constants */
619 #define FO_TYPE_RASTER RASTER_FONTTYPE
620 #define FO_TYPE_DEVICE DEVICE_FONTTYPE
621 #define FO_TYPE_TRUETYPE TRUETYPE_FONTTYPE
622 #define FO_TYPE_OPENTYPE OPENTYPE_FONTTYPE
624 #define FO_SIM_BOLD 0x00002000
625 #define FO_SIM_ITALIC 0x00004000
626 #define FO_EM_HEIGHT 0x00008000
627 #define FO_GRAY16 0x00010000
628 #define FO_NOGRAY16 0x00020000
629 #define FO_NOHINTS 0x00040000
630 #define FO_NO_CHOICE 0x00080000
631 #define FO_CFF 0x00100000
632 #define FO_POSTSCRIPT 0x00200000
633 #define FO_MULTIPLEMASTER 0x00400000
634 #define FO_VERT_FACE 0x00800000
635 #define FO_DBCS_FONT 0X01000000
636 #define FO_NOCLEARTYPE 0x02000000
637 #define FO_CLEARTYPE_X 0x10000000
638 #define FO_CLEARTYPE_Y 0x20000000
640 typedef struct _FONTOBJ
{
653 typedef struct _GAMMARAMP
{
657 } GAMMARAMP
, *PGAMMARAMP
;
659 /* GDIINFO.ulPrimaryOrder constants */
660 #define PRIMARY_ORDER_ABC 0
661 #define PRIMARY_ORDER_ACB 1
662 #define PRIMARY_ORDER_BAC 2
663 #define PRIMARY_ORDER_BCA 3
664 #define PRIMARY_ORDER_CBA 4
665 #define PRIMARY_ORDER_CAB 5
667 /* GDIINFO.ulHTPatternSize constants */
668 #define HT_PATSIZE_2x2 0
669 #define HT_PATSIZE_2x2_M 1
670 #define HT_PATSIZE_4x4 2
671 #define HT_PATSIZE_4x4_M 3
672 #define HT_PATSIZE_6x6 4
673 #define HT_PATSIZE_6x6_M 5
674 #define HT_PATSIZE_8x8 6
675 #define HT_PATSIZE_8x8_M 7
676 #define HT_PATSIZE_10x10 8
677 #define HT_PATSIZE_10x10_M 9
678 #define HT_PATSIZE_12x12 10
679 #define HT_PATSIZE_12x12_M 11
680 #define HT_PATSIZE_14x14 12
681 #define HT_PATSIZE_14x14_M 13
682 #define HT_PATSIZE_16x16 14
683 #define HT_PATSIZE_16x16_M 15
684 #define HT_PATSIZE_SUPERCELL 16
685 #define HT_PATSIZE_SUPERCELL_M 17
686 #define HT_PATSIZE_USER 18
687 #define HT_PATSIZE_MAX_INDEX HT_PATSIZE_USER
688 #define HT_PATSIZE_DEFAULT HT_PATSIZE_SUPERCELL_M
689 #define HT_USERPAT_CX_MIN 4
690 #define HT_USERPAT_CX_MAX 256
691 #define HT_USERPAT_CY_MIN 4
692 #define HT_USERPAT_CY_MAX 256
694 /* GDIINFO.ulHTOutputFormat constants */
695 #define HT_FORMAT_1BPP 0
696 #define HT_FORMAT_4BPP 2
697 #define HT_FORMAT_4BPP_IRGB 3
698 #define HT_FORMAT_8BPP 4
699 #define HT_FORMAT_16BPP 5
700 #define HT_FORMAT_24BPP 6
701 #define HT_FORMAT_32BPP 7
703 /* GDIINFO.flHTFlags */
704 #define HT_FLAG_SQUARE_DEVICE_PEL 0x00000001
705 #define HT_FLAG_HAS_BLACK_DYE 0x00000002
706 #define HT_FLAG_ADDITIVE_PRIMS 0x00000004
707 #define HT_FLAG_USE_8BPP_BITMASK 0x00000008
708 #define HT_FLAG_INK_HIGH_ABSORPTION 0x00000010
709 #define HT_FLAG_INK_ABSORPTION_INDICES 0x00000060
710 #define HT_FLAG_DO_DEVCLR_XFORM 0x00000080
711 #define HT_FLAG_OUTPUT_CMY 0x00000100
712 #define HT_FLAG_PRINT_DRAFT_MODE 0x00000200
713 #define HT_FLAG_INVERT_8BPP_BITMASK_IDX 0x00000400
714 #define HT_FLAG_8BPP_CMY332_MASK 0xFF000000
716 #define MAKE_CMYMASK_BYTE(c,m,y) ((BYTE)(((BYTE)(c) & 0x07) << 5) \
717 |(BYTE)(((BYTE)(m) & 0x07) << 2) \
718 |(BYTE)((BYTE)(y) & 0x03))
720 #define MAKE_CMY332_MASK(c,m,y) ((DWORD)(((DWORD)(c) & 0x07) << 29)\
721 |(DWORD)(((DWORD)(m) & 0x07) << 26)\
722 |(DWORD)(((DWORD)(y) & 0x03) << 24))
724 /* GDIINFO.flHTFlags constants */
725 #define HT_FLAG_INK_ABSORPTION_IDX0 0x00000000
726 #define HT_FLAG_INK_ABSORPTION_IDX1 0x00000020
727 #define HT_FLAG_INK_ABSORPTION_IDX2 0x00000040
728 #define HT_FLAG_INK_ABSORPTION_IDX3 0x00000060
730 #define HT_FLAG_HIGHEST_INK_ABSORPTION (HT_FLAG_INK_HIGH_ABSORPTION \
731 |HT_FLAG_INK_ABSORPTION_IDX3)
732 #define HT_FLAG_HIGHER_INK_ABSORPTION (HT_FLAG_INK_HIGH_ABSORPTION \
733 |HT_FLAG_INK_ABSORPTION_IDX2)
734 #define HT_FLAG_HIGH_INK_ABSORPTION (HT_FLAG_INK_HIGH_ABSORPTION \
735 |HT_FLAG_INK_ABSORPTION_IDX1)
736 #define HT_FLAG_NORMAL_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX0
737 #define HT_FLAG_LOW_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX1
738 #define HT_FLAG_LOWER_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX2
739 #define HT_FLAG_LOWEST_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX3
741 #define HT_BITMASKPALRGB (DWORD)'0BGR'
742 #define HT_SET_BITMASKPAL2RGB(pPal) (*((LPDWORD)(pPal)) = HT_BITMASKPALRGB)
743 #define HT_IS_BITMASKPALRGB(pPal) (*((LPDWORD)(pPal)) == (DWORD)0)
745 /* GDIINFO.ulPhysicalPixelCharacteristics constants */
746 #define PPC_DEFAULT 0x0
747 #define PPC_UNDEFINED 0x1
748 #define PPC_RGB_ORDER_VERTICAL_STRIPES 0x2
749 #define PPC_BGR_ORDER_VERTICAL_STRIPES 0x3
750 #define PPC_RGB_ORDER_HORIZONTAL_STRIPES 0x4
751 #define PPC_BGR_ORDER_HORIZONTAL_STRIPES 0x5
753 #define PPG_DEFAULT 0
756 typedef struct _GDIINFO
{
779 POINTL ptlPhysOffset
;
783 ULONG ulDevicePelsDPI
;
784 ULONG ulPrimaryOrder
;
785 ULONG ulHTPatternSize
;
786 ULONG ulHTOutputFormat
;
789 ULONG ulBltAlignment
;
790 ULONG ulPanningHorzRes
;
791 ULONG ulPanningVertRes
;
792 ULONG xPanningAlignment
;
793 ULONG yPanningAlignment
;
800 ULONG ulPhysicalPixelCharacteristics
;
801 ULONG ulPhysicalPixelGamma
;
802 } GDIINFO
, *PGDIINFO
;
804 /* PATHDATA.flags constants */
805 #define PD_BEGINSUBPATH 0x00000001
806 #define PD_ENDSUBPATH 0x00000002
807 #define PD_RESETSTYLE 0x00000004
808 #define PD_CLOSEFIGURE 0x00000008
809 #define PD_BEZIERS 0x00000010
810 #define PD_ALL (PD_BEGINSUBPATH \
816 typedef struct _PATHDATA
{
820 } PATHDATA
, *PPATHDATA
;
822 /* PATHOBJ.fl constants */
823 #define PO_BEZIERS 0x00000001
824 #define PO_ELLIPSE 0x00000002
825 #define PO_ALL_INTEGERS 0x00000004
826 #define PO_ENUM_AS_INTEGERS 0x00000008
828 typedef struct _PATHOBJ
{
833 typedef struct _GLYPHBITS
{
839 typedef union _GLYPHDEF
{
844 typedef struct _GLYPHPOS
{
848 } GLYPHPOS
, *PGLYPHPOS
;
850 typedef struct _GLYPHDATA
{
862 typedef struct _IFIEXTRA
{
866 PTRDIFF dpDesignVector
;
868 ULONG aulReserved
[1];
869 } IFIEXTRA
, *PIFIEXTRA
;
871 /* IFIMETRICS constants */
873 #define FM_VERSION_NUMBER 0x0
875 /* IFIMETRICS.fsType constants */
876 #define FM_TYPE_LICENSED 0x2
877 #define FM_READONLY_EMBED 0x4
878 #define FM_EDITABLE_EMBED 0x8
879 #define FM_NO_EMBEDDING FM_TYPE_LICENSED
881 /* IFIMETRICS.flInfo constants */
882 #define FM_INFO_TECH_TRUETYPE 0x00000001
883 #define FM_INFO_TECH_BITMAP 0x00000002
884 #define FM_INFO_TECH_STROKE 0x00000004
885 #define FM_INFO_TECH_OUTLINE_NOT_TRUETYPE 0x00000008
886 #define FM_INFO_ARB_XFORMS 0x00000010
887 #define FM_INFO_1BPP 0x00000020
888 #define FM_INFO_4BPP 0x00000040
889 #define FM_INFO_8BPP 0x00000080
890 #define FM_INFO_16BPP 0x00000100
891 #define FM_INFO_24BPP 0x00000200
892 #define FM_INFO_32BPP 0x00000400
893 #define FM_INFO_INTEGER_WIDTH 0x00000800
894 #define FM_INFO_CONSTANT_WIDTH 0x00001000
895 #define FM_INFO_NOT_CONTIGUOUS 0x00002000
896 #define FM_INFO_TECH_MM 0x00004000
897 #define FM_INFO_RETURNS_OUTLINES 0x00008000
898 #define FM_INFO_RETURNS_STROKES 0x00010000
899 #define FM_INFO_RETURNS_BITMAPS 0x00020000
900 #define FM_INFO_DSIG 0x00040000
901 #define FM_INFO_RIGHT_HANDED 0x00080000
902 #define FM_INFO_INTEGRAL_SCALING 0x00100000
903 #define FM_INFO_90DEGREE_ROTATIONS 0x00200000
904 #define FM_INFO_OPTICALLY_FIXED_PITCH 0x00400000
905 #define FM_INFO_DO_NOT_ENUMERATE 0x00800000
906 #define FM_INFO_ISOTROPIC_SCALING_ONLY 0x01000000
907 #define FM_INFO_ANISOTROPIC_SCALING_ONLY 0x02000000
908 #define FM_INFO_TECH_CFF 0x04000000
909 #define FM_INFO_FAMILY_EQUIV 0x08000000
910 #define FM_INFO_DBCS_FIXED_PITCH 0x10000000
911 #define FM_INFO_NONNEGATIVE_AC 0x20000000
912 #define FM_INFO_IGNORE_TC_RA_ABLE 0x40000000
913 #define FM_INFO_TECH_TYPE1 0x80000000
915 #define MAXCHARSETS 16
917 /* IFIMETRICS.ulPanoseCulture constants */
918 #define FM_PANOSE_CULTURE_LATIN 0x0
920 typedef struct _IFIMETRICS
{
923 PTRDIFF dpwszFamilyName
;
924 PTRDIFF dpwszStyleName
;
925 PTRDIFF dpwszFaceName
;
926 PTRDIFF dpwszUniqueName
;
933 BYTE jWinPitchAndFamily
;
940 FWORD fwdWinAscender
;
941 FWORD fwdWinDescender
;
942 FWORD fwdMacAscender
;
943 FWORD fwdMacDescender
;
945 FWORD fwdTypoAscender
;
946 FWORD fwdTypoDescender
;
947 FWORD fwdTypoLineGap
;
948 FWORD fwdAveCharWidth
;
952 FWORD fwdSubscriptXSize
;
953 FWORD fwdSubscriptYSize
;
954 FWORD fwdSubscriptXOffset
;
955 FWORD fwdSubscriptYOffset
;
956 FWORD fwdSuperscriptXSize
;
957 FWORD fwdSuperscriptYSize
;
958 FWORD fwdSuperscriptXOffset
;
959 FWORD fwdSuperscriptYOffset
;
960 FWORD fwdUnderscoreSize
;
961 FWORD fwdUnderscorePosition
;
962 FWORD fwdStrikeoutSize
;
963 FWORD fwdStrikeoutPosition
;
978 ULONG ulPanoseCulture
;
983 } IFIMETRICS
, *PIFIMETRICS
;
986 #define LA_GEOMETRIC 0x00000001
987 #define LA_ALTERNATE 0x00000002
988 #define LA_STARTGAP 0x00000004
989 #define LA_STYLED 0x00000008
991 /* LINEATTRS.iJoin */
992 #define JOIN_ROUND 0L
993 #define JOIN_BEVEL 1L
994 #define JOIN_MITER 2L
996 /* LINEATTRS.iEndCap */
997 #define ENDCAP_ROUND 0L
998 #define ENDCAP_SQUARE 1L
999 #define ENDCAP_BUTT 2L
1001 typedef struct _LINEATTRS
{
1009 FLOAT_LONG elStyleState
;
1010 } LINEATTRS
, *PLINEATTRS
;
1012 typedef struct _PALOBJ
{
1016 typedef struct _PERBANDINFO
{
1017 BOOL bRepeatThisBand
;
1021 } PERBANDINFO
, *PPERBANDINFO
;
1023 /* STROBJ.flAccel constants */
1024 #define SO_FLAG_DEFAULT_PLACEMENT 0x00000001
1025 #define SO_HORIZONTAL 0x00000002
1026 #define SO_VERTICAL 0x00000004
1027 #define SO_REVERSED 0x00000008
1028 #define SO_ZERO_BEARINGS 0x00000010
1029 #define SO_CHAR_INC_EQUAL_BM_BASE 0x00000020
1030 #define SO_MAXEXT_EQUAL_BM_SIDE 0x00000040
1031 #define SO_DO_NOT_SUBSTITUTE_DEVICE_FONT 0x00000080
1032 #define SO_GLYPHINDEX_TEXTOUT 0x00000100
1033 #define SO_ESC_NOT_ORIENT 0x00000200
1034 #define SO_DXDY 0x00000400
1035 #define SO_CHARACTER_EXTRA 0x00000800
1036 #define SO_BREAK_EXTRA 0x00001000
1038 typedef struct _STROBJ
{
1047 typedef struct _SURFACEALIGNMENT
{
1050 DWORD dwStartAlignment
;
1051 DWORD dwPitchAlignment
;
1062 } SURFACEALIGNMENT
, *LPSURFACEALIGNMENT
;
1064 /* SURFOBJ.iType constants */
1065 #define STYPE_BITMAP 0L
1066 #define STYPE_DEVICE 1L
1067 #define STYPE_DEVBITMAP 3L
1069 /* SURFOBJ.fjBitmap constants */
1070 #define BMF_TOPDOWN 0x0001
1071 #define BMF_NOZEROINIT 0x0002
1072 #define BMF_DONTCACHE 0x0004
1073 #define BMF_USERMEM 0x0008
1074 #define BMF_KMSECTION 0x0010
1075 #define BMF_NOTSYSMEM 0x0020
1076 #define BMF_WINDOW_BLT 0x0040
1077 #define BMF_UMPDMEM 0x0080
1078 #define BMF_RESERVED 0xFF00
1080 typedef struct _SURFOBJ
{
1091 ULONG iBitmapFormat
;
1096 typedef struct _TYPE1_FONT
{
1102 typedef struct _WNDOBJ
{
1109 typedef struct _XFORML
{
1118 typedef struct _XFORMOBJ
{
1122 /* XLATEOBJ.flXlate constants */
1123 #define XO_TRIVIAL 0x00000001
1124 #define XO_TABLE 0x00000002
1125 #define XO_TO_MONO 0x00000004
1126 #define XO_FROM_CMYK 0x00000008
1127 #define XO_DEVICE_ICM 0x00000010
1128 #define XO_HOST_ICM 0x00000020
1130 typedef struct _XLATEOBJ
{
1139 typedef VOID
DDKAPI (CALLBACK
*WNDOBJCHANGEPROC
)(
1147 BRUSHOBJ_hGetColorTransform(
1153 BRUSHOBJ_pvAllocRbrush(
1160 BRUSHOBJ_pvGetRbrush(
1166 BRUSHOBJ_ulGetBrushColor(
1177 /* CLIPOBJ_cEnumStart.iType constants */
1178 #define CT_RECTANGLES 0L
1180 /* CLIPOBJ_cEnumStart.iDirection constants */
1181 #define CD_RIGHTDOWN 0x00000000
1182 #define CD_LEFTDOWN 0x00000001
1183 #define CD_LEFTWARDS 0x00000001
1184 #define CD_RIGHTUP 0x00000002
1185 #define CD_UPWARDS 0x00000002
1186 #define CD_LEFTUP 0x00000003
1187 #define CD_ANY 0x00000004
1196 IN ULONG iDirection
,
1208 EngAcquireSemaphore(
1209 IN HSEMAPHORE hsem
);
1211 #define FL_ZERO_MEMORY 0x00000001
1212 #define FL_NONPAGED_MEMORY 0x00000002
1225 EngAllocPrivateUserMem(
1226 IN PDD_SURFACE_LOCAL psl
,
1241 IN SURFOBJ
*psoDest
,
1247 IN BLENDOBJ
*pBlendObj
);
1249 /* EngAssociateSurface.flHooks constants */
1250 #define HOOK_BITBLT 0x00000001
1251 #define HOOK_STRETCHBLT 0x00000002
1252 #define HOOK_PLGBLT 0x00000004
1253 #define HOOK_TEXTOUT 0x00000008
1254 #define HOOK_PAINT 0x00000010
1255 #define HOOK_STROKEPATH 0x00000020
1256 #define HOOK_FILLPATH 0x00000040
1257 #define HOOK_STROKEANDFILLPATH 0x00000080
1258 #define HOOK_LINETO 0x00000100
1259 #define HOOK_COPYBITS 0x00000400
1260 #define HOOK_MOVEPANNING 0x00000800
1261 #define HOOK_SYNCHRONIZE 0x00001000
1262 #define HOOK_STRETCHBLTROP 0x00002000
1263 #define HOOK_SYNCHRONIZEACCESS 0x00004000
1264 #define HOOK_TRANSPARENTBLT 0x00008000
1265 #define HOOK_ALPHABLEND 0x00010000
1266 #define HOOK_GRADIENTFILL 0x00020000
1267 #define HOOK_FLAGS 0x0003b5ff
1272 EngAssociateSurface(
1283 IN SURFOBJ
*psoMask
,
1288 IN POINTL
*pptlMask
,
1290 IN POINTL
*pptlBrush
,
1313 /* EngControlSprites.fl constants */
1314 #define ECS_TEARDOWN 0x00000001
1315 #define ECS_REDRAW 0x00000002
1328 OUT SURFOBJ
*psoDest
,
1333 IN POINTL
*pptlSrc
);
1354 EngCreateDeviceBitmap(
1357 IN ULONG iFormatCompat
);
1362 EngCreateDeviceSurface(
1365 ULONG iFormatCompat
);
1373 FREEOBJPROC pFreeObjProc
,
1381 OUT PEVENT
*ppEvent
);
1383 /* EngCreatePalette.iMode constants */
1384 #define PAL_INDEXED 0x00000001
1385 #define PAL_BITFIELDS 0x00000002
1386 #define PAL_RGB 0x00000004
1387 #define PAL_BGR 0x00000008
1388 #define PAL_CMYK 0x00000010
1396 IN ULONG
*pulColors
,
1413 /* EngCreateWnd.fl constants */
1414 #define WO_RGN_CLIENT_DELTA 0x00000001
1415 #define WO_RGN_CLIENT 0x00000002
1416 #define WO_RGN_SURFACE_DELTA 0x00000004
1417 #define WO_RGN_SURFACE 0x00000008
1418 #define WO_RGN_UPDATE_ALL 0x00000010
1419 #define WO_RGN_WINDOW 0x00000020
1420 #define WO_DRAW_NOTIFY 0x00000040
1421 #define WO_SPRITE_NOTIFY 0x00000080
1422 #define WO_RGN_DESKTOP_COORD 0x00000100
1430 WNDOBJCHANGEPROC pfn
,
1444 IN PCHAR StandardPrefix
,
1445 IN PCHAR DebugMessage
,
1472 IN LPWSTR pwszFileName
);
1489 EngDeleteSafeSemaphore(
1490 IN OUT ENGSAFESEMAPHORE
*pssem
);
1496 IN OUT HSEMAPHORE hsem
);
1515 IN DWORD dwIoControlCode
,
1516 IN LPVOID lpInBuffer
,
1517 IN DWORD nInBufferSize
,
1518 IN OUT LPVOID lpOutBuffer
,
1519 IN DWORD nOutBufferSize
,
1520 OUT LPDWORD lpBytesReturned
);
1539 OUT LPDWORD pcbNeeded
,
1540 OUT LPDWORD pcReturned
);
1558 IN POINTL
*pptlBrushOrg
,
1560 IN FLONG flOptions
);
1565 EngFindImageProcAddress(
1567 IN LPSTR lpProcName
);
1576 OUT PULONG pulSize
);
1582 IN ULONG FastCheckSum
,
1585 /* EngFntCacheFault.iFaultMode constants */
1586 #define ENG_FNT_CACHE_READ_FAULT 0x00000001
1587 #define ENG_FNT_CACHE_WRITE_FAULT 0x00000002
1593 IN ULONG ulFastCheckSum
,
1594 IN ULONG iFaultMode
);
1600 IN ULONG FastCheckSum
,
1601 OUT ULONG
*pulSize
);
1618 EngFreePrivateUserMem(
1619 IN PDD_SURFACE_LOCAL psl
,
1631 EngGetCurrentCodePage(
1632 OUT PUSHORT OemCodePage
,
1633 OUT PUSHORT AnsiCodePage
);
1638 EngGetCurrentProcessId(
1644 EngGetCurrentThreadId(
1656 EngGetFileChangeTime(
1658 OUT LARGE_INTEGER
*pChangeTime
);
1665 OUT
WCHAR (*pDest
)[MAX_PATH
+1]);
1672 IN LPWSTR pFormName
,
1676 OUT LPDWORD pcbNeeded
);
1690 OUT LPBYTE pPrinter
,
1692 OUT LPDWORD pcbNeeded
);
1699 IN LPWSTR pValueName
,
1703 OUT LPDWORD pcbNeeded
);
1708 EngGetPrinterDataFileName(
1714 EngGetPrinterDriver(
1716 IN LPWSTR pEnvironment
,
1718 OUT BYTE
*lpbDrvInfo
,
1720 OUT DWORD
*pcbNeeded
);
1725 EngGetProcessHandle(
1731 EngGetType1FontList(
1733 OUT TYPE1_FONT
*pType1Buffer
,
1734 IN ULONG cjType1Buffer
,
1735 OUT PULONG pulLocalFonts
,
1736 OUT PULONG pulRemoteFonts
,
1737 OUT LARGE_INTEGER
*pLastModified
);
1743 IN SURFOBJ
*psoDest
,
1746 IN TRIVERTEX
*pVertex
,
1750 IN RECTL
*prclExtents
,
1751 IN POINTL
*pptlDitherOrg
,
1754 /* EngHangNotification return values */
1755 #define EHN_RESTORED 0x00000000
1756 #define EHN_ERROR 0x00000001
1761 EngHangNotification(
1768 EngInitializeSafeSemaphore(
1769 OUT ENGSAFESEMAPHORE
*pssem
);
1774 EngIsSemaphoreOwned(
1775 IN HSEMAPHORE hsem
);
1780 EngIsSemaphoreOwnedByCurrentThread(
1781 IN HSEMAPHORE hsem
);
1801 IN LPWSTR pwszDriver
);
1812 EngLoadModuleForWrite(
1814 IN ULONG cjSizeOfModule
);
1819 EngLockDirectDrawSurface(
1820 IN HANDLE hSurface
);
1845 IN HANDLE hUserObject
,
1848 IN PVOID Reserved3
);
1856 OUT ULONG_PTR
*piFile
);
1884 EngMarkBandingSurface(
1887 /* EngModifySurface.flSurface constants */
1888 #define MS_NOTSYSTEMMEMORY 0x00000001
1889 #define MS_SHAREDACCESS 0x00000002
1902 IN VOID
*pvReserved
);
1924 EngMultiByteToUnicodeN(
1925 OUT LPWSTR UnicodeString
,
1926 IN ULONG MaxBytesInUnicodeString
,
1927 OUT PULONG BytesInUnicodeString
,
1928 IN PCHAR MultiByteString
,
1929 IN ULONG BytesInMultiByteString
);
1934 EngMultiByteToWideChar(
1936 OUT LPWSTR WideCharString
,
1937 IN INT BytesInWideCharString
,
1938 IN LPSTR MultiByteString
,
1939 IN INT BytesInMultiByteString
);
1948 IN POINTL
*pptlBrushOrg
,
1960 IN COLORADJUSTMENT
*pca
,
1961 IN POINTL
*pptlBrushOrg
,
1973 IN ULONG Alignment
);
1978 EngProbeForReadAndWrite(
1981 IN ULONG Alignment
);
1983 typedef enum _ENG_DEVICE_ATTRIBUTE
{
1985 QDA_ACCELERATION_LEVEL
1986 } ENG_DEVICE_ATTRIBUTE
;
1991 EngQueryDeviceAttribute(
1993 IN ENG_DEVICE_ATTRIBUTE devAttr
,
1997 OUT ULONG ulOutSize
);
2002 EngQueryFileTimeStamp(
2009 OUT PENG_TIME_FIELDS ptf
);
2018 OUT ULONG
*pulColors
);
2023 EngQueryPerformanceCounter(
2024 OUT LONGLONG
*pPerformanceCount
);
2029 EngQueryPerformanceFrequency(
2030 OUT LONGLONG
*pFrequency
);
2032 typedef enum _ENG_SYSTEM_ATTRIBUTE
{
2033 EngProcessorFeature
= 1,
2034 EngNumberOfProcessors
,
2035 EngOptimumAvailableUserMemory
,
2036 EngOptimumAvailableSystemMemory
,
2037 } ENG_SYSTEM_ATTRIBUTE
;
2039 #define QSA_MMX 0x00000100
2040 #define QSA_SSE 0x00002000
2041 #define QSA_3DNOW 0x00004000
2046 EngQuerySystemAttribute(
2047 IN ENG_SYSTEM_ATTRIBUTE CapNum
,
2048 OUT PDWORD pCapability
);
2059 EngReleaseSemaphore(
2060 IN HSEMAPHORE hsem
);
2065 EngRestoreFloatingPointState(
2071 EngSaveFloatingPointState(
2073 IN ULONG cjBufferSize
);
2099 IN SURFOBJ
*psoMask
,
2100 IN SURFOBJ
*psoColor
,
2114 IN SURFOBJ
*psoMask
,
2115 IN SURFOBJ
*psoColor
,
2126 IN LPBYTE lpbPrinterData
,
2127 IN DWORD cjPrinterData
);
2129 typedef int DDKCDECLAPI (*SORTCOMP
)(const void *pv1
, const void *pv2
);
2138 IN SORTCOMP pfnComp
);
2144 IN SURFOBJ
*psoDest
,
2146 IN SURFOBJ
*psoMask
,
2149 IN COLORADJUSTMENT
*pca
,
2150 IN POINTL pptlHTOrg
,
2153 IN POINTL
*pptlMask
,
2160 IN SURFOBJ
*psoDest
,
2162 IN SURFOBJ
*psoMask
,
2165 IN COLORADJUSTMENT
*pca
,
2166 IN POINTL
*pptlHTOrg
,
2169 IN POINTL
*pptlMask
,
2177 EngStrokeAndFillPath(
2182 IN BRUSHOBJ
*pboStroke
,
2183 IN LINEATTRS
*plineattrs
,
2184 IN BRUSHOBJ
*pboFill
,
2185 IN POINTL
*pptlBrushOrg
,
2187 IN FLONG flOptions
);
2198 IN POINTL
*pptlBrushOrg
,
2199 IN LINEATTRS
*plineattrs
,
2210 IN RECTL
*prclExtra
,
2211 IN RECTL
*prclOpaque
,
2212 IN BRUSHOBJ
*pboFore
,
2213 IN BRUSHOBJ
*pboOpaque
,
2227 IN ULONG iTransColor
,
2228 IN ULONG ulReserved
);
2233 EngUnicodeToMultiByteN(
2234 OUT PCHAR MultiByteString
,
2235 IN ULONG MaxBytesInMultiByteString
,
2236 OUT PULONG BytesInMultiByteString
,
2237 IN PWSTR UnicodeString
,
2238 IN ULONG BytesInUnicodeString
);
2249 EngUnlockDirectDrawSurface(
2250 IN PDD_SURFACE_LOCAL pSurface
);
2274 IN ULONG_PTR iFile
);
2286 IN ULONG_PTR iFile
);
2297 EngWaitForSingleObject(
2299 IN PLARGE_INTEGER pTimeOut
);
2304 EngWideCharToMultiByte(
2306 IN LPWSTR WideCharString
,
2307 IN INT BytesInWideCharString
,
2308 OUT LPSTR MultiByteString
,
2309 IN INT BytesInMultiByteString
);
2318 OUT LPDWORD pcWritten
);
2324 IN OUT PFLOATOBJ pf
,
2331 IN OUT PFLOATOBJ pf
,
2338 IN OUT PFLOATOBJ pf
,
2345 IN OUT PFLOATOBJ pf
,
2352 IN OUT PFLOATOBJ pf
,
2359 IN OUT PFLOATOBJ pf
,
2391 FLOATOBJ_GreaterThan(
2398 FLOATOBJ_GreaterThanLong(
2412 FLOATOBJ_LessThanLong(
2420 IN OUT PFLOATOBJ pf
,
2427 IN OUT PFLOATOBJ pf
,
2434 IN OUT PFLOATOBJ pf
,
2441 IN OUT PFLOATOBJ pf
);
2461 IN OUT PFLOATOBJ pf
,
2468 IN OUT PFLOATOBJ pf
,
2475 IN OUT PFLOATOBJ pf
,
2481 FONTOBJ_cGetAllGlyphHandles(
2493 OUT PVOID
**ppvGlyph
);
2510 FONTOBJ_pjOpenTypeTablePointer(
2513 OUT ULONG
*pcjTable
);
2518 FONTOBJ_pQueryGlyphAttrs(
2525 FONTOBJ_pvTrueTypeFontFile(
2527 OUT ULONG
*pcjFile
);
2532 FONTOBJ_pwszFontFilePaths(
2539 FONTOBJ_pxoGetXform(
2553 HeapVidMemAllocAligned(
2554 IN LPVIDMEM lpVidMem
,
2557 IN LPSURFACEALIGNMENT lpAlignment
,
2558 OUT LPLONG lpNewPitch
);
2563 HT_ComputeRGBGammaTable(
2564 IN USHORT GammaTableEntries
,
2565 IN USHORT GammaTableType
,
2567 IN USHORT GreenGamma
,
2568 IN USHORT BlueGamma
,
2569 OUT LPBYTE pGammaTable
);
2574 HT_Get8BPPFormatPalette(
2575 OUT LPPALETTEENTRY pPaletteEntry
,
2577 IN USHORT GreenGamma
,
2578 IN USHORT BlueGamma
);
2583 HT_Get8BPPMaskPalette(
2584 IN OUT LPPALETTEENTRY pPaletteEntry
,
2585 IN BOOL Use8BPPMaskPal
,
2588 IN USHORT GreenGamma
,
2589 IN USHORT BlueGamma
);
2594 HTUI_DeviceColorAdjustment(
2595 IN LPSTR pDeviceName
,
2596 OUT PDEVHTADJDATA pDevHTAdjData
);
2605 OUT ULONG
*pulColors
);
2610 PATHOBJ_bCloseFigure(
2623 PATHOBJ_bEnumClipLines(
2638 PATHOBJ_bPolyBezierTo(
2646 PATHOBJ_bPolyLineTo(
2660 PATHOBJ_vEnumStartClipLines(
2671 OUT PRECTFX prectfx
);
2679 OUT PGLYPHPOS
*ppgpos
);
2684 STROBJ_bEnumPositionsOnly(
2687 OUT PGLYPHOS
**ppgpos
);
2692 STROBJ_bGetAdvanceWidths(
2696 OUT POINTQF
*pptqD
);
2701 STROBJ_dwGetCodePage(
2707 STROBJ_fxBreakExtra(
2713 STROBJ_fxCharacterExtra(
2743 IN ULONG iDirection
,
2749 WNDOBJ_vSetConsumer(
2751 IN PVOID pvConsumer
);
2753 /* XFORMOBJ_bApplyXform.iMode constants */
2755 #define XF_INV_LTOL 1L
2757 #define XF_INV_FXTOL 3L
2762 XFORMOBJ_bApplyXform(
2772 XFORMOBJ_iGetFloatObjXform(
2774 OUT FLOATOBJ_XFORM
*pxfo
);
2781 OUT XFORML
*pxform
);
2783 /* XLATEOBJ_cGetPalette.iPal constants */
2784 #define XO_SRCPALETTE 1
2785 #define XO_DESTPALETTE 2
2786 #define XO_DESTDCPALETTE 3
2787 #define XO_SRCBITFIELDS 4
2788 #define XO_DESTBITFIELDS 5
2793 XLATEOBJ_cGetPalette(
2802 XLATEOBJ_hGetColorTransform(
2820 /* Graphics Driver Functions */
2825 IN SURFOBJ
*psoDest
,
2831 IN BLENDOBJ
*pBlendObj
);
2844 IN SURFOBJ
*psoMask
,
2849 IN POINTL
*pptlMask
,
2851 IN POINTL
*pptlBrush
,
2863 IN SURFOBJ
*psoDest
,
2868 IN POINTL
*pptlSrc
);
2872 DrvCreateDeviceBitmap(
2879 DrvDeleteDeviceBitmap(
2885 DD_DIRECTDRAW_GLOBAL
*pDirectDraw
,
2886 DD_SURFACE_LOCAL
*pSurface
);
2890 DrvDescribePixelFormat(
2892 IN LONG iPixelFormat
,
2894 OUT PIXELFORMATDESCRIPTOR
*ppfd
);
2916 #define DM_DEFAULT 0x00000001
2917 #define DM_MONOCHROME 0x00000002
2940 IN ULONG iEngineVersion
,
2942 OUT DRVENABLEDATA
*pded
);
2948 IN LPWSTR pwszLogAddress
,
2950 OUT HSURF
*phsurfPatterns
,
2952 OUT ULONG
*pdevcaps
,
2956 IN LPWSTR pwszDeviceName
,
2964 /* DrvEndDoc.fl constants */
2965 #define ED_ABORTDOC 0x00000001
2990 IN POINTL
*pptlBrushOrg
,
2992 IN FLONG flOptions
);
3011 /* DrvGetGlyphMode return values */
3012 #define FO_HGLYPHS 0L
3013 #define FO_GLYPHBITS 1L
3014 #define FO_PATHOBJ 2L
3038 IN SURFOBJ
*psoDest
,
3041 IN TRIVERTEX
*pVertex
,
3045 IN RECTL
*prclExtents
,
3046 IN POINTL
*pptlDitherOrg
,
3051 DrvIcmCheckBitmapBits(
3053 IN HANDLE hColorTransform
,
3055 OUT PBYTE paResults
);
3059 DrvIcmCreateColorTransform(
3061 IN LPLOGCOLORSPACEW pLogColorSpace
,
3062 IN PVOID pvSourceProfile
,
3063 IN ULONG cjSourceProfile
,
3064 IN PVOID pvDestProfile
,
3065 IN ULONG cjDestProfile
,
3066 IN PVOID pvTargetProfile
,
3067 IN ULONG cjTargetProfile
,
3068 IN DWORD dwReserved
);
3072 DrvIcmDeleteColorTransform(
3074 IN HANDLE hcmXform
);
3076 /* DrvIcmSetDeviceGammaRamp.iFormat constants */
3077 #define IGRF_RGB_256BYTES 0x00000000
3078 #define IGRF_RGB_256WORDS 0x00000001
3082 DrvIcmSetDeviceGammaRamp(
3109 ULONG ulFastCheckSum
);
3138 IN FLONG flReserved
);
3146 IN POINTL
*pptlBrushOrg
,
3157 IN COLORADJUSTMENT
*pca
,
3158 IN POINTL
*pptlBrushOrg
,
3164 /* DrvQueryAdvanceWidths.iMode constants */
3165 #define QAW_GETWIDTHS 0
3166 #define QAW_GETEASYWIDTHS 1
3170 DrvQueryAdvanceWidths(
3178 /* DrvQueryDeviceSupport.iType constants */
3179 #define QDS_CHECKJPEGFORMAT 0x00000000
3180 #define QDS_CHECKPNGFORMAT 0x00000001
3184 DrvQueryDeviceSupport(
3194 /* DrvQueryDriverInfo.dwMode constants */
3195 #define DRVQUERY_USERMODE 0x00000001
3213 /* DrvQueryFontCaps.pulCaps constants */
3214 #define QC_OUTLINES 0x00000001
3215 #define QC_1BIT 0x00000002
3216 #define QC_4BIT 0x00000004
3218 #define QC_FONTDRIVERCAPS (QC_OUTLINES | QC_1BIT | QC_4BIT)
3224 OUT ULONG
*pulCaps
);
3226 /* DrvQueryFontData.iMode constants */
3227 #define QFD_GLYPHANDBITMAP 1L
3228 #define QFD_GLYPHANDOUTLINE 2L
3229 #define QFD_MAXEXTENTS 3L
3230 #define QFD_TT_GLYPHANDBITMAP 4L
3231 #define QFD_TT_GRAY1_BITMAP 5L
3232 #define QFD_TT_GRAY2_BITMAP 6L
3233 #define QFD_TT_GRAY4_BITMAP 8L
3234 #define QFD_TT_GRAY8_BITMAP 9L
3236 #define QFD_TT_MONO_BITMAP QFD_TT_GRAY1_BITMAP
3245 IN OUT GLYPHDATA
*pgd
,
3249 /* DrvQueryFontFile.ulMode constants */
3250 #define QFF_DESCRIPTION 0x00000001
3251 #define QFF_NUMFACES 0x00000002
3261 /* DrvQueryFontTree.iMode constants */
3262 #define QFT_UNICODE 0L
3263 #define QFT_LIGATURES 1L
3264 #define QFT_KERNPAIRS 2L
3265 #define QFT_GLYPHSET 3L
3284 DrvQueryPerBandInfo(
3286 IN OUT PERBANDINFO
*pbi
);
3288 /* DrvQueryTrueTypeOutline.bMetricsOnly constants */
3289 #define TTO_METRICS_ONLY 0x00000001
3290 #define TTO_QUBICS 0x00000002
3291 #define TTO_UNHINTED 0x00000004
3295 DrvQueryTrueTypeOutline(
3299 IN BOOL bMetricsOnly
,
3300 IN GLYPHDATA
*pgldt
,
3302 OUT TTPOLYGONHEADER
*ppoly
);
3306 DrvQueryTrueTypeTable(
3313 OUT PBYTE
*ppjTable
,
3314 OUT ULONG
*pcjTable
);
3316 /* DrvRealizeBrush.iHatch constants */
3317 #define RB_DITHERCOLOR 0x80000000L
3319 #define HS_DDI_MAX 6
3325 IN SURFOBJ
*psoTarget
,
3326 IN SURFOBJ
*psoPattern
,
3327 IN SURFOBJ
*psoMask
,
3331 /* DrvResetDevice return values */
3332 #define DRD_SUCCESS 0
3347 /* DrvSaveScreenBits.iMode constants */
3348 #define SS_SAVE 0x00000000
3349 #define SS_RESTORE 0x00000001
3350 #define SS_FREE 0x00000002
3378 IN LONG iPixelFormat
,
3381 /* DrvSetPointerShape return values */
3382 #define SPS_ERROR 0x00000000
3383 #define SPS_DECLINE 0x00000001
3384 #define SPS_ACCEPT_NOEXCLUDE 0x00000002
3385 #define SPS_ACCEPT_EXCLUDE 0x00000003
3386 #define SPS_ACCEPT_SYNCHRONOUS 0x00000004
3388 /* DrvSetPointerShape.fl constants */
3389 #define SPS_CHANGE 0x00000001L
3390 #define SPS_ASYNCCHANGE 0x00000002L
3391 #define SPS_ANIMATESTART 0x00000004L
3392 #define SPS_ANIMATEUPDATE 0x00000008L
3393 #define SPS_ALPHA 0x00000010L
3394 #define SPS_LENGTHMASK 0x00000F00L
3395 #define SPS_FREQMASK 0x000FF000L
3401 IN SURFOBJ
*psoMask
,
3402 IN SURFOBJ
*psoColor
,
3421 IN LPWSTR pwszDocName
,
3432 IN SURFOBJ
*psoDest
,
3434 IN SURFOBJ
*psoMask
,
3437 IN COLORADJUSTMENT
*pca
,
3438 IN POINTL
*pptlHTOrg
,
3441 IN POINTL
*pptlMask
,
3447 IN SURFOBJ
*psoDest
,
3449 IN SURFOBJ
*psoMask
,
3452 IN COLORADJUSTMENT
*pca
,
3453 IN POINTL
*pptlHTOrg
,
3456 IN POINTL
*pptlMask
,
3463 DrvStrokeAndFillPath(
3468 IN BRUSHOBJ
*pboStroke
,
3469 IN LINEATTRS
*plineattrs
,
3470 IN BRUSHOBJ
*pboFill
,
3471 IN POINTL
*pptlBrushOrg
,
3473 IN FLONG flOptions
);
3483 IN POINTL
*pptlBrushOrg
,
3484 IN LINEATTRS
*plineattrs
,
3499 /* DrvSynchronizeSurface.fl constants */
3500 #define DSS_TIMER_EVENT 0x00000001
3501 #define DSS_FLUSH_EVENT 0x00000002
3505 DrvSynchronizeSurface(
3517 IN RECTL
*prclExtra
,
3518 IN RECTL
*prclOpaque
,
3519 IN BRUSHOBJ
*pboFore
,
3520 IN BRUSHOBJ
*pboOpaque
,
3533 IN ULONG iTransColor
,
3534 IN ULONG ulReserved
);
3539 IN ULONG_PTR iFile
);
3541 /* WNDOBJCHANGEPROC.fl constants */
3542 #define WOC_RGN_CLIENT_DELTA 0x00000001
3543 #define WOC_RGN_CLIENT 0x00000002
3544 #define WOC_RGN_SURFACE_DELTA 0x00000004
3545 #define WOC_RGN_SURFACE 0x00000008
3546 #define WOC_CHANGED 0x00000010
3547 #define WOC_DELETE 0x00000020
3548 #define WOC_DRAWN 0x00000040
3549 #define WOC_SPRITE_OVERLAP 0x00000080
3550 #define WOC_SPRITE_NO_OVERLAP 0x00000100
3553 (CALLBACK
* WNDOBJCHANGEPROC
)(
3559 (*PFN_DrvAlphaBlend
)(
3560 IN SURFOBJ
*psoDest
,
3566 IN BLENDOBJ
*pBlendObj
);
3569 (*PFN_DrvAssertMode
)(
3577 IN SURFOBJ
*psoMask
,
3582 IN POINTL
*pptlMask
,
3584 IN POINTL
*pptlBrush
,
3588 (*PFN_DrvCompletePDEV
)(
3594 IN SURFOBJ
*psoDest
,
3599 IN POINTL
*pptlSrc
);
3601 typedef HBITMAP DDKAPI
3602 (*PFN_DrvCreateDeviceBitmap
)(
3608 (*PFN_DrvDeleteDeviceBitmap
)(
3611 typedef HBITMAP DDKAPI
3612 (*PFN_DrvDeriveSurface
)(
3613 DD_DIRECTDRAW_GLOBAL
*pDirectDraw
,
3614 DD_SURFACE_LOCAL
*pSurface
);
3617 (*PFN_DrvDescribePixelFormat
)(
3619 IN LONG iPixelFormat
,
3621 OUT PIXELFORMATDESCRIPTOR
*ppfd
);
3624 (*PFN_DrvDestroyFont
)(
3628 (*PFN_DrvDisableDriver
)(
3632 (*PFN_DrvDisablePDEV
)(
3636 (*PFN_DrvDisableSurface
)(
3639 typedef ULONG DDKAPI
3640 (*PFN_DrvDitherColor
)(
3646 typedef ULONG DDKAPI
3647 (*PFN_DrvDrawEscape
)(
3656 (*PFN_DrvEnableDriver
)(
3657 IN ULONG iEngineVersion
,
3659 OUT DRVENABLEDATA
*pded
);
3661 typedef DHPDEV DDKAPI
3662 (*PFN_DrvEnablePDEV
)(
3664 IN LPWSTR pwszLogAddress
,
3666 OUT HSURF
*phsurfPatterns
,
3668 OUT ULONG
*pdevcaps
,
3672 IN LPWSTR pwszDeviceName
,
3675 typedef HSURF DDKAPI
3676 (*PFN_DrvEnableSurface
)(
3684 typedef ULONG DDKAPI
3699 IN POINTL
*pptlBrushOrg
,
3701 IN FLONG flOptions
);
3703 typedef ULONG DDKAPI
3704 (*PFN_DrvFontManagement
)(
3718 typedef ULONG DDKAPI
3719 (*PFN_DrvGetGlyphMode
)(
3723 typedef ULONG DDKAPI
3729 typedef PVOID DDKAPI
3730 (*PFN_DrvGetTrueTypeFile
)(
3735 (*PFN_DrvGradientFill
)(
3736 IN SURFOBJ
*psoDest
,
3739 IN TRIVERTEX
*pVertex
,
3743 IN RECTL
*prclExtents
,
3744 IN POINTL
*pptlDitherOrg
,
3748 (*PFN_DrvIcmCheckBitmapBits
)(
3750 IN HANDLE hColorTransform
,
3752 OUT PBYTE paResults
);
3754 typedef HANDLE DDKAPI
3755 (*PFN_DrvIcmCreateColorTransform
)(
3757 IN LPLOGCOLORSPACEW pLogColorSpace
,
3758 IN PVOID pvSourceProfile
,
3759 IN ULONG cjSourceProfile
,
3760 IN PVOID pvDestProfile
,
3761 IN ULONG cjDestProfile
,
3762 IN PVOID pvTargetProfile
,
3763 IN ULONG cjTargetProfile
,
3764 IN DWORD dwReserved
);
3767 (*PFN_DrvIcmDeleteColorTransform
)(
3769 IN HANDLE hcmXform
);
3772 (*PFN_DrvIcmSetDeviceGammaRamp
)(
3789 typedef ULONG_PTR DDKAPI
3790 (*PFN_DrvLoadFontFile
)(
3797 ULONG ulFastCheckSum
);
3800 (*PFN_DrvMovePointer
)(
3822 IN FLONG flReserved
);
3829 IN POINTL
*pptlBrushOrg
,
3839 IN COLORADJUSTMENT
*pca
,
3840 IN POINTL
*pptlBrushOrg
,
3847 (*PFN_DrvQueryAdvanceWidths
)(
3856 (*PFN_DrvQueryDeviceSupport
)(
3867 (*PFN_DrvQueryDriverInfo
)(
3873 typedef PIFIMETRICS DDKAPI
3874 (*PFN_DrvQueryFont
)(
3881 (*PFN_DrvQueryFontCaps
)(
3883 OUT ULONG
*pulCaps
);
3886 (*PFN_DrvQueryFontData
)(
3891 IN OUT GLYPHDATA
*pgd
,
3896 (*PFN_DrvQueryFontFile
)(
3902 typedef PVOID DDKAPI
3903 (*PFN_DrvQueryFontTree
)(
3910 typedef PFD_GLYPHATTR DDKAPI
3911 (*PFN_DrvQueryGlyphAttrs
)(
3915 typedef ULONG DDKAPI
3916 (*PFN_DrvQueryPerBandInfo
)(
3918 IN OUT PERBANDINFO
*pbi
);
3921 (*PFN_DrvQueryTrueTypeOutline
)(
3925 IN BOOL bMetricsOnly
,
3926 IN GLYPHDATA
*pgldt
,
3928 OUT TTPOLYGONHEADER
*ppoly
);
3931 (*PFN_DrvQueryTrueTypeTable
)(
3938 OUT PBYTE
*ppjTable
,
3939 OUT ULONG
*pcjTable
);
3942 (*PFN_DrvRealizeBrush
)(
3944 IN SURFOBJ
*psoTarget
,
3945 IN SURFOBJ
*psoPattern
,
3946 IN SURFOBJ
*psoMask
,
3950 typedef ULONG DDKAPI
3951 (*PFN_DrvResetDevice
)(
3956 (*PFN_DrvResetPDEV
)(
3960 typedef ULONG_PTR DDKAPI
3961 (*PFN_DrvSaveScreenBits
)(
3972 (*PFN_DrvSetPalette
)(
3980 (*PFN_DrvSetPixelFormat
)(
3982 IN LONG iPixelFormat
,
3985 typedef ULONG DDKAPI
3986 (*PFN_DrvSetPointerShape
)(
3988 IN SURFOBJ
*psoMask
,
3989 IN SURFOBJ
*psoColor
,
3999 (*PFN_DrvStartBanding
)(
4006 IN LPWSTR pwszDocName
,
4010 (*PFN_DrvStartPage
)(
4014 (*PFN_DrvStretchBlt
)(
4015 IN SURFOBJ
*psoDest
,
4017 IN SURFOBJ
*psoMask
,
4020 IN COLORADJUSTMENT
*pca
,
4021 IN POINTL
*pptlHTOrg
,
4024 IN POINTL
*pptlMask
,
4028 (*PFN_DrvStretchBltROP
)(
4029 IN SURFOBJ
*psoDest
,
4031 IN SURFOBJ
*psoMask
,
4034 IN COLORADJUSTMENT
*pca
,
4035 IN POINTL
*pptlHTOrg
,
4038 IN POINTL
*pptlMask
,
4044 (*PFN_DrvStrokeAndFillPath
)(
4049 IN BRUSHOBJ
*pboStroke
,
4050 IN LINEATTRS
*plineattrs
,
4051 IN BRUSHOBJ
*pboFill
,
4052 IN POINTL
*pptlBrushOrg
,
4054 IN FLONG flOptions
);
4057 (*PFN_DrvStrokePath
)(
4063 IN POINTL
*pptlBrushOrg
,
4064 IN LINEATTRS
*plineattrs
,
4068 (*PFN_DrvSwapBuffers
)(
4073 (*PFN_DrvSynchronize
)(
4078 (*PFN_DrvSynchronizeSurface
)(
4089 IN RECTL
*prclExtra
,
4090 IN RECTL
*prclOpaque
,
4091 IN BRUSHOBJ
*pboFore
,
4092 IN BRUSHOBJ
*pboOpaque
,
4097 (*PFN_DrvTransparentBlt
)(
4104 IN ULONG iTransColor
,
4105 IN ULONG ulReserved
);
4108 (*PFN_DrvUnloadFontFile
)(
4109 IN ULONG_PTR iFile
);
4115 DrvDisableDirectDraw(
4121 DrvEnableDirectDraw(
4123 OUT DD_CALLBACKS
*pCallBacks
,
4124 OUT DD_SURFACECALLBACKS
*pSurfaceCallBacks
,
4125 OUT DD_PALETTECALLBACKS
*pPaletteCallBacks
);
4130 DrvGetDirectDrawInfo(
4132 OUT DD_HALINFO
*pHalInfo
,
4133 OUT DWORD
*pdwNumHeaps
,
4134 OUT VIDEOMEMORY
*pvmList
,
4135 OUT DWORD
*pdwNumFourCCCodes
,
4136 OUT DWORD
*pdwFourCC
);
4144 #endif /* defined __VIDEO_H */
4146 #endif /* __WINDDI_H */