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