[HNETCFG] Sync with Wine 3.0. CORE-14225
[reactos.git] / win32ss / include / ntgdityp.h
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