source: Daodan/MinGW/include/ddk/winddi.h@ 1098

Last change on this file since 1098 was 1046, checked in by alloc, 8 years ago

Daodan: Added Windows MinGW and build batch file

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