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