Annotation of ntddk/inc/winddi.h, revision 1.1.1.1

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_

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.