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