/* * winddi.h Win32 Device Driver Interface functions * * ========================================================================= * * Open Watcom Project * * Copyright (c) 2004-2010 The Open Watcom Contributors. All Rights Reserved. * * This file is automatically generated. Do not edit directly. * * ========================================================================= */ #ifndef _WINDDI_ #define _WINDDI_ #ifndef _ENABLE_AUTODEPEND #pragma read_only_file; #endif #include #ifdef __cplusplus extern "C" { #endif /* Macro to specify graphics engine functions */ #define ENGAPI DECLSPEC_IMPORT /* Primitive data types */ #if defined( _X86_ ) && !defined( USERMODE_DRIVER ) typedef DWORD FLOATL; #else typedef FLOAT FLOATL; #endif typedef LONG PTRDIFF; typedef PTRDIFF *PPTRDIFF; typedef LONG FIX; typedef FIX *PFIX; typedef ULONG ROP4; typedef ULONG MIX; typedef ULONG HGLYPH; typedef HGLYPH *PHGLYPH; typedef ULONG IDENT; typedef ULONG_PTR HFF; typedef ULONG_PTR HFC; typedef SHORT FWORD; typedef LONG LDECI4; /* Handle data types */ DECLARE_HANDLE( HBM ); DECLARE_HANDLE( HDEV ); DECLARE_HANDLE( HSURF ); DECLARE_HANDLE( DHSURF ); DECLARE_HANDLE( DHPDEV ); DECLARE_HANDLE( HDRVOBJ ); DECLARE_HANDLE( HSEMAPHORE ); #if (NTDDI_VERSION >= 0x06000000) DECLARE_HANDLE( HFASTMUTEX ); #endif /* Handle special values */ #define HGLYPH_INVALID ((HGLYPH)-1) #define HFF_INVALID ((HFF)-1) #define HHFC_INVALID ((HFF)-1) /* Error values */ #define FD_ERROR 0xFFFFFFFFL #define DDI_ERROR 0xFFFFFFFFL /* Conversion macros */ #define LTOFX( x ) ((x) << 4) #define FXTOL( x ) ((x) >> 4) #define FXTOLFLOOR( x ) ((x) >> 4) #define FXTOLCEILING( x ) (((x) + 0x0F) >> 4) #define FXTOLROUND( x ) ((((x) >> 3) + 1) >> 1) /* Font description types */ #define FDM_TYPE_BM_SIDE_CONST 0x00000001L #define FDM_TYPE_MAXEXT_EQUAL_BM_SIDE 0x00000002L #define FDM_TYPE_CHAR_INC_EQUAL_BM_SIDE 0x00000004L #define FDM_TYPE_ZERO_BEARINGS 0x00000008L #define FDM_TYPE_CONST_BEARINGS 0x00000010L /* Glyph support flags */ #define GS_UNICODE_HANDLES 0x00000001L #define GS_8BIT_HANDLES 0x00000002L #define GS_16BIT_HANDLES 0x00000004L /* Font metrics version number */ #define FM_VERSION_NUMBER 0 /* Font metrics types */ #define FM_TYPE_LICENSED 0x0002 #define FM_READONLY_EMBED 0x0004 #define FM_EDITABLE_EMBED 0x0008 #define FM_NO_EMBEDDING FM_TYPE_LICENSED /* Font metrics information indices */ #define FM_INFO_TECH_TRUETYPE 0x00000001L #define FM_INFO_TECH_BITMAP 0x00000002L #define FM_INFO_TECH_STROKE 0x00000004L #define FM_INFO_TECH_OUTLINE_NOT_TRUETYPE 0x00000008L #define FM_INFO_ARB_XFORMS 0x00000010L #define FM_INFO_1BPP 0x00000020L #define FM_INFO_4BPP 0x00000040L #define FM_INFO_8BPP 0x00000080L #define FM_INFO_16BPP 0x00000100L #define FM_INFO_24BPP 0x00000200L #define FM_INFO_32BPP 0x00000400L #define FM_INFO_INTEGER_WIDTH 0x00000800L #define FM_INFO_CONSTANT_WIDTH 0x00001000L #define FM_INFO_NOT_CONTIGUOUS 0x00002000L #define FM_INFO_TECH_MM 0x00004000L #define FM_INFO_RETURNS_OUTLINES 0x00008000L #define FM_INFO_RETURNS_STROKES 0x00010000L #define FM_INFO_RETURNS_BITMAPS 0x00020000L #define FM_INFO_DSIG 0x00040000L #define FM_INFO_RIGHT_HANDED 0x00080000L #define FM_INFO_INTEGRAL_SCALING 0x00100000L #define FM_INFO_90DEGREE_ROTATIONS 0x00200000L #define FM_INFO_OPTICALLY_FIXED_PITCH 0x00400000L #define FM_INFO_DO_NOT_ENUMERATE 0x00800000L #define FM_INFO_ISOTROPIC_SCALING_ONLY 0x01000000L #define FM_INFO_ANISOTROPIC_SCALING_ONLY 0x02000000L #define FM_INFO_TECH_CFF 0x04000000L #define FM_INFO_FAMILY_EQUIV 0x08000000L #define FM_INFO_DBCS_FIXED_PITCH 0x10000000L #define FM_INFO_NONNEGATIVE_AC 0x20000000L #define FM_INFO_IGNORE_TC_RA_ABLE 0x40000000L #define FM_INFO_TECH_TYPE1 0x80000000L /* Maximum number of character sets */ #define MAXCHARSETS 16 /* Font metrics PANOSE cultures */ #define FM_PANOSE_CULTURE_LATIN 0x00000000L /* Font metrics selection flags */ #define FM_SEL_ITALIC 0x0001 #define FM_SEL_UNDERSCORE 0x0002 #define FM_SEL_NEGATIVE 0x0004 #define FM_SEL_OUTLINED 0x0008 #define FM_SEL_STRIKEOUT 0x0010 #define FM_SEL_BOLD 0x0020 #define FM_SEL_REGULAR 0x0040 /* OpenGL escapes */ #define OPENGL_CMD 4352 #define OPENGL_GETINFO 4353 #define WNDOBJ_SETUP 4354 /* Display driver version numbers */ #define DDI_DRIVER_VERSION_NT4 0x00020000 #define DDI_DRIVER_VERSION_SP3 0x00020003 #define DDI_DRIVER_VERSION_NT5 0x00030000 #define DDI_DRIVER_VERSION_NT5_01 0x00030100 #define DDI_DRIVER_VERSION_NT5_01_SP1 0x00030101 /* GDI driver version number */ #define GDI_DRIVER_VERSION 0x4000 /* Driver function indices */ #define INDEX_DrvEnablePDEV 0L #define INDEX_DrvCompletePDEV 1L #define INDEX_DrvDisablePDEV 2L #define INDEX_DrvEnableSurface 3L #define INDEX_DrvDisableSurface 4L #define INDEX_DrvAssertMode 5L #define INDEX_DrvOffset 6L #define INDEX_DrvResetPDEV 7L #define INDEX_DrvDisableDriver 8L #define INDEX_DrvCreateDeviceBitmap 10L #define INDEX_DrvDeleteDeviceBitmap 11L #define INDEX_DrvRealizeBrush 12L #define INDEX_DrvDitherColor 13L #define INDEX_DrvStrokePath 14L #define INDEX_DrvFillPath 15L #define INDEX_DrvStrokeAndFillPath 16L #define INDEX_DrvPaint 17L #define INDEX_DrvBitBlt 18L #define INDEX_DrvCopyBits 19L #define INDEX_DrvStretchBlt 20L #define INDEX_DrvSetPalette 22L #define INDEX_DrvTextOut 23L #define INDEX_DrvEscape 24L #define INDEX_DrvDrawEscape 25L #define INDEX_DrvQueryFont 26L #define INDEX_DrvQueryFontTree 27L #define INDEX_DrvQueryFontData 28L #define INDEX_DrvSetPointerShape 29L #define INDEX_DrvMovePointer 30L #define INDEX_DrvLineTo 31L #define INDEX_DrvSendPage 32L #define INDEX_DrvStartPage 33L #define INDEX_DrvEndDoc 34L #define INDEX_DrvStartDoc 35L #define INDEX_DrvGetGlyphMode 37L #define INDEX_DrvSynchronize 38L #define INDEX_DrvSaveScreenBits 40L #define INDEX_DrvGetModes 41L #define INDEX_DrvFree 42L #define INDEX_DrvDestroyFont 43L #define INDEX_DrvQueryFontCaps 44L #define INDEX_DrvLoadFontFile 45L #define INDEX_DrvUnloadFontFile 46L #define INDEX_DrvFontManagement 47L #define INDEX_DrvQueryTrueTypeTable 48L #define INDEX_DrvQueryTrueTypeOutline 49L #define INDEX_DrvGetTrueTypeFile 50L #define INDEX_DrvQueryFontFile 51L #define INDEX_DrvMovePanning 52L #define INDEX_DrvQueryAdvanceWidths 53L #define INDEX_DrvSetPixelFormat 54L #define INDEX_DrvDescribePixelFormat 55L #define INDEX_DrvSwapBuffers 56L #define INDEX_DrvStartBending 57L #define INDEX_DrvNextBand 58L #define INDEX_DrvGetDirectDrawInfo 59L #define INDEX_DrvEnableDirectDraw 60L #define INDEX_DrvDisableDirectDraw 61L #define INDEX_DrvQuerySpoolType 62L #define INDEX_DrvIcmCreateColorTransform 64L #define INDEX_DrvIcmDeleteColorTransform 65L #define INDEX_DrvIcmCheckBitmapBits 66L #define INDEX_DrvIcmSetDeviceGammaRamp 67L #define INDEX_DrvGradientFill 68L #define INDEX_DrvStretchBltROP 69L #define INDEX_DrvPlgBlt 70L #define INDEX_DrvAlphaBlend 71L #define INDEX_DrvSynthesizeFont 72L #define INDEX_DrvGetSynthesizedFontFiles 73L #define INDEX_DrvTransparentBlt 74L #define INDEX_DrvQueryPerBandInfo 75L #define INDEX_DrvQueryDeviceSupport 76L #define INDEX_DrvDeriveSurface 85L #define INDEX_DrvQueryGlyphAttrs 86L #define INDEX_DrvNotify 87L #define INDEX_DrvSynchronizeSurface 88L #if (NTDDI_VERSION >= 0x05010000) #define INDEX_DrvResetDevice 89L #endif #if (NTDDI_VERSION >= 0x06000000) #define INDEX_DrvRenderHint 93L #endif #if (NTDDI_VERSION >= 0x06010000) #define INDEX_DrvCreateDeviceBitmapEx 94L #define INDEX_DrvDeleteDeviceBitmapEx 95L #define INDEX_DrvAssociateSharedSurface 96L #define INDEX_DrvSynchronizeRedirectionBitmaps 97L #define INDEX_DrvAccumulateD3DDirtyRect 98L #define INDEX_DrvStartDxInterop 99L #define INDEX_DrvEndDxInterop 100L #define INDEX_DrvLockDisplayArea 101L #define INDEX_DrvUnlockDisplayArea 102L #define INDEX_LAST 103L #elif (NTDDI_VERSION >= 0x06000000) #define INDEX_LAST 94L #elif (NTDDI_VERSION >= 0x05010000) #define INDEX_LAST 93L #else #define INDEX_LAST 89L #endif /* Graphics capabilities */ #define GCAPS_BEZIERS 0x00000001L #define GCAPS_GEOMETRICWIDE 0x00000002L #define GCAPS_ALTERNATEFILL 0x00000004L #define GCAPS_WINDINGFILL 0x00000008L #define GCAPS_HALFTONE 0x00000010L #define GCAPS_COLOR_DITHER 0x00000020L #define GCAPS_HORIZSTRIKE 0x00000040L #define GCAPS_VERTSTRIKE 0x00000080L #define GCAPS_OPAQUERECT 0x00000100L #define GCAPS_VECTORFONT 0x00000200L #define GCAPS_MONO_DITHER 0x00000400L #define GCAPS_ASYNCCHANGE 0x00000800L #define GCAPS_ASYNCMOVE 0x00001000L #define GCAPS_DONTJOURNAL 0x00002000L #define GCAPS_DIRECTDRAW 0x00004000L #define GCAPS_ARBRUSHOPAQUE 0x00008000L #define GCAPS_PANNING 0x00010000L #define GCAPS_HIGHRESTEXT 0x00040000L #define GCAPS_PALMANAGED 0x00080000L #define GCAPS_DITHERONREALIZE 0x00200000L #define GCAPS_NO64BITMEMACCESS 0x00400000L #define GCAPS_FORCEDITHER 0x00800000L #define GCAPS_GRAY16 0x01000000L #define GCAPS_ICM 0x02000000L #define GCAPS_CMYKCOLOR 0x04000000L #define GCAPS_LAYERED 0x08000000L #define GCAPS_ARBRUSHTEXT 0x10000000L #define GCAPS_SCREENPRECISION 0x20000000L #define GCAPS_FONT_RASTERIZER 0x40000000L #define GCAPS_NUP 0x80000000L /* Secondary graphics capabilities */ #define GCAPS2_JPEGSRC 0x00000001L #define GCAPS2_PNGSRC 0x00000008L #define GCAPS2_CHANGEGAMMARAMP 0x00000010L #define GCAPS2_ALPHACURSOR 0x00000020L #define GCAPS2_SYNCFLUSH 0x00000040L #define GCAPS2_SYNCTIMER 0x00000080L #define GCAPS2_ICD_MULTIMON 0x00000100L #if (NTDDI_VERSION >= 0x05010000) #define GCAPS2_MOUSETRAILS 0x00000200L #endif #if (NTDDI_VERSION >= 0x06000000) #define GCAPS2_EXCLUDELAYERED 0x00000800L #define GCAPS2_INCLUDEAPIBITMAPS 0x00001000L #define GCAPS2_SHOWHIDDENPOINTER 0x00002000L #endif #if (NTDDI_VERSION >= 0x06010000) #define GCAPS2_CLEARTYPE 0x00004000L #endif /* Line attribute flags */ #define LA_GEOMETRIC 0x00000001L #define LA_ALTERNATE 0x00000002L #define LA_STARTGAP 0x00000004L #define LA_STYLED 0x00000008L /* Join types */ #define JOIN_ROUND 0L #define JOIN_BEVEL 1L #define JOIN_MITER 2L /* End cap types */ #define ENDCAP_ROUND 0L #define ENDCAP_SQUARE 1L #define ENDCAP_BUTT 2L /* Primary orders */ #define PRIMARY_ORDER_ABC 0L #define PRIMARY_ORDER_ACB 1L #define PRIMARY_ORDER_BAC 2L #define PRIMARY_ORDER_BCA 3L #define PRIMARY_ORDER_CBA 4L #define PRIMARY_ORDER_CAB 5L /* Halftone pattern sizes */ #define HT_PATSIZE_2x2 0L #define HT_PATSIZE_2x2_M 1L #define HT_PATSIZE_4x4 2L #define HT_PATSIZE_4x4_M 3L #define HT_PATSIZE_6x6 4L #define HT_PATSIZE_6x6_M 5L #define HT_PATSIZE_8x8 6L #define HT_PATSIZE_8x8_M 7L #define HT_PATSIZE_10x10 8L #define HT_PATSIZE_10x10_M 9L #define HT_PATSIZE_12x12 10L #define HT_PATSIZE_12x12_M 11L #define HT_PATSIZE_14x14 12L #define HT_PATSIZE_14x14_M 13L #define HT_PATSIZE_16x16 14L #define HT_PATSIZE_16x16_M 15L #define HT_PATSIZE_SUPERCELL 16L #define HT_PATSIZE_SUPERCELL_M 17L #define HT_PATSIZE_USER 18L #define HT_PATSIZE_MAX_INDEX HT_PATSIZE_USER #define HT_PATSIZE_DEFAULT HT_PATSIZE_SUPERCELL_M /* Halftone user-defined pattern dimensions */ #define HT_USERPAT_CX_MIN 4 #define HT_USERPAT_CX_MAX 256 #define HT_USERPAT_CY_MIN 4 #define HT_USERPAT_CY_MAX 256 /* Halftone output formats */ #define HT_FORMAT_1BPP 0L #define HT_FORMAT_4BPP 2L #define HT_FORMAT_4BPP_IRGB 3L #define HT_FORMAT_8BPP 4L #define HT_FORMAT_16BPP 5L #define HT_FORMAT_24BPP 6L #define HT_FORMAT_32BPP 7L /* Halftone flags */ #define HT_FLAG_SQUARE_DEVICE_PEL 0x00000001L #define HT_FLAG_HAS_BLACK_DYE 0x00000002L #define HT_FLAG_ADDITIVE_PRIMS 0x00000004L #define HT_FLAG_USE_8BPP_BITMASK 0x00000008L #define HT_FLAG_INK_HIGH_ABSORPTION 0x00000010L #define HT_FLAG_INK_ABSORPTION_INDICES 0x00000060L #define HT_FLAG_DO_DEVCLR_XFORM 0x00000080L #define HT_FLAG_OUTPUT_CMY 0x00000100L #define HT_FLAG_PRINT_DRAFT_MODE 0x00000200L #if (NTDDI_VERSION >= 0x05010000) #define HT_FLAG_INVERT_8BPP_BITMASK_IDX 0x00000400L #endif #define HT_FLAG_8BPP_CMY332_MASK 0xFF000000L /* Macro to make CMY masks */ #define MAKE_CMYMASK_BYTE( p1, p2, p3 ) \ ((((BYTE)(p1) & 0x07) << 5) | (((BYTE)(p2) & 0x07) << 2) | ((BYTE)(p3) & 0x03)) #define MAKE_CMY332_MASK( p1, p2, p3 ) \ ((((DWORD)(p1) & 0x07) < 29) | (((DWORD)(p2) & 0x07 << 26) | \ (((DWORD)(p3) & 0x03) << 24)) /* Halftone ink absorption flags */ #define HT_FLAG_INK_ABSORPTION_IDX0 0x00000000L #define HT_FLAG_INK_ABSORPTION_IDX1 0x00000020L #define HT_FLAG_INK_ABSORPTION_IDX2 0x00000040L #define HT_FLAG_INK_ABSORPTION_IDX3 0x00000060L #define HT_FLAG_HIGHEST_INK_ABSORPTION \ (HT_FLAG_INK_HIGH_ABSORPTION | HT_FLAG_INK_ABSORPTION_IDX3) #define HT_FLAG_HIGHER_INK_ABSORPTION \ (HT_FLAG_INK_HIGH_ABSORPTION | HT_FLAG_INK_ABSORPTION_IDX2) #define HT_FLAG_HIGH_INK_ABSORPTION \ (HT_FLAG_INK_HIGH_ABSORPTION | HT_FLAG_INK_ABSORPTION_IDX1) #define HT_FLAG_NORMAL_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX0 #define HT_FLAG_LOW_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX1 #define HT_FLAG_LOWER_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX2 #define HT_FLAG_LOWEST_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX3 /* Halftone bitmask macros */ #if (NTDDI_VERSION >= 0x05010000) #define HT_BITMASKPALRGB ((DWORD)'0BGR') #define HT_SET_BITMASKPAL2RGB( x ) (*((LPDWORD)(x)) = HT_BITMASKPALRGB) #define HT_IS_BITMASKPAL2RGB( x ) (*((LPDWORD)(x)) == 0L) #endif /* Physical pixel characteristics */ #define PPC_DEFAULT 0x00000000L #define PPC_UNDEFINED 0x00000001L #define PPC_RGB_ORDER_VERTICAL_STRIPES 0x00000002L #define PPC_BGR_ORDER_VERTICAL_STRIPES 0x00000003L #define PPC_RGB_ORDER_HORIZONTAL_STRIPES 0x00000004L #define PPC_BGR_ORDER_HORIZONTAL_STRIPES 0x00000005L /* Physical pixel gamma values */ #define PPG_DEFAULT 0L #define PPG_SRGB 1L /* Brush object color types */ #define BR_DEVICE_ICM 0x00000001L #define BR_HOST_ICM 0x00000002L #define BR_CMYKCOLOR 0x00000004L #if (NTDDI_VERSION >= 0x05010000) #define BR_ORIGCOLOR 0x00000008L #endif /* Font object types */ #define FO_TYPE_RASTER RASTER_FONTTYPE #define FO_TYPE_DEVICE DEVICE_FONTTYPE #define FO_TYPE_TRUETYPE TRUETYPE_FONTTYPE #define FO_SIM_BOLD 0x00002000L #define FO_SIM_ITALIC 0x00004000L #define FO_EM_HEIGHT 0x00008000L #define FO_GRAY16 0x00010000L #define FO_NOGRAY16 0x00020000L #define FO_NOHINTS 0x00040000L #define FO_NO_CHOICE 0x00080000L #define FO_CFF 0x00100000L #define FO_POSTSCRIPT 0x00200000L #define FO_MULTIPLEMASTER 0x00400000L #define FO_VERT_FACE 0x00800000L #define FO_DBCS_FONT 0x01000000L #if (NTDDI_VERSION >= 0x05010000) #define FO_NOCLEARTYPE 0x02000000L #define FO_CLEARTYPE_X 0x10000000L #define FO_CLEARTYPE_Y 0x20000000L #define FO_CLEARTYPENATURAL_X 0x40000000L #endif /* Clip object complexity values */ #define DC_TRIVIAL 0 #define DC_RECT 1 #define DC_COMPLEX 3 #define FC_RECT 1 #define FC_RECT4 2 #define FC_COMPLEX 3 /* Clip object modes */ #define TC_RECTANGLES 0 #define TC_PATHOBJ 2 /* Clip object options */ #define OC_BANK_CLIP 1 /* CLIPOBJ_cEnumStart() types */ #define CT_RECTANGLES 0L /* CLIPOBJ_cEnumStart() directions */ #define CD_RIGHTDOWN 0L #define CD_LEFTDOWN 1L #define CD_RIGHTUP 2L #define CD_LEFTUP 3L #define CD_ANY 4L #define CD_LEFTWARDS 1L #define CD_UPWARDS 2L /* DrvGetGlyphMode() return values */ #define FO_HGLYPHS 0L #define FO_GLYPHBITS 1L #define FO_PATHOBJ 2L /* Old constant for compatibility */ #define FD_NEGATIVE_FONT 1L /* Font capabilities */ #define FO_DEVICE_FONT 1L #define FO_OUTLINE_CAPABLE 2L /* String object flags */ #define SO_FLAG_DEFAULT_PLACEMENT 0x00000001L #define SO_HORIZONTAL 0x00000002L #define SO_VERTICAL 0x00000004L #define SO_REVERSED 0x00000008L #define SO_ZERO_BEARINGS 0x00000010L #define SO_CHAR_INC_EQUAL_BM_BASE 0x00000020L #define SO_MAXEXT_EQUAL_BM_SIDE 0x00000040L #define SO_DO_NOT_SUBSTITUTE_DEVICE_FONT 0x00000080L #define SO_GLYPHINDEX_TEXTOUT 0x00000100L #define SO_ESC_NOT_ORIENT 0x00000200L #define SO_DXDY 0x00000400L #define SO_CHARACTER_EXTRA 0x00000800L #define SO_BREAK_EXTRA 0x00001000L /* Font object attribute modes */ #define FO_ATTR_MODE_ROTATE 1L /* Palette object flags */ #define PAL_INDEXED 0x00000001L #define PAL_BITFIELDS 0x00000002L #define PAL_RGB 0x00000004L #define PAL_BGR 0x00000008L #define PAL_CMYK 0x00000010L /* Path object flags */ #define PO_BEZIERS 0x00000001L #define PO_ELLIPSE 0x00000002L #define PO_ALL_INTEGERS 0x00000004L #define PO_ENUM_AS_INTEGERS 0x00000008L #if (NTDDI_VERSION >= 0x06010000) #define PO_WIDENED 0x00000010L #endif /* Path data flags */ #define PD_BEGINSUBPATH 0x00000001L #define PD_ENDSUBPATH 0x00000002L #define PD_RESETSTYLE 0x00000004L #define PD_CLOSEFIGURE 0x00000008L #define PD_BEZIERS 0x00000010L #define PD_ALL \ (PD_BEGINSUBPATH | PD_ENDSUBPATH | PD_RESETSTYLE | PD_CLOSEFIGURE | PD_BEZIERS) /* Surface object types */ #define STYPE_BITMAP 0L #define STYPE_DEVICE 1L #define STYPE_DEVBITMAP 3L /* Bitmap formats */ #define BMF_1BPP 1L #define BMF_4BPP 2L #define BMF_8BPP 3L #define BMF_16BPP 4L #define BMF_24BPP 5L #define BMF_32BPP 6L #define BMF_4RLE 7L #define BMF_8RLE 8L #define BMF_JPEG 9L #define BMF_PNG 10L /* Bitmap flags */ #define BMF_TOPDOWN 0x0001 #define BMF_NOZEROINIT 0x0002 #define BMF_DONTCACHE 0x0004 #define BMF_USERMEM 0x0008 #define BMF_KMSECTION 0x0010 #define BMF_NOTSYSMEM 0x0020 #define BMF_WINDOW_BLT 0x0040 #if (NTDDI_VERSION >= 0x05010000) #define BMF_UMPDMEM 0x0080 #endif #if (NTDDI_VERSION >= 0x06010000) #define BMF_TEMP_ALPHA 0x0100 #endif /* XFORMOBJ_iGetXform() return values */ #define GX_IDENTITY 0L #define GX_OFFSET 1L #define GX_SCALE 2L #define GX_GENERAL 3L /* XFORMOBJ_bApplyXform() modes */ #define XF_LTOL 0L #define XF_INV_LTOL 1L #define XF_LTOFX 2L #define XF_INV_FXTOL 3L /* Translate object flags */ #define XO_TRIVIAL 0x00000001L #define XO_TABLE 0x00000002L #define XO_TO_MONO 0x00000004L #define XO_FROM_CMYK 0x00000008L #define XO_DEVICE_ICM 0x00000010L #define XO_HOST_ICM 0x00000020L /* Translate object palette information types */ #define XO_SRCPALETTE 1L #define XO_DESTPALETTE 2L #define XO_DESTDCPALETTE 3L #define XO_SRCBITFIELDS 4L #define XO_DESTBITFIELDS 5L /* EngAssociateSurface() hook flags */ #define HOOK_BITBLT 0x00000001L #define HOOK_STRETCHBLT 0x00000002L #define HOOK_PLGBLT 0x00000004L #define HOOK_TEXTOUT 0x00000008L #define HOOK_PAINT 0x00000010L #define HOOK_STROKEPATH 0x00000020L #define HOOK_FILLPATH 0x00000040L #define HOOK_STROKEANDFILLPATH 0x00000080L #define HOOK_LINETO 0x00000100L #define HOOK_COPYBITS 0x00000400L #define HOOK_MOVEPANNING 0x00000800L #define HOOK_SYNCHRONIZE 0x00001000L #define HOOK_STRETCHBLTROP 0x00002000L #define HOOK_SYNCHRONIZEACCESS 0x00004000L #define HOOK_TRANSPARENTBLT 0x00008000L #define HOOK_ALPHABLEND 0x00010000L #define HOOK_GRADIENTFILL 0x00020000L #if (NTDDI_VERSION < 0x06000000) #define HOOK_FLAGS 0x0003B5FFL #else #define HOOK_FLAGS 0x0003B5EFL #endif /* EngModifySurface() flags */ #define MS_NOTSHAREDMEMORY 0x00000001L #define MS_SHAREDACCESS 0x00000002L /* DrvQueryDriverInfo() modes */ #define DRVQUERY_USERMODE 1L /* Maximum hatch style */ #define HS_DDI_MAX 6L /* DrvResetDevice() return values */ #if (NTDDI_VERSION >= 0x05010000) #define DRD_SUCCESS 0L #define DRD_ERROR 1L #endif /* DrvSaveScreenBits() modes */ #define SS_SAVE 0L #define SS_RESTORE 1L #define SS_FREE 2L /* DrvCreateDeviceBitmapEx() flags */ #if (NTDDI_VERSION >= 0x06010000) #define CDBEX_REDIRECTION 0x00000001L #define CDBEX_DXINTEROP 0x00000002L #endif /* DrvDitherColor() modes */ #define DM_DEFAULT 0x00000001L #define DM_MONOCHROME 0x00000002L /* DrvSetPalette() maximum values */ #define WINDDI_MAXSETPALETTECOLORS 256L #define WINDDI_MAXSETPALETTECOLORINDEX 255L /* DrvDitherColor() return values */ #define DCR_SOLID 0L #define DCR_DRIVER 1L #define DCR_HALFTONE 2L /* DrvRealizeBrush() flags */ #define RB_DITHERCOLOR 0x80000000L /* DrvQueryFontTree() modes */ #define QFT_LIGATURES 1L #define QFT_KERNPAIRS 2L #define QFT_GLYPHSET 3L /* DrvQueryFontData() modes */ #define QFD_GLYPHANDBITMAP 1L #define QFD_GLYPHANDOUTLINE 2L #define QFD_MAXEXTENTS 3L #define QFD_TT_GLYPHANDBITMAP 4L #define QFD_TT_GRAY1_BITMAP 5L #define QFD_TT_GRAY2_BITMAP 6L #define QFD_TT_GRAY4_BITMAP 8L #define QFD_TT_GRAY8_BITMAP 9L #define QFD_TT_MONO_BITMAP QFD_TT_GRAY1_BITMAP /* DrvQueryCaps() capability flags */ #define QC_OUTLINES 0x00000001L #define QC_1BIT 0x00000002L #define QC_4BIT 0x00000004L #define QC_FONTDRIVERCAPS (QC_OUTLINES | QC_1BIT | QC_4BIT) /* Font file status values */ #define FF_SIGNATURE_VERIFIED 0x00000001L #define FF_IGNORED_SIGNATURE 0x00000002L /* DrvQueryAdvanceWidths() modes */ #define QAW_GETWIDTHS 0L #define QAW_GETEASYWIDTHS 1L /* DrvQueryTrueTypeOutline() metrics only values */ #define TTO_METRICS_ONLY 1 #define TTO_QUBICS 2 #define TTO_UNHINTED 4 /* DrvQueryFontFile() modes */ #define QFF_DESCRIPTION 1L #define QFF_NUMFACES 2L /* DrvFillPath() options */ #define FP_ALTERNATEMODE 1L #define FP_WINDINGMODE 2L /* DrvSetPointerShape() return values */ #define SPS_ERROR 0L #define SPS_DECLINE 1L #define SPS_ACCEPT_NOEXCLUDE 2L #define SPS_ACCEPT_EXCLUDE 3L #define SPS_ACCEPT_SYNCHRONOUS 4L /* DrvSetPointerShape() flags */ #define SPS_CHANGE 0x00000001L #define SPS_ASYNCCHANGE 0x00000002L #define SPS_ANIMATESTART 0x00000004L #define SPS_ANIMATEUPDATE 0x00000008L #define SPS_ALPHA 0x00000010L #if (NTDDI_VERSION >= 0x05010000) #define SPS_FLAGSMASK 0x000000FFL #define SPS_LENGTHMASK 0x00000F00L #define SPS_FREQMASK 0x000FF000L #endif /* DrvEndDoc() flags */ #define ED_ABORTDOC 1L /* ICM gamma ramp formats */ #define IGRF_RGB_256BYTES 0L #define IGRF_RGB_256WORDS 1L /* DrvQueryDeviceSupport() types */ #define QDS_CHECKJPEGFORMAT 0L #define QDS_CHECKPNGFORMAT 1L /* DrvSynchronizeSurface() flags */ #define DSS_TIMER_EVENT 0x00000001L #define DSS_FLUSH_EVENT 0x00000002L /* DrvNotify() types */ #define DN_ACCELERATION_LEVEL 1L #define DN_DEVICE_ORIGIN 2L #define DN_SLEEP_MODE 3L #define DN_DRAWING_BEGIN 4L /* Window object change flags */ #define WOC_RGN_CLIENT_DELTA 0x00000001L #define WOC_RGN_CLIENT 0x00000002L #define WOC_RGN_SURFACE_DELTA 0x00000004L #define WOC_RGN_SURFACE 0x00000008L #define WOC_CHANGED 0x00000010L #define WOC_DELETE 0x00000020L #define WOC_DRAWN 0x00000040L #define WOC_SPRITE_OVERLAP 0x00000080L #define WOC_SPRITE_NO_OVERLAP 0x00000100L #if (NTDDI_VERSION >= 0x06000000) #define WOC_RGN_SPRITE 0x00000200L #endif /* Window object flags */ #define WO_RGN_CLIENT_DELTA 0x00000001L #define WO_RGN_CLIENT 0x00000002L #define WO_RGN_SURFACE_DELTA 0x00000004L #define WO_RGN_SURFACE 0x00000008L #define WO_RGN_UPDATE_ALL 0x00000010L #define WO_RGN_WINDOW 0x00000020L #define WO_DRAW_NOTIFY 0x00000040L #define WO_SPRITE_NOTIFY 0x00000080L #define WO_RGN_DESKTOP_COORD 0x00000100L #if (NTDDI_VERSION >= 0x06000000) #define WO_RGN_SPRITE 0x00000200L #endif /* EngHangNotification() return values */ #if (NTDDI_VERSION >= 0x05010000) #define EHN_RESTORED 0L #define EHN_ERROR 1L #endif /* EngControlSprites() flags */ #define ECS_TEARDOWN 0x00000001L #define ECS_REDRAW 0x00000002L /* Device halftone adjustment flags */ #define DEVHTADJF_COLOR_DEVICE 0x00000001L #define DEVHTADJF_ADDITIVE_DEVICE 0x00000002L /* EngAllocMem() flags */ #define FL_ZERO_MEMORY 0x00000001L #if (NTDDI_VERSION >= 0x05010000) #define FL_NONPAGED_MEMORY 0x00000002L #endif #if (NTDDI_VERSION >= 0x06010000) #define FL_NON_SESSION 0x00000004L #endif /* EngQuerySystemAttribute() flags */ #define QSA_MMX 0x00000100L #if (NTDDI_VERSION >= 0x05010000) #define QSA_SSE 0x00002000L #define QSA_3DNOW 0x00004000L #endif #if (NTDDI_VERSION >= 0x06000000) #define QSA_SSE1 QSA_SSE #define QSA_SSE2 0x00010000L #define QSA_SSE3 0x00020000L #endif /* EngFntCacheFault() modes */ #define ENG_FNT_CACHE_READ_FAULT 0x00000001L #define ENG_FNT_CACHE_WRITE_FAULT 0x00000002L /* DrvRenderHint() notification codes */ #if (NTDDI_VERSION >= 0x06000000) #define DRH_APIBITMAP 0x00000001L #endif /* Opaque data types */ typedef struct _ENG_EVENT *PEVENT; /* Point */ typedef struct _POINTE { FLOATL x; FLOATL y; } POINTE; typedef POINTE *PPOINTE; /* Float/long */ typedef union _FLOAT_LONG { FLOATL e; LONG l; } FLOAT_LONG; typedef FLOAT_LONG *PFLOAT_LONG; /* Fixed point */ typedef struct _POINTFIX { FIX x; FIX y; } POINTFIX; typedef POINTFIX *PPOINTFIX; /* Fixed rectangle */ typedef struct _RECTFX { FIX xLeft; FIX yTop; FIX xRight; FIX yBottom; } RECTFX; typedef RECTFX *PRECTFX; /* Font description transform */ typedef struct _FD_XFORM { FLOATL eXX; FLOATL eXY; FLOATL eYX; FLOATL eYY; } FD_XFORM; typedef FD_XFORM *PFD_XFORM; /* Font description device metrics */ typedef struct _FD_DEVICEMETRICS { FLONG flRealizedType; POINTE pteBase; POINTE pteSide; LONG lD; FIX fxMaxAscender; FIX fxMaxDescender; POINTL ptlUnderline1; POINTL ptlStrikeOut; POINTL ptlULThickness; POINTL ptlSOThickness; ULONG cxMax; ULONG cyMax; ULONG cjGlyphMax; FD_XFORM fdxQuantized; LONG lNonLinearExtLeading; LONG lNonLinearIntLeading; LONG lNonLinearMaxCharWidth; LONG lNonLinearAvgCharWidth; LONG lMinA; LONG lMinC; LONG lMinD; LONG alReserved[1]; } FD_DEVICEMETRICS; typedef FD_DEVICEMETRICS *PFD_DEVICEMETRICS; /* Ligature */ typedef struct _LIGATURE { ULONG culSize; LPWSTR pwsz; ULONG chglyph; HGLYPH ahglyph[1]; } LIGATURE; typedef LIGATURE *PLIGATURE; /* Font description ligature */ typedef struct _FD_LIGATURE { ULONG culThis; ULONG ulType; ULONG cLigatures; LIGATURE alig[1]; } FD_LIGATURE; /* Point */ typedef struct _POINTQF { LARGE_INTEGER x; LARGE_INTEGER y; } POINTQF; typedef POINTQF *PPOINTQF; /* Unicode character run */ typedef struct _WCRUN { WCHAR wcLow; USHORT cGlyphs; HGLYPH *phg; } WCRUN; typedef WCRUN *PWCRUN; /* Font description glyph set */ typedef struct _FD_GLYPHSET { ULONG cjThis; FLONG flAccel; ULONG cGlyphsSupported; ULONG cRuns; WCRUN awcrun[1]; } FD_GLYPHSET; typedef FD_GLYPHSET *PFD_GLYPHSET; /* Font description glyph attribute */ typedef struct _FD_GLYPHATTR { ULONG cjThis; ULONG cGlyphs; ULONG iMode; BYTE aGlyphAttr[1]; } FD_GLYPHATTR; typedef FD_GLYPHATTR *PFD_GLYPHATTR; /* Font description kerning pair */ typedef struct _FD_KERNINGPAIR { WCHAR wcFirst; WCHAR wcSecond; FWORD fwdKern; } FD_KERNINGPAIR; typedef FD_KERNINGPAIR *PFD_KERNINGPAIR; /* Font difference */ typedef struct _FONTDIFF { BYTE jReserved1; BYTE jReserved2; BYTE jReserved3; BYTE bWeight; USHORT usWinWeight; FSHORT fsSelection; FWORD fwdAveCharWidth; FWORD fwdMaxCharInc; POINTL ptlCaret; } FONTDIFF; /* Font simulation */ typedef struct _FONTSIM { PTRDIFF dpBold; PTRDIFF dpItalic; PTRDIFF dpBoldItalic; } FONTSIM; /* Font metrics */ typedef struct _IFIMETRICS { ULONG cjThis; ULONG cjIfiExtra; PTRDIFF dpwszFamilyName; PTRDIFF dpwszStyleName; PTRDIFF dpwszFaceName; PTRDIFF dpwszUniqueName; PTRDIFF dpFontSim; LONG lEmbedId; LONG lItalicAngle; LONG lCharBias; PTRDIFF dpCharSets; BYTE jWinCharSet; BYTE jWinPitchAndFamily; USHORT usWinWeight; ULONG flInfo; USHORT fsSelection; USHORT fsType; FWORD fwdUnitsPerEm; FWORD fwdLowestPPEm; FWORD fwdWinAscender; FWORD fwdWinDescender; FWORD fwdMacAscender; FWORD fwdMacDescender; FWORD fwdMacLineGap; FWORD fwdTypoAscender; FWORD fwdTypoDescender; FWORD fwdTypoLineGap; FWORD fwdAveCharWidth; FWORD fwdMaxCharInc; FWORD fwdCapHeight; FWORD fwdXHeight; FWORD fwdSubscriptXSize; FWORD fwdSubscriptYSize; FWORD fwdSubscriptXOffset; FWORD fwdSubscriptYOffset; FWORD fwdSuperscriptXSize; FWORD fwdSuperscriptYSize; FWORD fwdSuperscriptXOffset; FWORD fwdSuperscriptYOffset; FWORD fwdUnderscoreSize; FWORD fwdUnderscorePosition; FWORD fwdStrikeoutSize; FWORD fwdStrikeoutPosition; BYTE chFirstChar; BYTE chLastChar; BYTE chDefaultChar; BYTE chBreakChar; WCHAR wcFirstChar; WCHAR wcLastChar; WCHAR wcDefaultChar; WCHAR wcBreakChar; POINTL ptlBaseline; POINTL ptlAspect; POINTL ptlCaret; RECTL rclFontBox; BYTE achVendId[4]; ULONG cKerningPairs; ULONG ulPanoseCulture; PANOSE panose; } IFIMETRICS; typedef IFIMETRICS *PIFIMETRICS; /* Font metrics extra information */ typedef struct _IFIEXTRA { ULONG ulIdentifier; PTRDIFF dpFontSig; ULONG cig; PTRDIFF dpDesignVector; PTRDIFF dpAxesInfoW; ULONG aulReserved[1]; } IFIEXTRA; typedef IFIEXTRA *PIFIEXTRA; /* General function pointer */ typedef LONG_PTR (APIENTRY *PFN)(); /* Driver function */ typedef struct _DRVFN { ULONG iFunc; PFN pfn; } DRVFN; typedef DRVFN *PDRVFN; /* Driver enable data */ typedef struct _DRVENABLEDATA { ULONG iDriverVersion; ULONG c; DRVFN *pdrvfn; } DRVENABLEDATA; typedef DRVENABLEDATA *PDRVENABLEDATA; /* Device information */ typedef struct tagDEVINFO { FLONG flGraphicsCaps; LOGFONTW lfDefaultFont; LOGFONTW lfAnsiVarFont; LOGFONTW lfAnsiFixFont; ULONG cFonts; ULONG iDitherFormat; USHORT cxDither; USHORT cyDither; HPALETTE hpalDefault; FLONG flGraphicsCaps2; } DEVINFO; typedef DEVINFO *PDEVINFO; /* Line attributes */ typedef struct _LINEATTRS { FLONG fl; ULONG iJoin; ULONG iEndCap; FLOAT_LONG elWidth; FLOATL eMiterLimit; ULONG cstyle; PFLOAT_LONG pstyle; FLOAT_LONG elStyleState; } LINEATTRS; typedef LINEATTRS *PLINEATTRS; /* Transform */ typedef struct _XFORML { FLOATL eM11; FLOATL eM12; FLOATL eM21; FLOATL eM22; FLOATL eDx; FLOATL eDy; } XFORML; typedef XFORML *PXFORML; /* CIE chromaticity */ typedef struct _CIECHROMA { LDECI4 x; LDECI4 y; LDECI4 Y; } CIECHROMA; /* Color information */ typedef struct _COLORINFO { CIECHROMA Red; CIECHROMA Green; CIECHROMA Blue; CIECHROMA Cyan; CIECHROMA Magenta; CIECHROMA Yellow; CIECHROMA AlignmentWhite; LDECI4 RedGamma; LDECI4 GreenGamma; LDECI4 BlueGamma; LDECI4 MagentaInCyanDye; LDECI4 YellowInCyanDye; LDECI4 CyanInMagentaDye; LDECI4 YellowInMagentaDye; LDECI4 CyanInYellowDye; LDECI4 MagentaInYellowDye; } COLORINFO; typedef COLORINFO *PCOLORINFO; /* GDI information */ typedef struct _GDIINFO { ULONG ulVersion; ULONG ulTechnology; ULONG ulHorzSize; ULONG ulVertSize; ULONG ulHorzRes; ULONG ulVertRes; ULONG cBitsPixel; ULONG cPlanes; ULONG ulNumColors; ULONG flRaster; ULONG ulLogPixelsX; ULONG ulLogPixelsY; ULONG flTextCaps; ULONG ulDACRed; ULONG ulDACGreen; ULONG ulDACBlue; ULONG ulAspectX; ULONG ulAspectY; ULONG ulAspectXY; LONG xStyleStep; LONG yStyleStep; LONG denStyleStep; POINTL ptlPhysOffset; SIZEL szlPhysSize; ULONG ulNumPalReg; COLORINFO ciDevice; ULONG ulDevicePelsDPI; ULONG ulPrimaryOrder; ULONG ulHTPatternSize; ULONG ulHTOutputFormat; ULONG flHTFlags; ULONG ulVRefresh; ULONG ulBltAlignment; ULONG ulPanningHorzRes; ULONG ulPanningVertRes; ULONG xPanningAlignment; ULONG yPanningAlignment; ULONG cxHTPat; ULONG cyHTPat; LPBYTE pHTPatA; LPBYTE pHTPatB; LPBYTE pHTPatC; ULONG flShadeBlend; ULONG ulPhysicalPixelCharacteristics; ULONG ulPhysicalPixelGamma; } GDIINFO; typedef GDIINFO *PGDIINFO; /* Brush object */ typedef struct _BRUSHOBJ { ULONG iSolidColor; PVOID pvRbrush; FLONG flColorType; } BRUSHOBJ; /* Clip object */ typedef struct _CLIPOBJ { ULONG iUniq; RECTL rclBounds; BYTE iDComplexity; BYTE iFComplexity; BYTE iMode; BYTE fjOptions; } CLIPOBJ; /* Free object procedure */ typedef BOOL (CALLBACK *FREEOBJPROC)( struct _DRIVEROBJ * ); /* Driver object */ typedef struct _DRIVEROBJ { PVOID pvObj; FREEOBJPROC pFreeProc; HDEV hdev; DHPDEV dhpdev; } DRIVEROBJ; /* Font object */ typedef struct _FONTOBJ { ULONG iUniq; ULONG iFace; ULONG cxMax; FLONG flFontType; ULONG_PTR iTTUniq; ULONG_PTR iFile; SIZE sizLogResPpi; ULONG ulStyleSize; PVOID pvConsumer; PVOID pvProducer; } FONTOBJ; /* Blend object */ typedef struct _BLENDOBJ { BLENDFUNCTION BlendFunction; } BLENDOBJ; typedef BLENDOBJ *PBLENDOBJ; /* Gamma tables */ typedef BYTE GAMMA_TABLES[2][256]; /* Palette object */ typedef struct _PALOBJ { ULONG ulReserved; } PALOBJ; /* Path object */ typedef struct _PATHOBJ { FLONG fl; ULONG cCurves; } PATHOBJ; /* Surface object */ typedef struct _SURFACEOBJ { DHSURF dhsurf; HSURF hsurf; DHPDEV dhpdev; HDEV hdev; SIZEL sizlBitmap; ULONG cjBits; PVOID pvBits; PVOID pvScan0; LONG lDelta; ULONG iUniq; ULONG iBitmapFormat; USHORT iType; USHORT fjBitmap; } SURFOBJ; /* Window object */ typedef struct _WNDOBJ { CLIPOBJ coClient; PVOID pvConsumer; RECTL rclClient; SURFOBJ *psoOwner; } WNDOBJ; typedef WNDOBJ *PWNDOBJ; /* Transform object */ typedef struct _XFORMOBJ { ULONG ulReserved; } XFORMOBJ; /* Translate object */ typedef struct _XLATEOBJ { ULONG iUniq; FLONG flXlate; USHORT iSrcType; USHORT iDstType; ULONG cEntries; ULONG *pulXlate; } XLATEOBJ; /* Rectangle enumeration information */ typedef struct _ENUMRECTS { ULONG c; RECTL arcl[1]; } ENUMRECTS; /* Glyph bits */ typedef struct _GLYPHBITS { POINTL ptlOrigin; SIZEL sizlBitmap; BYTE aj[1]; } GLYPHBITS; /* Glyph definition */ typedef union _GLYPHDEF { GLYPHBITS *pgb; PATHOBJ *ppo; } GLYPHDEF; /* Glyph position */ typedef struct _GLYPHPOS { HGLYPH hg; GLYPHDEF *pgdf; POINTL ptl; } GLYPHPOS; typedef GLYPHPOS *PGLYPHPOS; /* Glyph data */ typedef struct _GLYPHDATA { GLYPHDEF gdf; HGLYPH hg; FIX fxD; FIX fxA; FIX fxAB; FIX fxInkTop; FIX fxInkBottom; RECTL rclInk; POINTQF ptqD; } GLYPHDATA; /* String object */ typedef struct _STROBJ { ULONG cGlyphs; FLONG flAccel; ULONG ulCharInc; RECTL rclBkGround; GLYPHPOS *pgp; LPWSTR pwszOrg; } STROBJ; /* Font information */ typedef struct _FONTINFO { ULONG cjThis; FLONG flCaps; ULONG cGlyphsSupported; ULONG cjMaxGlyph1; ULONG cjMaxGlyph4; ULONG cjMaxGlyph8; ULONG cjMaxGlyph32; } FONTINFO; typedef FONTINFO *PFONTINFO; /* Path data flags */ typedef struct _PATHDATA { FLONG flags; ULONG count; POINTFIX *pptfx; } PATHDATA; typedef PATHDATA *PPATHDATA; /* Run */ typedef struct _RUN { LONG iStart; LONG iStop; } RUN; typedef RUN *PRUN; /* Clip line */ typedef struct _CLIPLINE { POINTFIX ptfxA; POINTFIX ptfxB; LONG lStyleState; ULONG c; RUN arun[1]; } CLIPLINE; typedef CLIPLINE *PCLIPLINE; /* Per band information */ typedef struct _PERBANDINFO { BOOL bRepeatThisBand; SIZEL szlBand; ULONG ulHorzRes; ULONG ulVertRes; } PERBANDINFO; typedef PERBANDINFO *PPERBANDINFO; /* Gamma ramp */ typedef struct _GAMMARAMP { WORD Red[256]; WORD Green[256]; WORD Blue[256]; } GAMMARAMP; typedef GAMMARAMP *PGAMMARAMP; /* Window object change procedure */ typedef VOID (CALLBACK *WNDOBJCHANGEPROC)( WNDOBJ *, FLONG ); /* Device halftone information */ typedef struct _DEVHTINFO { DWORD HTFlags; DWORD HTPatternSize; DWORD DevPelsDPI; COLORINFO ColorInfo; } DEVHTINFO; typedef DEVHTINFO *PDEVHTINFO; /* Device halftone adjustment data */ typedef struct _DEVHTADJDATA { DWORD DeviceFlags; DWORD DeviceXDPI; DWORD DeviceYDPI; PDEVHTINFO pDefHTInfo; PDEVHTINFO pAdjHTInfo; } DEVHTADJDATA; typedef DEVHTADJDATA *PDEVHTADJDATA; /* Type 1 font */ typedef struct _TYPE1_FONT { HANDLE hPFM; HANDLE hPFB; ULONG ulIdentifier; } TYPE1_FONT; /* Safe semaphore */ typedef struct _ENGSAFESEMAPHORE { HSEMAPHORE hsem; LONG lCount; } ENGSAFESEMAPHORE; /* Float object */ #if defined( USERMODE_DRIVER ) && defined( _X86_ ) typedef struct _FLOATOBJ { ULONG ul1; ULONG ul2; } FLOATOBJ; #else typedef FLOAT FLOATOBJ; #endif typedef FLOATOBJ *PFLOATOBJ; /* Float object transform */ #ifdef USERMODE_DRIVER typedef XFORML FLOATOBJ_XFORM; typedef XFORML *PFLOATOBJ_XFORM; typedef XFORML *LPFLOATOBJ_XFORM; #else typedef struct tagFLOATOBJ_XFORM { FLOATOBJ eM11; FLOATOBJ eM12; FLOATOBJ eM21; FLOATOBJ eM22; FLOATOBJ eDx; FLOATOBJ eDy; } FLOATOBJ_XFORM; typedef FLOATOBJ_XFORM *PFLOATOBJ_XFORM; typedef FLOATOBJ_XFORM *LPFLOATOBJ_XFORM; #endif /* Sort compare callback */ typedef int (__cdecl *SORTCOMP)( const void *, const void * ); /* Time fields */ typedef struct _ENG_TIME_FIELDS { USHORT usYear; USHORT usMonth; USHORT usDay; USHORT usHour; USHORT usMinute; USHORT usSecond; USHORT usMilliseconds; USHORT usWeekday; } ENG_TIME_FIELDS; typedef ENG_TIME_FIELDS *PENG_TIME_FIELDS; /* System attributes */ typedef enum _ENG_SYSTEM_ATTRIBUTE { EngProcessorFeature = -1, EngNumberOfProcessors = 0, EngOptimumAvailableUserMemory = 1, EngOptimumAvailableSystemMemory = 2 } ENG_SYSTEM_ATTRIBUTE; /* Device attributes */ typedef enum _ENG_DEVICE_ATTRIBUTE { QDA_ACCELERATION_LEVEL = 1 } ENG_DEVICE_ATTRIBUTE; /* MEF information */ typedef struct { DWORD nSize; HDC hdc; PBYTE pvEMF; PBYTE pvCurrentRecord; } EMFINFO; typedef EMFINFO *PEMFINFO; /* DrvRenderHint() bitmap data */ #if (NTDDI_VERSION >= 0x06000000) typedef struct _DRH_APIBITMAPDATA { SURFOBJ *pso; BOOL b; } DRH_APIBITMAPDATA; typedef DRH_APIBITMAPDATA *PDRH_APIBITMAPDATA; #endif /* Functions in WIN32K.SYS and GDI32.DLL */ ENGAPI HANDLE APIENTRY BRUSHOBJ_hGetColorTransform( BRUSHOBJ * ); ENGAPI PVOID APIENTRY BRUSHOBJ_pvAllocRbrush( BRUSHOBJ *, ULONG ); ENGAPI PVOID APIENTRY BRUSHOBJ_pvGetRbrush( BRUSHOBJ * ); ENGAPI ULONG APIENTRY BRUSHOBJ_ulGetBrushColor( BRUSHOBJ * ); ENGAPI BOOL APIENTRY CLIPOBJ_bEnum( CLIPOBJ *, ULONG, ULONG * ); ENGAPI ULONG APIENTRY CLIPOBJ_cEnumStart( CLIPOBJ *, BOOL, ULONG, ULONG, ULONG ); ENGAPI PATHOBJ * APIENTRY CLIPOBJ_ppoGetPath( CLIPOBJ * ); ENGAPI VOID APIENTRY EngAcquireSemaphore( HSEMAPHORE ); ENGAPI BOOL APIENTRY EngAlphaBlend( SURFOBJ *, SURFOBJ *, CLIPOBJ *, XLATEOBJ *, RECTL *, RECTL *, BLENDOBJ * ); ENGAPI BOOL APIENTRY EngAssociateSurface( HSURF, HDEV, FLONG ); ENGAPI BOOL APIENTRY EngBitBlt( SURFOBJ *, SURFOBJ *, SURFOBJ *, CLIPOBJ *, XLATEOBJ *, RECTL *, POINTL *, POINTL *, BRUSHOBJ *, POINTL *, ROP4 ); ENGAPI BOOL APIENTRY EngCheckAbort( SURFOBJ * ); ENGAPI FD_GLYPHSET * APIENTRY EngComputeGlyphSet( INT, INT, INT ); ENGAPI BOOL APIENTRY EngControlSprites( WNDOBJ *, FLONG ); ENGAPI BOOL APIENTRY EngCopyBits( SURFOBJ *, SURFOBJ *, CLIPOBJ *, XLATEOBJ *, RECTL *, POINTL * ); ENGAPI HBITMAP APIENTRY EngCreateBitmap( SIZEL, LONG, ULONG, FLONG, PVOID ); ENGAPI CLIPOBJ * APIENTRY EngCreateClip(); ENGAPI HBITMAP APIENTRY EngCreateDeviceBitmap( DHSURF, SIZEL, ULONG ); ENGAPI HSURF APIENTRY EngCreateDeviceSurface( DHSURF, SIZEL, ULONG ); ENGAPI HDRVOBJ APIENTRY EngCreateDriverObj( PVOID, FREEOBJPROC, HDEV ); ENGAPI BOOL APIENTRY EngCreateEvent( PEVENT * ); ENGAPI HPALETTE APIENTRY EngCreatePalette( ULONG, ULONG, ULONG *, FLONG, FLONG, FLONG ); ENGAPI PATHOBJ * APIENTRY EngCreatePath(); ENGAPI HSEMAPHORE APIENTRY EngCreateSemaphore( VOID ); ENGAPI WNDOBJ * APIENTRY EngCreateWnd( SURFOBJ *, HWND, WNDOBJCHANGEPROC, FLONG, int ); ENGAPI VOID APIENTRY EngDebugBreak( VOID ); ENGAPI VOID APIENTRY EngDebugPrint( PCHAR, PCHAR, va_list ); ENGAPI VOID APIENTRY EngDeleteClip( CLIPOBJ * ); ENGAPI BOOL APIENTRY EngDeleteDriverObj( HDRVOBJ, BOOL, BOOL ); ENGAPI BOOL APIENTRY EngDeleteEvent( PEVENT ); ENGAPI BOOL APIENTRY EngDeleteFile( LPWSTR ); ENGAPI BOOL APIENTRY EngDeletePalette( HPALETTE ); ENGAPI VOID APIENTRY EngDeletePath( PATHOBJ * ); ENGAPI VOID APIENTRY EngDeleteSafeSemaphore( ENGSAFESEMAPHORE * ); ENGAPI VOID APIENTRY EngDeleteSemaphore( HSEMAPHORE ); ENGAPI BOOL APIENTRY EngDeleteSurface( HSURF ); ENGAPI VOID APIENTRY EngDeleteWnd( WNDOBJ * ); ENGAPI DWORD APIENTRY EngDeviceIoControl( HANDLE, DWORD, LPVOID, DWORD, LPVOID, DWORD, LPDWORD ); ENGAPI ULONG APIENTRY EngDitherColor( HDEV, ULONG, ULONG, ULONG * ); ENGAPI BOOL APIENTRY EngEraseSurface( SURFOBJ *, RECTL *, ULONG ); ENGAPI BOOL APIENTRY EngFillPath( SURFOBJ *, PATHOBJ *, CLIPOBJ *, BRUSHOBJ *, POINTL *, MIX, FLONG ); ENGAPI PVOID APIENTRY EngFindResource( HANDLE, int, int, PULONG ); ENGAPI PVOID APIENTRY EngFntCacheAlloc( ULONG, ULONG ); ENGAPI VOID APIENTRY EngFntCacheFault( ULONG, ULONG ); ENGAPI PVOID APIENTRY EngFntCacheLookUp( ULONG, ULONG * ); ENGAPI VOID APIENTRY EngFreeModule( HANDLE ); ENGAPI VOID APIENTRY EngGetCurrentCodePage( PUSHORT, PUSHORT ); ENGAPI HANDLE APIENTRY EngGetCurrentProcessId(); ENGAPI HANDLE APIENTRY EngGetCurrentThreadId(); ENGAPI LPWSTR APIENTRY EngGetDriverName( HDEV ); ENGAPI BOOL APIENTRY EngGetFileChangeTime( HANDLE, LARGE_INTEGER * ); ENGAPI BOOL APIENTRY EngGetFilePath( HANDLE, WCHAR (*)[MAX_PATH + 1] ); ENGAPI LPWSTR APIENTRY EngGetPrinterDataFileName( HDEV ); ENGAPI HANDLE APIENTRY EngGetProcessHandle(); ENGAPI BOOL APIENTRY EngGetType1FontList( HDEV, TYPE1_FONT *, ULONG, PULONG, PULONG, LARGE_INTEGER * ); ENGAPI BOOL APIENTRY EngGradientFill( SURFOBJ *, CLIPOBJ *, XLATEOBJ *, TRIVERTEX *, ULONG, PVOID, ULONG, RECTL *, POINTL *, ULONG ); ENGAPI BOOL APIENTRY EngInitializeSafeSemaphore( ENGSAFESEMAPHORE * ); ENGAPI BOOL APIENTRY EngLineTo( SURFOBJ *, CLIPOBJ *, BRUSHOBJ *, LONG, LONG, LONG, LONG, RECTL *, MIX ); ENGAPI HANDLE APIENTRY EngLoadModule( LPWSTR ); ENGAPI HANDLE APIENTRY EngLoadModuleForWrite( LPWSTR, ULONG ); ENGAPI PDD_SURFACE_LOCAL APIENTRY EngLockDirectDrawSurface( HANDLE ); ENGAPI DRIVEROBJ * APIENTRY EngLockDriverObj( HDRVOBJ ); ENGAPI SURFOBJ * APIENTRY EngLockSurface( HSURF ); ENGAPI BOOL APIENTRY EngLpkInstalled(); ENGAPI PEVENT APIENTRY EngMapEvent( HDEV, HANDLE, PVOID, PVOID, PVOID ); ENGAPI PVOID APIENTRY EngMapFile( LPWSTR, ULONG, ULONG_PTR * ); ENGAPI BOOL APIENTRY EngMapFontFile( ULONG_PTR, PULONG *, ULONG * ); ENGAPI BOOL APIENTRY EngMapFontFileFD( ULONG_PTR, PULONG *, ULONG * ); ENGAPI BOOL APIENTRY EngMarkBandingSurface( HSURF ); ENGAPI BOOL APIENTRY EngModifySurface( HSURF, HDEV, FLONG, FLONG, DHSURF, VOID *, LONG, VOID * ); ENGAPI VOID APIENTRY EngMovePointer( SURFOBJ *, LONG, LONG, RECTL * ); ENGAPI VOID APIENTRY EngMultiByteToUnicodeN( LPWSTR, ULONG, PULONG, PCHAR, ULONG ); ENGAPI INT APIENTRY EngMultiByteToWideChar( UINT, LPWSTR, INT, LPSTR, INT ); ENGAPI BOOL APIENTRY EngPaint( SURFOBJ *, CLIPOBJ *, BRUSHOBJ *, POINTL *, MIX ); ENGAPI BOOL APIENTRY EngPlgBlt( SURFOBJ *, SURFOBJ *, SURFOBJ *, CLIPOBJ *, XLATEOBJ *, COLORADJUSTMENT *, POINTL *, POINTFIX *, RECTL *, POINTL *, ULONG ); ENGAPI BOOL APIENTRY EngQueryDeviceAttribute( HDEV, ENG_DEVICE_ATTRIBUTE, VOID *, ULONG, VOID *, ULONG ); ENGAPI BOOL APIENTRY EngQueryEMFInfo( HDEV, EMFINFO * ); ENGAPI VOID APIENTRY EngQueryLocalTime( PENG_TIME_FIELDS ); ENGAPI ULONG APIENTRY EngQueryPalette( HPALETTE, ULONG *, ULONG, ULONG * ); ENGAPI VOID APIENTRY EngQueryPerformanceCounter( LONGLONG * ); ENGAPI VOID APIENTRY EngQueryPerformanceFrequency( LONGLONG * ); ENGAPI BOOL APIENTRY EngQuerySystemAttribute( ENG_SYSTEM_ATTRIBUTE, PDWORD ); ENGAPI VOID APIENTRY EngReleaseSemaphore( HSEMAPHORE ); ENGAPI BOOL APIENTRY EngRestoreFloatingPointState( VOID * ); ENGAPI ULONG APIENTRY EngSaveFloatingPointState( VOID *, ULONG ); ENGAPI HANDLE APIENTRY EngSecureMem( PVOID, ULONG ); ENGAPI LONG APIENTRY EngSetEvent( PEVENT ); ENGAPI ULONG APIENTRY EngSetPointerShape( SURFOBJ *, SURFOBJ *, SURFOBJ *, XLATEOBJ *, LONG, LONG, LONG, LONG, RECTL *, FLONG ); ENGAPI BOOL APIENTRY EngSetPointerTag( HDEV, SURFOBJ *, SURFOBJ *, XLATEOBJ *, FLONG ); ENGAPI VOID APIENTRY EngSort( PBYTE, ULONG, ULONG, SORTCOMP ); ENGAPI BOOL APIENTRY EngStretchBlt( SURFOBJ *, SURFOBJ *, SURFOBJ *, CLIPOBJ *, XLATEOBJ *, COLORADJUSTMENT *, POINTL *, RECTL *, RECTL *, POINTL *, ULONG ); ENGAPI BOOL APIENTRY EngStretchBltROP( SURFOBJ *, SURFOBJ *, SURFOBJ *, CLIPOBJ *, XLATEOBJ *, COLORADJUSTMENT *, POINTL *, RECTL *, RECTL *, POINTL *, ULONG, BRUSHOBJ *, DWORD ); ENGAPI BOOL APIENTRY EngStrokeAndFillPath( SURFOBJ *, PATHOBJ *, CLIPOBJ *, XFORMOBJ *, BRUSHOBJ *, LINEATTRS *, BRUSHOBJ *, POINTL *, MIX, FLONG ); ENGAPI BOOL APIENTRY EngStrokePath( SURFOBJ *, PATHOBJ *, CLIPOBJ *, XFORMOBJ *, BRUSHOBJ *, POINTL *, LINEATTRS *, MIX ); ENGAPI BOOL APIENTRY EngTextOut( SURFOBJ *, STROBJ *, FONTOBJ *, CLIPOBJ *, RECTL *, RECTL *, BRUSHOBJ *, BRUSHOBJ *, POINTL *, MIX ); ENGAPI BOOL APIENTRY EngTransparentBlt( SURFOBJ *, SURFOBJ *, CLIPOBJ *, XLATEOBJ *, RECTL *, RECTL *, ULONG, ULONG ); ENGAPI VOID APIENTRY EngUnicodeToMultiByteN( PCHAR, ULONG, PULONG, PWSTR, ULONG ); ENGAPI BOOL APIENTRY EngUnlockDirectDrawSurface( PDD_SURFACE_LOCAL ); ENGAPI BOOL APIENTRY EngUnlockDriverObj( HDRVOBJ ); ENGAPI VOID APIENTRY EngUnlockSurface( SURFOBJ * ); ENGAPI BOOL APIENTRY EngUnmapEvent( PEVENT ); ENGAPI BOOL APIENTRY EngUnmapFile( ULONG_PTR ); ENGAPI VOID APIENTRY EngUnmapFontFile( ULONG_PTR ); ENGAPI VOID APIENTRY EngUnmapFontFileFD( ULONG_PTR ); ENGAPI VOID APIENTRY EngUnsecureMem( HANDLE ); ENGAPI BOOL APIENTRY EngWaitForSingleObject( PEVENT, PLARGE_INTEGER ); ENGAPI INT APIENTRY EngWideCharToMultiByte( UINT, LPWSTR, INT, LPSTR, INT ); ENGAPI ULONG APIENTRY FONTOBJ_cGetAllGlyphHandles( FONTOBJ *, HGLYPH * ); ENGAPI ULONG APIENTRY FONTOBJ_cGetGlyphs( FONTOBJ *, ULONG, ULONG, HGLYPH *, PVOID * ); ENGAPI PFD_GLYPHATTR APIENTRY FONTOBJ_pQueryGlyphAttrs( FONTOBJ *, ULONG ); ENGAPI FD_GLYPHSET * APIENTRY FONTOBJ_pfdg( FONTOBJ * ); ENGAPI IFIMETRICS * APIENTRY FONTOBJ_pifi( FONTOBJ * ); ENGAPI PBYTE APIENTRY FONTOBJ_pjOpenTypeTablePointer( FONTOBJ *, ULONG, ULONG * ); ENGAPI PVOID APIENTRY FONTOBJ_pvTrueTypeFontFile( FONTOBJ *, ULONG * ); ENGAPI LPWSTR APIENTRY FONTOBJ_pwszFontFilePaths( FONTOBJ *, ULONG * ); ENGAPI XFORMOBJ * APIENTRY FONTOBJ_pxoGetXform( FONTOBJ * ); ENGAPI VOID APIENTRY FONTOBJ_vGetInfo( FONTOBJ *, ULONG, FONTINFO * ); ENGAPI LONG APIENTRY HT_ComputeRGBGammaTable( USHORT, USHORT, USHORT, USHORT, USHORT, LPBYTE ); ENGAPI LONG APIENTRY HT_Get8BPPFormatPalette( LPPALETTEENTRY, USHORT, USHORT, USHORT ); ENGAPI LONG APIENTRY HT_Get8BPPMaskPalette( LPPALETTEENTRY, BOOL, BYTE, USHORT, USHORT, USHORT ); ENGAPI ULONG APIENTRY PALOBJ_cGetColors( PALOBJ *, ULONG, ULONG, ULONG * ); ENGAPI BOOL APIENTRY PATHOBJ_bCloseFigure( PATHOBJ * ); ENGAPI BOOL APIENTRY PATHOBJ_bEnum( PATHOBJ *, PATHDATA * ); ENGAPI BOOL APIENTRY PATHOBJ_bEnumClipLines( PATHOBJ *, ULONG, CLIPLINE * ); ENGAPI BOOL APIENTRY PATHOBJ_bMoveTo( PATHOBJ *, POINTFIX ); ENGAPI BOOL APIENTRY PATHOBJ_bPolyBezierTo( PATHOBJ *, POINTFIX *, ULONG ); ENGAPI BOOL APIENTRY PATHOBJ_bPolyLineTo( PATHOBJ *, POINTFIX *, ULONG ); ENGAPI VOID APIENTRY PATHOBJ_vEnumStart( PATHOBJ * ); ENGAPI VOID APIENTRY PATHOBJ_vEnumStartClipLines( PATHOBJ *, CLIPOBJ *, SURFOBJ *, LINEATTRS * ); ENGAPI VOID APIENTRY PATHOBJ_vGetBounds( PATHOBJ *, PRECTFX ); ENGAPI BOOL APIENTRY STROBJ_bEnum( STROBJ *, ULONG *, PGLYPHPOS * ); ENGAPI BOOL APIENTRY STROBJ_bEnumPositionsOnly( STROBJ *, ULONG *, PGLYPHPOS * ); ENGAPI BOOL APIENTRY STROBJ_bGetAdvanceWidths( STROBJ *, ULONG, ULONG, POINTQF * ); ENGAPI DWORD APIENTRY STROBJ_dwGetCodePage( STROBJ * ); ENGAPI FIX APIENTRY STROBJ_fxBreakExtra( STROBJ * ); ENGAPI FIX APIENTRY STROBJ_fxCharacterExtra( STROBJ * ); ENGAPI VOID APIENTRY STROBJ_vEnumStart( STROBJ * ); ENGAPI BOOL APIENTRY WNDOBJ_bEnum( WNDOBJ *, ULONG, ULONG * ); ENGAPI ULONG APIENTRY WNDOBJ_cEnumStart( WNDOBJ *, ULONG, ULONG, ULONG ); ENGAPI VOID APIENTRY WNDOBJ_vSetConsumer( WNDOBJ *, PVOID ); ENGAPI BOOL APIENTRY XFORMOBJ_bApplyXform( XFORMOBJ *, ULONG, ULONG, PVOID, PVOID ); ENGAPI ULONG APIENTRY XFORMOBJ_iGetXform( XFORMOBJ *, XFORML * ); ENGAPI ULONG APIENTRY XLATEOBJ_cGetPalette( XLATEOBJ *, ULONG, ULONG, ULONG * ); ENGAPI HANDLE APIENTRY XLATEOBJ_hGetColorTransform( XLATEOBJ * ); ENGAPI ULONG APIENTRY XLATEOBJ_iXlate( XLATEOBJ *, ULONG ); ENGAPI ULONG * APIENTRY XLATEOBJ_piVector( XLATEOBJ * ); #ifndef USERMODE_DRIVER ENGAPI PVOID APIENTRY EngAllocMem( ULONG, ULONG, ULONG ); ENGAPI PVOID APIENTRY EngAllocPrivateUserMem( PDD_SURFACE_LOCAL, SIZE_T, ULONG ); ENGAPI PVOID APIENTRY EngAllocUserMem( SIZE_T, ULONG ); ENGAPI BOOL APIENTRY EngEnumForms( HANDLE, DWORD, LPBYTE, DWORD, LPDWORD, LPDWORD ); ENGAPI PVOID APIENTRY EngFindImageProcAddress( HANDLE, LPSTR ); ENGAPI VOID APIENTRY EngFreeMem( PVOID ); ENGAPI VOID APIENTRY EngFreePrivateUserMem( PDD_SURFACE_LOCAL, PVOID ); ENGAPI VOID APIENTRY EngFreeUserMem( PVOID ); ENGAPI BOOL APIENTRY EngGetForm( HANDLE, LPWSTR, DWORD, LPBYTE, DWORD, LPDWORD ); ENGAPI ULONG APIENTRY EngGetLastError(); ENGAPI BOOL APIENTRY EngGetPrinter( HANDLE, DWORD, LPBYTE, DWORD, LPDWORD ); ENGAPI DWORD APIENTRY EngGetPrinterData( HANDLE, LPWSTR, LPDWORD, LPBYTE, DWORD, LPDWORD ); ENGAPI BOOL APIENTRY EngGetPrinterDriver( HANDLE, LPWSTR, DWORD, BYTE *, DWORD, DWORD * ); ENGAPI HANDLE APIENTRY EngLoadImage( LPWSTR ); ENGAPI PVOID APIENTRY EngMapModule( HANDLE, PULONG ); ENGAPI int APIENTRY EngMulDiv( int, int, int ); ENGAPI VOID APIENTRY EngSetLastError( ULONG ); ENGAPI DWORD APIENTRY EngSetPrinterData( HANDLE, LPWSTR, DWORD, LPBYTE, DWORD ); ENGAPI VOID APIENTRY EngUnloadImage( HANDLE ); ENGAPI BOOL APIENTRY EngWritePrinter( HANDLE, LPVOID, DWORD, LPDWORD ); ENGAPI ULONG APIENTRY XFORMOBJ_iGetFloatObjXform( XFORMOBJ *, FLOATOBJ_XFORM * ); #ifdef _X86_ ENGAPI VOID APIENTRY FLOATOBJ_Add( PFLOATOBJ, PFLOATOBJ ); ENGAPI VOID APIENTRY FLOATOBJ_AddFloat( PFLOATOBJ, FLOATL ); ENGAPI VOID APIENTRY FLOATOBJ_AddLong( PFLOATOBJ, LONG ); ENGAPI VOID APIENTRY FLOATOBJ_Div( PFLOATOBJ, PFLOATOBJ ); ENGAPI VOID APIENTRY FLOATOBJ_DivFloat( PFLOATOBJ, FLOATL ); ENGAPI VOID APIENTRY FLOATOBJ_DivLong( PFLOATOBJ, LONG ); ENGAPI BOOL APIENTRY FLOATOBJ_Equal( PFLOATOBJ, PFLOATOBJ ); ENGAPI BOOL APIENTRY FLOATOBJ_EqualLong( PFLOATOBJ, LONG ); ENGAPI LONG APIENTRY FLOATOBJ_GetFloat( PFLOATOBJ ); ENGAPI LONG APIENTRY FLOATOBJ_GetLong( PFLOATOBJ ); ENGAPI BOOL APIENTRY FLOATOBJ_GreaterThan( PFLOATOBJ, PFLOATOBJ ); ENGAPI BOOL APIENTRY FLOATOBJ_GreaterThanLong( PFLOATOBJ, LONG ); ENGAPI BOOL APIENTRY FLOATOBJ_LessThan( PFLOATOBJ, PFLOATOBJ ); ENGAPI BOOL APIENTRY FLOATOBJ_LessThanLong( PFLOATOBJ, LONG ); ENGAPI VOID APIENTRY FLOATOBJ_Mul( PFLOATOBJ, PFLOATOBJ ); ENGAPI VOID APIENTRY FLOATOBJ_MulFloat( PFLOATOBJ, FLOATL ); ENGAPI VOID APIENTRY FLOATOBJ_MulLong( PFLOATOBJ, LONG ); ENGAPI VOID APIENTRY FLOATOBJ_Neg( PFLOATOBJ ); ENGAPI VOID APIENTRY FLOATOBJ_SetFloat( PFLOATOBJ, FLOATL ); ENGAPI VOID APIENTRY FLOATOBJ_SetLong( PFLOATOBJ, LONG ); ENGAPI VOID APIENTRY FLOATOBJ_Sub( PFLOATOBJ, PFLOATOBJ ); ENGAPI VOID APIENTRY FLOATOBJ_SubFloat( PFLOATOBJ, FLOATL ); ENGAPI VOID APIENTRY FLOATOBJ_SubLong( PFLOATOBJ, LONG ); #endif #endif #if (NTDDI_VERSION >= 0x05010000) ENGAPI VOID APIENTRY EngClearEvent( PEVENT ); ENGAPI ULONG APIENTRY EngHangNotification( HDEV, PVOID ); ENGAPI BOOL APIENTRY EngIsSemaphoreOwned( HSEMAPHORE ); ENGAPI BOOL APIENTRY EngIsSemaphoreOwnedByCurrentThread( HSEMAPHORE ); ENGAPI LONG APIENTRY EngReadStateEvent( PEVENT ); #ifndef USERMODE_DRIVER ENGAPI HRESULT APIENTRY EngDxIoctl( ULONG, PVOID, ULONG ); #endif #endif #if (NTDDI_VERSION >= 0x05010200) ENGAPI VOID APIENTRY EngBugCheckEx( ULONG, ULONG_PTR, ULONG_PTR, ULONG_PTR, ULONG_PTR ); #endif #if (NTDDI_VERSION >= 0x06000000) ENGAPI HANDLE APIENTRY CLIPOBJ_GetRgn( CLIPOBJ * ); ENGAPI VOID APIENTRY EngAcquireFastMutex( HFASTMUTEX ); ENGAPI BOOL APIENTRY EngAcquireSemaphoreNoWait( HSEMAPHORE ); ENGAPI VOID APIENTRY EngAcquireSemaphoreShared( HSEMAPHORE ); ENGAPI BOOL APIENTRY EngAcquireSemaphoreSharedNoWait( HSEMAPHORE ); ENGAPI INT APIENTRY EngCombineRgn( HANDLE, HANDLE, HANDLE, int ); ENGAPI INT APIENTRY EngCopyRgn( HANDLE, HANDLE ); ENGAPI HFASTMUTEX APIENTRY EngCreateFastMutex(); ENGAPI HANDLE APIENTRY EngCreateRectRgn( INT, INT, INT, INT ); ENGAPI VOID APIENTRY EngDeleteFastMutex( HFASTMUTEX ); ENGAPI VOID APIENTRY EngDeleteRgn( HANDLE ); ENGAPI BOOL APIENTRY EngEqualRgn( HANDLE, HANDLE ); ENGAPI INT APIENTRY EngGetRgnBox( HANDLE, LPRECT ); ENGAPI DWORD APIENTRY EngGetRgnData( HANDLE, DWORD, LPRGNDATA ); ENGAPI INT APIENTRY EngIntersectRgn( HANDLE, HANDLE, HANDLE ); ENGAPI BOOL APIENTRY EngIsSemaphoreSharedByCurrentThread( HSEMAPHORE ); ENGAPI INT APIENTRY EngOffsetRgn( HANDLE, INT, INT ); ENGAPI BOOL APIENTRY EngRectInRgn( HANDLE, LPRECT ); ENGAPI VOID APIENTRY EngReleaseFastMutex( HFASTMUTEX ); ENGAPI BOOL APIENTRY EngSetRectRgn( HANDLE, INT, INT, INT, INT ); ENGAPI INT APIENTRY EngSubtractRgn( HANDLE, HANDLE, HANDLE ); ENGAPI INT APIENTRY EngUnionRgn( HANDLE, HANDLE, HANDLE ); ENGAPI BOOL APIENTRY EngUpdateDeviceSurface( SURFOBJ *, CLIPOBJ ** ); ENGAPI INT APIENTRY EngXorRgn( HANDLE, HANDLE, HANDLE ); #endif #if (NTDDI_VERSION >= 0x06010000) ENGAPI ULONG APIENTRY EngCTGetCurrentGamma( HDEV ); ENGAPI VOID APIENTRY EngCTGetGammaTable( ULONG, CONST BYTE **, CONST BYTE ** ); ENGAPI HBITMAP APIENTRY EngCreateRedirectionDeviceBitmap( DHSURF, SIZEL, ULONG ); #endif /* Functions in WIN32K.SYS and GDI32.DLL with different signatures on different versions */ #if (NTDDI_VERSION >= 0x05010000) ENGAPI VOID APIENTRY EngProbeForRead( PVOID, SIZE_T, ULONG ); ENGAPI VOID APIENTRY EngProbeForReadAndWrite( PVOID, SIZE_T, ULONG ); #else ENGAPI VOID APIENTRY EngProbeForRead( PVOID, ULONG, ULONG ); ENGAPI VOID APIENTRY EngProbeForReadAndWrite( PVOID, ULONG, ULONG ); #endif /* Functions exported by drivers */ BOOL APIENTRY DrvAlphaBlend( SURFOBJ *, SURFOBJ *, CLIPOBJ *, XLATEOBJ *, RECTL *, RECTL *, BLENDOBJ * ); BOOL APIENTRY DrvAssertMode( DHPDEV, BOOL ); BOOL APIENTRY DrvBitBlt( SURFOBJ *, SURFOBJ *, SURFOBJ *, CLIPOBJ *, XLATEOBJ *, RECTL *, POINTL *, POINTL *, BRUSHOBJ *, POINTL *, ROP4 ); VOID APIENTRY DrvCompletePDEV( DHPDEV, HDEV ); BOOL APIENTRY DrvCopyBits( SURFOBJ *, SURFOBJ *, CLIPOBJ *, XLATEOBJ *, RECTL *, POINTL * ); HBITMAP APIENTRY DrvCreateDeviceBitmap( DHPDEV, SIZEL, ULONG ); VOID APIENTRY DrvDeleteDeviceBitmap( DHSURF ); HBITMAP APIENTRY DrvDeriveSurface( DD_DIRECTDRAW_GLOBAL *, DD_SURFACE_LOCAL * ); LONG APIENTRY DrvDescribePixelFormat( DHPDEV, LONG, ULONG, PIXELFORMATDESCRIPTOR * ); VOID APIENTRY DrvDestroyFont( FONTOBJ * ); VOID APIENTRY DrvDisableDriver(); VOID APIENTRY DrvDisablePDEV( DHPDEV ); VOID APIENTRY DrvDisableSurface( DHPDEV ); ULONG APIENTRY DrvDitherColor( DHPDEV, ULONG, ULONG, ULONG * ); VOID APIENTRY DrvDisableDirectDraw( DHPDEV ); ULONG APIENTRY DrvDrawEscape( SURFOBJ *, ULONG, CLIPOBJ *, RECTL *, ULONG, PVOID ); BOOL APIENTRY DrvEnableDirectDraw( DHPDEV, DD_CALLBACKS *, DD_SURFACECALLBACKS *, DD_PALETTECALLBACKS * ); BOOL APIENTRY DrvEnableDriver( ULONG, ULONG, DRVENABLEDATA * ); DHPDEV APIENTRY DrvEnablePDEV( DEVMODEW *, LPWSTR, ULONG, HSURF *, ULONG, ULONG *, ULONG, DEVINFO *, HDEV, LPWSTR, HANDLE ); HSURF APIENTRY DrvEnableSurface( DHPDEV ); BOOL APIENTRY DrvEndDoc( SURFOBJ *, FLONG ); ULONG APIENTRY DrvEscape( SURFOBJ *, ULONG, ULONG, PVOID, ULONG, PVOID ); BOOL APIENTRY DrvFillPath( SURFOBJ *, PATHOBJ *, CLIPOBJ *, BRUSHOBJ *, POINTL *, MIX, FLONG ); ULONG APIENTRY DrvFontManagement( SURFOBJ *, FONTOBJ *, ULONG, ULONG, PVOID, ULONG, PVOID ); BOOL APIENTRY DrvGetDirectDrawInfo( DHPDEV, DD_HALINFO *, DWORD *, VIDEOMEMORY *, DWORD *, DWORD * ); ULONG APIENTRY DrvGetGlyphMode( DHPDEV, FONTOBJ * ); ULONG APIENTRY DrvGetModes( HANDLE, ULONG, DEVMODEW * ); PVOID APIENTRY DrvGetTrueTypeFile( ULONG_PTR, ULONG * ); BOOL APIENTRY DrvGradientFill( SURFOBJ *, CLIPOBJ *, XLATEOBJ *, TRIVERTEX *, ULONG, PVOID, ULONG, RECTL *, POINTL *, ULONG ); BOOL APIENTRY DrvIcmCheckBitmapBits( DHPDEV, HANDLE, SURFOBJ *, PBYTE ); HANDLE APIENTRY DrvIcmCreateColorTransform( DHPDEV, LPLOGCOLORSPACEW, PVOID, ULONG, PVOID, ULONG, PVOID, ULONG, DWORD ); BOOL APIENTRY DrvIcmDeleteColorTransform( DHPDEV, HANDLE ); BOOL APIENTRY DrvIcmSetDeviceGammaRamp( DHPDEV, ULONG, LPVOID ); BOOL APIENTRY DrvLineTo( SURFOBJ *, CLIPOBJ *, BRUSHOBJ *, LONG, LONG, LONG, LONG, RECTL *, MIX ); VOID APIENTRY DrvMovePanning( LONG, LONG, FLONG ); VOID APIENTRY DrvMovePointer( SURFOBJ *, LONG, LONG, RECTL * ); BOOL APIENTRY DrvNextBand( SURFOBJ *, POINTL * ); VOID APIENTRY DrvNotify( SURFOBJ *, ULONG, PVOID ); BOOL APIENTRY DrvOffset( SURFOBJ *, LONG, LONG, FLONG ); BOOL APIENTRY DrvPaint( SURFOBJ *, CLIPOBJ *, BRUSHOBJ *, POINTL *, MIX ); BOOL APIENTRY DrvPlgBlt( SURFOBJ *, SURFOBJ *, SURFOBJ *, CLIPOBJ *, XLATEOBJ *, COLORADJUSTMENT *, POINTL *, POINTFIX *, RECTL *, POINTL *, ULONG ); BOOL APIENTRY DrvQueryAdvanceWidths( DHPDEV, FONTOBJ *, ULONG, HGLYPH *, PVOID, ULONG ); BOOL APIENTRY DrvQueryDeviceSupport( SURFOBJ *, XLATEOBJ *, XFORMOBJ *, ULONG, ULONG, PVOID, ULONG, PVOID ); BOOL APIENTRY DrvQueryDriverInfo( DWORD, PVOID, DWORD, PDWORD ); LONG APIENTRY DrvQueryFontCaps( ULONG, ULONG * ); LONG APIENTRY DrvQueryFontData( DHPDEV, FONTOBJ *, ULONG, HGLYPH, GLYPHDATA *, PVOID, ULONG ); LONG APIENTRY DrvQueryFontFile( ULONG_PTR, ULONG, ULONG, ULONG * ); ULONG APIENTRY DrvQueryPerBandInfo( SURFOBJ *, PERBANDINFO * ); BOOL APIENTRY DrvQuerySpoolType( DHPDEV, LPWSTR ); LONG APIENTRY DrvQueryTrueTypeOutline( DHPDEV, FONTOBJ *, HGLYPH, BOOL, GLYPHDATA *, ULONG, TTPOLYGONHEADER * ); LONG APIENTRY DrvQueryTrueTypeTable( ULONG_PTR, ULONG, ULONG, PTRDIFF, ULONG, BYTE *, PBYTE *, ULONG * ); BOOL APIENTRY DrvRealizeBrush( BRUSHOBJ *, SURFOBJ *, SURFOBJ *, SURFOBJ *, XLATEOBJ *, ULONG ); BOOL APIENTRY DrvResetPDEV( DHPDEV, DHPDEV ); ULONG_PTR APIENTRY DrvSaveScreenBits( SURFOBJ *, ULONG, ULONG_PTR, RECTL * ); BOOL APIENTRY DrvSendPage( SURFOBJ * ); BOOL APIENTRY DrvSetPalette( DHPDEV, PALOBJ *, FLONG, ULONG, ULONG ); BOOL APIENTRY DrvSetPixelFormat( SURFOBJ *, LONG, HWND ); ULONG APIENTRY DrvSetPointerShape( SURFOBJ *, SURFOBJ *, SURFOBJ *, XLATEOBJ *, LONG, LONG, LONG, LONG, RECTL *, FLONG ); BOOL APIENTRY DrvStartBanding( SURFOBJ *, POINTL * ); BOOL APIENTRY DrvStartDoc( SURFOBJ *, LPWSTR, DWORD ); BOOL APIENTRY DrvStartPage( SURFOBJ * ); BOOL APIENTRY DrvStretchBlt( SURFOBJ *, SURFOBJ *, SURFOBJ *, CLIPOBJ *, XLATEOBJ *, COLORADJUSTMENT *, POINTL *, RECTL *, RECTL *, POINTL *, ULONG ); BOOL APIENTRY DrvStretchBltROP( SURFOBJ *, SURFOBJ *, SURFOBJ *, CLIPOBJ *, XLATEOBJ *, COLORADJUSTMENT *, POINTL *, RECTL *, RECTL *, POINTL *, ULONG, BRUSHOBJ *, DWORD ); BOOL APIENTRY DrvStrokePath( SURFOBJ *, PATHOBJ *, CLIPOBJ *, XFORMOBJ *, BRUSHOBJ *, POINTL *, LINEATTRS *, MIX ); BOOL APIENTRY DrvStrokeAndFillPath( SURFOBJ *, PATHOBJ *, CLIPOBJ *, XFORMOBJ *, BRUSHOBJ *, LINEATTRS *, BRUSHOBJ *, POINTL *, MIX, FLONG ); BOOL APIENTRY DrvSwapBuffers( SURFOBJ *, WNDOBJ * ); VOID APIENTRY DrvSynchronize( DHPDEV, RECTL * ); VOID APIENTRY DrvSynchronizeSurface( SURFOBJ *, RECTL *, FLONG ); BOOL APIENTRY DrvTextOut( SURFOBJ *, STROBJ *, FONTOBJ *, CLIPOBJ *, RECTL *, RECTL *, BRUSHOBJ *, BRUSHOBJ *, POINTL *, MIX ); BOOL APIENTRY DrvTransparentBlt( SURFOBJ *, SURFOBJ *, CLIPOBJ *, XLATEOBJ *, RECTL *, RECTL *, ULONG, ULONG ); BOOL APIENTRY DrvUnloadFontFile( ULONG_PTR ); #if (NTDDI_VERSION >= 0x05010000) ULONG APIENTRY DrvResetDevice( DHPDEV, PVOID ); #endif #if (NTDDI_VERSION >= 0x06000000) LONG APIENTRY DrvRenderHint( DHPDEV, ULONG, SIZE_T, PVOID ); #endif #if (NTDDI_VERSION >= 0x06010000) BOOL APIENTRY DrvAccumulateD3DDirtyRect( SURFOBJ *, RECTL * ); BOOL APIENTRY DrvAssociateSharedSurface( SURFOBJ *, HANDLE, HANDLE, SIZEL ); HBITMAP APIENTRY DrvCreateDeviceBitmapEx( DHPDEV, SIZEL, ULONG, DWORD, DHSURF, DWORD, HANDLE * ); VOID APIENTRY DrvDeleteDeviceBitmapEx( DHSURF ); BOOL APIENTRY DrvEndDxInterop( SURFOBJ *, BOOL, BOOL * ); VOID APIENTRY DrvLockDisplayArea( DHPDEV, RECTL * ); BOOL APIENTRY DrvStartDxInterop( SURFOBJ *, BOOL ); LONG APIENTRY DrvSynchronizeRedirectionBitmaps( DHPDEV, UINT64 * ); VOID APIENTRY DrvUnlockDisplayArea( DHPDEV, RECTL * ); #endif /* Functions exported by drivers with different signatures on different versions */ #if (NTDDI_VERSION >= 0x05010000) VOID APIENTRY DrvFree( PVOID, ULONG_PTR ); PIFIMETRICS APIENTRY DrvQueryFont( DHPDEV, ULONG_PTR, ULONG, ULONG_PTR * ); PVOID APIENTRY DrvQueryFontTree( DHPDEV, ULONG_PTR, ULONG, ULONG, ULONG_PTR * ); #else VOID APIENTRY DrvFree( PVOID, ULONG ); PIFIMETRICS APIENTRY DrvQueryFont( DHPDEV, ULONG_PTR, ULONG, ULONG * ); PVOID APIENTRY DrvQueryFontTree( DHPDEV, ULONG_PTR, ULONG, ULONG, ULONG * ); #endif #if (_WIN32_WINNT >= 0x0500) ULONG_PTR APIENTRY DrvLoadFontFile( ULONG, ULONG_PTR *, PVOID *, ULONG *, DESIGNVECTOR *, ULONG, ULONG ); #else ULONG APIENTRY DrvLoadFontFile( ULONG, ULONG_PTR *, PVOID *, ULONG *, ULONG ); #endif /* Functions implemented as macros */ #ifdef USERMODE_DRIVER #define EngAllocMem( p1, p2, p3 ) \ ((PVOID)GlobalAlloc( ((p1) & FL_ZERO_MEMORY) ? GPTR : GMEM_FIXED, p2 )) #define EngFreeMem( x ) GlobalFree( (HGLOBAL)(x) ) #define EngAllocUserMem( p1, p2 ) ((PVOID)GlobalAlloc( GMEM_FIXED, p1 )) #define EngFreeUserMem( x ) GlobalFree( (HGLOBAL)(x) ) #define EngAllocPrivateUserMem( p1, p2, p3 ) \ ((PVOID)GlobalAlloc( GMEM_FIXED, p2 )) #define EngFreePrivateUserMem( p1, p2 ) GlobalFree( (HGLOBAL)(x) ) #define EngLoadImage( x ) ((HANDLE)LoadLibraryW( x )) #define EngFindImageProcAddress( x, p ) ((PVOID)GetProcAddress( x, p )) #define EngUnloadImage( x ) FreeLibrary( (HMODULE)(x) ) #endif #if !defined( _X86_ ) || defined( USERMODE_DRIVER ) #define FLOATOBJ_SetFloat( x, p ) { *(x) = (p); } #define FLOATOBJ_SetLong( x, p ) { *(x) = (FLOAT)(p); } #define FLOATOBJ_GetFloat( x ) *((PULONG)(x)) #define FLOATOBJ_GetLong( x ) (LONG)*(x) #define FLOATOBJ_AddFloat( x, p ) { *(x) += (p); } #define FLOATOBJ_AddLong( x, p ) { *(x) += (LONG)(p); } #define FLOATOBJ_Add( x, p ) { *(x) += *(p); } #define FLOATOBJ_SubFloat( x, p ) { *(x) -= (p); } #define FLOATOBJ_SubLong( x, p ) { *(x) -= (LONG)(p); } #define FLOATOBJ_Sub( x, p ) { *(x) -= *(p); } #define FLOATOBJ_MulFloat( x, p ) { *(x) *= (p); } #define FLOATOBJ_MulLong( x, p ) { *(x) *= (LONG)(p); } #define FLOATOBJ_Mul( x, p ) { *(x) *= *(p); } #define FLOATOBJ_DivFloat( x, p ) { *(x) /= (p); } #define FLOATOBJ_DivLong( x, p ) { *(x) /= (LONG)(p); } #define FLOATOBJ_Div( x, p ) { *(x) /= *(p); } #define FLOATOBJ_Neg( x ) { *(x) = -*(x); } #define FLOATOBJ_EqualLong( x, p ) (*(x) == (FLOAT)(p)) #define FLOATOBJ_GreaterThanLong( x, p ) (*(x) > (FLOAT)(p)) #define FLOATOBJ_LessThanLong( x, p ) (*(x) < (FLOAT)(p)) #define FLOATOBJ_Equal( x, p ) (*(x) == *(p)) #define FLOATOBJ_GreaterThan( x, p ) (*(x) > *(p)) #define FLOATOBJ_LessThan( x, p ) (*(x) < *(p)) #endif /* Aliases */ #ifdef USERMODE_DRIVER #define EngEnumForms EnumForms #define EngGetForm GetForm #define EngGetLastError GetLastError #define EngGetPrinter GetPrinter #define EngGetPrinterData GetPrinterData #define EngGetPrinterDriver GetPrinterDriver #define EngMulDiv MulDiv #define EngSetLastError SetLastError #define EngSetPrinterData SetPrinterData #define EngWritePrinter WritePrinter #define XFORMOBJ_iGetFloatObjXform XFORMOBJ_iGetXform #endif #ifdef __cplusplus } /* extern "C" */ #endif #endif /* _WINDDI_ */