source: Daodan/MSYS2/mingw32/i686-w64-mingw32/include/winddi.h@ 1167

Last change on this file since 1167 was 1166, checked in by rossy, 3 years ago

Daodan: Replace MinGW build env with an up-to-date MSYS2 env

File size: 81.7 KB
Line 
1/*
2 * winddi.h
3 *
4 * GDI device driver interface
5 *
6 * This file is part of the w32api package.
7 *
8 * Contributors:
9 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
10 *
11 * THIS SOFTWARE IS NOT COPYRIGHTED
12 *
13 * This source code is offered for use in the public domain. You may
14 * use, modify or distribute it freely.
15 *
16 * This code is distributed in the hope that it will be useful but
17 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
18 * DISCLAIMED. This includes but is not limited to warranties of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
20 *
21 */
22
23#ifndef _WINDDI_
24#define _WINDDI_
25
26#ifdef __VIDEO_H__
27#error video.h cannot be included with winddi.h
28#else
29
30#include <ddrawint.h>
31#include <d3dnthal.h>
32
33#ifdef __cplusplus
34extern "C" {
35#endif
36
37#ifndef DECLSPEC_IMPORT
38#ifndef __WIDL__
39#define DECLSPEC_IMPORT __declspec(dllimport)
40#else
41#define DECLSPEC_IMPORT
42#endif
43#endif
44
45#ifndef WIN32KAPI
46#define WIN32KAPI DECLSPEC_ADDRSAFE
47#endif
48
49#define DDI_DRIVER_VERSION_NT4 0x00020000
50#define DDI_DRIVER_VERSION_SP3 0x00020003
51#define DDI_DRIVER_VERSION_NT5 0x00030000
52#define DDI_DRIVER_VERSION_NT5_01 0x00030100
53
54#define GDI_DRIVER_VERSION 0x4000
55
56#ifdef _X86_
57
58typedef DWORD FLOATL;
59
60#else /* !_X86_ */
61
62typedef FLOAT FLOATL;
63
64#endif
65
66typedef SHORT FWORD;
67typedef LONG LDECI4;
68typedef ULONG IDENT;
69
70typedef ULONG_PTR HFF;
71typedef ULONG_PTR HFC;
72
73typedef LONG PTRDIFF;
74typedef PTRDIFF *PPTRDIFF;
75typedef LONG FIX;
76typedef FIX *PFIX;
77typedef ULONG ROP4;
78typedef ULONG MIX;
79typedef ULONG HGLYPH;
80typedef HGLYPH *PHGLYPH;
81
82typedef LONG_PTR (APIENTRY *PFN)();
83
84DECLARE_HANDLE(HBM);
85DECLARE_HANDLE(HDEV);
86DECLARE_HANDLE(HSURF);
87DECLARE_HANDLE(DHSURF);
88DECLARE_HANDLE(DHPDEV);
89DECLARE_HANDLE(HDRVOBJ);
90
91#ifndef _NTDDVDEO_
92typedef struct _ENG_EVENT *PEVENT;
93#endif
94
95#define OPENGL_CMD 4352
96#define OPENGL_GETINFO 4353
97#define WNDOBJ_SETUP 4354
98
99#define FD_ERROR 0xFFFFFFFF
100#define DDI_ERROR 0xFFFFFFFF
101
102#define HFF_INVALID ((HFF) 0)
103#define HFC_INVALID ((HFC) 0)
104#define HGLYPH_INVALID ((HGLYPH) -1)
105
106#define FP_ALTERNATEMODE 1
107#define FP_WINDINGMODE 2
108
109#define DN_ACCELERATION_LEVEL 1
110#define DN_DEVICE_ORIGIN 2
111#define DN_SLEEP_MODE 3
112#define DN_DRAWING_BEGIN 4
113
114#define DCR_SOLID 0
115#define DCR_DRIVER 1
116#define DCR_HALFTONE 2
117
118#define GX_IDENTITY 0
119#define GX_OFFSET 1
120#define GX_SCALE 2
121#define GX_GENERAL 3
122
123#define LTOFX(x) ((x) << 4)
124#define FXTOL(x) ((x) >> 4)
125#define FXTOLFLOOR(x) ((x) >> 4)
126#define FXTOLCEILING(x) ((x + 0x0F) >> 4)
127#define FXTOLROUND(x) ((((x) >> 3) + 1) >> 1)
128
129typedef struct _POINTE {
130 FLOATL x;
131 FLOATL y;
132} POINTE, *PPOINTE;
133
134typedef union _FLOAT_LONG {
135 FLOATL e;
136 LONG l;
137} FLOAT_LONG, *PFLOAT_LONG;
138
139typedef struct _POINTFIX {
140 FIX x;
141 FIX y;
142} POINTFIX, *PPOINTFIX;
143
144typedef struct _RECTFX {
145 FIX xLeft;
146 FIX yTop;
147 FIX xRight;
148 FIX yBottom;
149} RECTFX, *PRECTFX;
150
151typedef struct _POINTQF {
152 LARGE_INTEGER x;
153 LARGE_INTEGER y;
154} POINTQF, *PPOINTQF;
155
156
157typedef struct _BLENDOBJ {
158 BLENDFUNCTION BlendFunction;
159} BLENDOBJ,*PBLENDOBJ;
160
161/* BRUSHOBJ.flColorType */
162#define BR_DEVICE_ICM 0x01
163#define BR_HOST_ICM 0x02
164#define BR_CMYKCOLOR 0x04
165#define BR_ORIGCOLOR 0x08
166
167typedef struct _BRUSHOBJ {
168 ULONG iSolidColor;
169 PVOID pvRbrush;
170 FLONG flColorType;
171} BRUSHOBJ;
172
173typedef struct _CIECHROMA {
174 LDECI4 x;
175 LDECI4 y;
176 LDECI4 Y;
177} CIECHROMA;
178
179typedef struct _RUN {
180 LONG iStart;
181 LONG iStop;
182} RUN, *PRUN;
183
184typedef struct _CLIPLINE {
185 POINTFIX ptfxA;
186 POINTFIX ptfxB;
187 LONG lStyleState;
188 ULONG c;
189 RUN arun[1];
190} CLIPLINE, *PCLIPLINE;
191
192/* CLIPOBJ.iDComplexity constants */
193#define DC_TRIVIAL 0
194#define DC_RECT 1
195#define DC_COMPLEX 3
196
197/* CLIPOBJ.iFComplexity constants */
198#define FC_RECT 1
199#define FC_RECT4 2
200#define FC_COMPLEX 3
201
202/* CLIPOBJ.iMode constants */
203#define TC_RECTANGLES 0
204#define TC_PATHOBJ 2
205
206/* CLIPOBJ.fjOptions constants */
207#define OC_BANK_CLIP 1
208
209typedef struct _CLIPOBJ {
210 ULONG iUniq;
211 RECTL rclBounds;
212 BYTE iDComplexity;
213 BYTE iFComplexity;
214 BYTE iMode;
215 BYTE fjOptions;
216} CLIPOBJ;
217
218typedef struct _COLORINFO {
219 CIECHROMA Red;
220 CIECHROMA Green;
221 CIECHROMA Blue;
222 CIECHROMA Cyan;
223 CIECHROMA Magenta;
224 CIECHROMA Yellow;
225 CIECHROMA AlignmentWhite;
226 LDECI4 RedGamma;
227 LDECI4 GreenGamma;
228 LDECI4 BlueGamma;
229 LDECI4 MagentaInCyanDye;
230 LDECI4 YellowInCyanDye;
231 LDECI4 CyanInMagentaDye;
232 LDECI4 YellowInMagentaDye;
233 LDECI4 CyanInYellowDye;
234 LDECI4 MagentaInYellowDye;
235} COLORINFO, *PCOLORINFO;
236
237/* DEVHTADJDATA.DeviceFlags constants */
238#define DEVHTADJF_COLOR_DEVICE 0x00000001
239#define DEVHTADJF_ADDITIVE_DEVICE 0x00000002
240
241typedef struct _DEVHTINFO {
242 DWORD HTFlags;
243 DWORD HTPatternSize;
244 DWORD DevPelsDPI;
245 COLORINFO ColorInfo;
246} DEVHTINFO, *PDEVHTINFO;
247
248typedef struct _DEVHTADJDATA {
249 DWORD DeviceFlags;
250 DWORD DeviceXDPI;
251 DWORD DeviceYDPI;
252 PDEVHTINFO pDefHTInfo;
253 PDEVHTINFO pAdjHTInfo;
254} DEVHTADJDATA, *PDEVHTADJDATA;
255
256/* DEVINFO.flGraphicsCaps flags */
257#define GCAPS_BEZIERS 0x00000001
258#define GCAPS_GEOMETRICWIDE 0x00000002
259#define GCAPS_ALTERNATEFILL 0x00000004
260#define GCAPS_WINDINGFILL 0x00000008
261#define GCAPS_HALFTONE 0x00000010
262#define GCAPS_COLOR_DITHER 0x00000020
263#define GCAPS_HORIZSTRIKE 0x00000040
264#define GCAPS_VERTSTRIKE 0x00000080
265#define GCAPS_OPAQUERECT 0x00000100
266#define GCAPS_VECTORFONT 0x00000200
267#define GCAPS_MONO_DITHER 0x00000400
268#define GCAPS_ASYNCCHANGE 0x00000800
269#define GCAPS_ASYNCMOVE 0x00001000
270#define GCAPS_DONTJOURNAL 0x00002000
271#define GCAPS_DIRECTDRAW 0x00004000
272#define GCAPS_ARBRUSHOPAQUE 0x00008000
273#define GCAPS_PANNING 0x00010000
274#define GCAPS_HIGHRESTEXT 0x00040000
275#define GCAPS_PALMANAGED 0x00080000
276#define GCAPS_DITHERONREALIZE 0x00200000
277#define GCAPS_NO64BITMEMACCESS 0x00400000
278#define GCAPS_FORCEDITHER 0x00800000
279#define GCAPS_GRAY16 0x01000000
280#define GCAPS_ICM 0x02000000
281#define GCAPS_CMYKCOLOR 0x04000000
282#define GCAPS_LAYERED 0x08000000
283#define GCAPS_ARBRUSHTEXT 0x10000000
284#define GCAPS_SCREENPRECISION 0x20000000
285#define GCAPS_FONT_RASTERIZER 0x40000000
286#define GCAPS_NUP 0x80000000
287
288/* DEVINFO.iDitherFormat constants */
289#define BMF_1BPP __MSABI_LONG(1)
290#define BMF_4BPP __MSABI_LONG(2)
291#define BMF_8BPP __MSABI_LONG(3)
292#define BMF_16BPP __MSABI_LONG(4)
293#define BMF_24BPP __MSABI_LONG(5)
294#define BMF_32BPP __MSABI_LONG(6)
295#define BMF_4RLE __MSABI_LONG(7)
296#define BMF_8RLE __MSABI_LONG(8)
297#define BMF_JPEG __MSABI_LONG(9)
298#define BMF_PNG __MSABI_LONG(10)
299
300/* DEVINFO.flGraphicsCaps2 flags */
301#define GCAPS2_JPEGSRC 0x00000001
302#define GCAPS2_xxxx 0x00000002
303#define GCAPS2_PNGSRC 0x00000008
304#define GCAPS2_CHANGEGAMMARAMP 0x00000010
305#define GCAPS2_ALPHACURSOR 0x00000020
306#define GCAPS2_SYNCFLUSH 0x00000040
307#define GCAPS2_SYNCTIMER 0x00000080
308#define GCAPS2_ICD_MULTIMON 0x00000100
309#define GCAPS2_MOUSETRAILS 0x00000200
310#define GCAPS2_RESERVED1 0x00000400
311
312typedef struct _DEVINFO {
313 FLONG flGraphicsCaps;
314 LOGFONTW lfDefaultFont;
315 LOGFONTW lfAnsiVarFont;
316 LOGFONTW lfAnsiFixFont;
317 ULONG cFonts;
318 ULONG iDitherFormat;
319 USHORT cxDither;
320 USHORT cyDither;
321 HPALETTE hpalDefault;
322 FLONG flGraphicsCaps2;
323} DEVINFO, *PDEVINFO;
324
325struct _DRIVEROBJ;
326
327typedef WINBOOL
328(APIENTRY CALLBACK *FREEOBJPROC)(
329 struct _DRIVEROBJ *pDriverObj);
330
331typedef struct _DRIVEROBJ {
332 PVOID pvObj;
333 FREEOBJPROC pFreeProc;
334 HDEV hdev;
335 DHPDEV dhpdev;
336} DRIVEROBJ;
337
338/* DRVFN.iFunc constants */
339#define INDEX_DrvEnablePDEV __MSABI_LONG(0)
340#define INDEX_DrvCompletePDEV __MSABI_LONG(1)
341#define INDEX_DrvDisablePDEV __MSABI_LONG(2)
342#define INDEX_DrvEnableSurface __MSABI_LONG(3)
343#define INDEX_DrvDisableSurface __MSABI_LONG(4)
344#define INDEX_DrvAssertMode __MSABI_LONG(5)
345#define INDEX_DrvOffset __MSABI_LONG(6)
346#define INDEX_DrvResetPDEV __MSABI_LONG(7)
347#define INDEX_DrvDisableDriver __MSABI_LONG(8)
348#define INDEX_DrvUnknown1 __MSABI_LONG(9)
349#define INDEX_DrvCreateDeviceBitmap __MSABI_LONG(10)
350#define INDEX_DrvDeleteDeviceBitmap __MSABI_LONG(11)
351#define INDEX_DrvRealizeBrush __MSABI_LONG(12)
352#define INDEX_DrvDitherColor __MSABI_LONG(13)
353#define INDEX_DrvStrokePath __MSABI_LONG(14)
354#define INDEX_DrvFillPath __MSABI_LONG(15)
355#define INDEX_DrvStrokeAndFillPath __MSABI_LONG(16)
356#define INDEX_DrvPaint __MSABI_LONG(17)
357#define INDEX_DrvBitBlt __MSABI_LONG(18)
358#define INDEX_DrvCopyBits __MSABI_LONG(19)
359#define INDEX_DrvStretchBlt __MSABI_LONG(20)
360#define INDEX_DrvUnknown2 __MSABI_LONG(21)
361#define INDEX_DrvSetPalette __MSABI_LONG(22)
362#define INDEX_DrvTextOut __MSABI_LONG(23)
363#define INDEX_DrvEscape __MSABI_LONG(24)
364#define INDEX_DrvDrawEscape __MSABI_LONG(25)
365#define INDEX_DrvQueryFont __MSABI_LONG(26)
366#define INDEX_DrvQueryFontTree __MSABI_LONG(27)
367#define INDEX_DrvQueryFontData __MSABI_LONG(28)
368#define INDEX_DrvSetPointerShape __MSABI_LONG(29)
369#define INDEX_DrvMovePointer __MSABI_LONG(30)
370#define INDEX_DrvLineTo __MSABI_LONG(31)
371#define INDEX_DrvSendPage __MSABI_LONG(32)
372#define INDEX_DrvStartPage __MSABI_LONG(33)
373#define INDEX_DrvEndDoc __MSABI_LONG(34)
374#define INDEX_DrvStartDoc __MSABI_LONG(35)
375#define INDEX_DrvUnknown3 __MSABI_LONG(36)
376#define INDEX_DrvGetGlyphMode __MSABI_LONG(37)
377#define INDEX_DrvSynchronize __MSABI_LONG(38)
378#define INDEX_DrvUnknown4 __MSABI_LONG(39)
379#define INDEX_DrvSaveScreenBits __MSABI_LONG(40)
380#define INDEX_DrvGetModes __MSABI_LONG(41)
381#define INDEX_DrvFree __MSABI_LONG(42)
382#define INDEX_DrvDestroyFont __MSABI_LONG(43)
383#define INDEX_DrvQueryFontCaps __MSABI_LONG(44)
384#define INDEX_DrvLoadFontFile __MSABI_LONG(45)
385#define INDEX_DrvUnloadFontFile __MSABI_LONG(46)
386#define INDEX_DrvFontManagement __MSABI_LONG(47)
387#define INDEX_DrvQueryTrueTypeTable __MSABI_LONG(48)
388#define INDEX_DrvQueryTrueTypeOutline __MSABI_LONG(49)
389#define INDEX_DrvGetTrueTypeFile __MSABI_LONG(50)
390#define INDEX_DrvQueryFontFile __MSABI_LONG(51)
391#define INDEX_DrvMovePanning __MSABI_LONG(52)
392#define INDEX_DrvQueryAdvanceWidths __MSABI_LONG(53)
393#define INDEX_DrvSetPixelFormat __MSABI_LONG(54)
394#define INDEX_DrvDescribePixelFormat __MSABI_LONG(55)
395#define INDEX_DrvSwapBuffers __MSABI_LONG(56)
396#define INDEX_DrvStartBanding __MSABI_LONG(57)
397#define INDEX_DrvNextBand __MSABI_LONG(58)
398#define INDEX_DrvGetDirectDrawInfo __MSABI_LONG(59)
399#define INDEX_DrvEnableDirectDraw __MSABI_LONG(60)
400#define INDEX_DrvDisableDirectDraw __MSABI_LONG(61)
401#define INDEX_DrvQuerySpoolType __MSABI_LONG(62)
402#define INDEX_DrvUnknown5 __MSABI_LONG(63)
403#define INDEX_DrvIcmCreateColorTransform __MSABI_LONG(64)
404#define INDEX_DrvIcmDeleteColorTransform __MSABI_LONG(65)
405#define INDEX_DrvIcmCheckBitmapBits __MSABI_LONG(66)
406#define INDEX_DrvIcmSetDeviceGammaRamp __MSABI_LONG(67)
407#define INDEX_DrvGradientFill __MSABI_LONG(68)
408#define INDEX_DrvStretchBltROP __MSABI_LONG(69)
409#define INDEX_DrvPlgBlt __MSABI_LONG(70)
410#define INDEX_DrvAlphaBlend __MSABI_LONG(71)
411#define INDEX_DrvSynthesizeFont __MSABI_LONG(72)
412#define INDEX_DrvGetSynthesizedFontFiles __MSABI_LONG(73)
413#define INDEX_DrvTransparentBlt __MSABI_LONG(74)
414#define INDEX_DrvQueryPerBandInfo __MSABI_LONG(75)
415#define INDEX_DrvQueryDeviceSupport __MSABI_LONG(76)
416#define INDEX_DrvReserved1 __MSABI_LONG(77)
417#define INDEX_DrvReserved2 __MSABI_LONG(78)
418#define INDEX_DrvReserved3 __MSABI_LONG(79)
419#define INDEX_DrvReserved4 __MSABI_LONG(80)
420#define INDEX_DrvReserved5 __MSABI_LONG(81)
421#define INDEX_DrvReserved6 __MSABI_LONG(82)
422#define INDEX_DrvReserved7 __MSABI_LONG(83)
423#define INDEX_DrvReserved8 __MSABI_LONG(84)
424#define INDEX_DrvDeriveSurface __MSABI_LONG(85)
425#define INDEX_DrvQueryGlyphAttrs __MSABI_LONG(86)
426#define INDEX_DrvNotify __MSABI_LONG(87)
427#define INDEX_DrvSynchronizeSurface __MSABI_LONG(88)
428#define INDEX_DrvResetDevice __MSABI_LONG(89)
429#define INDEX_DrvReserved9 __MSABI_LONG(90)
430#define INDEX_DrvReserved10 __MSABI_LONG(91)
431#define INDEX_DrvReserved11 __MSABI_LONG(92)
432#define INDEX_LAST __MSABI_LONG(93)
433
434typedef struct _DRVFN {
435 ULONG iFunc;
436 PFN pfn;
437} DRVFN, *PDRVFN;
438
439/* DRVENABLEDATA.iDriverVersion constants */
440#define DDI_DRIVER_VERSION_NT4 0x00020000
441#define DDI_DRIVER_VERSION_SP3 0x00020003
442#define DDI_DRIVER_VERSION_NT5 0x00030000
443#define DDI_DRIVER_VERSION_NT5_01 0x00030100
444#define DDI_DRIVER_VERSION_NT5_01_SP1 0x00030101
445
446typedef struct _DRVENABLEDATA {
447 ULONG iDriverVersion;
448 ULONG c;
449 DRVFN *pdrvfn;
450} DRVENABLEDATA, *PDRVENABLEDATA;
451
452DECLARE_HANDLE(HSEMAPHORE);
453
454typedef struct {
455 DWORD nSize;
456 HDC hdc;
457 PBYTE pvEMF;
458 PBYTE pvCurrentRecord;
459} EMFINFO, *PEMFINFO;
460
461typedef struct _ENGSAFESEMAPHORE {
462 HSEMAPHORE hsem;
463 LONG lCount;
464} ENGSAFESEMAPHORE;
465
466typedef struct _ENG_TIME_FIELDS {
467 USHORT usYear;
468 USHORT usMonth;
469 USHORT usDay;
470 USHORT usHour;
471 USHORT usMinute;
472 USHORT usSecond;
473 USHORT usMilliseconds;
474 USHORT usWeekday;
475} ENG_TIME_FIELDS, *PENG_TIME_FIELDS;
476
477typedef struct _ENUMRECTS {
478 ULONG c;
479 RECTL arcl[1];
480} ENUMRECTS;
481
482typedef struct _FD_XFORM {
483 FLOATL eXX;
484 FLOATL eXY;
485 FLOATL eYX;
486 FLOATL eYY;
487} FD_XFORM, *PFD_XFORM;
488
489/* FD_DEVICEMETRICS.flRealizedType constants */
490#define FDM_TYPE_BM_SIDE_CONST 0x00000001
491#define FDM_TYPE_MAXEXT_EQUAL_BM_SIDE 0x00000002
492#define FDM_TYPE_CHAR_INC_EQUAL_BM_BASE 0x00000004
493#define FDM_TYPE_ZERO_BEARINGS 0x00000008
494#define FDM_TYPE_CONST_BEARINGS 0x00000010
495
496typedef struct _FD_DEVICEMETRICS {
497 FLONG flRealizedType;
498 POINTE pteBase;
499 POINTE pteSide;
500 LONG lD;
501 FIX fxMaxAscender;
502 FIX fxMaxDescender;
503 POINTL ptlUnderline1;
504 POINTL ptlStrikeout;
505 POINTL ptlULThickness;
506 POINTL ptlSOThickness;
507 ULONG cxMax;
508 ULONG cyMax;
509 ULONG cjGlyphMax;
510 FD_XFORM fdxQuantized;
511 LONG lNonLinearExtLeading;
512 LONG lNonLinearIntLeading;
513 LONG lNonLinearMaxCharWidth;
514 LONG lNonLinearAvgCharWidth;
515 LONG lMinA;
516 LONG lMinC;
517 LONG lMinD;
518 LONG alReserved[1];
519} FD_DEVICEMETRICS, *PFD_DEVICEMETRICS;
520
521/* FD_GLYPHATTR.iMode constants */
522#define FO_ATTR_MODE_ROTATE 1
523
524typedef struct _FD_GLYPHATTR {
525 ULONG cjThis;
526 ULONG cGlyphs;
527 ULONG iMode;
528 BYTE aGlyphAttr[1];
529} FD_GLYPHATTR, *PFD_GLYPHATTR;
530
531/* FD_GLYPHSET.flAccel */
532#define GS_UNICODE_HANDLES 0x00000001
533#define GS_8BIT_HANDLES 0x00000002
534#define GS_16BIT_HANDLES 0x00000004
535
536typedef struct _WCRUN {
537 WCHAR wcLow;
538 USHORT cGlyphs;
539 HGLYPH *phg;
540} WCRUN, *PWCRUN;
541
542typedef struct _FD_GLYPHSET {
543 ULONG cjThis;
544 FLONG flAccel;
545 ULONG cGlyphsSupported;
546 ULONG cRuns;
547 WCRUN awcrun[1];
548} FD_GLYPHSET, *PFD_GLYPHSET;
549
550typedef struct _FD_KERNINGPAIR {
551 WCHAR wcFirst;
552 WCHAR wcSecond;
553 FWORD fwdKern;
554} FD_KERNINGPAIR;
555
556#if defined(_X86_) && !defined(USERMODE_DRIVER)
557typedef struct _FLOATOBJ
558{
559 ULONG ul1;
560 ULONG ul2;
561} FLOATOBJ, *PFLOATOBJ;
562#else
563typedef FLOAT FLOATOBJ, *PFLOATOBJ;
564#endif
565
566typedef struct _FLOATOBJ_XFORM {
567 FLOATOBJ eM11;
568 FLOATOBJ eM12;
569 FLOATOBJ eM21;
570 FLOATOBJ eM22;
571 FLOATOBJ eDx;
572 FLOATOBJ eDy;
573} FLOATOBJ_XFORM, *PFLOATOBJ_XFORM, FAR *LPFLOATOBJ_XFORM;
574
575/* FONTDIFF.fsSelection */
576#define FM_SEL_ITALIC 0x0001
577#define FM_SEL_UNDERSCORE 0x0002
578#define FM_SEL_NEGATIVE 0x0004
579#define FM_SEL_OUTLINED 0x0008
580#define FM_SEL_STRIKEOUT 0x0010
581#define FM_SEL_BOLD 0x0020
582#define FM_SEL_REGULAR 0x0040
583
584typedef struct _FONTDIFF {
585 BYTE jReserved1;
586 BYTE jReserved2;
587 BYTE jReserved3;
588 BYTE bWeight;
589 USHORT usWinWeight;
590 FSHORT fsSelection;
591 FWORD fwdAveCharWidth;
592 FWORD fwdMaxCharInc;
593 POINTL ptlCaret;
594} FONTDIFF;
595
596typedef struct _FONTSIM {
597 PTRDIFF dpBold;
598 PTRDIFF dpItalic;
599 PTRDIFF dpBoldItalic;
600} FONTSIM;
601
602/* FONTINFO.flCaps constants */
603#define FO_DEVICE_FONT __MSABI_LONG(1)
604#define FO_OUTLINE_CAPABLE __MSABI_LONG(2)
605
606typedef struct _FONTINFO {
607 ULONG cjThis;
608 FLONG flCaps;
609 ULONG cGlyphsSupported;
610 ULONG cjMaxGlyph1;
611 ULONG cjMaxGlyph4;
612 ULONG cjMaxGlyph8;
613 ULONG cjMaxGlyph32;
614} FONTINFO, *PFONTINFO;
615
616/* FONTOBJ.flFontType constants */
617#define FO_TYPE_RASTER RASTER_FONTTYPE
618#define FO_TYPE_DEVICE DEVICE_FONTTYPE
619#define FO_TYPE_TRUETYPE TRUETYPE_FONTTYPE
620#define FO_TYPE_OPENTYPE OPENTYPE_FONTTYPE
621
622#define FO_SIM_BOLD 0x00002000
623#define FO_SIM_ITALIC 0x00004000
624#define FO_EM_HEIGHT 0x00008000
625#define FO_GRAY16 0x00010000
626#define FO_NOGRAY16 0x00020000
627#define FO_NOHINTS 0x00040000
628#define FO_NO_CHOICE 0x00080000
629#define FO_CFF 0x00100000
630#define FO_POSTSCRIPT 0x00200000
631#define FO_MULTIPLEMASTER 0x00400000
632#define FO_VERT_FACE 0x00800000
633#define FO_DBCS_FONT 0X01000000
634#define FO_NOCLEARTYPE 0x02000000
635#define FO_CLEARTYPE_X 0x10000000
636#define FO_CLEARTYPE_Y 0x20000000
637
638typedef struct _FONTOBJ {
639 ULONG iUniq;
640 ULONG iFace;
641 ULONG cxMax;
642 FLONG flFontType;
643 ULONG_PTR iTTUniq;
644 ULONG_PTR iFile;
645 SIZE sizLogResPpi;
646 ULONG ulStyleSize;
647 PVOID pvConsumer;
648 PVOID pvProducer;
649} FONTOBJ;
650
651typedef struct _GAMMARAMP {
652 WORD Red[256];
653 WORD Green[256];
654 WORD Blue[256];
655} GAMMARAMP, *PGAMMARAMP;
656
657/* GDIINFO.ulPrimaryOrder constants */
658#define PRIMARY_ORDER_ABC 0
659#define PRIMARY_ORDER_ACB 1
660#define PRIMARY_ORDER_BAC 2
661#define PRIMARY_ORDER_BCA 3
662#define PRIMARY_ORDER_CBA 4
663#define PRIMARY_ORDER_CAB 5
664
665/* GDIINFO.ulHTPatternSize constants */
666#define HT_PATSIZE_2x2 0
667#define HT_PATSIZE_2x2_M 1
668#define HT_PATSIZE_4x4 2
669#define HT_PATSIZE_4x4_M 3
670#define HT_PATSIZE_6x6 4
671#define HT_PATSIZE_6x6_M 5
672#define HT_PATSIZE_8x8 6
673#define HT_PATSIZE_8x8_M 7
674#define HT_PATSIZE_10x10 8
675#define HT_PATSIZE_10x10_M 9
676#define HT_PATSIZE_12x12 10
677#define HT_PATSIZE_12x12_M 11
678#define HT_PATSIZE_14x14 12
679#define HT_PATSIZE_14x14_M 13
680#define HT_PATSIZE_16x16 14
681#define HT_PATSIZE_16x16_M 15
682#define HT_PATSIZE_SUPERCELL 16
683#define HT_PATSIZE_SUPERCELL_M 17
684#define HT_PATSIZE_USER 18
685#define HT_PATSIZE_MAX_INDEX HT_PATSIZE_USER
686#define HT_PATSIZE_DEFAULT HT_PATSIZE_SUPERCELL_M
687#define HT_USERPAT_CX_MIN 4
688#define HT_USERPAT_CX_MAX 256
689#define HT_USERPAT_CY_MIN 4
690#define HT_USERPAT_CY_MAX 256
691
692/* GDIINFO.ulHTOutputFormat constants */
693#define HT_FORMAT_1BPP 0
694#define HT_FORMAT_4BPP 2
695#define HT_FORMAT_4BPP_IRGB 3
696#define HT_FORMAT_8BPP 4
697#define HT_FORMAT_16BPP 5
698#define HT_FORMAT_24BPP 6
699#define HT_FORMAT_32BPP 7
700
701/* GDIINFO.flHTFlags */
702#define HT_FLAG_SQUARE_DEVICE_PEL 0x00000001
703#define HT_FLAG_HAS_BLACK_DYE 0x00000002
704#define HT_FLAG_ADDITIVE_PRIMS 0x00000004
705#define HT_FLAG_USE_8BPP_BITMASK 0x00000008
706#define HT_FLAG_INK_HIGH_ABSORPTION 0x00000010
707#define HT_FLAG_INK_ABSORPTION_INDICES 0x00000060
708#define HT_FLAG_DO_DEVCLR_XFORM 0x00000080
709#define HT_FLAG_OUTPUT_CMY 0x00000100
710#define HT_FLAG_PRINT_DRAFT_MODE 0x00000200
711#define HT_FLAG_INVERT_8BPP_BITMASK_IDX 0x00000400
712#define HT_FLAG_8BPP_CMY332_MASK 0xFF000000
713
714#define MAKE_CMYMASK_BYTE(c,m,y) ((BYTE)(((BYTE)(c) & 0x07) << 5) \
715 |(BYTE)(((BYTE)(m) & 0x07) << 2) \
716 |(BYTE)((BYTE)(y) & 0x03))
717
718#define MAKE_CMY332_MASK(c,m,y) ((DWORD)(((DWORD)(c) & 0x07) << 29)\
719 |(DWORD)(((DWORD)(m) & 0x07) << 26)\
720 |(DWORD)(((DWORD)(y) & 0x03) << 24))
721
722/* GDIINFO.flHTFlags constants */
723#define HT_FLAG_INK_ABSORPTION_IDX0 0x00000000
724#define HT_FLAG_INK_ABSORPTION_IDX1 0x00000020
725#define HT_FLAG_INK_ABSORPTION_IDX2 0x00000040
726#define HT_FLAG_INK_ABSORPTION_IDX3 0x00000060
727
728#define HT_FLAG_HIGHEST_INK_ABSORPTION (HT_FLAG_INK_HIGH_ABSORPTION \
729 |HT_FLAG_INK_ABSORPTION_IDX3)
730#define HT_FLAG_HIGHER_INK_ABSORPTION (HT_FLAG_INK_HIGH_ABSORPTION \
731 |HT_FLAG_INK_ABSORPTION_IDX2)
732#define HT_FLAG_HIGH_INK_ABSORPTION (HT_FLAG_INK_HIGH_ABSORPTION \
733 |HT_FLAG_INK_ABSORPTION_IDX1)
734#define HT_FLAG_NORMAL_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX0
735#define HT_FLAG_LOW_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX1
736#define HT_FLAG_LOWER_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX2
737#define HT_FLAG_LOWEST_INK_ABSORPTION HT_FLAG_INK_ABSORPTION_IDX3
738
739#define HT_BITMASKPALRGB (DWORD)'0BGR'
740#define HT_SET_BITMASKPAL2RGB(pPal) (*((LPDWORD)(pPal)) = HT_BITMASKPALRGB)
741#define HT_IS_BITMASKPALRGB(pPal) (*((LPDWORD)(pPal)) == (DWORD)0)
742
743/* GDIINFO.ulPhysicalPixelCharacteristics constants */
744#define PPC_DEFAULT 0x0
745#define PPC_UNDEFINED 0x1
746#define PPC_RGB_ORDER_VERTICAL_STRIPES 0x2
747#define PPC_BGR_ORDER_VERTICAL_STRIPES 0x3
748#define PPC_RGB_ORDER_HORIZONTAL_STRIPES 0x4
749#define PPC_BGR_ORDER_HORIZONTAL_STRIPES 0x5
750
751#define PPG_DEFAULT 0
752#define PPG_SRGB 1
753
754typedef struct _GDIINFO {
755 ULONG ulVersion;
756 ULONG ulTechnology;
757 ULONG ulHorzSize;
758 ULONG ulVertSize;
759 ULONG ulHorzRes;
760 ULONG ulVertRes;
761 ULONG cBitsPixel;
762 ULONG cPlanes;
763 ULONG ulNumColors;
764 ULONG flRaster;
765 ULONG ulLogPixelsX;
766 ULONG ulLogPixelsY;
767 ULONG flTextCaps;
768 ULONG ulDACRed;
769 ULONG ulDACGreen;
770 ULONG ulDACBlue;
771 ULONG ulAspectX;
772 ULONG ulAspectY;
773 ULONG ulAspectXY;
774 LONG xStyleStep;
775 LONG yStyleStep;
776 LONG denStyleStep;
777 POINTL ptlPhysOffset;
778 SIZEL szlPhysSize;
779 ULONG ulNumPalReg;
780 COLORINFO ciDevice;
781 ULONG ulDevicePelsDPI;
782 ULONG ulPrimaryOrder;
783 ULONG ulHTPatternSize;
784 ULONG ulHTOutputFormat;
785 ULONG flHTFlags;
786 ULONG ulVRefresh;
787 ULONG ulBltAlignment;
788 ULONG ulPanningHorzRes;
789 ULONG ulPanningVertRes;
790 ULONG xPanningAlignment;
791 ULONG yPanningAlignment;
792 ULONG cxHTPat;
793 ULONG cyHTPat;
794 LPBYTE pHTPatA;
795 LPBYTE pHTPatB;
796 LPBYTE pHTPatC;
797 ULONG flShadeBlend;
798 ULONG ulPhysicalPixelCharacteristics;
799 ULONG ulPhysicalPixelGamma;
800} GDIINFO, *PGDIINFO;
801
802/* PATHDATA.flags constants */
803#define PD_BEGINSUBPATH 0x00000001
804#define PD_ENDSUBPATH 0x00000002
805#define PD_RESETSTYLE 0x00000004
806#define PD_CLOSEFIGURE 0x00000008
807#define PD_BEZIERS 0x00000010
808#define PD_ALL (PD_BEGINSUBPATH \
809 |PD_ENDSUBPATH \
810 |PD_RESETSTYLE \
811 |PD_CLOSEFIGURE \
812 PD_BEZIERS)
813
814typedef struct _PATHDATA {
815 FLONG flags;
816 ULONG count;
817 POINTFIX *pptfx;
818} PATHDATA, *PPATHDATA;
819
820/* PATHOBJ.fl constants */
821#define PO_BEZIERS 0x00000001
822#define PO_ELLIPSE 0x00000002
823#define PO_ALL_INTEGERS 0x00000004
824#define PO_ENUM_AS_INTEGERS 0x00000008
825
826typedef struct _PATHOBJ {
827 FLONG fl;
828 ULONG cCurves;
829} PATHOBJ;
830
831typedef struct _GLYPHBITS {
832 POINTL ptlOrigin;
833 SIZEL sizlBitmap;
834 BYTE aj[1];
835} GLYPHBITS;
836
837typedef union _GLYPHDEF {
838 GLYPHBITS *pgb;
839 PATHOBJ *ppo;
840} GLYPHDEF;
841
842typedef struct _GLYPHPOS {
843 HGLYPH hg;
844 GLYPHDEF *pgdf;
845 POINTL ptl;
846} GLYPHPOS, *PGLYPHPOS;
847
848typedef struct _GLYPHDATA {
849 GLYPHDEF gdf;
850 HGLYPH hg;
851 FIX fxD;
852 FIX fxA;
853 FIX fxAB;
854 FIX fxInkTop;
855 FIX fxInkBottom;
856 RECTL rclInk;
857 POINTQF ptqD;
858} GLYPHDATA;
859
860typedef struct _IFIEXTRA {
861 ULONG ulIdentifier;
862 PTRDIFF dpFontSig;
863 ULONG cig;
864 PTRDIFF dpDesignVector;
865 PTRDIFF dpAxesInfoW;
866 ULONG aulReserved[1];
867} IFIEXTRA, *PIFIEXTRA;
868
869/* IFIMETRICS constants */
870
871#define FM_VERSION_NUMBER 0x0
872
873/* IFIMETRICS.fsType constants */
874#define FM_TYPE_LICENSED 0x2
875#define FM_READONLY_EMBED 0x4
876#define FM_EDITABLE_EMBED 0x8
877#define FM_NO_EMBEDDING FM_TYPE_LICENSED
878
879/* IFIMETRICS.flInfo constants */
880#define FM_INFO_TECH_TRUETYPE 0x00000001
881#define FM_INFO_TECH_BITMAP 0x00000002
882#define FM_INFO_TECH_STROKE 0x00000004
883#define FM_INFO_TECH_OUTLINE_NOT_TRUETYPE 0x00000008
884#define FM_INFO_ARB_XFORMS 0x00000010
885#define FM_INFO_1BPP 0x00000020
886#define FM_INFO_4BPP 0x00000040
887#define FM_INFO_8BPP 0x00000080
888#define FM_INFO_16BPP 0x00000100
889#define FM_INFO_24BPP 0x00000200
890#define FM_INFO_32BPP 0x00000400
891#define FM_INFO_INTEGER_WIDTH 0x00000800
892#define FM_INFO_CONSTANT_WIDTH 0x00001000
893#define FM_INFO_NOT_CONTIGUOUS 0x00002000
894#define FM_INFO_TECH_MM 0x00004000
895#define FM_INFO_RETURNS_OUTLINES 0x00008000
896#define FM_INFO_RETURNS_STROKES 0x00010000
897#define FM_INFO_RETURNS_BITMAPS 0x00020000
898#define FM_INFO_DSIG 0x00040000
899#define FM_INFO_RIGHT_HANDED 0x00080000
900#define FM_INFO_INTEGRAL_SCALING 0x00100000
901#define FM_INFO_90DEGREE_ROTATIONS 0x00200000
902#define FM_INFO_OPTICALLY_FIXED_PITCH 0x00400000
903#define FM_INFO_DO_NOT_ENUMERATE 0x00800000
904#define FM_INFO_ISOTROPIC_SCALING_ONLY 0x01000000
905#define FM_INFO_ANISOTROPIC_SCALING_ONLY 0x02000000
906#define FM_INFO_TECH_CFF 0x04000000
907#define FM_INFO_FAMILY_EQUIV 0x08000000
908#define FM_INFO_DBCS_FIXED_PITCH 0x10000000
909#define FM_INFO_NONNEGATIVE_AC 0x20000000
910#define FM_INFO_IGNORE_TC_RA_ABLE 0x40000000
911#define FM_INFO_TECH_TYPE1 0x80000000
912
913#define MAXCHARSETS 16
914
915/* IFIMETRICS.ulPanoseCulture constants */
916#define FM_PANOSE_CULTURE_LATIN 0x0
917
918typedef struct _IFIMETRICS {
919 ULONG cjThis;
920 ULONG cjIfiExtra;
921 PTRDIFF dpwszFamilyName;
922 PTRDIFF dpwszStyleName;
923 PTRDIFF dpwszFaceName;
924 PTRDIFF dpwszUniqueName;
925 PTRDIFF dpFontSim;
926 LONG lEmbedId;
927 LONG lItalicAngle;
928 LONG lCharBias;
929 PTRDIFF dpCharSets;
930 BYTE jWinCharSet;
931 BYTE jWinPitchAndFamily;
932 USHORT usWinWeight;
933 ULONG flInfo;
934 USHORT fsSelection;
935 USHORT fsType;
936 FWORD fwdUnitsPerEm;
937 FWORD fwdLowestPPEm;
938 FWORD fwdWinAscender;
939 FWORD fwdWinDescender;
940 FWORD fwdMacAscender;
941 FWORD fwdMacDescender;
942 FWORD fwdMacLineGap;
943 FWORD fwdTypoAscender;
944 FWORD fwdTypoDescender;
945 FWORD fwdTypoLineGap;
946 FWORD fwdAveCharWidth;
947 FWORD fwdMaxCharInc;
948 FWORD fwdCapHeight;
949 FWORD fwdXHeight;
950 FWORD fwdSubscriptXSize;
951 FWORD fwdSubscriptYSize;
952 FWORD fwdSubscriptXOffset;
953 FWORD fwdSubscriptYOffset;
954 FWORD fwdSuperscriptXSize;
955 FWORD fwdSuperscriptYSize;
956 FWORD fwdSuperscriptXOffset;
957 FWORD fwdSuperscriptYOffset;
958 FWORD fwdUnderscoreSize;
959 FWORD fwdUnderscorePosition;
960 FWORD fwdStrikeoutSize;
961 FWORD fwdStrikeoutPosition;
962 BYTE chFirstChar;
963 BYTE chLastChar;
964 BYTE chDefaultChar;
965 BYTE chBreakChar;
966 WCHAR wcFirstChar;
967 WCHAR wcLastChar;
968 WCHAR wcDefaultChar;
969 WCHAR wcBreakChar;
970 POINTL ptlBaseline;
971 POINTL ptlAspect;
972 POINTL ptlCaret;
973 RECTL rclFontBox;
974 BYTE achVendId[4];
975 ULONG cKerningPairs;
976 ULONG ulPanoseCulture;
977 PANOSE panose;
978#if defined(_WIN64)
979 PVOID Align;
980#endif
981} IFIMETRICS, *PIFIMETRICS;
982
983/* LINEATTRS.fl */
984#define LA_GEOMETRIC 0x00000001
985#define LA_ALTERNATE 0x00000002
986#define LA_STARTGAP 0x00000004
987#define LA_STYLED 0x00000008
988
989/* LINEATTRS.iJoin */
990#define JOIN_ROUND __MSABI_LONG(0)
991#define JOIN_BEVEL __MSABI_LONG(1)
992#define JOIN_MITER __MSABI_LONG(2)
993
994/* LINEATTRS.iEndCap */
995#define ENDCAP_ROUND __MSABI_LONG(0)
996#define ENDCAP_SQUARE __MSABI_LONG(1)
997#define ENDCAP_BUTT __MSABI_LONG(2)
998
999typedef struct _LINEATTRS {
1000 FLONG fl;
1001 ULONG iJoin;
1002 ULONG iEndCap;
1003 FLOAT_LONG elWidth;
1004 FLOATL eMiterLimit;
1005 ULONG cstyle;
1006 PFLOAT_LONG pstyle;
1007 FLOAT_LONG elStyleState;
1008} LINEATTRS, *PLINEATTRS;
1009
1010typedef struct _PALOBJ {
1011 ULONG ulReserved;
1012} PALOBJ;
1013
1014typedef struct _PERBANDINFO {
1015 WINBOOL bRepeatThisBand;
1016 SIZEL szlBand;
1017 ULONG ulHorzRes;
1018 ULONG ulVertRes;
1019} PERBANDINFO, *PPERBANDINFO;
1020
1021/* STROBJ.flAccel constants */
1022#define SO_FLAG_DEFAULT_PLACEMENT 0x00000001
1023#define SO_HORIZONTAL 0x00000002
1024#define SO_VERTICAL 0x00000004
1025#define SO_REVERSED 0x00000008
1026#define SO_ZERO_BEARINGS 0x00000010
1027#define SO_CHAR_INC_EQUAL_BM_BASE 0x00000020
1028#define SO_MAXEXT_EQUAL_BM_SIDE 0x00000040
1029#define SO_DO_NOT_SUBSTITUTE_DEVICE_FONT 0x00000080
1030#define SO_GLYPHINDEX_TEXTOUT 0x00000100
1031#define SO_ESC_NOT_ORIENT 0x00000200
1032#define SO_DXDY 0x00000400
1033#define SO_CHARACTER_EXTRA 0x00000800
1034#define SO_BREAK_EXTRA 0x00001000
1035
1036typedef struct _STROBJ {
1037 ULONG cGlyphs;
1038 FLONG flAccel;
1039 ULONG ulCharInc;
1040 RECTL rclBkGround;
1041 GLYPHPOS *pgp;
1042 LPWSTR pwszOrg;
1043} STROBJ;
1044
1045
1046
1047/* SURFOBJ.iType constants */
1048#define STYPE_BITMAP __MSABI_LONG(0)
1049#define STYPE_DEVICE __MSABI_LONG(1)
1050#define STYPE_DEVBITMAP __MSABI_LONG(3)
1051
1052/* SURFOBJ.fjBitmap constants */
1053#define BMF_TOPDOWN 0x0001
1054#define BMF_NOZEROINIT 0x0002
1055#define BMF_DONTCACHE 0x0004
1056#define BMF_USERMEM 0x0008
1057#define BMF_KMSECTION 0x0010
1058#define BMF_NOTSYSMEM 0x0020
1059#define BMF_WINDOW_BLT 0x0040
1060#define BMF_UMPDMEM 0x0080
1061#define BMF_RESERVED 0xFF00
1062
1063typedef struct _SURFOBJ {
1064 DHSURF dhsurf;
1065 HSURF hsurf;
1066 DHPDEV dhpdev;
1067 HDEV hdev;
1068 SIZEL sizlBitmap;
1069 ULONG cjBits;
1070 PVOID pvBits;
1071 PVOID pvScan0;
1072 LONG lDelta;
1073 ULONG iUniq;
1074 ULONG iBitmapFormat;
1075 USHORT iType;
1076 USHORT fjBitmap;
1077} SURFOBJ;
1078
1079typedef struct _TYPE1_FONT {
1080 HANDLE hPFM;
1081 HANDLE hPFB;
1082 ULONG ulIdentifier;
1083} TYPE1_FONT;
1084
1085typedef struct _WNDOBJ {
1086 CLIPOBJ coClient;
1087 PVOID pvConsumer;
1088 RECTL rclClient;
1089 SURFOBJ *psoOwner;
1090} WNDOBJ, *PWNDOBJ;
1091
1092typedef struct _XFORML {
1093 FLOATL eM11;
1094 FLOATL eM12;
1095 FLOATL eM21;
1096 FLOATL eM22;
1097 FLOATL eDx;
1098 FLOATL eDy;
1099} XFORML, *PXFORML;
1100
1101typedef struct _XFORMOBJ {
1102 ULONG ulReserved;
1103} XFORMOBJ;
1104
1105/* XLATEOBJ.flXlate constants */
1106#define XO_TRIVIAL 0x00000001
1107#define XO_TABLE 0x00000002
1108#define XO_TO_MONO 0x00000004
1109#define XO_FROM_CMYK 0x00000008
1110#define XO_DEVICE_ICM 0x00000010
1111#define XO_HOST_ICM 0x00000020
1112
1113typedef struct _XLATEOBJ {
1114 ULONG iUniq;
1115 FLONG flXlate;
1116 USHORT iSrcType;
1117 USHORT iDstType;
1118 ULONG cEntries;
1119 ULONG *pulXlate;
1120} XLATEOBJ;
1121
1122/* WNDOBJCHANGEPROC.fl constants */
1123#define WOC_RGN_CLIENT_DELTA 0x00000001
1124#define WOC_RGN_CLIENT 0x00000002
1125#define WOC_RGN_SURFACE_DELTA 0x00000004
1126#define WOC_RGN_SURFACE 0x00000008
1127#define WOC_CHANGED 0x00000010
1128#define WOC_DELETE 0x00000020
1129#define WOC_DRAWN 0x00000040
1130#define WOC_SPRITE_OVERLAP 0x00000080
1131#define WOC_SPRITE_NO_OVERLAP 0x00000100
1132
1133typedef VOID (APIENTRY CALLBACK *WNDOBJCHANGEPROC)(
1134 WNDOBJ *pwo,
1135 FLONG fl);
1136
1137
1138WIN32KAPI
1139HANDLE
1140APIENTRY
1141BRUSHOBJ_hGetColorTransform(
1142 BRUSHOBJ *pbo);
1143
1144WIN32KAPI
1145PVOID
1146APIENTRY
1147BRUSHOBJ_pvAllocRbrush(
1148 BRUSHOBJ *pbo,
1149 ULONG cj);
1150
1151WIN32KAPI
1152PVOID
1153APIENTRY
1154BRUSHOBJ_pvGetRbrush(
1155 BRUSHOBJ *pbo);
1156
1157WIN32KAPI
1158ULONG
1159APIENTRY
1160BRUSHOBJ_ulGetBrushColor(
1161 BRUSHOBJ *pbo);
1162
1163WIN32KAPI
1164WINBOOL
1165APIENTRY
1166CLIPOBJ_bEnum(
1167 CLIPOBJ *pco,
1168 ULONG cj,
1169 ULONG *pv);
1170
1171/* CLIPOBJ_cEnumStart.iType constants */
1172#define CT_RECTANGLES __MSABI_LONG(0)
1173
1174/* CLIPOBJ_cEnumStart.iDirection constants */
1175#define CD_RIGHTDOWN 0x00000000
1176#define CD_LEFTDOWN 0x00000001
1177#define CD_LEFTWARDS 0x00000001
1178#define CD_RIGHTUP 0x00000002
1179#define CD_UPWARDS 0x00000002
1180#define CD_LEFTUP 0x00000003
1181#define CD_ANY 0x00000004
1182
1183WIN32KAPI
1184ULONG
1185APIENTRY
1186CLIPOBJ_cEnumStart(
1187 CLIPOBJ *pco,
1188 WINBOOL bAll,
1189 ULONG iType,
1190 ULONG iDirection,
1191 ULONG cLimit);
1192
1193WIN32KAPI
1194PATHOBJ*
1195APIENTRY
1196CLIPOBJ_ppoGetPath(
1197 CLIPOBJ *pco);
1198
1199WIN32KAPI
1200VOID
1201APIENTRY
1202EngAcquireSemaphore(
1203 HSEMAPHORE hsem);
1204
1205#define FL_ZERO_MEMORY 0x00000001
1206#define FL_NONPAGED_MEMORY 0x00000002
1207
1208WIN32KAPI
1209PVOID
1210APIENTRY
1211EngAllocMem(
1212 ULONG Flags,
1213 ULONG MemSize,
1214 ULONG Tag);
1215
1216WIN32KAPI
1217PVOID
1218APIENTRY
1219EngAllocPrivateUserMem(
1220 PDD_SURFACE_LOCAL psl,
1221 SIZE_T cj,
1222 ULONG tag);
1223
1224WIN32KAPI
1225PVOID
1226APIENTRY
1227EngAllocUserMem(
1228 SIZE_T cj,
1229 ULONG tag);
1230
1231WIN32KAPI
1232WINBOOL
1233APIENTRY
1234EngAlphaBlend(
1235 SURFOBJ *psoDest,
1236 SURFOBJ *psoSrc,
1237 CLIPOBJ *pco,
1238 XLATEOBJ *pxlo,
1239 RECTL *prclDest,
1240 RECTL *prclSrc,
1241 BLENDOBJ *pBlendObj);
1242
1243/* EngAssociateSurface.flHooks constants */
1244#define HOOK_BITBLT 0x00000001
1245#define HOOK_STRETCHBLT 0x00000002
1246#define HOOK_PLGBLT 0x00000004
1247#define HOOK_TEXTOUT 0x00000008
1248#define HOOK_PAINT 0x00000010
1249#define HOOK_STROKEPATH 0x00000020
1250#define HOOK_FILLPATH 0x00000040
1251#define HOOK_STROKEANDFILLPATH 0x00000080
1252#define HOOK_LINETO 0x00000100
1253#define HOOK_COPYBITS 0x00000400
1254#define HOOK_MOVEPANNING 0x00000800
1255#define HOOK_SYNCHRONIZE 0x00001000
1256#define HOOK_STRETCHBLTROP 0x00002000
1257#define HOOK_SYNCHRONIZEACCESS 0x00004000
1258#define HOOK_TRANSPARENTBLT 0x00008000
1259#define HOOK_ALPHABLEND 0x00010000
1260#define HOOK_GRADIENTFILL 0x00020000
1261#define HOOK_FLAGS 0x0003b5ff
1262
1263WIN32KAPI
1264WINBOOL
1265APIENTRY
1266EngAssociateSurface(
1267 HSURF hsurf,
1268 HDEV hdev,
1269 FLONG flHooks);
1270
1271WIN32KAPI
1272WINBOOL
1273APIENTRY
1274EngBitBlt(
1275 SURFOBJ *psoTrg,
1276 SURFOBJ *psoSrc,
1277 SURFOBJ *psoMask,
1278 CLIPOBJ *pco,
1279 XLATEOBJ *pxlo,
1280 RECTL *prclTrg,
1281 POINTL *pptlSrc,
1282 POINTL *pptlMask,
1283 BRUSHOBJ *pbo,
1284 POINTL *pptlBrush,
1285 ROP4 rop4);
1286
1287WIN32KAPI
1288WINBOOL
1289APIENTRY
1290EngCheckAbort(
1291 SURFOBJ *pso);
1292
1293WIN32KAPI
1294VOID
1295APIENTRY
1296EngClearEvent(
1297 PEVENT pEvent);
1298
1299WIN32KAPI
1300FD_GLYPHSET*
1301APIENTRY
1302EngComputeGlyphSet(
1303 INT nCodePage,
1304 INT nFirstChar,
1305 INT cChars);
1306
1307/* EngControlSprites.fl constants */
1308#define ECS_TEARDOWN 0x00000001
1309#define ECS_REDRAW 0x00000002
1310
1311WIN32KAPI
1312WINBOOL
1313APIENTRY
1314EngControlSprites(
1315 WNDOBJ *pwo,
1316 FLONG fl);
1317
1318WIN32KAPI
1319WINBOOL
1320APIENTRY
1321EngCopyBits(
1322 SURFOBJ *psoDest,
1323 SURFOBJ *psoSrc,
1324 CLIPOBJ *pco,
1325 XLATEOBJ *pxlo,
1326 RECTL *prclDest,
1327 POINTL *pptlSrc);
1328
1329WIN32KAPI
1330HBITMAP
1331APIENTRY
1332EngCreateBitmap(
1333 SIZEL sizl,
1334 LONG lWidth,
1335 ULONG iFormat,
1336 FLONG fl,
1337 PVOID pvBits);
1338
1339WIN32KAPI
1340CLIPOBJ*
1341APIENTRY
1342EngCreateClip(
1343 VOID);
1344
1345WIN32KAPI
1346HBITMAP
1347APIENTRY
1348EngCreateDeviceBitmap(
1349 DHSURF dhsurf,
1350 SIZEL sizl,
1351 ULONG iFormatCompat);
1352
1353WIN32KAPI
1354HSURF
1355APIENTRY
1356EngCreateDeviceSurface(
1357 DHSURF dhsurf,
1358 SIZEL sizl,
1359 ULONG iFormatCompat);
1360
1361#if 0
1362WIN32KAPI
1363HDRVOBJ
1364APIENTRY
1365EngCreateDriverObj(
1366 PVOID pvObj,
1367 FREEOBJPROC pFreeObjProc,
1368 HDEV hdev);
1369#endif
1370
1371WIN32KAPI
1372WINBOOL
1373APIENTRY
1374EngCreateEvent(
1375 PEVENT *ppEvent);
1376
1377/* EngCreatePalette.iMode constants */
1378#define PAL_INDEXED 0x00000001
1379#define PAL_BITFIELDS 0x00000002
1380#define PAL_RGB 0x00000004
1381#define PAL_BGR 0x00000008
1382#define PAL_CMYK 0x00000010
1383
1384WIN32KAPI
1385HPALETTE
1386APIENTRY
1387EngCreatePalette(
1388 ULONG iMode,
1389 ULONG cColors,
1390 ULONG *pulColors,
1391 FLONG flRed,
1392 FLONG flGreen,
1393 FLONG flBlue);
1394
1395WIN32KAPI
1396PATHOBJ*
1397APIENTRY
1398EngCreatePath(
1399 VOID);
1400
1401WIN32KAPI
1402HSEMAPHORE
1403APIENTRY
1404EngCreateSemaphore(
1405 VOID);
1406
1407/* EngCreateWnd.fl constants */
1408#define WO_RGN_CLIENT_DELTA 0x00000001
1409#define WO_RGN_CLIENT 0x00000002
1410#define WO_RGN_SURFACE_DELTA 0x00000004
1411#define WO_RGN_SURFACE 0x00000008
1412#define WO_RGN_UPDATE_ALL 0x00000010
1413#define WO_RGN_WINDOW 0x00000020
1414#define WO_DRAW_NOTIFY 0x00000040
1415#define WO_SPRITE_NOTIFY 0x00000080
1416#define WO_RGN_DESKTOP_COORD 0x00000100
1417
1418WIN32KAPI
1419WNDOBJ*
1420APIENTRY
1421EngCreateWnd(
1422 SURFOBJ *pso,
1423 HWND hwnd,
1424 WNDOBJCHANGEPROC pfn,
1425 FLONG fl,
1426 int iPixelFormat);
1427
1428WIN32KAPI
1429VOID
1430APIENTRY
1431EngDebugBreak(
1432 VOID);
1433
1434WIN32KAPI
1435VOID
1436APIENTRY
1437EngDebugPrint(
1438 PCHAR StandardPrefix,
1439 PCHAR DebugMessage,
1440 va_list ap);
1441
1442WIN32KAPI
1443VOID
1444APIENTRY
1445EngDeleteClip(
1446 CLIPOBJ *pco);
1447
1448WIN32KAPI
1449WINBOOL
1450APIENTRY
1451EngDeleteDriverObj(
1452 HDRVOBJ hdo,
1453 WINBOOL bCallBack,
1454 WINBOOL bLocked);
1455
1456WIN32KAPI
1457WINBOOL
1458APIENTRY
1459EngDeleteEvent(
1460 PEVENT pEvent);
1461
1462WIN32KAPI
1463WINBOOL
1464APIENTRY
1465EngDeleteFile(
1466 LPWSTR pwszFileName);
1467
1468WIN32KAPI
1469WINBOOL
1470APIENTRY
1471EngDeletePalette(
1472 HPALETTE hpal);
1473
1474WIN32KAPI
1475VOID
1476APIENTRY
1477EngDeletePath(
1478 PATHOBJ *ppo);
1479
1480WIN32KAPI
1481VOID
1482APIENTRY
1483EngDeleteSafeSemaphore(
1484 ENGSAFESEMAPHORE *pssem);
1485
1486WIN32KAPI
1487VOID
1488APIENTRY
1489EngDeleteSemaphore(
1490 HSEMAPHORE hsem);
1491
1492WIN32KAPI
1493WINBOOL
1494APIENTRY
1495EngDeleteSurface(
1496 HSURF hsurf);
1497
1498WIN32KAPI
1499VOID
1500APIENTRY
1501EngDeleteWnd(
1502 WNDOBJ *pwo);
1503
1504WIN32KAPI
1505DWORD
1506APIENTRY
1507EngDeviceIoControl(
1508 HANDLE hDevice,
1509 DWORD dwIoControlCode,
1510 LPVOID lpInBuffer,
1511 DWORD nInBufferSize,
1512 LPVOID lpOutBuffer,
1513 DWORD nOutBufferSize,
1514 LPDWORD lpBytesReturned);
1515
1516WIN32KAPI
1517ULONG
1518APIENTRY
1519EngDitherColor(
1520 HDEV hdev,
1521 ULONG iMode,
1522 ULONG rgb,
1523 ULONG *pul);
1524
1525WIN32KAPI
1526WINBOOL
1527APIENTRY
1528EngEnumForms(
1529 HANDLE hPrinter,
1530 DWORD Level,
1531 LPBYTE pForm,
1532 DWORD cbBuf,
1533 LPDWORD pcbNeeded,
1534 LPDWORD pcReturned);
1535
1536WIN32KAPI
1537WINBOOL
1538APIENTRY
1539EngEraseSurface(
1540 SURFOBJ *pso,
1541 RECTL *prcl,
1542 ULONG iColor);
1543
1544WIN32KAPI
1545WINBOOL
1546APIENTRY
1547EngFillPath(
1548 SURFOBJ *pso,
1549 PATHOBJ *ppo,
1550 CLIPOBJ *pco,
1551 BRUSHOBJ *pbo,
1552 POINTL *pptlBrushOrg,
1553 MIX mix,
1554 FLONG flOptions);
1555
1556WIN32KAPI
1557PVOID
1558APIENTRY
1559EngFindImageProcAddress(
1560 HANDLE hModule,
1561 LPSTR lpProcName);
1562
1563WIN32KAPI
1564PVOID
1565APIENTRY
1566EngFindResource(
1567 HANDLE h,
1568 int iName,
1569 int iType,
1570 PULONG pulSize);
1571
1572WIN32KAPI
1573PVOID
1574APIENTRY
1575EngFntCacheAlloc(
1576 ULONG FastCheckSum,
1577 ULONG ulSize);
1578
1579/* EngFntCacheFault.iFaultMode constants */
1580#define ENG_FNT_CACHE_READ_FAULT 0x00000001
1581#define ENG_FNT_CACHE_WRITE_FAULT 0x00000002
1582
1583WIN32KAPI
1584VOID
1585APIENTRY
1586EngFntCacheFault(
1587 ULONG ulFastCheckSum,
1588 ULONG iFaultMode);
1589
1590WIN32KAPI
1591PVOID
1592APIENTRY
1593EngFntCacheLookUp(
1594 ULONG FastCheckSum,
1595 ULONG *pulSize);
1596
1597WIN32KAPI
1598VOID
1599APIENTRY
1600EngFreeMem(
1601 PVOID Mem);
1602
1603WIN32KAPI
1604VOID
1605APIENTRY
1606EngFreeModule(
1607 HANDLE h);
1608
1609WIN32KAPI
1610VOID
1611APIENTRY
1612EngFreePrivateUserMem(
1613 PDD_SURFACE_LOCAL psl,
1614 PVOID pv);
1615
1616WIN32KAPI
1617VOID
1618APIENTRY
1619EngFreeUserMem(
1620 PVOID pv);
1621
1622WIN32KAPI
1623VOID
1624APIENTRY
1625EngGetCurrentCodePage(
1626 PUSHORT OemCodePage,
1627 PUSHORT AnsiCodePage);
1628
1629WIN32KAPI
1630HANDLE
1631APIENTRY
1632EngGetCurrentProcessId(
1633 VOID);
1634
1635WIN32KAPI
1636HANDLE
1637APIENTRY
1638EngGetCurrentThreadId(
1639 VOID);
1640
1641WIN32KAPI
1642LPWSTR
1643APIENTRY
1644EngGetDriverName(
1645 HDEV hdev);
1646
1647WIN32KAPI
1648WINBOOL
1649APIENTRY
1650EngGetFileChangeTime(
1651 HANDLE h,
1652 LARGE_INTEGER *pChangeTime);
1653
1654WIN32KAPI
1655WINBOOL
1656APIENTRY
1657EngGetFilePath(
1658 HANDLE h,
1659 WCHAR (*pDest)[MAX_PATH+1]);
1660
1661WIN32KAPI
1662WINBOOL
1663APIENTRY
1664EngGetForm(
1665 HANDLE hPrinter,
1666 LPWSTR pFormName,
1667 DWORD Level,
1668 LPBYTE pForm,
1669 DWORD cbBuf,
1670 LPDWORD pcbNeeded);
1671
1672WIN32KAPI
1673ULONG
1674APIENTRY
1675EngGetLastError(
1676 VOID);
1677
1678WIN32KAPI
1679WINBOOL
1680APIENTRY
1681EngGetPrinter(
1682 HANDLE hPrinter,
1683 DWORD dwLevel,
1684 LPBYTE pPrinter,
1685 DWORD cbBuf,
1686 LPDWORD pcbNeeded);
1687
1688WIN32KAPI
1689DWORD
1690APIENTRY
1691EngGetPrinterData(
1692 HANDLE hPrinter,
1693 LPWSTR pValueName,
1694 LPDWORD pType,
1695 LPBYTE pData,
1696 DWORD nSize,
1697 LPDWORD pcbNeeded);
1698
1699WIN32KAPI
1700LPWSTR
1701APIENTRY
1702EngGetPrinterDataFileName(
1703 HDEV hdev);
1704
1705WIN32KAPI
1706WINBOOL
1707APIENTRY
1708EngGetPrinterDriver(
1709 HANDLE hPrinter,
1710 LPWSTR pEnvironment,
1711 DWORD dwLevel,
1712 BYTE *lpbDrvInfo,
1713 DWORD cbBuf,
1714 DWORD *pcbNeeded);
1715
1716WIN32KAPI
1717HANDLE
1718APIENTRY
1719EngGetProcessHandle(
1720 VOID);
1721
1722WIN32KAPI
1723WINBOOL
1724APIENTRY
1725EngGetType1FontList(
1726 HDEV hdev,
1727 TYPE1_FONT *pType1Buffer,
1728 ULONG cjType1Buffer,
1729 PULONG pulLocalFonts,
1730 PULONG pulRemoteFonts,
1731 LARGE_INTEGER *pLastModified);
1732
1733WIN32KAPI
1734WINBOOL
1735APIENTRY
1736EngGradientFill(
1737 SURFOBJ *psoDest,
1738 CLIPOBJ *pco,
1739 XLATEOBJ *pxlo,
1740 TRIVERTEX *pVertex,
1741 ULONG nVertex,
1742 PVOID pMesh,
1743 ULONG nMesh,
1744 RECTL *prclExtents,
1745 POINTL *pptlDitherOrg,
1746 ULONG ulMode);
1747
1748/* EngHangNotification return values */
1749#define EHN_RESTORED 0x00000000
1750#define EHN_ERROR 0x00000001
1751
1752WIN32KAPI
1753ULONG
1754APIENTRY
1755EngHangNotification(
1756 HDEV hDev,
1757 PVOID Reserved);
1758
1759WIN32KAPI
1760WINBOOL
1761APIENTRY
1762EngInitializeSafeSemaphore(
1763 ENGSAFESEMAPHORE *pssem);
1764
1765WIN32KAPI
1766WINBOOL
1767APIENTRY
1768EngIsSemaphoreOwned(
1769 HSEMAPHORE hsem);
1770
1771WIN32KAPI
1772WINBOOL
1773APIENTRY
1774EngIsSemaphoreOwnedByCurrentThread(
1775 HSEMAPHORE hsem);
1776
1777WIN32KAPI
1778WINBOOL
1779APIENTRY
1780EngLineTo(
1781 SURFOBJ *pso,
1782 CLIPOBJ *pco,
1783 BRUSHOBJ *pbo,
1784 LONG x1,
1785 LONG y1,
1786 LONG x2,
1787 LONG y2,
1788 RECTL *prclBounds,
1789 MIX mix);
1790
1791WIN32KAPI
1792HANDLE
1793APIENTRY
1794EngLoadImage(
1795 LPWSTR pwszDriver);
1796
1797WIN32KAPI
1798HANDLE
1799APIENTRY
1800EngLoadModule(
1801 LPWSTR pwsz);
1802
1803WIN32KAPI
1804HANDLE
1805APIENTRY
1806EngLoadModuleForWrite(
1807 LPWSTR pwsz,
1808 ULONG cjSizeOfModule);
1809
1810WIN32KAPI
1811PDD_SURFACE_LOCAL
1812APIENTRY
1813EngLockDirectDrawSurface(
1814 HANDLE hSurface);
1815
1816WIN32KAPI
1817DRIVEROBJ*
1818APIENTRY
1819EngLockDriverObj(
1820 HDRVOBJ hdo);
1821
1822WIN32KAPI
1823SURFOBJ*
1824APIENTRY
1825EngLockSurface(
1826 HSURF hsurf);
1827
1828WIN32KAPI
1829WINBOOL
1830APIENTRY
1831EngLpkInstalled(
1832 VOID);
1833
1834WIN32KAPI
1835PEVENT
1836APIENTRY
1837EngMapEvent(
1838 HDEV hDev,
1839 HANDLE hUserObject,
1840 PVOID Reserved1,
1841 PVOID Reserved2,
1842 PVOID Reserved3);
1843
1844WIN32KAPI
1845PVOID
1846APIENTRY
1847EngMapFile(
1848 LPWSTR pwsz,
1849 ULONG cjSize,
1850 ULONG_PTR *piFile);
1851
1852WIN32KAPI
1853WINBOOL
1854APIENTRY
1855EngMapFontFile(
1856 ULONG_PTR iFile,
1857 PULONG *ppjBuf,
1858 ULONG *pcjBuf);
1859
1860WIN32KAPI
1861WINBOOL
1862APIENTRY
1863EngMapFontFileFD(
1864 ULONG_PTR iFile,
1865 PULONG *ppjBuf,
1866 ULONG *pcjBuf);
1867
1868WIN32KAPI
1869PVOID
1870APIENTRY
1871EngMapModule(
1872 HANDLE h,
1873 PULONG pSize);
1874
1875WIN32KAPI
1876WINBOOL
1877APIENTRY
1878EngMarkBandingSurface(
1879 HSURF hsurf);
1880
1881/* EngModifySurface.flSurface constants */
1882#define MS_NOTSYSTEMMEMORY 0x00000001
1883#define MS_SHAREDACCESS 0x00000002
1884
1885WIN32KAPI
1886WINBOOL
1887APIENTRY
1888EngModifySurface(
1889 HSURF hsurf,
1890 HDEV hdev,
1891 FLONG flHooks,
1892 FLONG flSurface,
1893 DHSURF dhsurf,
1894 VOID *pvScan0,
1895 LONG lDelta,
1896 VOID *pvReserved);
1897
1898WIN32KAPI
1899VOID
1900APIENTRY
1901EngMovePointer(
1902 SURFOBJ *pso,
1903 LONG x,
1904 LONG y,
1905 RECTL *prcl);
1906
1907WIN32KAPI
1908int
1909APIENTRY
1910EngMulDiv(
1911 int a,
1912 int b,
1913 int c);
1914
1915WIN32KAPI
1916VOID
1917APIENTRY
1918EngMultiByteToUnicodeN(
1919 LPWSTR UnicodeString,
1920 ULONG MaxBytesInUnicodeString,
1921 PULONG BytesInUnicodeString,
1922 PCHAR MultiByteString,
1923 ULONG BytesInMultiByteString);
1924
1925WIN32KAPI
1926INT
1927APIENTRY
1928EngMultiByteToWideChar(
1929 UINT CodePage,
1930 LPWSTR WideCharString,
1931 INT BytesInWideCharString,
1932 LPSTR MultiByteString,
1933 INT BytesInMultiByteString);
1934
1935WIN32KAPI
1936WINBOOL
1937APIENTRY
1938EngPaint(
1939 SURFOBJ *pso,
1940 CLIPOBJ *pco,
1941 BRUSHOBJ *pbo,
1942 POINTL *pptlBrushOrg,
1943 MIX mix);
1944
1945WIN32KAPI
1946WINBOOL
1947APIENTRY
1948EngPlgBlt(
1949 SURFOBJ *psoTrg,
1950 SURFOBJ *psoSrc,
1951 SURFOBJ *psoMsk,
1952 CLIPOBJ *pco,
1953 XLATEOBJ *pxlo,
1954 COLORADJUSTMENT *pca,
1955 POINTL *pptlBrushOrg,
1956 POINTFIX *pptfx,
1957 RECTL *prcl,
1958 POINTL *pptl,
1959 ULONG iMode);
1960
1961WIN32KAPI
1962VOID
1963APIENTRY
1964EngProbeForRead(
1965 PVOID Address,
1966 ULONG Length,
1967 ULONG Alignment);
1968
1969WIN32KAPI
1970VOID
1971APIENTRY
1972EngProbeForReadAndWrite(
1973 PVOID Address,
1974 ULONG Length,
1975 ULONG Alignment);
1976
1977typedef enum _ENG_DEVICE_ATTRIBUTE {
1978 QDA_RESERVED = 0,
1979 QDA_ACCELERATION_LEVEL
1980} ENG_DEVICE_ATTRIBUTE;
1981
1982WIN32KAPI
1983WINBOOL
1984APIENTRY
1985EngQueryDeviceAttribute(
1986 HDEV hdev,
1987 ENG_DEVICE_ATTRIBUTE devAttr,
1988 VOID *pvIn,
1989 ULONG ulInSize,
1990 VOID *pvOut,
1991 ULONG ulOutSize);
1992
1993WIN32KAPI
1994LARGE_INTEGER
1995APIENTRY
1996EngQueryFileTimeStamp(
1997 LPWSTR pwsz);
1998
1999WIN32KAPI
2000VOID
2001APIENTRY
2002EngQueryLocalTime(
2003 PENG_TIME_FIELDS ptf);
2004
2005WIN32KAPI
2006ULONG
2007APIENTRY
2008EngQueryPalette(
2009 HPALETTE hPal,
2010 ULONG *piMode,
2011 ULONG cColors,
2012 ULONG *pulColors);
2013
2014WIN32KAPI
2015VOID
2016APIENTRY
2017EngQueryPerformanceCounter(
2018 LONGLONG *pPerformanceCount);
2019
2020WIN32KAPI
2021VOID
2022APIENTRY
2023EngQueryPerformanceFrequency(
2024 LONGLONG *pFrequency);
2025
2026typedef enum _ENG_SYSTEM_ATTRIBUTE {
2027 EngProcessorFeature = 1,
2028 EngNumberOfProcessors,
2029 EngOptimumAvailableUserMemory,
2030 EngOptimumAvailableSystemMemory,
2031} ENG_SYSTEM_ATTRIBUTE;
2032
2033#define QSA_MMX 0x00000100
2034#define QSA_SSE 0x00002000
2035#define QSA_3DNOW 0x00004000
2036
2037WIN32KAPI
2038WINBOOL
2039APIENTRY
2040EngQuerySystemAttribute(
2041 ENG_SYSTEM_ATTRIBUTE CapNum,
2042 PDWORD pCapability);
2043
2044WIN32KAPI
2045LONG
2046APIENTRY
2047EngReadStateEvent(
2048 PEVENT pEvent);
2049
2050WIN32KAPI
2051VOID
2052APIENTRY
2053EngReleaseSemaphore(
2054 HSEMAPHORE hsem);
2055
2056WIN32KAPI
2057WINBOOL
2058APIENTRY
2059EngRestoreFloatingPointState(
2060 VOID *pBuffer);
2061
2062WIN32KAPI
2063ULONG
2064APIENTRY
2065EngSaveFloatingPointState(
2066 VOID *pBuffer,
2067 ULONG cjBufferSize);
2068
2069WIN32KAPI
2070HANDLE
2071APIENTRY
2072EngSecureMem(
2073 PVOID Address,
2074 ULONG Length);
2075
2076WIN32KAPI
2077LONG
2078APIENTRY
2079EngSetEvent(
2080 PEVENT pEvent);
2081
2082WIN32KAPI
2083VOID
2084APIENTRY
2085EngSetLastError(
2086 ULONG iError);
2087
2088WIN32KAPI
2089ULONG
2090APIENTRY
2091EngSetPointerShape(
2092 SURFOBJ *pso,
2093 SURFOBJ *psoMask,
2094 SURFOBJ *psoColor,
2095 XLATEOBJ *pxlo,
2096 LONG xHot,
2097 LONG yHot,
2098 LONG x,
2099 LONG y,
2100 RECTL *prcl,
2101 FLONG fl);
2102
2103WIN32KAPI
2104WINBOOL
2105APIENTRY
2106EngSetPointerTag(
2107 HDEV hdev,
2108 SURFOBJ *psoMask,
2109 SURFOBJ *psoColor,
2110 XLATEOBJ *pxlo,
2111 FLONG fl);
2112
2113WIN32KAPI
2114DWORD
2115APIENTRY
2116EngSetPrinterData(
2117 HANDLE hPrinter,
2118 LPWSTR pType,
2119 DWORD dwType,
2120 LPBYTE lpbPrinterData,
2121 DWORD cjPrinterData);
2122
2123typedef int (CDECL *SORTCOMP)(const void *pv1, const void *pv2);
2124
2125WIN32KAPI
2126VOID
2127APIENTRY
2128EngSort(
2129 PBYTE pjBuf,
2130 ULONG c,
2131 ULONG cjElem,
2132 SORTCOMP pfnComp);
2133
2134WIN32KAPI
2135WINBOOL
2136APIENTRY
2137EngStretchBlt(
2138 SURFOBJ *psoDest,
2139 SURFOBJ *psoSrc,
2140 SURFOBJ *psoMask,
2141 CLIPOBJ *pco,
2142 XLATEOBJ *pxlo,
2143 COLORADJUSTMENT *pca,
2144 POINTL *pptlHTOrg,
2145 RECTL *prclDest,
2146 RECTL *prclSrc,
2147 POINTL *pptlMask,
2148 ULONG iMode);
2149
2150WIN32KAPI
2151WINBOOL
2152APIENTRY
2153EngStretchBltROP(
2154 SURFOBJ *psoDest,
2155 SURFOBJ *psoSrc,
2156 SURFOBJ *psoMask,
2157 CLIPOBJ *pco,
2158 XLATEOBJ *pxlo,
2159 COLORADJUSTMENT *pca,
2160 POINTL *pptlHTOrg,
2161 RECTL *prclDest,
2162 RECTL *prclSrc,
2163 POINTL *pptlMask,
2164 ULONG iMode,
2165 BRUSHOBJ *pbo,
2166 DWORD rop4);
2167
2168WIN32KAPI
2169WINBOOL
2170APIENTRY
2171EngStrokeAndFillPath(
2172 SURFOBJ *pso,
2173 PATHOBJ *ppo,
2174 CLIPOBJ *pco,
2175 XFORMOBJ *pxo,
2176 BRUSHOBJ *pboStroke,
2177 LINEATTRS *plineattrs,
2178 BRUSHOBJ *pboFill,
2179 POINTL *pptlBrushOrg,
2180 MIX mixFill,
2181 FLONG flOptions);
2182
2183WIN32KAPI
2184WINBOOL
2185APIENTRY
2186EngStrokePath(
2187 SURFOBJ *pso,
2188 PATHOBJ *ppo,
2189 CLIPOBJ *pco,
2190 XFORMOBJ *pxo,
2191 BRUSHOBJ *pbo,
2192 POINTL *pptlBrushOrg,
2193 LINEATTRS *plineattrs,
2194 MIX mix);
2195
2196WIN32KAPI
2197WINBOOL
2198APIENTRY
2199EngTextOut(
2200 SURFOBJ *pso,
2201 STROBJ *pstro,
2202 FONTOBJ *pfo,
2203 CLIPOBJ *pco,
2204 RECTL *prclExtra,
2205 RECTL *prclOpaque,
2206 BRUSHOBJ *pboFore,
2207 BRUSHOBJ *pboOpaque,
2208 POINTL *pptlOrg,
2209 MIX mix);
2210
2211WIN32KAPI
2212WINBOOL
2213APIENTRY
2214EngTransparentBlt(
2215 SURFOBJ *psoDst,
2216 SURFOBJ *psoSrc,
2217 CLIPOBJ *pco,
2218 XLATEOBJ *pxlo,
2219 RECTL *prclDst,
2220 RECTL *prclSrc,
2221 ULONG iTransColor,
2222 ULONG ulReserved);
2223
2224WIN32KAPI
2225VOID
2226APIENTRY
2227EngUnicodeToMultiByteN(
2228 PCHAR MultiByteString,
2229 ULONG MaxBytesInMultiByteString,
2230 PULONG BytesInMultiByteString,
2231 PWSTR UnicodeString,
2232 ULONG BytesInUnicodeString);
2233
2234WIN32KAPI
2235VOID
2236APIENTRY
2237EngUnloadImage(
2238 HANDLE hModule);
2239
2240WIN32KAPI
2241WINBOOL
2242APIENTRY
2243EngUnlockDirectDrawSurface(
2244 PDD_SURFACE_LOCAL pSurface);
2245
2246WIN32KAPI
2247WINBOOL
2248APIENTRY
2249EngUnlockDriverObj(
2250 HDRVOBJ hdo);
2251
2252WIN32KAPI
2253VOID
2254APIENTRY
2255EngUnlockSurface(
2256 SURFOBJ *pso);
2257
2258WIN32KAPI
2259WINBOOL
2260APIENTRY
2261EngUnmapEvent(
2262 PEVENT pEvent);
2263
2264WIN32KAPI
2265WINBOOL
2266APIENTRY
2267EngUnmapFile(
2268 ULONG_PTR iFile);
2269
2270WIN32KAPI
2271VOID
2272APIENTRY
2273EngUnmapFontFile(
2274 ULONG_PTR iFile);
2275
2276WIN32KAPI
2277VOID
2278APIENTRY
2279EngUnmapFontFileFD(
2280 ULONG_PTR iFile);
2281
2282WIN32KAPI
2283VOID
2284APIENTRY
2285EngUnsecureMem(
2286 HANDLE hSecure);
2287
2288WIN32KAPI
2289WINBOOL
2290APIENTRY
2291EngWaitForSingleObject(
2292 PEVENT pEvent,
2293 PLARGE_INTEGER pTimeOut);
2294
2295WIN32KAPI
2296INT
2297APIENTRY
2298EngWideCharToMultiByte(
2299 UINT CodePage,
2300 LPWSTR WideCharString,
2301 INT BytesInWideCharString,
2302 LPSTR MultiByteString,
2303 INT BytesInMultiByteString);
2304
2305WIN32KAPI
2306WINBOOL
2307APIENTRY
2308EngWritePrinter(
2309 HANDLE hPrinter,
2310 LPVOID pBuf,
2311 DWORD cbBuf,
2312 LPDWORD pcWritten);
2313
2314#if defined(_X86_) && !defined(USERMODE_DRIVER)
2315WIN32KAPI
2316VOID
2317APIENTRY
2318FLOATOBJ_Add(
2319 PFLOATOBJ pf,
2320 PFLOATOBJ pf1);
2321
2322WIN32KAPI
2323VOID
2324APIENTRY
2325FLOATOBJ_AddFloat(
2326 PFLOATOBJ pf,
2327 FLOATL f);
2328
2329WIN32KAPI
2330VOID
2331APIENTRY
2332FLOATOBJ_AddLong(
2333 PFLOATOBJ pf,
2334 LONG l);
2335
2336WIN32KAPI
2337VOID
2338APIENTRY
2339FLOATOBJ_Div(
2340 PFLOATOBJ pf,
2341 PFLOATOBJ pf1);
2342
2343WIN32KAPI
2344VOID
2345APIENTRY
2346FLOATOBJ_DivFloat(
2347 PFLOATOBJ pf,
2348 FLOATL f);
2349
2350WIN32KAPI
2351VOID
2352APIENTRY
2353FLOATOBJ_DivLong(
2354 PFLOATOBJ pf,
2355 LONG l);
2356
2357WIN32KAPI
2358WINBOOL
2359APIENTRY
2360FLOATOBJ_Equal(
2361 PFLOATOBJ pf,
2362 PFLOATOBJ pf1);
2363
2364WIN32KAPI
2365WINBOOL
2366APIENTRY
2367FLOATOBJ_EqualLong(
2368 PFLOATOBJ pf,
2369 LONG l);
2370
2371WIN32KAPI
2372LONG
2373APIENTRY
2374FLOATOBJ_GetFloat(
2375 PFLOATOBJ pf);
2376
2377WIN32KAPI
2378LONG
2379APIENTRY
2380FLOATOBJ_GetLong(
2381 PFLOATOBJ pf);
2382
2383WIN32KAPI
2384WINBOOL
2385APIENTRY
2386FLOATOBJ_GreaterThan(
2387 PFLOATOBJ pf,
2388 PFLOATOBJ pf1);
2389
2390WIN32KAPI
2391WINBOOL
2392APIENTRY
2393FLOATOBJ_GreaterThanLong(
2394 PFLOATOBJ pf,
2395 LONG l);
2396
2397WIN32KAPI
2398WINBOOL
2399APIENTRY
2400FLOATOBJ_LessThan(
2401 PFLOATOBJ pf,
2402 PFLOATOBJ pf1);
2403
2404WIN32KAPI
2405WINBOOL
2406APIENTRY
2407FLOATOBJ_LessThanLong(
2408 PFLOATOBJ pf,
2409 LONG l);
2410
2411WIN32KAPI
2412VOID
2413APIENTRY
2414FLOATOBJ_Mul(
2415 PFLOATOBJ pf,
2416 PFLOATOBJ pf1);
2417
2418WIN32KAPI
2419VOID
2420APIENTRY
2421FLOATOBJ_MulFloat(
2422 PFLOATOBJ pf,
2423 FLOATL f);
2424
2425WIN32KAPI
2426VOID
2427APIENTRY
2428FLOATOBJ_MulLong(
2429 PFLOATOBJ pf,
2430 LONG l);
2431
2432WIN32KAPI
2433VOID
2434APIENTRY
2435FLOATOBJ_Neg(
2436 PFLOATOBJ pf);
2437
2438WIN32KAPI
2439VOID
2440APIENTRY
2441FLOATOBJ_SetFloat(
2442 PFLOATOBJ pf,
2443 FLOATL f);
2444
2445WIN32KAPI
2446VOID
2447APIENTRY
2448FLOATOBJ_SetLong(
2449 PFLOATOBJ pf,
2450 LONG l);
2451
2452WIN32KAPI
2453VOID
2454APIENTRY
2455FLOATOBJ_Sub(
2456 PFLOATOBJ pf,
2457 PFLOATOBJ pf1);
2458
2459WIN32KAPI
2460VOID
2461APIENTRY
2462FLOATOBJ_SubFloat(
2463 PFLOATOBJ pf,
2464 FLOATL f);
2465
2466WIN32KAPI
2467VOID
2468APIENTRY
2469FLOATOBJ_SubLong(
2470 PFLOATOBJ pf,
2471 LONG l);
2472
2473#else
2474
2475#define FLOATOBJ_SetFloat(pf, f) {*(pf) = (f);}
2476#define FLOATOBJ_SetLong(pf, l) {*(pf) = (FLOAT)(l);}
2477#define FLOATOBJ_GetFloat(pf) (*(PULONG)(pf))
2478#define FLOATOBJ_GetLong(pf) ((LONG)*(pf))
2479#define FLOATOBJ_Add(pf, pf1) {*(pf) += *(pf1);}
2480#define FLOATOBJ_AddFloat(pf, f) {*(pf) += (f);}
2481#define FLOATOBJ_AddLong(pf, l) {*(pf) += (l);}
2482#define FLOATOBJ_Sub(pf, pf1) {*(pf) -= *(pf1);}
2483#define FLOATOBJ_SubFloat(pf, f) {*(pf) -= (f);}
2484#define FLOATOBJ_SubLong(pf, l) {*(pf) -= (l);}
2485#define FLOATOBJ_Mul(pf, pf1) {*(pf) *= *(pf1);}
2486#define FLOATOBJ_MulFloat(pf, f) {*(pf) *= (f);}
2487#define FLOATOBJ_MulLong(pf, l) {*(pf) *= (l);}
2488#define FLOATOBJ_Div(pf, pf1) {*(pf) /= *(pf1);}
2489#define FLOATOBJ_DivFloat(pf, f) {*(pf) /= (f);}
2490#define FLOATOBJ_DivLong(pf, l) {*(pf) /= (l);}
2491#define FLOATOBJ_Neg(pf) {*(pf) = -(*(pf));}
2492#define FLOATOBJ_Equal(pf, pf1) (*(pf) == *(pf1))
2493#define FLOATOBJ_GreaterThan(pf, pf1) (*(pf) > *(pf1))
2494#define FLOATOBJ_LessThan(pf, pf1) (*(pf) < *(pf1))
2495#define FLOATOBJ_EqualLong(pf, l) (*(pf) == (FLOAT)(l))
2496#define FLOATOBJ_GreaterThanLong(pf, l) (*(pf) > (FLOAT)(l))
2497#define FLOATOBJ_LessThanLong(pf, l) (*(pf) < (FLOAT)(l))
2498
2499#endif
2500
2501WIN32KAPI
2502ULONG
2503APIENTRY
2504FONTOBJ_cGetAllGlyphHandles(
2505 FONTOBJ *pfo,
2506 HGLYPH *phg);
2507
2508WIN32KAPI
2509ULONG
2510APIENTRY
2511FONTOBJ_cGetGlyphs(
2512 FONTOBJ *pfo,
2513 ULONG iMode,
2514 ULONG cGlyph,
2515 HGLYPH *phg,
2516 PVOID *ppvGlyph);
2517
2518WIN32KAPI
2519FD_GLYPHSET*
2520APIENTRY
2521FONTOBJ_pfdg(
2522 FONTOBJ *pfo);
2523
2524WIN32KAPI
2525IFIMETRICS*
2526APIENTRY
2527FONTOBJ_pifi(
2528 FONTOBJ *pfo);
2529
2530WIN32KAPI
2531PBYTE
2532APIENTRY
2533FONTOBJ_pjOpenTypeTablePointer(
2534 FONTOBJ *pfo,
2535 ULONG ulTag,
2536 ULONG *pcjTable);
2537
2538WIN32KAPI
2539PFD_GLYPHATTR
2540APIENTRY
2541FONTOBJ_pQueryGlyphAttrs(
2542 FONTOBJ *pfo,
2543 ULONG iMode);
2544
2545WIN32KAPI
2546PVOID
2547APIENTRY
2548FONTOBJ_pvTrueTypeFontFile(
2549 FONTOBJ *pfo,
2550 ULONG *pcjFile);
2551
2552WIN32KAPI
2553LPWSTR
2554APIENTRY
2555FONTOBJ_pwszFontFilePaths(
2556 FONTOBJ *pfo,
2557 ULONG *pcwc);
2558
2559WIN32KAPI
2560XFORMOBJ*
2561APIENTRY
2562FONTOBJ_pxoGetXform(
2563 FONTOBJ *pfo);
2564
2565WIN32KAPI
2566VOID
2567APIENTRY
2568FONTOBJ_vGetInfo(
2569 FONTOBJ *pfo,
2570 ULONG cjSize,
2571 FONTINFO *pfi);
2572
2573
2574
2575WIN32KAPI
2576LONG
2577APIENTRY
2578HT_ComputeRGBGammaTable(
2579 USHORT GammaTableEntries,
2580 USHORT GammaTableType,
2581 USHORT RedGamma,
2582 USHORT GreenGamma,
2583 USHORT BlueGamma,
2584 LPBYTE pGammaTable);
2585
2586WIN32KAPI
2587LONG
2588APIENTRY
2589HT_Get8BPPFormatPalette(
2590 LPPALETTEENTRY pPaletteEntry,
2591 USHORT RedGamma,
2592 USHORT GreenGamma,
2593 USHORT BlueGamma);
2594
2595WIN32KAPI
2596LONG
2597APIENTRY
2598HT_Get8BPPMaskPalette(
2599 LPPALETTEENTRY pPaletteEntry,
2600 WINBOOL Use8BPPMaskPal,
2601 BYTE CMYMask,
2602 USHORT RedGamma,
2603 USHORT GreenGamma,
2604 USHORT BlueGamma);
2605
2606WIN32KAPI
2607LONG
2608APIENTRY
2609HTUI_DeviceColorAdjustment(
2610 LPSTR pDeviceName,
2611 PDEVHTADJDATA pDevHTAdjData);
2612
2613WIN32KAPI
2614ULONG
2615APIENTRY
2616PALOBJ_cGetColors(
2617 PALOBJ *ppalo,
2618 ULONG iStart,
2619 ULONG cColors,
2620 ULONG *pulColors);
2621
2622WIN32KAPI
2623WINBOOL
2624APIENTRY
2625PATHOBJ_bCloseFigure(
2626 PATHOBJ *ppo);
2627
2628WIN32KAPI
2629WINBOOL
2630APIENTRY
2631PATHOBJ_bEnum(
2632 PATHOBJ *ppo,
2633 PATHDATA *ppd);
2634
2635WIN32KAPI
2636WINBOOL
2637APIENTRY
2638PATHOBJ_bEnumClipLines(
2639 PATHOBJ *ppo,
2640 ULONG cb,
2641 CLIPLINE *pcl);
2642
2643WIN32KAPI
2644WINBOOL
2645APIENTRY
2646PATHOBJ_bMoveTo(
2647 PATHOBJ *ppo,
2648 POINTFIX ptfx);
2649
2650WIN32KAPI
2651WINBOOL
2652APIENTRY
2653PATHOBJ_bPolyBezierTo(
2654 PATHOBJ *ppo,
2655 POINTFIX *pptfx,
2656 ULONG cptfx);
2657
2658WIN32KAPI
2659WINBOOL
2660APIENTRY
2661PATHOBJ_bPolyLineTo(
2662 PATHOBJ *ppo,
2663 POINTFIX *pptfx,
2664 ULONG cptfx);
2665
2666WIN32KAPI
2667VOID
2668APIENTRY
2669PATHOBJ_vEnumStart(
2670 PATHOBJ *ppo);
2671
2672WIN32KAPI
2673VOID
2674APIENTRY
2675PATHOBJ_vEnumStartClipLines(
2676 PATHOBJ *ppo,
2677 CLIPOBJ *pco,
2678 SURFOBJ *pso,
2679 LINEATTRS *pla);
2680
2681WIN32KAPI
2682VOID
2683APIENTRY
2684PATHOBJ_vGetBounds(
2685 PATHOBJ *ppo,
2686 PRECTFX prectfx);
2687
2688WIN32KAPI
2689WINBOOL
2690APIENTRY
2691STROBJ_bEnum(
2692 STROBJ *pstro,
2693 ULONG *pc,
2694 PGLYPHPOS *ppgpos);
2695
2696WIN32KAPI
2697WINBOOL
2698APIENTRY
2699STROBJ_bEnumPositionsOnly(
2700 STROBJ *pstro,
2701 ULONG *pc,
2702 PGLYPHPOS *ppgpos);
2703
2704WIN32KAPI
2705WINBOOL
2706APIENTRY
2707STROBJ_bGetAdvanceWidths(
2708 STROBJ *pso,
2709 ULONG iFirst,
2710 ULONG c,
2711 POINTQF *pptqD);
2712
2713WIN32KAPI
2714DWORD
2715APIENTRY
2716STROBJ_dwGetCodePage(
2717 STROBJ *pstro);
2718
2719WIN32KAPI
2720FIX
2721APIENTRY
2722STROBJ_fxBreakExtra(
2723 STROBJ *pstro);
2724
2725WIN32KAPI
2726FIX
2727APIENTRY
2728STROBJ_fxCharacterExtra(
2729 STROBJ *pstro);
2730
2731WIN32KAPI
2732VOID
2733APIENTRY
2734STROBJ_vEnumStart(
2735 STROBJ *pstro);
2736
2737WIN32KAPI
2738WINBOOL
2739APIENTRY
2740WNDOBJ_bEnum(
2741 WNDOBJ *pwo,
2742 ULONG cj,
2743 ULONG *pul);
2744
2745WIN32KAPI
2746ULONG
2747APIENTRY
2748WNDOBJ_cEnumStart(
2749 WNDOBJ *pwo,
2750 ULONG iType,
2751 ULONG iDirection,
2752 ULONG cLimit);
2753
2754WIN32KAPI
2755VOID
2756APIENTRY
2757WNDOBJ_vSetConsumer(
2758 WNDOBJ *pwo,
2759 PVOID pvConsumer);
2760
2761/* XFORMOBJ_bApplyXform.iMode constants */
2762#define XF_LTOL __MSABI_LONG(0)
2763#define XF_INV_LTOL __MSABI_LONG(1)
2764#define XF_LTOFX __MSABI_LONG(2)
2765#define XF_INV_FXTOL __MSABI_LONG(3)
2766
2767WIN32KAPI
2768WINBOOL
2769APIENTRY
2770XFORMOBJ_bApplyXform(
2771 XFORMOBJ *pxo,
2772 ULONG iMode,
2773 ULONG cPoints,
2774 PVOID pvIn,
2775 PVOID pvOut);
2776
2777WIN32KAPI
2778ULONG
2779APIENTRY
2780XFORMOBJ_iGetFloatObjXform(
2781 XFORMOBJ *pxo,
2782 FLOATOBJ_XFORM *pxfo);
2783
2784WIN32KAPI
2785ULONG
2786APIENTRY
2787XFORMOBJ_iGetXform(
2788 XFORMOBJ *pxo,
2789 XFORML *pxform);
2790
2791/* XLATEOBJ_cGetPalette.iPal constants */
2792#define XO_SRCPALETTE 1
2793#define XO_DESTPALETTE 2
2794#define XO_DESTDCPALETTE 3
2795#define XO_SRCBITFIELDS 4
2796#define XO_DESTBITFIELDS 5
2797
2798WIN32KAPI
2799ULONG
2800APIENTRY
2801XLATEOBJ_cGetPalette(
2802 XLATEOBJ *pxlo,
2803 ULONG iPal,
2804 ULONG cPal,
2805 ULONG *pPal);
2806
2807WIN32KAPI
2808HANDLE
2809APIENTRY
2810XLATEOBJ_hGetColorTransform(
2811 XLATEOBJ *pxlo);
2812
2813WIN32KAPI
2814ULONG
2815APIENTRY
2816XLATEOBJ_iXlate(
2817 XLATEOBJ *pxlo,
2818 ULONG iColor);
2819
2820WIN32KAPI
2821ULONG*
2822APIENTRY
2823XLATEOBJ_piVector(
2824 XLATEOBJ *pxlo);
2825
2826
2827
2828/* Graphics Driver Functions */
2829
2830WINBOOL
2831APIENTRY
2832DrvAlphaBlend(
2833 SURFOBJ *psoDest,
2834 SURFOBJ *psoSrc,
2835 CLIPOBJ *pco,
2836 XLATEOBJ *pxlo,
2837 RECTL *prclDest,
2838 RECTL *prclSrc,
2839 BLENDOBJ *pBlendObj);
2840
2841WINBOOL
2842APIENTRY
2843DrvAssertMode(
2844 DHPDEV dhpdev,
2845 WINBOOL bEnable);
2846
2847WINBOOL
2848APIENTRY
2849DrvBitBlt(
2850 SURFOBJ *psoTrg,
2851 SURFOBJ *psoSrc,
2852 SURFOBJ *psoMask,
2853 CLIPOBJ *pco,
2854 XLATEOBJ *pxlo,
2855 RECTL *prclTrg,
2856 POINTL *pptlSrc,
2857 POINTL *pptlMask,
2858 BRUSHOBJ *pbo,
2859 POINTL *pptlBrush,
2860 ROP4 rop4);
2861
2862VOID
2863APIENTRY
2864DrvCompletePDEV(
2865 DHPDEV dhpdev,
2866 HDEV hdev);
2867
2868WINBOOL
2869APIENTRY
2870DrvCopyBits(
2871 SURFOBJ *psoDest,
2872 SURFOBJ *psoSrc,
2873 CLIPOBJ *pco,
2874 XLATEOBJ *pxlo,
2875 RECTL *prclDest,
2876 POINTL *pptlSrc);
2877
2878HBITMAP
2879APIENTRY
2880DrvCreateDeviceBitmap(
2881 DHPDEV dhpdev,
2882 SIZEL sizl,
2883 ULONG iFormat);
2884
2885VOID
2886APIENTRY
2887DrvDeleteDeviceBitmap(
2888 DHSURF dhsurf);
2889
2890HBITMAP
2891APIENTRY
2892DrvDeriveSurface(
2893 DD_DIRECTDRAW_GLOBAL *pDirectDraw,
2894 DD_SURFACE_LOCAL *pSurface);
2895
2896LONG
2897APIENTRY
2898DrvDescribePixelFormat(
2899 DHPDEV dhpdev,
2900 LONG iPixelFormat,
2901 ULONG cjpfd,
2902 PIXELFORMATDESCRIPTOR *ppfd);
2903
2904VOID
2905APIENTRY
2906DrvDestroyFont(
2907 FONTOBJ *pfo);
2908
2909VOID
2910APIENTRY
2911DrvDisableDriver(
2912 VOID);
2913
2914VOID
2915APIENTRY
2916DrvDisablePDEV(
2917 DHPDEV dhpdev);
2918
2919VOID
2920APIENTRY
2921DrvDisableSurface(
2922 DHPDEV dhpdev);
2923
2924#define DM_DEFAULT 0x00000001
2925#define DM_MONOCHROME 0x00000002
2926
2927ULONG
2928APIENTRY
2929DrvDitherColor(
2930 DHPDEV dhpdev,
2931 ULONG iMode,
2932 ULONG rgb,
2933 ULONG *pul);
2934
2935ULONG
2936APIENTRY
2937DrvDrawEscape(
2938 SURFOBJ *pso,
2939 ULONG iEsc,
2940 CLIPOBJ *pco,
2941 RECTL *prcl,
2942 ULONG cjIn,
2943 PVOID pvIn);
2944
2945WINBOOL
2946APIENTRY
2947DrvEnableDriver(
2948 ULONG iEngineVersion,
2949 ULONG cj,
2950 DRVENABLEDATA *pded);
2951
2952DHPDEV
2953APIENTRY
2954DrvEnablePDEV(
2955 DEVMODEW *pdm,
2956 LPWSTR pwszLogAddress,
2957 ULONG cPat,
2958 HSURF *phsurfPatterns,
2959 ULONG cjCaps,
2960 ULONG *pdevcaps,
2961 ULONG cjDevInfo,
2962 DEVINFO *pdi,
2963 HDEV hdev,
2964 LPWSTR pwszDeviceName,
2965 HANDLE hDriver);
2966
2967HSURF
2968APIENTRY
2969DrvEnableSurface(
2970 DHPDEV dhpdev);
2971
2972/* DrvEndDoc.fl constants */
2973#define ED_ABORTDOC 0x00000001
2974
2975WINBOOL
2976APIENTRY
2977DrvEndDoc(
2978 SURFOBJ *pso,
2979 FLONG fl);
2980
2981ULONG
2982APIENTRY
2983DrvEscape(
2984 SURFOBJ *pso,
2985 ULONG iEsc,
2986 ULONG cjIn,
2987 PVOID pvIn,
2988 ULONG cjOut,
2989 PVOID pvOut);
2990
2991WINBOOL
2992APIENTRY
2993DrvFillPath(
2994 SURFOBJ *pso,
2995 PATHOBJ *ppo,
2996 CLIPOBJ *pco,
2997 BRUSHOBJ *pbo,
2998 POINTL *pptlBrushOrg,
2999 MIX mix,
3000 FLONG flOptions);
3001
3002ULONG
3003APIENTRY
3004DrvFontManagement(
3005 SURFOBJ *pso,
3006 FONTOBJ *pfo,
3007 ULONG iMode,
3008 ULONG cjIn,
3009 PVOID pvIn,
3010 ULONG cjOut,
3011 PVOID pvOut);
3012
3013VOID
3014APIENTRY
3015DrvFree(
3016 PVOID pv,
3017 ULONG_PTR id);
3018
3019/* DrvGetGlyphMode return values */
3020#define FO_HGLYPHS __MSABI_LONG(0)
3021#define FO_GLYPHBITS __MSABI_LONG(1)
3022#define FO_PATHOBJ __MSABI_LONG(2)
3023
3024ULONG
3025APIENTRY
3026DrvGetGlyphMode(
3027 DHPDEV dhpdev,
3028 FONTOBJ *pfo);
3029
3030ULONG
3031APIENTRY
3032DrvGetModes(
3033 HANDLE hDriver,
3034 ULONG cjSize,
3035 DEVMODEW *pdm);
3036
3037PVOID
3038APIENTRY
3039DrvGetTrueTypeFile(
3040 ULONG_PTR iFile,
3041 ULONG *pcj);
3042
3043WINBOOL
3044APIENTRY
3045DrvGradientFill(
3046 SURFOBJ *psoDest,
3047 CLIPOBJ *pco,
3048 XLATEOBJ *pxlo,
3049 TRIVERTEX *pVertex,
3050 ULONG nVertex,
3051 PVOID pMesh,
3052 ULONG nMesh,
3053 RECTL *prclExtents,
3054 POINTL *pptlDitherOrg,
3055 ULONG ulMode);
3056
3057WINBOOL
3058APIENTRY
3059DrvIcmCheckBitmapBits(
3060 DHPDEV dhpdev,
3061 HANDLE hColorTransform,
3062 SURFOBJ *pso,
3063 PBYTE paResults);
3064
3065HANDLE
3066APIENTRY
3067DrvIcmCreateColorTransform(
3068 DHPDEV dhpdev,
3069 LPLOGCOLORSPACEW pLogColorSpace,
3070 PVOID pvSourceProfile,
3071 ULONG cjSourceProfile,
3072 PVOID pvDestProfile,
3073 ULONG cjDestProfile,
3074 PVOID pvTargetProfile,
3075 ULONG cjTargetProfile,
3076 DWORD dwReserved);
3077
3078WINBOOL
3079APIENTRY
3080DrvIcmDeleteColorTransform(
3081 DHPDEV dhpdev,
3082 HANDLE hcmXform);
3083
3084/* DrvIcmSetDeviceGammaRamp.iFormat constants */
3085#define IGRF_RGB_256BYTES 0x00000000
3086#define IGRF_RGB_256WORDS 0x00000001
3087
3088WINBOOL
3089APIENTRY
3090DrvIcmSetDeviceGammaRamp(
3091 DHPDEV dhpdev,
3092 ULONG iFormat,
3093 LPVOID lpRamp);
3094
3095WINBOOL
3096APIENTRY
3097DrvLineTo(
3098 SURFOBJ *pso,
3099 CLIPOBJ *pco,
3100 BRUSHOBJ *pbo,
3101 LONG x1,
3102 LONG y1,
3103 LONG x2,
3104 LONG y2,
3105 RECTL *prclBounds,
3106 MIX mix);
3107
3108ULONG_PTR
3109APIENTRY
3110DrvLoadFontFile(
3111 ULONG cFiles,
3112 ULONG_PTR *piFile,
3113 PVOID *ppvView,
3114 ULONG *pcjView,
3115 DESIGNVECTOR *pdv,
3116 ULONG ulLangID,
3117 ULONG ulFastCheckSum);
3118
3119VOID
3120APIENTRY
3121DrvMovePointer(
3122 SURFOBJ *pso,
3123 LONG x,
3124 LONG y,
3125 RECTL *prcl);
3126
3127WINBOOL
3128APIENTRY
3129DrvNextBand(
3130 SURFOBJ *pso,
3131 POINTL *pptl);
3132
3133VOID
3134APIENTRY
3135DrvNotify(
3136 SURFOBJ *pso,
3137 ULONG iType,
3138 PVOID pvData);
3139
3140WINBOOL
3141APIENTRY
3142DrvOffset(
3143 SURFOBJ *pso,
3144 LONG x,
3145 LONG y,
3146 FLONG flReserved);
3147
3148WINBOOL
3149APIENTRY
3150DrvPaint(
3151 SURFOBJ *pso,
3152 CLIPOBJ *pco,
3153 BRUSHOBJ *pbo,
3154 POINTL *pptlBrushOrg,
3155 MIX mix);
3156
3157WINBOOL
3158APIENTRY
3159DrvPlgBlt(
3160 SURFOBJ *psoTrg,
3161 SURFOBJ *psoSrc,
3162 SURFOBJ *psoMsk,
3163 CLIPOBJ *pco,
3164 XLATEOBJ *pxlo,
3165 COLORADJUSTMENT *pca,
3166 POINTL *pptlBrushOrg,
3167 POINTFIX *pptfx,
3168 RECTL *prcl,
3169 POINTL *pptl,
3170 ULONG iMode);
3171
3172/* DrvQueryAdvanceWidths.iMode constants */
3173#define QAW_GETWIDTHS 0
3174#define QAW_GETEASYWIDTHS 1
3175
3176WINBOOL
3177APIENTRY
3178DrvQueryAdvanceWidths(
3179 DHPDEV dhpdev,
3180 FONTOBJ *pfo,
3181 ULONG iMode,
3182 HGLYPH *phg,
3183 PVOID pvWidths,
3184 ULONG cGlyphs);
3185
3186/* DrvQueryDeviceSupport.iType constants */
3187#define QDS_CHECKJPEGFORMAT 0x00000000
3188#define QDS_CHECKPNGFORMAT 0x00000001
3189
3190WINBOOL
3191APIENTRY
3192DrvQueryDeviceSupport(
3193 SURFOBJ *pso,
3194 XLATEOBJ *pxlo,
3195 XFORMOBJ *pxo,
3196 ULONG iType,
3197 ULONG cjIn,
3198 PVOID pvIn,
3199 ULONG cjOut,
3200 PVOID pvOut);
3201
3202/* DrvQueryDriverInfo.dwMode constants */
3203#define DRVQUERY_USERMODE 0x00000001
3204
3205WINBOOL
3206APIENTRY
3207DrvQueryDriverInfo(
3208 DWORD dwMode,
3209 PVOID pBuffer,
3210 DWORD cbBuf,
3211 PDWORD pcbNeeded);
3212
3213PIFIMETRICS
3214APIENTRY
3215DrvQueryFont(
3216 DHPDEV dhpdev,
3217 ULONG_PTR iFile,
3218 ULONG iFace,
3219 ULONG_PTR *pid);
3220
3221/* DrvQueryFontCaps.pulCaps constants */
3222#define QC_OUTLINES 0x00000001
3223#define QC_1BIT 0x00000002
3224#define QC_4BIT 0x00000004
3225
3226#define QC_FONTDRIVERCAPS (QC_OUTLINES | QC_1BIT | QC_4BIT)
3227
3228LONG
3229APIENTRY
3230DrvQueryFontCaps(
3231 ULONG culCaps,
3232 ULONG *pulCaps);
3233
3234/* DrvQueryFontData.iMode constants */
3235#define QFD_GLYPHANDBITMAP __MSABI_LONG(1)
3236#define QFD_GLYPHANDOUTLINE __MSABI_LONG(2)
3237#define QFD_MAXEXTENTS __MSABI_LONG(3)
3238#define QFD_TT_GLYPHANDBITMAP __MSABI_LONG(4)
3239#define QFD_TT_GRAY1_BITMAP __MSABI_LONG(5)
3240#define QFD_TT_GRAY2_BITMAP __MSABI_LONG(6)
3241#define QFD_TT_GRAY4_BITMAP __MSABI_LONG(8)
3242#define QFD_TT_GRAY8_BITMAP __MSABI_LONG(9)
3243
3244#define QFD_TT_MONO_BITMAP QFD_TT_GRAY1_BITMAP
3245
3246LONG
3247APIENTRY
3248DrvQueryFontData(
3249 DHPDEV dhpdev,
3250 FONTOBJ *pfo,
3251 ULONG iMode,
3252 HGLYPH hg,
3253 GLYPHDATA *pgd,
3254 PVOID pv,
3255 ULONG cjSize);
3256
3257/* DrvQueryFontFile.ulMode constants */
3258#define QFF_DESCRIPTION 0x00000001
3259#define QFF_NUMFACES 0x00000002
3260
3261LONG
3262APIENTRY
3263DrvQueryFontFile(
3264 ULONG_PTR iFile,
3265 ULONG ulMode,
3266 ULONG cjBuf,
3267 ULONG *pulBuf);
3268
3269/* DrvQueryFontTree.iMode constants */
3270#define QFT_UNICODE __MSABI_LONG(0)
3271#define QFT_LIGATURES __MSABI_LONG(1)
3272#define QFT_KERNPAIRS __MSABI_LONG(2)
3273#define QFT_GLYPHSET __MSABI_LONG(3)
3274
3275PVOID
3276APIENTRY
3277DrvQueryFontTree(
3278 DHPDEV dhpdev,
3279 ULONG_PTR iFile,
3280 ULONG iFace,
3281 ULONG iMode,
3282 ULONG_PTR *pid);
3283
3284PFD_GLYPHATTR
3285APIENTRY
3286DrvQueryGlyphAttrs(
3287 FONTOBJ *pfo,
3288 ULONG iMode);
3289
3290ULONG
3291APIENTRY
3292DrvQueryPerBandInfo(
3293 SURFOBJ *pso,
3294 PERBANDINFO *pbi);
3295
3296/* DrvQueryTrueTypeOutline.bMetricsOnly constants */
3297#define TTO_METRICS_ONLY 0x00000001
3298#define TTO_QUBICS 0x00000002
3299#define TTO_UNHINTED 0x00000004
3300
3301LONG
3302APIENTRY
3303DrvQueryTrueTypeOutline(
3304 DHPDEV dhpdev,
3305 FONTOBJ *pfo,
3306 HGLYPH hglyph,
3307 WINBOOL bMetricsOnly,
3308 GLYPHDATA *pgldt,
3309 ULONG cjBuf,
3310 TTPOLYGONHEADER *ppoly);
3311
3312LONG
3313APIENTRY
3314DrvQueryTrueTypeTable(
3315 ULONG_PTR iFile,
3316 ULONG ulFont,
3317 ULONG ulTag,
3318 PTRDIFF dpStart,
3319 ULONG cjBuf,
3320 BYTE *pjBuf,
3321 PBYTE *ppjTable,
3322 ULONG *pcjTable);
3323
3324/* DrvRealizeBrush.iHatch constants */
3325#define RB_DITHERCOLOR __MSABI_LONG(0x80000000)
3326
3327#define HS_DDI_MAX 6
3328
3329WINBOOL
3330APIENTRY
3331DrvRealizeBrush(
3332 BRUSHOBJ *pbo,
3333 SURFOBJ *psoTarget,
3334 SURFOBJ *psoPattern,
3335 SURFOBJ *psoMask,
3336 XLATEOBJ *pxlo,
3337 ULONG iHatch);
3338
3339/* DrvResetDevice return values */
3340#define DRD_SUCCESS 0
3341#define DRD_ERROR 1
3342
3343ULONG
3344APIENTRY
3345DrvResetDevice(
3346 DHPDEV dhpdev,
3347 PVOID Reserved);
3348
3349WINBOOL
3350APIENTRY
3351DrvResetPDEV(
3352 DHPDEV dhpdevOld,
3353 DHPDEV dhpdevNew);
3354
3355/* DrvSaveScreenBits.iMode constants */
3356#define SS_SAVE 0x00000000
3357#define SS_RESTORE 0x00000001
3358#define SS_FREE 0x00000002
3359
3360ULONG_PTR
3361APIENTRY
3362DrvSaveScreenBits(
3363 SURFOBJ *pso,
3364 ULONG iMode,
3365 ULONG_PTR ident,
3366 RECTL *prcl);
3367
3368WINBOOL
3369APIENTRY
3370DrvSendPage(
3371 SURFOBJ *pso);
3372
3373WINBOOL
3374APIENTRY
3375DrvSetPalette(
3376 DHPDEV dhpdev,
3377 PALOBJ *ppalo,
3378 FLONG fl,
3379 ULONG iStart,
3380 ULONG cColors);
3381
3382WINBOOL
3383APIENTRY
3384DrvSetPixelFormat(
3385 SURFOBJ *pso,
3386 LONG iPixelFormat,
3387 HWND hwnd);
3388
3389/* DrvSetPointerShape return values */
3390#define SPS_ERROR 0x00000000
3391#define SPS_DECLINE 0x00000001
3392#define SPS_ACCEPT_NOEXCLUDE 0x00000002
3393#define SPS_ACCEPT_EXCLUDE 0x00000003
3394#define SPS_ACCEPT_SYNCHRONOUS 0x00000004
3395
3396/* DrvSetPointerShape.fl constants */
3397#define SPS_CHANGE __MSABI_LONG(0x00000001)
3398#define SPS_ASYNCCHANGE __MSABI_LONG(0x00000002)
3399#define SPS_ANIMATESTART __MSABI_LONG(0x00000004)
3400#define SPS_ANIMATEUPDATE __MSABI_LONG(0x00000008)
3401#define SPS_ALPHA __MSABI_LONG(0x00000010)
3402#define SPS_LENGTHMASK __MSABI_LONG(0x00000F00)
3403#define SPS_FREQMASK __MSABI_LONG(0x000FF000)
3404
3405ULONG
3406APIENTRY
3407DrvSetPointerShape(
3408 SURFOBJ *pso,
3409 SURFOBJ *psoMask,
3410 SURFOBJ *psoColor,
3411 XLATEOBJ *pxlo,
3412 LONG xHot,
3413 LONG yHot,
3414 LONG x,
3415 LONG y,
3416 RECTL *prcl,
3417 FLONG fl);
3418
3419WINBOOL
3420APIENTRY
3421DrvStartBanding(
3422 SURFOBJ *pso,
3423 POINTL *pptl);
3424
3425WINBOOL
3426APIENTRY
3427DrvStartDoc(
3428 SURFOBJ *pso,
3429 LPWSTR pwszDocName,
3430 DWORD dwJobId);
3431
3432WINBOOL
3433APIENTRY
3434DrvStartPage(
3435 SURFOBJ *pso);
3436
3437WINBOOL
3438APIENTRY
3439DrvStretchBlt(
3440 SURFOBJ *psoDest,
3441 SURFOBJ *psoSrc,
3442 SURFOBJ *psoMask,
3443 CLIPOBJ *pco,
3444 XLATEOBJ *pxlo,
3445 COLORADJUSTMENT *pca,
3446 POINTL *pptlHTOrg,
3447 RECTL *prclDest,
3448 RECTL *prclSrc,
3449 POINTL *pptlMask,
3450 ULONG iMode);
3451
3452WINBOOL
3453APIENTRY
3454DrvStretchBltROP(
3455 SURFOBJ *psoDest,
3456 SURFOBJ *psoSrc,
3457 SURFOBJ *psoMask,
3458 CLIPOBJ *pco,
3459 XLATEOBJ *pxlo,
3460 COLORADJUSTMENT *pca,
3461 POINTL *pptlHTOrg,
3462 RECTL *prclDest,
3463 RECTL *prclSrc,
3464 POINTL *pptlMask,
3465 ULONG iMode,
3466 BRUSHOBJ *pbo,
3467 DWORD rop4);
3468
3469WINBOOL
3470APIENTRY
3471DrvStrokeAndFillPath(
3472 SURFOBJ *pso,
3473 PATHOBJ *ppo,
3474 CLIPOBJ *pco,
3475 XFORMOBJ *pxo,
3476 BRUSHOBJ *pboStroke,
3477 LINEATTRS *plineattrs,
3478 BRUSHOBJ *pboFill,
3479 POINTL *pptlBrushOrg,
3480 MIX mixFill,
3481 FLONG flOptions);
3482
3483WINBOOL
3484APIENTRY
3485DrvStrokePath(
3486 SURFOBJ *pso,
3487 PATHOBJ *ppo,
3488 CLIPOBJ *pco,
3489 XFORMOBJ *pxo,
3490 BRUSHOBJ *pbo,
3491 POINTL *pptlBrushOrg,
3492 LINEATTRS *plineattrs,
3493 MIX mix);
3494
3495WINBOOL
3496APIENTRY
3497DrvSwapBuffers(
3498 SURFOBJ *pso,
3499 WNDOBJ *pwo);
3500
3501VOID
3502APIENTRY
3503DrvSynchronize(
3504 DHPDEV dhpdev,
3505 RECTL *prcl);
3506
3507/* DrvSynchronizeSurface.fl constants */
3508#define DSS_TIMER_EVENT 0x00000001
3509#define DSS_FLUSH_EVENT 0x00000002
3510
3511VOID
3512APIENTRY
3513DrvSynchronizeSurface(
3514 SURFOBJ *pso,
3515 RECTL *prcl,
3516 FLONG fl);
3517
3518WINBOOL
3519APIENTRY
3520DrvTextOut(
3521 SURFOBJ *pso,
3522 STROBJ *pstro,
3523 FONTOBJ *pfo,
3524 CLIPOBJ *pco,
3525 RECTL *prclExtra,
3526 RECTL *prclOpaque,
3527 BRUSHOBJ *pboFore,
3528 BRUSHOBJ *pboOpaque,
3529 POINTL *pptlOrg,
3530 MIX mix);
3531
3532WINBOOL
3533APIENTRY
3534DrvTransparentBlt(
3535 SURFOBJ *psoDst,
3536 SURFOBJ *psoSrc,
3537 CLIPOBJ *pco,
3538 XLATEOBJ *pxlo,
3539 RECTL *prclDst,
3540 RECTL *prclSrc,
3541 ULONG iTransColor,
3542 ULONG ulReserved);
3543
3544WINBOOL
3545APIENTRY
3546DrvUnloadFontFile(
3547 ULONG_PTR iFile);
3548
3549typedef WINBOOL
3550(APIENTRY *PFN_DrvAlphaBlend)(
3551 SURFOBJ *psoDest,
3552 SURFOBJ *psoSrc,
3553 CLIPOBJ *pco,
3554 XLATEOBJ *pxlo,
3555 RECTL *prclDest,
3556 RECTL *prclSrc,
3557 BLENDOBJ *pBlendObj);
3558
3559typedef WINBOOL
3560(APIENTRY *PFN_DrvAssertMode)(
3561 DHPDEV dhpdev,
3562 WINBOOL bEnable);
3563
3564typedef WINBOOL
3565(APIENTRY *PFN_DrvBitBlt)(
3566 SURFOBJ *psoTrg,
3567 SURFOBJ *psoSrc,
3568 SURFOBJ *psoMask,
3569 CLIPOBJ *pco,
3570 XLATEOBJ *pxlo,
3571 RECTL *prclTrg,
3572 POINTL *pptlSrc,
3573 POINTL *pptlMask,
3574 BRUSHOBJ *pbo,
3575 POINTL *pptlBrush,
3576 ROP4 rop4);
3577
3578typedef VOID
3579(APIENTRY *PFN_DrvCompletePDEV)(
3580 DHPDEV dhpdev,
3581 HDEV hdev);
3582
3583typedef WINBOOL
3584(APIENTRY *PFN_DrvCopyBits)(
3585 SURFOBJ *psoDest,
3586 SURFOBJ *psoSrc,
3587 CLIPOBJ *pco,
3588 XLATEOBJ *pxlo,
3589 RECTL *prclDest,
3590 POINTL *pptlSrc);
3591
3592typedef HBITMAP
3593(APIENTRY *PFN_DrvCreateDeviceBitmap)(
3594 DHPDEV dhpdev,
3595 SIZEL sizl,
3596 ULONG iFormat);
3597
3598typedef VOID
3599(APIENTRY *PFN_DrvDeleteDeviceBitmap)(
3600 DHSURF dhsurf);
3601
3602typedef HBITMAP
3603(APIENTRY *PFN_DrvDeriveSurface)(
3604 DD_DIRECTDRAW_GLOBAL *pDirectDraw,
3605 DD_SURFACE_LOCAL *pSurface);
3606
3607typedef LONG
3608(APIENTRY *PFN_DrvDescribePixelFormat)(
3609 DHPDEV dhpdev,
3610 LONG iPixelFormat,
3611 ULONG cjpfd,
3612 PIXELFORMATDESCRIPTOR *ppfd);
3613
3614typedef VOID
3615(APIENTRY *PFN_DrvDestroyFont)(
3616 FONTOBJ *pfo);
3617
3618typedef VOID
3619(APIENTRY *PFN_DrvDisableDriver)(
3620 VOID);
3621
3622typedef VOID
3623(APIENTRY *PFN_DrvDisablePDEV)(
3624 DHPDEV dhpdev);
3625
3626typedef VOID
3627(APIENTRY *PFN_DrvDisableSurface)(
3628 DHPDEV dhpdev);
3629
3630typedef ULONG
3631(APIENTRY *PFN_DrvDitherColor)(
3632 DHPDEV dhpdev,
3633 ULONG iMode,
3634 ULONG rgb,
3635 ULONG *pul);
3636
3637typedef ULONG
3638(APIENTRY *PFN_DrvDrawEscape)(
3639 SURFOBJ *pso,
3640 ULONG iEsc,
3641 CLIPOBJ *pco,
3642 RECTL *prcl,
3643 ULONG cjIn,
3644 PVOID pvIn);
3645
3646typedef WINBOOL
3647(APIENTRY *PFN_DrvEnableDriver)(
3648 ULONG iEngineVersion,
3649 ULONG cj,
3650 DRVENABLEDATA *pded);
3651
3652typedef DHPDEV
3653(APIENTRY *PFN_DrvEnablePDEV)(
3654 DEVMODEW *pdm,
3655 LPWSTR pwszLogAddress,
3656 ULONG cPat,
3657 HSURF *phsurfPatterns,
3658 ULONG cjCaps,
3659 GDIINFO *pdevcaps,
3660 ULONG cjDevInfo,
3661 DEVINFO *pdi,
3662 HDEV hdev,
3663 LPWSTR pwszDeviceName,
3664 HANDLE hDriver);
3665
3666typedef HSURF
3667(APIENTRY *PFN_DrvEnableSurface)(
3668 DHPDEV dhpdev);
3669
3670typedef WINBOOL
3671(APIENTRY *PFN_DrvEndDoc)(
3672 SURFOBJ *pso,
3673 FLONG fl);
3674
3675typedef ULONG
3676(APIENTRY *PFN_DrvEscape)(
3677 SURFOBJ *pso,
3678 ULONG iEsc,
3679 ULONG cjIn,
3680 PVOID pvIn,
3681 ULONG cjOut,
3682 PVOID pvOut);
3683
3684typedef WINBOOL
3685(APIENTRY *PFN_DrvFillPath)(
3686 SURFOBJ *pso,
3687 PATHOBJ *ppo,
3688 CLIPOBJ *pco,
3689 BRUSHOBJ *pbo,
3690 POINTL *pptlBrushOrg,
3691 MIX mix,
3692 FLONG flOptions);
3693
3694typedef ULONG
3695(APIENTRY *PFN_DrvFontManagement)(
3696 SURFOBJ *pso,
3697 FONTOBJ *pfo,
3698 ULONG iMode,
3699 ULONG cjIn,
3700 PVOID pvIn,
3701 ULONG cjOut,
3702 PVOID pvOut);
3703
3704typedef VOID
3705(APIENTRY *PFN_DrvFree)(
3706 PVOID pv,
3707 ULONG_PTR id);
3708
3709typedef ULONG
3710(APIENTRY *PFN_DrvGetGlyphMode)(
3711 DHPDEV dhpdev,
3712 FONTOBJ *pfo);
3713
3714typedef ULONG
3715(APIENTRY *PFN_DrvGetModes)(
3716 HANDLE hDriver,
3717 ULONG cjSize,
3718 DEVMODEW *pdm);
3719
3720typedef PVOID
3721(APIENTRY *PFN_DrvGetTrueTypeFile)(
3722 ULONG_PTR iFile,
3723 ULONG *pcj);
3724
3725typedef WINBOOL
3726(APIENTRY *PFN_DrvGradientFill)(
3727 SURFOBJ *psoDest,
3728 CLIPOBJ *pco,
3729 XLATEOBJ *pxlo,
3730 TRIVERTEX *pVertex,
3731 ULONG nVertex,
3732 PVOID pMesh,
3733 ULONG nMesh,
3734 RECTL *prclExtents,
3735 POINTL *pptlDitherOrg,
3736 ULONG ulMode);
3737
3738typedef WINBOOL
3739(APIENTRY *PFN_DrvIcmCheckBitmapBits)(
3740 DHPDEV dhpdev,
3741 HANDLE hColorTransform,
3742 SURFOBJ *pso,
3743 PBYTE paResults);
3744
3745typedef HANDLE
3746(APIENTRY *PFN_DrvIcmCreateColorTransform)(
3747 DHPDEV dhpdev,
3748 LPLOGCOLORSPACEW pLogColorSpace,
3749 PVOID pvSourceProfile,
3750 ULONG cjSourceProfile,
3751 PVOID pvDestProfile,
3752 ULONG cjDestProfile,
3753 PVOID pvTargetProfile,
3754 ULONG cjTargetProfile,
3755 DWORD dwReserved);
3756
3757typedef WINBOOL
3758(APIENTRY *PFN_DrvIcmDeleteColorTransform)(
3759 DHPDEV dhpdev,
3760 HANDLE hcmXform);
3761
3762typedef WINBOOL
3763(APIENTRY *PFN_DrvIcmSetDeviceGammaRamp)(
3764 DHPDEV dhpdev,
3765 ULONG iFormat,
3766 LPVOID lpRamp);
3767
3768typedef WINBOOL
3769(APIENTRY *PFN_DrvLineTo)(
3770 SURFOBJ *pso,
3771 CLIPOBJ *pco,
3772 BRUSHOBJ *pbo,
3773 LONG x1,
3774 LONG y1,
3775 LONG x2,
3776 LONG y2,
3777 RECTL *prclBounds,
3778 MIX mix);
3779
3780typedef ULONG_PTR
3781(APIENTRY *PFN_DrvLoadFontFile)(
3782 ULONG cFiles,
3783 ULONG_PTR *piFile,
3784 PVOID *ppvView,
3785 ULONG *pcjView,
3786 DESIGNVECTOR *pdv,
3787 ULONG ulLangID,
3788 ULONG ulFastCheckSum);
3789
3790typedef VOID
3791(APIENTRY *PFN_DrvMovePointer)(
3792 SURFOBJ *pso,
3793 LONG x,
3794 LONG y,
3795 RECTL *prcl);
3796
3797typedef WINBOOL
3798(APIENTRY *PFN_DrvNextBand)(
3799 SURFOBJ *pso,
3800 POINTL *pptl);
3801
3802typedef VOID
3803(APIENTRY *PFN_DrvNotify)(
3804 SURFOBJ *pso,
3805 ULONG iType,
3806 PVOID pvData);
3807
3808typedef WINBOOL
3809(APIENTRY *PFN_DrvOffset)(
3810 SURFOBJ *pso,
3811 LONG x,
3812 LONG y,
3813 FLONG flReserved);
3814
3815typedef WINBOOL
3816(APIENTRY *PFN_DrvPaint)(
3817 SURFOBJ *pso,
3818 CLIPOBJ *pco,
3819 BRUSHOBJ *pbo,
3820 POINTL *pptlBrushOrg,
3821 MIX mix);
3822
3823typedef WINBOOL
3824(APIENTRY *PFN_DrvPlgBlt)(
3825 SURFOBJ *psoTrg,
3826 SURFOBJ *psoSrc,
3827 SURFOBJ *psoMsk,
3828 CLIPOBJ *pco,
3829 XLATEOBJ *pxlo,
3830 COLORADJUSTMENT *pca,
3831 POINTL *pptlBrushOrg,
3832 POINTFIX *pptfx,
3833 RECTL *prcl,
3834 POINTL *pptl,
3835 ULONG iMode);
3836
3837typedef WINBOOL
3838(APIENTRY *PFN_DrvQueryAdvanceWidths)(
3839 DHPDEV dhpdev,
3840 FONTOBJ *pfo,
3841 ULONG iMode,
3842 HGLYPH *phg,
3843 PVOID pvWidths,
3844 ULONG cGlyphs);
3845
3846typedef WINBOOL
3847(APIENTRY *PFN_DrvQueryDeviceSupport)(
3848 SURFOBJ *pso,
3849 XLATEOBJ *pxlo,
3850 XFORMOBJ *pxo,
3851 ULONG iType,
3852 ULONG cjIn,
3853 PVOID pvIn,
3854 ULONG cjOut,
3855 PVOID pvOut);
3856
3857typedef WINBOOL
3858(APIENTRY *PFN_DrvQueryDriverInfo)(
3859 DWORD dwMode,
3860 PVOID pBuffer,
3861 DWORD cbBuf,
3862 PDWORD pcbNeeded);
3863
3864typedef PIFIMETRICS
3865(APIENTRY *PFN_DrvQueryFont)(
3866 DHPDEV dhpdev,
3867 ULONG_PTR iFile,
3868 ULONG iFace,
3869 ULONG_PTR *pid);
3870
3871typedef LONG
3872(APIENTRY *PFN_DrvQueryFontCaps)(
3873 ULONG culCaps,
3874 ULONG *pulCaps);
3875
3876typedef LONG
3877(APIENTRY *PFN_DrvQueryFontData)(
3878 DHPDEV dhpdev,
3879 FONTOBJ *pfo,
3880 ULONG iMode,
3881 HGLYPH hg,
3882 GLYPHDATA *pgd,
3883 PVOID pv,
3884 ULONG cjSize);
3885
3886typedef LONG
3887(APIENTRY *PFN_DrvQueryFontFile)(
3888 ULONG_PTR iFile,
3889 ULONG ulMode,
3890 ULONG cjBuf,
3891 ULONG *pulBuf);
3892
3893typedef PVOID
3894(APIENTRY *PFN_DrvQueryFontTree)(
3895 DHPDEV dhpdev,
3896 ULONG_PTR iFile,
3897 ULONG iFace,
3898 ULONG iMode,
3899 ULONG_PTR *pid);
3900
3901typedef PFD_GLYPHATTR
3902(APIENTRY *PFN_DrvQueryGlyphAttrs)(
3903 FONTOBJ *pfo,
3904 ULONG iMode);
3905
3906typedef ULONG
3907(APIENTRY *PFN_DrvQueryPerBandInfo)(
3908 SURFOBJ *pso,
3909 PERBANDINFO *pbi);
3910
3911typedef LONG
3912(APIENTRY *PFN_DrvQueryTrueTypeOutline)(
3913 DHPDEV dhpdev,
3914 FONTOBJ *pfo,
3915 HGLYPH hglyph,
3916 WINBOOL bMetricsOnly,
3917 GLYPHDATA *pgldt,
3918 ULONG cjBuf,
3919 TTPOLYGONHEADER *ppoly);
3920
3921typedef LONG
3922(APIENTRY *PFN_DrvQueryTrueTypeTable)(
3923 ULONG_PTR iFile,
3924 ULONG ulFont,
3925 ULONG ulTag,
3926 PTRDIFF dpStart,
3927 ULONG cjBuf,
3928 BYTE *pjBuf,
3929 PBYTE *ppjTable,
3930 ULONG *pcjTable);
3931
3932typedef WINBOOL
3933(APIENTRY *PFN_DrvRealizeBrush)(
3934 BRUSHOBJ *pbo,
3935 SURFOBJ *psoTarget,
3936 SURFOBJ *psoPattern,
3937 SURFOBJ *psoMask,
3938 XLATEOBJ *pxlo,
3939 ULONG iHatch);
3940
3941typedef ULONG
3942(APIENTRY *PFN_DrvResetDevice)(
3943 DHPDEV dhpdev,
3944 PVOID Reserved);
3945
3946typedef WINBOOL
3947(APIENTRY *PFN_DrvResetPDEV)(
3948 DHPDEV dhpdevOld,
3949 DHPDEV dhpdevNew);
3950
3951typedef ULONG_PTR
3952(APIENTRY *PFN_DrvSaveScreenBits)(
3953 SURFOBJ *pso,
3954 ULONG iMode,
3955 ULONG_PTR ident,
3956 RECTL *prcl);
3957
3958typedef WINBOOL
3959(APIENTRY *PFN_DrvSendPage)(
3960 SURFOBJ *pso);
3961
3962typedef WINBOOL
3963(APIENTRY *PFN_DrvSetPalette)(
3964 DHPDEV dhpdev,
3965 PALOBJ *ppalo,
3966 FLONG fl,
3967 ULONG iStart,
3968 ULONG cColors);
3969
3970typedef WINBOOL
3971(APIENTRY *PFN_DrvSetPixelFormat)(
3972 SURFOBJ *pso,
3973 LONG iPixelFormat,
3974 HWND hwnd);
3975
3976typedef ULONG
3977(APIENTRY *PFN_DrvSetPointerShape)(
3978 SURFOBJ *pso,
3979 SURFOBJ *psoMask,
3980 SURFOBJ *psoColor,
3981 XLATEOBJ *pxlo,
3982 LONG xHot,
3983 LONG yHot,
3984 LONG x,
3985 LONG y,
3986 RECTL *prcl,
3987 FLONG fl);
3988
3989typedef WINBOOL
3990(APIENTRY *PFN_DrvStartBanding)(
3991 SURFOBJ *pso,
3992 POINTL *pptl);
3993
3994typedef WINBOOL
3995(APIENTRY *PFN_DrvStartDoc)(
3996 SURFOBJ *pso,
3997 LPWSTR pwszDocName,
3998 DWORD dwJobId);
3999
4000typedef WINBOOL
4001(APIENTRY *PFN_DrvStartPage)(
4002 SURFOBJ *pso);
4003
4004typedef WINBOOL
4005(APIENTRY *PFN_DrvStretchBlt)(
4006 SURFOBJ *psoDest,
4007 SURFOBJ *psoSrc,
4008 SURFOBJ *psoMask,
4009 CLIPOBJ *pco,
4010 XLATEOBJ *pxlo,
4011 COLORADJUSTMENT *pca,
4012 POINTL *pptlHTOrg,
4013 RECTL *prclDest,
4014 RECTL *prclSrc,
4015 POINTL *pptlMask,
4016 ULONG iMode);
4017
4018typedef WINBOOL
4019(APIENTRY *PFN_DrvStretchBltROP)(
4020 SURFOBJ *psoDest,
4021 SURFOBJ *psoSrc,
4022 SURFOBJ *psoMask,
4023 CLIPOBJ *pco,
4024 XLATEOBJ *pxlo,
4025 COLORADJUSTMENT *pca,
4026 POINTL *pptlHTOrg,
4027 RECTL *prclDest,
4028 RECTL *prclSrc,
4029 POINTL *pptlMask,
4030 ULONG iMode,
4031 BRUSHOBJ *pbo,
4032 DWORD rop4);
4033
4034typedef WINBOOL
4035(APIENTRY *PFN_DrvStrokeAndFillPath)(
4036 SURFOBJ *pso,
4037 PATHOBJ *ppo,
4038 CLIPOBJ *pco,
4039 XFORMOBJ *pxo,
4040 BRUSHOBJ *pboStroke,
4041 LINEATTRS *plineattrs,
4042 BRUSHOBJ *pboFill,
4043 POINTL *pptlBrushOrg,
4044 MIX mixFill,
4045 FLONG flOptions);
4046
4047typedef WINBOOL
4048(APIENTRY *PFN_DrvStrokePath)(
4049 SURFOBJ *pso,
4050 PATHOBJ *ppo,
4051 CLIPOBJ *pco,
4052 XFORMOBJ *pxo,
4053 BRUSHOBJ *pbo,
4054 POINTL *pptlBrushOrg,
4055 LINEATTRS *plineattrs,
4056 MIX mix);
4057
4058typedef WINBOOL
4059(APIENTRY *PFN_DrvSwapBuffers)(
4060 SURFOBJ *pso,
4061 WNDOBJ *pwo);
4062
4063typedef VOID
4064(APIENTRY *PFN_DrvSynchronize)(
4065 DHPDEV dhpdev,
4066 RECTL *prcl);
4067
4068typedef VOID
4069(APIENTRY *PFN_DrvSynchronizeSurface)(
4070 SURFOBJ *pso,
4071 RECTL *prcl,
4072 FLONG fl);
4073
4074typedef WINBOOL
4075(APIENTRY *PFN_DrvTextOut)(
4076 SURFOBJ *pso,
4077 STROBJ *pstro,
4078 FONTOBJ *pfo,
4079 CLIPOBJ *pco,
4080 RECTL *prclExtra,
4081 RECTL *prclOpaque,
4082 BRUSHOBJ *pboFore,
4083 BRUSHOBJ *pboOpaque,
4084 POINTL *pptlOrg,
4085 MIX mix);
4086
4087typedef WINBOOL
4088(APIENTRY *PFN_DrvTransparentBlt)(
4089 SURFOBJ *psoDst,
4090 SURFOBJ *psoSrc,
4091 CLIPOBJ *pco,
4092 XLATEOBJ *pxlo,
4093 RECTL *prclDst,
4094 RECTL *prclSrc,
4095 ULONG iTransColor,
4096 ULONG ulReserved);
4097
4098typedef WINBOOL
4099(APIENTRY *PFN_DrvUnloadFontFile)(
4100 ULONG_PTR iFile);
4101
4102
4103WIN32KAPI
4104VOID
4105APIENTRY
4106DrvDisableDirectDraw(
4107 DHPDEV dhpdev);
4108
4109typedef VOID
4110(APIENTRY *PFN_DrvDisableDirectDraw)(
4111 DHPDEV dhpdev);
4112
4113WIN32KAPI
4114WINBOOL
4115APIENTRY
4116DrvEnableDirectDraw(
4117 DHPDEV dhpdev,
4118 DD_CALLBACKS *pCallBacks,
4119 DD_SURFACECALLBACKS *pSurfaceCallBacks,
4120 DD_PALETTECALLBACKS *pPaletteCallBacks);
4121
4122typedef WINBOOL
4123(APIENTRY *PFN_DrvEnableDirectDraw)(
4124 DHPDEV dhpdev,
4125 DD_CALLBACKS *pCallBacks,
4126 DD_SURFACECALLBACKS *pSurfaceCallBacks,
4127 DD_PALETTECALLBACKS *pPaletteCallBacks);
4128
4129WIN32KAPI
4130WINBOOL
4131APIENTRY
4132DrvGetDirectDrawInfo(
4133 DHPDEV dhpdev,
4134 DD_HALINFO *pHalInfo,
4135 DWORD *pdwNumHeaps,
4136 VIDEOMEMORY *pvmList,
4137 DWORD *pdwNumFourCCCodes,
4138 DWORD *pdwFourCC);
4139
4140typedef WINBOOL
4141(APIENTRY *PFN_DrvGetDirectDrawInfo)(
4142 DHPDEV dhpdev,
4143 DD_HALINFO *pHalInfo,
4144 DWORD *pdwNumHeaps,
4145 VIDEOMEMORY *pvmList,
4146 DWORD *pdwNumFourCCCodes,
4147 DWORD *pdwFourCC);
4148
4149//DECLSPEC_DEPRECATED_DDK
4150WINBOOL
4151APIENTRY
4152DrvQuerySpoolType(
4153 DHPDEV dhpdev,
4154 LPWSTR pwchType);
4155
4156typedef WINBOOL
4157(APIENTRY *PFN_DrvQuerySpoolType)(
4158 DHPDEV dhpdev,
4159 LPWSTR pwchType);
4160
4161
4162#ifdef __cplusplus
4163}
4164#endif
4165
4166#endif /* defined __VIDEO_H__ */
4167
4168#endif /* _WINDDI_ */
Note: See TracBrowser for help on using the repository browser.