Initial bulk commit for "Git on MSys"
[msysgit/historical-msysgit.git] / mingw / include / ddk / winddi.h
blobfefb15def89e2bf7f5f0144d02cc56d1e8e9468a
1 /*
2 * winddi.h
4 * GDI device driver interface
6 * This file is part of the w32api package.
8 * Contributors:
9 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
11 * THIS SOFTWARE IS NOT COPYRIGHTED
13 * This source code is offered for use in the public domain. You may
14 * use, modify or distribute it freely.
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.
23 #ifndef __WINDDI_H
24 #define __WINDDI_H
26 #if __GNUC__ >=3
27 #pragma GCC system_header
28 #endif
30 #ifdef __VIDEO_H
31 #error video.h cannot be included with winddi.h
32 #else
34 #ifdef __cplusplus
35 extern "C" {
36 #endif
38 #include "ntddk.h"
39 #include <wingdi.h>
41 #ifndef __DD_INCLUDED__
42 /* FIXME: Some DirectDraw structures not added yet */
43 typedef ULONG_PTR FLATPTR;
44 typedef struct _DD_SURFACECALLBACKS {
45 } DD_SURFACECALLBACKS, *PDD_SURFACECALLBACKS;
46 typedef struct _DD_PALETTECALLBACKS {
47 } DD_PALETTECALLBACKS, *PDD_PALETTECALLBACKS;
48 typedef struct _DD_CALLBACKS {
49 } DD_CALLBACKS, *PDD_CALLBACKS;
50 typedef struct _DD_HALINFO {
51 } DD_HALINFO, *PDD_HALINFO;
52 typedef struct _VIDEOMEMORY {
53 } VIDEOMEMORY, *LPVIDEOMEMORY;
54 typedef struct _DD_DIRECTDRAW_GLOBAL {
55 } DD_DIRECTDRAW_GLOBAL, *LPDD_DIRECTDRAW_GLOBAL;
56 typedef struct _DD_SURFACE_LOCAL {
57 } DD_SURFACE_LOCAL, *PDD_SURFACE_LOCAL, *LPDD_SURFACE_LOCAL;
58 #endif
60 #ifndef __DDRAWI_INCLUDED__
61 typedef PVOID LPVIDMEM;
62 #endif
64 #if !defined(__DD_INCLUDED__) && !defined(__DDRAWI_INCLUDED__)
65 typedef struct _DDSCAPS {
66 } DDSCAPS, *PDDSCAPS;
67 typedef struct _DDSCAPSEX {
68 } DDSCAPSEX, *PDDSCAPSEX;
69 typedef PVOID LPVMEMHEAP;
70 #endif
72 #if defined(_WIN32K_)
73 #define WIN32KAPI DECL_EXPORT
74 #else
75 #define WIN32KAPI DECL_IMPORT
76 #endif
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
83 #define GDI_DRIVER_VERSION 0x4000
85 #ifdef _X86_
87 typedef DWORD FLOATL;
89 #else /* !_X86_ */
91 typedef FLOAT FLOATL;
93 #endif
95 typedef SHORT FWORD;
96 typedef LONG LDECI4;
97 typedef ULONG IDENT;
99 typedef ULONG_PTR HFF;
100 typedef ULONG_PTR HFC;
102 typedef LONG PTRDIFF;
103 typedef PTRDIFF *PPTRDIFF;
104 typedef LONG FIX;
105 typedef FIX *PFIX;
106 typedef ULONG ROP4;
107 typedef ULONG MIX;
108 typedef ULONG HGLYPH;
109 typedef HGLYPH *PHGLYPH;
111 typedef LONG_PTR (DDKAPI *PFN)();
113 DECLARE_HANDLE(HBM);
114 DECLARE_HANDLE(HDEV);
115 DECLARE_HANDLE(HSURF);
116 DECLARE_HANDLE(DHSURF);
117 DECLARE_HANDLE(DHPDEV);
118 DECLARE_HANDLE(HDRVOBJ);
121 #define GDI_DRIVER_VERSION 0x4000
123 typedef struct _ENG_EVENT *PEVENT;
125 #define OPENGL_CMD 4352
126 #define OPENGL_GETINFO 4353
127 #define WNDOBJ_SETUP 4354
129 #define FD_ERROR 0xFFFFFFFF
130 #define DDI_ERROR 0xFFFFFFFF
132 #define HFF_INVALID ((HFF) 0)
133 #define HFC_INVALID ((HFC) 0)
134 #define HGLYPH_INVALID ((HGLYPH) -1)
136 #define FP_ALTERNATEMODE 1
137 #define FP_WINDINGMODE 2
139 #define DN_ACCELERATION_LEVEL 1
140 #define DN_DEVICE_ORIGIN 2
141 #define DN_SLEEP_MODE 3
142 #define DN_DRAWING_BEGIN 4
144 #define DCR_SOLID 0
145 #define DCR_DRIVER 1
146 #define DCR_HALFTONE 2
148 #define GX_IDENTITY 0
149 #define GX_OFFSET 1
150 #define GX_SCALE 2
151 #define GX_GENERAL 3
153 typedef struct _POINTE {
154 FLOATL x;
155 FLOATL y;
156 } POINTE, *PPOINTE;
158 typedef union _FLOAT_LONG {
159 FLOATL e;
160 LONG l;
161 } FLOAT_LONG, *PFLOAT_LONG;
163 typedef struct _POINTFIX {
164 FIX x;
165 FIX y;
166 } POINTFIX, *PPOINTFIX;
168 typedef struct _RECTFX {
169 FIX xLeft;
170 FIX yTop;
171 FIX xRight;
172 FIX yBottom;
173 } RECTFX, *PRECTFX;
175 typedef struct _POINTQF {
176 LARGE_INTEGER x;
177 LARGE_INTEGER y;
178 } POINTQF, *PPOINTQF;
181 typedef struct _BLENDOBJ {
182 BLENDFUNCTION BlendFunction;
183 } BLENDOBJ,*PBLENDOBJ;
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
191 typedef struct _BRUSHOBJ {
192 ULONG iSolidColor;
193 PVOID pvRbrush;
194 FLONG flColorType;
195 } BRUSHOBJ;
197 typedef struct _CIECHROMA {
198 LDECI4 x;
199 LDECI4 y;
200 LDECI4 Y;
201 } CIECHROMA;
203 typedef struct _RUN {
204 LONG iStart;
205 LONG iStop;
206 } RUN, *PRUN;
208 typedef struct _CLIPLINE {
209 POINTFIX ptfxA;
210 POINTFIX ptfxB;
211 LONG lStyleState;
212 ULONG c;
213 RUN arun[1];
214 } CLIPLINE, *PCLIPLINE;
216 /* CLIPOBJ.iDComplexity constants */
217 #define DC_TRIVIAL 0
218 #define DC_RECT 1
219 #define DC_COMPLEX 3
221 /* CLIPOBJ.iFComplexity constants */
222 #define FC_RECT 1
223 #define FC_RECT4 2
224 #define FC_COMPLEX 3
226 /* CLIPOBJ.iMode constants */
227 #define TC_RECTANGLES 0
228 #define TC_PATHOBJ 2
230 /* CLIPOBJ.fjOptions constants */
231 #define OC_BANK_CLIP 1
233 typedef struct _CLIPOBJ {
234 ULONG iUniq;
235 RECTL rclBounds;
236 BYTE iDComplexity;
237 BYTE iFComplexity;
238 BYTE iMode;
239 BYTE fjOptions;
240 } CLIPOBJ;
242 typedef 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;
261 /* DEVHTADJDATA.DeviceFlags constants */
262 #define DEVHTADJF_COLOR_DEVICE 0x00000001
263 #define DEVHTADJF_ADDITIVE_DEVICE 0x00000002
265 typedef struct _DEVHTINFO {
266 DWORD HTFlags;
267 DWORD HTPatternSize;
268 DWORD DevPelsDPI;
269 COLORINFO ColorInfo;
270 } DEVHTINFO, *PDEVHTINFO;
272 typedef struct _DEVHTADJDATA {
273 DWORD DeviceFlags;
274 DWORD DeviceXDPI;
275 DWORD DeviceYDPI;
276 PDEVHTINFO pDefHTInfo;
277 PDEVHTINFO pAdjHTInfo;
278 } DEVHTADJDATA, *PDEVHTADJDATA;
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
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
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
336 typedef 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;
349 typedef struct _DRIVEROBJ *PDRIVEROBJ;
351 typedef BOOL DDKAPI CALLBACK
352 (*FREEOBJPROC)(
353 /*IN*/ PDRIVEROBJ pDriverObj);
355 typedef struct _DRIVEROBJ {
356 PVOID pvObj;
357 FREEOBJPROC pFreeProc;
358 HDEV hdev;
359 DHPDEV dhpdev;
360 } DRIVEROBJ;
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
453 typedef struct _DRVFN {
454 ULONG iFunc;
455 PFN pfn;
456 } DRVFN, *PDRVFN;
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
464 typedef struct _DRVENABLEDATA {
465 ULONG iDriverVersion;
466 ULONG c;
467 DRVFN *pdrvfn;
468 } DRVENABLEDATA, *PDRVENABLEDATA;
470 DECLARE_HANDLE(HSEMAPHORE);
472 typedef struct {
473 DWORD nSize;
474 HDC hdc;
475 PBYTE pvEMF;
476 PBYTE pvCurrentRecord;
477 } EMFINFO, *PEMFINFO;
479 typedef struct _ENGSAFESEMAPHORE {
480 HSEMAPHORE hsem;
481 LONG lCount;
482 } ENGSAFESEMAPHORE;
484 typedef 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;
495 typedef struct _ENUMRECTS {
496 ULONG c;
497 RECTL arcl[1];
498 } ENUMRECTS;
500 typedef struct _FD_XFORM {
501 FLOATL eXX;
502 FLOATL eXY;
503 FLOATL eYX;
504 FLOATL eYY;
505 } FD_XFORM, *PFD_XFORM;
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
514 typedef 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;
539 /* FD_GLYPHATTR.iMode constants */
540 #define FO_ATTR_MODE_ROTATE 1
542 typedef struct _FD_GLYPHATTR {
543 ULONG cjThis;
544 ULONG cGlyphs;
545 ULONG iMode;
546 BYTE aGlyphAttr[1];
547 } FD_GLYPHATTR, *PFD_GLYPHATTR;
549 /* FD_GLYPHSET.flAccel */
550 #define GS_UNICODE_HANDLES 0x00000001
551 #define GS_8BIT_HANDLES 0x00000002
552 #define GS_16BIT_HANDLES 0x00000004
554 typedef struct _WCRUN {
555 WCHAR wcLow;
556 USHORT cGlyphs;
557 HGLYPH *phg;
558 } WCRUN, *PWCRUN;
560 typedef struct _FD_GLYPHSET {
561 ULONG cjThis;
562 FLONG flAccel;
563 ULONG cGlyphsSupported;
564 ULONG cRuns;
565 WCRUN awcrun[1];
566 } FD_GLYPHSET, *PFD_GLYPHSET;
568 typedef struct _FD_KERNINGPAIR {
569 WCHAR wcFirst;
570 WCHAR wcSecond;
571 FWORD fwdKern;
572 } FD_KERNINGPAIR;
574 typedef struct _FLOATOBJ
576 ULONG ul1;
577 ULONG ul2;
578 } FLOATOBJ, *PFLOATOBJ;
580 typedef 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;
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
598 typedef 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;
610 typedef struct _FONTSIM {
611 PTRDIFF dpBold;
612 PTRDIFF dpItalic;
613 PTRDIFF dpBoldItalic;
614 } FONTSIM;
616 /* FONTINFO.flCaps constants */
617 #define FO_DEVICE_FONT 1L
618 #define FO_OUTLINE_CAPABLE 2L
620 typedef 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;
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
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
652 typedef 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;
665 typedef struct _GAMMARAMP {
666 WORD Red[256];
667 WORD Green[256];
668 WORD Blue[256];
669 } GAMMARAMP, *PGAMMARAMP;
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
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
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
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
728 #define MAKE_CMYMASK_BYTE(c,m,y) ((BYTE)(((BYTE)(c) & 0x07) << 5) \
729 |(BYTE)(((BYTE)(m) & 0x07) << 2) \
730 |(BYTE)((BYTE)(y) & 0x03))
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))
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
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
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)
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
765 #define PPG_DEFAULT 0
766 #define PPG_SRGB 1
768 typedef 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;
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)
828 typedef struct _PATHDATA {
829 FLONG flags;
830 ULONG count;
831 POINTFIX *glypptfx;
832 } PATHDATA, *PPATHDATA;
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
840 typedef struct _PATHOBJ {
841 FLONG fl;
842 ULONG cCurves;
843 } PATHOBJ;
845 typedef struct _GLYPHBITS {
846 POINTL ptlOrigin;
847 SIZEL sizlBitmap;
848 BYTE aj[1];
849 } GLYPHBITS;
851 typedef union _GLYPHDEF {
852 GLYPHBITS *pgb;
853 PATHOBJ *ppo;
854 } GLYPHDEF;
856 typedef struct _GLYPHPOS {
857 HGLYPH hg;
858 GLYPHDEF *pgdf;
859 POINTL ptl;
860 } GLYPHPOS, *PGLYPHPOS;
862 typedef 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;
874 typedef struct _IFIEXTRA {
875 ULONG ulIdentifier;
876 PTRDIFF dpFontSig;
877 ULONG cig;
878 PTRDIFF dpDesignVector;
879 PTRDIFF dpAxesInfoW;
880 ULONG aulReserved[1];
881 } IFIEXTRA, *PIFIEXTRA;
883 /* IFIMETRICS constants */
885 #define FM_VERSION_NUMBER 0x0
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
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
927 #define MAXCHARSETS 16
929 /* IFIMETRICS.ulPanoseCulture constants */
930 #define FM_PANOSE_CULTURE_LATIN 0x0
932 typedef 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;
997 /* LINEATTRS.fl */
998 #define LA_GEOMETRIC 0x00000001
999 #define LA_ALTERNATE 0x00000002
1000 #define LA_STARTGAP 0x00000004
1001 #define LA_STYLED 0x00000008
1003 /* LINEATTRS.iJoin */
1004 #define JOIN_ROUND 0L
1005 #define JOIN_BEVEL 1L
1006 #define JOIN_MITER 2L
1008 /* LINEATTRS.iEndCap */
1009 #define ENDCAP_ROUND 0L
1010 #define ENDCAP_SQUARE 1L
1011 #define ENDCAP_BUTT 2L
1013 typedef 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;
1024 typedef struct _PALOBJ {
1025 ULONG ulReserved;
1026 } PALOBJ;
1028 typedef struct _PERBANDINFO {
1029 BOOL bRepeatThisBand;
1030 SIZEL szlBand;
1031 ULONG ulHorzRes;
1032 ULONG ulVertRes;
1033 } PERBANDINFO, *PPERBANDINFO;
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
1050 typedef struct _STROBJ {
1051 ULONG cGlyphs;
1052 FLONG flAccel;
1053 ULONG ulCharInc;
1054 RECTL rclBkGround;
1055 GLYPHPOS *pgp;
1056 LPWSTR pwszOrg;
1057 } STROBJ;
1059 typedef 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;
1074 } SURFACEALIGNMENT, *LPSURFACEALIGNMENT;
1076 /* SURFOBJ.iType constants */
1077 #define STYPE_BITMAP 0L
1078 #define STYPE_DEVICE 1L
1079 #define STYPE_DEVBITMAP 3L
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
1092 typedef 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;
1108 typedef struct _TYPE1_FONT {
1109 HANDLE hPFM;
1110 HANDLE hPFB;
1111 ULONG ulIdentifier;
1112 } TYPE1_FONT;
1114 typedef struct _WNDOBJ {
1115 CLIPOBJ coClient;
1116 PVOID pvConsumer;
1117 RECTL rclClient;
1118 SURFOBJ *psoOwner;
1119 } WNDOBJ, *PWNDOBJ;
1121 typedef struct _XFORML {
1122 FLOATL eM11;
1123 FLOATL eM12;
1124 FLOATL eM21;
1125 FLOATL eM22;
1126 FLOATL eDx;
1127 FLOATL eDy;
1128 } XFORML, *PXFORML;
1130 typedef struct _XFORMOBJ {
1131 ULONG ulReserved;
1132 } XFORMOBJ;
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
1142 typedef struct _XLATEOBJ {
1143 ULONG iUniq;
1144 FLONG flXlate;
1145 USHORT iSrcType;
1146 USHORT iDstType;
1147 ULONG cEntries;
1148 ULONG *pulXlate;
1149 } XLATEOBJ;
1151 typedef VOID DDKAPI (CALLBACK *WNDOBJCHANGEPROC)(
1152 /*IN*/ WNDOBJ *pwo,
1153 /*IN*/ FLONG fl);
1156 WIN32KAPI
1157 HANDLE
1158 DDKAPI
1159 BRUSHOBJ_hGetColorTransform(
1160 /*IN*/ BRUSHOBJ *pbo);
1162 WIN32KAPI
1163 PVOID
1164 DDKAPI
1165 BRUSHOBJ_pvAllocRbrush(
1166 /*IN*/ BRUSHOBJ *pbo,
1167 /*IN*/ ULONG cj);
1169 WIN32KAPI
1170 PVOID
1171 DDKAPI
1172 BRUSHOBJ_pvGetRbrush(
1173 /*IN*/ BRUSHOBJ *pbo);
1175 WIN32KAPI
1176 ULONG
1177 DDKAPI
1178 BRUSHOBJ_ulGetBrushColor(
1179 /*IN*/ BRUSHOBJ *pbo);
1181 WIN32KAPI
1182 BOOL
1183 DDKAPI
1184 CLIPOBJ_bEnum(
1185 /*IN*/ CLIPOBJ *pco,
1186 /*IN*/ ULONG cj,
1188 /*OUT*/ ULONG *pv);
1190 /* CLIPOBJ_cEnumStart.iType constants */
1191 #define CT_RECTANGLES 0L
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
1202 WIN32KAPI
1203 ULONG
1204 DDKAPI
1205 CLIPOBJ_cEnumStart(
1206 /*IN*/ CLIPOBJ *pco,
1207 /*IN*/ BOOL bAll,
1208 /*IN*/ ULONG iType,
1209 /*IN*/ ULONG iDirection,
1210 /*IN*/ ULONG cLimit);
1212 WIN32KAPI
1213 PATHOBJ*
1214 DDKAPI
1215 CLIPOBJ_ppoGetPath(
1216 /*IN*/ CLIPOBJ *pco);
1218 WIN32KAPI
1219 VOID
1220 DDKAPI
1221 EngAcquireSemaphore(
1222 /*IN*/ HSEMAPHORE hsem);
1224 #define FL_ZERO_MEMORY 0x00000001
1225 #define FL_NONPAGED_MEMORY 0x00000002
1227 WIN32KAPI
1228 PVOID
1229 DDKAPI
1230 EngAllocMem(
1231 /*IN*/ ULONG Flags,
1232 /*IN*/ ULONG MemSize,
1233 /*IN*/ ULONG Tag);
1235 WIN32KAPI
1236 PVOID
1237 DDKAPI
1238 EngAllocPrivateUserMem(
1239 /*IN*/ PDD_SURFACE_LOCAL psl,
1240 /*IN*/ SIZE_T cj,
1241 /*IN*/ ULONG tag);
1243 WIN32KAPI
1244 PVOID
1245 DDKAPI
1246 EngAllocUserMem(
1247 /*IN*/ SIZE_T cj,
1248 /*IN*/ ULONG tag);
1250 WIN32KAPI
1251 BOOL
1252 DDKAPI
1253 EngAlphaBlend(
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);
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
1282 WIN32KAPI
1283 BOOL
1284 DDKAPI
1285 EngAssociateSurface(
1286 /*IN*/ HSURF hsurf,
1287 /*IN*/ HDEV hdev,
1288 /*IN*/ FLONG flHooks);
1290 WIN32KAPI
1291 BOOL
1292 DDKAPI
1293 EngBitBlt(
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);
1306 WIN32KAPI
1307 BOOL
1308 DDKAPI
1309 EngCheckAbort(
1310 /*IN*/ SURFOBJ *pso);
1312 WIN32KAPI
1313 VOID
1314 DDKAPI
1315 EngClearEvent(
1316 /*IN*/ PEVENT pEvent);
1318 WIN32KAPI
1319 FD_GLYPHSET*
1320 DDKAPI
1321 EngComputeGlyphSet(
1322 /*IN*/ INT nCodePage,
1323 /*IN*/ INT nFirstChar,
1324 /*IN*/ INT cChars);
1326 /* EngControlSprites.fl constants */
1327 #define ECS_TEARDOWN 0x00000001
1328 #define ECS_REDRAW 0x00000002
1330 WIN32KAPI
1331 BOOL
1332 DDKAPI
1333 EngControlSprites(
1334 /*IN*/ WNDOBJ *pwo,
1335 /*IN*/ FLONG fl);
1337 WIN32KAPI
1338 BOOL
1339 DDKAPI
1340 EngCopyBits(
1342 /*OUT*/ SURFOBJ *psoDest,
1343 /*IN*/ SURFOBJ *psoSrc,
1344 /*IN*/ CLIPOBJ *pco,
1345 /*IN*/ XLATEOBJ *pxlo,
1346 /*IN*/ RECTL *prclDest,
1347 /*IN*/ POINTL *pptlSrc);
1349 WIN32KAPI
1350 HBITMAP
1351 DDKAPI
1352 EngCreateBitmap(
1353 /*IN*/ SIZEL sizl,
1354 /*IN*/ LONG lWidth,
1355 /*IN*/ ULONG iFormat,
1356 /*IN*/ FLONG fl,
1357 /*IN*/ PVOID pvBits);
1359 WIN32KAPI
1360 CLIPOBJ*
1361 DDKAPI
1362 EngCreateClip(
1363 VOID);
1365 WIN32KAPI
1366 HBITMAP
1367 DDKAPI
1368 EngCreateDeviceBitmap(
1369 /*IN*/ DHSURF dhsurf,
1370 /*IN*/ SIZEL sizl,
1371 /*IN*/ ULONG iFormatCompat);
1373 WIN32KAPI
1374 HSURF
1375 DDKAPI
1376 EngCreateDeviceSurface(
1377 DHSURF dhsurf,
1378 SIZEL sizl,
1379 ULONG iFormatCompat);
1381 #if 0
1382 WIN32KAPI
1383 HDRVOBJ
1384 DDKAPI
1385 EngCreateDriverObj(
1386 PVOID pvObj,
1387 FREEOBJPROC pFreeObjProc,
1388 HDEV hdev);
1389 #endif
1391 WIN32KAPI
1392 BOOL
1393 DDKAPI
1394 EngCreateEvent(
1396 /*OUT*/ PEVENT *ppEvent);
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
1405 WIN32KAPI
1406 HPALETTE
1407 DDKAPI
1408 EngCreatePalette(
1409 /*IN*/ ULONG iMode,
1410 /*IN*/ ULONG cColors,
1411 /*IN*/ ULONG *pulColors,
1412 /*IN*/ FLONG flRed,
1413 /*IN*/ FLONG flGreen,
1414 /*IN*/ FLONG flBlue);
1416 WIN32KAPI
1417 PATHOBJ*
1418 DDKAPI
1419 EngCreatePath(
1420 VOID);
1422 WIN32KAPI
1423 HSEMAPHORE
1424 DDKAPI
1425 EngCreateSemaphore(
1426 VOID);
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
1439 WIN32KAPI
1440 WNDOBJ*
1441 DDKAPI
1442 EngCreateWnd(
1443 SURFOBJ *pso,
1444 HWND hwnd,
1445 WNDOBJCHANGEPROC pfn,
1446 FLONG fl,
1447 int iPixelFormat);
1449 WIN32KAPI
1450 VOID
1451 DDKAPI
1452 EngDebugBreak(
1453 VOID);
1455 WIN32KAPI
1456 VOID
1457 DDKAPI
1458 EngDebugPrint(
1459 /*IN*/ PCHAR StandardPrefix,
1460 /*IN*/ PCHAR DebugMessage,
1461 /*IN*/ va_list ap);
1463 WIN32KAPI
1464 VOID
1465 DDKAPI
1466 EngDeleteClip(
1467 /*IN*/ CLIPOBJ *pco);
1469 WIN32KAPI
1470 BOOL
1471 DDKAPI
1472 EngDeleteDriverObj(
1473 /*IN*/ HDRVOBJ hdo,
1474 /*IN*/ BOOL bCallBack,
1475 /*IN*/ BOOL bLocked);
1477 WIN32KAPI
1478 BOOL
1479 DDKAPI
1480 EngDeleteEvent(
1481 /*IN*/ PEVENT pEvent);
1483 WIN32KAPI
1484 BOOL
1485 DDKAPI
1486 EngDeleteFile(
1487 /*IN*/ LPWSTR pwszFileName);
1489 WIN32KAPI
1490 BOOL
1491 DDKAPI
1492 EngDeletePalette(
1493 /*IN*/ HPALETTE hpal);
1495 WIN32KAPI
1496 VOID
1497 DDKAPI
1498 EngDeletePath(
1499 /*IN*/ PATHOBJ *ppo);
1501 WIN32KAPI
1502 VOID
1503 DDKAPI
1504 EngDeleteSafeSemaphore(
1505 /*IN OUT*/ ENGSAFESEMAPHORE *pssem);
1507 WIN32KAPI
1508 VOID
1509 DDKAPI
1510 EngDeleteSemaphore(
1511 /*IN OUT*/ HSEMAPHORE hsem);
1513 WIN32KAPI
1514 BOOL
1515 DDKAPI
1516 EngDeleteSurface(
1517 /*IN*/ HSURF hsurf);
1519 WIN32KAPI
1520 VOID
1521 DDKAPI
1522 EngDeleteWnd(
1523 /*IN*/ WNDOBJ *pwo);
1525 WIN32KAPI
1526 DWORD
1527 DDKAPI
1528 EngDeviceIoControl(
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,
1536 /*OUT*/ LPDWORD lpBytesReturned);
1538 WIN32KAPI
1539 ULONG
1540 DDKAPI
1541 EngDitherColor(
1542 /*IN*/ HDEV hdev,
1543 /*IN*/ ULONG iMode,
1544 /*IN*/ ULONG rgb,
1546 /*OUT*/ ULONG *pul);
1548 WIN32KAPI
1549 BOOL
1550 DDKAPI
1551 EngEnumForms(
1552 /*IN*/ HANDLE hPrinter,
1553 /*IN*/ DWORD Level,
1555 /*OUT*/ LPBYTE pForm,
1556 /*IN*/ DWORD cbBuf,
1558 /*OUT*/ LPDWORD pcbNeeded,
1560 /*OUT*/ LPDWORD pcReturned);
1562 WIN32KAPI
1563 BOOL
1564 DDKAPI
1565 EngEraseSurface(
1566 /*IN*/ SURFOBJ *pso,
1567 /*IN*/ RECTL *prcl,
1568 /*IN*/ ULONG iColor);
1570 WIN32KAPI
1571 BOOL
1572 DDKAPI
1573 EngFillPath(
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);
1582 WIN32KAPI
1583 PVOID
1584 DDKAPI
1585 EngFindImageProcAddress(
1586 /*IN*/ HANDLE hModule,
1587 /*IN*/ LPSTR lpProcName);
1589 WIN32KAPI
1590 PVOID
1591 DDKAPI
1592 EngFindResource(
1593 /*IN*/ HANDLE h,
1594 /*IN*/ int iName,
1595 /*IN*/ int iType,
1597 /*OUT*/ PULONG pulSize);
1599 WIN32KAPI
1600 PVOID
1601 DDKAPI
1602 EngFntCacheAlloc(
1603 /*IN*/ ULONG FastCheckSum,
1604 /*IN*/ ULONG ulSize);
1606 /* EngFntCacheFault.iFaultMode constants */
1607 #define ENG_FNT_CACHE_READ_FAULT 0x00000001
1608 #define ENG_FNT_CACHE_WRITE_FAULT 0x00000002
1610 WIN32KAPI
1611 VOID
1612 DDKAPI
1613 EngFntCacheFault(
1614 /*IN*/ ULONG ulFastCheckSum,
1615 /*IN*/ ULONG iFaultMode);
1617 WIN32KAPI
1618 PVOID
1619 DDKAPI
1620 EngFntCacheLookUp(
1621 /*IN*/ ULONG FastCheckSum,
1623 /*OUT*/ ULONG *pulSize);
1625 WIN32KAPI
1626 VOID
1627 DDKAPI
1628 EngFreeMem(
1629 /*IN*/ PVOID Mem);
1631 WIN32KAPI
1632 VOID
1633 DDKAPI
1634 EngFreeModule(
1635 /*IN*/ HANDLE h);
1637 WIN32KAPI
1638 VOID
1639 DDKAPI
1640 EngFreePrivateUserMem(
1641 /*IN*/ PDD_SURFACE_LOCAL psl,
1642 /*IN*/ PVOID pv);
1644 WIN32KAPI
1645 VOID
1646 DDKAPI
1647 EngFreeUserMem(
1648 /*IN*/ PVOID pv);
1650 WIN32KAPI
1651 VOID
1652 DDKAPI
1653 EngGetCurrentCodePage(
1655 /*OUT*/ PUSHORT OemCodePage,
1657 /*OUT*/ PUSHORT AnsiCodePage);
1659 WIN32KAPI
1660 HANDLE
1661 DDKAPI
1662 EngGetCurrentProcessId(
1663 VOID);
1665 WIN32KAPI
1666 HANDLE
1667 DDKAPI
1668 EngGetCurrentThreadId(
1669 VOID);
1671 WIN32KAPI
1672 LPWSTR
1673 DDKAPI
1674 EngGetDriverName(
1675 /*IN*/ HDEV hdev);
1677 WIN32KAPI
1678 BOOL
1679 DDKAPI
1680 EngGetFileChangeTime(
1681 /*IN*/ HANDLE h,
1683 /*OUT*/ LARGE_INTEGER *pChangeTime);
1685 WIN32KAPI
1686 BOOL
1687 DDKAPI
1688 EngGetFilePath(
1689 /*IN*/ HANDLE h,
1691 /*OUT*/ WCHAR (*pDest)[MAX_PATH+1]);
1693 WIN32KAPI
1694 BOOL
1695 DDKAPI
1696 EngGetForm(
1697 /*IN*/ HANDLE hPrinter,
1698 /*IN*/ LPWSTR pFormName,
1699 /*IN*/ DWORD Level,
1701 /*OUT*/ LPBYTE pForm,
1702 /*IN*/ DWORD cbBuf,
1704 /*OUT*/ LPDWORD pcbNeeded);
1706 WIN32KAPI
1707 ULONG
1708 DDKAPI
1709 EngGetLastError(
1710 VOID);
1712 WIN32KAPI
1713 BOOL
1714 DDKAPI
1715 EngGetPrinter(
1716 /*IN*/ HANDLE hPrinter,
1717 /*IN*/ DWORD dwLevel,
1719 /*OUT*/ LPBYTE pPrinter,
1720 /*IN*/ DWORD cbBuf,
1722 /*OUT*/ LPDWORD pcbNeeded);
1724 WIN32KAPI
1725 DWORD
1726 DDKAPI
1727 EngGetPrinterData(
1728 /*IN*/ HANDLE hPrinter,
1729 /*IN*/ LPWSTR pValueName,
1731 /*OUT*/ LPDWORD pType,
1733 /*OUT*/ LPBYTE pData,
1734 /*IN*/ DWORD nSize,
1736 /*OUT*/ LPDWORD pcbNeeded);
1738 WIN32KAPI
1739 LPWSTR
1740 DDKAPI
1741 EngGetPrinterDataFileName(
1742 /*IN*/ HDEV hdev);
1744 WIN32KAPI
1745 BOOL
1746 DDKAPI
1747 EngGetPrinterDriver(
1748 /*IN*/ HANDLE hPrinter,
1749 /*IN*/ LPWSTR pEnvironment,
1750 /*IN*/ DWORD dwLevel,
1752 /*OUT*/ BYTE *lpbDrvInfo,
1753 /*IN*/ DWORD cbBuf,
1755 /*OUT*/ DWORD *pcbNeeded);
1757 WIN32KAPI
1758 HANDLE
1759 DDKAPI
1760 EngGetProcessHandle(
1761 VOID);
1763 WIN32KAPI
1764 BOOL
1765 DDKAPI
1766 EngGetType1FontList(
1767 /*IN*/ HDEV hdev,
1769 /*OUT*/ TYPE1_FONT *pType1Buffer,
1770 /*IN*/ ULONG cjType1Buffer,
1772 /*OUT*/ PULONG pulLocalFonts,
1774 /*OUT*/ PULONG pulRemoteFonts,
1776 /*OUT*/ LARGE_INTEGER *pLastModified);
1778 WIN32KAPI
1779 BOOL
1780 DDKAPI
1781 EngGradientFill(
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);
1793 /* EngHangNotification return values */
1794 #define EHN_RESTORED 0x00000000
1795 #define EHN_ERROR 0x00000001
1797 WIN32KAPI
1798 ULONG
1799 DDKAPI
1800 EngHangNotification(
1801 /*IN*/ HDEV hDev,
1802 /*IN*/ PVOID Reserved);
1804 WIN32KAPI
1805 BOOL
1806 DDKAPI
1807 EngInitializeSafeSemaphore(
1809 /*OUT*/ ENGSAFESEMAPHORE *pssem);
1811 WIN32KAPI
1812 BOOL
1813 DDKAPI
1814 EngIsSemaphoreOwned(
1815 /*IN*/ HSEMAPHORE hsem);
1817 WIN32KAPI
1818 BOOL
1819 DDKAPI
1820 EngIsSemaphoreOwnedByCurrentThread(
1821 /*IN*/ HSEMAPHORE hsem);
1823 WIN32KAPI
1824 BOOL
1825 DDKAPI
1826 EngLineTo(
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);
1837 WIN32KAPI
1838 HANDLE
1839 DDKAPI
1840 EngLoadImage(
1841 /*IN*/ LPWSTR pwszDriver);
1843 WIN32KAPI
1844 HANDLE
1845 DDKAPI
1846 EngLoadModule(
1847 /*IN*/ LPWSTR pwsz);
1849 WIN32KAPI
1850 HANDLE
1851 DDKAPI
1852 EngLoadModuleForWrite(
1853 /*IN*/ LPWSTR pwsz,
1854 /*IN*/ ULONG cjSizeOfModule);
1856 WIN32KAPI
1857 PDD_SURFACE_LOCAL
1858 DDKAPI
1859 EngLockDirectDrawSurface(
1860 /*IN*/ HANDLE hSurface);
1862 WIN32KAPI
1863 DRIVEROBJ*
1864 DDKAPI
1865 EngLockDriverObj(
1866 /*IN*/ HDRVOBJ hdo);
1868 WIN32KAPI
1869 SURFOBJ*
1870 DDKAPI
1871 EngLockSurface(
1872 /*IN*/ HSURF hsurf);
1874 WIN32KAPI
1875 BOOL
1876 DDKAPI
1877 EngLpkInstalled(
1878 VOID);
1880 WIN32KAPI
1881 PEVENT
1882 DDKAPI
1883 EngMapEvent(
1884 /*IN*/ HDEV hDev,
1885 /*IN*/ HANDLE hUserObject,
1886 /*IN*/ PVOID Reserved1,
1887 /*IN*/ PVOID Reserved2,
1888 /*IN*/ PVOID Reserved3);
1890 WIN32KAPI
1891 PVOID
1892 DDKAPI
1893 EngMapFile(
1894 /*IN*/ LPWSTR pwsz,
1895 /*IN*/ ULONG cjSize,
1897 /*OUT*/ ULONG_PTR *piFile);
1899 WIN32KAPI
1900 BOOL
1901 DDKAPI
1902 EngMapFontFile(
1903 ULONG_PTR iFile,
1904 PULONG *ppjBuf,
1905 ULONG *pcjBuf);
1907 WIN32KAPI
1908 BOOL
1909 DDKAPI
1910 EngMapFontFileFD(
1911 /*IN*/ ULONG_PTR iFile,
1913 /*OUT*/ PULONG *ppjBuf,
1915 /*OUT*/ ULONG *pcjBuf);
1917 WIN32KAPI
1918 PVOID
1919 DDKAPI
1920 EngMapModule(
1921 /*IN*/ HANDLE h,
1923 /*OUT*/ PULONG pSize);
1925 WIN32KAPI
1926 BOOL
1927 DDKAPI
1928 EngMarkBandingSurface(
1929 /*IN*/ HSURF hsurf);
1931 /* EngModifySurface.flSurface constants */
1932 #define MS_NOTSYSTEMMEMORY 0x00000001
1933 #define MS_SHAREDACCESS 0x00000002
1935 WIN32KAPI
1936 BOOL
1937 DDKAPI
1938 EngModifySurface(
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);
1948 WIN32KAPI
1949 VOID
1950 DDKAPI
1951 EngMovePointer(
1952 /*IN*/ SURFOBJ *pso,
1953 /*IN*/ LONG x,
1954 /*IN*/ LONG y,
1955 /*IN*/ RECTL *prcl);
1957 WIN32KAPI
1959 DDKAPI
1960 EngMulDiv(
1961 /*IN*/ int a,
1962 /*IN*/ int b,
1963 /*IN*/ int c);
1965 WIN32KAPI
1966 VOID
1967 DDKAPI
1968 EngMultiByteToUnicodeN(
1970 /*OUT*/ LPWSTR UnicodeString,
1971 /*IN*/ ULONG MaxBytesInUnicodeString,
1973 /*OUT*/ PULONG BytesInUnicodeString,
1974 /*IN*/ PCHAR MultiByteString,
1975 /*IN*/ ULONG BytesInMultiByteString);
1977 WIN32KAPI
1979 DDKAPI
1980 EngMultiByteToWideChar(
1981 /*IN*/ UINT CodePage,
1983 /*OUT*/ LPWSTR WideCharString,
1984 /*IN*/ INT BytesInWideCharString,
1985 /*IN*/ LPSTR MultiByteString,
1986 /*IN*/ INT BytesInMultiByteString);
1988 WIN32KAPI
1989 BOOL
1990 DDKAPI
1991 EngPaint(
1992 /*IN*/ SURFOBJ *pso,
1993 /*IN*/ CLIPOBJ *pco,
1994 /*IN*/ BRUSHOBJ *pbo,
1995 /*IN*/ POINTL *pptlBrushOrg,
1996 /*IN*/ MIX mix);
1998 WIN32KAPI
1999 BOOL
2000 DDKAPI
2001 EngPlgBlt(
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);
2014 WIN32KAPI
2015 VOID
2016 DDKAPI
2017 EngProbeForRead(
2018 /*IN*/ PVOID Address,
2019 /*IN*/ ULONG Length,
2020 /*IN*/ ULONG Alignment);
2022 WIN32KAPI
2023 VOID
2024 DDKAPI
2025 EngProbeForReadAndWrite(
2026 /*IN*/ PVOID Address,
2027 /*IN*/ ULONG Length,
2028 /*IN*/ ULONG Alignment);
2030 typedef enum _ENG_DEVICE_ATTRIBUTE {
2031 QDA_RESERVED = 0,
2032 QDA_ACCELERATION_LEVEL
2033 } ENG_DEVICE_ATTRIBUTE;
2035 WIN32KAPI
2036 BOOL
2037 DDKAPI
2038 EngQueryDeviceAttribute(
2039 /*IN*/ HDEV hdev,
2040 /*IN*/ ENG_DEVICE_ATTRIBUTE devAttr,
2041 /*IN*/ VOID *pvIn,
2042 /*IN*/ ULONG ulInSize,
2044 /*OUT*/ VOID *pvOut,
2046 /*OUT*/ ULONG ulOutSize);
2048 WIN32KAPI
2049 LARGE_INTEGER
2050 DDKAPI
2051 EngQueryFileTimeStamp(
2052 /*IN*/ LPWSTR pwsz);
2054 WIN32KAPI
2055 VOID
2056 DDKAPI
2057 EngQueryLocalTime(
2059 /*OUT*/ PENG_TIME_FIELDS ptf);
2061 WIN32KAPI
2062 ULONG
2063 DDKAPI
2064 EngQueryPalette(
2065 /*IN*/ HPALETTE hPal,
2067 /*OUT*/ ULONG *piMode,
2068 /*IN*/ ULONG cColors,
2070 /*OUT*/ ULONG *pulColors);
2072 WIN32KAPI
2073 VOID
2074 DDKAPI
2075 EngQueryPerformanceCounter(
2077 /*OUT*/ LONGLONG *pPerformanceCount);
2079 WIN32KAPI
2080 VOID
2081 DDKAPI
2082 EngQueryPerformanceFrequency(
2084 /*OUT*/ LONGLONG *pFrequency);
2086 typedef enum _ENG_SYSTEM_ATTRIBUTE {
2087 EngProcessorFeature = 1,
2088 EngNumberOfProcessors,
2089 EngOptimumAvailableUserMemory,
2090 EngOptimumAvailableSystemMemory,
2091 } ENG_SYSTEM_ATTRIBUTE;
2093 #define QSA_MMX 0x00000100
2094 #define QSA_SSE 0x00002000
2095 #define QSA_3DNOW 0x00004000
2097 WIN32KAPI
2098 BOOL
2099 DDKAPI
2100 EngQuerySystemAttribute(
2101 /*IN*/ ENG_SYSTEM_ATTRIBUTE CapNum,
2103 /*OUT*/ PDWORD pCapability);
2105 WIN32KAPI
2106 LONG
2107 DDKAPI
2108 EngReadStateEvent(
2109 /*IN*/ PEVENT pEvent);
2111 WIN32KAPI
2112 VOID
2113 DDKAPI
2114 EngReleaseSemaphore(
2115 /*IN*/ HSEMAPHORE hsem);
2117 WIN32KAPI
2118 BOOL
2119 DDKAPI
2120 EngRestoreFloatingPointState(
2121 /*IN*/ VOID *pBuffer);
2123 WIN32KAPI
2124 ULONG
2125 DDKAPI
2126 EngSaveFloatingPointState(
2128 /*OUT*/ VOID *pBuffer,
2129 /*IN*/ ULONG cjBufferSize);
2131 WIN32KAPI
2132 HANDLE
2133 DDKAPI
2134 EngSecureMem(
2135 /*IN*/ PVOID Address,
2136 /*IN*/ ULONG Length);
2138 WIN32KAPI
2139 LONG
2140 DDKAPI
2141 EngSetEvent(
2142 /*IN*/ PEVENT pEvent);
2144 WIN32KAPI
2145 VOID
2146 DDKAPI
2147 EngSetLastError(
2148 /*IN*/ ULONG iError);
2150 WIN32KAPI
2151 ULONG
2152 DDKAPI
2153 EngSetPointerShape(
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);
2165 WIN32KAPI
2166 BOOL
2167 DDKAPI
2168 EngSetPointerTag(
2169 /*IN*/ HDEV hdev,
2170 /*IN*/ SURFOBJ *psoMask,
2171 /*IN*/ SURFOBJ *psoColor,
2172 /*IN*/ XLATEOBJ *pxlo,
2173 /*IN*/ FLONG fl);
2175 WIN32KAPI
2176 DWORD
2177 DDKAPI
2178 EngSetPrinterData(
2179 /*IN*/ HANDLE hPrinter,
2180 /*IN*/ LPWSTR pType,
2181 /*IN*/ DWORD dwType,
2182 /*IN*/ LPBYTE lpbPrinterData,
2183 /*IN*/ DWORD cjPrinterData);
2185 typedef int DDKCDECLAPI (*SORTCOMP)(const void *pv1, const void *pv2);
2187 WIN32KAPI
2188 VOID
2189 DDKAPI
2190 EngSort(
2191 /*IN OUT*/ PBYTE pjBuf,
2192 /*IN*/ ULONG c,
2193 /*IN*/ ULONG cjElem,
2194 /*IN*/ SORTCOMP pfnComp);
2196 WIN32KAPI
2197 BOOL
2198 DDKAPI
2199 EngStretchBlt(
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);
2212 WIN32KAPI
2213 BOOL
2214 DDKAPI
2215 EngStretchBltROP(
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);
2230 WIN32KAPI
2231 BOOL
2232 DDKAPI
2233 EngStrokeAndFillPath(
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);
2245 WIN32KAPI
2246 BOOL
2247 DDKAPI
2248 EngStrokePath(
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);
2258 WIN32KAPI
2259 BOOL
2260 DDKAPI
2261 EngTextOut(
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);
2273 WIN32KAPI
2274 BOOL
2275 DDKAPI
2276 EngTransparentBlt(
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);
2286 WIN32KAPI
2287 VOID
2288 DDKAPI
2289 EngUnicodeToMultiByteN(
2291 /*OUT*/ PCHAR MultiByteString,
2292 /*IN*/ ULONG MaxBytesInMultiByteString,
2294 /*OUT*/ PULONG BytesInMultiByteString,
2295 /*IN*/ PWSTR UnicodeString,
2296 /*IN*/ ULONG BytesInUnicodeString);
2298 WIN32KAPI
2299 VOID
2300 DDKAPI
2301 EngUnloadImage(
2302 /*IN*/ HANDLE hModule);
2304 WIN32KAPI
2305 BOOL
2306 DDKAPI
2307 EngUnlockDirectDrawSurface(
2308 /*IN*/ PDD_SURFACE_LOCAL pSurface);
2310 WIN32KAPI
2311 BOOL
2312 DDKAPI
2313 EngUnlockDriverObj(
2314 /*IN*/ HDRVOBJ hdo);
2316 WIN32KAPI
2317 VOID
2318 DDKAPI
2319 EngUnlockSurface(
2320 /*IN*/ SURFOBJ *pso);
2322 WIN32KAPI
2323 BOOL
2324 DDKAPI
2325 EngUnmapEvent(
2326 /*IN*/ PEVENT pEvent);
2328 WIN32KAPI
2329 BOOL
2330 DDKAPI
2331 EngUnmapFile(
2332 /*IN*/ ULONG_PTR iFile);
2334 WIN32KAPI
2335 VOID
2336 DDKAPI
2337 EngUnmapFontFile(
2338 ULONG_PTR iFile);
2340 WIN32KAPI
2341 VOID
2342 DDKAPI
2343 EngUnmapFontFileFD(
2344 /*IN*/ ULONG_PTR iFile);
2346 WIN32KAPI
2347 VOID
2348 DDKAPI
2349 EngUnsecureMem(
2350 /*IN*/ HANDLE hSecure);
2352 WIN32KAPI
2353 BOOL
2354 DDKAPI
2355 EngWaitForSingleObject(
2356 /*IN*/ PEVENT pEvent,
2357 /*IN*/ PLARGE_INTEGER pTimeOut);
2359 WIN32KAPI
2361 DDKAPI
2362 EngWideCharToMultiByte(
2363 /*IN*/ UINT CodePage,
2364 /*IN*/ LPWSTR WideCharString,
2365 /*IN*/ INT BytesInWideCharString,
2367 /*OUT*/ LPSTR MultiByteString,
2368 /*IN*/ INT BytesInMultiByteString);
2370 WIN32KAPI
2371 BOOL
2372 DDKAPI
2373 EngWritePrinter(
2374 /*IN*/ HANDLE hPrinter,
2375 /*IN*/ LPVOID pBuf,
2376 /*IN*/ DWORD cbBuf,
2378 /*OUT*/ LPDWORD pcWritten);
2380 WIN32KAPI
2381 VOID
2382 DDKAPI
2383 FLOATOBJ_Add(
2384 /*IN OUT*/ PFLOATOBJ pf,
2385 /*IN*/ PFLOATOBJ pf1);
2387 WIN32KAPI
2388 VOID
2389 DDKAPI
2390 FLOATOBJ_AddFloat(
2391 /*IN OUT*/ PFLOATOBJ pf,
2392 /*IN*/ FLOATL f);
2394 WIN32KAPI
2395 VOID
2396 DDKAPI
2397 FLOATOBJ_AddLong(
2398 /*IN OUT*/ PFLOATOBJ pf,
2399 /*IN*/ LONG l);
2401 WIN32KAPI
2402 VOID
2403 DDKAPI
2404 FLOATOBJ_Div(
2405 /*IN OUT*/ PFLOATOBJ pf,
2406 /*IN*/ PFLOATOBJ pf1);
2408 WIN32KAPI
2409 VOID
2410 DDKAPI
2411 FLOATOBJ_DivFloat(
2412 /*IN OUT*/ PFLOATOBJ pf,
2413 /*IN*/ FLOATL f);
2415 WIN32KAPI
2416 VOID
2417 DDKAPI
2418 FLOATOBJ_DivLong(
2419 /*IN OUT*/ PFLOATOBJ pf,
2420 /*IN*/ LONG l);
2422 WIN32KAPI
2423 BOOL
2424 DDKAPI
2425 FLOATOBJ_Equal(
2426 /*IN*/ PFLOATOBJ pf,
2427 /*IN*/ PFLOATOBJ pf1);
2429 WIN32KAPI
2430 BOOL
2431 DDKAPI
2432 FLOATOBJ_EqualLong(
2433 /*IN*/ PFLOATOBJ pf,
2434 /*IN*/ LONG l);
2436 WIN32KAPI
2437 LONG
2438 DDKAPI
2439 FLOATOBJ_GetFloat(
2440 /*IN*/ PFLOATOBJ pf);
2442 WIN32KAPI
2443 LONG
2444 DDKAPI
2445 FLOATOBJ_GetLong(
2446 /*IN*/ PFLOATOBJ pf);
2448 WIN32KAPI
2449 BOOL
2450 DDKAPI
2451 FLOATOBJ_GreaterThan(
2452 /*IN*/ PFLOATOBJ pf,
2453 /*IN*/ PFLOATOBJ pf1);
2455 WIN32KAPI
2456 BOOL
2457 DDKAPI
2458 FLOATOBJ_GreaterThanLong(
2459 /*IN*/ PFLOATOBJ pf,
2460 /*IN*/ LONG l);
2462 WIN32KAPI
2463 BOOL
2464 DDKAPI
2465 FLOATOBJ_LessThan(
2466 /*IN*/ PFLOATOBJ pf,
2467 /*IN*/ PFLOATOBJ pf1);
2469 WIN32KAPI
2470 BOOL
2471 DDKAPI
2472 FLOATOBJ_LessThanLong(
2473 /*IN*/ PFLOATOBJ pf,
2474 /*IN*/ LONG l);
2476 WIN32KAPI
2477 VOID
2478 DDKAPI
2479 FLOATOBJ_Mul(
2480 /*IN OUT*/ PFLOATOBJ pf,
2481 /*IN*/ PFLOATOBJ pf1);
2483 WIN32KAPI
2484 VOID
2485 DDKAPI
2486 FLOATOBJ_MulFloat(
2487 /*IN OUT*/ PFLOATOBJ pf,
2488 /*IN*/ FLOATL f);
2490 WIN32KAPI
2491 VOID
2492 DDKAPI
2493 FLOATOBJ_MulLong(
2494 /*IN OUT*/ PFLOATOBJ pf,
2495 /*IN*/ LONG l);
2497 WIN32KAPI
2498 VOID
2499 DDKAPI
2500 FLOATOBJ_Neg(
2501 /*IN OUT*/ PFLOATOBJ pf);
2503 WIN32KAPI
2504 VOID
2505 DDKAPI
2506 FLOATOBJ_SetFloat(
2508 /*OUT*/ PFLOATOBJ pf,
2509 /*IN*/ FLOATL f);
2511 WIN32KAPI
2512 VOID
2513 DDKAPI
2514 FLOATOBJ_SetLong(
2516 /*OUT*/ PFLOATOBJ pf,
2517 /*IN*/ LONG l);
2519 WIN32KAPI
2520 VOID
2521 DDKAPI
2522 FLOATOBJ_Sub(
2523 /*IN OUT*/ PFLOATOBJ pf,
2524 /*IN*/ PFLOATOBJ pf1);
2526 WIN32KAPI
2527 VOID
2528 DDKAPI
2529 FLOATOBJ_SubFloat(
2530 /*IN OUT*/ PFLOATOBJ pf,
2531 /*IN*/ FLOATL f);
2533 WIN32KAPI
2534 VOID
2535 DDKAPI
2536 FLOATOBJ_SubLong(
2537 /*IN OUT*/ PFLOATOBJ pf,
2538 /*IN*/ LONG l);
2540 WIN32KAPI
2541 ULONG
2542 DDKAPI
2543 FONTOBJ_cGetAllGlyphHandles(
2544 /*IN*/ FONTOBJ *pfo,
2546 /*OUT*/ HGLYPH *phg);
2548 WIN32KAPI
2549 ULONG
2550 DDKAPI
2551 FONTOBJ_cGetGlyphs(
2552 /*IN*/ FONTOBJ *pfo,
2553 /*IN*/ ULONG iMode,
2554 /*IN*/ ULONG cGlyph,
2555 /*IN*/ HGLYPH *phg,
2557 /*OUT*/ PVOID *ppvGlyph);
2559 WIN32KAPI
2560 FD_GLYPHSET*
2561 DDKAPI
2562 FONTOBJ_pfdg(
2563 /*IN*/ FONTOBJ *pfo);
2565 WIN32KAPI
2566 IFIMETRICS*
2567 DDKAPI
2568 FONTOBJ_pifi(
2569 /*IN*/ FONTOBJ *pfo);
2571 WIN32KAPI
2572 PBYTE
2573 DDKAPI
2574 FONTOBJ_pjOpenTypeTablePointer(
2575 /*IN*/ FONTOBJ *pfo,
2576 /*IN*/ ULONG ulTag,
2578 /*OUT*/ ULONG *pcjTable);
2580 WIN32KAPI
2581 PFD_GLYPHATTR
2582 DDKAPI
2583 FONTOBJ_pQueryGlyphAttrs(
2584 /*IN*/ FONTOBJ *pfo,
2585 /*IN*/ ULONG iMode);
2587 WIN32KAPI
2588 PVOID
2589 DDKAPI
2590 FONTOBJ_pvTrueTypeFontFile(
2591 /*IN*/ FONTOBJ *pfo,
2593 /*OUT*/ ULONG *pcjFile);
2595 WIN32KAPI
2596 LPWSTR
2597 DDKAPI
2598 FONTOBJ_pwszFontFilePaths(
2599 /*IN*/ FONTOBJ *pfo,
2601 /*OUT*/ ULONG *pcwc);
2603 WIN32KAPI
2604 XFORMOBJ*
2605 DDKAPI
2606 FONTOBJ_pxoGetXform(
2607 /*IN*/ FONTOBJ *pfo);
2609 WIN32KAPI
2610 VOID
2611 DDKAPI
2612 FONTOBJ_vGetInfo(
2613 /*IN*/ FONTOBJ *pfo,
2614 /*IN*/ ULONG cjSize,
2616 /*OUT*/ FONTINFO *pfi);
2618 WIN32KAPI
2619 FLATPTR
2620 DDKAPI
2621 HeapVidMemAllocAligned(
2622 /*IN*/ LPVIDMEM lpVidMem,
2623 /*IN*/ DWORD dwWidth,
2624 /*IN*/ DWORD dwHeight,
2625 /*IN*/ LPSURFACEALIGNMENT lpAlignment,
2627 /*OUT*/ LPLONG lpNewPitch);
2629 WIN32KAPI
2630 LONG
2631 DDKAPI
2632 HT_ComputeRGBGammaTable(
2633 /*IN*/ USHORT GammaTableEntries,
2634 /*IN*/ USHORT GammaTableType,
2635 /*IN*/ USHORT RedGamma,
2636 /*IN*/ USHORT GreenGamma,
2637 /*IN*/ USHORT BlueGamma,
2639 /*OUT*/ LPBYTE pGammaTable);
2641 WIN32KAPI
2642 LONG
2643 DDKAPI
2644 HT_Get8BPPFormatPalette(
2646 /*OUT*/ LPPALETTEENTRY pPaletteEntry,
2647 /*IN*/ USHORT RedGamma,
2648 /*IN*/ USHORT GreenGamma,
2649 /*IN*/ USHORT BlueGamma);
2651 WIN32KAPI
2652 LONG
2653 DDKAPI
2654 HT_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);
2662 WIN32KAPI
2663 LONG
2664 DDKAPI
2665 HTUI_DeviceColorAdjustment(
2666 /*IN*/ LPSTR pDeviceName,
2668 /*OUT*/ PDEVHTADJDATA pDevHTAdjData);
2670 WIN32KAPI
2671 ULONG
2672 DDKAPI
2673 PALOBJ_cGetColors(
2674 /*IN*/ PALOBJ *ppalo,
2675 /*IN*/ ULONG iStart,
2676 /*IN*/ ULONG cColors,
2678 /*OUT*/ ULONG *pulColors);
2680 WIN32KAPI
2681 BOOL
2682 DDKAPI
2683 PATHOBJ_bCloseFigure(
2684 /*IN*/ PATHOBJ *ppo);
2686 WIN32KAPI
2687 BOOL
2688 DDKAPI
2689 PATHOBJ_bEnum(
2690 /*IN*/ PATHOBJ *ppo,
2692 /*OUT*/ PATHDATA *ppd);
2694 WIN32KAPI
2695 BOOL
2696 DDKAPI
2697 PATHOBJ_bEnumClipLines(
2698 /*IN*/ PATHOBJ *ppo,
2699 /*IN*/ ULONG cb,
2701 /*OUT*/ CLIPLINE *pcl);
2703 WIN32KAPI
2704 BOOL
2705 DDKAPI
2706 PATHOBJ_bMoveTo(
2707 /*IN*/ PATHOBJ *ppo,
2708 /*IN*/ POINTFIX ptfx);
2710 WIN32KAPI
2711 BOOL
2712 DDKAPI
2713 PATHOBJ_bPolyBezierTo(
2714 /*IN*/ PATHOBJ *ppo,
2715 /*IN*/ POINTFIX *pptfx,
2716 /*IN*/ ULONG cptfx);
2718 WIN32KAPI
2719 BOOL
2720 DDKAPI
2721 PATHOBJ_bPolyLineTo(
2722 /*IN*/ PATHOBJ *ppo,
2723 /*IN*/ POINTFIX *pptfx,
2724 /*IN*/ ULONG cptfx);
2726 WIN32KAPI
2727 VOID
2728 DDKAPI
2729 PATHOBJ_vEnumStart(
2730 /*IN*/ PATHOBJ *ppo);
2732 WIN32KAPI
2733 VOID
2734 DDKAPI
2735 PATHOBJ_vEnumStartClipLines(
2736 /*IN*/ PATHOBJ *ppo,
2737 /*IN*/ CLIPOBJ *pco,
2738 /*IN*/ SURFOBJ *pso,
2739 /*IN*/ LINEATTRS *pla);
2741 WIN32KAPI
2742 VOID
2743 DDKAPI
2744 PATHOBJ_vGetBounds(
2745 /*IN*/ PATHOBJ *ppo,
2747 /*OUT*/ PRECTFX prectfx);
2749 WIN32KAPI
2750 BOOL
2751 DDKAPI
2752 STROBJ_bEnum(
2753 /*IN*/ STROBJ *pstro,
2755 /*OUT*/ ULONG *pc,
2757 /*OUT*/ PGLYPHPOS *ppgpos);
2759 WIN32KAPI
2760 BOOL
2761 DDKAPI
2762 STROBJ_bEnumPositionsOnly(
2763 /*IN*/ STROBJ *pstro,
2765 /*OUT*/ ULONG *pc,
2767 /*OUT*/ PGLYPHPOS *ppgpos);
2769 WIN32KAPI
2770 BOOL
2771 DDKAPI
2772 STROBJ_bGetAdvanceWidths(
2773 /*IN*/ STROBJ *pso,
2774 /*IN*/ ULONG iFirst,
2775 /*IN*/ ULONG c,
2777 /*OUT*/ POINTQF *pptqD);
2779 WIN32KAPI
2780 DWORD
2781 DDKAPI
2782 STROBJ_dwGetCodePage(
2783 /*IN*/ STROBJ *pstro);
2785 WIN32KAPI
2787 DDKAPI
2788 STROBJ_fxBreakExtra(
2789 /*IN*/ STROBJ *pstro);
2791 WIN32KAPI
2793 DDKAPI
2794 STROBJ_fxCharacterExtra(
2795 /*IN*/ STROBJ *pstro);
2797 WIN32KAPI
2798 VOID
2799 DDKAPI
2800 STROBJ_vEnumStart(
2801 /*IN*/ STROBJ *pstro);
2803 WIN32KAPI
2804 VOID
2805 DDKAPI
2806 VidMemFree(
2807 /*IN*/ LPVMEMHEAP pvmh,
2808 /*IN*/ FLATPTR ptr);
2810 WIN32KAPI
2811 BOOL
2812 DDKAPI
2813 WNDOBJ_bEnum(
2814 /*IN*/ WNDOBJ *pwo,
2815 /*IN*/ ULONG cj,
2817 /*OUT*/ ULONG *pul);
2819 WIN32KAPI
2820 ULONG
2821 DDKAPI
2822 WNDOBJ_cEnumStart(
2823 /*IN*/ WNDOBJ *pwo,
2824 /*IN*/ ULONG iType,
2825 /*IN*/ ULONG iDirection,
2826 /*IN*/ ULONG cLimit);
2828 WIN32KAPI
2829 VOID
2830 DDKAPI
2831 WNDOBJ_vSetConsumer(
2832 /*IN*/ WNDOBJ *pwo,
2833 /*IN*/ PVOID pvConsumer);
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
2841 WIN32KAPI
2842 BOOL
2843 DDKAPI
2844 XFORMOBJ_bApplyXform(
2845 /*IN*/ XFORMOBJ *pxo,
2846 /*IN*/ ULONG iMode,
2847 /*IN*/ ULONG cPoints,
2848 /*IN*/ PVOID pvIn,
2850 /*OUT*/ PVOID pvOut);
2852 WIN32KAPI
2853 ULONG
2854 DDKAPI
2855 XFORMOBJ_iGetFloatObjXform(
2856 /*IN*/ XFORMOBJ *pxo,
2858 /*OUT*/ FLOATOBJ_XFORM *pxfo);
2860 WIN32KAPI
2861 ULONG
2862 DDKAPI
2863 XFORMOBJ_iGetXform(
2864 /*IN*/ XFORMOBJ *pxo,
2866 /*OUT*/ XFORML *pxform);
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
2875 WIN32KAPI
2876 ULONG
2877 DDKAPI
2878 XLATEOBJ_cGetPalette(
2879 /*IN*/ XLATEOBJ *pxlo,
2880 /*IN*/ ULONG iPal,
2881 /*IN*/ ULONG cPal,
2883 /*OUT*/ ULONG *pPal);
2885 WIN32KAPI
2886 HANDLE
2887 DDKAPI
2888 XLATEOBJ_hGetColorTransform(
2889 /*IN*/ XLATEOBJ *pxlo);
2891 WIN32KAPI
2892 ULONG
2893 DDKAPI
2894 XLATEOBJ_iXlate(
2895 /*IN*/ XLATEOBJ *pxlo,
2896 /*IN*/ ULONG iColor);
2898 WIN32KAPI
2899 ULONG*
2900 DDKAPI
2901 XLATEOBJ_piVector(
2902 /*IN*/ XLATEOBJ *pxlo);
2906 /* Graphics Driver Functions */
2908 BOOL
2909 DDKAPI
2910 DrvAlphaBlend(
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);
2919 BOOL
2920 DDKAPI
2921 DrvAssertMode(
2922 /*IN*/ DHPDEV dhpdev,
2923 /*IN*/ BOOL bEnable);
2925 BOOL
2926 DDKAPI
2927 DrvBitBlt(
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);
2940 VOID
2941 DDKAPI
2942 DrvCompletePDEV(
2943 /*IN*/ DHPDEV dhpdev,
2944 /*IN*/ HDEV hdev);
2946 BOOL
2947 DDKAPI
2948 DrvCopyBits(
2949 /*IN*/ SURFOBJ *psoDest,
2950 /*IN*/ SURFOBJ *psoSrc,
2951 /*IN*/ CLIPOBJ *pco,
2952 /*IN*/ XLATEOBJ *pxlo,
2953 /*IN*/ RECTL *prclDest,
2954 /*IN*/ POINTL *pptlSrc);
2956 HBITMAP
2957 DDKAPI
2958 DrvCreateDeviceBitmap(
2959 /*IN*/ DHPDEV dhpdev,
2960 /*IN*/ SIZEL sizl,
2961 /*IN*/ ULONG iFormat);
2963 VOID
2964 DDKAPI
2965 DrvDeleteDeviceBitmap(
2966 /*IN*/ DHSURF dhsurf);
2968 HBITMAP
2969 DDKAPI
2970 DrvDeriveSurface(
2971 DD_DIRECTDRAW_GLOBAL *pDirectDraw,
2972 DD_SURFACE_LOCAL *pSurface);
2974 LONG
2975 DDKAPI
2976 DrvDescribePixelFormat(
2977 /*IN*/ DHPDEV dhpdev,
2978 /*IN*/ LONG iPixelFormat,
2979 /*IN*/ ULONG cjpfd,
2981 /*OUT*/ PIXELFORMATDESCRIPTOR *ppfd);
2983 VOID
2984 DDKAPI
2985 DrvDestroyFont(
2986 /*IN*/ FONTOBJ *pfo);
2988 VOID
2989 DDKAPI
2990 DrvDisableDriver(
2991 VOID);
2993 VOID
2994 DDKAPI
2995 DrvDisablePDEV(
2996 /*IN*/ DHPDEV dhpdev);
2998 VOID
2999 DDKAPI
3000 DrvDisableSurface(
3001 /*IN*/ DHPDEV dhpdev);
3003 #define DM_DEFAULT 0x00000001
3004 #define DM_MONOCHROME 0x00000002
3006 ULONG
3007 DDKAPI
3008 DrvDitherColor(
3009 /*IN*/ DHPDEV dhpdev,
3010 /*IN*/ ULONG iMode,
3011 /*IN*/ ULONG rgb,
3013 /*OUT*/ ULONG *pul);
3015 ULONG
3016 DDKAPI
3017 DrvDrawEscape(
3018 /*IN*/ SURFOBJ *pso,
3019 /*IN*/ ULONG iEsc,
3020 /*IN*/ CLIPOBJ *pco,
3021 /*IN*/ RECTL *prcl,
3022 /*IN*/ ULONG cjIn,
3023 /*IN*/ PVOID pvIn);
3025 BOOL
3026 DDKAPI
3027 DrvEnableDriver(
3028 /*IN*/ ULONG iEngineVersion,
3029 /*IN*/ ULONG cj,
3031 /*OUT*/ DRVENABLEDATA *pded);
3033 DHPDEV
3034 DDKAPI
3035 DrvEnablePDEV(
3036 /*IN*/ DEVMODEW *pdm,
3037 /*IN*/ LPWSTR pwszLogAddress,
3038 /*IN*/ ULONG cPat,
3040 /*OUT*/ HSURF *phsurfPatterns,
3041 /*IN*/ ULONG cjCaps,
3043 /*OUT*/ ULONG *pdevcaps,
3044 /*IN*/ ULONG cjDevInfo,
3046 /*OUT*/ DEVINFO *pdi,
3047 /*IN*/ HDEV hdev,
3048 /*IN*/ LPWSTR pwszDeviceName,
3049 /*IN*/ HANDLE hDriver);
3051 HSURF
3052 DDKAPI
3053 DrvEnableSurface(
3054 /*IN*/ DHPDEV dhpdev);
3056 /* DrvEndDoc.fl constants */
3057 #define ED_ABORTDOC 0x00000001
3059 BOOL
3060 DDKAPI
3061 DrvEndDoc(
3062 /*IN*/ SURFOBJ *pso,
3063 /*IN*/ FLONG fl);
3065 ULONG
3066 DDKAPI
3067 DrvEscape(
3068 /*IN*/ SURFOBJ *pso,
3069 /*IN*/ ULONG iEsc,
3070 /*IN*/ ULONG cjIn,
3071 /*IN*/ PVOID pvIn,
3072 /*IN*/ ULONG cjOut,
3074 /*OUT*/ PVOID pvOut);
3076 BOOL
3077 DDKAPI
3078 DrvFillPath(
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);
3087 ULONG
3088 DDKAPI
3089 DrvFontManagement(
3090 /*IN*/ SURFOBJ *pso,
3091 /*IN*/ FONTOBJ *pfo,
3092 /*IN*/ ULONG iMode,
3093 /*IN*/ ULONG cjIn,
3094 /*IN*/ PVOID pvIn,
3095 /*IN*/ ULONG cjOut,
3097 /*OUT*/ PVOID pvOut);
3099 VOID
3100 DDKAPI
3101 DrvFree(
3102 /*IN*/ PVOID pv,
3103 /*IN*/ ULONG_PTR id);
3105 /* DrvGetGlyphMode return values */
3106 #define FO_HGLYPHS 0L
3107 #define FO_GLYPHBITS 1L
3108 #define FO_PATHOBJ 2L
3110 ULONG
3111 DDKAPI
3112 DrvGetGlyphMode(
3113 /*IN*/ DHPDEV dhpdev,
3114 /*IN*/ FONTOBJ *pfo);
3116 ULONG
3117 DDKAPI
3118 DrvGetModes(
3119 /*IN*/ HANDLE hDriver,
3120 /*IN*/ ULONG cjSize,
3122 /*OUT*/ DEVMODEW *pdm);
3124 PVOID
3125 DDKAPI
3126 DrvGetTrueTypeFile(
3127 /*IN*/ ULONG_PTR iFile,
3128 /*IN*/ ULONG *pcj);
3130 BOOL
3131 DDKAPI
3132 DrvGradientFill(
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);
3144 BOOL
3145 DDKAPI
3146 DrvIcmCheckBitmapBits(
3147 /*IN*/ DHPDEV dhpdev,
3148 /*IN*/ HANDLE hColorTransform,
3149 /*IN*/ SURFOBJ *pso,
3151 /*OUT*/ PBYTE paResults);
3153 HANDLE
3154 DDKAPI
3155 DrvIcmCreateColorTransform(
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);
3166 BOOL
3167 DDKAPI
3168 DrvIcmDeleteColorTransform(
3169 /*IN*/ DHPDEV dhpdev,
3170 /*IN*/ HANDLE hcmXform);
3172 /* DrvIcmSetDeviceGammaRamp.iFormat constants */
3173 #define IGRF_RGB_256BYTES 0x00000000
3174 #define IGRF_RGB_256WORDS 0x00000001
3176 BOOL
3177 DDKAPI
3178 DrvIcmSetDeviceGammaRamp(
3179 /*IN*/ DHPDEV dhpdev,
3180 /*IN*/ ULONG iFormat,
3181 /*IN*/ LPVOID lpRamp);
3183 BOOL
3184 DDKAPI
3185 DrvLineTo(
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);
3196 ULONG_PTR
3197 DDKAPI
3198 DrvLoadFontFile(
3199 ULONG cFiles,
3200 ULONG_PTR *piFile,
3201 PVOID *ppvView,
3202 ULONG *pcjView,
3203 DESIGNVECTOR *pdv,
3204 ULONG ulLangID,
3205 ULONG ulFastCheckSum);
3207 VOID
3208 DDKAPI
3209 DrvMovePointer(
3210 /*IN*/ SURFOBJ *pso,
3211 /*IN*/ LONG x,
3212 /*IN*/ LONG y,
3213 /*IN*/ RECTL *prcl);
3215 BOOL
3216 DDKAPI
3217 DrvNextBand(
3218 /*IN*/ SURFOBJ *pso,
3219 /*IN*/ POINTL *pptl);
3221 VOID
3222 DDKAPI
3223 DrvNotify(
3224 /*IN*/ SURFOBJ *pso,
3225 /*IN*/ ULONG iType,
3226 /*IN*/ PVOID pvData);
3228 BOOL
3229 DDKAPI
3230 DrvOffset(
3231 /*IN*/ SURFOBJ *pso,
3232 /*IN*/ LONG x,
3233 /*IN*/ LONG y,
3234 /*IN*/ FLONG flReserved);
3236 BOOL
3237 DDKAPI
3238 DrvPaint(
3239 /*IN*/ SURFOBJ *pso,
3240 /*IN*/ CLIPOBJ *pco,
3241 /*IN*/ BRUSHOBJ *pbo,
3242 /*IN*/ POINTL *pptlBrushOrg,
3243 /*IN*/ MIX mix);
3245 BOOL
3246 DDKAPI
3247 DrvPlgBlt(
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);
3260 /* DrvQueryAdvanceWidths.iMode constants */
3261 #define QAW_GETWIDTHS 0
3262 #define QAW_GETEASYWIDTHS 1
3264 BOOL
3265 DDKAPI
3266 DrvQueryAdvanceWidths(
3267 /*IN*/ DHPDEV dhpdev,
3268 /*IN*/ FONTOBJ *pfo,
3269 /*IN*/ ULONG iMode,
3270 /*IN*/ HGLYPH *phg,
3272 /*OUT*/ PVOID pvWidths,
3273 /*IN*/ ULONG cGlyphs);
3275 /* DrvQueryDeviceSupport.iType constants */
3276 #define QDS_CHECKJPEGFORMAT 0x00000000
3277 #define QDS_CHECKPNGFORMAT 0x00000001
3279 BOOL
3280 DDKAPI
3281 DrvQueryDeviceSupport(
3282 SURFOBJ *pso,
3283 XLATEOBJ *pxlo,
3284 XFORMOBJ *pxo,
3285 ULONG iType,
3286 ULONG cjIn,
3287 PVOID pvIn,
3288 ULONG cjOut,
3289 PVOID pvOut);
3291 /* DrvQueryDriverInfo.dwMode constants */
3292 #define DRVQUERY_USERMODE 0x00000001
3294 BOOL
3295 DDKAPI
3296 DrvQueryDriverInfo(
3297 DWORD dwMode,
3298 PVOID pBuffer,
3299 DWORD cbBuf,
3300 PDWORD pcbNeeded);
3302 PIFIMETRICS
3303 DDKAPI
3304 DrvQueryFont(
3305 /*IN*/ DHPDEV dhpdev,
3306 /*IN*/ ULONG_PTR iFile,
3307 /*IN*/ ULONG iFace,
3308 /*IN*/ ULONG_PTR *pid);
3310 /* DrvQueryFontCaps.pulCaps constants */
3311 #define QC_OUTLINES 0x00000001
3312 #define QC_1BIT 0x00000002
3313 #define QC_4BIT 0x00000004
3315 #define QC_FONTDRIVERCAPS (QC_OUTLINES | QC_1BIT | QC_4BIT)
3317 LONG
3318 DDKAPI
3319 DrvQueryFontCaps(
3320 /*IN*/ ULONG culCaps,
3322 /*OUT*/ ULONG *pulCaps);
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
3334 #define QFD_TT_MONO_BITMAP QFD_TT_GRAY1_BITMAP
3336 LONG
3337 DDKAPI
3338 DrvQueryFontData(
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);
3347 /* DrvQueryFontFile.ulMode constants */
3348 #define QFF_DESCRIPTION 0x00000001
3349 #define QFF_NUMFACES 0x00000002
3351 LONG
3352 DDKAPI
3353 DrvQueryFontFile(
3354 /*IN*/ ULONG_PTR iFile,
3355 /*IN*/ ULONG ulMode,
3356 /*IN*/ ULONG cjBuf,
3357 /*IN*/ ULONG *pulBuf);
3359 /* DrvQueryFontTree.iMode constants */
3360 #define QFT_UNICODE 0L
3361 #define QFT_LIGATURES 1L
3362 #define QFT_KERNPAIRS 2L
3363 #define QFT_GLYPHSET 3L
3365 PVOID
3366 DDKAPI
3367 DrvQueryFontTree(
3368 /*IN*/ DHPDEV dhpdev,
3369 /*IN*/ ULONG_PTR iFile,
3370 /*IN*/ ULONG iFace,
3371 /*IN*/ ULONG iMode,
3372 /*IN*/ ULONG_PTR *pid);
3374 PFD_GLYPHATTR
3375 DDKAPI
3376 DrvQueryGlyphAttrs(
3377 /*IN*/ FONTOBJ *pfo,
3378 /*IN*/ ULONG iMode);
3380 ULONG
3381 DDKAPI
3382 DrvQueryPerBandInfo(
3383 /*IN*/ SURFOBJ *pso,
3384 /*IN OUT*/ PERBANDINFO *pbi);
3386 /* DrvQueryTrueTypeOutline.bMetricsOnly constants */
3387 #define TTO_METRICS_ONLY 0x00000001
3388 #define TTO_QUBICS 0x00000002
3389 #define TTO_UNHINTED 0x00000004
3391 LONG
3392 DDKAPI
3393 DrvQueryTrueTypeOutline(
3394 /*IN*/ DHPDEV dhpdev,
3395 /*IN*/ FONTOBJ *pfo,
3396 /*IN*/ HGLYPH hglyph,
3397 /*IN*/ BOOL bMetricsOnly,
3398 /*IN*/ GLYPHDATA *pgldt,
3399 /*IN*/ ULONG cjBuf,
3401 /*OUT*/ TTPOLYGONHEADER *ppoly);
3403 LONG
3404 DDKAPI
3405 DrvQueryTrueTypeTable(
3406 /*IN*/ ULONG_PTR iFile,
3407 /*IN*/ ULONG ulFont,
3408 /*IN*/ ULONG ulTag,
3409 /*IN*/ PTRDIFF dpStart,
3410 /*IN*/ ULONG cjBuf,
3412 /*OUT*/ BYTE *pjBuf,
3414 /*OUT*/ PBYTE *ppjTable,
3416 /*OUT*/ ULONG *pcjTable);
3418 /* DrvRealizeBrush.iHatch constants */
3419 #define RB_DITHERCOLOR 0x80000000L
3421 #define HS_DDI_MAX 6
3423 BOOL
3424 DDKAPI
3425 DrvRealizeBrush(
3426 /*IN*/ BRUSHOBJ *pbo,
3427 /*IN*/ SURFOBJ *psoTarget,
3428 /*IN*/ SURFOBJ *psoPattern,
3429 /*IN*/ SURFOBJ *psoMask,
3430 /*IN*/ XLATEOBJ *pxlo,
3431 /*IN*/ ULONG iHatch);
3433 /* DrvResetDevice return values */
3434 #define DRD_SUCCESS 0
3435 #define DRD_ERROR 1
3437 ULONG
3438 DDKAPI
3439 DrvResetDevice(
3440 /*IN*/ DHPDEV dhpdev,
3441 /*IN*/ PVOID Reserved);
3443 BOOL
3444 DDKAPI
3445 DrvResetPDEV(
3446 DHPDEV dhpdevOld,
3447 DHPDEV dhpdevNew);
3449 /* DrvSaveScreenBits.iMode constants */
3450 #define SS_SAVE 0x00000000
3451 #define SS_RESTORE 0x00000001
3452 #define SS_FREE 0x00000002
3454 ULONG_PTR
3455 DDKAPI
3456 DrvSaveScreenBits(
3457 /*IN*/ SURFOBJ *pso,
3458 /*IN*/ ULONG iMode,
3459 /*IN*/ ULONG_PTR ident,
3460 /*IN*/ RECTL *prcl);
3462 BOOL
3463 DDKAPI
3464 DrvSendPage(
3465 /*IN*/ SURFOBJ *pso);
3467 BOOL
3468 DDKAPI
3469 DrvSetPalette(
3470 /*IN*/ DHPDEV dhpdev,
3471 /*IN*/ PALOBJ *ppalo,
3472 /*IN*/ FLONG fl,
3473 /*IN*/ ULONG iStart,
3474 /*IN*/ ULONG cColors);
3476 BOOL
3477 DDKAPI
3478 DrvSetPixelFormat(
3479 /*IN*/ SURFOBJ *pso,
3480 /*IN*/ LONG iPixelFormat,
3481 /*IN*/ HWND hwnd);
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
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
3499 ULONG
3500 DDKAPI
3501 DrvSetPointerShape(
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);
3513 BOOL
3514 DDKAPI
3515 DrvStartBanding(
3516 /*IN*/ SURFOBJ *pso,
3517 /*IN*/ POINTL *pptl);
3519 BOOL
3520 DDKAPI
3521 DrvStartDoc(
3522 /*IN*/ SURFOBJ *pso,
3523 /*IN*/ LPWSTR pwszDocName,
3524 /*IN*/ DWORD dwJobId);
3526 BOOL
3527 DDKAPI
3528 DrvStartPage(
3529 /*IN*/ SURFOBJ *pso);
3531 BOOL
3532 DDKAPI
3533 DrvStretchBlt(
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);
3546 BOOL
3547 DDKAPI
3548 DrvStretchBltROP(
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);
3563 BOOL
3564 DDKAPI
3565 DrvStrokeAndFillPath(
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);
3577 BOOL
3578 DDKAPI
3579 DrvStrokePath(
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);
3589 BOOL
3590 DDKAPI
3591 DrvSwapBuffers(
3592 /*IN*/ SURFOBJ *pso,
3593 /*IN*/ WNDOBJ *pwo);
3595 VOID
3596 DDKAPI
3597 DrvSynchronize(
3598 /*IN*/ DHPDEV dhpdev,
3599 /*IN*/ RECTL *prcl);
3601 /* DrvSynchronizeSurface.fl constants */
3602 #define DSS_TIMER_EVENT 0x00000001
3603 #define DSS_FLUSH_EVENT 0x00000002
3605 VOID
3606 DDKAPI
3607 DrvSynchronizeSurface(
3608 /*IN*/ SURFOBJ *pso,
3609 /*IN*/ RECTL *prcl,
3610 /*IN*/ FLONG fl);
3612 BOOL
3613 DDKAPI
3614 DrvTextOut(
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);
3626 BOOL
3627 DDKAPI
3628 DrvTransparentBlt(
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);
3638 BOOL
3639 DDKAPI
3640 DrvUnloadFontFile(
3641 /*IN*/ ULONG_PTR iFile);
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
3654 typedef VOID DDKAPI
3655 (CALLBACK * WNDOBJCHANGEPROC)(
3656 WNDOBJ *pwo,
3657 FLONG fl);
3660 typedef 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);
3670 typedef BOOL DDKAPI
3671 (*PFN_DrvAssertMode)(
3672 /*IN*/ DHPDEV dhpdev,
3673 /*IN*/ BOOL bEnable);
3675 typedef 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);
3689 typedef VOID DDKAPI
3690 (*PFN_DrvCompletePDEV)(
3691 /*IN*/ DHPDEV dhpdev,
3692 /*IN*/ HDEV hdev);
3694 typedef 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);
3703 typedef HBITMAP DDKAPI
3704 (*PFN_DrvCreateDeviceBitmap)(
3705 /*IN*/ DHPDEV dhpdev,
3706 /*IN*/ SIZEL sizl,
3707 /*IN*/ ULONG iFormat);
3709 typedef VOID DDKAPI
3710 (*PFN_DrvDeleteDeviceBitmap)(
3711 /*IN*/ DHSURF dhsurf);
3713 typedef HBITMAP DDKAPI
3714 (*PFN_DrvDeriveSurface)(
3715 DD_DIRECTDRAW_GLOBAL *pDirectDraw,
3716 DD_SURFACE_LOCAL *pSurface);
3718 typedef LONG DDKAPI
3719 (*PFN_DrvDescribePixelFormat)(
3720 /*IN*/ DHPDEV dhpdev,
3721 /*IN*/ LONG iPixelFormat,
3722 /*IN*/ ULONG cjpfd,
3724 /*OUT*/ PIXELFORMATDESCRIPTOR *ppfd);
3726 typedef VOID DDKAPI
3727 (*PFN_DrvDestroyFont)(
3728 /*IN*/ FONTOBJ *pfo);
3730 typedef VOID DDKAPI
3731 (*PFN_DrvDisableDriver)(
3732 VOID);
3734 typedef VOID DDKAPI
3735 (*PFN_DrvDisablePDEV)(
3736 /*IN*/ DHPDEV dhpdev);
3738 typedef VOID DDKAPI
3739 (*PFN_DrvDisableSurface)(
3740 /*IN*/ DHPDEV dhpdev);
3742 typedef ULONG DDKAPI
3743 (*PFN_DrvDitherColor)(
3744 /*IN*/ DHPDEV dhpdev,
3745 /*IN*/ ULONG iMode,
3746 /*IN*/ ULONG rgb,
3748 /*OUT*/ ULONG *pul);
3750 typedef 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);
3759 typedef BOOL DDKAPI
3760 (*PFN_DrvEnableDriver)(
3761 /*IN*/ ULONG iEngineVersion,
3762 /*IN*/ ULONG cj,
3764 /*OUT*/ DRVENABLEDATA *pded);
3765 #if 0
3766 typedef DHPDEV DDKAPI
3767 (*PFN_DrvEnablePDEV)(
3768 /*IN*/ DEVMODEW *pdm,
3769 /*IN*/ LPWSTR pwszLogAddress,
3770 /*IN*/ ULONG cPat,
3772 /*OUT*/ HSURF *phsurfPatterns,
3773 /*IN*/ ULONG cjCaps,
3775 /*OUT*/ ULONG *pdevcaps,
3776 /*IN*/ ULONG cjDevInfo,
3778 /*OUT*/ DEVINFO *pdi,
3779 /*IN*/ HDEV hdev,
3780 /*IN*/ LPWSTR pwszDeviceName,
3781 /*IN*/ HANDLE hDriver);
3782 #endif
3783 typedef HSURF DDKAPI
3784 (*PFN_DrvEnableSurface)(
3785 /*IN*/ DHPDEV dhpdev);
3787 typedef BOOL DDKAPI
3788 (*PFN_DrvEndDoc)(
3789 /*IN*/ SURFOBJ *pso,
3790 /*IN*/ FLONG fl);
3792 typedef 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,
3800 /*OUT*/ PVOID pvOut);
3802 typedef 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);
3812 typedef 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,
3821 /*OUT*/ PVOID pvOut);
3823 typedef VOID DDKAPI
3824 (*PFN_DrvFree)(
3825 /*IN*/ PVOID pv,
3826 /*IN*/ ULONG_PTR id);
3828 typedef ULONG DDKAPI
3829 (*PFN_DrvGetGlyphMode)(
3830 /*IN*/ DHPDEV dhpdev,
3831 /*IN*/ FONTOBJ *pfo);
3833 typedef ULONG DDKAPI
3834 (*PFN_DrvGetModes)(
3835 /*IN*/ HANDLE hDriver,
3836 /*IN*/ ULONG cjSize,
3838 /*OUT*/ DEVMODEW *pdm);
3840 typedef PVOID DDKAPI
3841 (*PFN_DrvGetTrueTypeFile)(
3842 /*IN*/ ULONG_PTR iFile,
3843 /*IN*/ ULONG *pcj);
3845 typedef 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);
3858 typedef BOOL DDKAPI
3859 (*PFN_DrvIcmCheckBitmapBits)(
3860 /*IN*/ DHPDEV dhpdev,
3861 /*IN*/ HANDLE hColorTransform,
3862 /*IN*/ SURFOBJ *pso,
3864 /*OUT*/ PBYTE paResults);
3866 typedef 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);
3878 typedef BOOL DDKAPI
3879 (*PFN_DrvIcmDeleteColorTransform)(
3880 /*IN*/ DHPDEV dhpdev,
3881 /*IN*/ HANDLE hcmXform);
3883 typedef BOOL DDKAPI
3884 (*PFN_DrvIcmSetDeviceGammaRamp)(
3885 /*IN*/ DHPDEV dhpdev,
3886 /*IN*/ ULONG iFormat,
3887 /*IN*/ LPVOID lpRamp);
3889 typedef 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);
3901 typedef 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);
3911 typedef VOID DDKAPI
3912 (*PFN_DrvMovePointer)(
3913 /*IN*/ SURFOBJ *pso,
3914 /*IN*/ LONG x,
3915 /*IN*/ LONG y,
3916 /*IN*/ RECTL *prcl);
3918 typedef BOOL DDKAPI
3919 (*PFN_DrvNextBand)(
3920 /*IN*/ SURFOBJ *pso,
3921 /*IN*/ POINTL *pptl);
3923 typedef VOID DDKAPI
3924 (*PFN_DrvNotify)(
3925 /*IN*/ SURFOBJ *pso,
3926 /*IN*/ ULONG iType,
3927 /*IN*/ PVOID pvData);
3929 typedef BOOL DDKAPI
3930 (*PFN_DrvOffset)(
3931 /*IN*/ SURFOBJ *pso,
3932 /*IN*/ LONG x,
3933 /*IN*/ LONG y,
3934 /*IN*/ FLONG flReserved);
3936 typedef 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);
3944 typedef 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);
3958 typedef BOOL DDKAPI
3959 (*PFN_DrvQueryAdvanceWidths)(
3960 /*IN*/ DHPDEV dhpdev,
3961 /*IN*/ FONTOBJ *pfo,
3962 /*IN*/ ULONG iMode,
3963 /*IN*/ HGLYPH *phg,
3965 /*OUT*/ PVOID pvWidths,
3966 /*IN*/ ULONG cGlyphs);
3968 typedef 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);
3979 typedef BOOL DDKAPI
3980 (*PFN_DrvQueryDriverInfo)(
3981 DWORD dwMode,
3982 PVOID pBuffer,
3983 DWORD cbBuf,
3984 PDWORD pcbNeeded);
3986 typedef PIFIMETRICS DDKAPI
3987 (*PFN_DrvQueryFont)(
3988 /*IN*/ DHPDEV dhpdev,
3989 /*IN*/ ULONG_PTR iFile,
3990 /*IN*/ ULONG iFace,
3991 /*IN*/ ULONG_PTR *pid);
3993 typedef LONG DDKAPI
3994 (*PFN_DrvQueryFontCaps)(
3995 /*IN*/ ULONG culCaps,
3997 /*OUT*/ ULONG *pulCaps);
3999 typedef 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);
4009 typedef LONG DDKAPI
4010 (*PFN_DrvQueryFontFile)(
4011 /*IN*/ ULONG_PTR iFile,
4012 /*IN*/ ULONG ulMode,
4013 /*IN*/ ULONG cjBuf,
4014 /*IN*/ ULONG *pulBuf);
4016 typedef 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);
4024 typedef PFD_GLYPHATTR DDKAPI
4025 (*PFN_DrvQueryGlyphAttrs)(
4026 /*IN*/ FONTOBJ *pfo,
4027 /*IN*/ ULONG iMode);
4029 typedef ULONG DDKAPI
4030 (*PFN_DrvQueryPerBandInfo)(
4031 /*IN*/ SURFOBJ *pso,
4032 /*IN OUT*/ PERBANDINFO *pbi);
4034 typedef 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);
4044 typedef 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);
4055 typedef 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);
4064 typedef ULONG DDKAPI
4065 (*PFN_DrvResetDevice)(
4066 /*IN*/ DHPDEV dhpdev,
4067 /*IN*/ PVOID Reserved);
4069 typedef BOOL DDKAPI
4070 (*PFN_DrvResetPDEV)(
4071 DHPDEV dhpdevOld,
4072 DHPDEV dhpdevNew);
4074 typedef ULONG_PTR DDKAPI
4075 (*PFN_DrvSaveScreenBits)(
4076 /*IN*/ SURFOBJ *pso,
4077 /*IN*/ ULONG iMode,
4078 /*IN*/ ULONG_PTR ident,
4079 /*IN*/ RECTL *prcl);
4081 typedef BOOL DDKAPI
4082 (*PFN_DrvSendPage)(
4083 /*IN*/ SURFOBJ *pso);
4085 typedef 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);
4093 typedef BOOL DDKAPI
4094 (*PFN_DrvSetPixelFormat)(
4095 /*IN*/ SURFOBJ *pso,
4096 /*IN*/ LONG iPixelFormat,
4097 /*IN*/ HWND hwnd);
4099 typedef 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);
4112 typedef BOOL DDKAPI
4113 (*PFN_DrvStartBanding)(
4114 /*IN*/ SURFOBJ *pso,
4115 /*IN*/ POINTL *pptl);
4117 typedef BOOL DDKAPI
4118 (*PFN_DrvStartDoc)(
4119 /*IN*/ SURFOBJ *pso,
4120 /*IN*/ LPWSTR pwszDocName,
4121 /*IN*/ DWORD dwJobId);
4123 typedef BOOL DDKAPI
4124 (*PFN_DrvStartPage)(
4125 /*IN*/ SURFOBJ *pso);
4127 typedef 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);
4141 typedef 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);
4157 typedef 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);
4170 typedef 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);
4181 typedef BOOL DDKAPI
4182 (*PFN_DrvSwapBuffers)(
4183 /*IN*/ SURFOBJ *pso,
4184 /*IN*/ WNDOBJ *pwo);
4186 typedef VOID DDKAPI
4187 (*PFN_DrvSynchronize)(
4188 /*IN*/ DHPDEV dhpdev,
4189 /*IN*/ RECTL *prcl);
4191 typedef VOID DDKAPI
4192 (*PFN_DrvSynchronizeSurface)(
4193 /*IN*/ SURFOBJ *pso,
4194 /*IN*/ RECTL *prcl,
4195 /*IN*/ FLONG fl);
4197 typedef 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);
4210 typedef 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);
4221 typedef BOOL DDKAPI
4222 (*PFN_DrvUnloadFontFile)(
4223 /*IN*/ ULONG_PTR iFile);
4226 WIN32KAPI
4227 VOID
4228 DDKAPI
4229 DrvDisableDirectDraw(
4230 /*IN*/ DHPDEV dhpdev);
4232 WIN32KAPI
4233 BOOL
4234 DDKAPI
4235 DrvEnableDirectDraw(
4236 /*IN*/ DHPDEV dhpdev,
4237 /*OUT*/ DD_CALLBACKS *pCallBacks,
4238 /*OUT*/ DD_SURFACECALLBACKS *pSurfaceCallBacks,
4239 /*OUT*/ DD_PALETTECALLBACKS *pPaletteCallBacks);
4241 WIN32KAPI
4242 BOOL
4243 DDKAPI
4244 DrvGetDirectDrawInfo(
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);
4252 #ifdef __cplusplus
4254 #endif
4256 #endif /* defined __VIDEO_H */
4258 #endif /* __WINDDI_H */