|
|
1.1 ! root 1: /*++ BUILD Version: 0001 ! 2: ! 3: Copyright (c) 1985-91, Microsoft Corporation ! 4: ! 5: Module Name: ! 6: ! 7: winddi.h ! 8: ! 9: Abstract: ! 10: ! 11: Private entry points, defines and types for NTWIN DDI. ! 12: ! 13: --*/ ! 14: ! 15: #ifndef _WINDDI_ ! 16: #define _WINDDI_ ! 17: ! 18: ! 19: typedef ULONG FLONG; ! 20: typedef USHORT FSHORT; ! 21: typedef BYTE FBYTE; ! 22: typedef ptrdiff_t PTRDIFF; ! 23: typedef PTRDIFF *PPTRDIFF; ! 24: typedef size_t SIZE_T; ! 25: typedef int (*PFN)(); ! 26: typedef LONG FIX; ! 27: typedef FIX *PFIX; ! 28: typedef ULONG ROP4; ! 29: typedef ULONG MIX; ! 30: ! 31: typedef WCHAR *PWSZ; // pwsz, 0x0000 terminated UNICODE strings only ! 32: typedef CONST WCHAR *PCWSZ; // pwsz, 0x0000 terminated UNICODE strings only ! 33: ! 34: typedef ULONG HGLYPH; ! 35: typedef HGLYPH *PHGLYPH; ! 36: #define HGLYPH_INVALID ((HGLYPH)-1) ! 37: ! 38: typedef ULONG IDENT; ! 39: ! 40: ! 41: typedef struct _POINTE /* pte */ ! 42: { ! 43: FLOAT x; ! 44: FLOAT y; ! 45: } POINTE, *PPOINTE; ! 46: ! 47: typedef union _FLOAT_LONG ! 48: { ! 49: FLOAT e; ! 50: LONG l; ! 51: } FLOAT_LONG, *PFLOAT_LONG; ! 52: ! 53: typedef struct tagPOINTFIX ! 54: { ! 55: FIX x; ! 56: FIX y; ! 57: } POINTFIX, *PPOINTFIX; ! 58: ! 59: typedef struct tagRECTFX ! 60: { ! 61: FIX xLeft; ! 62: FIX yTop; ! 63: FIX xRight; ! 64: FIX yBottom; ! 65: } RECTFX, *PRECTFX; ! 66: ! 67: ! 68: DECLARE_HANDLE(HBM); ! 69: DECLARE_HANDLE(HSEM); ! 70: DECLARE_HANDLE(HDEV); ! 71: DECLARE_HANDLE(HPDEV); ! 72: DECLARE_HANDLE(HJNL); ! 73: DECLARE_HANDLE(HSURF); ! 74: DECLARE_HANDLE(DHSURF); ! 75: DECLARE_HANDLE(DHPDEV); ! 76: ! 77: typedef HSURF *PHSURF; ! 78: ! 79: ! 80: #define BLTOFXOK(x) (((x) < 0x07FFFFFF) && ((x) > -0x07FFFFFF)) ! 81: #define LTOFX(x) ((x)<<4) ! 82: ! 83: #define FXTOL(x) ((x)>>4) ! 84: #define FXTOLFLOOR(x) ((x)>>4) ! 85: #define FXTOLCEILING(x) ((x + 0x0F)>>4) ! 86: #define FXTOLROUND(x) ((((x) >> 3) + 1) >> 1) ! 87: ! 88: typedef struct _FD_DEVICEMETRICS { // devm ! 89: FLONG flRealizedType; ! 90: POINTE pteBase; ! 91: POINTE pteSide; ! 92: LONG lD; ! 93: FIX fxMaxAscender; ! 94: FIX fxMaxDescender; ! 95: POINTL ptlUnderline1; ! 96: POINTL ptlStrikeOut; ! 97: POINTL ptlULThickness; ! 98: POINTL ptlSOThickness; ! 99: ULONG cxMax; // max pel width of bitmaps ! 100: } FD_DEVICEMETRICS, *PFD_DEVICEMETRICS; ! 101: ! 102: typedef struct _LIGATURE { /* lig */ ! 103: ULONG culSize; ! 104: PWSZ pwsz; ! 105: ULONG chglyph; ! 106: HGLYPH ahglyph[1]; ! 107: } LIGATURE, *PLIGATURE; ! 108: ! 109: typedef struct _FD_LIGATURE { ! 110: ULONG culThis; ! 111: ULONG ulType; ! 112: ULONG cLigatures; ! 113: LIGATURE alig[1]; ! 114: } FD_LIGATURE; ! 115: ! 116: ! 117: // glyph handle must be 32 bit ! 118: ! 119: ! 120: // signed 16 bit integer type denoting number of FUnit's ! 121: ! 122: typedef SHORT FWORD; ! 123: ! 124: typedef LARGE_INTEGER QFIX; // qf ! 125: ! 126: // point in the 32.32 bit precission ! 127: ! 128: typedef struct _POINTQF // ptq ! 129: { ! 130: QFIX x; ! 131: QFIX y; ! 132: } POINTQF, *PPOINTQF; ! 133: ! 134: //. Structures ! 135: ! 136: ! 137: // devm.flRealizedType flags ! 138: ! 139: // FDM_TYPE_ZERO_BEARINGS // all glyphs have zero a and c spaces ! 140: ! 141: // the following two features refer to all glyphs in this font realization ! 142: ! 143: // FDM_TYPE_CHAR_INC_EQUAL_BM_BASE // base width == cx for horiz, == cy for vert. ! 144: // FDM_TYPE_MAXEXT_EQUAL_BM_SIDE // side width == cy for horiz, == cx for vert. ! 145: ! 146: #define FDM_TYPE_BM_SIDE_CONST 0x00000001 ! 147: #define FDM_TYPE_MAXEXT_EQUAL_BM_SIDE 0x00000002 ! 148: #define FDM_TYPE_CHAR_INC_EQUAL_BM_BASE 0x00000004 ! 149: #define FDM_TYPE_ZERO_BEARINGS 0x00000008 ! 150: #define FDM_TYPE_CONST_BEARINGS 0x00000010 ! 151: ! 152: ! 153: // structures for describing a supported set of glyphs in a font ! 154: ! 155: typedef struct _WCRUN { ! 156: WCHAR wcLow; // lowest character in run inclusive ! 157: USHORT cGlyphs; // wcHighInclusive = wcLow + cGlyphs - 1; ! 158: HGLYPH *phg; // pointer to an array of cGlyphs HGLYPH's ! 159: } WCRUN, *PWCRUN; ! 160: ! 161: // If phg is set to (HGLYPH *)NULL, for all wc's in this particular run ! 162: // the handle can be computed as simple zero extension: ! 163: // HGLYPH hg = (HGLYPH) wc; ! 164: // ! 165: // If phg is not NULL, memory pointed to by phg, allocated by the driver, ! 166: // WILL NOT MOVE. ! 167: ! 168: ! 169: typedef struct _FD_GLYPHSET { ! 170: ULONG cjThis; // size of this structure in butes ! 171: FLONG flAccel; // accel flags, bits to be explained below ! 172: ULONG cGlyphsSupported; // sum over all wcrun's of wcrun.cGlyphs ! 173: ULONG cRuns; ! 174: WCRUN awcrun[1]; // an array of cRun WCRUN structures ! 175: } FD_GLYPHSET, *PFD_GLYPHSET; ! 176: ! 177: ! 178: #define GS_UNICODE_HANDLES 0x00000001 ! 179: ! 180: // If this bit is set, for ALL WCRUNS in this FD_GLYPHSET the ! 181: // handles are ! 182: // obtained by zero extending unicode code points of ! 183: // the corresponding supported glyphs, i.e. all gs.phg's are NULL ! 184: ! 185: // ligatures ! 186: ! 187: ! 188: typedef struct _FD_KERNINGPAIR { ! 189: WCHAR wcFirst; ! 190: WCHAR wcSecond; ! 191: FWORD fwdKern; ! 192: } FD_KERNINGPAIR; ! 193: ! 194: // context information ! 195: ! 196: typedef struct _FD_XFORM { ! 197: FLOAT eXX; ! 198: FLOAT eXY; ! 199: FLOAT eYX; ! 200: FLOAT eYY; ! 201: } FD_XFORM, *PFD_XFORM; ! 202: ! 203: // An extra field passed to DrvQueryFontData with the DEVICEMETRICS. ! 204: ! 205: typedef struct _FD_REALIZEEXTRA ! 206: { ! 207: FD_XFORM fdxQuantized; ! 208: LONG lExtLeading; ! 209: LONG alReserved[4]; ! 210: } FD_REALIZEEXTRA; ! 211: ! 212: // ! 213: // IFIMETRICS constants ! 214: // ! 215: ! 216: #define FM_VERSION_NUMBER 0x0 ! 217: ! 218: // ! 219: // IFIMETRICS::fsType flags ! 220: // ! 221: #define FM_TYPE_LICENSED 0x1 ! 222: #define FM_READONLY_EMBED 0x2 ! 223: #define FM_NO_EMBEDDING FM_TYPE_LICENSED ! 224: ! 225: // ! 226: // IFIMETRICS::flInfo flags ! 227: // ! 228: #define FM_INFO_TECH_TRUETYPE 0x00000001 ! 229: #define FM_INFO_TECH_BITMAP 0x00000002 ! 230: #define FM_INFO_TECH_STROKE 0x00000004 ! 231: #define FM_INFO_TECH_OUTLINE_NOT_TRUETYPE 0x00000008 ! 232: #define FM_INFO_ARB_XFORMS 0x00000010 ! 233: #define FM_INFO_1BBP 0x00000020 ! 234: #define FM_INFO_4BBP 0x00000040 ! 235: #define FM_INFO_8BBP 0x00000080 ! 236: #define FM_INFO_16BBP 0x00000100 ! 237: #define FM_INFO_24BBP 0x00000200 ! 238: #define FM_INFO_32BBP 0x00000400 ! 239: #define FM_INFO_INTEGER_WIDTH 0x00000800 ! 240: #define FM_INFO_CONSTANT_WIDTH 0x00001000 ! 241: #define FM_INFO_NOT_CONTIGUOUS 0x00002000 ! 242: #define FM_INFO_PID_EMBEDDED 0x00004000 ! 243: #define FM_INFO_RETURNS_OUTLINES 0x00008000 ! 244: #define FM_INFO_RETURNS_STROKES 0x00010000 ! 245: #define FM_INFO_RETURNS_BITMAPS 0x00020000 ! 246: #define FM_INFO_UNICODE_COMPLIANT 0x00040000 ! 247: #define FM_INFO_RIGHT_HANDED 0x00080000 ! 248: #define FM_INFO_INTEGRAL_SCALING 0x00100000 ! 249: #define FM_INFO_90DEGREE_ROTATIONS 0x00200000 ! 250: #define FM_INFO_OPTICALLY_FIXED_PITCH 0x00400000 ! 251: #define FM_INFO_DO_NOT_ENUMERATE 0x00800000 ! 252: #define FM_INFO_ISOTROPIC_SCALING_ONLY 0x01000000 ! 253: #define FM_INFO_ANISOTROPIC_SCALING_ONLY 0x02000000 ! 254: #define FM_INFO_TID_EMBEDDED 0x04000000 ! 255: #define FM_INFO_FAMILY_EQUIV 0x08000000 ! 256: ! 257: ! 258: // ! 259: // Useful combinations of IFIMETRICS::flInfo flags ! 260: // ! 261: ! 262: #define FM_INFO_TECH_SET ( FM_INFO_TECH_TRUETYPE | \ ! 263: FM_INFO_TECH_BITMAP | \ ! 264: FM_INFO_TECH_STROKE | \ ! 265: FM_INFO_TECH_OUTLINE_NOT_TRUETYPE ) ! 266: ! 267: #define FM_INFO_ALL_TT_FLAGS ( FM_INFO_TECH_TRUETYPE | \ ! 268: FM_INFO_ARB_XFORMS | \ ! 269: FM_INFO_RETURNS_OUTLINES | \ ! 270: FM_INFO_RETURNS_BITMAPS | \ ! 271: FM_INFO_1BBP ) ! 272: ! 273: // ! 274: // IFIMETRICS::ulPanoseCulture ! 275: // ! 276: #define FM_PANOSE_CULTURE_LATIN 0x0 ! 277: ! 278: ! 279: // ! 280: // IFMETRICS::fsSelection flags ! 281: // ! 282: #define FM_SEL_ITALIC 0x0001 ! 283: #define FM_SEL_UNDERSCORE 0x0002 ! 284: #define FM_SEL_NEGATIVE 0x0004 ! 285: #define FM_SEL_OUTLINED 0x0008 ! 286: #define FM_SEL_STRIKEOUT 0x0010 ! 287: #define FM_SEL_BOLD 0x0020 ! 288: #define FM_SEL_REGULAR 0x0040 ! 289: ! 290: // ! 291: // The FONTDIFF structure contains all of the fields that could ! 292: // possibly change under simulation ! 293: // ! 294: typedef struct _FONTDIFF { ! 295: BYTE jReserved1; // 0x0 ! 296: BYTE jReserved2; // 0x1 ! 297: BYTE jReserved3; // 0x2 ! 298: BYTE bWeight; // 0x3 Panose Weight ! 299: USHORT usWinWeight; // 0x4 ! 300: FSHORT fsSelection; // 0x6 ! 301: FWORD fwdAveCharWidth; // 0x8 ! 302: FWORD fwdMaxCharInc; // 0xA ! 303: POINTL ptlCaret; // 0xC ! 304: } FONTDIFF; ! 305: ! 306: typedef struct _FONTSIM { ! 307: PTRDIFF dpBold; // offset from beginning of FONTSIM to FONTDIFF ! 308: PTRDIFF dpItalic; // offset from beginning of FONTSIM to FONTDIFF ! 309: PTRDIFF dpBoldItalic; // offset from beginning of FONTSIM to FONTDIFF ! 310: } FONTSIM; ! 311: ! 312: #define IFI_RESERVED 4 // number of reserved longs in IFIMETRICS ! 313: ! 314: // ! 315: // This entry in the reserved array is used to hold the PID or TID of the ! 316: // client that created an embeded true type font. Drivers should be careful ! 317: // not to use it. ! 318: // ! 319: ! 320: #define IFI_RESERVED_EMBED_ID 0 ! 321: ! 322: // ! 323: // This entry of the reserved array is used to return the italics angle. ! 324: // ! 325: ! 326: #define IFI_RESERVED_ITALIC_ANGLE 1 ! 327: ! 328: // ! 329: // This entry of the reserved array is used to return the character bias. ! 330: // ! 331: ! 332: #define IFI_RESERVED_CHARBIAS 2 ! 333: ! 334: typedef struct _IFIMETRICS { ! 335: ULONG cjThis; // includes attached information ! 336: ULONG ulVersion; ! 337: PTRDIFF dpwszFamilyName; ! 338: PTRDIFF dpwszStyleName; ! 339: PTRDIFF dpwszFaceName; ! 340: PTRDIFF dpwszUniqueName; ! 341: PTRDIFF dpFontSim; ! 342: LONG alReserved[IFI_RESERVED]; ! 343: BYTE jWinCharSet; // as in LOGFONT::lfCharSet ! 344: BYTE jWinPitchAndFamily; // as in LOGFONT::lfPitchAndFamily ! 345: USHORT usWinWeight; // as in LOGFONT::lfWeight ! 346: ULONG flInfo; // see above ! 347: USHORT fsSelection; // see above ! 348: USHORT fsType; // see above ! 349: FWORD fwdUnitsPerEm; // em height ! 350: FWORD fwdLowestPPEm; // readable limit ! 351: FWORD fwdWinAscender; ! 352: FWORD fwdWinDescender; ! 353: FWORD fwdMacAscender; ! 354: FWORD fwdMacDescender; ! 355: FWORD fwdMacLineGap; ! 356: FWORD fwdTypoAscender; ! 357: FWORD fwdTypoDescender; ! 358: FWORD fwdTypoLineGap; ! 359: FWORD fwdAveCharWidth; ! 360: FWORD fwdMaxCharInc; ! 361: FWORD fwdCapHeight; ! 362: FWORD fwdXHeight; ! 363: FWORD fwdSubscriptXSize; ! 364: FWORD fwdSubscriptYSize; ! 365: FWORD fwdSubscriptXOffset; ! 366: FWORD fwdSubscriptYOffset; ! 367: FWORD fwdSuperscriptXSize; ! 368: FWORD fwdSuperscriptYSize; ! 369: FWORD fwdSuperscriptXOffset; ! 370: FWORD fwdSuperscriptYOffset; ! 371: FWORD fwdUnderscoreSize; ! 372: FWORD fwdUnderscorePosition; ! 373: FWORD fwdStrikeoutSize; ! 374: FWORD fwdStrikeoutPosition; ! 375: BYTE chFirstChar; // for win 3.1 compatibility ! 376: BYTE chLastChar; // for win 3.1 compatibility ! 377: BYTE chDefaultChar; // for win 3.1 compatibility ! 378: BYTE chBreakChar; // for win 3.1 compatibility ! 379: WCHAR wcFirstChar; // lowest supported code in Unicode set ! 380: WCHAR wcLastChar; // highest supported code in Unicode set ! 381: WCHAR wcDefaultChar; ! 382: WCHAR wcBreakChar; ! 383: POINTL ptlBaseline; // ! 384: POINTL ptlAspect; // designed aspect ratio (bitmaps) ! 385: POINTL ptlCaret; // points along caret ! 386: RECTL rclFontBox; // bounding box for all glyphs (font space) ! 387: BYTE achVendId[4]; // as per TrueType ! 388: ULONG cKerningPairs; ! 389: ULONG ulPanoseCulture; ! 390: PANOSE panose; ! 391: } IFIMETRICS, *PIFIMETRICS; ! 392: ! 393: ! 394: ! 395: ! 396: /**************************************************************************\ ! 397: * ! 398: \**************************************************************************/ ! 399: ! 400: #define DDI_DRIVER_VERSION 0x00010000 ! 401: #define DDI_ERROR 0xFFFFFFFF ! 402: ! 403: typedef struct _DRVFN /* drvfn */ ! 404: { ! 405: ULONG iFunc; ! 406: PFN pfn; ! 407: } DRVFN, *PDRVFN; ! 408: ! 409: /* Required functions */ ! 410: ! 411: #define INDEX_DrvEnablePDEV 0L ! 412: #define INDEX_DrvCompletePDEV 1L ! 413: #define INDEX_DrvDisablePDEV 2L ! 414: #define INDEX_DrvEnableSurface 3L ! 415: #define INDEX_DrvDisableSurface 4L ! 416: ! 417: /* Other functions */ ! 418: ! 419: #define INDEX_DrvAssertMode 5L ! 420: #define INDEX_UNUSED4 6L ! 421: #define INDEX_UNUSED3 7L ! 422: #define INDEX_DrvRestartPDEV 8L ! 423: #define INDEX_DrvQueryResource 9L ! 424: #define INDEX_DrvCreateDeviceBitmap 10L ! 425: #define INDEX_DrvDeleteDeviceBitmap 11L ! 426: #define INDEX_DrvRealizeBrush 12L ! 427: #define INDEX_DrvDitherColor 13L ! 428: #define INDEX_DrvStrokePath 14L ! 429: #define INDEX_DrvFillPath 15L ! 430: #define INDEX_DrvStrokeAndFillPath 16L ! 431: #define INDEX_DrvPaint 17L ! 432: #define INDEX_DrvBitBlt 18L ! 433: #define INDEX_DrvCopyBits 19L ! 434: #define INDEX_DrvStretchBlt 20L ! 435: #define INDEX_DrvPlgBlt 21L ! 436: #define INDEX_DrvSetPalette 22L ! 437: #define INDEX_DrvTextOut 23L ! 438: #define INDEX_DrvEscape 24L ! 439: #define INDEX_DrvDrawEscape 25L ! 440: #define INDEX_DrvQueryFont 26L ! 441: #define INDEX_DrvQueryFontTree 27L ! 442: #define INDEX_DrvQueryFontData 28L ! 443: #define INDEX_DrvSetPointerShape 29L ! 444: #define INDEX_DrvMovePointer 30L ! 445: #define INDEX_DrvUNUSED2 31L ! 446: #define INDEX_DrvSendPage 32L ! 447: #define INDEX_DrvStartPage 33L ! 448: #define INDEX_DrvEndDoc 34L ! 449: #define INDEX_DrvStartDoc 35L ! 450: #define INDEX_DrvQueryObjectData 36L ! 451: #define INDEX_DrvGetGlyphMode 37L ! 452: #define INDEX_DrvSynchronize 38L ! 453: #define INDEX_DrvUNUSED1 39L ! 454: #define INDEX_DrvSaveScreenBits 40L ! 455: #define INDEX_DrvGetModes 41L ! 456: #define INDEX_DrvFree 42L ! 457: #define INDEX_DrvDestroyFont 43L ! 458: #define INDEX_DrvQueryFontCaps 44L ! 459: #define INDEX_DrvLoadFontFile 45L ! 460: #define INDEX_DrvUnloadFontFile 46L ! 461: #define INDEX_DrvFontManagement 47L ! 462: #define INDEX_DrvQueryTrueTypeTable 48L ! 463: #define INDEX_DrvQueryTrueTypeOutline 49L ! 464: #define INDEX_DrvGetTrueTypeFile 50L ! 465: #define INDEX_DrvQueryFontFile 51L ! 466: #define INDEX_UNUSED5 52L ! 467: #define INDEX_DrvQueryAdvanceWidths 53L ! 468: ! 469: /* The total number of dispatched functions */ ! 470: ! 471: #define INDEX_LAST 54L ! 472: ! 473: typedef struct tagDRVENABLEDATA ! 474: { ! 475: ULONG iDriverVersion; ! 476: ULONG c; ! 477: DRVFN *pdrvfn; ! 478: } DRVENABLEDATA, *PDRVENABLEDATA; ! 479: ! 480: typedef struct tagDEVINFO ! 481: { ! 482: FLONG flGraphicsCaps; ! 483: LOGFONTW lfDefaultFont; ! 484: LOGFONTW lfAnsiVarFont; ! 485: LOGFONTW lfAnsiFixFont; ! 486: ULONG cFonts; ! 487: ULONG iDitherFormat; ! 488: USHORT cxDither; ! 489: USHORT cyDither; ! 490: HPALETTE hpalDefault; ! 491: } DEVINFO, *PDEVINFO; ! 492: ! 493: #define GCAPS_BEZIERS 0x00000001 ! 494: #define GCAPS_GEOMETRICWIDE 0x00000002 ! 495: #define GCAPS_ALTERNATEFILL 0x00000004 ! 496: #define GCAPS_WINDINGFILL 0x00000008 ! 497: #define GCAPS_HALFTONE 0x00000010 ! 498: #define GCAPS_COLOR_DITHER 0x00000020 ! 499: #define GCAPS_HORIZSTRIKE 0x00000040 ! 500: #define GCAPS_VERTSTRIKE 0x00000080 ! 501: #define GCAPS_OPAQUERECT 0x00000100 ! 502: #define GCAPS_VECTORFONT 0x00000200 ! 503: #define GCAPS_MONO_DITHER 0x00000400 ! 504: #define GCAPS_ASYNCCHANGE 0x00000800 ! 505: #define GCAPS_ASYNCMOVE 0x00001000 ! 506: #define GCAPS_ARBRUSHOPAQUE 0x00008000 ! 507: #define GCAPS_HIGHRESTEXT 0x00040000 ! 508: #define GCAPS_PALMANAGED 0x00080000 ! 509: #define GCAPS_TRAPPAINT 0x00100000 ! 510: #define GCAPS_DITHERONREALIZE 0x00200000 ! 511: ! 512: typedef struct _HCINFO ! 513: { ! 514: CHAR szFormname[32]; ! 515: LONG cx; ! 516: LONG cy; ! 517: LONG xLeftClip; ! 518: LONG yBottomClip; ! 519: LONG xRightClip; ! 520: LONG yTopClip; ! 521: LONG xPels; ! 522: LONG yPels; ! 523: FLONG flAttributes; ! 524: } HCINFO, *PHCINFO; ! 525: ! 526: #define HCAPS_CURRENT 0x00000001 ! 527: ! 528: typedef struct _LINEATTRS ! 529: { ! 530: FLONG fl; ! 531: ULONG iJoin; ! 532: ULONG iEndCap; ! 533: FLOAT_LONG elWidth; ! 534: FLOAT eMiterLimit; ! 535: ULONG cstyle; ! 536: PFLOAT_LONG pstyle; ! 537: FLOAT_LONG elStyleState; ! 538: } LINEATTRS, *PLINEATTRS; ! 539: ! 540: #define LA_GEOMETRIC 0x00000001 ! 541: #define LA_ALTERNATE 0x00000002 ! 542: #define LA_STARTGAP 0x00000004 ! 543: ! 544: #define JOIN_ROUND 0L ! 545: #define JOIN_BEVEL 1L ! 546: #define JOIN_MITER 2L ! 547: ! 548: #define ENDCAP_ROUND 0L ! 549: #define ENDCAP_SQUARE 1L ! 550: #define ENDCAP_BUTT 2L ! 551: ! 552: typedef struct _TRAPEZOID ! 553: { ! 554: LONG iScanTop; ! 555: LONG iScanBottom; ! 556: POINTFIX ptfxLeftLo; ! 557: POINTFIX ptfxLeftHi; ! 558: POINTFIX ptfxRightLo; ! 559: POINTFIX ptfxRightHi; ! 560: } TRAPEZOID; ! 561: ! 562: ! 563: typedef LONG LDECI4; ! 564: ! 565: typedef struct _CIECHROMA ! 566: { ! 567: LDECI4 x; ! 568: LDECI4 y; ! 569: LDECI4 Y; ! 570: }CIECHROMA; ! 571: ! 572: typedef struct _COLORINFO ! 573: { ! 574: CIECHROMA Red; ! 575: CIECHROMA Green; ! 576: CIECHROMA Blue; ! 577: CIECHROMA Cyan; ! 578: CIECHROMA Magenta; ! 579: CIECHROMA Yellow; ! 580: CIECHROMA AlignmentWhite; ! 581: ! 582: LDECI4 RedGamma; ! 583: LDECI4 GreenGamma; ! 584: LDECI4 BlueGamma; ! 585: ! 586: LDECI4 MagentaInCyanDye; ! 587: LDECI4 YellowInCyanDye; ! 588: LDECI4 CyanInMagentaDye; ! 589: LDECI4 YellowInMagentaDye; ! 590: LDECI4 CyanInYellowDye; ! 591: LDECI4 MagentaInYellowDye; ! 592: }COLORINFO, *PCOLORINFO; ! 593: ! 594: // Allowed values for GDIINFO.ulPrimaryOrder. ! 595: ! 596: #define PRIMARY_ORDER_ABC 0 ! 597: #define PRIMARY_ORDER_ACB 1 ! 598: #define PRIMARY_ORDER_BAC 2 ! 599: #define PRIMARY_ORDER_BCA 3 ! 600: #define PRIMARY_ORDER_CBA 4 ! 601: #define PRIMARY_ORDER_CAB 5 ! 602: ! 603: // Allowed values for GDIINFO.ulHTPatternSize. ! 604: ! 605: #define HT_PATSIZE_2x2 0 ! 606: #define HT_PATSIZE_2x2_M 1 ! 607: #define HT_PATSIZE_4x4 2 ! 608: #define HT_PATSIZE_4x4_M 3 ! 609: #define HT_PATSIZE_6x6 4 ! 610: #define HT_PATSIZE_6x6_M 5 ! 611: #define HT_PATSIZE_8x8 6 ! 612: #define HT_PATSIZE_8x8_M 7 ! 613: #define HT_PATSIZE_10x10 8 ! 614: #define HT_PATSIZE_10x10_M 9 ! 615: #define HT_PATSIZE_12x12 10 ! 616: #define HT_PATSIZE_12x12_M 11 ! 617: #define HT_PATSIZE_14x14 12 ! 618: #define HT_PATSIZE_14x14_M 13 ! 619: #define HT_PATSIZE_16x16 14 ! 620: #define HT_PATSIZE_16x16_M 15 ! 621: #define HT_PATSIZE_MAX_INDEX HTPAT_SIZE_16x16_M ! 622: #define HT_PATSIZE_DEFAULT HTPAT_SIZE_4x4_M ! 623: ! 624: // Allowed values for ulHTOutputFormat. ! 625: ! 626: #define HT_FORMAT_1BPP 0 ! 627: #define HT_FORMAT_4BPP 2 ! 628: #define HT_FORMAT_4BPP_IRGB 3 ! 629: #define HT_FORMAT_8BPP 4 ! 630: #define HT_FORMAT_16BPP 5 ! 631: #define HT_FORMAT_24BPP 6 ! 632: #define HT_FORMAT_32BPP 7 ! 633: ! 634: // Allowed values for GDIINFO.flHTFlags. ! 635: ! 636: #define HT_FLAG_SQUARE_DEVICE_PEL 0x00000001 ! 637: #define HT_FLAG_HAS_BLACK_DYE 0x00000002 ! 638: #define HT_FLAG_ADDITIVE_PRIMS 0x00000004 ! 639: #define HT_FLAG_OUTPUT_CMY 0x00000100 ! 640: ! 641: typedef struct _GDIINFO ! 642: { ! 643: ULONG ulVersion; ! 644: ULONG ulTechnology; ! 645: ULONG ulHorzSize; ! 646: ULONG ulVertSize; ! 647: ULONG ulHorzRes; ! 648: ULONG ulVertRes; ! 649: ULONG cBitsPixel; ! 650: ULONG cPlanes; ! 651: ULONG ulNumColors; ! 652: ULONG flRaster; ! 653: ULONG ulLogPixelsX; ! 654: ULONG ulLogPixelsY; ! 655: ULONG flTextCaps; ! 656: ! 657: ULONG ulDACRed; ! 658: ULONG ulDACGreen; ! 659: ULONG ulDACBlue; ! 660: ! 661: ULONG ulAspectX; ! 662: ULONG ulAspectY; ! 663: ULONG ulAspectXY; ! 664: ! 665: LONG xStyleStep; ! 666: LONG yStyleStep; ! 667: LONG denStyleStep; ! 668: ! 669: POINTL ptlPhysOffset; ! 670: SIZEL szlPhysSize; ! 671: ! 672: ULONG ulNumPalReg; ! 673: ! 674: // These fields are for halftone initialization. ! 675: ! 676: COLORINFO ciDevice; ! 677: ULONG ulDevicePelsDPI; ! 678: ULONG ulPrimaryOrder; ! 679: ULONG ulHTPatternSize; ! 680: ULONG ulHTOutputFormat; ! 681: ULONG flHTFlags; ! 682: ! 683: } GDIINFO, *PGDIINFO; ! 684: ! 685: /* ! 686: * User objects ! 687: */ ! 688: ! 689: typedef struct _BRUSHOBJ ! 690: { ! 691: ULONG iSolidColor; ! 692: PVOID pvRbrush; ! 693: } BRUSHOBJ; ! 694: ! 695: typedef struct _CLIPOBJ ! 696: { ! 697: ULONG iUniq; ! 698: RECTL rclBounds; ! 699: BYTE iDComplexity; ! 700: BYTE iFComplexity; ! 701: BYTE iMode; ! 702: BYTE fjOptions; ! 703: } CLIPOBJ; ! 704: ! 705: typedef struct _DDAOBJ ! 706: { ! 707: ULONG ulReserved; ! 708: } DDAOBJ; ! 709: ! 710: typedef struct _FONTOBJ ! 711: { ! 712: ULONG iUniq; ! 713: ULONG iFace; ! 714: ULONG cxMax; ! 715: FLONG flFontType; ! 716: ULONG iTTUniq; ! 717: ULONG iFile; ! 718: SIZE sizLogResPpi; ! 719: ULONG ulStyleSize; ! 720: PVOID pvConsumer; ! 721: PVOID pvProducer; ! 722: } FONTOBJ; ! 723: ! 724: // ! 725: // FONTOBJ::flFontType ! 726: // ! 727: #define FO_TYPE_RASTER RASTER_FONTTYPE /* 0x1 */ ! 728: #define FO_TYPE_DEVICE DEVICE_FONTTYPE /* 0x2 */ ! 729: #define FO_TYPE_TRUETYPE TRUETYPE_FONTTYPE /* 0x4 */ ! 730: #define FO_SIM_BOLD 0x00002000 ! 731: #define FO_SIM_ITALIC 0x00004000 ! 732: #define FO_EM_HEIGHT 0x00008000 ! 733: #define FO_NO_HINTING 0x00010000 ! 734: ! 735: typedef struct _PALOBJ ! 736: { ! 737: ULONG ulReserved; ! 738: } PALOBJ; ! 739: ! 740: typedef struct _PATHOBJ ! 741: { ! 742: FLONG fl; ! 743: ULONG cCurves; ! 744: } PATHOBJ; ! 745: ! 746: typedef struct _SURFOBJ ! 747: { ! 748: DHSURF dhsurf; ! 749: HSURF hsurf; ! 750: DHPDEV dhpdev; ! 751: HDEV hdev; ! 752: SIZEL sizlBitmap; ! 753: ULONG cjBits; ! 754: PVOID pvBits; ! 755: PVOID pvScan0; ! 756: LONG lDelta; ! 757: ULONG iUniq; ! 758: ULONG iBitmapFormat; ! 759: USHORT iType; ! 760: USHORT fjBitmap; ! 761: } SURFOBJ; ! 762: ! 763: typedef struct _XFORMOBJ ! 764: { ! 765: ULONG ulReserved; ! 766: } XFORMOBJ; ! 767: ! 768: typedef struct _XLATEOBJ ! 769: { ! 770: ULONG iUniq; ! 771: FLONG flXlate; ! 772: USHORT iSrcType; ! 773: USHORT iDstType; ! 774: ULONG cEntries; ! 775: ULONG *pulXlate; ! 776: } XLATEOBJ; ! 777: ! 778: /* ! 779: * BRUSHOBJ callbacks ! 780: */ ! 781: ! 782: PVOID BRUSHOBJ_pvAllocRbrush( ! 783: BRUSHOBJ *pbo, ! 784: ULONG cj); ! 785: ! 786: PVOID BRUSHOBJ_pvGetRbrush(BRUSHOBJ *pbo); ! 787: ! 788: /* ! 789: * CLIPOBJ callbacks ! 790: */ ! 791: ! 792: #define DC_TRIVIAL 0 ! 793: #define DC_RECT 1 ! 794: #define DC_COMPLEX 3 ! 795: ! 796: #define FC_RECT 1 ! 797: #define FC_RECT4 2 ! 798: #define FC_COMPLEX 3 ! 799: ! 800: #define TC_RECTANGLES 0 ! 801: #define TC_TRAPEZOIDS 1 ! 802: #define TC_PATHOBJ 2 ! 803: ! 804: #define OC_BANK_CLIP 1 ! 805: ! 806: #define CT_RECTANGLES 0L ! 807: #define CT_TRAPEZOIDS 1L ! 808: #define CT_NOTIFYCHANGE 2L ! 809: ! 810: #define CD_RIGHTDOWN 0L ! 811: #define CD_LEFTDOWN 1L ! 812: #define CD_RIGHTUP 2L ! 813: #define CD_LEFTUP 3L ! 814: #define CD_ANY 4L ! 815: ! 816: #define CD_LEFTWARDS 1L ! 817: #define CD_UPWARDS 2L ! 818: ! 819: typedef struct _ENUMRECTS ! 820: { ! 821: ULONG c; ! 822: RECTL arcl[1]; ! 823: } ENUMRECTS; ! 824: ! 825: typedef struct _ENUMTRAPS ! 826: { ! 827: ULONG c; ! 828: TRAPEZOID atrap[1]; ! 829: } ENUMTRAPS; ! 830: ! 831: ULONG CLIPOBJ_cEnumStart( ! 832: CLIPOBJ *pco, ! 833: BOOL bAll, ! 834: ULONG iType, ! 835: ULONG iDirection, ! 836: ULONG cLimit); ! 837: ! 838: BOOL CLIPOBJ_bEnum( ! 839: CLIPOBJ *pco, ! 840: ULONG cj, ! 841: ULONG *pul); ! 842: ! 843: PATHOBJ *CLIPOBJ_ppoGetPath(CLIPOBJ* pco); ! 844: ! 845: /* ! 846: * DDAOBJ callbacks ! 847: */ ! 848: ! 849: #define JD_ENUM_LINE 0L ! 850: #define JD_ENUM_TRAPEZOID 1L ! 851: #define JD_ENUM_ELLIPSE 2L ! 852: ! 853: typedef struct _DDALIST ! 854: { ! 855: LONG yTop; ! 856: LONG yBottom; ! 857: LONG axPairs[2]; ! 858: } DDALIST; ! 859: ! 860: BOOL DDAOBJ_bEnum( ! 861: DDAOBJ *pdo, ! 862: PVOID pv, ! 863: ULONG cj, ! 864: DDALIST *pddal, ! 865: ULONG iType); ! 866: ! 867: /* ! 868: * FONTOBJ callbacks ! 869: */ ! 870: ! 871: typedef struct _GLYPHBITS ! 872: { ! 873: POINTL ptlOrigin; ! 874: SIZEL sizlBitmap; ! 875: BYTE aj[1]; ! 876: } GLYPHBITS; ! 877: ! 878: #define FO_HGLYPHS 0L ! 879: #define FO_GLYPHBITS 1L ! 880: #define FO_PATHOBJ 2L ! 881: ! 882: #define FD_NEGATIVE_FONT 1L ! 883: ! 884: #define FO_DEVICE_FONT 1L ! 885: #define FO_OUTLINE_CAPABLE 2L ! 886: ! 887: typedef union _GLYPHDEF ! 888: { ! 889: GLYPHBITS *pgb; ! 890: PATHOBJ *ppo; ! 891: } GLYPHDEF; ! 892: ! 893: typedef struct _GLYPHPOS /* gp */ ! 894: { ! 895: HGLYPH hg; ! 896: GLYPHDEF *pgdf; ! 897: POINTL ptl; ! 898: } GLYPHPOS,*PGLYPHPOS; ! 899: ! 900: ! 901: // individual glyph data ! 902: ! 903: // r is a unit vector along the baseline in device coordinates. ! 904: // s is a unit vector in the ascent direction in device coordinates. ! 905: // A, B, and C, are simple tranforms of the notional space versions into ! 906: // (28.4) device coordinates. The dot products of those vectors with r ! 907: // are recorded here. Note that the high words of ptqD are also 28.4 ! 908: // device coordinates. The low words provide extra accuracy. ! 909: ! 910: typedef struct _GLYPHDATA { ! 911: GLYPHDEF gdf; // pointer to GLYPHBITS or to PATHOBJ ! 912: HGLYPH hg; // glyhp handle ! 913: POINTQF ptqD; // Character increment vector: D=A+B+C. ! 914: FIX fxD; // Character increment amount: D*r. ! 915: FIX fxA; // Prebearing amount: A*r. ! 916: FIX fxAB; // Advancing edge of character: (A+B)*r. ! 917: FIX fxInkTop; // Baseline to inkbox top along s. ! 918: FIX fxInkBottom; // Baseline to inkbox bottom along s. ! 919: RECTL rclInk; // Ink box with sides parallel to x,y axes ! 920: } GLYPHDATA; ! 921: ! 922: ! 923: // flAccel flags for STROBJ ! 924: ! 925: // SO_FLAG_DEFAULT_PLACEMENT // defult inc vectors used to position chars ! 926: // SO_HORIZONTAL // "left to right" or "right to left" ! 927: // SO_VERTICAL // "top to bottom" or "bottom to top" ! 928: // SO_REVERSED // set if horiz & "right to left" or if vert & "bottom to top" ! 929: // SO_ZERO_BEARINGS // all glyphs have zero a and c spaces ! 930: // SO_CHAR_INC_EQUAL_BM_BASE // base == cx for horiz, == cy for vert. ! 931: // SO_MAXEXT_EQUAL_BM_SIDE // side == cy for horiz, == cx for vert. ! 932: ! 933: #define SO_FLAG_DEFAULT_PLACEMENT 0x00000001 ! 934: #define SO_HORIZONTAL 0x00000002 ! 935: #define SO_VERTICAL 0x00000004 ! 936: #define SO_REVERSED 0x00000008 ! 937: #define SO_ZERO_BEARINGS 0x00000010 ! 938: #define SO_CHAR_INC_EQUAL_BM_BASE 0x00000020 ! 939: #define SO_MAXEXT_EQUAL_BM_SIDE 0x00000040 ! 940: ! 941: typedef struct _STROBJ ! 942: { ! 943: ULONG cGlyphs; // # of glyphs to render ! 944: FLONG flAccel; ! 945: ULONG ulCharInc; // zero if fixed pitch font, else equal to increment ! 946: RECTL rclBkGround; // bk ground rect of the string in device coords ! 947: GLYPHPOS *pgp; // If non-NULL then has all glyphs. ! 948: PWSTR pwszOrg; // pointer to original unicode string. ! 949: } STROBJ; ! 950: ! 951: typedef struct _FONTINFO /* fi */ ! 952: { ! 953: ULONG cjThis; ! 954: FLONG flCaps; ! 955: ULONG cGlyphsSupported; ! 956: ULONG cjMaxGlyph1; ! 957: ULONG cjMaxGlyph4; ! 958: ULONG cjMaxGlyph8; ! 959: ULONG cjMaxGlyph32; ! 960: } FONTINFO, *PFONTINFO; ! 961: ! 962: ULONG FONTOBJ_cGetAllGlyphHandles( ! 963: FONTOBJ *pfo, ! 964: HGLYPH *phg); ! 965: ! 966: VOID FONTOBJ_vGetInfo( ! 967: FONTOBJ *pfo, ! 968: ULONG cjSize, ! 969: FONTINFO *pfi); ! 970: ! 971: ULONG FONTOBJ_cGetGlyphs( ! 972: FONTOBJ *pfo, ! 973: ULONG iMode, ! 974: ULONG cGlyph, ! 975: HGLYPH *phg, ! 976: PVOID *ppvGlyph); ! 977: ! 978: XFORMOBJ *FONTOBJ_pxoGetXform(FONTOBJ *pfo); ! 979: IFIMETRICS* FONTOBJ_pifi(FONTOBJ *pfo); ! 980: ! 981: // possible values that iMode can take: ! 982: ! 983: /* ! 984: * PALOBJ callbacks ! 985: */ ! 986: ! 987: #define PAL_INDEXED 0x00000001 ! 988: #define PAL_BITFIELDS 0x00000002 ! 989: #define PAL_RGB 0x00000004 ! 990: #define PAL_BGR 0x00000008 ! 991: #define PAL_DC 0x00000010 ! 992: #define PAL_FIXED 0x00000020 ! 993: #define PAL_FREE 0x00000040 ! 994: #define PAL_MANAGED 0x00000080 ! 995: #define PAL_NOSTATIC 0x00000100 ! 996: #define PAL_MONOCHROME 0x00000200 ! 997: ! 998: ULONG PALOBJ_cGetColors( ! 999: PALOBJ *ppalo, ! 1000: ULONG iStart, ! 1001: ULONG cColors, ! 1002: ULONG *pulColors); ! 1003: ! 1004: PVOID FONTOBJ_pvTrueTypeFontFile( ! 1005: FONTOBJ *pfo, ! 1006: ULONG *pcjFile); ! 1007: ! 1008: /* ! 1009: * PATHOBJ callbacks ! 1010: */ ! 1011: ! 1012: #define PO_BEZIERS 0x00000001 ! 1013: #define PO_ELLIPSE 0x00000002 ! 1014: ! 1015: #define PD_BEGINSUBPATH 0x00000001 ! 1016: #define PD_ENDSUBPATH 0x00000002 ! 1017: #define PD_RESETSTYLE 0x00000004 ! 1018: #define PD_CLOSEFIGURE 0x00000008 ! 1019: #define PD_BEZIERS 0x00000010 ! 1020: #define PD_ALL (PD_BEGINSUBPATH | \ ! 1021: PD_ENDSUBPATH | \ ! 1022: PD_RESETSTYLE | \ ! 1023: PD_CLOSEFIGURE | \ ! 1024: PD_BEZIERS) ! 1025: ! 1026: typedef struct _PATHDATA ! 1027: { ! 1028: FLONG flags; ! 1029: ULONG count; ! 1030: POINTFIX *pptfx; ! 1031: } PATHDATA, *PPATHDATA; ! 1032: ! 1033: typedef struct _RUN ! 1034: { ! 1035: LONG iStart; ! 1036: LONG iStop; ! 1037: } RUN, *PRUN; ! 1038: ! 1039: typedef struct _CLIPLINE ! 1040: { ! 1041: POINTFIX ptfxA; ! 1042: POINTFIX ptfxB; ! 1043: LONG lStyleState; ! 1044: ULONG c; ! 1045: RUN arun[1]; ! 1046: } CLIPLINE, *PCLIPLINE; ! 1047: ! 1048: VOID PATHOBJ_vEnumStart(PATHOBJ *ppo); ! 1049: ! 1050: BOOL PATHOBJ_bEnum( ! 1051: PATHOBJ *ppo, ! 1052: PATHDATA *ppd); ! 1053: ! 1054: VOID PATHOBJ_vEnumStartClipLines( ! 1055: PATHOBJ *ppo, ! 1056: CLIPOBJ *pco, ! 1057: SURFOBJ *pso, ! 1058: LINEATTRS *pla); ! 1059: ! 1060: BOOL PATHOBJ_bEnumClipLines( ! 1061: PATHOBJ *ppo, ! 1062: ULONG cb, ! 1063: CLIPLINE *pcl); ! 1064: ! 1065: BOOL PATHOBJ_bMoveTo( ! 1066: PATHOBJ *ppo, ! 1067: POINTFIX ptfx); ! 1068: ! 1069: BOOL PATHOBJ_bPolyLineTo( ! 1070: PATHOBJ *ppo, ! 1071: POINTFIX *pptfx, ! 1072: ULONG cptfx); ! 1073: ! 1074: BOOL PATHOBJ_bPolyBezierTo( ! 1075: PATHOBJ *ppo, ! 1076: POINTFIX *pptfx, ! 1077: ULONG cptfx); ! 1078: ! 1079: BOOL PATHOBJ_bCloseFigure(PATHOBJ *ppo); ! 1080: ! 1081: VOID PATHOBJ_vGetBounds( ! 1082: PATHOBJ *ppo, ! 1083: PRECTFX prectfx); ! 1084: ! 1085: /* ! 1086: * STROBJ callbacks ! 1087: */ ! 1088: ! 1089: #define SO_GLYPHHANDLES 0L ! 1090: #define SO_MONOBITMAP 1L ! 1091: #define SO_PATHOBJ 2L ! 1092: ! 1093: VOID STROBJ_vEnumStart( ! 1094: STROBJ *pstro); ! 1095: ! 1096: BOOL STROBJ_bEnum( ! 1097: STROBJ *pstro, ! 1098: ULONG *pgpos, ! 1099: PGLYPHPOS *ppgpos); ! 1100: ! 1101: #define SGI_EXTRASPACE 0 ! 1102: ! 1103: /* ! 1104: * SURFOBJ callbacks ! 1105: */ ! 1106: ! 1107: #define STYPE_BITMAP 0L ! 1108: #define STYPE_DEVICE 1L ! 1109: #define STYPE_JOURNAL 2L ! 1110: #define STYPE_DEVBITMAP 3L ! 1111: ! 1112: #define BMF_DEVICE 0L ! 1113: #define BMF_1BPP 1L ! 1114: #define BMF_4BPP 2L ! 1115: #define BMF_8BPP 3L ! 1116: #define BMF_16BPP 4L ! 1117: #define BMF_24BPP 5L ! 1118: #define BMF_32BPP 6L ! 1119: #define BMF_4RLE 7L ! 1120: #define BMF_8RLE 8L ! 1121: ! 1122: #define BMF_TOPDOWN 0x0001 ! 1123: ! 1124: /* ! 1125: * XFORMOBJ callbacks ! 1126: */ ! 1127: ! 1128: #define GX_IDENTITY 0L ! 1129: #define GX_OFFSET 1L ! 1130: #define GX_SCALE 2L ! 1131: #define GX_GENERAL 3L ! 1132: ! 1133: #define XF_LTOL 0L ! 1134: #define XF_INV_LTOL 1L ! 1135: #define XF_LTOFX 2L ! 1136: #define XF_INV_FXTOL 3L ! 1137: ! 1138: ULONG XFORMOBJ_iGetXform( ! 1139: XFORMOBJ *pxo, ! 1140: XFORM *pxform); ! 1141: ! 1142: BOOL XFORMOBJ_bApplyXform( ! 1143: XFORMOBJ *pxo, ! 1144: ULONG iMode, ! 1145: ULONG cPoints, ! 1146: PVOID pvIn, ! 1147: PVOID pvOut); ! 1148: ! 1149: /* ! 1150: * XLATEOBJ callbacks ! 1151: */ ! 1152: ! 1153: #define XO_TRIVIAL 0x00000001 ! 1154: #define XO_TABLE 0x00000002 ! 1155: #define XO_TO_MONO 0x00000004 ! 1156: #define XO_FROM_MONO 0x00000008 ! 1157: #define XO_RGB_SRC 0x00000010 ! 1158: #define XO_RGB_BOTH 0x00000020 ! 1159: #define XO_PAL_MANAGED 0x00000040 ! 1160: ! 1161: #define XO_SRCPALETTE 1 ! 1162: #define XO_DESTPALETTE 2 ! 1163: #define XO_DESTDCPALETTE 3 ! 1164: ! 1165: ULONG XLATEOBJ_iXlate(XLATEOBJ *pxlo, ULONG iColor); ! 1166: ULONG *XLATEOBJ_piVector(XLATEOBJ *pxlo); ! 1167: ULONG XLATEOBJ_cGetPalette( ! 1168: XLATEOBJ *pxlo, ! 1169: ULONG iPal, ! 1170: ULONG cPal, ! 1171: ULONG *pPal); ! 1172: ! 1173: /* ! 1174: * Engine callbacks - error logging ! 1175: */ ! 1176: ! 1177: VOID EngSetLastError(ULONG); ! 1178: ! 1179: /* ! 1180: * Engine callbacks - Surfaces ! 1181: */ ! 1182: ! 1183: #define HOOK_BITBLT 0x00000001 ! 1184: #define HOOK_STRETCHBLT 0x00000002 ! 1185: #define HOOK_PLGBLT 0x00000004 ! 1186: #define HOOK_TEXTOUT 0x00000008 ! 1187: #define HOOK_PAINT 0x00000010 ! 1188: #define HOOK_STROKEPATH 0x00000020 ! 1189: #define HOOK_FILLPATH 0x00000040 ! 1190: #define HOOK_STROKEANDFILLPATH 0x00000080 ! 1191: #define HOOK_COPYBITS 0x00000400 ! 1192: #define HOOK_SYNCHRONIZE 0x00001000 ! 1193: #define HOOK_CONSOLETEXTOUT 0x00002000 ! 1194: ! 1195: HSURF EngCreateSurface(DHSURF dhsurf, SIZEL sizl); ! 1196: ! 1197: HBITMAP EngCreateBitmap( ! 1198: SIZEL sizl, ! 1199: ULONG ulWidth, ! 1200: ULONG iFormat, ! 1201: FLONG fl, ! 1202: PVOID pvBits); ! 1203: ! 1204: HSURF EngCreateDeviceSurface(DHSURF dhsurf, SIZEL sizl, ULONG iFormatCompat); ! 1205: HBITMAP EngCreateDeviceBitmap(DHSURF dhsurf, SIZEL sizl, ULONG iFormatCompat); ! 1206: ! 1207: HBITMAP EngCreateEngineBitmap( ! 1208: DHSURF dhsurf, ! 1209: SIZEL sizl, ! 1210: LONG lDelta, ! 1211: ULONG iFormat, ! 1212: FLONG fl, ! 1213: PVOID pvBits); ! 1214: ! 1215: BOOL EngDeleteSurface(HSURF hsurf); ! 1216: SURFOBJ *EngLockSurface(HSURF hsurf); ! 1217: VOID EngUnlockSurface(SURFOBJ *pso); ! 1218: ! 1219: BOOL EngEraseSurface( ! 1220: SURFOBJ *pso, ! 1221: RECTL *prcl, ! 1222: ULONG iColor); ! 1223: ! 1224: BOOL EngAssociateSurface( ! 1225: HSURF hsurf, ! 1226: HDEV hdev, ! 1227: FLONG flHooks); ! 1228: ! 1229: BOOL EngPlayJournal( ! 1230: SURFOBJ *psoTarget, ! 1231: SURFOBJ *psoJournal, ! 1232: RECTL *prclBand); ! 1233: ! 1234: BOOL EngStartBandPage(SURFOBJ *pso); ! 1235: ! 1236: HSURF EngCreateJournal(SIZEL sizl, ULONG iFormat); ! 1237: ! 1238: BOOL EngCheckAbort(SURFOBJ *pso); ! 1239: ! 1240: /* ! 1241: * Engine callbacks - Paths ! 1242: */ ! 1243: ! 1244: PATHOBJ *EngCreatePath(); ! 1245: VOID EngDeletePath(PATHOBJ *ppo); ! 1246: ! 1247: /* ! 1248: * Engine callbacks - Palettes ! 1249: */ ! 1250: ! 1251: HPALETTE EngCreatePalette( ! 1252: ULONG iMode, ! 1253: ULONG cColors, ! 1254: ULONG *pulColors, ! 1255: FLONG flRed, ! 1256: FLONG flGreen, ! 1257: FLONG flBlue); ! 1258: ! 1259: BOOL EngDeletePalette(HPALETTE hpal); ! 1260: ! 1261: /* ! 1262: * Engine callbacks - Clipping ! 1263: */ ! 1264: ! 1265: CLIPOBJ *EngCreateClip(); ! 1266: VOID EngDeleteClip(CLIPOBJ *pco); ! 1267: ! 1268: /* ! 1269: * Engine callbacks - DDAs ! 1270: */ ! 1271: ! 1272: DDAOBJ *EngCreateDDA(); ! 1273: VOID EngDeleteDDA(DDAOBJ *pdo); ! 1274: ! 1275: /* ! 1276: * Function prototypes ! 1277: */ ! 1278: ! 1279: // These are the only EXPORTED functions for ANY driver ! 1280: ! 1281: BOOL DrvEnableDriver( ! 1282: ULONG iEngineVersion, ! 1283: ULONG cj, ! 1284: DRVENABLEDATA *pded); ! 1285: ! 1286: VOID DrvDisableDriver(); ! 1287: ! 1288: /* ! 1289: * Driver functions ! 1290: */ ! 1291: ! 1292: DHPDEV DrvEnablePDEV( ! 1293: DEVMODEW *pdm, ! 1294: PWSTR pwszLogAddress, ! 1295: ULONG cPat, ! 1296: HSURF *phsurfPatterns, ! 1297: ULONG cjCaps, ! 1298: ULONG *pdevcaps, ! 1299: ULONG cjDevInfo, ! 1300: DEVINFO *pdi, ! 1301: PWSTR pwszDataFile, ! 1302: PWSTR pwszDeviceName, ! 1303: HANDLE hDriver); ! 1304: ! 1305: #define HS_DDI_MAX 19 ! 1306: ! 1307: BOOL DrvRestartPDEV( ! 1308: DHPDEV dhpdev, ! 1309: DEVMODEW *pdm, ! 1310: ULONG cPat, ! 1311: HSURF *phsurfPatterns, ! 1312: ULONG cjCaps, ! 1313: ULONG *pdevcaps, ! 1314: ULONG cjDevInfo, ! 1315: DEVINFO *pdi); ! 1316: ! 1317: VOID DrvCompletePDEV(DHPDEV dhpdev,HDEV hdev); ! 1318: ! 1319: HSURF DrvEnableSurface(DHPDEV dhpdev); ! 1320: VOID DrvSynchronize(DHPDEV dhpdev,RECTL *prcl); ! 1321: VOID DrvDisableSurface(DHPDEV dhpdev); ! 1322: VOID DrvDisablePDEV(DHPDEV dhpdev); ! 1323: ! 1324: /* DrvSaveScreenBits - iMode definitions */ ! 1325: ! 1326: #define SS_SAVE 0 ! 1327: #define SS_RESTORE 1 ! 1328: #define SS_FREE 2 ! 1329: ! 1330: ULONG DrvSaveScreenBits(SURFOBJ *pso,ULONG iMode,ULONG ident,RECTL *prcl); ! 1331: ! 1332: /* ! 1333: * Desktops ! 1334: */ ! 1335: ! 1336: VOID DrvAssertMode( ! 1337: DHPDEV dhpdev, ! 1338: BOOL bEnable); ! 1339: ! 1340: ULONG DrvGetModes( ! 1341: HANDLE hDriver, ! 1342: ULONG cjSize, ! 1343: DEVMODEW *pdm); ! 1344: ! 1345: /* ! 1346: * Driver Info ! 1347: */ ! 1348: ! 1349: /* ! 1350: * Bitmaps ! 1351: */ ! 1352: ! 1353: HBITMAP DrvCreateDeviceBitmap ( ! 1354: DHPDEV dhpdev, ! 1355: SIZEL sizl, ! 1356: ULONG iFormat); ! 1357: ! 1358: VOID DrvDeleteDeviceBitmap(DHSURF dhsurf); ! 1359: ! 1360: /* ! 1361: * Palettes ! 1362: */ ! 1363: ! 1364: BOOL DrvSetPalette( ! 1365: DHPDEV dhpdev, ! 1366: PALOBJ *ppalo, ! 1367: FLONG fl, ! 1368: ULONG iStart, ! 1369: ULONG cColors); ! 1370: ! 1371: /* ! 1372: * Brushes ! 1373: */ ! 1374: ! 1375: #define DM_DEFAULT 0x00000001 ! 1376: #define DM_MONOCHROME 0x00000002 ! 1377: ! 1378: BOOL EngHalftoneColor( ! 1379: DHPDEV dhpdev, ! 1380: ULONG iMode, ! 1381: ULONG rgb, ! 1382: ULONG *pul); ! 1383: ! 1384: #define DCR_SOLID 0 ! 1385: #define DCR_DRIVER 1 ! 1386: #define DCR_HALFTONE 2 ! 1387: ! 1388: ULONG DrvDitherColor( ! 1389: DHPDEV dhpdev, ! 1390: ULONG iMode, ! 1391: ULONG rgb, ! 1392: ULONG *pul); ! 1393: ! 1394: BOOL DrvRealizeBrush( ! 1395: BRUSHOBJ *pbo, ! 1396: SURFOBJ *psoTarget, ! 1397: SURFOBJ *psoPattern, ! 1398: SURFOBJ *psoMask, ! 1399: XLATEOBJ *pxlo, ! 1400: ULONG iHatch); ! 1401: ! 1402: #define RB_DITHERCOLOR 0x80000000L ! 1403: ! 1404: ! 1405: /* ! 1406: * Fonts ! 1407: */ ! 1408: ! 1409: PIFIMETRICS DrvQueryFont( ! 1410: DHPDEV dhpdev, ! 1411: ULONG iFile, ! 1412: ULONG iFace, ! 1413: ULONG *pid); ! 1414: ! 1415: // #define QFT_UNICODE 0L ! 1416: #define QFT_LIGATURES 1L ! 1417: #define QFT_KERNPAIRS 2L ! 1418: #define QFT_GLYPHSET 3L ! 1419: ! 1420: PVOID DrvQueryFontTree( ! 1421: DHPDEV dhpdev, ! 1422: ULONG iFile, ! 1423: ULONG iFace, ! 1424: ULONG iMode, ! 1425: ULONG *pid); ! 1426: ! 1427: #define QFD_GLYPHANDBITMAP 1L ! 1428: #define QFD_GLYPHANDOUTLINE 2L ! 1429: #define QFD_MAXEXTENTS 3L ! 1430: #define QFD_MAXGLYPHBITMAP 4L ! 1431: ! 1432: LONG DrvQueryFontData( ! 1433: DHPDEV dhpdev, ! 1434: FONTOBJ *pfo, ! 1435: ULONG iMode, ! 1436: HGLYPH hg, ! 1437: GLYPHDATA *pgd, ! 1438: PVOID pv, ! 1439: ULONG cjSize); ! 1440: ! 1441: VOID DrvFree( ! 1442: PVOID pv, ! 1443: ULONG id); ! 1444: ! 1445: VOID DrvDestroyFont( ! 1446: FONTOBJ *pfo); ! 1447: ! 1448: // Capability flags for DrvQueryCaps. ! 1449: #define QC_OUTLINES 0x00000001 ! 1450: #define QC_1BIT 0x00000002 ! 1451: #define QC_4BIT 0x00000004 ! 1452: #define QC_8BIT 0x00000008 ! 1453: #define QC_16BIT 0x00000010 ! 1454: #define QC_24BIT 0x00000020 ! 1455: #define QC_32BIT 0x00000040 ! 1456: ! 1457: LONG DrvQueryFontCaps( ! 1458: ULONG culCaps, ! 1459: ULONG *pulCaps); ! 1460: ! 1461: ULONG DrvLoadFontFile( ! 1462: PWSTR pwszFontFile, ! 1463: PWSTR pwszScratchDir, ! 1464: ULONG ulLangID); ! 1465: ! 1466: BOOL DrvUnloadFontFile( ! 1467: ULONG iFile); ! 1468: ! 1469: LONG DrvQueryTrueTypeTable( ! 1470: ULONG iFile, ! 1471: ULONG ulFont, ! 1472: ULONG ulTag, ! 1473: PTRDIFF dpStart, ! 1474: ULONG cjBuf, ! 1475: BYTE *pjBuf); ! 1476: ! 1477: BOOL DrvQueryAdvanceWidths( ! 1478: DHPDEV dhpdev, ! 1479: FONTOBJ *pfo, ! 1480: ULONG iMode, ! 1481: HGLYPH *phg, ! 1482: PVOID pvWidths, ! 1483: ULONG cGlyphs); ! 1484: ! 1485: // Values for iMode ! 1486: ! 1487: #define QAW_GETWIDTHS 0 ! 1488: #define QAW_GETEASYWIDTHS 1 ! 1489: ! 1490: LONG DrvQueryTrueTypeOutline( ! 1491: DHPDEV dhpdev, ! 1492: FONTOBJ *pfo, ! 1493: HGLYPH hglyph, ! 1494: BOOL bMetricsOnly, ! 1495: GLYPHDATA *pgldt, ! 1496: ULONG cjBuf, ! 1497: TTPOLYGONHEADER *ppoly); ! 1498: ! 1499: PVOID DrvGetTrueTypeFile ( ! 1500: ULONG iFile, ! 1501: ULONG *pcj); ! 1502: ! 1503: // values for ulMode: ! 1504: ! 1505: #define QFF_DESCRIPTION 1L ! 1506: #define QFF_NUMFACES 2L ! 1507: ! 1508: LONG DrvQueryFontFile( ! 1509: ULONG iFile, ! 1510: ULONG ulMode, ! 1511: ULONG cjBuf, ! 1512: ULONG *pulBuf); ! 1513: ! 1514: /* ! 1515: * BitBlt ! 1516: */ ! 1517: ! 1518: BOOL DrvBitBlt( ! 1519: SURFOBJ *psoTrg, ! 1520: SURFOBJ *psoSrc, ! 1521: SURFOBJ *psoMask, ! 1522: CLIPOBJ *pco, ! 1523: XLATEOBJ *pxlo, ! 1524: RECTL *prclTrg, ! 1525: POINTL *pptlSrc, ! 1526: POINTL *pptlMask, ! 1527: BRUSHOBJ *pbo, ! 1528: POINTL *pptlBrush, ! 1529: ROP4 rop4); ! 1530: ! 1531: BOOL DrvStretchBlt( ! 1532: SURFOBJ *psoDest, ! 1533: SURFOBJ *psoSrc, ! 1534: SURFOBJ *psoMask, ! 1535: CLIPOBJ *pco, ! 1536: XLATEOBJ *pxlo, ! 1537: COLORADJUSTMENT *pca, ! 1538: POINTL *pptlHTOrg, ! 1539: RECTL *prclDest, ! 1540: RECTL *prclSrc, ! 1541: POINTL *pptlMask, ! 1542: ULONG iMode); ! 1543: ! 1544: BOOL DrvPlgBlt( ! 1545: SURFOBJ *psoDest, ! 1546: SURFOBJ *psoSrc, ! 1547: SURFOBJ *psoMask, ! 1548: CLIPOBJ *pco, ! 1549: XLATEOBJ *pxlo, ! 1550: COLORADJUSTMENT *pca, ! 1551: POINTL *pptlHTOrg, ! 1552: POINTFIX *pptfxDest, ! 1553: RECTL *prclSrc, ! 1554: POINTL *pptlMask, ! 1555: ULONG iMode); ! 1556: ! 1557: BOOL DrvCopyBits( ! 1558: SURFOBJ *psoDest, ! 1559: SURFOBJ *psoSrc, ! 1560: CLIPOBJ *pco, ! 1561: XLATEOBJ *pxlo, ! 1562: RECTL *prclDest, ! 1563: POINTL *pptlSrc); ! 1564: ! 1565: /* ! 1566: * Text Output ! 1567: */ ! 1568: ! 1569: BOOL DrvTextOut( ! 1570: SURFOBJ *pso, ! 1571: STROBJ *pstro, ! 1572: FONTOBJ *pfo, ! 1573: CLIPOBJ *pco, ! 1574: RECTL *prclExtra, ! 1575: RECTL *prclOpaque, ! 1576: BRUSHOBJ *pboFore, ! 1577: BRUSHOBJ *pboOpaque, ! 1578: POINTL *pptlOrg, ! 1579: MIX mix); ! 1580: ! 1581: /* ! 1582: * Graphics Output ! 1583: */ ! 1584: ! 1585: BOOL DrvStrokePath( ! 1586: SURFOBJ *pso, ! 1587: PATHOBJ *ppo, ! 1588: CLIPOBJ *pco, ! 1589: XFORMOBJ *pxo, ! 1590: BRUSHOBJ *pbo, ! 1591: POINTL *pptlBrushOrg, ! 1592: LINEATTRS *plineattrs, ! 1593: MIX mix); ! 1594: ! 1595: #define FP_ALTERNATEMODE 1L ! 1596: #define FP_WINDINGMODE 2L ! 1597: ! 1598: BOOL DrvFillPath( ! 1599: SURFOBJ *pso, ! 1600: PATHOBJ *ppo, ! 1601: CLIPOBJ *pco, ! 1602: BRUSHOBJ *pbo, ! 1603: POINTL *pptlBrushOrg, ! 1604: MIX mix, ! 1605: FLONG flOptions); ! 1606: ! 1607: BOOL DrvStrokeAndFillPath( ! 1608: SURFOBJ *pso, ! 1609: PATHOBJ *ppo, ! 1610: CLIPOBJ *pco, ! 1611: XFORMOBJ *pxo, ! 1612: BRUSHOBJ *pboStroke, ! 1613: LINEATTRS *plineattrs, ! 1614: BRUSHOBJ *pboFill, ! 1615: POINTL *pptlBrushOrg, ! 1616: MIX mixFill, ! 1617: FLONG flOptions); ! 1618: ! 1619: BOOL DrvPaint( ! 1620: SURFOBJ *pso, ! 1621: CLIPOBJ *pco, ! 1622: BRUSHOBJ *pbo, ! 1623: POINTL *pptlBrushOrg, ! 1624: MIX mix); ! 1625: ! 1626: /* ! 1627: * Object Data (LOGBRUSHs and LOGPENs) ! 1628: */ ! 1629: ! 1630: ULONG DrvQueryObjectData( ! 1631: DHPDEV dhpdev, ! 1632: ULONG iObjectType, ! 1633: ULONG cObjects, ! 1634: PVOID pvObjects); ! 1635: ! 1636: /* ! 1637: * Pointers ! 1638: */ ! 1639: ! 1640: #define SPS_ERROR 0 ! 1641: #define SPS_DECLINE 1 ! 1642: #define SPS_ACCEPT_NOEXCLUDE 2 ! 1643: #define SPS_ACCEPT_EXCLUDE 3 ! 1644: ! 1645: #define SPS_CHANGE 0x00000001L ! 1646: #define SPS_ASYNCCHANGE 0x00000002L ! 1647: #define SPS_ANIMATESTART 0x00000004L ! 1648: #define SPS_ANIMATEUPDATE 0x00000008L ! 1649: ! 1650: ULONG DrvSetPointerShape( ! 1651: SURFOBJ *pso, ! 1652: SURFOBJ *psoMask, ! 1653: SURFOBJ *psoColor, ! 1654: XLATEOBJ *pxlo, ! 1655: LONG xHot, ! 1656: LONG yHot, ! 1657: LONG x, ! 1658: LONG y, ! 1659: RECTL *prcl, ! 1660: FLONG fl); ! 1661: ! 1662: VOID DrvMovePointer(SURFOBJ *pso,LONG x,LONG y,RECTL *prcl); ! 1663: ! 1664: /* ! 1665: * Printing ! 1666: */ ! 1667: ! 1668: BOOL DrvSendPage(SURFOBJ *pso); ! 1669: BOOL DrvStartPage(SURFOBJ *pso); ! 1670: ! 1671: ULONG DrvEscape( ! 1672: SURFOBJ *pso, ! 1673: ULONG iEsc, ! 1674: ULONG cjIn, ! 1675: PVOID pvIn, ! 1676: ULONG cjOut, ! 1677: PVOID pvOut); ! 1678: ! 1679: #define ESC_CLIPCHANGE 0x80000000 ! 1680: ! 1681: ULONG DrvDrawEscape( ! 1682: SURFOBJ *pso, ! 1683: ULONG iEsc, ! 1684: CLIPOBJ *pco, ! 1685: RECTL *prcl, ! 1686: ULONG cjIn, ! 1687: PVOID pvIn); ! 1688: ! 1689: BOOL DrvStartDoc( ! 1690: SURFOBJ *pso, ! 1691: PWSTR pwszDocName, ! 1692: DWORD dwJobId); ! 1693: ! 1694: #define ED_ABORTDOC 1 ! 1695: ! 1696: BOOL DrvEndDoc(SURFOBJ *pso, FLONG fl); ! 1697: ! 1698: ULONG DrvGetGlyphMode(DHPDEV, FONTOBJ *); ! 1699: ! 1700: ULONG DrvFontManagement( ! 1701: SURFOBJ *pso, ! 1702: FONTOBJ *pfo, ! 1703: ULONG iMode, ! 1704: ULONG cjIn, ! 1705: PVOID pvIn, ! 1706: ULONG cjOut, ! 1707: PVOID pvOut); ! 1708: ! 1709: /* ! 1710: * Function prototypes - Engine Simulations ! 1711: */ ! 1712: ! 1713: BOOL EngBitBlt( ! 1714: SURFOBJ *psoTrg, ! 1715: SURFOBJ *psoSrc, ! 1716: SURFOBJ *psoMask, ! 1717: CLIPOBJ *pco, ! 1718: XLATEOBJ *pxlo, ! 1719: RECTL *prclTrg, ! 1720: POINTL *pptlSrc, ! 1721: POINTL *pptlMask, ! 1722: BRUSHOBJ *pbo, ! 1723: POINTL *pptlBrush, ! 1724: ROP4 rop4); ! 1725: ! 1726: BOOL EngStretchBlt( ! 1727: SURFOBJ *psoDest, ! 1728: SURFOBJ *psoSrc, ! 1729: SURFOBJ *psoMask, ! 1730: CLIPOBJ *pco, ! 1731: XLATEOBJ *pxlo, ! 1732: COLORADJUSTMENT *pca, ! 1733: POINTL *pptlHTOrg, ! 1734: RECTL *prclDest, ! 1735: RECTL *prclSrc, ! 1736: POINTL *pptlMask, ! 1737: ULONG iMode); ! 1738: ! 1739: BOOL EngPlgBlt( ! 1740: SURFOBJ *psoDest, ! 1741: SURFOBJ *psoSrc, ! 1742: SURFOBJ *psoMask, ! 1743: CLIPOBJ *pco, ! 1744: XLATEOBJ *pxlo, ! 1745: COLORADJUSTMENT *pca, ! 1746: POINTL *pptlHTOrg, ! 1747: POINTFIX *pptfxDest, ! 1748: RECTL *prclSrc, ! 1749: POINTL *pptlMask, ! 1750: ULONG iMode); ! 1751: ! 1752: BOOL EngTextOut( ! 1753: SURFOBJ *pso, ! 1754: STROBJ *pstro, ! 1755: FONTOBJ *pfo, ! 1756: CLIPOBJ *pco, ! 1757: RECTL *prclExtra, ! 1758: RECTL *prclOpaque, ! 1759: BRUSHOBJ *pboFore, ! 1760: BRUSHOBJ *pboOpaque, ! 1761: POINTL *pptlOrg, ! 1762: MIX mix); ! 1763: ! 1764: BOOL EngStrokePath( ! 1765: SURFOBJ *pso, ! 1766: PATHOBJ *ppo, ! 1767: CLIPOBJ *pco, ! 1768: XFORMOBJ *pxo, ! 1769: BRUSHOBJ *pbo, ! 1770: POINTL *pptlBrushOrg, ! 1771: LINEATTRS *plineattrs, ! 1772: MIX mix); ! 1773: ! 1774: BOOL EngFillPath( ! 1775: SURFOBJ *pso, ! 1776: PATHOBJ *ppo, ! 1777: CLIPOBJ *pco, ! 1778: BRUSHOBJ *pbo, ! 1779: POINTL *pptlBrushOrg, ! 1780: MIX mix, ! 1781: FLONG flOptions); ! 1782: ! 1783: BOOL EngStrokeAndFillPath( ! 1784: SURFOBJ *pso, ! 1785: PATHOBJ *ppo, ! 1786: CLIPOBJ *pco, ! 1787: XFORMOBJ *pxo, ! 1788: BRUSHOBJ *pboStroke, ! 1789: LINEATTRS *plineattrs, ! 1790: BRUSHOBJ *pboFill, ! 1791: POINTL *pptlBrushOrg, ! 1792: MIX mixFill, ! 1793: FLONG flOptions); ! 1794: ! 1795: BOOL EngPaint( ! 1796: SURFOBJ *pso, ! 1797: CLIPOBJ *pco, ! 1798: BRUSHOBJ *pbo, ! 1799: POINTL *pptlBrushOrg, ! 1800: MIX mix); ! 1801: ! 1802: BOOL EngCopyBits( ! 1803: SURFOBJ *psoDest, ! 1804: SURFOBJ *psoSrc, ! 1805: CLIPOBJ *pco, ! 1806: XLATEOBJ *pxlo, ! 1807: RECTL *prclDest, ! 1808: POINTL *pptlSrc); ! 1809: ! 1810: #define PPB_NOCLIP 0x0001 ! 1811: ! 1812: ! 1813: // ! 1814: // Halftone releated APIs ! 1815: // ! 1816: ! 1817: ! 1818: LONG ! 1819: APIENTRY ! 1820: HT_ComputeRGBGammaTable( ! 1821: USHORT GammaTableEntries, ! 1822: USHORT GammaTableType, ! 1823: USHORT RedGamma, ! 1824: USHORT GreenGamma, ! 1825: USHORT BlueGamma, ! 1826: LPBYTE pGammaTable ! 1827: ); ! 1828: ! 1829: LONG ! 1830: APIENTRY ! 1831: HT_Get8BPPFormatPalette( ! 1832: LPPALETTEENTRY pPaletteEntry, ! 1833: USHORT RedGamma, ! 1834: USHORT GreenGamma, ! 1835: USHORT BlueGamma ! 1836: ); ! 1837: ! 1838: ! 1839: typedef struct _DEVHTINFO { ! 1840: DWORD HTFlags; ! 1841: DWORD HTPatternSize; ! 1842: DWORD DevPelsDPI; ! 1843: COLORINFO ColorInfo; ! 1844: } DEVHTINFO, *PDEVHTINFO; ! 1845: ! 1846: #define DEVHTADJF_COLOR_DEVICE 0x00000001 ! 1847: #define DEVHTADJF_ADDITIVE_DEVICE 0x00000002 ! 1848: ! 1849: typedef struct _DEVHTADJDATA { ! 1850: DWORD DeviceFlags; ! 1851: DWORD DeviceXDPI; ! 1852: DWORD DeviceYDPI; ! 1853: PDEVHTINFO pDefHTInfo; ! 1854: PDEVHTINFO pAdjHTInfo; ! 1855: } DEVHTADJDATA, *PDEVHTADJDATA; ! 1856: ! 1857: LONG ! 1858: APIENTRY ! 1859: HTUI_DeviceColorAdjustment( ! 1860: LPSTR pDeviceName, ! 1861: PDEVHTADJDATA pDevHTAdjData ! 1862: ); ! 1863: ! 1864: ! 1865: #endif // _WINDDI_
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.