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