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 // 499 // Both ExtSelectClipRgn and TextOut pass a nill RECT. 500 // 501 #define GDIBS_NORECT 0x80000000 502 503 typedef struct _GDIBSTEXTOUT 504 { 505 GDIBATCHHDR gbHdr; 506 COLORREF crForegroundClr; 507 COLORREF crBackgroundClr; 508 LONG lBkMode; 509 ULONG ulForegroundClr; 510 ULONG ulBackgroundClr; 511 int x; 512 int y; 513 UINT Options; 514 RECT Rect; 515 DWORD iCS_CP; 516 UINT cbCount; 517 UINT Size; 518 HANDLE hlfntNew; 519 FLONG flTextAlign; 520 POINTL ptlViewportOrg; 521 union { 522 WCHAR String[2]; 523 ULONG Buffer[1]; 524 }; 525 } GDIBSTEXTOUT, *PGDIBSTEXTOUT; 526 527 typedef struct _GDIBSEXTTEXTOUT 528 { 529 GDIBATCHHDR gbHdr; 530 UINT Count; 531 UINT Options; 532 RECT Rect; 533 POINTL ptlViewportOrg; 534 ULONG ulBackgroundClr; 535 } GDIBSEXTTEXTOUT, *PGDIBSEXTTEXTOUT; 536 537 typedef struct _GDIBSSETBRHORG 538 { 539 GDIBATCHHDR gbHdr; 540 POINTL ptlBrushOrigin; 541 } GDIBSSETBRHORG, *PGDIBSSETBRHORG; 542 543 typedef struct _GDIBSEXTSELCLPRGN 544 { 545 GDIBATCHHDR gbHdr; 546 int fnMode; 547 RECTL rcl; 548 } GDIBSEXTSELCLPRGN, *PGDIBSEXTSELCLPRGN; 549 550 /* Use with GdiBCSelObj, GdiBCDelObj and GdiBCDelRgn. */ 551 typedef struct _GDIBSOBJECT 552 { 553 GDIBATCHHDR gbHdr; 554 HGDIOBJ hgdiobj; 555 } GDIBSOBJECT, *PGDIBSOBJECT; 556 557 /* Declaration missing in ddk/winddi.h */ 558 typedef VOID (APIENTRY *PFN_DrvMovePanning)(LONG, LONG, FLONG); 559 560 /* Most of these are defined in ddk/winddi.h */ 561 typedef struct _DRIVER_FUNCTIONS 562 { 563 PFN_DrvEnablePDEV EnablePDEV; 564 PFN_DrvCompletePDEV CompletePDEV; 565 PFN_DrvDisablePDEV DisablePDEV; 566 PFN_DrvEnableSurface EnableSurface; 567 PFN_DrvDisableSurface DisableSurface; 568 PFN_DrvAssertMode AssertMode; 569 PFN_DrvOffset Offset; 570 PFN_DrvResetDevice ResetPDEV; 571 PFN_DrvDisableDriver DisableDriver; 572 PVOID Unknown1; 573 PFN_DrvCreateDeviceBitmap CreateDeviceBitmap; 574 PFN_DrvDeleteDeviceBitmap DeleteDeviceBitmap; 575 PFN_DrvRealizeBrush RealizeBrush; 576 PFN_DrvDitherColor DitherColor; 577 PFN_DrvStrokePath StrokePath; 578 PFN_DrvFillPath FillPath; 579 PFN_DrvStrokeAndFillPath StrokeAndFillPath; 580 PFN_DrvPaint Paint; 581 PFN_DrvBitBlt BitBlt; 582 PFN_DrvCopyBits CopyBits; 583 PFN_DrvStretchBlt StretchBlt; 584 PVOID Unknown2; 585 PFN_DrvSetPalette SetPalette; 586 PFN_DrvTextOut TextOut; 587 PFN_DrvEscape Escape; 588 PFN_DrvDrawEscape DrawEscape; 589 PFN_DrvQueryFont QueryFont; 590 PFN_DrvQueryFontTree QueryFontTree; 591 PFN_DrvQueryFontData QueryFontData; 592 PFN_DrvSetPointerShape SetPointerShape; 593 PFN_DrvMovePointer MovePointer; 594 PFN_DrvLineTo LineTo; 595 PFN_DrvSendPage SendPage; 596 PFN_DrvStartPage StartPage; 597 PFN_DrvEndDoc EndDoc; 598 PFN_DrvStartDoc StartDoc; 599 PVOID Unknown3; 600 PFN_DrvGetGlyphMode GetGlyphMode; 601 PFN_DrvSynchronize Synchronize; 602 PVOID Unknown4; 603 PFN_DrvSaveScreenBits SaveScreenBits; 604 PFN_DrvGetModes GetModes; 605 PFN_DrvFree Free; 606 PFN_DrvDestroyFont DestroyFont; 607 PFN_DrvQueryFontCaps QueryFontCaps; 608 PFN_DrvLoadFontFile LoadFontFile; 609 PFN_DrvUnloadFontFile UnloadFontFile; 610 PFN_DrvFontManagement FontManagement; 611 PFN_DrvQueryTrueTypeTable QueryTrueTypeTable; 612 PFN_DrvQueryTrueTypeOutline QueryTrueTypeOutline; 613 PFN_DrvGetTrueTypeFile GetTrueTypeFile; 614 PFN_DrvQueryFontFile QueryFontFile; 615 PFN_DrvMovePanning MovePanning; 616 PFN_DrvQueryAdvanceWidths QueryAdvanceWidths; 617 PFN_DrvSetPixelFormat SetPixelFormat; 618 PFN_DrvDescribePixelFormat DescribePixelFormat; 619 PFN_DrvSwapBuffers SwapBuffers; 620 PFN_DrvStartBanding StartBanding; 621 PFN_DrvNextBand NextBand; 622 PFN_DrvGetDirectDrawInfo GetDirectDrawInfo; 623 PFN_DrvEnableDirectDraw EnableDirectDraw; 624 PFN_DrvDisableDirectDraw DisableDirectDraw; 625 PFN_DrvQuerySpoolType QuerySpoolType; 626 PVOID Unknown5; 627 PFN_DrvIcmCreateColorTransform IcmCreateColorTransform; 628 PFN_DrvIcmDeleteColorTransform IcmDeleteColorTransform; 629 PFN_DrvIcmCheckBitmapBits IcmCheckBitmapBits; 630 PFN_DrvIcmSetDeviceGammaRamp IcmSetDeviceGammaRamp; 631 PFN_DrvGradientFill GradientFill; 632 PFN_DrvStretchBltROP StretchBltROP; 633 PFN_DrvPlgBlt PlgBlt; 634 PFN_DrvAlphaBlend AlphaBlend; 635 PVOID SynthesizeFont; 636 PVOID GetSynthesizedFontFiles; 637 PFN_DrvTransparentBlt TransparentBlt; 638 PFN_DrvQueryPerBandInfo QueryPerBandInfo; 639 PFN_DrvQueryDeviceSupport QueryDeviceSupport; 640 PVOID Reserved1; 641 PVOID Reserved2; 642 PVOID Reserved3; 643 PVOID Reserved4; 644 PVOID Reserved5; 645 PVOID Reserved6; 646 PVOID Reserved7; 647 PVOID Reserved8; 648 PFN_DrvDeriveSurface DeriveSurface; 649 PFN_DrvQueryGlyphAttrs QueryGlyphAttrs; 650 PFN_DrvNotify Notify; 651 PFN_DrvSynchronizeSurface SynchronizeSurface; 652 PFN_DrvResetDevice ResetDevice; 653 PVOID Reserved9; 654 PVOID Reserved10; 655 PVOID Reserved11; /* 92 */ 656 657 /* ReactOS specify */ 658 PFN_DrvEnableDriver EnableDriver; //ReactOS Extra 659 } DRIVER_FUNCTIONS, *PDRIVER_FUNCTIONS; 660 661 #define ASSERT_PFN(pfn) \ 662 C_ASSERT(FIELD_OFFSET(DRIVER_FUNCTIONS, pfn) == sizeof(PVOID) * INDEX_Drv##pfn) 663 664 ASSERT_PFN(EnablePDEV); 665 ASSERT_PFN(CompletePDEV); 666 ASSERT_PFN(DisablePDEV); 667 ASSERT_PFN(EnableSurface); 668 ASSERT_PFN(DisableSurface); 669 ASSERT_PFN(AssertMode); 670 ASSERT_PFN(Offset); 671 ASSERT_PFN(ResetPDEV); 672 ASSERT_PFN(DisableDriver); 673 ASSERT_PFN(CreateDeviceBitmap); 674 ASSERT_PFN(DeleteDeviceBitmap); 675 ASSERT_PFN(RealizeBrush); 676 ASSERT_PFN(DitherColor); 677 ASSERT_PFN(StrokePath); 678 ASSERT_PFN(FillPath); 679 ASSERT_PFN(StrokeAndFillPath); 680 ASSERT_PFN(Paint); 681 ASSERT_PFN(BitBlt); 682 ASSERT_PFN(CopyBits); 683 ASSERT_PFN(StretchBlt); 684 ASSERT_PFN(SetPalette); 685 ASSERT_PFN(TextOut); 686 ASSERT_PFN(Escape); 687 ASSERT_PFN(DrawEscape); 688 ASSERT_PFN(QueryFont); 689 ASSERT_PFN(QueryFontTree); 690 ASSERT_PFN(QueryFontData); 691 ASSERT_PFN(SetPointerShape); 692 ASSERT_PFN(MovePointer); 693 ASSERT_PFN(LineTo); 694 ASSERT_PFN(SendPage); 695 ASSERT_PFN(StartPage); 696 ASSERT_PFN(EndDoc); 697 ASSERT_PFN(StartDoc); 698 ASSERT_PFN(GetGlyphMode); 699 ASSERT_PFN(Synchronize); 700 ASSERT_PFN(SaveScreenBits); 701 ASSERT_PFN(GetModes); 702 ASSERT_PFN(Free); 703 ASSERT_PFN(DestroyFont); 704 ASSERT_PFN(QueryFontCaps); 705 ASSERT_PFN(LoadFontFile); 706 ASSERT_PFN(UnloadFontFile); 707 ASSERT_PFN(FontManagement); 708 ASSERT_PFN(QueryTrueTypeTable); 709 ASSERT_PFN(QueryTrueTypeOutline); 710 ASSERT_PFN(GetTrueTypeFile); 711 ASSERT_PFN(QueryFontFile); 712 ASSERT_PFN(MovePanning); 713 ASSERT_PFN(QueryAdvanceWidths); 714 ASSERT_PFN(SetPixelFormat); 715 ASSERT_PFN(DescribePixelFormat); 716 ASSERT_PFN(SwapBuffers); 717 ASSERT_PFN(StartBanding); 718 ASSERT_PFN(NextBand); 719 ASSERT_PFN(GetDirectDrawInfo); 720 ASSERT_PFN(EnableDirectDraw); 721 ASSERT_PFN(DisableDirectDraw); 722 ASSERT_PFN(QuerySpoolType); 723 ASSERT_PFN(IcmCreateColorTransform); 724 ASSERT_PFN(IcmDeleteColorTransform); 725 ASSERT_PFN(IcmCheckBitmapBits); 726 ASSERT_PFN(IcmSetDeviceGammaRamp); 727 ASSERT_PFN(GradientFill); 728 ASSERT_PFN(StretchBltROP); 729 ASSERT_PFN(PlgBlt); 730 ASSERT_PFN(AlphaBlend); 731 ASSERT_PFN(SynthesizeFont); 732 ASSERT_PFN(GetSynthesizedFontFiles); 733 ASSERT_PFN(TransparentBlt); 734 ASSERT_PFN(QueryPerBandInfo); 735 ASSERT_PFN(QueryDeviceSupport); 736 ASSERT_PFN(Reserved1); 737 ASSERT_PFN(Reserved2); 738 ASSERT_PFN(Reserved3); 739 ASSERT_PFN(Reserved4); 740 ASSERT_PFN(Reserved5); 741 ASSERT_PFN(Reserved6); 742 ASSERT_PFN(Reserved7); 743 ASSERT_PFN(Reserved8); 744 ASSERT_PFN(DeriveSurface); 745 ASSERT_PFN(QueryGlyphAttrs); 746 ASSERT_PFN(Notify); 747 ASSERT_PFN(SynchronizeSurface); 748 ASSERT_PFN(ResetDevice); 749 750 #endif 751