home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / warphead.zip / H / PMDEV.H < prev    next >
C/C++ Source or Header  |  1997-08-17  |  32KB  |  725 lines

  1. /****************************** Module Header ******************************\
  2. *
  3. * Module Name: PMDEV.H
  4. *
  5. * OS/2 Presentation Manager Device Context constants, types and
  6. * function declarations
  7. *
  8. * Copyright (c) International Business Machines Corporation 1981, 1988-1992
  9. *
  10. * ===========================================================================
  11. *
  12. * The following symbols are used in this file for conditional sections.
  13. *
  14. *   #define:                To include:
  15. *
  16. *   INCL_DEVERRORS          error definitions
  17. *   INCL_DEV                Dev APIs and structures
  18. *
  19. * There is a symbol used in this file called INCL_DDIDEFS. This is used to
  20. * include only the definitions for the DDI. The programmer using the GPI
  21. * can ignore this symbol
  22. *
  23. * There is a symbol used in this file called INCL_SAADEFS. This is used to
  24. * include only the definitions for the SAA. The programmer using the GPI
  25. * can ignore this symbol
  26. *
  27. * ===========================================================================
  28. *
  29. * Comments at the end of each typedef line give the name tags used in
  30. * the assembler include version of this file.
  31. *
  32. * The assembler include version of this file excludes lines between NOINC
  33. * and INC comments.
  34. *
  35. \***************************************************************************/
  36.  
  37. #if __IBMC__ || __IBMCPP__
  38.    #pragma info( none )
  39.    #ifndef __CHKHDR__
  40.       #pragma info( none )
  41.    #endif
  42.    #pragma info( restore )
  43. #endif
  44. #ifdef __cplusplus
  45.       extern "C" {
  46. #endif
  47.  
  48. #define DEV_INCLUDED
  49.  
  50.  
  51. #ifdef INCL_ERRORS /* if errors are required then allow DEV errors */
  52.    #define INCL_DEVERRORS
  53. #endif /* INCL_ERRORS */
  54.  
  55. #ifdef INCL_DDIDEFS /* if only DDI required then enable all of DEV */
  56.    #define INCL_DEV
  57. #endif /* INCL_DDIDEFS */
  58.  
  59. #ifdef INCL_SAADEFS /* if only SAA required then enable all of DEV */
  60.    #define INCL_DEV
  61. #endif /* INCL_SAADEFS */
  62.  
  63. #if (defined(INCL_DEV) || !defined(INCL_NOCOMMON))
  64.    
  65.    /* General DEV return values */
  66.    #define DEV_ERROR                       0L
  67.    #define DEV_OK                          1L
  68.    #define DEV_BAD_PARAMETERS              2L
  69.    #define DEV_WARNING                     3L
  70.    #define DEV_PROP_BUF_TOO_SMALL          4L
  71.    #define DEV_ITEM_BUF_TOO_SMALL          5L
  72.    #define DEV_INV_INP_JOBPROPERTIES       6L
  73.    
  74.    /* DC type for DevOpenDC */
  75.    #define OD_SCREEN                       0L
  76.    #define OD_QUEUED                       2L
  77.    #define OD_DIRECT                       5L
  78.    #define OD_INFO                         6L
  79.    #define OD_METAFILE                     7L
  80.    #define OD_MEMORY                       8L
  81.    #define OD_METAFILE_NOQUERY             9L
  82.    
  83.    /* codes for DevQueryCaps */
  84.    #define CAPS_FAMILY                     0L
  85.    #define CAPS_IO_CAPS                    1L
  86.    #define CAPS_TECHNOLOGY                 2L
  87.    #define CAPS_DRIVER_VERSION             3L
  88.    #define CAPS_WIDTH                      4L      /* pels            */
  89.    #define CAPS_HEIGHT                     5L      /* pels            */
  90.    #define CAPS_WIDTH_IN_CHARS             6L
  91.    #define CAPS_HEIGHT_IN_CHARS            7L
  92.    #define CAPS_HORIZONTAL_RESOLUTION      8L      /* pels per meter  */
  93.    #define CAPS_VERTICAL_RESOLUTION        9L      /* pels per meter  */
  94.    #define CAPS_CHAR_WIDTH                10L      /* pels            */
  95.    #define CAPS_CHAR_HEIGHT               11L      /* pels            */
  96.    #define CAPS_SMALL_CHAR_WIDTH          12L      /* pels            */
  97.    #define CAPS_SMALL_CHAR_HEIGHT         13L      /* pels            */
  98.    #define CAPS_COLORS                    14L
  99.    #define CAPS_COLOR_PLANES              15L
  100.    #define CAPS_COLOR_BITCOUNT            16L
  101.    #define CAPS_COLOR_TABLE_SUPPORT       17L
  102.    #define CAPS_MOUSE_BUTTONS             18L
  103.    #define CAPS_FOREGROUND_MIX_SUPPORT    19L
  104.    #define CAPS_BACKGROUND_MIX_SUPPORT    20L
  105.    #define CAPS_DEVICE_WINDOWING          31L
  106.    #define CAPS_ADDITIONAL_GRAPHICS       32L
  107.    #define CAPS_VIO_LOADABLE_FONTS        21L
  108.    #define CAPS_WINDOW_BYTE_ALIGNMENT     22L
  109.    #define CAPS_BITMAP_FORMATS            23L
  110.    #define CAPS_RASTER_CAPS               24L
  111.    #define CAPS_MARKER_HEIGHT             25L      /* pels            */
  112.    #define CAPS_MARKER_WIDTH              26L      /* pels            */
  113.    #define CAPS_DEVICE_FONTS              27L
  114.    #define CAPS_GRAPHICS_SUBSET           28L
  115.    #define CAPS_GRAPHICS_VERSION          29L
  116.    #define CAPS_GRAPHICS_VECTOR_SUBSET    30L
  117.    #define CAPS_PHYS_COLORS               33L
  118.    #define CAPS_COLOR_INDEX               34L
  119.    #define CAPS_GRAPHICS_CHAR_WIDTH       35L
  120.    #define CAPS_GRAPHICS_CHAR_HEIGHT      36L
  121.    #define CAPS_HORIZONTAL_FONT_RES       37L
  122.    #define CAPS_VERTICAL_FONT_RES         38L
  123.    #define CAPS_DEVICE_FONT_SIM           39L
  124.    #define CAPS_LINEWIDTH_THICK           40L
  125.    #define CAPS_DEVICE_POLYSET_POINTS     41L
  126.    
  127.    /* Constants for CAPS_IO_CAPS */
  128.    #define CAPS_IO_DUMMY                   1L
  129.    #define CAPS_IO_SUPPORTS_OP             2L
  130.    #define CAPS_IO_SUPPORTS_IP             3L
  131.    #define CAPS_IO_SUPPORTS_IO             4L
  132.    
  133.    /* Constants for CAPS_TECHNOLOGY */
  134.    #define CAPS_TECH_UNKNOWN               0L
  135.    #define CAPS_TECH_VECTOR_PLOTTER        1L
  136.    #define CAPS_TECH_RASTER_DISPLAY        2L
  137.    #define CAPS_TECH_RASTER_PRINTER        3L
  138.    #define CAPS_TECH_RASTER_CAMERA         4L
  139.    #define CAPS_TECH_POSTSCRIPT            5L
  140.    
  141.    /* Constants for CAPS_COLOR_TABLE_SUPPORT */
  142.    #define CAPS_COLTABL_RGB_8              1L
  143.    #define CAPS_COLTABL_RGB_8_PLUS         2L
  144.    #define CAPS_COLTABL_TRUE_MIX           4L
  145.    #define CAPS_COLTABL_REALIZE            8L
  146.    
  147.    /* Constants for CAPS_FOREGROUND_MIX_SUPPORT */
  148.    #define CAPS_FM_OR                      1L
  149.    #define CAPS_FM_OVERPAINT               2L
  150.    #define CAPS_FM_XOR                     8L
  151.    #define CAPS_FM_LEAVEALONE             16L
  152.    #define CAPS_FM_AND                    32L
  153.    #define CAPS_FM_GENERAL_BOOLEAN        64L
  154.    
  155.    /* Constants for CAPS_BACKGROUND_MIX_SUPPORT */
  156.    #define CAPS_BM_OR                      1L
  157.    #define CAPS_BM_OVERPAINT               2L
  158.    #define CAPS_BM_XOR                     8L
  159.    #define CAPS_BM_LEAVEALONE             16L
  160.    #define CAPS_BM_AND                    32L
  161.    #define CAPS_BM_GENERAL_BOOLEAN        64L
  162.    #define CAPS_BM_SRCTRANSPARENT        128L
  163.    #define CAPS_BM_DESTTRANSPARENT       256L
  164.    
  165.    /* Constants for CAPS_DEVICE_WINDOWING */
  166.    #define CAPS_DEV_WINDOWING_SUPPORT      1L
  167.    
  168.    /* Constants for CAPS_DEV_FONT_SIM     */
  169.    #define CAPS_DEV_FONT_SIM_BOLD          1L
  170.    #define CAPS_DEV_FONT_SIM_ITALIC        2L
  171.    #define CAPS_DEV_FONT_SIM_UNDERSCORE    4L
  172.    #define CAPS_DEV_FONT_SIM_STRIKEOUT     8L
  173.    
  174.    /* Constants for CAPS_ADDITIONAL_GRAPHICS */
  175.    #define CAPS_VDD_DDB_TRANSFER            1L
  176.    #define CAPS_GRAPHICS_KERNING_SUPPORT    2L
  177.    #define CAPS_FONT_OUTLINE_DEFAULT        4L
  178.    #define CAPS_FONT_IMAGE_DEFAULT          8L
  179.    /* bits represented by values 16L and 32L are reserved */
  180.    #define CAPS_SCALED_DEFAULT_MARKERS     64L
  181.    #define CAPS_COLOR_CURSOR_SUPPORT      128L
  182.    #define CAPS_PALETTE_MANAGER           256L
  183.    #define CAPS_COSMETIC_WIDELINE_SUPPORT 512L
  184.    #define CAPS_DIRECT_FILL              1024L
  185.    #define CAPS_REBUILD_FILLS            2048L
  186.    #define CAPS_CLIP_FILLS               0x00001000 /* 4096L  */
  187.    #define CAPS_ENHANCED_FONTMETRICS     0x00002000 /* 8192L  */
  188.    #define CAPS_TRANSFORM_SUPPORT        0x00004000 /* 16384L */
  189.    #define CAPS_EXTERNAL_16_BITCOUNT     0x00008000 /* 32768L */
  190.    #define CAPS_EXTERNAL_32_BITCOUNT     0x00010000 /* 65536L */
  191.    
  192.    #ifndef INCL_SAADEFS
  193.       
  194.       /* Constants for CAPS_WINDOW_BYTE_ALIGNMENT */
  195.       #define CAPS_BYTE_ALIGN_REQUIRED        0L
  196.       #define CAPS_BYTE_ALIGN_RECOMMENDED     1L
  197.       #define CAPS_BYTE_ALIGN_NOT_REQUIRED    2L
  198.    #endif /* no INCL_SAADEFS */
  199.    
  200.    /* Constants for CAPS_RASTER_CAPS */
  201.    #define CAPS_RASTER_BITBLT              1L
  202.    #define CAPS_RASTER_BANDING             2L
  203.    #define CAPS_RASTER_BITBLT_SCALING      4L
  204.    #define CAPS_RASTER_SET_PEL            16L
  205.    #define CAPS_RASTER_FONTS              32L
  206.    #define CAPS_RASTER_FLOOD_FILL         64L
  207.    
  208.    #ifndef INCL_DDIDEFS
  209.       
  210. #ifdef __cplusplus
  211.       HDC  APIENTRY DevOpenDC(HAB hab,
  212.                               LONG lType,
  213.                               PCSZ  pszToken,
  214.                               LONG lCount,
  215.                               PDEVOPENDATA pdopData,
  216.                               HDC hdcComp);
  217. #else
  218.       HDC  APIENTRY DevOpenDC(HAB hab,
  219.                               LONG lType,
  220.                               PSZ pszToken,
  221.                               LONG lCount,
  222.                               PDEVOPENDATA pdopData,
  223.                               HDC hdcComp);
  224. #endif
  225.       
  226.       HMF  APIENTRY DevCloseDC(HDC hdc);
  227.       
  228.       BOOL  APIENTRY DevQueryCaps(HDC hdc,
  229.                                   LONG lStart,
  230.                                   LONG lCount,
  231.                                   PLONG alArray);
  232.    #endif /* no INCL_DDIDEFS */
  233.    
  234. #endif /* common DEV */
  235.  
  236. #ifdef INCL_DEV
  237.    
  238.    #ifndef INCL_SAADEFS
  239.       
  240.       /* structures for DEVESC_QUERYVIOCELLSIZES */
  241.       typedef struct _VIOSIZECOUNT    /* vios */
  242.       {
  243.          LONG maxcount;
  244.          LONG count;
  245.       } VIOSIZECOUNT;
  246.       typedef VIOSIZECOUNT *PVIOSIZECOUNT;
  247.       
  248.       typedef struct _VIOFONTCELLSIZE    /* viof */
  249.       {
  250.          LONG cx;
  251.          LONG cy;
  252.       } VIOFONTCELLSIZE;
  253.       typedef VIOFONTCELLSIZE *PVIOFONTCELLSIZE;
  254.       
  255.       /* structure for DEVESC_GETSCALINGFACTOR */
  256.       typedef struct _SFACTORS    /* sfactors */
  257.       {
  258.          LONG x;
  259.          LONG y;
  260.       } SFACTORS;
  261.       typedef SFACTORS *PSFACTORS;
  262.       
  263.       /* structure for DEVESC_NEXTBAND */
  264.       typedef struct _BANDRECT    /* bandrect */
  265.       {
  266.          LONG  xleft;
  267.          LONG  ybottom;
  268.          LONG  xright;
  269.          LONG  ytop;
  270.       } BANDRECT;
  271.       typedef BANDRECT *PBANDRECT;
  272.       
  273.       /* return codes for DevEscape */
  274.       #define DEVESC_ERROR                  (-1L)
  275.       #define DEVESC_NOTIMPLEMENTED           0L
  276.       
  277.       /* codes for DevEscape */
  278.       #define DEVESC_QUERYESCSUPPORT          0L
  279.       #define DEVESC_GETSCALINGFACTOR         1L
  280.       #define DEVESC_QUERYVIOCELLSIZES        2L
  281.       #define DEVESC_GETCP                 8000L
  282.       /* New codes for SetAbortProc and QueryPDL */
  283.       /* Not metafiled but passed to engine      */
  284.       #define DEVESC_SETABORTPROC          8001L
  285.       #define DEVESC_QUERYPDL              8002L
  286.       
  287.       #define DEVESC_STARTDOC              8150L
  288.       #define DEVESC_ENDDOC                8151L
  289.       #define DEVESC_NEXTBAND              8152L
  290.       #define DEVESC_ABORTDOC              8153L
  291.       #define DEVESC_GETJOBID              8160L
  292.       #define DEVESC_QUERY_RASTER          8161L
  293.       /* New codes for Dynamic Job Properties */
  294.       #define DEVESC_QUERYSIZE             8162L
  295.       #define DEVESC_QUERYJOBPROPERTIES    8163L
  296.       #define DEVESC_SETJOBPROPERTIES      8164L
  297.       #define DEVESC_DEFAULTJOBPROPERTIES  8165L
  298.       #define DEVESC_CHANGEOUTPUTPORT      8166L
  299.       
  300.       #define DEVESC_NEWFRAME             16300L
  301.       #define DEVESC_DRAFTMODE            16301L
  302.       #define DEVESC_FLUSHOUTPUT          16302L
  303.       #define DEVESC_RAWDATA              16303L
  304.       #define DEVESC_SETMODE              16304L
  305.       #define DEVESC_SEP                  16305L
  306.       #define DEVESC_MACRO                16307L
  307.       #define DEVESC_BEGIN_BITBLT         16309L
  308.       #define DEVESC_END_BITBLT           16310L
  309.       #define DEVESC_SEND_COMPDATA        16311L
  310.       
  311.       #define DEVESC_DBE_FIRST            24450L
  312.       #define DEVESC_DBE_LAST             24455L
  313.       
  314.       /* DevEscape codes for adding extra space to character strings */
  315.       #define DEVESC_CHAR_EXTRA           16998L
  316.       #define DEVESC_BREAK_EXTRA          16999L
  317.       
  318.       /* codes for DevEscape PM_Q_ESC spool files */
  319.       #define DEVESC_STD_JOURNAL          32600L
  320.       
  321.       /* New code for SetPS                   */
  322.       /* This does not go directly to drivers, but is handled in GPI/GRE special code */
  323.       #define DEVESC_SETPS                49149L
  324.       
  325.       /* New codes for Dynamic Job Properties */
  326.       #define DEVESC_STARTDOC_WPROP       49150L
  327.       #define DEVESC_NEWFRAME_WPROP       49151L
  328.       
  329.       /* structure for DEVESC_SETMODE */
  330.       typedef struct _ESCMODE     /* em */
  331.       {
  332.          ULONG mode;
  333.          BYTE  modedata[1];
  334.       } ESCMODE;
  335.       typedef ESCMODE *PESCMODE;
  336.       
  337.       /* NOINC */
  338.       /* structure for DEVESC_BEGIN_BITBLT */
  339.       typedef  struct _COMPBITBLT   /* cbb */
  340.       {
  341.          ULONG ultype;
  342.          RECTL rclDst;            /* Destination rectangle */
  343.          ULONG ulColumns;
  344.          ULONG ulRows;
  345.          union
  346.          {
  347.             struct _ccitt {      /* used by COMP_G4_MMR, COMP_G3_MH, */
  348.                /* COMP_G3_MMR                      */
  349.                BOOL  bEndOfLine;
  350.                BOOL  bEncodedByteAlign;
  351.                BOOL  bEndOfBlock;
  352.                BOOL  bBlackIs1;
  353.                ULONG K;           /* Only used by COMP_G3_MMR */
  354.             } ccitt;
  355.             struct _dct          /* used by COMP_JPEG */
  356.             {
  357.                ULONG ulColors;
  358.                PVOID pQuantTables;
  359.                ULONG ulQFactor;
  360.                PVOID pHuffTables;
  361.                ULONG ColorTransform;
  362.             } dct;
  363.          } bitblt;
  364.       }  COMPBITBLT;
  365.       typedef COMPBITBLT *PCOMPBITBLT;
  366.       /* INC */
  367.       
  368.       /* structures for DEVESC_QUERY_RASTER */
  369.       typedef  struct _COMP_BITMAPTYPES   /* cbmt */
  370.       {
  371.          USHORT cPlanes;              /* # of bit planes                   */
  372.          USHORT cBitCount;            /* # of bits per pel within a plane  */
  373.          ULONG  ulCompressionType;    /* Compresstype                      */
  374.          ULONG  ulCaps;               /* Bitmap capabilites bitstring      */
  375.       }  COMP_BITMAPTYPES;
  376.       
  377.       typedef COMP_BITMAPTYPES *PCOMP_BITMAPTYPES;
  378.       
  379.       typedef  struct _QUERY_RASTER   /* qr */
  380.       {
  381.          ULONG  cCount;               /* Count of struct above that a device */
  382.          /* supports                            */
  383.          ULONG  ulCaps;               /* Bitmaps capabilities bitstring      */
  384.       }  QUERY_RASTER;
  385.       typedef QUERY_RASTER *PQUERY_RASTER;
  386.       
  387.       
  388.       typedef  struct _QUERY_ONE_RASTER   /* qor */
  389.       {
  390.          BOOL    bSupported;          /* Is mode supported with              */
  391.          /*    DEVESC_BEGIN_BITBLT?             */
  392.          BOOL    ulCaps;              /* Bitmaps capabitities bitstring      */
  393.          /* with gpi calls on a page.           */
  394.       }  QUERY_ONE_RASTER;
  395.       typedef QUERY_ONE_RASTER *PQUERY_ONE_RASTER;
  396.       
  397.       /* NOINC */
  398.       typedef BOOL   (* APIENTRY PABORTPROC)( HDC,
  399.                       INT );
  400.       
  401.       typedef struct _SETABORTPROC    /* sap */
  402.       {
  403.          HDC    hdc;                   /* HDC of the windows app */
  404.          PABORTPROC   pAbortProc;      /* Function to call       */
  405.       } SETABORTPROC;
  406.       typedef SETABORTPROC *PSETABORTPROC;
  407.       /* INC */
  408.       
  409.       /* structure for Info on each printer description language (PDL) */
  410.       typedef struct _PDL               /* pdl */
  411.       {
  412.          ULONG   ulPDL;                  /* PDL ID (Like PCL or Postscript   */
  413.          ULONG   ulPDLLevel;             /* PDL level (like 6 in PCL 6)      */
  414.          ULONG   ulMajorPDLVersion;      /* Major PDL Version (like 2 in 2.0)*/
  415.          ULONG   ulMinorPDLVersion;      /* Minor PDL Version (like 0 in 2.0)*/
  416.          CHAR    szMinorCharID[32];      /* We need an additional PDL identifier for (PCL 5.2 C) or future Character IDs*/
  417.          ULONG   ulReserved;             /* Reserved should be set to zero */
  418.          ULONG   ulFlags;                /* Flags */
  419.          CHAR    szPDLDescription[128]; /* PDL description string */
  420.          CHAR    szTranslatedPDLDescription[256]; /* Translated PDL description string */
  421.       } PDL;
  422.       typedef PDL *PPDL;
  423.       
  424.       /* ulFlags values for PDL structure */
  425.       
  426.       #define PDLCAPS_CURRENT        0x0001  /* Current PDL selected  on the device */
  427.       #define PDLCAPS_SOFTWARE_EMUL  0x0002  /* PDL is emulated through software */
  428.       #define PDLCAPS_SELECTABLE     0x0004  /* PDL is selectable       */
  429.       #define PDLCAPS_MACROSUPPORT   0x0008  /* Macros are supported  */
  430.       
  431.       /* structure for DEVESC_QUERYPDL */
  432.       typedef struct _QUERYPDL /* qpdl */
  433.       {
  434.          LONG lBufSize;  /* Total size of buffer in bytes */
  435.          LONG lMaxCount; /* Max number of PDLs/versions supported */
  436.          LONG lCount;    /* Count of PDLs returned */
  437.          PDL  aPDL[1];
  438.       } QUERYPDL;
  439.       typedef QUERYPDL *PQUERYPDL;
  440.       
  441.       /* structure for DEVESC_MACRO */
  442.       typedef struct _ESCMACRO          /* devmac */
  443.       {
  444.          PDL     sPDL;           /* PDL structure as returned from DEVESC_QUERYPDL */
  445.          ULONG   ulMacroLength;  /* Length of macro data */
  446.          ULONG   ulFlags;        /* Various flags */
  447.          BYTE    abMacro[1];     /* Array of bytes containing the macro data */
  448.       } ESCMACRO;
  449.       typedef ESCMACRO *PESCMACRO;
  450.       
  451.       #define QPDL_DONTCARE    -1   /* Use this for fields to ignore */
  452.       #define PDL_DONTCARE     0
  453.       /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>> PDL types <<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
  454.       #define PDL_other        1  /* Not on this list                                           */
  455.       #define PDL_PCL          3  /* PCL.  Starting with PCL version 5, HP-GL/2 is included as  */
  456.       #define PDL_HPGL         4  /* Hewlett-Packard Graphics Language.  HP-GL is a registered  */
  457.       #define PDL_PJL          5  /* Peripheral Job Language.  Appears in the data stream       */
  458.       #define PDL_PS           6  /* PostScript Language (tm) Postscript - a trademark of Adobe */
  459.       #define PDL_IPDS         7  /* Intelligent Printer Data Stream Bi-directional print data  */
  460.       #define PDL_PPDS         8  /* IBM Personal Printer Data Stream.  Originally called IBM   */
  461.       #define PDL_EscapeP      9  /* Epson Corp.                                                */
  462.       #define PDL_Epson        10
  463.       #define PDL_DDIF         11 /* Digital Document Interchange Format Digital Equipment      */
  464.       #define PDL_Interpress   12 /* Xerox Corp.                                                */
  465.       #define PDL_ISO6429      13 /* ISO 6429.  Control functions for Coded Character Sets      */
  466.       #define PDL_LineData     14 /* line-data : Lines of data as separate ASCII or EBCDIC      */
  467.       #define PDL_MODCA        15 /* Mixed Object Document Content Architecture Definitions     */
  468.       #define PDL_REGIS        16 /* Remote Graphics Instruction Set, Digital Equipment         */
  469.       #define PDL_SCS          17 /* SNA Character String Bi-directional print data stream for  */
  470.       #define PDL_SPDL         18 /* ISO 10180 Standard Page Description Language ISO           */
  471.       #define PDL_TEK4014      19 /* Tektronix Corp.                                            */
  472.       #define PDL_PDS          20
  473.       #define PDL_IGP          21 /* Printronix Corp.                                           */
  474.       #define PDL_CodeV        22 /* Magnum Code-V, Image and printer control language used     */
  475.       #define PDL_DSCDSE       23 /* DSC-DSE : Data Stream Compatible and Emulation Bi-         */
  476.       #define PDL_WPS          24 /* Windows Printing System, Resource based command/data       */
  477.       #define PDL_LN03         25 /* Early DEC-PPL3, Digital Equipment Corp.                    */
  478.       #define PDL_CCITT        26
  479.       #define PDL_QUIC         27 /* QUIC (Quality Information Code), Page Description          */
  480.       #define PDL_CPAP         28 /* Common Printer Access Protocol Digital Equipment Corp      */
  481.       #define PDL_DecPPL       29 /* Digital ANSI-Compliant Printing Protocol (DEC-PPL)         */
  482.       #define PDL_SimpleText   30 /* simple-text : character coded data, including NUL,         */
  483.       #define PDL_NPAP         31 /* Network Printer Alliance Protocol (NPAP).  This protocol   */
  484.       #define PDL_DOC          32 /* Document Option Commands, Appears in the data stream       */
  485.       #define PDL_imPress      33 /* imPRESS, Page description language originally              */
  486.       #define PDL_Pinwriter    34 /* 24 wire dot matrix printer for USA, Europe, and            */
  487.       #define PDL_NPDL         35 /* Page printer for Japanese market.  NEC                     */
  488.       #define PDL_NEC201PL     36 /* Serial printer language used in the Japanese market.       */
  489.       #define PDL_Automatic    37 /* Automatic PDL sensing.  Automatic sensing of the           */
  490.       #define PDL_Pages        38 /* Page printer Advanced Graphic Escape Set IBM Japan         */
  491.       #define PDL_LIPS         39 /* LBP Image Processing System                                */
  492.       #define PDL_TIFF         40 /* Tagged Image File Format (Aldus)                           */
  493.       #define PDL_Diagnostic   41 /* A hex dump of the input to the interpreter                 */
  494.       #define PDL_PSPrinter    42 /* The PostScript Language used for control (with any         */
  495.       #define PDL_CaPSL        43 /* Canon Print Systems Language                               */
  496.       #define PDL_EXCL         44 /* Extended Command Language Talaris Systems Inc              */
  497.       #define PDL_LCDS         45 /* Line Conditioned Data Stream Xerox Corporatio              */
  498.       #define PDL_XES          46 /* Xerox Escape Sequences Xerox Corporation                   */
  499.       #define PDL_PCLXL        47 /* Printer Control Language.  Extended language features      */
  500.       #define PDL_ART          48 /* Advanced Rendering Tools (ART).  Page Description          */
  501.       #define PDL_TIPSI        49 /* Transport Independent Printer System Interface (ref.       */
  502.       #define PDL_Prescribe    50 /* Page description and printer control language.  It         */
  503.       #define PDL_LinePrinter  51 /* A simple-text character stream which supports the          */
  504.       #define PDL_IDP          52 /* Imaging Device Protocol Apple Computer.                    */
  505.       #define PDL_XJCL         53 /* Xerox Corp.                                                */
  506.       
  507.       /*>>>>>>>>>>>>>>>>>>>>>>>>>>>> PDL Levels <<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
  508.       
  509.       /************************** LEVELS FOR PDL_PS **************************/
  510.       #define LEVEL_PS_LEVEL1         1     /* Postscript Level  1*/
  511.       #define LEVEL_PS_LEVEL2         2     /* Postscript Level  2*/
  512.       
  513.       /************************* LEVELS for PDL_PCL **************************/
  514.       #define LEVEL_PCL2              1
  515.       #define LEVEL_PCL3              2
  516.       #define LEVEL_PCL3C             3
  517.       #define LEVEL_PCL4              4
  518.       #define LEVEL_PCL5              5
  519.       #define LEVEL_PCL5C             6
  520.       
  521.       /************************* LEVELS FOR PDL_HPGL *************************/
  522.       #define LEVEL_HPGL1             1
  523.       #define LEVEL_HPGL2             2
  524.       #define LEVEL_HPGL2_RTL         3     /* HPGL2 with RTL language used for raster transfer */
  525.       #define LEVEL_HPGL2_PCLRTL      4     /* HPGL2 with PCL used for raster transfer */
  526.       
  527.       /************************ LEVELS FOR PDL_EPSON *************************/
  528.       #define LEVEL_ESC               1
  529.       #define LEVEL_ESCP              2
  530.       #define LEVEL_ESCP_2            3
  531.       #define LEVEL_ESCP_2J           4     /* Japan version */
  532.       
  533.       /********************** LEVELS FOR PDL_SimpleText **********************/
  534.       #define LEVEL_ASCII_TEXT        1
  535.       #define LEVEL_ASCII_PROPRINTER  2
  536.       #define LEVEL_ASCII_QUITWRITER  3
  537.       #define LEVEL_ASCII_JISASCII    4
  538.       
  539.       /******************************************************************/
  540.       /*           Bitmap capabitities bitstring defines                */
  541.       /******************************************************************/
  542.       #define BITMAP_WITH_GPI                0x00000001
  543.       #define BITMAP_SMOOTHING               0x00000002
  544.       #define BITMAP_STRETCHING              0x00000004
  545.       #define BITMAP_ROTATION                0x00000008
  546.       #define BITMAP_COLOR                   0x00000010
  547.       /******************************************************************/
  548.       /*                   Compression types defines                    */
  549.       /******************************************************************/
  550.       /* Group 4 fax compression */
  551.       #define COMP_IBM_MMR                   0x00000001
  552.       #define COMP_PACKBITS                  0x00000002
  553.       #define COMP_ABIC                      0x00000008
  554.       #define COMP_TIFF_2                    0x00000009
  555.       #define COMP_ABIC_CONCAT               0x0000000A
  556.       #define COMP_G3_MH                     0x00000080
  557.       #define COMP_G3_MR                     0x00000081
  558.       #define COMP_G4_MMR                    0x00000082
  559.       #define COMP_JPEG                      0x0000CA83
  560.       #define COMP_UNCOMPRESS                0x00001000
  561.       
  562.       /* return codes for DevPostDeviceModes */
  563.       #define DPDM_ERROR                    (-1L)
  564.       #define DPDM_NONE                       0L
  565.       
  566.       /* codes for DevPostDeviceModes */
  567.       #define DPDM_POSTJOBPROP                0L
  568.       #define DPDM_CHANGEPROP                 1L
  569.       #define DPDM_QUERYJOBPROP               2L
  570.       
  571.       /* string types for DevQueryDeviceNames */
  572.       typedef CHAR STR16[16];     /* str16 */
  573.       typedef STR16 *PSTR16;
  574.       typedef CHAR STR32[32];     /* str32 */
  575.       typedef STR32 *PSTR32;
  576.       typedef CHAR STR64[64];     /* str64 */
  577.       typedef STR64 *PSTR64;
  578.       
  579.       /* return code for DevQueryHardcopyCaps */
  580.       #define DQHC_ERROR                    (-1L)
  581.       
  582.       /* codes for DevQueryHardcopyCaps */
  583.       #define HCAPS_CURRENT                   1L
  584.       #define HCAPS_SELECTABLE                2L
  585.       
  586.       /* structure for DevQueryHardcopyCaps */
  587.       typedef struct _HCINFO           /* hci */
  588.       {
  589.          CHAR   szFormname[32];
  590.          LONG   cx;
  591.          LONG   cy;
  592.          LONG   xLeftClip;
  593.          LONG   yBottomClip;
  594.          LONG   xRightClip;
  595.          LONG   yTopClip;
  596.          LONG   xPels;
  597.          LONG   yPels;
  598.          LONG   flAttributes;
  599.       } HCINFO;
  600.       typedef HCINFO *PHCINFO;
  601.       
  602.       /* return codes for DevPostEscape */
  603.       #define DEVPE_ERROR                     -1L
  604.       #define DEVPE_NOTIMPLEMENTED            -2L
  605.       #define DEVPE_NOTSUPPORTED              -3L
  606.       
  607.       /* codes for DevPostEscape */
  608.       #define DEVPE_QUERYSUPPORT               1L
  609.       #define DEVPE_QUERYSIZE                  2L
  610.       #define DEVPE_QUERYJOBPROPERTIES         3L
  611.       #define DEVPE_SETJOBPROPERTIES           4L
  612.       #define DEVPE_DEFAULTJOBPROPERTIES       5L
  613.       
  614.       #ifdef INCL_DEVDJP
  615.          #include <pmdjp.h>
  616.       #endif /* INCL_DEVDJP */
  617.       
  618.       /* Device Context Functions */
  619.       #ifndef INCL_DDIDEFS
  620.          
  621.          LONG  APIENTRY DevEscape(HDC hdc,
  622.                                   LONG lCode,
  623.                                   LONG lInCount,
  624.                                   PBYTE pbInData,
  625.                                   PLONG plOutCount,
  626.                                   PBYTE pbOutData);
  627.          
  628. #ifdef __cplusplus
  629.          BOOL  APIENTRY DevQueryDeviceNames(HAB hab,
  630.                                             PCSZ  pszDriverName,
  631.                                             PLONG pldn,
  632.                                             PSTR32 aDeviceName,
  633.                                             PSTR64 aDeviceDesc,
  634.                                             PLONG pldt,
  635.                                             PSTR16 aDataType);
  636. #else
  637.          BOOL  APIENTRY DevQueryDeviceNames(HAB hab,
  638.                                             PSZ pszDriverName,
  639.                                             PLONG pldn,
  640.                                             PSTR32 aDeviceName,
  641.                                             PSTR64 aDeviceDesc,
  642.                                             PLONG pldt,
  643.                                             PSTR16 aDataType);
  644. #endif
  645.          
  646.          LONG  APIENTRY DevQueryHardcopyCaps(HDC hdc,
  647.                                              LONG lStartForm,
  648.                                              LONG lForms,
  649.                                              PHCINFO phciHcInfo);
  650.          
  651. #ifdef __cplusplus
  652.          LONG  APIENTRY DevPostDeviceModes(HAB hab,
  653.                                            PDRIVDATA pdrivDriverData ,
  654.                                            PCSZ  pszDriverName,
  655.                                            PCSZ  pszDeviceName,
  656.                                            PCSZ  pszName,
  657.                                            ULONG flOptions);
  658. #else
  659.          LONG  APIENTRY DevPostDeviceModes(HAB hab,
  660.                                            PDRIVDATA pdrivDriverData ,
  661.                                            PSZ pszDriverName,
  662.                                            PSZ pszDeviceName,
  663.                                            PSZ pszName,
  664.                                            ULONG flOptions);
  665. #endif
  666.          
  667.          /* This is a pointer to the DevPostEscape API.  It is provided
  668.          ** as a typedef so that you can DosQueryProcAddr on PMGPI.DLL
  669.          ** with the ordinal ORD_DEV32POSTESCAPE
  670.          */
  671.          /* NOINC */
  672.          typedef LONG (* APIENTRY PDEVPOSTESCAPE_FUNC)(PSZ pszDriverName,
  673.                        PSZ pszDeviceName,
  674.                        PSZ pszQueueName,
  675.                        PSZ pszSplPrinterName,
  676.                        ULONG ulFuncNum,
  677.                        ULONG cbParm1,
  678.                        PBYTE pbParm1,
  679.                        ULONG cbParm2,
  680.                        PBYTE pbParm2);
  681.          /* INC */
  682.          
  683. #ifdef __cplusplus
  684.          LONG  APIENTRY DevPostEscape(PCSZ  pszDriverName,
  685.                                       PCSZ  pszDeviceName,
  686.                                       PCSZ  pszQueueName,
  687.                                       PCSZ  pszSplPrinterName,
  688.                                       ULONG ulFuncNum,
  689.                                       ULONG cbParm1,
  690.                                       PBYTE pbParm1,
  691.                                       ULONG cbParm2,
  692.                                       PBYTE pbParm2);
  693. #else
  694.          LONG  APIENTRY DevPostEscape(PSZ pszDriverName,
  695.                                       PSZ pszDeviceName,
  696.                                       PSZ pszQueueName,
  697.                                       PSZ pszSplPrinterName,
  698.                                       ULONG ulFuncNum,
  699.                                       ULONG cbParm1,
  700.                                       PBYTE pbParm1,
  701.                                       ULONG cbParm2,
  702.                                       PBYTE pbParm2);
  703. #endif
  704.          
  705.       #endif /* no INCL_DDIDEFS */
  706.    #endif /* no INCL_SAADEFS */
  707. #endif /* non-common DEV */
  708.  
  709. #ifdef INCL_DEVERRORS
  710.    /* AAB error codes for the DEV - same as GPI errors at present */
  711. #endif /* INCL_DEVERRORS */
  712.  
  713. #ifdef __cplusplus
  714.         }
  715. #endif
  716. #if __IBMC__ || __IBMCPP__
  717.    #pragma info( none )
  718.    #ifndef __CHKHDR__
  719.       #pragma info( restore )
  720.    #endif
  721.    #pragma info( restore )
  722. #endif
  723.  
  724. /**************************** end of file **********************************/
  725.