1 /* 2 * COPYRIGHT: See COPYING in the top level directory 3 * PROJECT: ReactOS Win32 Graphical Subsystem (WIN32K) 4 * FILE: win32ss/include/ntgdityp.h 5 * PURPOSE: Win32 Shared GDI Types for NtGdi* 6 * PROGRAMMER: Alex Ionescu (alex@relsoft.net) 7 */ 8 9 /* INCLUDES ******************************************************************/ 10 11 #ifndef _NTGDITYP_ 12 #define _NTGDITYP_ 13 14 #include "ntwin32.h" 15 16 /* ENUMERATIONS **************************************************************/ 17 18 typedef enum _ARCTYPE 19 { 20 GdiTypeArc, 21 GdiTypeArcTo, 22 GdiTypeChord, 23 GdiTypePie, 24 } ARCTYPE, *PARCTYPE; 25 26 typedef enum _PALFUNCTYPE 27 { 28 GdiPalAnimate, 29 GdiPalSetEntries, 30 GdiPalGetEntries, 31 GdiPalGetSystemEntries, 32 GdiPalSetColorTable, 33 GdiPalGetColorTable, 34 } PALFUNCTYPE, *PPALFUNCTYPE; 35 36 typedef enum _POLYFUNCTYPE 37 { 38 GdiPolyPolygon = 1, 39 GdiPolyPolyLine, 40 GdiPolyBezier, 41 GdiPolyLineTo, 42 GdiPolyBezierTo, 43 GdiPolyPolyRgn, 44 } POLYFUNCTYPE, *PPOLYFUNCTYPE; 45 46 typedef enum _GETDCDWORD 47 { 48 GdiGetJournal, 49 GdiGetRelAbs, 50 GdiGetBreakExtra, 51 GdiGerCharBreak, 52 GdiGetArcDirection, 53 GdiGetEMFRestorDc, 54 GdiGetFontLanguageInfo, 55 GdiGetIsMemDc, 56 GdiGetMapMode, 57 GdiGetTextCharExtra, 58 } GETDCDWORD, *PGETDCDWORD; 59 60 typedef enum _GETSETDCDWORD 61 { 62 GdiGetSetCopyCount = 2, 63 GdiGetSetTextAlign, 64 GdiGetSetRelAbs, 65 GdiGetSetTextCharExtra, 66 GdiGetSetSelectFont, 67 GdiGetSetMapperFlagsInternal, 68 GdiGetSetMapMode, 69 GdiGetSetArcDirection, 70 } GETSETDCDWORD, *PGETSETDCDWORD; 71 72 typedef enum _GETDCPOINT 73 { 74 GdiGetViewPortExt = 1, 75 GdiGetWindowExt, 76 GdiGetViewPortOrg, 77 GdiGetWindowOrg, 78 GdiGetAspectRatioFilter, 79 GdiGetDCOrg = 6, 80 } GETDCPOINT, *PGETDCPOINT; 81 82 83 typedef enum _GDIBATCHCMD 84 { 85 GdiBCPatBlt, 86 GdiBCPolyPatBlt, 87 GdiBCTextOut, 88 GdiBCExtTextOut, 89 GdiBCSetBrushOrg, 90 GdiBCExtSelClipRgn, 91 GdiBCSelObj, 92 GdiBCDelObj, 93 GdiBCDelRgn, 94 } GDIBATCHCMD, *PGDIBATCHCMD; 95 96 typedef enum _TRANSFORMTYPE 97 { 98 GdiDpToLp, 99 GdiLpToDp, 100 } TRANSFORMTYPE, *PTRANSFORMTYPE; 101 102 /* MATRIX flAccel flags */ 103 enum 104 { 105 XFORM_SCALE = 1, 106 XFORM_UNITY = 2, 107 XFORM_Y_NEG = 4, 108 XFORM_FORMAT_LTOFX = 8, 109 XFORM_FORMAT_FXTOL = 0x10, 110 XFORM_FORMAT_LTOL = 0x20, 111 XFORM_NO_TRANSLATION = 0x40, 112 113 /* ReactOS specific */ 114 XFORM_INTEGER = 0x1000, 115 }; 116 117 typedef enum GDIObjType 118 { 119 GDIObjType_DEF_TYPE = 0x00, 120 GDIObjType_DC_TYPE = 0x01, 121 GDIObjType_UNUSED1_TYPE = 0x02, 122 GDIObjType_UNUSED2_TYPE = 0x03, 123 GDIObjType_RGN_TYPE = 0x04, 124 GDIObjType_SURF_TYPE = 0x05, 125 GDIObjType_CLIENTOBJ_TYPE = 0x06, 126 GDIObjType_PATH_TYPE = 0x07, 127 GDIObjType_PAL_TYPE = 0x08, 128 GDIObjType_ICMLCS_TYPE = 0x09, 129 GDIObjType_LFONT_TYPE = 0x0a, 130 GDIObjType_RFONT_TYPE = 0x0b, 131 GDIObjType_PFE_TYPE = 0x0c, 132 GDIObjType_PFT_TYPE = 0x0d, 133 GDIObjType_ICMCXF_TYPE = 0x0e, 134 GDIObjType_SPRITE_TYPE = 0x0f, 135 GDIObjType_BRUSH_TYPE = 0x10, 136 GDIObjType_UMPD_TYPE = 0x11, 137 GDIObjType_UNUSED4_TYPE = 0x12, 138 GDIObjType_SPACE_TYPE = 0x13, 139 GDIObjType_UNUSED5_TYPE = 0x14, 140 GDIObjType_META_TYPE = 0x15, 141 GDIObjType_EFSTATE_TYPE = 0x16, 142 GDIObjType_BMFD_TYPE = 0x17, 143 GDIObjType_VTFD_TYPE = 0x18, 144 GDIObjType_TTFD_TYPE = 0x19, 145 GDIObjType_RC_TYPE = 0x1a, 146 GDIObjType_TEMP_TYPE = 0x1b, 147 GDIObjType_DRVOBJ_TYPE = 0x1c, 148 GDIObjType_DCIOBJ_TYPE = 0x1d, 149 GDIObjType_SPOOL_TYPE = 0x1e, 150 GDIObjType_MAX_TYPE = 0x1e, 151 GDIObjTypeTotal = 0x1f, 152 } GDIOBJTYPE, *PGDIOBJTYPE; 153 154 typedef enum GDILoObjType 155 { 156 GDILoObjType_LO_BRUSH_TYPE = 0x100000, 157 GDILoObjType_LO_DC_TYPE = 0x10000, 158 GDILoObjType_LO_BITMAP_TYPE = 0x50000, 159 GDILoObjType_LO_PALETTE_TYPE = 0x80000, 160 GDILoObjType_LO_FONT_TYPE = 0xa0000, 161 GDILoObjType_LO_REGION_TYPE = 0x40000, 162 GDILoObjType_LO_ICMLCS_TYPE = 0x90000, 163 GDILoObjType_LO_CLIENTOBJ_TYPE = 0x60000, 164 GDILoObjType_LO_ALTDC_TYPE = 0x210000, 165 GDILoObjType_LO_PEN_TYPE = 0x300000, 166 GDILoObjType_LO_EXTPEN_TYPE = 0x500000, 167 GDILoObjType_LO_DIBSECTION_TYPE = 0x250000, 168 GDILoObjType_LO_METAFILE16_TYPE = 0x260000, 169 GDILoObjType_LO_METAFILE_TYPE = 0x460000, 170 GDILoObjType_LO_METADC16_TYPE = 0x660000 171 } GDILOOBJTYPE, *PGDILOOBJTYPE; 172 173 /** 174 World Transform modification modes 175 See [MS-EMF] Section 2.1.24 176 */ 177 #define MWT_SET 0x04 178 179 #define GdiWorldSpaceToPageSpace 0x203 180 #define GdiWorldSpaceToDeviceSpace 0x204 181 #define GdiPageSpaceToDeviceSpace 0x304 182 #define GdiDeviceSpaceToWorldSpace 0x402 183 184 /* FIXME: Unknown */ 185 typedef DWORD FULLSCREENCONTROL; 186 typedef DWORD LFTYPE; 187 188 /* Public LAST_STOCK = 19, plus 2 more internal entries */ 189 #define NB_STOCK_OBJECTS 22 190 191 /* extra stock object: default 1x1 bitmap for memory DCs */ 192 #define DEFAULT_BITMAP (21) 193 194 195 /* DEFINES *******************************************************************/ 196 197 #define GDIBATCHBUFSIZE 0x136*4 198 #define GDI_BATCH_LIMIT 20 199 200 // NtGdiGetCharWidthW Flags 201 #define GCW_WIN32 0x0001 202 #define GCW_NOFLOAT 0x0002 203 #define GCW_INDICES 0x0008 204 205 // NtGdiGetCharABCWidthW Flags 206 #define GCABCW_NOFLOAT 0x0001 207 #define GCABCW_INDICES 0x0002 208 209 // NtGdiGetTextExtent* flags (reactos own) 210 #define GTEF_INDICES 0x1 211 212 /* CAPS1 support */ 213 #define CAPS1 94 214 //#define C1_TRANSPARENT 0x0001 215 #define TC_TT_ABLE 0x0002 216 #define C1_TT_CR_ANY 0x0004 217 #define C1_EMF_COMPLIANT 0x0008 218 #define C1_DIBENGINE 0x0010 219 #define C1_GAMMA_RAMP 0x0040 220 #define C1_REINIT_ABLE 0x0080 221 #define C1_GLYPH_INDEX 0x0100 222 #define C1_BIT_PACKED 0x0200 223 #define C1_BYTE_PACKED 0x0400 224 #define C1_COLORCURSOR 0x0800 225 #define C1_CMYK_ABLE 0x1000 226 #define C1_SLOW_CARD 0x2000 227 #define C1_MIRRORING 0X4000 228 229 // NtGdiGetRandomRgn iCodes 230 #define CLIPRGN 1 // GetClipRgn 231 #define METARGN 2 // GetMetaRgn 232 #define APIRGN 3 233 234 /* New flag for fdwInit in CreateDIBitmap. See support.microsoft.com/kb/kbview/108497*/ 235 #define CBM_CREATDIB 2 236 237 /* New color use parameter. See support.microsoft.com/kb/kbview/108497 */ 238 #define DIB_PAL_INDICES 2 239 240 /* Get/SetBounds/Rect support. */ 241 #define DCB_WINDOWMGR 0x8000 /* Queries the Windows bounding rectangle instead of the application's */ 242 243 /* TYPES *********************************************************************/ 244 245 typedef PVOID KERNEL_PVOID; 246 typedef PVOID PUMDHPDEV; 247 typedef D3DNTHAL_CONTEXTCREATEDATA D3DNTHAL_CONTEXTCREATEI; 248 #if !defined(_WINDDI_) 249 typedef LONG FIX; 250 #endif 251 252 typedef struct _CHWIDTHINFO // Based on FD_DEVICEMETRICS 253 { 254 LONG lMinA; 255 LONG lMinC; 256 LONG lMinD; 257 } CHWIDTHINFO, *PCHWIDTHINFO; 258 259 typedef struct _UNIVERSAL_FONT_ID 260 { 261 ULONG CheckSum; 262 ULONG Index; 263 } UNIVERSAL_FONT_ID, *PUNIVERSAL_FONT_ID; 264 265 #define RI_TECH_BITMAP 1 266 #define RI_TECH_FIXED 2 267 #define RI_TECH_SCALABLE 3 268 269 typedef struct _REALIZATION_INFO 270 { 271 DWORD iTechnology; 272 DWORD iUniq; 273 DWORD dwUnknown; 274 } REALIZATION_INFO, *PREALIZATION_INFO; 275 276 typedef struct _WIDTHDATA 277 { 278 USHORT sOverhang; 279 USHORT sHeight; 280 USHORT sCharInc; 281 USHORT sBreak; 282 BYTE jFirst; 283 BYTE jLast; 284 BYTE jBreak; 285 BYTE jDefault; 286 USHORT sDBCSInc; 287 USHORT sDefaultInc; 288 } WIDTHDATA, *PWIDTHDATA; 289 290 typedef struct _DEVCAPS // Very similar to GDIINFO 291 { 292 ULONG ulVersion; 293 ULONG ulTechnology; 294 ULONG ulHorzSizeM; 295 ULONG ulVertSizeM; 296 ULONG ulHorzSize; 297 ULONG ulVertSize; 298 ULONG ulHorzRes; 299 ULONG ulVertRes; 300 ULONG ulBitsPixel; 301 ULONG ulPlanes; 302 ULONG ulNumPens; 303 ULONG ulNumFonts; 304 ULONG ulNumColors; 305 ULONG ulRasterCaps; 306 ULONG ulAspectX; 307 ULONG ulAspectY; 308 ULONG ulAspectXY; 309 ULONG ulLogPixelsX; 310 ULONG ulLogPixelsY; 311 ULONG ulSizePalette; 312 ULONG ulColorRes; 313 ULONG ulPhysicalWidth; 314 ULONG ulPhysicalHeight; 315 ULONG ulPhysicalOffsetX; 316 ULONG ulPhysicalOffsetY; 317 ULONG ulTextCaps; 318 ULONG ulVRefresh; 319 ULONG ulDesktopHorzRes; 320 ULONG ulDesktopVertRes; 321 ULONG ulBltAlignment; 322 ULONG ulPanningHorzRes; 323 ULONG ulPanningVertRes; 324 ULONG xPanningAlignment; 325 ULONG yPanningAlignment; 326 ULONG ulShadeBlend; 327 ULONG ulColorMgmtCaps; 328 } DEVCAPS, *PDEVCAPS; 329 330 /* Gdi Handle Cache Types and Structures */ 331 #define GDI_CACHED_HANDLE_TYPES 4 332 #define CACHE_BRUSH_ENTRIES 10 333 #define CACHE_PEN_ENTRIES 8 334 #define CACHE_REGION_ENTRIES 8 335 #define CACHE_LFONT_ENTRIES 1 336 337 typedef enum _HANDLECACHETYPE 338 { 339 hctBrushHandle, 340 hctPenHandle, 341 hctRegionHandle, 342 hctLFontHandle 343 } HANDLECACHETYPE,*PHANDLECACHETYPE; 344 345 typedef struct _GDIHANDLECACHE 346 { 347 ULONG ulLock; 348 ULONG ulNumHandles[GDI_CACHED_HANDLE_TYPES]; 349 HANDLE Handle[CACHE_BRUSH_ENTRIES+CACHE_PEN_ENTRIES+CACHE_REGION_ENTRIES+CACHE_LFONT_ENTRIES]; 350 } GDIHANDLECACHE, *PGDIHANDLECACHE; 351 352 /* Font Structures */ 353 typedef struct _TMDIFF 354 { 355 ULONG cjotma; 356 CHAR chFirst; 357 CHAR chLast; 358 CHAR ChDefault; 359 CHAR ChBreak; 360 } TMDIFF, *PTMDIFF; 361 362 typedef struct _TMW_INTERNAL 363 { 364 TEXTMETRICW TextMetric; 365 TMDIFF Diff; 366 } TMW_INTERNAL, *PTMW_INTERNAL; 367 368 typedef struct _NTMW_INTERNAL 369 { 370 TMDIFF tmd; 371 NEWTEXTMETRICEXW ntmw; 372 } NTMW_INTERNAL, *PNTMW_INTERNAL; 373 374 typedef struct _ENUMFONTDATAW 375 { 376 ULONG cbSize; 377 ULONG ulNtmwiOffset; 378 DWORD dwFontType; 379 ENUMLOGFONTEXDVW elfexdv; /* variable size! */ 380 /* NTMW_INTERNAL ntmwi; use ulNtwmOffset */ 381 } ENUMFONTDATAW, *PENUMFONTDATAW; 382 383 /* Number Representation */ 384 typedef struct _EFLOAT_S 385 { 386 LONG lMant; 387 LONG lExp; 388 } EFLOAT_S; 389 390 /* XFORM Structures */ 391 typedef struct _MATRIX_S 392 { 393 EFLOAT_S efM11; 394 EFLOAT_S efM12; 395 EFLOAT_S efM21; 396 EFLOAT_S efM22; 397 EFLOAT_S efDx; 398 EFLOAT_S efDy; 399 FIX fxDx; 400 FIX fxDy; 401 FLONG flAccel; 402 } MATRIX_S; 403 404 typedef struct _MATRIX 405 { 406 FLOATOBJ efM11; 407 FLOATOBJ efM12; 408 FLOATOBJ efM21; 409 FLOATOBJ efM22; 410 FLOATOBJ efDx; 411 FLOATOBJ efDy; 412 FIX fxDx; 413 FIX fxDy; 414 FLONG flAccel; 415 } MATRIX, *PMATRIX; 416 417 /* Gdi XForm storage union */ 418 typedef union 419 { 420 FLOAT f; 421 ULONG l; 422 } gxf_long; 423 424 #define CFONT_REALIZATION 0x0080 425 426 typedef struct _CFONT 427 { 428 struct _CFONT *pcfNext; 429 HFONT hf; 430 ULONG cRef; // Count of all pointers to this CFONT. 431 FLONG fl; 432 LONG lHeight; // Precomputed logical height. 433 HDC hdc; // HDC of realization. 0 for display. 434 EFLOAT_S efM11; // efM11 of WtoD of DC of realization 435 EFLOAT_S efM22; // efM22 of WtoD of DC of realization 436 EFLOAT_S efDtoWBaseline; // Precomputed back transform. (FXtoL) 437 EFLOAT_S efDtoWAscent; // Precomputed back transform. (FXtoL) 438 WIDTHDATA wd; 439 FLONG flInfo; 440 USHORT sWidth[256]; // Widths in pels. 441 ULONG ulAveWidth; // bogus average used by USER 442 TMW_INTERNAL tmw; // cached metrics 443 DWORD iTechnology; 444 DWORD iUniq; 445 DWORD dwUnknown; 446 DWORD dwCFCount; 447 } CFONT, *PCFONT; 448 449 /* GDI Batch structures. */ 450 typedef struct _GDIBATCHHDR 451 { 452 SHORT Size; 453 SHORT Cmd; 454 } GDIBATCHHDR, *PGDIBATCHHDR; 455 456 typedef struct _GDIBSPATBLT 457 { 458 GDIBATCHHDR gbHdr; 459 int nXLeft; 460 int nYLeft; 461 int nWidth; 462 int nHeight; 463 HANDLE hbrush; 464 DWORD dwRop; 465 COLORREF crForegroundClr; 466 COLORREF crBackgroundClr; 467 COLORREF crBrushClr; 468 INT IcmBrushColor; 469 POINTL ptlViewportOrg; 470 ULONG ulForegroundClr; 471 ULONG ulBackgroundClr; 472 ULONG ulBrushClr; 473 } GDIBSPATBLT, *PGDIBSPATBLT; 474 475 /* FIXME: this should go to some "public" GDI32 header */ 476 typedef struct _PATRECT 477 { 478 RECT r; 479 HBRUSH hBrush; 480 } PATRECT, * PPATRECT; 481 482 typedef struct _GDIBSPPATBLT 483 { 484 GDIBATCHHDR gbHdr; 485 DWORD rop4; 486 DWORD Mode; 487 DWORD Count; 488 COLORREF crForegroundClr; 489 COLORREF crBackgroundClr; 490 COLORREF crBrushClr; 491 ULONG ulForegroundClr; 492 ULONG ulBackgroundClr; 493 ULONG ulBrushClr; 494 POINTL ptlViewportOrg; 495 PATRECT pRect[1]; // POLYPATBLT 496 } GDIBSPPATBLT, *PGDIBSPPATBLT; 497 498 typedef struct _GDIBSTEXTOUT 499 { 500 GDIBATCHHDR gbHdr; 501 COLORREF crForegroundClr; 502 COLORREF crBackgroundClr; 503 LONG lmBkMode; 504 ULONG ulForegroundClr; 505 ULONG ulBackgroundClr; 506 int x; 507 int y; 508 UINT Options; 509 RECT Rect; 510 DWORD iCS_CP; 511 UINT cbCount; 512 UINT Size; 513 HANDLE hlfntNew; 514 FLONG flTextAlign; 515 POINTL ptlViewportOrg; 516 WCHAR String[2]; 517 } GDIBSTEXTOUT, *PGDIBSTEXTOUT; 518 519 typedef struct _GDIBSEXTTEXTOUT 520 { 521 GDIBATCHHDR gbHdr; 522 UINT Count; 523 UINT Options; 524 RECT Rect; 525 POINTL ptlViewportOrg; 526 ULONG ulBackgroundClr; 527 } GDIBSEXTTEXTOUT, *PGDIBSEXTTEXTOUT; 528 529 typedef struct _GDIBSSETBRHORG 530 { 531 GDIBATCHHDR gbHdr; 532 POINTL ptlBrushOrigin; 533 } GDIBSSETBRHORG, *PGDIBSSETBRHORG; 534 535 typedef struct _GDIBSEXTSELCLPRGN 536 { 537 GDIBATCHHDR gbHdr; 538 int fnMode; 539 RECTL rcl; 540 } GDIBSEXTSELCLPRGN, *PGDIBSEXTSELCLPRGN; 541 542 /* Use with GdiBCSelObj, GdiBCDelObj and GdiBCDelRgn. */ 543 typedef struct _GDIBSOBJECT 544 { 545 GDIBATCHHDR gbHdr; 546 HGDIOBJ hgdiobj; 547 } GDIBSOBJECT, *PGDIBSOBJECT; 548 549 /* Declaration missing in ddk/winddi.h */ 550 typedef VOID (APIENTRY *PFN_DrvMovePanning)(LONG, LONG, FLONG); 551 552 /* Most of these are defined in ddk/winddi.h */ 553 typedef struct _DRIVER_FUNCTIONS 554 { 555 PFN_DrvEnablePDEV EnablePDEV; 556 PFN_DrvCompletePDEV CompletePDEV; 557 PFN_DrvDisablePDEV DisablePDEV; 558 PFN_DrvEnableSurface EnableSurface; 559 PFN_DrvDisableSurface DisableSurface; 560 PFN_DrvAssertMode AssertMode; 561 PFN_DrvOffset Offset; 562 PFN_DrvResetDevice ResetPDEV; 563 PFN_DrvDisableDriver DisableDriver; 564 PVOID Unknown1; 565 PFN_DrvCreateDeviceBitmap CreateDeviceBitmap; 566 PFN_DrvDeleteDeviceBitmap DeleteDeviceBitmap; 567 PFN_DrvRealizeBrush RealizeBrush; 568 PFN_DrvDitherColor DitherColor; 569 PFN_DrvStrokePath StrokePath; 570 PFN_DrvFillPath FillPath; 571 PFN_DrvStrokeAndFillPath StrokeAndFillPath; 572 PFN_DrvPaint Paint; 573 PFN_DrvBitBlt BitBlt; 574 PFN_DrvCopyBits CopyBits; 575 PFN_DrvStretchBlt StretchBlt; 576 PVOID Unknown2; 577 PFN_DrvSetPalette SetPalette; 578 PFN_DrvTextOut TextOut; 579 PFN_DrvEscape Escape; 580 PFN_DrvDrawEscape DrawEscape; 581 PFN_DrvQueryFont QueryFont; 582 PFN_DrvQueryFontTree QueryFontTree; 583 PFN_DrvQueryFontData QueryFontData; 584 PFN_DrvSetPointerShape SetPointerShape; 585 PFN_DrvMovePointer MovePointer; 586 PFN_DrvLineTo LineTo; 587 PFN_DrvSendPage SendPage; 588 PFN_DrvStartPage StartPage; 589 PFN_DrvEndDoc EndDoc; 590 PFN_DrvStartDoc StartDoc; 591 PVOID Unknown3; 592 PFN_DrvGetGlyphMode GetGlyphMode; 593 PFN_DrvSynchronize Synchronize; 594 PVOID Unknown4; 595 PFN_DrvSaveScreenBits SaveScreenBits; 596 PFN_DrvGetModes GetModes; 597 PFN_DrvFree Free; 598 PFN_DrvDestroyFont DestroyFont; 599 PFN_DrvQueryFontCaps QueryFontCaps; 600 PFN_DrvLoadFontFile LoadFontFile; 601 PFN_DrvUnloadFontFile UnloadFontFile; 602 PFN_DrvFontManagement FontManagement; 603 PFN_DrvQueryTrueTypeTable QueryTrueTypeTable; 604 PFN_DrvQueryTrueTypeOutline QueryTrueTypeOutline; 605 PFN_DrvGetTrueTypeFile GetTrueTypeFile; 606 PFN_DrvQueryFontFile QueryFontFile; 607 PFN_DrvMovePanning MovePanning; 608 PFN_DrvQueryAdvanceWidths QueryAdvanceWidths; 609 PFN_DrvSetPixelFormat SetPixelFormat; 610 PFN_DrvDescribePixelFormat DescribePixelFormat; 611 PFN_DrvSwapBuffers SwapBuffers; 612 PFN_DrvStartBanding StartBanding; 613 PFN_DrvNextBand NextBand; 614 PFN_DrvGetDirectDrawInfo GetDirectDrawInfo; 615 PFN_DrvEnableDirectDraw EnableDirectDraw; 616 PFN_DrvDisableDirectDraw DisableDirectDraw; 617 PFN_DrvQuerySpoolType QuerySpoolType; 618 PVOID Unknown5; 619 PFN_DrvIcmCreateColorTransform IcmCreateColorTransform; 620 PFN_DrvIcmDeleteColorTransform IcmDeleteColorTransform; 621 PFN_DrvIcmCheckBitmapBits IcmCheckBitmapBits; 622 PFN_DrvIcmSetDeviceGammaRamp IcmSetDeviceGammaRamp; 623 PFN_DrvGradientFill GradientFill; 624 PFN_DrvStretchBltROP StretchBltROP; 625 PFN_DrvPlgBlt PlgBlt; 626 PFN_DrvAlphaBlend AlphaBlend; 627 PVOID SynthesizeFont; 628 PVOID GetSynthesizedFontFiles; 629 PFN_DrvTransparentBlt TransparentBlt; 630 PFN_DrvQueryPerBandInfo QueryPerBandInfo; 631 PFN_DrvQueryDeviceSupport QueryDeviceSupport; 632 PVOID Reserved1; 633 PVOID Reserved2; 634 PVOID Reserved3; 635 PVOID Reserved4; 636 PVOID Reserved5; 637 PVOID Reserved6; 638 PVOID Reserved7; 639 PVOID Reserved8; 640 PFN_DrvDeriveSurface DeriveSurface; 641 PFN_DrvQueryGlyphAttrs QueryGlyphAttrs; 642 PFN_DrvNotify Notify; 643 PFN_DrvSynchronizeSurface SynchronizeSurface; 644 PFN_DrvResetDevice ResetDevice; 645 PVOID Reserved9; 646 PVOID Reserved10; 647 PVOID Reserved11; /* 92 */ 648 649 /* ReactOS specify */ 650 PFN_DrvEnableDriver EnableDriver; //ReactOS Extra 651 } DRIVER_FUNCTIONS, *PDRIVER_FUNCTIONS; 652 653 #define ASSERT_PFN(pfn) \ 654 C_ASSERT(FIELD_OFFSET(DRIVER_FUNCTIONS, pfn) == sizeof(PVOID) * INDEX_Drv##pfn) 655 656 ASSERT_PFN(EnablePDEV); 657 ASSERT_PFN(CompletePDEV); 658 ASSERT_PFN(DisablePDEV); 659 ASSERT_PFN(EnableSurface); 660 ASSERT_PFN(DisableSurface); 661 ASSERT_PFN(AssertMode); 662 ASSERT_PFN(Offset); 663 ASSERT_PFN(ResetPDEV); 664 ASSERT_PFN(DisableDriver); 665 ASSERT_PFN(CreateDeviceBitmap); 666 ASSERT_PFN(DeleteDeviceBitmap); 667 ASSERT_PFN(RealizeBrush); 668 ASSERT_PFN(DitherColor); 669 ASSERT_PFN(StrokePath); 670 ASSERT_PFN(FillPath); 671 ASSERT_PFN(StrokeAndFillPath); 672 ASSERT_PFN(Paint); 673 ASSERT_PFN(BitBlt); 674 ASSERT_PFN(CopyBits); 675 ASSERT_PFN(StretchBlt); 676 ASSERT_PFN(SetPalette); 677 ASSERT_PFN(TextOut); 678 ASSERT_PFN(Escape); 679 ASSERT_PFN(DrawEscape); 680 ASSERT_PFN(QueryFont); 681 ASSERT_PFN(QueryFontTree); 682 ASSERT_PFN(QueryFontData); 683 ASSERT_PFN(SetPointerShape); 684 ASSERT_PFN(MovePointer); 685 ASSERT_PFN(LineTo); 686 ASSERT_PFN(SendPage); 687 ASSERT_PFN(StartPage); 688 ASSERT_PFN(EndDoc); 689 ASSERT_PFN(StartDoc); 690 ASSERT_PFN(GetGlyphMode); 691 ASSERT_PFN(Synchronize); 692 ASSERT_PFN(SaveScreenBits); 693 ASSERT_PFN(GetModes); 694 ASSERT_PFN(Free); 695 ASSERT_PFN(DestroyFont); 696 ASSERT_PFN(QueryFontCaps); 697 ASSERT_PFN(LoadFontFile); 698 ASSERT_PFN(UnloadFontFile); 699 ASSERT_PFN(FontManagement); 700 ASSERT_PFN(QueryTrueTypeTable); 701 ASSERT_PFN(QueryTrueTypeOutline); 702 ASSERT_PFN(GetTrueTypeFile); 703 ASSERT_PFN(QueryFontFile); 704 ASSERT_PFN(MovePanning); 705 ASSERT_PFN(QueryAdvanceWidths); 706 ASSERT_PFN(SetPixelFormat); 707 ASSERT_PFN(DescribePixelFormat); 708 ASSERT_PFN(SwapBuffers); 709 ASSERT_PFN(StartBanding); 710 ASSERT_PFN(NextBand); 711 ASSERT_PFN(GetDirectDrawInfo); 712 ASSERT_PFN(EnableDirectDraw); 713 ASSERT_PFN(DisableDirectDraw); 714 ASSERT_PFN(QuerySpoolType); 715 ASSERT_PFN(IcmCreateColorTransform); 716 ASSERT_PFN(IcmDeleteColorTransform); 717 ASSERT_PFN(IcmCheckBitmapBits); 718 ASSERT_PFN(IcmSetDeviceGammaRamp); 719 ASSERT_PFN(GradientFill); 720 ASSERT_PFN(StretchBltROP); 721 ASSERT_PFN(PlgBlt); 722 ASSERT_PFN(AlphaBlend); 723 ASSERT_PFN(SynthesizeFont); 724 ASSERT_PFN(GetSynthesizedFontFiles); 725 ASSERT_PFN(TransparentBlt); 726 ASSERT_PFN(QueryPerBandInfo); 727 ASSERT_PFN(QueryDeviceSupport); 728 ASSERT_PFN(Reserved1); 729 ASSERT_PFN(Reserved2); 730 ASSERT_PFN(Reserved3); 731 ASSERT_PFN(Reserved4); 732 ASSERT_PFN(Reserved5); 733 ASSERT_PFN(Reserved6); 734 ASSERT_PFN(Reserved7); 735 ASSERT_PFN(Reserved8); 736 ASSERT_PFN(DeriveSurface); 737 ASSERT_PFN(QueryGlyphAttrs); 738 ASSERT_PFN(Notify); 739 ASSERT_PFN(SynchronizeSurface); 740 ASSERT_PFN(ResetDevice); 741 742 #endif 743